diff --git a/dist/ActivityCommentAction-DZTkL5C8.chunk.mjs b/dist/ActivityCommentAction-Dov2Weqs.chunk.mjs similarity index 56% rename from dist/ActivityCommentAction-DZTkL5C8.chunk.mjs rename to dist/ActivityCommentAction-Dov2Weqs.chunk.mjs index 2c2ea8838b161..8dcf691a63802 100644 --- a/dist/ActivityCommentAction-DZTkL5C8.chunk.mjs +++ b/dist/ActivityCommentAction-Dov2Weqs.chunk.mjs @@ -1,2 +1,2 @@ -import{a as t}from"./index-mH69OG7L.chunk.mjs";import{t as e}from"./translation-DoG5ZELJ-WOan4U8V.chunk.mjs";import{C as m,a}from"./CommentView-Dwuq398x.chunk.mjs";import{l as p}from"./activity-BZ6xFlZg.chunk.mjs";import{b as i,r as s,o as n,c,m as u}from"./Web-DYqXJUev.chunk.mjs";import{_ as l}from"./public-C1mLBHT3.chunk.mjs";import"./index-CmDAUQql.chunk.mjs";import"./NcModal-DiDvgcU8-7_SNLMd-.chunk.mjs";import"./logger-D3RVzcfQ-Bt9JRPzn.chunk.mjs";import"./createElementId-DhjFt1I9-BmyhoOWk.chunk.mjs";import"./index-Cp0kcsps.chunk.mjs";import"./TrashCanOutline-BU3aqDG_.chunk.mjs";import"./mdi-B6W_Xvj-.chunk.mjs";import"./pinia-BsumPXOW.chunk.mjs";import"./PencilOutline-DhyEf5vr.chunk.mjs";/* empty css */import"./NcAvatar-1KxMUN7V-X_YNB4Fv.chunk.mjs";import"./index-CkGt55pS.chunk.mjs";import"./util-DBjHxD9z.chunk.mjs";import"./ArrowRight-CSlQTlWs.chunk.mjs";import"./colors-Cv9F-jWS-BFJACjQq.chunk.mjs";import"./NcUserStatusIcon-BF5OEQFU-Bh_IaQ_D.chunk.mjs";import"./NcDateTime.vue_vue_type_script_setup_true_lang-BJuPH7S7-DKsF6FS9.chunk.mjs";import"./NcUserBubble-BXR7vT0V-CXAEWnoj.chunk.mjs";import"./GetComments-2IL7C9Us.chunk.mjs";import"./index-D5zm-WFT.chunk.mjs";const d=i({components:{Comment:a},mixins:[m],props:{reloadCallback:{type:Function,required:!0}},methods:{onNewComment(){try{this.reloadCallback()}catch(o){t(e("comments","Could not reload comments")),p.error("Could not reload comments",{error:o})}}}});function C(o,f,y,w,D,N){const r=s("Comment");return n(),c(r,u(o.editorData,{autoComplete:o.autoComplete,resourceType:o.resourceType,editor:!0,userData:o.userData,resourceId:o.resourceId,class:"comments-action",onNew:o.onNewComment}),null,16,["autoComplete","resourceType","userData","resourceId","onNew"])}const S=l(d,[["render",C],["__scopeId","data-v-29a1e244"]]);export{S as default}; -//# sourceMappingURL=ActivityCommentAction-DZTkL5C8.chunk.mjs.map +import{a as t}from"./index-BQu_HuHB.chunk.mjs";import{t as e}from"./translation-DoG5ZELJ-WOan4U8V.chunk.mjs";import{C as m,a}from"./CommentView-qR2-hI5y.chunk.mjs";import{l as p}from"./activity-BZ6xFlZg.chunk.mjs";import{b as i,r as s,o as n,c,m as u}from"./Web-DYqXJUev.chunk.mjs";import{_ as l}from"./public-C1mLBHT3.chunk.mjs";import"./index-CHUjKZ5R.chunk.mjs";import"./NcModal-DiDvgcU8-Cb_C64qI.chunk.mjs";import"./logger-D3RVzcfQ-BrUWOyzd.chunk.mjs";import"./createElementId-DhjFt1I9-BmyhoOWk.chunk.mjs";import"./index-Cp0kcsps.chunk.mjs";import"./TrashCanOutline-BU3aqDG_.chunk.mjs";import"./mdi-BU6wr1QN.chunk.mjs";import"./pinia-BsumPXOW.chunk.mjs";import"./PencilOutline-CA_ZiZlA.chunk.mjs";/* empty css */import"./NcAvatar-1KxMUN7V-R6Nmwuvb.chunk.mjs";import"./index-CkGt55pS.chunk.mjs";import"./util-DBjHxD9z.chunk.mjs";import"./ArrowRight-BCzIOZ0l.chunk.mjs";import"./colors-Cv9F-jWS-BFJACjQq.chunk.mjs";import"./NcUserStatusIcon-BF5OEQFU-pJ2xeKbO.chunk.mjs";import"./NcDateTime.vue_vue_type_script_setup_true_lang-BJuPH7S7-BThMWOZt.chunk.mjs";import"./NcUserBubble-BXR7vT0V-BaTRETFp.chunk.mjs";import"./GetComments-2IL7C9Us.chunk.mjs";import"./index-D5zm-WFT.chunk.mjs";const d=i({components:{Comment:a},mixins:[m],props:{reloadCallback:{type:Function,required:!0}},methods:{onNewComment(){try{this.reloadCallback()}catch(o){t(e("comments","Could not reload comments")),p.error("Could not reload comments",{error:o})}}}});function C(o,f,y,w,D,N){const r=s("Comment");return n(),c(r,u(o.editorData,{autoComplete:o.autoComplete,resourceType:o.resourceType,editor:!0,userData:o.userData,resourceId:o.resourceId,class:"comments-action",onNew:o.onNewComment}),null,16,["autoComplete","resourceType","userData","resourceId","onNew"])}const S=l(d,[["render",C],["__scopeId","data-v-29a1e244"]]);export{S as default}; +//# sourceMappingURL=ActivityCommentAction-Dov2Weqs.chunk.mjs.map diff --git a/dist/ActivityCommentAction-DZTkL5C8.chunk.mjs.license b/dist/ActivityCommentAction-Dov2Weqs.chunk.mjs.license similarity index 100% rename from dist/ActivityCommentAction-DZTkL5C8.chunk.mjs.license rename to dist/ActivityCommentAction-Dov2Weqs.chunk.mjs.license diff --git a/dist/ActivityCommentAction-DZTkL5C8.chunk.mjs.map b/dist/ActivityCommentAction-Dov2Weqs.chunk.mjs.map similarity index 96% rename from dist/ActivityCommentAction-DZTkL5C8.chunk.mjs.map rename to dist/ActivityCommentAction-Dov2Weqs.chunk.mjs.map index f0164a199a7ac..0d0d316a2a711 100644 --- a/dist/ActivityCommentAction-DZTkL5C8.chunk.mjs.map +++ b/dist/ActivityCommentAction-Dov2Weqs.chunk.mjs.map @@ -1 +1 @@ -{"version":3,"file":"ActivityCommentAction-DZTkL5C8.chunk.mjs","sources":["../build/frontend/apps/comments/src/views/ActivityCommentAction.vue"],"sourcesContent":["\n\n\n\n\n\n\n"],"names":["_sfc_main","defineComponent","Comment","CommentView","error","showError","t","logger","_createBlock","_component_Comment","_mergeProps","_ctx"],"mappings":"ysCAyBA,MAAAA,EAAeC,EAAgB,CAC9B,WAAY,CACX,QAAAC,CAAA,EAGD,OAAQ,CAACC,CAAW,EACpB,MAAO,CACN,eAAgB,CACf,KAAM,SACN,SAAU,EAAA,CACX,EAGD,QAAS,CACR,cAAe,CACd,GAAI,CAEH,KAAK,eAAA,CACN,OAASC,EAAO,CACfC,EAAUC,EAAE,WAAY,2BAA2B,CAAC,EACpDC,EAAO,MAAM,4BAA6B,CAAE,MAAAH,CAAA,CAAO,CACpD,CACD,CAAA,CAEF,CAAC,0DA3CAI,EAQuBC,EARvBC,EAQuBC,EAPd,WAAU,CACjB,aAAcA,EAAA,aACd,aAAcA,EAAA,aACd,OAAQ,GACR,SAAUA,EAAA,SACV,WAAYA,EAAA,WACb,MAAM,kBACL,MAAKA,EAAA,YAAA,CAAA,EAAA,KAAA,GAAA,CAAA,eAAA,eAAA,WAAA,aAAA,OAAA,CAAA"} \ No newline at end of file +{"version":3,"file":"ActivityCommentAction-Dov2Weqs.chunk.mjs","sources":["../build/frontend/apps/comments/src/views/ActivityCommentAction.vue"],"sourcesContent":["\n\n\n\n\n\n\n"],"names":["_sfc_main","defineComponent","Comment","CommentView","error","showError","t","logger","_createBlock","_component_Comment","_mergeProps","_ctx"],"mappings":"ysCAyBA,MAAAA,EAAeC,EAAgB,CAC9B,WAAY,CACX,QAAAC,CAAA,EAGD,OAAQ,CAACC,CAAW,EACpB,MAAO,CACN,eAAgB,CACf,KAAM,SACN,SAAU,EAAA,CACX,EAGD,QAAS,CACR,cAAe,CACd,GAAI,CAEH,KAAK,eAAA,CACN,OAASC,EAAO,CACfC,EAAUC,EAAE,WAAY,2BAA2B,CAAC,EACpDC,EAAO,MAAM,4BAA6B,CAAE,MAAAH,CAAA,CAAO,CACpD,CACD,CAAA,CAEF,CAAC,0DA3CAI,EAQuBC,EARvBC,EAQuBC,EAPd,WAAU,CACjB,aAAcA,EAAA,aACd,aAAcA,EAAA,aACd,OAAQ,GACR,SAAUA,EAAA,SACV,WAAYA,EAAA,WACb,MAAM,kBACL,MAAKA,EAAA,YAAA,CAAA,EAAA,KAAA,GAAA,CAAA,eAAA,eAAA,WAAA,aAAA,OAAA,CAAA"} \ No newline at end of file diff --git a/dist/ActivityCommentAction-DZTkL5C8.chunk.mjs.map.license b/dist/ActivityCommentAction-Dov2Weqs.chunk.mjs.map.license similarity index 100% rename from dist/ActivityCommentAction-DZTkL5C8.chunk.mjs.map.license rename to dist/ActivityCommentAction-Dov2Weqs.chunk.mjs.map.license diff --git a/dist/ActivityCommentEntry-B6Tpqj9O.chunk.mjs b/dist/ActivityCommentEntry-CmFE8Spg.chunk.mjs similarity index 66% rename from dist/ActivityCommentEntry-B6Tpqj9O.chunk.mjs rename to dist/ActivityCommentEntry-CmFE8Spg.chunk.mjs index ca377cbc44823..50d5c711495fe 100644 --- a/dist/ActivityCommentEntry-B6Tpqj9O.chunk.mjs +++ b/dist/ActivityCommentEntry-CmFE8Spg.chunk.mjs @@ -1,2 +1,2 @@ -import{t as s}from"./translation-DoG5ZELJ-WOan4U8V.chunk.mjs";import{C as p,a}from"./CommentView-Dwuq398x.chunk.mjs";import{_ as i}from"./public-C1mLBHT3.chunk.mjs";import{r as n,o as c,c as u,m as l}from"./Web-DYqXJUev.chunk.mjs";import"./index-Cp0kcsps.chunk.mjs";import"./pinia-BsumPXOW.chunk.mjs";import"./PencilOutline-DhyEf5vr.chunk.mjs";import"./logger-D3RVzcfQ-Bt9JRPzn.chunk.mjs";import"./createElementId-DhjFt1I9-BmyhoOWk.chunk.mjs";import"./NcModal-DiDvgcU8-7_SNLMd-.chunk.mjs";/* empty css */import"./NcAvatar-1KxMUN7V-X_YNB4Fv.chunk.mjs";import"./index-CkGt55pS.chunk.mjs";import"./util-DBjHxD9z.chunk.mjs";import"./ArrowRight-CSlQTlWs.chunk.mjs";import"./colors-Cv9F-jWS-BFJACjQq.chunk.mjs";import"./NcUserStatusIcon-BF5OEQFU-Bh_IaQ_D.chunk.mjs";import"./NcDateTime.vue_vue_type_script_setup_true_lang-BJuPH7S7-DKsF6FS9.chunk.mjs";import"./TrashCanOutline-BU3aqDG_.chunk.mjs";import"./NcUserBubble-BXR7vT0V-CXAEWnoj.chunk.mjs";import"./index-mH69OG7L.chunk.mjs";import"./index-CmDAUQql.chunk.mjs";import"./mdi-B6W_Xvj-.chunk.mjs";import"./activity-BZ6xFlZg.chunk.mjs";import"./GetComments-2IL7C9Us.chunk.mjs";import"./index-D5zm-WFT.chunk.mjs";const d={name:"ActivityCommentEntry",components:{Comment:a},mixins:[p],props:{comment:{type:Object,required:!0},reloadCallback:{type:Function,required:!0}},data(){return{commentMessage:""}},watch:{comment(){this.commentMessage=this.comment.props.message}},mounted(){this.commentMessage=this.comment.props.message},methods:{t:s}};function g(t,e,o,f,m,C){const r=n("Comment");return c(),u(r,l({ref:"comment",tag:"li"},o.comment.props,{autoComplete:t.autoComplete,resourceType:t.resourceType,message:m.commentMessage,resourceId:t.resourceId,userData:t.genMentionsData(o.comment.props.mentions),class:"comments-activity",onDelete:e[0]||(e[0]=y=>o.reloadCallback())}),null,16,["autoComplete","resourceType","message","resourceId","userData"])}const Q=i(d,[["render",g],["__scopeId","data-v-afc310f1"]]);export{Q as default}; -//# sourceMappingURL=ActivityCommentEntry-B6Tpqj9O.chunk.mjs.map +import{t as s}from"./translation-DoG5ZELJ-WOan4U8V.chunk.mjs";import{C as p,a}from"./CommentView-qR2-hI5y.chunk.mjs";import{_ as i}from"./public-C1mLBHT3.chunk.mjs";import{r as n,o as c,c as u,m as l}from"./Web-DYqXJUev.chunk.mjs";import"./index-Cp0kcsps.chunk.mjs";import"./pinia-BsumPXOW.chunk.mjs";import"./PencilOutline-CA_ZiZlA.chunk.mjs";import"./logger-D3RVzcfQ-BrUWOyzd.chunk.mjs";import"./createElementId-DhjFt1I9-BmyhoOWk.chunk.mjs";import"./NcModal-DiDvgcU8-Cb_C64qI.chunk.mjs";/* empty css */import"./NcAvatar-1KxMUN7V-R6Nmwuvb.chunk.mjs";import"./index-CkGt55pS.chunk.mjs";import"./util-DBjHxD9z.chunk.mjs";import"./ArrowRight-BCzIOZ0l.chunk.mjs";import"./colors-Cv9F-jWS-BFJACjQq.chunk.mjs";import"./NcUserStatusIcon-BF5OEQFU-pJ2xeKbO.chunk.mjs";import"./NcDateTime.vue_vue_type_script_setup_true_lang-BJuPH7S7-BThMWOZt.chunk.mjs";import"./TrashCanOutline-BU3aqDG_.chunk.mjs";import"./NcUserBubble-BXR7vT0V-BaTRETFp.chunk.mjs";import"./index-BQu_HuHB.chunk.mjs";import"./index-CHUjKZ5R.chunk.mjs";import"./mdi-BU6wr1QN.chunk.mjs";import"./activity-BZ6xFlZg.chunk.mjs";import"./GetComments-2IL7C9Us.chunk.mjs";import"./index-D5zm-WFT.chunk.mjs";const d={name:"ActivityCommentEntry",components:{Comment:a},mixins:[p],props:{comment:{type:Object,required:!0},reloadCallback:{type:Function,required:!0}},data(){return{commentMessage:""}},watch:{comment(){this.commentMessage=this.comment.props.message}},mounted(){this.commentMessage=this.comment.props.message},methods:{t:s}};function g(t,e,o,f,m,C){const r=n("Comment");return c(),u(r,l({ref:"comment",tag:"li"},o.comment.props,{autoComplete:t.autoComplete,resourceType:t.resourceType,message:m.commentMessage,resourceId:t.resourceId,userData:t.genMentionsData(o.comment.props.mentions),class:"comments-activity",onDelete:e[0]||(e[0]=y=>o.reloadCallback())}),null,16,["autoComplete","resourceType","message","resourceId","userData"])}const Q=i(d,[["render",g],["__scopeId","data-v-afc310f1"]]);export{Q as default}; +//# sourceMappingURL=ActivityCommentEntry-CmFE8Spg.chunk.mjs.map diff --git a/dist/ActivityCommentEntry-B6Tpqj9O.chunk.mjs.license b/dist/ActivityCommentEntry-CmFE8Spg.chunk.mjs.license similarity index 100% rename from dist/ActivityCommentEntry-B6Tpqj9O.chunk.mjs.license rename to dist/ActivityCommentEntry-CmFE8Spg.chunk.mjs.license diff --git a/dist/ActivityCommentEntry-B6Tpqj9O.chunk.mjs.map b/dist/ActivityCommentEntry-CmFE8Spg.chunk.mjs.map similarity index 97% rename from dist/ActivityCommentEntry-B6Tpqj9O.chunk.mjs.map rename to dist/ActivityCommentEntry-CmFE8Spg.chunk.mjs.map index 40597a47d0b31..382ec8c0a0933 100644 --- a/dist/ActivityCommentEntry-B6Tpqj9O.chunk.mjs.map +++ b/dist/ActivityCommentEntry-CmFE8Spg.chunk.mjs.map @@ -1 +1 @@ -{"version":3,"file":"ActivityCommentEntry-B6Tpqj9O.chunk.mjs","sources":["../build/frontend/apps/comments/src/views/ActivityCommentEntry.vue"],"sourcesContent":["\n\n\n\n\n\n\n"],"names":["_sfc_main","Comment","CommentView","t","_openBlock","_createBlock","_component_Comment","_mergeProps","$props","_ctx","$data","_cache"],"mappings":"+qCA0BA,MAAAA,EAAe,CACd,KAAM,uBAEN,WAAY,CACX,QAAAC,CAAA,EAGD,OAAQ,CAACC,CAAW,EACpB,MAAO,CACN,QAAS,CACR,KAAM,OACN,SAAU,EAAA,EAGX,eAAgB,CACf,KAAM,SACN,SAAU,EAAA,CACX,EAGD,MAAO,CACN,MAAO,CACN,eAAgB,EAAA,CAElB,EAEA,MAAO,CACN,SAAU,CACT,KAAK,eAAiB,KAAK,QAAQ,MAAM,OAC1C,CAAA,EAGD,SAAU,CACT,KAAK,eAAiB,KAAK,QAAQ,MAAM,OAC1C,EAEA,QAAS,CAAA,EACRC,CAAA,CAEF,+CA3DC,OAAAC,EAAA,EAAAC,EAU8BC,EAV9BC,EAU8B,CAT7B,IAAI,UACJ,IAAI,IAAA,EACIC,UAAQ,MAAK,CACpB,aAAcC,EAAA,aACd,aAAcA,EAAA,aACd,QAASC,EAAA,eACT,WAAYD,EAAA,WACZ,SAAUA,EAAA,gBAAgBD,EAAA,QAAQ,MAAM,QAAQ,EACjD,MAAM,oBACL,SAAMG,eAAEH,EAAA,eAAA,EAAc,CAAA,EAAA,KAAA,GAAA,CAAA,eAAA,eAAA,UAAA,aAAA,UAAA,CAAA"} \ No newline at end of file +{"version":3,"file":"ActivityCommentEntry-CmFE8Spg.chunk.mjs","sources":["../build/frontend/apps/comments/src/views/ActivityCommentEntry.vue"],"sourcesContent":["\n\n\n\n\n\n\n"],"names":["_sfc_main","Comment","CommentView","t","_openBlock","_createBlock","_component_Comment","_mergeProps","$props","_ctx","$data","_cache"],"mappings":"+qCA0BA,MAAAA,EAAe,CACd,KAAM,uBAEN,WAAY,CACX,QAAAC,CAAA,EAGD,OAAQ,CAACC,CAAW,EACpB,MAAO,CACN,QAAS,CACR,KAAM,OACN,SAAU,EAAA,EAGX,eAAgB,CACf,KAAM,SACN,SAAU,EAAA,CACX,EAGD,MAAO,CACN,MAAO,CACN,eAAgB,EAAA,CAElB,EAEA,MAAO,CACN,SAAU,CACT,KAAK,eAAiB,KAAK,QAAQ,MAAM,OAC1C,CAAA,EAGD,SAAU,CACT,KAAK,eAAiB,KAAK,QAAQ,MAAM,OAC1C,EAEA,QAAS,CAAA,EACRC,CAAA,CAEF,+CA3DC,OAAAC,EAAA,EAAAC,EAU8BC,EAV9BC,EAU8B,CAT7B,IAAI,UACJ,IAAI,IAAA,EACIC,UAAQ,MAAK,CACpB,aAAcC,EAAA,aACd,aAAcA,EAAA,aACd,QAASC,EAAA,eACT,WAAYD,EAAA,WACZ,SAAUA,EAAA,gBAAgBD,EAAA,QAAQ,MAAM,QAAQ,EACjD,MAAM,oBACL,SAAMG,eAAEH,EAAA,eAAA,EAAc,CAAA,EAAA,KAAA,GAAA,CAAA,eAAA,eAAA,UAAA,aAAA,UAAA,CAAA"} \ No newline at end of file diff --git a/dist/ActivityCommentEntry-B6Tpqj9O.chunk.mjs.map.license b/dist/ActivityCommentEntry-CmFE8Spg.chunk.mjs.map.license similarity index 100% rename from dist/ActivityCommentEntry-B6Tpqj9O.chunk.mjs.map.license rename to dist/ActivityCommentEntry-CmFE8Spg.chunk.mjs.map.license diff --git a/dist/AppstoreBrowse-DsTlcR8_.chunk.mjs b/dist/AppstoreBrowse-Dq17WU6g.chunk.mjs similarity index 80% rename from dist/AppstoreBrowse-DsTlcR8_.chunk.mjs rename to dist/AppstoreBrowse-Dq17WU6g.chunk.mjs index 64b67bbcce33e..610cca1fbef84 100644 --- a/dist/AppstoreBrowse-DsTlcR8_.chunk.mjs +++ b/dist/AppstoreBrowse-Dq17WU6g.chunk.mjs @@ -1,2 +1,2 @@ -import{t as e}from"./translation-DoG5ZELJ-WOan4U8V.chunk.mjs";import{N as O,u as U}from"./logger-D3RVzcfQ-Bt9JRPzn.chunk.mjs";import{N}from"./NcEmptyContent-CGAPqk4S-LFG8iXZZ.chunk.mjs";import{N as q}from"./TrashCanOutline-BU3aqDG_.chunk.mjs";import{u as V,a as z,b as D}from"./UpdateAllDialog-BqC8T943.chunk.mjs";import{e as E}from"./index-mH69OG7L.chunk.mjs";import{_ as A,l as G}from"./public-C1mLBHT3.chunk.mjs";import{N as R}from"./mdi-B6W_Xvj-.chunk.mjs";import{b as j,n as T,R as H,o,f as S,y as f,g as d,u as t,j as B,t as n,h as P,k as b,L as M,F as $,B as L,w as I,s as J,v as k,l as F,z as K,c as v,C as Q}from"./Web-DYqXJUev.chunk.mjs";import{N as W}from"./NcCheckboxRadioSwitch-DVdt5Hkq-COYVxuqr.chunk.mjs";import{u as C,c as X,n as Y,a as Z,b as ee,d as te}from"./appstore-main.mjs";import"./index-Cp0kcsps.chunk.mjs";import"./createElementId-DhjFt1I9-BmyhoOWk.chunk.mjs";import"./PencilOutline-DhyEf5vr.chunk.mjs";import"./NcModal-DiDvgcU8-7_SNLMd-.chunk.mjs";import"./NcTextArea-Dxzj4zdb-cEtDIZuj.chunk.mjs";import"./NcContent-BYh5hWDN-BPQwUlVv.chunk.mjs";import"./index-BDlLVKOD.chunk.mjs";import"./TrayArrowDown-Fnpm9Yo9.chunk.mjs";import"./NcInputField-5Sg6EUP6-DXw-ZWiv.chunk.mjs";import"./index-CmDAUQql.chunk.mjs";import"./NcAvatar-1KxMUN7V-X_YNB4Fv.chunk.mjs";import"./index-CkGt55pS.chunk.mjs";import"./util-DBjHxD9z.chunk.mjs";import"./ArrowRight-CSlQTlWs.chunk.mjs";import"./colors-Cv9F-jWS-BFJACjQq.chunk.mjs";import"./NcUserStatusIcon-BF5OEQFU-Bh_IaQ_D.chunk.mjs";import"./NcDateTime.vue_vue_type_script_setup_true_lang-BJuPH7S7-DKsF6FS9.chunk.mjs";import"./NcBreadcrumbs-B4eyDS9i-BkuFqTyn.chunk.mjs";import"./NcPasswordField-BFyzHTOO-7Y4psNBG.chunk.mjs";import"./NcTextField.vue_vue_type_script_setup_true_lang-Bx2esFU2-D61trFet.chunk.mjs";/* empty css */import"./Plus-Cvoorj3T.chunk.mjs";import"./index-BRPJrOcF.chunk.mjs";import"./index-Cdqy7gO-.chunk.mjs";import"./NcEmojiPicker-UTxgju3f-HSbVMwrx.chunk.mjs";import"./emoji-C8k9NUlo-BQiX-d8c.chunk.mjs";import"./index-D9CqvIri.chunk.mjs";/* empty css */import"./index-DueKLP2f.chunk.mjs";import"./NcSelectTags-I2hJaNax-B2PZ_kex.chunk.mjs";import"./ContentCopy-B9XOXCFO.chunk.mjs";import"./NcUserBubble-BXR7vT0V-CXAEWnoj.chunk.mjs";import"./pinia-BsumPXOW.chunk.mjs";import"./modulepreload-polyfill-BxzAKjcf.chunk.mjs";import"./index-BgrtITOq.chunk.mjs";const ie=["id"],ae={key:0},se=["aria-label"],oe=j({__name:"OfficeSuiteSwitcherItem",props:J({suite:{},loading:{type:Boolean}},{selected:{},selectedModifiers:{}}),emits:["update:selected"],setup(p){const r=T(p,"selected"),m=H(),_=C(),s=k(()=>_.getAppById(p.suite.appId)),y=k(()=>!!s.value?.installed),w=k(()=>!s.value||!y.value&&!X(s.value));return(a,l)=>(o(),S("div",{class:f([a.$style.officeSuiteSwitcherItem,{[a.$style.officeSuiteSwitcherItem_selected]:r.value===p.suite.id}]),onClick:l[3]||(l[3]=i=>r.value=p.suite.id)},[d("div",{class:f(a.$style.officeSuiteSwitcherItem__header)},[d("h3",{id:t(m),class:f(a.$style.officeSuiteSwitcherItem__title)},[B(n(p.suite.name)+" ",1),y.value?(o(),S("span",ae,"("+n(t(e)("appstore","installed"))+")",1)):P("",!0)],10,ie),b(t(W),{modelValue:r.value,"onUpdate:modelValue":l[0]||(l[0]=i=>r.value=i),"aria-labelledby":t(m),disabled:w.value,loading:p.loading,type:"radio",name:"office-suite",value:p.suite.id,onClick:l[1]||(l[1]=M(()=>{},["stop"]))},null,8,["modelValue","aria-labelledby","disabled","loading","value"])],2),d("ul",{"aria-label":t(e)("appstore","Features"),class:f(a.$style.officeSuiteSwitcherItem__features)},[(o(!0),S($,null,L(p.suite.features,(i,c)=>(o(),S("li",{key:c},n(i),1))),128))],10,se),b(t(O),{href:p.suite.learnMoreUrl,onClick:l[2]||(l[2]=M(()=>{},["stop"]))},{default:I(()=>[B(n(t(e)("appstore","Learn more"))+"↗ ",1)]),_:1},8,["href"])],2))}}),re="_officeSuiteSwitcherItem_1x2g7_2",le="_officeSuiteSwitcherItem_selected_1x2g7_23",ce="_officeSuiteSwitcherItem__header_1x2g7_29",pe="_officeSuiteSwitcherItem__title_1x2g7_36",ue="_officeSuiteSwitcherItem__features_1x2g7_42",fe="_officeSuiteSwitcherItem__link_1x2g7_55",ne={officeSuiteSwitcherItem:re,officeSuiteSwitcherItem_selected:le,officeSuiteSwitcherItem__header:ce,officeSuiteSwitcherItem__title:pe,officeSuiteSwitcherItem__features:ue,officeSuiteSwitcherItem__link:fe},me={$style:ne},de=A(oe,[["__cssModules",me]]),g=Object.freeze([{id:"nextcloud-office",appId:"eurooffice",name:"Nextcloud Office",features:[e("settings","Powered by Euro-Office"),e("settings","Good Nextcloud integration"),e("settings","Open source"),e("settings","Best performance"),e("settings","Limited ODF compatibility"),e("settings","Best Microsoft compatibility")],learnMoreUrl:"https://github.com/Euro-Office",isPrimary:!0},{id:"collabora-office",appId:"richdocuments",name:"Collabora Office",features:[e("settings","Best Nextcloud integration"),e("settings","Open source"),e("settings","Good performance"),e("settings","Best security: documents never leave your server"),e("settings","Best ODF compatibility"),e("settings","Best support for legacy files")],learnMoreUrl:"https://nextcloud.com/collaboraonline/",isPrimary:!1}]),_e=j({__name:"OfficeSuiteSwitcher",setup(p){const r=C(),m=G("appstore","isAllInOne",!1),_=F(!1),s=F(y());K(s,l);function y(){for(const i of g){const c=r.apps.find(u=>u.id===i.appId&&u.installed);if(c&&c.active)return i.id}return g.find(i=>i.isPrimary)?.id??null}function w(){s.value=null}async function a(i){const c=r.getAppById(i.appId);c&&Z(c)&&await r.disableApp(i.appId)}async function l(i,c){if(!(_.value||i===c))try{_.value=!0;const u=g.find(h=>h.id===i);if(!u){for(const h of g)await a(h);return}const x=r.getAppById(u.appId);if(Y(x))if(await E({name:e("appstore","Force enable {suite}?",{suite:u.name}),text:e("appstore","Enabling {suite} requires force enabling the app. This may cause issues with your Nextcloud instance. Are you sure you want to proceed?",{suite:u.name}),labelConfirm:e("appstore","Force enable"),labelReject:e("appstore","Cancel"),severity:"warning"}))await r.enableApp(u.appId,!0);else{s.value=c;return}for(const h of g)h.id===i?await r.enableApp(h.appId):await a(h)}finally{_.value=!1}}return(i,c)=>t(m)?(o(),v(t(R),{key:0,type:"info"},{default:I(()=>[d("p",null,n(t(e)("appstore","Office suite switching is managed through the Nextcloud All-in-One interface.")),1),d("p",null,n(t(e)("appstore","Please use the AIO interface to switch between office suites.")),1)]),_:1})):(o(),S("section",{key:1,class:f(i.$style.officeSuiteSwitcher)},[d("h3",{class:f(i.$style.officeSuiteSwitcher__title)},n(t(e)("appstore","Select your preferred office suite.")),3),d("p",null,n(t(e)("appstore","Please note that installing requires manual server setup.")),1),d("fieldset",{class:f(i.$style.officeSuiteSwitcher__cards)},[(o(!0),S($,null,L(t(g),u=>(o(),v(de,{key:u.id,selected:s.value,"onUpdate:selected":c[0]||(c[0]=x=>s.value=x),class:f(i.$style.officeSuiteSwitcher__cardsItem),suite:u,loading:_.value},null,8,["selected","class","suite","loading"]))),128))],2),d("div",{class:f(i.$style.officeSuiteSwitcher__actions)},[b(t(O),{disabled:!s.value,onClick:w},{default:I(()=>[B(n(t(e)("appstore","Disable office suites")),1)]),_:1},8,["disabled"])],2)],2))}}),Se="_officeSuiteSwitcher_1ajfj_2",he="_officeSuiteSwitcher__cards_1ajfj_19",ye="_officeSuiteSwitcher__cardsItem_1ajfj_25",we="_officeSuiteSwitcher__actions_1ajfj_29",ge="_officeSuiteSwitcher__disableButton_1ajfj_33",ve={officeSuiteSwitcher:Se,officeSuiteSwitcher__cards:he,officeSuiteSwitcher__cardsItem:ye,officeSuiteSwitcher__actions:we,officeSuiteSwitcher__disableButton:ge},be={$style:ve},Ie=A(_e,[["__cssModules",be]]),ke=j({__name:"AppstoreBrowse",setup(p){const r=U(),m=C(),_=ee(),s=k(()=>r.params.category),y=k(()=>s.value==="featured"?m.apps.filter(a=>a.level===200):s.value==="supported"?m.apps.filter(a=>a.level===300):m.getAppsByCategory(s.value)),w=V(y);return(a,l)=>(o(),S($,null,[b(z),t(m).isLoadingApps?(o(),v(t(N),{key:0,name:t(e)("appstore","Loading app list")},{icon:I(()=>[b(t(q),{size:64})]),_:1},8,["name"])):(o(),S($,{key:1},[s.value==="office"?(o(),v(Ie,{key:0})):P("",!0),t(w).length?(o(),v(Q(t(_).isGridView?D:te),{key:1,class:f(a.$style.appstoreBrowse),apps:t(w)},null,8,["class","apps"])):(o(),v(t(N),{key:2,name:t(e)("appstore","No matching apps found")},{action:I(()=>[b(t(O),{variant:"primary",onClick:l[0]||(l[0]=i=>a.$router.push({query:a.$route.query,name:"apps-search"}))},{default:I(()=>[B(n(t(e)("appstore","Search everywhere")),1)]),_:1})]),_:1},8,["name"]))],64))],64))}}),Be="_appstoreBrowse_1w3np_2",$e={appstoreBrowse:Be},xe={$style:$e},gt=A(ke,[["__cssModules",xe]]);export{gt as default}; -//# sourceMappingURL=AppstoreBrowse-DsTlcR8_.chunk.mjs.map +import{t as e}from"./translation-DoG5ZELJ-WOan4U8V.chunk.mjs";import{N as O,u as U}from"./logger-D3RVzcfQ-BrUWOyzd.chunk.mjs";import{N}from"./NcEmptyContent-CGAPqk4S-LFG8iXZZ.chunk.mjs";import{N as q}from"./TrashCanOutline-BU3aqDG_.chunk.mjs";import{u as V,a as z,b as D}from"./UpdateAllDialog-FlTEPsBb.chunk.mjs";import{e as E}from"./index-BQu_HuHB.chunk.mjs";import{_ as A,l as G}from"./public-C1mLBHT3.chunk.mjs";import{N as R}from"./mdi-BU6wr1QN.chunk.mjs";import{b as j,n as T,R as H,o,f as S,y as f,g as d,u as t,j as B,t as n,h as P,k as b,L as M,F as $,B as L,w as I,s as J,v as k,l as F,z as K,c as v,C as Q}from"./Web-DYqXJUev.chunk.mjs";import{N as W}from"./NcCheckboxRadioSwitch-DVdt5Hkq-COYVxuqr.chunk.mjs";import{u as C,c as X,n as Y,a as Z,b as ee,d as te}from"./appstore-main.mjs";import"./index-Cp0kcsps.chunk.mjs";import"./createElementId-DhjFt1I9-BmyhoOWk.chunk.mjs";import"./PencilOutline-CA_ZiZlA.chunk.mjs";import"./NcModal-DiDvgcU8-Cb_C64qI.chunk.mjs";import"./NcTextArea-Dxzj4zdb-DLw_yRcD.chunk.mjs";import"./NcContent-BYh5hWDN-C1_miOvl.chunk.mjs";import"./index-BhwlPNkJ.chunk.mjs";import"./TrayArrowDown-ZQRTTdRd.chunk.mjs";import"./NcInputField-5Sg6EUP6-CUyzAC2j.chunk.mjs";import"./index-CHUjKZ5R.chunk.mjs";import"./NcAvatar-1KxMUN7V-R6Nmwuvb.chunk.mjs";import"./index-CkGt55pS.chunk.mjs";import"./util-DBjHxD9z.chunk.mjs";import"./ArrowRight-BCzIOZ0l.chunk.mjs";import"./colors-Cv9F-jWS-BFJACjQq.chunk.mjs";import"./NcUserStatusIcon-BF5OEQFU-pJ2xeKbO.chunk.mjs";import"./NcDateTime.vue_vue_type_script_setup_true_lang-BJuPH7S7-BThMWOZt.chunk.mjs";import"./NcBreadcrumbs-B4eyDS9i-bX0dOZmj.chunk.mjs";import"./NcPasswordField-BFyzHTOO-BIm5AMSG.chunk.mjs";import"./NcTextField.vue_vue_type_script_setup_true_lang-Bx2esFU2-CGsfYqql.chunk.mjs";/* empty css */import"./Plus-BxwPZLA-.chunk.mjs";import"./index-BH07KH9-.chunk.mjs";import"./index-C1YcCfSa.chunk.mjs";import"./NcEmojiPicker-UTxgju3f-D4QbKSIV.chunk.mjs";import"./emoji-C8k9NUlo-BQiX-d8c.chunk.mjs";import"./index-EuTrUPdZ.chunk.mjs";/* empty css */import"./index-8LKFZV9o.chunk.mjs";import"./NcSelectTags-I2hJaNax-N6jSSGJD.chunk.mjs";import"./ContentCopy-B9XOXCFO.chunk.mjs";import"./NcUserBubble-BXR7vT0V-BaTRETFp.chunk.mjs";import"./pinia-BsumPXOW.chunk.mjs";import"./modulepreload-polyfill-BxzAKjcf.chunk.mjs";import"./index-g0PRm924.chunk.mjs";const ie=["id"],ae={key:0},se=["aria-label"],oe=j({__name:"OfficeSuiteSwitcherItem",props:J({suite:{},loading:{type:Boolean}},{selected:{},selectedModifiers:{}}),emits:["update:selected"],setup(p){const r=T(p,"selected"),m=H(),_=C(),s=k(()=>_.getAppById(p.suite.appId)),y=k(()=>!!s.value?.installed),w=k(()=>!s.value||!y.value&&!X(s.value));return(a,l)=>(o(),S("div",{class:f([a.$style.officeSuiteSwitcherItem,{[a.$style.officeSuiteSwitcherItem_selected]:r.value===p.suite.id}]),onClick:l[3]||(l[3]=i=>r.value=p.suite.id)},[d("div",{class:f(a.$style.officeSuiteSwitcherItem__header)},[d("h3",{id:t(m),class:f(a.$style.officeSuiteSwitcherItem__title)},[B(n(p.suite.name)+" ",1),y.value?(o(),S("span",ae,"("+n(t(e)("appstore","installed"))+")",1)):P("",!0)],10,ie),b(t(W),{modelValue:r.value,"onUpdate:modelValue":l[0]||(l[0]=i=>r.value=i),"aria-labelledby":t(m),disabled:w.value,loading:p.loading,type:"radio",name:"office-suite",value:p.suite.id,onClick:l[1]||(l[1]=M(()=>{},["stop"]))},null,8,["modelValue","aria-labelledby","disabled","loading","value"])],2),d("ul",{"aria-label":t(e)("appstore","Features"),class:f(a.$style.officeSuiteSwitcherItem__features)},[(o(!0),S($,null,L(p.suite.features,(i,c)=>(o(),S("li",{key:c},n(i),1))),128))],10,se),b(t(O),{href:p.suite.learnMoreUrl,onClick:l[2]||(l[2]=M(()=>{},["stop"]))},{default:I(()=>[B(n(t(e)("appstore","Learn more"))+"↗ ",1)]),_:1},8,["href"])],2))}}),re="_officeSuiteSwitcherItem_1x2g7_2",le="_officeSuiteSwitcherItem_selected_1x2g7_23",ce="_officeSuiteSwitcherItem__header_1x2g7_29",pe="_officeSuiteSwitcherItem__title_1x2g7_36",ue="_officeSuiteSwitcherItem__features_1x2g7_42",fe="_officeSuiteSwitcherItem__link_1x2g7_55",ne={officeSuiteSwitcherItem:re,officeSuiteSwitcherItem_selected:le,officeSuiteSwitcherItem__header:ce,officeSuiteSwitcherItem__title:pe,officeSuiteSwitcherItem__features:ue,officeSuiteSwitcherItem__link:fe},me={$style:ne},de=A(oe,[["__cssModules",me]]),g=Object.freeze([{id:"nextcloud-office",appId:"eurooffice",name:"Nextcloud Office",features:[e("settings","Powered by Euro-Office"),e("settings","Good Nextcloud integration"),e("settings","Open source"),e("settings","Best performance"),e("settings","Limited ODF compatibility"),e("settings","Best Microsoft compatibility")],learnMoreUrl:"https://github.com/Euro-Office",isPrimary:!0},{id:"collabora-office",appId:"richdocuments",name:"Collabora Office",features:[e("settings","Best Nextcloud integration"),e("settings","Open source"),e("settings","Good performance"),e("settings","Best security: documents never leave your server"),e("settings","Best ODF compatibility"),e("settings","Best support for legacy files")],learnMoreUrl:"https://nextcloud.com/collaboraonline/",isPrimary:!1}]),_e=j({__name:"OfficeSuiteSwitcher",setup(p){const r=C(),m=G("appstore","isAllInOne",!1),_=F(!1),s=F(y());K(s,l);function y(){for(const i of g){const c=r.apps.find(u=>u.id===i.appId&&u.installed);if(c&&c.active)return i.id}return g.find(i=>i.isPrimary)?.id??null}function w(){s.value=null}async function a(i){const c=r.getAppById(i.appId);c&&Z(c)&&await r.disableApp(i.appId)}async function l(i,c){if(!(_.value||i===c))try{_.value=!0;const u=g.find(h=>h.id===i);if(!u){for(const h of g)await a(h);return}const x=r.getAppById(u.appId);if(Y(x))if(await E({name:e("appstore","Force enable {suite}?",{suite:u.name}),text:e("appstore","Enabling {suite} requires force enabling the app. This may cause issues with your Nextcloud instance. Are you sure you want to proceed?",{suite:u.name}),labelConfirm:e("appstore","Force enable"),labelReject:e("appstore","Cancel"),severity:"warning"}))await r.enableApp(u.appId,!0);else{s.value=c;return}for(const h of g)h.id===i?await r.enableApp(h.appId):await a(h)}finally{_.value=!1}}return(i,c)=>t(m)?(o(),v(t(R),{key:0,type:"info"},{default:I(()=>[d("p",null,n(t(e)("appstore","Office suite switching is managed through the Nextcloud All-in-One interface.")),1),d("p",null,n(t(e)("appstore","Please use the AIO interface to switch between office suites.")),1)]),_:1})):(o(),S("section",{key:1,class:f(i.$style.officeSuiteSwitcher)},[d("h3",{class:f(i.$style.officeSuiteSwitcher__title)},n(t(e)("appstore","Select your preferred office suite.")),3),d("p",null,n(t(e)("appstore","Please note that installing requires manual server setup.")),1),d("fieldset",{class:f(i.$style.officeSuiteSwitcher__cards)},[(o(!0),S($,null,L(t(g),u=>(o(),v(de,{key:u.id,selected:s.value,"onUpdate:selected":c[0]||(c[0]=x=>s.value=x),class:f(i.$style.officeSuiteSwitcher__cardsItem),suite:u,loading:_.value},null,8,["selected","class","suite","loading"]))),128))],2),d("div",{class:f(i.$style.officeSuiteSwitcher__actions)},[b(t(O),{disabled:!s.value,onClick:w},{default:I(()=>[B(n(t(e)("appstore","Disable office suites")),1)]),_:1},8,["disabled"])],2)],2))}}),Se="_officeSuiteSwitcher_1ajfj_2",he="_officeSuiteSwitcher__cards_1ajfj_19",ye="_officeSuiteSwitcher__cardsItem_1ajfj_25",we="_officeSuiteSwitcher__actions_1ajfj_29",ge="_officeSuiteSwitcher__disableButton_1ajfj_33",ve={officeSuiteSwitcher:Se,officeSuiteSwitcher__cards:he,officeSuiteSwitcher__cardsItem:ye,officeSuiteSwitcher__actions:we,officeSuiteSwitcher__disableButton:ge},be={$style:ve},Ie=A(_e,[["__cssModules",be]]),ke=j({__name:"AppstoreBrowse",setup(p){const r=U(),m=C(),_=ee(),s=k(()=>r.params.category),y=k(()=>s.value==="featured"?m.apps.filter(a=>a.level===200):s.value==="supported"?m.apps.filter(a=>a.level===300):m.getAppsByCategory(s.value)),w=V(y);return(a,l)=>(o(),S($,null,[b(z),t(m).isLoadingApps?(o(),v(t(N),{key:0,name:t(e)("appstore","Loading app list")},{icon:I(()=>[b(t(q),{size:64})]),_:1},8,["name"])):(o(),S($,{key:1},[s.value==="office"?(o(),v(Ie,{key:0})):P("",!0),t(w).length?(o(),v(Q(t(_).isGridView?D:te),{key:1,class:f(a.$style.appstoreBrowse),apps:t(w)},null,8,["class","apps"])):(o(),v(t(N),{key:2,name:t(e)("appstore","No matching apps found")},{action:I(()=>[b(t(O),{variant:"primary",onClick:l[0]||(l[0]=i=>a.$router.push({query:a.$route.query,name:"apps-search"}))},{default:I(()=>[B(n(t(e)("appstore","Search everywhere")),1)]),_:1})]),_:1},8,["name"]))],64))],64))}}),Be="_appstoreBrowse_1w3np_2",$e={appstoreBrowse:Be},xe={$style:$e},gt=A(ke,[["__cssModules",xe]]);export{gt as default}; +//# sourceMappingURL=AppstoreBrowse-Dq17WU6g.chunk.mjs.map diff --git a/dist/AppstoreBrowse-DsTlcR8_.chunk.mjs.license b/dist/AppstoreBrowse-Dq17WU6g.chunk.mjs.license similarity index 100% rename from dist/AppstoreBrowse-DsTlcR8_.chunk.mjs.license rename to dist/AppstoreBrowse-Dq17WU6g.chunk.mjs.license diff --git a/dist/AppstoreBrowse-DsTlcR8_.chunk.mjs.map b/dist/AppstoreBrowse-Dq17WU6g.chunk.mjs.map similarity index 99% rename from dist/AppstoreBrowse-DsTlcR8_.chunk.mjs.map rename to dist/AppstoreBrowse-Dq17WU6g.chunk.mjs.map index 5fc849431d2ae..bd6602486ff73 100644 --- a/dist/AppstoreBrowse-DsTlcR8_.chunk.mjs.map +++ b/dist/AppstoreBrowse-Dq17WU6g.chunk.mjs.map @@ -1 +1 @@ -{"version":3,"file":"AppstoreBrowse-DsTlcR8_.chunk.mjs","sources":["../build/frontend/apps/appstore/src/components/AppstoreBrowse/OfficeSuiteSwitcherItem.vue","../build/frontend/apps/appstore/src/service/OfficeSuites.ts","../build/frontend/apps/appstore/src/components/AppstoreBrowse/OfficeSuiteSwitcher.vue","../build/frontend/apps/appstore/src/views/AppstoreBrowse.vue"],"sourcesContent":["\n\n\n\n\n\n\n","/*\n * SPDX-FileCopyrightText: 2025 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport { t } from '@nextcloud/l10n'\n\nexport const OFFICE_SUITES = Object.freeze([\n\t{\n\t\tid: 'nextcloud-office',\n\t\tappId: 'eurooffice',\n\t\tname: 'Nextcloud Office',\n\t\tfeatures: [\n\t\t\tt('settings', 'Powered by Euro-Office'),\n\t\t\tt('settings', 'Good Nextcloud integration'),\n\t\t\tt('settings', 'Open source'),\n\t\t\tt('settings', 'Best performance'),\n\t\t\tt('settings', 'Limited ODF compatibility'),\n\t\t\tt('settings', 'Best Microsoft compatibility'),\n\t\t],\n\t\tlearnMoreUrl: 'https://github.com/Euro-Office',\n\t\tisPrimary: true,\n\t},\n\t{\n\t\tid: 'collabora-office',\n\t\tappId: 'richdocuments',\n\t\tname: 'Collabora Office',\n\t\tfeatures: [\n\t\t\tt('settings', 'Best Nextcloud integration'),\n\t\t\tt('settings', 'Open source'),\n\t\t\tt('settings', 'Good performance'),\n\t\t\tt('settings', 'Best security: documents never leave your server'),\n\t\t\tt('settings', 'Best ODF compatibility'),\n\t\t\tt('settings', 'Best support for legacy files'),\n\t\t],\n\t\tlearnMoreUrl: 'https://nextcloud.com/collaboraonline/',\n\t\tisPrimary: false,\n\t},\n])\n\n/**\n * Get office suite configuration by ID\n *\n * @param id - The suite ID\n * @return The suite configuration or undefined if not found\n */\nexport function getOfficeSuiteById(id: string) {\n\treturn OFFICE_SUITES.find((suite) => suite.id === id)\n}\n\n/**\n * Get office suite configuration by app ID\n *\n * @param appId - The app ID (richdocuments, onlyoffice, etc.)\n * @return The suite configuration or undefined if not found\n */\nexport function getOfficeSuiteByAppId(appId: string) {\n\treturn OFFICE_SUITES.find((suite) => suite.appId === appId)\n}\n","\n\n\n\n\n\n\n","\n\n\n\n\n\n\n"],"names":["selectedSuiteId","_useModel","__props","headerId","useId","store","useAppsStore","app","computed","isInstalled","cannotInstall","canInstall","_createElementBlock","_normalizeClass","$style","_cache","$event","_createElementVNode","_unref","_openBlock","_hoisted_2","_toDisplayString","t","_createVNode","NcCheckboxRadioSwitch","_Fragment","feature","index","NcButton","_createTextVNode","OFFICE_SUITES","isAllInOne","loadState","isProcessing","ref","getInitialSuite","watch","onSuiteChanged","suite","a","s","disableSuites","disableSuite","canDisable","newSuiteId","oldSuiteId","needForceEnable","showConfirmation","_createBlock","NcNoteCard","_renderList","OfficeSuiteSwitcherItem","route","useRoute","userSettings","useUserSettingsStore","currentCategory","apps","visibleApps","useFilteredApps","AppToolbar","NcEmptyContent","NcLoadingIcon","OfficeSuiteSwitcher","_resolveDynamicComponent","AppGrid","AppTable","$router","$route"],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"AppstoreBrowse-Dq17WU6g.chunk.mjs","sources":["../build/frontend/apps/appstore/src/components/AppstoreBrowse/OfficeSuiteSwitcherItem.vue","../build/frontend/apps/appstore/src/service/OfficeSuites.ts","../build/frontend/apps/appstore/src/components/AppstoreBrowse/OfficeSuiteSwitcher.vue","../build/frontend/apps/appstore/src/views/AppstoreBrowse.vue"],"sourcesContent":["\n\n\n\n\n\n\n","/*\n * SPDX-FileCopyrightText: 2025 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport { t } from '@nextcloud/l10n'\n\nexport const OFFICE_SUITES = Object.freeze([\n\t{\n\t\tid: 'nextcloud-office',\n\t\tappId: 'eurooffice',\n\t\tname: 'Nextcloud Office',\n\t\tfeatures: [\n\t\t\tt('settings', 'Powered by Euro-Office'),\n\t\t\tt('settings', 'Good Nextcloud integration'),\n\t\t\tt('settings', 'Open source'),\n\t\t\tt('settings', 'Best performance'),\n\t\t\tt('settings', 'Limited ODF compatibility'),\n\t\t\tt('settings', 'Best Microsoft compatibility'),\n\t\t],\n\t\tlearnMoreUrl: 'https://github.com/Euro-Office',\n\t\tisPrimary: true,\n\t},\n\t{\n\t\tid: 'collabora-office',\n\t\tappId: 'richdocuments',\n\t\tname: 'Collabora Office',\n\t\tfeatures: [\n\t\t\tt('settings', 'Best Nextcloud integration'),\n\t\t\tt('settings', 'Open source'),\n\t\t\tt('settings', 'Good performance'),\n\t\t\tt('settings', 'Best security: documents never leave your server'),\n\t\t\tt('settings', 'Best ODF compatibility'),\n\t\t\tt('settings', 'Best support for legacy files'),\n\t\t],\n\t\tlearnMoreUrl: 'https://nextcloud.com/collaboraonline/',\n\t\tisPrimary: false,\n\t},\n])\n\n/**\n * Get office suite configuration by ID\n *\n * @param id - The suite ID\n * @return The suite configuration or undefined if not found\n */\nexport function getOfficeSuiteById(id: string) {\n\treturn OFFICE_SUITES.find((suite) => suite.id === id)\n}\n\n/**\n * Get office suite configuration by app ID\n *\n * @param appId - The app ID (richdocuments, onlyoffice, etc.)\n * @return The suite configuration or undefined if not found\n */\nexport function getOfficeSuiteByAppId(appId: string) {\n\treturn OFFICE_SUITES.find((suite) => suite.appId === appId)\n}\n","\n\n\n\n\n\n\n","\n\n\n\n\n\n\n"],"names":["selectedSuiteId","_useModel","__props","headerId","useId","store","useAppsStore","app","computed","isInstalled","cannotInstall","canInstall","_createElementBlock","_normalizeClass","$style","_cache","$event","_createElementVNode","_unref","_openBlock","_hoisted_2","_toDisplayString","t","_createVNode","NcCheckboxRadioSwitch","_Fragment","feature","index","NcButton","_createTextVNode","OFFICE_SUITES","isAllInOne","loadState","isProcessing","ref","getInitialSuite","watch","onSuiteChanged","suite","a","s","disableSuites","disableSuite","canDisable","newSuiteId","oldSuiteId","needForceEnable","showConfirmation","_createBlock","NcNoteCard","_renderList","OfficeSuiteSwitcherItem","route","useRoute","userSettings","useUserSettingsStore","currentCategory","apps","visibleApps","useFilteredApps","AppToolbar","NcEmptyContent","NcLoadingIcon","OfficeSuiteSwitcher","_resolveDynamicComponent","AppGrid","AppTable","$router","$route"],"mappings":"kjFAeA,MAAMA,EAAkBC,EAA0BC,EAAC,UAAU,EAOvDC,EAAWC,EAAA,EACXC,EAAQC,EAAA,EAERC,EAAMC,EAAS,IAAMH,EAAM,WAAWH,EAAA,MAAM,KAAK,CAAC,EAClDO,EAAcD,EAAS,IAAM,CAAC,CAACD,EAAI,OAAO,SAAS,EACnDG,EAAgBF,EAAS,IAAM,CAACD,EAAI,OAAU,CAACE,EAAY,OAAS,CAACE,EAAWJ,EAAI,KAAM,CAAE,oBAIjGK,EA4BM,MAAA,CA3BJ,MAAKC,EAAA,CAAGC,EAAAA,OAAO,wBAAuB,CAAQA,CAAAA,EAAAA,OAAO,gCAAgC,EAAGd,UAAoBE,EAAA,MAAM,EAAA,IAGlH,QAAKa,EAAA,CAAA,IAAAA,EAAA,CAAA,EAAAC,GAAEhB,EAAA,MAAkBE,EAAA,MAAM,GAAA,GAChCe,EAcM,MAAA,CAdA,MAAKJ,EAAEC,EAAAA,OAAO,+BAA+B,CAAA,GAClDG,EAGK,KAAA,CAHA,GAAIC,EAAAf,CAAA,EAAW,MAAKU,EAAEC,EAAAA,OAAO,8BAA8B,CAAA,OAC5DZ,EAAA,MAAM,IAAI,EAAG,IAChB,CAAA,EAAYO,EAAA,OAAZU,IAAAP,EAAkE,OAAAQ,GAAzC,IAACC,EAAGH,EAAAI,CAAA,2BAA6B,IAAC,CAAA,oBAE5DC,EAQeL,EAAAM,CAAA,EAAA,YAPLxB,EAAA,2CAAAA,EAAe,MAAAgB,GACvB,kBAAiBE,EAAAf,CAAA,EACjB,SAAUO,EAAA,MACV,QAASR,EAAA,QACV,KAAK,QACL,KAAK,eACJ,MAAOA,EAAA,MAAM,GACb,sBAAD,IAAA,CAAA,EAAW,CAAA,MAAA,CAAA,EAAA,4EAEbe,EAIK,KAAA,CAJA,aAAYC,EAAAI,CAAA,EAAC,WAAA,UAAA,EAA2B,MAAKT,EAAEC,EAAAA,OAAO,iCAAiC,CAAA,IAC3FK,EAAA,EAAA,EAAAP,EAEKa,SAF0BvB,EAAA,MAAM,SAAQ,CAAjCwB,EAASC,KAArBR,EAAA,EAAAP,EAEK,KAAA,CAF2C,IAAKe,CAAA,IACjDD,CAAO,EAAA,CAAA,kBAGZH,EAEWL,EAAAU,CAAA,EAAA,CAFA,KAAM1B,EAAA,MAAM,aAAe,sBAAD,IAAA,CAAA,EAAW,CAAA,MAAA,CAAA,EAAA,aAC/C,IAAiC,CAA9B2B,EAAAR,EAAAH,EAAAI,CAAA,4BAA8B,KAClC,CAAA,CAAA,0iBCnDWQ,EAAgB,OAAO,OAAO,CAC1C,CACC,GAAI,mBACJ,MAAO,aACP,KAAM,mBACN,SAAU,CACTR,EAAE,WAAY,wBAAwB,EACtCA,EAAE,WAAY,4BAA4B,EAC1CA,EAAE,WAAY,aAAa,EAC3BA,EAAE,WAAY,kBAAkB,EAChCA,EAAE,WAAY,2BAA2B,EACzCA,EAAE,WAAY,8BAA8B,CAAA,EAE7C,aAAc,iCACd,UAAW,EAAA,EAEZ,CACC,GAAI,mBACJ,MAAO,gBACP,KAAM,mBACN,SAAU,CACTA,EAAE,WAAY,4BAA4B,EAC1CA,EAAE,WAAY,aAAa,EAC3BA,EAAE,WAAY,kBAAkB,EAChCA,EAAE,WAAY,kDAAkD,EAChEA,EAAE,WAAY,wBAAwB,EACtCA,EAAE,WAAY,+BAA+B,CAAA,EAE9C,aAAc,yCACd,UAAW,EAAA,CAEb,CAAC,8CCrBD,MAAMjB,EAAQC,EAAA,EACRyB,EAAaC,EAAU,WAAY,aAAc,EAAK,EAEtDC,EAAeC,EAAI,EAAK,EACxBlC,EAAkBkC,EAAmBC,GAAiB,EAC5DC,EAAMpC,EAAiBqC,CAAc,EAKrC,SAASF,GAAkB,CAC1B,UAAWG,KAASR,EAAe,CAClC,MAAMvB,EAAMF,EAAM,KAAK,KAAMkC,GAAMA,EAAE,KAAOD,EAAM,OAASC,EAAE,SAAS,EACtE,GAAIhC,GAAOA,EAAI,OACd,OAAO+B,EAAM,EAEf,CACA,OAAOR,EAAc,KAAMU,GAAMA,EAAE,SAAS,GAAG,IAAM,IACtD,CAKA,SAASC,GAAgB,CACxBzC,EAAgB,MAAQ,IACzB,CAOA,eAAe0C,EAAaJ,EAAqC,CAChE,MAAM/B,EAAMF,EAAM,WAAWiC,EAAM,KAAK,EACnC/B,GAIDoC,EAAWpC,CAAG,GACjB,MAAMF,EAAM,WAAWiC,EAAM,KAAK,CAEpC,CAQA,eAAeD,EAAeO,EAA2BC,EAA2B,CACnF,GAAI,EAAAZ,EAAa,OAASW,IAAeC,GAIzC,GAAI,CACHZ,EAAa,MAAQ,GACrB,MAAMK,EAAQR,EAAc,KAAMU,GAAMA,EAAE,KAAOI,CAAU,EAC3D,GAAI,CAACN,EAAO,CAEX,UAAWE,KAAKV,EACf,MAAMY,EAAaF,CAAC,EAErB,MACD,CAEA,MAAMjC,EAAMF,EAAM,WAAWiC,EAAM,KAAK,EACxC,GAAIQ,EAAgBvC,CAAG,EAStB,GARe,MAAMwC,EAAiB,CACrC,KAAMzB,EAAE,WAAY,wBAAyB,CAAE,MAAOgB,EAAM,KAAM,EAClE,KAAMhB,EAAE,WAAY,0IAA2I,CAAE,MAAOgB,EAAM,KAAM,EACpL,aAAchB,EAAE,WAAY,cAAc,EAC1C,YAAaA,EAAE,WAAY,QAAQ,EACnC,SAAU,SAAA,CACV,EAGA,MAAMjB,EAAM,UAAUiC,EAAM,MAAO,EAAI,MACjC,CAENtC,EAAgB,MAAQ6C,EACxB,MACD,CAID,UAAWL,KAAKV,EACXU,EAAE,KAAOI,EACZ,MAAMvC,EAAM,UAAUmC,EAAE,KAAK,EAE7B,MAAME,EAAaF,CAAC,CAGvB,QAAA,CACCP,EAAa,MAAQ,EACtB,CACD,cAImBf,EAAAa,CAAA,OAAlBiB,EAGa9B,EAAA+B,CAAA,EAAA,OAHiB,KAAK,MAAA,aAClC,IAA2G,CAA3GhC,EAA2G,WAArGC,EAAAI,CAAA,EAAC,WAAA,+EAAA,CAAA,EAAA,CAAA,EACPL,EAA2F,WAArFC,EAAAI,CAAA,EAAC,WAAA,+DAAA,CAAA,EAAA,CAAA,CAAA,eAGRV,EAmBU,UAAA,OAnBO,MAAKC,EAAEC,EAAAA,OAAO,mBAAmB,CAAA,GACjDG,EAEK,KAAA,CAFA,MAAKJ,EAAEC,EAAAA,OAAO,0BAA0B,CAAA,IACzCI,EAAAI,CAAA,EAAC,WAAA,qCAAA,CAAA,EAAA,CAAA,EAELL,EAAuF,WAAjFC,EAAAI,CAAA,EAAC,WAAA,2DAAA,CAAA,EAAA,CAAA,EACPL,EAQW,WAAA,CARA,MAAKJ,EAAEC,EAAAA,OAAO,0BAA0B,CAAA,UAClDF,EAM2Ba,EAAA,KAAAyB,EALVhC,EAAAY,CAAA,EAATQ,QADRU,EAM2BG,GAAA,CAJzB,IAAKb,EAAM,GACJ,SAAUtC,EAAA,yCAAAA,EAAe,MAAAgB,GAChC,MAAKH,EAAEC,EAAAA,OAAO,8BAA8B,EAC5C,MAAAwB,EACA,QAASL,EAAA,KAAA,6DAEZhB,EAIM,MAAA,CAJA,MAAKJ,EAAEC,EAAAA,OAAO,4BAA4B,CAAA,GAC/CS,EAEWL,EAAAU,CAAA,EAAA,CAFA,UAAW5B,EAAA,MAAkB,QAAOyC,CAAA,aAC9C,IAA4C,KAAzCvB,EAAAI,CAAA,EAAC,WAAA,uBAAA,CAAA,EAAA,CAAA,CAAA,mfCrHR,MAAM8B,EAAQC,EAAA,EACRhD,EAAQC,EAAA,EACRgD,EAAeC,GAAA,EAEfC,EAAkBhD,EAAS,IAAM4C,EAAM,OAAQ,QAAkB,EACjEK,EAAOjD,EAAS,IACjBgD,EAAgB,QAAU,WACtBnD,EAAM,KAAK,OAAQE,GAAQA,EAAI,QAAU,GAAG,EACzCiD,EAAgB,QAAU,YAC7BnD,EAAM,KAAK,OAAQE,GAAQA,EAAI,QAAU,GAAG,EAE7CF,EAAM,kBAAkBmD,EAAgB,KAAK,CACpD,EAEKE,EAAcC,EAAgBF,CAAI,8BAIvClC,EAAcqC,CAAA,EAIP1C,EAAAb,CAAA,EAAM,mBADb2C,EAMiB9B,EAAA2C,CAAA,EAAA,OAJf,KAAM3C,EAAAI,CAAA,EAAC,WAAA,kBAAA,CAAA,GACG,OACV,IAA4B,CAA5BC,EAA4BL,EAAA4C,CAAA,EAAA,CAAZ,KAAM,GAAE,CAAA,0BAI1BlD,EAiBWa,EAAA,CAAA,IAAA,GAAA,CAhBiB+B,EAAA,QAAe,cAA1CR,EAA2De,GAAA,CAAA,IAAA,CAAA,CAAA,YAIpD7C,EAAAwC,CAAA,EAAY,QAFnBvC,IAAA6B,EAIuBgB,EAHjB9C,EAAAoC,CAAA,EAAa,WAAaW,EAAUC,EAAQ,EAAA,OAEhD,MAAKrD,EAAEC,EAAAA,OAAO,cAAc,EAC5B,KAAMI,EAAAwC,CAAA,CAAA,iCACRV,EAQiB9B,EAAA2C,CAAA,EAAA,OANf,KAAM3C,EAAAI,CAAA,EAAC,WAAA,wBAAA,CAAA,GACG,SACV,IAEW,CAFXC,EAEWL,EAAAU,CAAA,EAAA,CAFD,QAAQ,UAAW,uBAAOuC,EAAAA,QAAQ,KAAI,CAAA,MAAUC,EAAAA,OAAO,MAAK,KAAA,cAAA,EAAA,aACrE,IAAwC,KAArClD,EAAAI,CAAA,EAAC,WAAA,mBAAA,CAAA,EAAA,CAAA,CAAA"} \ No newline at end of file diff --git a/dist/AppstoreBrowse-DsTlcR8_.chunk.mjs.map.license b/dist/AppstoreBrowse-Dq17WU6g.chunk.mjs.map.license similarity index 100% rename from dist/AppstoreBrowse-DsTlcR8_.chunk.mjs.map.license rename to dist/AppstoreBrowse-Dq17WU6g.chunk.mjs.map.license diff --git a/dist/AppstoreDiscover-DDOLgo3I.chunk.mjs b/dist/AppstoreDiscover-CoBfThhg.chunk.mjs similarity index 64% rename from dist/AppstoreDiscover-DDOLgo3I.chunk.mjs rename to dist/AppstoreDiscover-CoBfThhg.chunk.mjs index 09faabe5dd16f..2f3c8b527770d 100644 --- a/dist/AppstoreDiscover-DDOLgo3I.chunk.mjs +++ b/dist/AppstoreDiscover-CoBfThhg.chunk.mjs @@ -1,3 +1,3 @@ -const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=[window.OC.filePath('', '', 'dist/DiscoverTypePost-D1FhRXE_.chunk.mjs'),window.OC.filePath('', '', 'dist/mdi-B6W_Xvj-.chunk.mjs'),window.OC.filePath('', '', 'dist/logger-D3RVzcfQ-Bt9JRPzn.chunk.mjs'),window.OC.filePath('', '', 'dist/Web-DYqXJUev.chunk.mjs'),window.OC.filePath('', '', 'dist/public-C1mLBHT3.chunk.mjs'),window.OC.filePath('', '', 'dist/createElementId-DhjFt1I9-BmyhoOWk.chunk.mjs'),window.OC.filePath('', '', 'dist/translation-DoG5ZELJ-WOan4U8V.chunk.mjs'),window.OC.filePath('', '', 'dist/index-Cp0kcsps.chunk.mjs'),window.OC.filePath('', '', 'dist/common-createElementId-DhjFt1I9-C_oBIsvc.chunk.css'),window.OC.filePath('', '', 'dist/common-logger-D3RVzcfQ-Ks0gkIDB.chunk.css'),window.OC.filePath('', '', 'dist/common-mdi-BWNFKLbC.chunk.css'),window.OC.filePath('', '', 'dist/NcModal-DiDvgcU8-7_SNLMd-.chunk.mjs'),window.OC.filePath('', '', 'dist/common-NcModal-DiDvgcU8-B-yi1OwC.chunk.css'),window.OC.filePath('', '', 'dist/appstore-main.mjs'),window.OC.filePath('', '', 'dist/pinia-BsumPXOW.chunk.mjs'),window.OC.filePath('', '', 'dist/NcContent-BYh5hWDN-BPQwUlVv.chunk.mjs'),window.OC.filePath('', '', 'dist/common-NcContent-BYh5hWDN-CKeEKmjj.chunk.css'),window.OC.filePath('', '', 'dist/PencilOutline-DhyEf5vr.chunk.mjs'),window.OC.filePath('', '', 'dist/common-PencilOutline-B3DMd8SU.chunk.css'),window.OC.filePath('', '', 'dist/NcTextArea-Dxzj4zdb-cEtDIZuj.chunk.mjs'),window.OC.filePath('', '', 'dist/index-BDlLVKOD.chunk.mjs'),window.OC.filePath('', '', 'dist/TrashCanOutline-BU3aqDG_.chunk.mjs'),window.OC.filePath('', '', 'dist/common-TrashCanOutline-BYHcrfvW.chunk.css'),window.OC.filePath('', '', 'dist/common-index-BWhNCeJl.chunk.css'),window.OC.filePath('', '', 'dist/TrayArrowDown-Fnpm9Yo9.chunk.mjs'),window.OC.filePath('', '', 'dist/common-TrayArrowDown-BEbvWlY3.chunk.css'),window.OC.filePath('', '', 'dist/NcInputField-5Sg6EUP6-DXw-ZWiv.chunk.mjs'),window.OC.filePath('', '', 'dist/common-NcInputField-5Sg6EUP6-BYHxARP-.chunk.css'),window.OC.filePath('', '', 'dist/index-CmDAUQql.chunk.mjs'),window.OC.filePath('', '', 'dist/common-index-DYA_tnKg.chunk.css'),window.OC.filePath('', '', 'dist/NcAvatar-1KxMUN7V-X_YNB4Fv.chunk.mjs'),window.OC.filePath('', '', 'dist/index-CkGt55pS.chunk.mjs'),window.OC.filePath('', '', 'dist/util-DBjHxD9z.chunk.mjs'),window.OC.filePath('', '', 'dist/ArrowRight-CSlQTlWs.chunk.mjs'),window.OC.filePath('', '', 'dist/common-ArrowRight-DfvWJUh_.chunk.css'),window.OC.filePath('', '', 'dist/colors-Cv9F-jWS-BFJACjQq.chunk.mjs'),window.OC.filePath('', '', 'dist/NcUserStatusIcon-BF5OEQFU-Bh_IaQ_D.chunk.mjs'),window.OC.filePath('', '', 'dist/common-NcUserStatusIcon-BF5OEQFU-Bq_6hmXG.chunk.css'),window.OC.filePath('', '', 'dist/NcDateTime.vue_vue_type_script_setup_true_lang-BJuPH7S7-DKsF6FS9.chunk.mjs'),window.OC.filePath('', '', 'dist/common-NcDateTime-b9UhLDij.chunk.css'),window.OC.filePath('', '', 'dist/common-NcAvatar-1KxMUN7V-CIJAK_jb.chunk.css'),window.OC.filePath('', '', 'dist/NcEmptyContent-CGAPqk4S-LFG8iXZZ.chunk.mjs'),window.OC.filePath('', '', 'dist/common-NcEmptyContent-CGAPqk4S-Don1d5Bd.chunk.css'),window.OC.filePath('', '', 'dist/NcBreadcrumbs-B4eyDS9i-BkuFqTyn.chunk.mjs'),window.OC.filePath('', '', 'dist/NcPasswordField-BFyzHTOO-7Y4psNBG.chunk.mjs'),window.OC.filePath('', '', 'dist/common-NcPasswordField-BFyzHTOO-Crp_EMfV.chunk.css'),window.OC.filePath('', '', 'dist/NcTextField.vue_vue_type_script_setup_true_lang-Bx2esFU2-D61trFet.chunk.mjs'),window.OC.filePath('', '', 'dist/common-NcBreadcrumbs-B4eyDS9i-BknLVeOm.chunk.css'),window.OC.filePath('', '', 'dist/common-NcTextArea-Dxzj4zdb-CY5ND5WA.chunk.css'),window.OC.filePath('', '', 'dist/NcCheckboxRadioSwitch-DVdt5Hkq-COYVxuqr.chunk.mjs'),window.OC.filePath('', '', 'dist/common-NcCheckboxRadioSwitch-DVdt5Hkq-Ct9ZGMmH.chunk.css'),window.OC.filePath('', '', 'dist/Plus-Cvoorj3T.chunk.mjs'),window.OC.filePath('', '', 'dist/common-Plus-Som-mR4B.chunk.css'),window.OC.filePath('', '', 'dist/index-BRPJrOcF.chunk.mjs'),window.OC.filePath('', '', 'dist/common-index-bfXBK-tQ.chunk.css'),window.OC.filePath('', '', 'dist/index-Cdqy7gO-.chunk.mjs'),window.OC.filePath('', '', 'dist/common-index-BnF98eos.chunk.css'),window.OC.filePath('', '', 'dist/NcEmojiPicker-UTxgju3f-HSbVMwrx.chunk.mjs'),window.OC.filePath('', '', 'dist/emoji-C8k9NUlo-BQiX-d8c.chunk.mjs'),window.OC.filePath('', '', 'dist/common-NcEmojiPicker-UTxgju3f-ChsL0oK6.chunk.css'),window.OC.filePath('', '', 'dist/index-D9CqvIri.chunk.mjs'),window.OC.filePath('', '', 'dist/common-index-BBuXQ7OS.chunk.css'),window.OC.filePath('', '', 'dist/index-DueKLP2f.chunk.mjs'),window.OC.filePath('', '', 'dist/common-index-BBhtJjWD.chunk.css'),window.OC.filePath('', '', 'dist/NcSelectTags-I2hJaNax-B2PZ_kex.chunk.mjs'),window.OC.filePath('', '', 'dist/ContentCopy-B9XOXCFO.chunk.mjs'),window.OC.filePath('', '', 'dist/common-ContentCopy-D7mIRwIy.chunk.css'),window.OC.filePath('', '', 'dist/NcUserBubble-BXR7vT0V-CXAEWnoj.chunk.mjs'),window.OC.filePath('', '', 'dist/common-NcUserBubble-BXR7vT0V-f2DD9EAL.chunk.css'),window.OC.filePath('', '', 'dist/modulepreload-polyfill-BxzAKjcf.chunk.mjs'),window.OC.filePath('', '', 'dist/index-mH69OG7L.chunk.mjs'),window.OC.filePath('', '', 'dist/index-BgrtITOq.chunk.mjs'),window.OC.filePath('', '', 'dist/appstore-appstore-main-C0vSpMnG.chunk.css'),window.OC.filePath('', '', 'dist/common-NcActionSeparator-Ct2RnclR-pXJ_-D_I.chunk.css'),window.OC.filePath('', '', 'dist/common-NcGuestContent-CM0uWLr1-BezK2wMx.chunk.css'),window.OC.filePath('', '', 'dist/common-DiscoverTypePost-CpeIz2iE.chunk.css'),window.OC.filePath('', '', 'dist/DiscoverTypeCarousel-D8xqFtm0.chunk.mjs'),window.OC.filePath('', '', 'dist/appstore-DiscoverTypeCarousel--4FoDSYW.chunk.css'),window.OC.filePath('', '', 'dist/DiscoverTypeShowcase-65aK4fEm.chunk.mjs'),window.OC.filePath('', '', 'dist/UpdateAllDialog-BqC8T943.chunk.mjs'),window.OC.filePath('', '', 'dist/common-UpdateAllDialog-CZVJ1CV6.chunk.css'),window.OC.filePath('', '', 'dist/appstore-DiscoverTypeShowcase-BsnvP-Fa.chunk.css')])))=>i.map(i=>d[i]); -import{b as _,A as x,o as i,c as u,w as v,k as y,u as e,f as h,F as A,B as N,m as C,C as I,l as w,a as d,_ as l}from"./Web-DYqXJUev.chunk.mjs";import{e as L}from"./mdi-B6W_Xvj-.chunk.mjs";import{a as O}from"./index-mH69OG7L.chunk.mjs";import{t as p}from"./translation-DoG5ZELJ-WOan4U8V.chunk.mjs";import{N as D}from"./NcEmptyContent-CGAPqk4S-LFG8iXZZ.chunk.mjs";import{N as P}from"./createElementId-DhjFt1I9-BmyhoOWk.chunk.mjs";import{N as R}from"./TrashCanOutline-BU3aqDG_.chunk.mjs";import{c as T}from"./index-CkGt55pS.chunk.mjs";import{c as V}from"./index-Cp0kcsps.chunk.mjs";import{l as g}from"./appstore-main.mjs";import{_ as b}from"./public-C1mLBHT3.chunk.mjs";import"./logger-D3RVzcfQ-Bt9JRPzn.chunk.mjs";import"./index-CmDAUQql.chunk.mjs";import"./NcModal-DiDvgcU8-7_SNLMd-.chunk.mjs";import"./util-DBjHxD9z.chunk.mjs";import"./pinia-BsumPXOW.chunk.mjs";import"./NcContent-BYh5hWDN-BPQwUlVv.chunk.mjs";import"./PencilOutline-DhyEf5vr.chunk.mjs";import"./NcTextArea-Dxzj4zdb-cEtDIZuj.chunk.mjs";import"./index-BDlLVKOD.chunk.mjs";import"./TrayArrowDown-Fnpm9Yo9.chunk.mjs";import"./NcInputField-5Sg6EUP6-DXw-ZWiv.chunk.mjs";import"./NcAvatar-1KxMUN7V-X_YNB4Fv.chunk.mjs";import"./ArrowRight-CSlQTlWs.chunk.mjs";import"./colors-Cv9F-jWS-BFJACjQq.chunk.mjs";import"./NcUserStatusIcon-BF5OEQFU-Bh_IaQ_D.chunk.mjs";import"./NcDateTime.vue_vue_type_script_setup_true_lang-BJuPH7S7-DKsF6FS9.chunk.mjs";import"./NcBreadcrumbs-B4eyDS9i-BkuFqTyn.chunk.mjs";import"./NcPasswordField-BFyzHTOO-7Y4psNBG.chunk.mjs";import"./NcTextField.vue_vue_type_script_setup_true_lang-Bx2esFU2-D61trFet.chunk.mjs";/* empty css */import"./NcCheckboxRadioSwitch-DVdt5Hkq-COYVxuqr.chunk.mjs";import"./Plus-Cvoorj3T.chunk.mjs";import"./index-BRPJrOcF.chunk.mjs";import"./index-Cdqy7gO-.chunk.mjs";import"./NcEmojiPicker-UTxgju3f-HSbVMwrx.chunk.mjs";import"./emoji-C8k9NUlo-BQiX-d8c.chunk.mjs";import"./index-D9CqvIri.chunk.mjs";/* empty css */import"./index-DueKLP2f.chunk.mjs";import"./NcSelectTags-I2hJaNax-B2PZ_kex.chunk.mjs";import"./ContentCopy-B9XOXCFO.chunk.mjs";import"./NcUserBubble-BXR7vT0V-CXAEWnoj.chunk.mjs";import"./modulepreload-polyfill-BxzAKjcf.chunk.mjs";import"./index-BgrtITOq.chunk.mjs";function z(o){const t={...o};if(t.date&&(t.date=Date.parse(t.date)),t.expiryDate&&(t.expiryDate=Date.parse(t.expiryDate)),t.type==="post"||t.type==="showcase"||t.type==="carousel")return t;throw new Error(`Invalid argument, app discover element with type ${o.type??"unknown"} is unknown`)}function F(o){const t=Date.now();return!(o.date&&o.date>t||o.expiryDate&&o.expiryDate(s.order??1/0)<(n.order??1/0)?-1:1),a}function q(o){for(let t=o.length-1;t>0;t--){const a=Math.floor(Math.random()*(t+1));[o[t],o[a]]=[o[a],o[t]]}return o}async function B(){const o=await T.get(V("/apps/appstore/api/v1/discover")),{data:t}=o.data.ocs;return t}const U={key:2,class:"app-discover"},$=_({__name:"AppstoreDiscover",setup(o){const t=d(()=>l(()=>import("./DiscoverTypePost-D1FhRXE_.chunk.mjs").then(r=>r.a),__vite__mapDeps([0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75]),import.meta.url)),a=d(()=>l(()=>import("./DiscoverTypeCarousel-D8xqFtm0.chunk.mjs"),__vite__mapDeps([76,3,4,1,2,5,6,7,8,9,10,0,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,77]),import.meta.url)),s=d(()=>l(()=>import("./DiscoverTypeShowcase-65aK4fEm.chunk.mjs"),__vite__mapDeps([78,11,3,4,2,5,6,7,8,9,12,79,1,10,17,18,19,15,16,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,13,14,69,70,71,72,73,74,80,0,75,81]),import.meta.url)),n=w(!1),m=w([]);x(async()=>{try{m.value=await M()}catch(r){n.value=!0,g.error(r),O(p("appstore","Could not load app discover section"))}});function k(r){return r==="post"?t:r==="carousel"?a:r==="showcase"?s:_({mounted:()=>g.error("Unknown component requested ",r),render:f=>f("div",p("appstore","Could not render element"))})}return(r,f)=>n.value?(i(),u(e(D),{key:0,name:e(p)("appstore","Nothing to show"),description:e(p)("appstore","Could not load section content from app store.")},{icon:v(()=>[y(e(P),{path:e(L),size:64},null,8,["path"])]),_:1},8,["name","description"])):m.value.length===0?(i(),u(e(D),{key:1,name:e(p)("appstore","Loading"),description:e(p)("appstore","Fetching the latest news…")},{icon:v(()=>[y(e(R),{size:64})]),_:1},8,["name","description"])):(i(),h("div",U,[(i(!0),h(A,null,N(m.value,(c,E)=>(i(),u(I(k(c.type)),C({key:c.id??E},{ref_for:!0},c),null,16))),128))]))}}),Vt=b($,[["__scopeId","data-v-daf7ec3e"]]);export{Vt as default}; -//# sourceMappingURL=AppstoreDiscover-DDOLgo3I.chunk.mjs.map +const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=[window.OC.filePath('', '', 'dist/DiscoverTypePost-DbZIG6zf.chunk.mjs'),window.OC.filePath('', '', 'dist/mdi-BU6wr1QN.chunk.mjs'),window.OC.filePath('', '', 'dist/logger-D3RVzcfQ-BrUWOyzd.chunk.mjs'),window.OC.filePath('', '', 'dist/Web-DYqXJUev.chunk.mjs'),window.OC.filePath('', '', 'dist/public-C1mLBHT3.chunk.mjs'),window.OC.filePath('', '', 'dist/createElementId-DhjFt1I9-BmyhoOWk.chunk.mjs'),window.OC.filePath('', '', 'dist/translation-DoG5ZELJ-WOan4U8V.chunk.mjs'),window.OC.filePath('', '', 'dist/index-Cp0kcsps.chunk.mjs'),window.OC.filePath('', '', 'dist/common-createElementId-DhjFt1I9-C_oBIsvc.chunk.css'),window.OC.filePath('', '', 'dist/common-logger-D3RVzcfQ-Ks0gkIDB.chunk.css'),window.OC.filePath('', '', 'dist/common-mdi-BWNFKLbC.chunk.css'),window.OC.filePath('', '', 'dist/NcModal-DiDvgcU8-Cb_C64qI.chunk.mjs'),window.OC.filePath('', '', 'dist/common-NcModal-DiDvgcU8-B-yi1OwC.chunk.css'),window.OC.filePath('', '', 'dist/appstore-main.mjs'),window.OC.filePath('', '', 'dist/pinia-BsumPXOW.chunk.mjs'),window.OC.filePath('', '', 'dist/NcContent-BYh5hWDN-C1_miOvl.chunk.mjs'),window.OC.filePath('', '', 'dist/common-NcContent-BYh5hWDN-CKeEKmjj.chunk.css'),window.OC.filePath('', '', 'dist/PencilOutline-CA_ZiZlA.chunk.mjs'),window.OC.filePath('', '', 'dist/common-PencilOutline-B3DMd8SU.chunk.css'),window.OC.filePath('', '', 'dist/NcTextArea-Dxzj4zdb-DLw_yRcD.chunk.mjs'),window.OC.filePath('', '', 'dist/index-BhwlPNkJ.chunk.mjs'),window.OC.filePath('', '', 'dist/TrashCanOutline-BU3aqDG_.chunk.mjs'),window.OC.filePath('', '', 'dist/common-TrashCanOutline-BYHcrfvW.chunk.css'),window.OC.filePath('', '', 'dist/common-index-BWhNCeJl.chunk.css'),window.OC.filePath('', '', 'dist/TrayArrowDown-ZQRTTdRd.chunk.mjs'),window.OC.filePath('', '', 'dist/common-TrayArrowDown-BEbvWlY3.chunk.css'),window.OC.filePath('', '', 'dist/NcInputField-5Sg6EUP6-CUyzAC2j.chunk.mjs'),window.OC.filePath('', '', 'dist/common-NcInputField-5Sg6EUP6-BYHxARP-.chunk.css'),window.OC.filePath('', '', 'dist/index-CHUjKZ5R.chunk.mjs'),window.OC.filePath('', '', 'dist/common-index-DYA_tnKg.chunk.css'),window.OC.filePath('', '', 'dist/NcAvatar-1KxMUN7V-R6Nmwuvb.chunk.mjs'),window.OC.filePath('', '', 'dist/index-CkGt55pS.chunk.mjs'),window.OC.filePath('', '', 'dist/util-DBjHxD9z.chunk.mjs'),window.OC.filePath('', '', 'dist/ArrowRight-BCzIOZ0l.chunk.mjs'),window.OC.filePath('', '', 'dist/common-ArrowRight-DfvWJUh_.chunk.css'),window.OC.filePath('', '', 'dist/colors-Cv9F-jWS-BFJACjQq.chunk.mjs'),window.OC.filePath('', '', 'dist/NcUserStatusIcon-BF5OEQFU-pJ2xeKbO.chunk.mjs'),window.OC.filePath('', '', 'dist/common-NcUserStatusIcon-BF5OEQFU-Bq_6hmXG.chunk.css'),window.OC.filePath('', '', 'dist/NcDateTime.vue_vue_type_script_setup_true_lang-BJuPH7S7-BThMWOZt.chunk.mjs'),window.OC.filePath('', '', 'dist/common-NcDateTime-b9UhLDij.chunk.css'),window.OC.filePath('', '', 'dist/common-NcAvatar-1KxMUN7V-CIJAK_jb.chunk.css'),window.OC.filePath('', '', 'dist/NcEmptyContent-CGAPqk4S-LFG8iXZZ.chunk.mjs'),window.OC.filePath('', '', 'dist/common-NcEmptyContent-CGAPqk4S-Don1d5Bd.chunk.css'),window.OC.filePath('', '', 'dist/NcBreadcrumbs-B4eyDS9i-bX0dOZmj.chunk.mjs'),window.OC.filePath('', '', 'dist/NcPasswordField-BFyzHTOO-BIm5AMSG.chunk.mjs'),window.OC.filePath('', '', 'dist/common-NcPasswordField-BFyzHTOO-Crp_EMfV.chunk.css'),window.OC.filePath('', '', 'dist/NcTextField.vue_vue_type_script_setup_true_lang-Bx2esFU2-CGsfYqql.chunk.mjs'),window.OC.filePath('', '', 'dist/common-NcBreadcrumbs-B4eyDS9i-BknLVeOm.chunk.css'),window.OC.filePath('', '', 'dist/common-NcTextArea-Dxzj4zdb-CY5ND5WA.chunk.css'),window.OC.filePath('', '', 'dist/NcCheckboxRadioSwitch-DVdt5Hkq-COYVxuqr.chunk.mjs'),window.OC.filePath('', '', 'dist/common-NcCheckboxRadioSwitch-DVdt5Hkq-Ct9ZGMmH.chunk.css'),window.OC.filePath('', '', 'dist/Plus-BxwPZLA-.chunk.mjs'),window.OC.filePath('', '', 'dist/common-Plus-Som-mR4B.chunk.css'),window.OC.filePath('', '', 'dist/index-BH07KH9-.chunk.mjs'),window.OC.filePath('', '', 'dist/common-index-bfXBK-tQ.chunk.css'),window.OC.filePath('', '', 'dist/index-C1YcCfSa.chunk.mjs'),window.OC.filePath('', '', 'dist/common-index-BnF98eos.chunk.css'),window.OC.filePath('', '', 'dist/NcEmojiPicker-UTxgju3f-D4QbKSIV.chunk.mjs'),window.OC.filePath('', '', 'dist/emoji-C8k9NUlo-BQiX-d8c.chunk.mjs'),window.OC.filePath('', '', 'dist/common-NcEmojiPicker-UTxgju3f-ChsL0oK6.chunk.css'),window.OC.filePath('', '', 'dist/index-EuTrUPdZ.chunk.mjs'),window.OC.filePath('', '', 'dist/common-index-BBuXQ7OS.chunk.css'),window.OC.filePath('', '', 'dist/index-8LKFZV9o.chunk.mjs'),window.OC.filePath('', '', 'dist/common-index-BBhtJjWD.chunk.css'),window.OC.filePath('', '', 'dist/NcSelectTags-I2hJaNax-N6jSSGJD.chunk.mjs'),window.OC.filePath('', '', 'dist/ContentCopy-B9XOXCFO.chunk.mjs'),window.OC.filePath('', '', 'dist/common-ContentCopy-D7mIRwIy.chunk.css'),window.OC.filePath('', '', 'dist/NcUserBubble-BXR7vT0V-BaTRETFp.chunk.mjs'),window.OC.filePath('', '', 'dist/common-NcUserBubble-BXR7vT0V-f2DD9EAL.chunk.css'),window.OC.filePath('', '', 'dist/modulepreload-polyfill-BxzAKjcf.chunk.mjs'),window.OC.filePath('', '', 'dist/index-BQu_HuHB.chunk.mjs'),window.OC.filePath('', '', 'dist/index-g0PRm924.chunk.mjs'),window.OC.filePath('', '', 'dist/appstore-appstore-main-C0vSpMnG.chunk.css'),window.OC.filePath('', '', 'dist/common-NcActionSeparator-Ct2RnclR-pXJ_-D_I.chunk.css'),window.OC.filePath('', '', 'dist/common-NcGuestContent-CM0uWLr1-BezK2wMx.chunk.css'),window.OC.filePath('', '', 'dist/common-DiscoverTypePost-CpeIz2iE.chunk.css'),window.OC.filePath('', '', 'dist/DiscoverTypeCarousel-BhgZW4td.chunk.mjs'),window.OC.filePath('', '', 'dist/appstore-DiscoverTypeCarousel--4FoDSYW.chunk.css'),window.OC.filePath('', '', 'dist/DiscoverTypeShowcase-BdX4MG-M.chunk.mjs'),window.OC.filePath('', '', 'dist/UpdateAllDialog-FlTEPsBb.chunk.mjs'),window.OC.filePath('', '', 'dist/common-UpdateAllDialog-CZVJ1CV6.chunk.css'),window.OC.filePath('', '', 'dist/appstore-DiscoverTypeShowcase-BsnvP-Fa.chunk.css')])))=>i.map(i=>d[i]); +import{b as _,A as x,o as i,c as u,w as v,k as y,u as e,f as h,F as A,B as N,m as C,C as I,l as w,a as d,_ as l}from"./Web-DYqXJUev.chunk.mjs";import{e as L}from"./mdi-BU6wr1QN.chunk.mjs";import{a as O}from"./index-BQu_HuHB.chunk.mjs";import{t as p}from"./translation-DoG5ZELJ-WOan4U8V.chunk.mjs";import{N as D}from"./NcEmptyContent-CGAPqk4S-LFG8iXZZ.chunk.mjs";import{N as P}from"./createElementId-DhjFt1I9-BmyhoOWk.chunk.mjs";import{N as R}from"./TrashCanOutline-BU3aqDG_.chunk.mjs";import{c as T}from"./index-CkGt55pS.chunk.mjs";import{c as V}from"./index-Cp0kcsps.chunk.mjs";import{l as g}from"./appstore-main.mjs";import{_ as b}from"./public-C1mLBHT3.chunk.mjs";import"./logger-D3RVzcfQ-BrUWOyzd.chunk.mjs";import"./index-CHUjKZ5R.chunk.mjs";import"./NcModal-DiDvgcU8-Cb_C64qI.chunk.mjs";import"./util-DBjHxD9z.chunk.mjs";import"./pinia-BsumPXOW.chunk.mjs";import"./NcContent-BYh5hWDN-C1_miOvl.chunk.mjs";import"./PencilOutline-CA_ZiZlA.chunk.mjs";import"./NcTextArea-Dxzj4zdb-DLw_yRcD.chunk.mjs";import"./index-BhwlPNkJ.chunk.mjs";import"./TrayArrowDown-ZQRTTdRd.chunk.mjs";import"./NcInputField-5Sg6EUP6-CUyzAC2j.chunk.mjs";import"./NcAvatar-1KxMUN7V-R6Nmwuvb.chunk.mjs";import"./ArrowRight-BCzIOZ0l.chunk.mjs";import"./colors-Cv9F-jWS-BFJACjQq.chunk.mjs";import"./NcUserStatusIcon-BF5OEQFU-pJ2xeKbO.chunk.mjs";import"./NcDateTime.vue_vue_type_script_setup_true_lang-BJuPH7S7-BThMWOZt.chunk.mjs";import"./NcBreadcrumbs-B4eyDS9i-bX0dOZmj.chunk.mjs";import"./NcPasswordField-BFyzHTOO-BIm5AMSG.chunk.mjs";import"./NcTextField.vue_vue_type_script_setup_true_lang-Bx2esFU2-CGsfYqql.chunk.mjs";/* empty css */import"./NcCheckboxRadioSwitch-DVdt5Hkq-COYVxuqr.chunk.mjs";import"./Plus-BxwPZLA-.chunk.mjs";import"./index-BH07KH9-.chunk.mjs";import"./index-C1YcCfSa.chunk.mjs";import"./NcEmojiPicker-UTxgju3f-D4QbKSIV.chunk.mjs";import"./emoji-C8k9NUlo-BQiX-d8c.chunk.mjs";import"./index-EuTrUPdZ.chunk.mjs";/* empty css */import"./index-8LKFZV9o.chunk.mjs";import"./NcSelectTags-I2hJaNax-N6jSSGJD.chunk.mjs";import"./ContentCopy-B9XOXCFO.chunk.mjs";import"./NcUserBubble-BXR7vT0V-BaTRETFp.chunk.mjs";import"./modulepreload-polyfill-BxzAKjcf.chunk.mjs";import"./index-g0PRm924.chunk.mjs";function z(o){const t={...o};if(t.date&&(t.date=Date.parse(t.date)),t.expiryDate&&(t.expiryDate=Date.parse(t.expiryDate)),t.type==="post"||t.type==="showcase"||t.type==="carousel")return t;throw new Error(`Invalid argument, app discover element with type ${o.type??"unknown"} is unknown`)}function F(o){const t=Date.now();return!(o.date&&o.date>t||o.expiryDate&&o.expiryDate(s.order??1/0)<(n.order??1/0)?-1:1),a}function q(o){for(let t=o.length-1;t>0;t--){const a=Math.floor(Math.random()*(t+1));[o[t],o[a]]=[o[a],o[t]]}return o}async function B(){const o=await T.get(V("/apps/appstore/api/v1/discover")),{data:t}=o.data.ocs;return t}const U={key:2,class:"app-discover"},$=_({__name:"AppstoreDiscover",setup(o){const t=d(()=>l(()=>import("./DiscoverTypePost-DbZIG6zf.chunk.mjs").then(r=>r.a),__vite__mapDeps([0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75]),import.meta.url)),a=d(()=>l(()=>import("./DiscoverTypeCarousel-BhgZW4td.chunk.mjs"),__vite__mapDeps([76,3,4,1,2,5,6,7,8,9,10,0,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,77]),import.meta.url)),s=d(()=>l(()=>import("./DiscoverTypeShowcase-BdX4MG-M.chunk.mjs"),__vite__mapDeps([78,11,3,4,2,5,6,7,8,9,12,79,1,10,17,18,19,15,16,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,13,14,69,70,71,72,73,74,80,0,75,81]),import.meta.url)),n=w(!1),m=w([]);x(async()=>{try{m.value=await M()}catch(r){n.value=!0,g.error(r),O(p("appstore","Could not load app discover section"))}});function k(r){return r==="post"?t:r==="carousel"?a:r==="showcase"?s:_({mounted:()=>g.error("Unknown component requested ",r),render:f=>f("div",p("appstore","Could not render element"))})}return(r,f)=>n.value?(i(),u(e(D),{key:0,name:e(p)("appstore","Nothing to show"),description:e(p)("appstore","Could not load section content from app store.")},{icon:v(()=>[y(e(P),{path:e(L),size:64},null,8,["path"])]),_:1},8,["name","description"])):m.value.length===0?(i(),u(e(D),{key:1,name:e(p)("appstore","Loading"),description:e(p)("appstore","Fetching the latest news…")},{icon:v(()=>[y(e(R),{size:64})]),_:1},8,["name","description"])):(i(),h("div",U,[(i(!0),h(A,null,N(m.value,(c,E)=>(i(),u(I(k(c.type)),C({key:c.id??E},{ref_for:!0},c),null,16))),128))]))}}),Vt=b($,[["__scopeId","data-v-daf7ec3e"]]);export{Vt as default}; +//# sourceMappingURL=AppstoreDiscover-CoBfThhg.chunk.mjs.map diff --git a/dist/AppstoreDiscover-DDOLgo3I.chunk.mjs.license b/dist/AppstoreDiscover-CoBfThhg.chunk.mjs.license similarity index 100% rename from dist/AppstoreDiscover-DDOLgo3I.chunk.mjs.license rename to dist/AppstoreDiscover-CoBfThhg.chunk.mjs.license diff --git a/dist/AppstoreDiscover-DDOLgo3I.chunk.mjs.map b/dist/AppstoreDiscover-CoBfThhg.chunk.mjs.map similarity index 99% rename from dist/AppstoreDiscover-DDOLgo3I.chunk.mjs.map rename to dist/AppstoreDiscover-CoBfThhg.chunk.mjs.map index 0e494278bc107..f213718c97b64 100644 --- a/dist/AppstoreDiscover-DDOLgo3I.chunk.mjs.map +++ b/dist/AppstoreDiscover-CoBfThhg.chunk.mjs.map @@ -1 +1 @@ -{"version":3,"mappings":"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","names":["parseApiResponse","element","appElement","filterElements","now","getDiscoverElements","data","loadDiscoverElements","parsedElements","shuffledElements","shuffleArray","a","b","array","i","j","response","axios","generateOcsUrl","PostType","defineAsyncComponent","__vitePreload","n","CarouselType","ShowcaseType","hasError","ref","elements","onBeforeMount","error","logger","showError","t","getComponent","type","defineComponent","h","_createBlock","_unref","NcEmptyContent","_createVNode","NcIconSvgWrapper","mdiEyeOffOutline","NcLoadingIcon","_openBlock","_createElementBlock","_hoisted_1","_Fragment","_renderList","entry","index","_resolveDynamicComponent","_mergeProps"],"ignoreList":[],"sources":["../build/frontend/apps/appstore/src/utils/appDiscoverParser.ts","../build/frontend/apps/appstore/src/service/app-discover.ts","../build/frontend/apps/appstore/src/views/AppstoreDiscover.vue"],"sourcesContent":["/**\n * SPDX-FileCopyrightText: 2024 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport type { IAppDiscoverCarousel, IAppDiscoverElement, IAppDiscoverElements, IAppDiscoverPost, IAppDiscoverShowcase } from '../constants/AppDiscoverTypes.ts'\n\n/**\n * Helper to transform the JSON API results to proper frontend objects (app discover section elements)\n *\n * @param element The JSON API element to transform\n */\nexport function parseApiResponse(element: Record): IAppDiscoverElements {\n\tconst appElement = { ...element }\n\tif (appElement.date) {\n\t\tappElement.date = Date.parse(appElement.date as string)\n\t}\n\tif (appElement.expiryDate) {\n\t\tappElement.expiryDate = Date.parse(appElement.expiryDate as string)\n\t}\n\n\tif (appElement.type === 'post') {\n\t\treturn appElement as unknown as IAppDiscoverPost\n\t} else if (appElement.type === 'showcase') {\n\t\treturn appElement as unknown as IAppDiscoverShowcase\n\t} else if (appElement.type === 'carousel') {\n\t\treturn appElement as unknown as IAppDiscoverCarousel\n\t}\n\tthrow new Error(`Invalid argument, app discover element with type ${element.type ?? 'unknown'} is unknown`)\n}\n\n/**\n * Filter outdated or upcoming elements\n *\n * @param element Element to check\n */\nexport function filterElements(element: IAppDiscoverElement) {\n\tconst now = Date.now()\n\t// Element not yet published\n\tif (element.date && element.date > now) {\n\t\treturn false\n\t}\n\n\t// Element expired\n\tif (element.expiryDate && element.expiryDate < now) {\n\t\treturn false\n\t}\n\treturn true\n}\n","/*!\n * SPDX-FileCopyrightText: 2025 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport type { OCSResponse } from '@nextcloud/typings/ocs'\n\nimport axios from '@nextcloud/axios'\nimport { generateOcsUrl } from '@nextcloud/router'\nimport { filterElements, parseApiResponse } from '../utils/appDiscoverParser.ts'\n\n/**\n * Get app discover elements\n */\nexport async function getDiscoverElements() {\n\tconst data = await loadDiscoverElements()\n\tif (data.length === 0) {\n\t\tthrow new Error('No app discover elements available (empty response)')\n\t}\n\n\t// Parse data to ensure dates are useable and then filter out expired or future elements\n\tconst parsedElements = data.map(parseApiResponse)\n\t\t.filter(filterElements)\n\n\t// Shuffle elements to make it looks more interesting\n\tconst shuffledElements = shuffleArray(parsedElements)\n\t// Sort pinned elements first\n\tshuffledElements.sort((a, b) => (a.order ?? Infinity) < (b.order ?? Infinity) ? -1 : 1)\n\treturn shuffledElements\n}\n\n/**\n * Shuffle using the Fisher-Yates algorithm\n *\n * @param array The array to shuffle (in place)\n */\nfunction shuffleArray(array: T[]): T[] {\n\tfor (let i = array.length - 1; i > 0; i--) {\n\t\tconst j = Math.floor(Math.random() * (i + 1));\n\t\t[array[i], array[j]] = [array[j]!, array[i]!]\n\t}\n\treturn array\n}\n\n/**\n * Load discover elements from the API\n */\nasync function loadDiscoverElements() {\n\tconst response = await axios.get[]>>(generateOcsUrl('/apps/appstore/api/v1/discover'))\n\tconst { data } = response.data.ocs\n\treturn data\n}\n","\n\n\n\n\n\n\n"],"file":"AppstoreDiscover-DDOLgo3I.chunk.mjs"} \ No newline at end of file +{"version":3,"mappings":"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","names":["parseApiResponse","element","appElement","filterElements","now","getDiscoverElements","data","loadDiscoverElements","parsedElements","shuffledElements","shuffleArray","a","b","array","i","j","response","axios","generateOcsUrl","PostType","defineAsyncComponent","__vitePreload","n","CarouselType","ShowcaseType","hasError","ref","elements","onBeforeMount","error","logger","showError","t","getComponent","type","defineComponent","h","_createBlock","_unref","NcEmptyContent","_createVNode","NcIconSvgWrapper","mdiEyeOffOutline","NcLoadingIcon","_openBlock","_createElementBlock","_hoisted_1","_Fragment","_renderList","entry","index","_resolveDynamicComponent","_mergeProps"],"ignoreList":[],"sources":["../build/frontend/apps/appstore/src/utils/appDiscoverParser.ts","../build/frontend/apps/appstore/src/service/app-discover.ts","../build/frontend/apps/appstore/src/views/AppstoreDiscover.vue"],"sourcesContent":["/**\n * SPDX-FileCopyrightText: 2024 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport type { IAppDiscoverCarousel, IAppDiscoverElement, IAppDiscoverElements, IAppDiscoverPost, IAppDiscoverShowcase } from '../constants/AppDiscoverTypes.ts'\n\n/**\n * Helper to transform the JSON API results to proper frontend objects (app discover section elements)\n *\n * @param element The JSON API element to transform\n */\nexport function parseApiResponse(element: Record): IAppDiscoverElements {\n\tconst appElement = { ...element }\n\tif (appElement.date) {\n\t\tappElement.date = Date.parse(appElement.date as string)\n\t}\n\tif (appElement.expiryDate) {\n\t\tappElement.expiryDate = Date.parse(appElement.expiryDate as string)\n\t}\n\n\tif (appElement.type === 'post') {\n\t\treturn appElement as unknown as IAppDiscoverPost\n\t} else if (appElement.type === 'showcase') {\n\t\treturn appElement as unknown as IAppDiscoverShowcase\n\t} else if (appElement.type === 'carousel') {\n\t\treturn appElement as unknown as IAppDiscoverCarousel\n\t}\n\tthrow new Error(`Invalid argument, app discover element with type ${element.type ?? 'unknown'} is unknown`)\n}\n\n/**\n * Filter outdated or upcoming elements\n *\n * @param element Element to check\n */\nexport function filterElements(element: IAppDiscoverElement) {\n\tconst now = Date.now()\n\t// Element not yet published\n\tif (element.date && element.date > now) {\n\t\treturn false\n\t}\n\n\t// Element expired\n\tif (element.expiryDate && element.expiryDate < now) {\n\t\treturn false\n\t}\n\treturn true\n}\n","/*!\n * SPDX-FileCopyrightText: 2025 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport type { OCSResponse } from '@nextcloud/typings/ocs'\n\nimport axios from '@nextcloud/axios'\nimport { generateOcsUrl } from '@nextcloud/router'\nimport { filterElements, parseApiResponse } from '../utils/appDiscoverParser.ts'\n\n/**\n * Get app discover elements\n */\nexport async function getDiscoverElements() {\n\tconst data = await loadDiscoverElements()\n\tif (data.length === 0) {\n\t\tthrow new Error('No app discover elements available (empty response)')\n\t}\n\n\t// Parse data to ensure dates are useable and then filter out expired or future elements\n\tconst parsedElements = data.map(parseApiResponse)\n\t\t.filter(filterElements)\n\n\t// Shuffle elements to make it looks more interesting\n\tconst shuffledElements = shuffleArray(parsedElements)\n\t// Sort pinned elements first\n\tshuffledElements.sort((a, b) => (a.order ?? Infinity) < (b.order ?? Infinity) ? -1 : 1)\n\treturn shuffledElements\n}\n\n/**\n * Shuffle using the Fisher-Yates algorithm\n *\n * @param array The array to shuffle (in place)\n */\nfunction shuffleArray(array: T[]): T[] {\n\tfor (let i = array.length - 1; i > 0; i--) {\n\t\tconst j = Math.floor(Math.random() * (i + 1));\n\t\t[array[i], array[j]] = [array[j]!, array[i]!]\n\t}\n\treturn array\n}\n\n/**\n * Load discover elements from the API\n */\nasync function loadDiscoverElements() {\n\tconst response = await axios.get[]>>(generateOcsUrl('/apps/appstore/api/v1/discover'))\n\tconst { data } = response.data.ocs\n\treturn data\n}\n","\n\n\n\n\n\n\n"],"file":"AppstoreDiscover-CoBfThhg.chunk.mjs"} \ No newline at end of file diff --git a/dist/AppstoreDiscover-DDOLgo3I.chunk.mjs.map.license b/dist/AppstoreDiscover-CoBfThhg.chunk.mjs.map.license similarity index 100% rename from dist/AppstoreDiscover-DDOLgo3I.chunk.mjs.map.license rename to dist/AppstoreDiscover-CoBfThhg.chunk.mjs.map.license diff --git a/dist/ArrowRight-CSlQTlWs.chunk.mjs b/dist/ArrowRight-BCzIOZ0l.chunk.mjs similarity index 97% rename from dist/ArrowRight-CSlQTlWs.chunk.mjs rename to dist/ArrowRight-BCzIOZ0l.chunk.mjs index 638d75a3e1844..08289c3ba7e63 100644 --- a/dist/ArrowRight-CSlQTlWs.chunk.mjs +++ b/dist/ArrowRight-BCzIOZ0l.chunk.mjs @@ -1,2 +1,2 @@ -import{w as A,q as z}from"./index-Cp0kcsps.chunk.mjs";import{_ as N}from"./createElementId-DhjFt1I9-BmyhoOWk.chunk.mjs";import{l as C}from"./logger-D3RVzcfQ-Bt9JRPzn.chunk.mjs";import{b as R,o as x,f as _,i as S,j as M,t as w,y as W,g as O,h as B,m as H}from"./Web-DYqXJUev.chunk.mjs";import{_ as P}from"./public-C1mLBHT3.chunk.mjs";function m(t,e,n){const i={type:String(t)};return n==null&&(typeof e=="string"||Array.isArray(e))?n=e:Object.assign(i,e),Array.isArray(n)?i.children=n:n!=null&&(i.value=String(n)),i}const j=(function(t){if(t==null)return I;if(typeof t=="function")return k(t);if(typeof t=="object")return Array.isArray(t)?T(t):q(t);if(typeof t=="string")return F(t);throw new Error("Expected function, string, or object as test")});function T(t){const e=[];let n=-1;for(;++n":""))+")"})}return y;function y(){let f=E,d,h,b;if((!e||r(s,p,l[l.length-1]||void 0))&&(f=D(n(s,l)),f[0]===v))return f;if("children"in s&&s.children){const g=s;if(g.children&&f[0]!==$)for(h=(i?g.children.length:-1)+a,b=l.concat(g);h>-1&&h(x(),_("a",{href:t.href,rel:"noopener noreferrer",target:"_blank",class:W([e.$style.externalLink,{[e.$style.externalLink_decorated]:t.decorateExternal}])},[S(e.$slots,"default",{},()=>[M(w(t.href),1)])],10,G))}}),Q="_externalLink_d-mCx",X="_externalLink_decorated_W3wuz",Y={"material-design-icon":"_material-design-icon_ZJnaR",externalLink:Q,externalLink_decorated:X},tt={$style:Y},et=N(K,[["__cssModules",tt]]),dt=/(\s|^)(https?:\/\/)([-A-Z0-9+_.]+(?::[0-9]+)?(?:\/[-A-Z0-9+&@#%?=~_|!:,.;()]*)*)(\s|$)/ig,L=/(\s|\(|^)((https?:\/\/)([-A-Z0-9+_.]+[-A-Z0-9]+(?::[0-9]+)?(?:\/[-A-Z0-9+&@#%?=~_|!:,.;()]*)*))(?=\s|\)|$)/ig;function gt({autolink:t,useMarkdown:e,useExtendedMarkdown:n}){return function(i){n||!e||!t||V(i,o=>o.type==="text",(o,r)=>{if(r.some(l=>l.type==="link"||l.type==="linkReference"))return;const a=r.at(-1),u=a.children.indexOf(o)??0,s=nt(o.value),p=typeof s=="string"?[m("text",s)]:s.map(l=>typeof l=="string"?m("text",l):m("link",{url:l.props.href},[m("text",l.props.href)])).filter(l=>l).flat();return a.children.splice(u,1,...p),[$,u+p.length]})}}function nt(t){let e=L.exec(t);const n=[];let i=0;for(;e!==null;){let r=e[2],a,u=t.substring(i,e.index+e[1].length);r[0]===" "&&(u+=r[0],r=r.substring(1).trim());const s=r[r.length-1];(s==="."||s===","||s===";"||e[0][0]==="("&&s===")")&&(r=r.substring(0,r.length-1),a=s),n.push(u),n.push({component:et,props:{href:r.trim(),decorateExternal:!0}}),a&&n.push(a),i=e.index+e[0].length,e=L.exec(t)}n.push(t.substring(i));const o=n.map(r=>typeof r=="string"?r:r.props.href).join("");return t===o?n:(C.error("[NcRichText] Failed to reassemble the chunked text: "+t),t)}function yt(t,e){const n=(l,c)=>l.startsWith(c)?l.slice(c.length):l,i=(l,...c)=>c.reduce((y,f)=>n(y,f),l);if(!t)return null;const o=/^https?:\/\//.test(e),r=/^[a-z][a-z0-9+.-]*:.+/.test(e);if(!o&&r||o&&!e.startsWith(A())||!o&&!e.startsWith("/"))return null;const a=o?i(e,A(),"/index.php"):e,u=i(t.options.history.base,z(),"/index.php"),s=i(a,u)||"/",p=t.resolve(s);return p.matched.length?p.fullPath:null}const rt={name:"ArrowRightIcon",emits:["click"],props:{title:{type:String},fillColor:{type:String,default:"currentColor"},size:{type:Number,default:24}}},it=["aria-hidden","aria-label"],ot=["fill","width","height"],st={d:"M4,11V13H16L10.5,18.5L11.92,19.92L19.84,12L11.92,4.08L10.5,5.5L16,11H4Z"},lt={key:0};function at(t,e,n,i,o,r){return x(),_("span",H(t.$attrs,{"aria-hidden":n.title?null:"true","aria-label":n.title,class:"material-design-icon arrow-right-icon",role:"img",onClick:e[0]||(e[0]=a=>t.$emit("click",a))}),[(x(),_("svg",{fill:n.fillColor,class:"material-design-icon__svg",width:n.size,height:n.size,viewBox:"0 0 24 24"},[O("path",st,[n.title?(x(),_("title",lt,w(n.title),1)):B("",!0)])],8,ot))],16,it)}const mt=P(rt,[["render",at]]);export{mt as A,v as E,et as N,$ as S,dt as U,j as c,yt as g,nt as p,gt as r,m as u,V as v}; -//# sourceMappingURL=ArrowRight-CSlQTlWs.chunk.mjs.map +import{w as A,q as z}from"./index-Cp0kcsps.chunk.mjs";import{_ as N}from"./createElementId-DhjFt1I9-BmyhoOWk.chunk.mjs";import{l as C}from"./logger-D3RVzcfQ-BrUWOyzd.chunk.mjs";import{b as R,o as x,f as _,i as S,j as M,t as w,y as W,g as O,h as B,m as H}from"./Web-DYqXJUev.chunk.mjs";import{_ as P}from"./public-C1mLBHT3.chunk.mjs";function m(t,e,n){const i={type:String(t)};return n==null&&(typeof e=="string"||Array.isArray(e))?n=e:Object.assign(i,e),Array.isArray(n)?i.children=n:n!=null&&(i.value=String(n)),i}const j=(function(t){if(t==null)return I;if(typeof t=="function")return k(t);if(typeof t=="object")return Array.isArray(t)?T(t):q(t);if(typeof t=="string")return F(t);throw new Error("Expected function, string, or object as test")});function T(t){const e=[];let n=-1;for(;++n":""))+")"})}return y;function y(){let f=E,d,h,b;if((!e||r(s,p,l[l.length-1]||void 0))&&(f=D(n(s,l)),f[0]===v))return f;if("children"in s&&s.children){const g=s;if(g.children&&f[0]!==$)for(h=(i?g.children.length:-1)+a,b=l.concat(g);h>-1&&h(x(),_("a",{href:t.href,rel:"noopener noreferrer",target:"_blank",class:W([e.$style.externalLink,{[e.$style.externalLink_decorated]:t.decorateExternal}])},[S(e.$slots,"default",{},()=>[M(w(t.href),1)])],10,G))}}),Q="_externalLink_d-mCx",X="_externalLink_decorated_W3wuz",Y={"material-design-icon":"_material-design-icon_ZJnaR",externalLink:Q,externalLink_decorated:X},tt={$style:Y},et=N(K,[["__cssModules",tt]]),dt=/(\s|^)(https?:\/\/)([-A-Z0-9+_.]+(?::[0-9]+)?(?:\/[-A-Z0-9+&@#%?=~_|!:,.;()]*)*)(\s|$)/ig,L=/(\s|\(|^)((https?:\/\/)([-A-Z0-9+_.]+[-A-Z0-9]+(?::[0-9]+)?(?:\/[-A-Z0-9+&@#%?=~_|!:,.;()]*)*))(?=\s|\)|$)/ig;function gt({autolink:t,useMarkdown:e,useExtendedMarkdown:n}){return function(i){n||!e||!t||V(i,o=>o.type==="text",(o,r)=>{if(r.some(l=>l.type==="link"||l.type==="linkReference"))return;const a=r.at(-1),u=a.children.indexOf(o)??0,s=nt(o.value),p=typeof s=="string"?[m("text",s)]:s.map(l=>typeof l=="string"?m("text",l):m("link",{url:l.props.href},[m("text",l.props.href)])).filter(l=>l).flat();return a.children.splice(u,1,...p),[$,u+p.length]})}}function nt(t){let e=L.exec(t);const n=[];let i=0;for(;e!==null;){let r=e[2],a,u=t.substring(i,e.index+e[1].length);r[0]===" "&&(u+=r[0],r=r.substring(1).trim());const s=r[r.length-1];(s==="."||s===","||s===";"||e[0][0]==="("&&s===")")&&(r=r.substring(0,r.length-1),a=s),n.push(u),n.push({component:et,props:{href:r.trim(),decorateExternal:!0}}),a&&n.push(a),i=e.index+e[0].length,e=L.exec(t)}n.push(t.substring(i));const o=n.map(r=>typeof r=="string"?r:r.props.href).join("");return t===o?n:(C.error("[NcRichText] Failed to reassemble the chunked text: "+t),t)}function yt(t,e){const n=(l,c)=>l.startsWith(c)?l.slice(c.length):l,i=(l,...c)=>c.reduce((y,f)=>n(y,f),l);if(!t)return null;const o=/^https?:\/\//.test(e),r=/^[a-z][a-z0-9+.-]*:.+/.test(e);if(!o&&r||o&&!e.startsWith(A())||!o&&!e.startsWith("/"))return null;const a=o?i(e,A(),"/index.php"):e,u=i(t.options.history.base,z(),"/index.php"),s=i(a,u)||"/",p=t.resolve(s);return p.matched.length?p.fullPath:null}const rt={name:"ArrowRightIcon",emits:["click"],props:{title:{type:String},fillColor:{type:String,default:"currentColor"},size:{type:Number,default:24}}},it=["aria-hidden","aria-label"],ot=["fill","width","height"],st={d:"M4,11V13H16L10.5,18.5L11.92,19.92L19.84,12L11.92,4.08L10.5,5.5L16,11H4Z"},lt={key:0};function at(t,e,n,i,o,r){return x(),_("span",H(t.$attrs,{"aria-hidden":n.title?null:"true","aria-label":n.title,class:"material-design-icon arrow-right-icon",role:"img",onClick:e[0]||(e[0]=a=>t.$emit("click",a))}),[(x(),_("svg",{fill:n.fillColor,class:"material-design-icon__svg",width:n.size,height:n.size,viewBox:"0 0 24 24"},[O("path",st,[n.title?(x(),_("title",lt,w(n.title),1)):B("",!0)])],8,ot))],16,it)}const mt=P(rt,[["render",at]]);export{mt as A,v as E,et as N,$ as S,dt as U,j as c,yt as g,nt as p,gt as r,m as u,V as v}; +//# sourceMappingURL=ArrowRight-BCzIOZ0l.chunk.mjs.map diff --git a/dist/ArrowRight-CSlQTlWs.chunk.mjs.license b/dist/ArrowRight-BCzIOZ0l.chunk.mjs.license similarity index 100% rename from dist/ArrowRight-CSlQTlWs.chunk.mjs.license rename to dist/ArrowRight-BCzIOZ0l.chunk.mjs.license diff --git a/dist/ArrowRight-CSlQTlWs.chunk.mjs.map b/dist/ArrowRight-BCzIOZ0l.chunk.mjs.map similarity index 99% rename from dist/ArrowRight-CSlQTlWs.chunk.mjs.map rename to dist/ArrowRight-BCzIOZ0l.chunk.mjs.map index 1b7041057f272..def28c316faa6 100644 --- a/dist/ArrowRight-CSlQTlWs.chunk.mjs.map +++ b/dist/ArrowRight-BCzIOZ0l.chunk.mjs.map @@ -1 +1 @@ -{"version":3,"file":"ArrowRight-CSlQTlWs.chunk.mjs","sources":["../node_modules/unist-builder/lib/index.js","../node_modules/unist-util-is/lib/index.js","../node_modules/unist-util-visit-parents/lib/index.js","../node_modules/@nextcloud/vue/dist/chunks/autolink-DrIurosL.mjs","../node_modules/vue-material-design-icons/ArrowRight.vue"],"sourcesContent":["/**\n * @typedef {import('unist').Node} Node\n */\n\n/**\n * @typedef {Array | string} ChildrenOrValue\n * List to use as `children` or value to use as `value`.\n *\n * @typedef {Record} Props\n * Other fields to add to the node.\n */\n\n/**\n * Build a node.\n *\n * @template {string} T\n * @template {Props} P\n * @template {Array} C\n *\n * @overload\n * @param {T} type\n * @returns {{type: T}}\n *\n * @overload\n * @param {T} type\n * @param {P} props\n * @returns {{type: T} & P}\n *\n * @overload\n * @param {T} type\n * @param {string} value\n * @returns {{type: T, value: string}}\n *\n * @overload\n * @param {T} type\n * @param {P} props\n * @param {string} value\n * @returns {{type: T, value: string} & P}\n *\n * @overload\n * @param {T} type\n * @param {C} children\n * @returns {{type: T, children: C}}\n *\n * @overload\n * @param {T} type\n * @param {P} props\n * @param {C} children\n * @returns {{type: T, children: C} & P}\n *\n * @param {string} type\n * Node type.\n * @param {ChildrenOrValue | Props | null | undefined} [props]\n * Fields assigned to node (default: `undefined`).\n * @param {ChildrenOrValue | null | undefined} [value]\n * Children of node or value of `node` (cast to string).\n * @returns {Node}\n * Built node.\n */\nexport function u(type, props, value) {\n /** @type {Node} */\n const node = {type: String(type)}\n\n if (\n (value === undefined || value === null) &&\n (typeof props === 'string' || Array.isArray(props))\n ) {\n value = props\n } else {\n Object.assign(node, props)\n }\n\n if (Array.isArray(value)) {\n // @ts-expect-error: create a parent.\n node.children = value\n } else if (value !== undefined && value !== null) {\n // @ts-expect-error: create a literal.\n node.value = String(value)\n }\n\n return node\n}\n","/**\n * @import {Node, Parent} from 'unist'\n */\n\n/**\n * @template Fn\n * @template Fallback\n * @typedef {Fn extends (value: any) => value is infer Thing ? Thing : Fallback} Predicate\n */\n\n/**\n * @callback Check\n * Check that an arbitrary value is a node.\n * @param {unknown} this\n * The given context.\n * @param {unknown} [node]\n * Anything (typically a node).\n * @param {number | null | undefined} [index]\n * The node’s position in its parent.\n * @param {Parent | null | undefined} [parent]\n * The node’s parent.\n * @returns {boolean}\n * Whether this is a node and passes a test.\n *\n * @typedef {Record | Node} Props\n * Object to check for equivalence.\n *\n * Note: `Node` is included as it is common but is not indexable.\n *\n * @typedef {Array | ReadonlyArray | Props | TestFunction | string | null | undefined} Test\n * Check for an arbitrary node.\n *\n * @callback TestFunction\n * Check if a node passes a test.\n * @param {unknown} this\n * The given context.\n * @param {Node} node\n * A node.\n * @param {number | undefined} [index]\n * The node’s position in its parent.\n * @param {Parent | undefined} [parent]\n * The node’s parent.\n * @returns {boolean | undefined | void}\n * Whether this node passes the test.\n *\n * Note: `void` is included until TS sees no return as `undefined`.\n */\n\n/**\n * Check if `node` is a `Node` and whether it passes the given test.\n *\n * @param {unknown} node\n * Thing to check, typically `Node`.\n * @param {Test} test\n * A check for a specific node.\n * @param {number | null | undefined} index\n * The node’s position in its parent.\n * @param {Parent | null | undefined} parent\n * The node’s parent.\n * @param {unknown} context\n * Context object (`this`) to pass to `test` functions.\n * @returns {boolean}\n * Whether `node` is a node and passes a test.\n */\nexport const is =\n // Note: overloads in JSDoc can’t yet use different `@template`s.\n /**\n * @type {(\n * (>(node: unknown, test: Condition, index?: number | null | undefined, parent?: Parent | null | undefined, context?: unknown) => node is Node & {type: Condition[number]}) &\n * (>(node: unknown, test: Condition, index?: number | null | undefined, parent?: Parent | null | undefined, context?: unknown) => node is Node & {type: Condition[number]}) &\n * ((node: unknown, test: Condition, index?: number | null | undefined, parent?: Parent | null | undefined, context?: unknown) => node is Node & {type: Condition}) &\n * ((node: unknown, test: Condition, index?: number | null | undefined, parent?: Parent | null | undefined, context?: unknown) => node is Node & Condition) &\n * ((node: unknown, test: Condition, index?: number | null | undefined, parent?: Parent | null | undefined, context?: unknown) => node is Node & Predicate) &\n * ((node?: null | undefined) => false) &\n * ((node: unknown, test?: null | undefined, index?: number | null | undefined, parent?: Parent | null | undefined, context?: unknown) => node is Node) &\n * ((node: unknown, test?: Test, index?: number | null | undefined, parent?: Parent | null | undefined, context?: unknown) => boolean)\n * )}\n */\n (\n /**\n * @param {unknown} [node]\n * @param {Test} [test]\n * @param {number | null | undefined} [index]\n * @param {Parent | null | undefined} [parent]\n * @param {unknown} [context]\n * @returns {boolean}\n */\n // eslint-disable-next-line max-params\n function (node, test, index, parent, context) {\n const check = convert(test)\n\n if (\n index !== undefined &&\n index !== null &&\n (typeof index !== 'number' ||\n index < 0 ||\n index === Number.POSITIVE_INFINITY)\n ) {\n throw new Error('Expected positive finite index')\n }\n\n if (\n parent !== undefined &&\n parent !== null &&\n (!is(parent) || !parent.children)\n ) {\n throw new Error('Expected parent node')\n }\n\n if (\n (parent === undefined || parent === null) !==\n (index === undefined || index === null)\n ) {\n throw new Error('Expected both parent and index')\n }\n\n return looksLikeANode(node)\n ? check.call(context, node, index, parent)\n : false\n }\n )\n\n/**\n * Generate an assertion from a test.\n *\n * Useful if you’re going to test many nodes, for example when creating a\n * utility where something else passes a compatible test.\n *\n * The created function is a bit faster because it expects valid input only:\n * a `node`, `index`, and `parent`.\n *\n * @param {Test} test\n * * when nullish, checks if `node` is a `Node`.\n * * when `string`, works like passing `(node) => node.type === test`.\n * * when `function` checks if function passed the node is true.\n * * when `object`, checks that all keys in test are in node, and that they have (strictly) equal values.\n * * when `array`, checks if any one of the subtests pass.\n * @returns {Check}\n * An assertion.\n */\nexport const convert =\n // Note: overloads in JSDoc can’t yet use different `@template`s.\n /**\n * @type {(\n * ((test: Condition) => (node: unknown, index?: number | null | undefined, parent?: Parent | null | undefined, context?: unknown) => node is Node & {type: Condition}) &\n * ((test: Condition) => (node: unknown, index?: number | null | undefined, parent?: Parent | null | undefined, context?: unknown) => node is Node & Condition) &\n * ((test: Condition) => (node: unknown, index?: number | null | undefined, parent?: Parent | null | undefined, context?: unknown) => node is Node & Predicate) &\n * ((test?: null | undefined) => (node?: unknown, index?: number | null | undefined, parent?: Parent | null | undefined, context?: unknown) => node is Node) &\n * ((test?: Test) => Check)\n * )}\n */\n (\n /**\n * @param {Test} [test]\n * @returns {Check}\n */\n function (test) {\n if (test === null || test === undefined) {\n return ok\n }\n\n if (typeof test === 'function') {\n return castFactory(test)\n }\n\n if (typeof test === 'object') {\n return Array.isArray(test)\n ? anyFactory(test)\n : // Cast because `ReadonlyArray` goes into the above but `isArray`\n // narrows to `Array`.\n propertiesFactory(/** @type {Props} */ (test))\n }\n\n if (typeof test === 'string') {\n return typeFactory(test)\n }\n\n throw new Error('Expected function, string, or object as test')\n }\n )\n\n/**\n * @param {Array} tests\n * @returns {Check}\n */\nfunction anyFactory(tests) {\n /** @type {Array} */\n const checks = []\n let index = -1\n\n while (++index < tests.length) {\n checks[index] = convert(tests[index])\n }\n\n return castFactory(any)\n\n /**\n * @this {unknown}\n * @type {TestFunction}\n */\n function any(...parameters) {\n let index = -1\n\n while (++index < checks.length) {\n if (checks[index].apply(this, parameters)) return true\n }\n\n return false\n }\n}\n\n/**\n * Turn an object into a test for a node with a certain fields.\n *\n * @param {Props} check\n * @returns {Check}\n */\nfunction propertiesFactory(check) {\n const checkAsRecord = /** @type {Record} */ (check)\n\n return castFactory(all)\n\n /**\n * @param {Node} node\n * @returns {boolean}\n */\n function all(node) {\n const nodeAsRecord = /** @type {Record} */ (\n /** @type {unknown} */ (node)\n )\n\n /** @type {string} */\n let key\n\n for (key in check) {\n if (nodeAsRecord[key] !== checkAsRecord[key]) return false\n }\n\n return true\n }\n}\n\n/**\n * Turn a string into a test for a node with a certain type.\n *\n * @param {string} check\n * @returns {Check}\n */\nfunction typeFactory(check) {\n return castFactory(type)\n\n /**\n * @param {Node} node\n */\n function type(node) {\n return node && node.type === check\n }\n}\n\n/**\n * Turn a custom test into a test for a node that passes that test.\n *\n * @param {TestFunction} testFunction\n * @returns {Check}\n */\nfunction castFactory(testFunction) {\n return check\n\n /**\n * @this {unknown}\n * @type {Check}\n */\n function check(value, index, parent) {\n return Boolean(\n looksLikeANode(value) &&\n testFunction.call(\n this,\n value,\n typeof index === 'number' ? index : undefined,\n parent || undefined\n )\n )\n }\n}\n\nfunction ok() {\n return true\n}\n\n/**\n * @param {unknown} value\n * @returns {value is Node}\n */\nfunction looksLikeANode(value) {\n return value !== null && typeof value === 'object' && 'type' in value\n}\n","/**\n * @import {Node as UnistNode, Parent as UnistParent} from 'unist'\n */\n\n/**\n * @typedef {Exclude | undefined} Test\n * Test from `unist-util-is`.\n *\n * Note: we have remove and add `undefined`, because otherwise when generating\n * automatic `.d.ts` files, TS tries to flatten paths from a local perspective,\n * which doesn’t work when publishing on npm.\n */\n\n/**\n * @typedef {(\n * Fn extends (value: any) => value is infer Thing\n * ? Thing\n * : Fallback\n * )} Predicate\n * Get the value of a type guard `Fn`.\n * @template Fn\n * Value; typically function that is a type guard (such as `(x): x is Y`).\n * @template Fallback\n * Value to yield if `Fn` is not a type guard.\n */\n\n/**\n * @typedef {(\n * Check extends null | undefined // No test.\n * ? Value\n * : Value extends {type: Check} // String (type) test.\n * ? Value\n * : Value extends Check // Partial test.\n * ? Value\n * : Check extends Function // Function test.\n * ? Predicate extends Value\n * ? Predicate\n * : never\n * : never // Some other test?\n * )} MatchesOne\n * Check whether a node matches a primitive check in the type system.\n * @template Value\n * Value; typically unist `Node`.\n * @template Check\n * Value; typically `unist-util-is`-compatible test, but not arrays.\n */\n\n/**\n * @typedef {(\n * Check extends ReadonlyArray\n * ? MatchesOne\n * : Check extends Array\n * ? MatchesOne\n * : MatchesOne\n * )} Matches\n * Check whether a node matches a check in the type system.\n * @template Value\n * Value; typically unist `Node`.\n * @template Check\n * Value; typically `unist-util-is`-compatible test.\n */\n\n/**\n * @typedef {0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10} Uint\n * Number; capped reasonably.\n */\n\n/**\n * @typedef {I extends 0 ? 1 : I extends 1 ? 2 : I extends 2 ? 3 : I extends 3 ? 4 : I extends 4 ? 5 : I extends 5 ? 6 : I extends 6 ? 7 : I extends 7 ? 8 : I extends 8 ? 9 : 10} Increment\n * Increment a number in the type system.\n * @template {Uint} [I=0]\n * Index.\n */\n\n/**\n * @typedef {(\n * Node extends UnistParent\n * ? Node extends {children: Array}\n * ? Child extends Children ? Node : never\n * : never\n * : never\n * )} InternalParent\n * Collect nodes that can be parents of `Child`.\n * @template {UnistNode} Node\n * All node types in a tree.\n * @template {UnistNode} Child\n * Node to search for.\n */\n\n/**\n * @typedef {InternalParent, Child>} Parent\n * Collect nodes in `Tree` that can be parents of `Child`.\n * @template {UnistNode} Tree\n * All node types in a tree.\n * @template {UnistNode} Child\n * Node to search for.\n */\n\n/**\n * @typedef {(\n * Depth extends Max\n * ? never\n * :\n * | InternalParent\n * | InternalAncestor, Max, Increment>\n * )} InternalAncestor\n * Collect nodes in `Tree` that can be ancestors of `Child`.\n * @template {UnistNode} Node\n * All node types in a tree.\n * @template {UnistNode} Child\n * Node to search for.\n * @template {Uint} [Max=10]\n * Max; searches up to this depth.\n * @template {Uint} [Depth=0]\n * Current depth.\n */\n\n/**\n * @typedef {InternalAncestor, Child>} Ancestor\n * Collect nodes in `Tree` that can be ancestors of `Child`.\n * @template {UnistNode} Tree\n * All node types in a tree.\n * @template {UnistNode} Child\n * Node to search for.\n */\n\n/**\n * @typedef {(\n * Tree extends UnistParent\n * ? Depth extends Max\n * ? Tree\n * : Tree | InclusiveDescendant>\n * : Tree\n * )} InclusiveDescendant\n * Collect all (inclusive) descendants of `Tree`.\n *\n * > 👉 **Note**: for performance reasons, this seems to be the fastest way to\n * > recurse without actually running into an infinite loop, which the\n * > previous version did.\n * >\n * > Practically, a max of `2` is typically enough assuming a `Root` is\n * > passed, but it doesn’t improve performance.\n * > It gets higher with `List > ListItem > Table > TableRow > TableCell`.\n * > Using up to `10` doesn’t hurt or help either.\n * @template {UnistNode} Tree\n * Tree type.\n * @template {Uint} [Max=10]\n * Max; searches up to this depth.\n * @template {Uint} [Depth=0]\n * Current depth.\n */\n\n/**\n * @typedef {'skip' | boolean} Action\n * Union of the action types.\n *\n * @typedef {number} Index\n * Move to the sibling at `index` next (after node itself is completely\n * traversed).\n *\n * Useful if mutating the tree, such as removing the node the visitor is\n * currently on, or any of its previous siblings.\n * Results less than 0 or greater than or equal to `children.length` stop\n * traversing the parent.\n *\n * @typedef {[(Action | null | undefined | void)?, (Index | null | undefined)?]} ActionTuple\n * List with one or two values, the first an action, the second an index.\n *\n * @typedef {Action | ActionTuple | Index | null | undefined | void} VisitorResult\n * Any value that can be returned from a visitor.\n */\n\n/**\n * @callback Visitor\n * Handle a node (matching `test`, if given).\n *\n * Visitors are free to transform `node`.\n * They can also transform the parent of node (the last of `ancestors`).\n *\n * Replacing `node` itself, if `SKIP` is not returned, still causes its\n * descendants to be walked (which is a bug).\n *\n * When adding or removing previous siblings of `node` (or next siblings, in\n * case of reverse), the `Visitor` should return a new `Index` to specify the\n * sibling to traverse after `node` is traversed.\n * Adding or removing next siblings of `node` (or previous siblings, in case\n * of reverse) is handled as expected without needing to return a new `Index`.\n *\n * Removing the children property of an ancestor still results in them being\n * traversed.\n * @param {Visited} node\n * Found node.\n * @param {Array} ancestors\n * Ancestors of `node`.\n * @returns {VisitorResult}\n * What to do next.\n *\n * An `Index` is treated as a tuple of `[CONTINUE, Index]`.\n * An `Action` is treated as a tuple of `[Action]`.\n *\n * Passing a tuple back only makes sense if the `Action` is `SKIP`.\n * When the `Action` is `EXIT`, that action can be returned.\n * When the `Action` is `CONTINUE`, `Index` can be returned.\n * @template {UnistNode} [Visited=UnistNode]\n * Visited node type.\n * @template {UnistParent} [VisitedParents=UnistParent]\n * Ancestor type.\n */\n\n/**\n * @typedef {Visitor, Check>, Ancestor, Check>>>} BuildVisitor\n * Build a typed `Visitor` function from a tree and a test.\n *\n * It will infer which values are passed as `node` and which as `parents`.\n * @template {UnistNode} [Tree=UnistNode]\n * Tree type.\n * @template {Test} [Check=Test]\n * Test type.\n */\n\nimport {convert} from 'unist-util-is'\nimport {color} from 'unist-util-visit-parents/do-not-use-color'\n\n/** @type {Readonly} */\nconst empty = []\n\n/**\n * Continue traversing as normal.\n */\nexport const CONTINUE = true\n\n/**\n * Stop traversing immediately.\n */\nexport const EXIT = false\n\n/**\n * Do not traverse this node’s children.\n */\nexport const SKIP = 'skip'\n\n/**\n * Visit nodes, with ancestral information.\n *\n * This algorithm performs *depth-first* *tree traversal* in *preorder*\n * (**NLR**) or if `reverse` is given, in *reverse preorder* (**NRL**).\n *\n * You can choose for which nodes `visitor` is called by passing a `test`.\n * For complex tests, you should test yourself in `visitor`, as it will be\n * faster and will have improved type information.\n *\n * Walking the tree is an intensive task.\n * Make use of the return values of the visitor when possible.\n * Instead of walking a tree multiple times, walk it once, use `unist-util-is`\n * to check if a node matches, and then perform different operations.\n *\n * You can change the tree.\n * See `Visitor` for more info.\n *\n * @overload\n * @param {Tree} tree\n * @param {Check} check\n * @param {BuildVisitor} visitor\n * @param {boolean | null | undefined} [reverse]\n * @returns {undefined}\n *\n * @overload\n * @param {Tree} tree\n * @param {BuildVisitor} visitor\n * @param {boolean | null | undefined} [reverse]\n * @returns {undefined}\n *\n * @param {UnistNode} tree\n * Tree to traverse.\n * @param {Visitor | Test} test\n * `unist-util-is`-compatible test\n * @param {Visitor | boolean | null | undefined} [visitor]\n * Handle each node.\n * @param {boolean | null | undefined} [reverse]\n * Traverse in reverse preorder (NRL) instead of the default preorder (NLR).\n * @returns {undefined}\n * Nothing.\n *\n * @template {UnistNode} Tree\n * Node type.\n * @template {Test} Check\n * `unist-util-is`-compatible test.\n */\nexport function visitParents(tree, test, visitor, reverse) {\n /** @type {Test} */\n let check\n\n if (typeof test === 'function' && typeof visitor !== 'function') {\n reverse = visitor\n // @ts-expect-error no visitor given, so `visitor` is test.\n visitor = test\n } else {\n // @ts-expect-error visitor given, so `test` isn’t a visitor.\n check = test\n }\n\n const is = convert(check)\n const step = reverse ? -1 : 1\n\n factory(tree, undefined, [])()\n\n /**\n * @param {UnistNode} node\n * @param {number | undefined} index\n * @param {Array} parents\n */\n function factory(node, index, parents) {\n const value = /** @type {Record} */ (\n node && typeof node === 'object' ? node : {}\n )\n\n if (typeof value.type === 'string') {\n const name =\n // `hast`\n typeof value.tagName === 'string'\n ? value.tagName\n : // `xast`\n typeof value.name === 'string'\n ? value.name\n : undefined\n\n Object.defineProperty(visit, 'name', {\n value:\n 'node (' + color(node.type + (name ? '<' + name + '>' : '')) + ')'\n })\n }\n\n return visit\n\n function visit() {\n /** @type {Readonly} */\n let result = empty\n /** @type {Readonly} */\n let subresult\n /** @type {number} */\n let offset\n /** @type {Array} */\n let grandparents\n\n if (!test || is(node, index, parents[parents.length - 1] || undefined)) {\n // @ts-expect-error: `visitor` is now a visitor.\n result = toResult(visitor(node, parents))\n\n if (result[0] === EXIT) {\n return result\n }\n }\n\n if ('children' in node && node.children) {\n const nodeAsParent = /** @type {UnistParent} */ (node)\n\n if (nodeAsParent.children && result[0] !== SKIP) {\n offset = (reverse ? nodeAsParent.children.length : -1) + step\n grandparents = parents.concat(nodeAsParent)\n\n while (offset > -1 && offset < nodeAsParent.children.length) {\n const child = nodeAsParent.children[offset]\n\n subresult = factory(child, offset, grandparents)()\n\n if (subresult[0] === EXIT) {\n return subresult\n }\n\n offset =\n typeof subresult[1] === 'number' ? subresult[1] : offset + step\n }\n }\n }\n\n return result\n }\n }\n}\n\n/**\n * Turn a return value into a clean result.\n *\n * @param {VisitorResult} value\n * Valid return values from visitors.\n * @returns {Readonly}\n * Clean result.\n */\nfunction toResult(value) {\n if (Array.isArray(value)) {\n return value\n }\n\n if (typeof value === 'number') {\n return [CONTINUE, value]\n }\n\n return value === null || value === undefined ? empty : [value]\n}\n","import '../assets/autolink-XS-VDSVB.css';\nimport { getBaseUrl, getRootUrl } from \"@nextcloud/router\";\nimport { u } from \"unist-builder\";\nimport { visitParents, SKIP } from \"unist-util-visit-parents\";\nimport { defineComponent, openBlock, createElementBlock, normalizeClass, renderSlot, createTextVNode, toDisplayString } from \"vue\";\nimport { _ as _export_sfc } from \"./_plugin-vue_export-helper-1tPrXgE0.mjs\";\nimport { l as logger } from \"./logger-D3RVzcfQ.mjs\";\nconst _hoisted_1 = [\"href\"];\nconst _sfc_main = /* @__PURE__ */ defineComponent({\n __name: \"NcRichTextExternalLink\",\n props: {\n href: {},\n decorateExternal: { type: Boolean, default: false }\n },\n setup(__props) {\n return (_ctx, _cache) => {\n return openBlock(), createElementBlock(\"a\", {\n href: __props.href,\n rel: \"noopener noreferrer\",\n target: \"_blank\",\n class: normalizeClass([_ctx.$style.externalLink, {\n [_ctx.$style.externalLink_decorated]: __props.decorateExternal\n }])\n }, [\n renderSlot(_ctx.$slots, \"default\", {}, () => [\n createTextVNode(toDisplayString(__props.href), 1)\n ])\n ], 10, _hoisted_1);\n };\n }\n});\nconst externalLink = \"_externalLink_d-mCx\";\nconst externalLink_decorated = \"_externalLink_decorated_W3wuz\";\nconst style0 = {\n \"material-design-icon\": \"_material-design-icon_ZJnaR\",\n externalLink,\n externalLink_decorated\n};\nconst cssModules = {\n \"$style\": style0\n};\nconst NcRichTextExternalLink = /* @__PURE__ */ _export_sfc(_sfc_main, [[\"__cssModules\", cssModules]]);\n/*!\n * SPDX-FileCopyrightText: 2022 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\nconst URL_PATTERN = /(\\s|^)(https?:\\/\\/)([-A-Z0-9+_.]+(?::[0-9]+)?(?:\\/[-A-Z0-9+&@#%?=~_|!:,.;()]*)*)(\\s|$)/ig;\nconst URL_PATTERN_AUTOLINK = /(\\s|\\(|^)((https?:\\/\\/)([-A-Z0-9+_.]+[-A-Z0-9]+(?::[0-9]+)?(?:\\/[-A-Z0-9+&@#%?=~_|!:,.;()]*)*))(?=\\s|\\)|$)/ig;\nfunction remarkAutolink({ autolink, useMarkdown, useExtendedMarkdown }) {\n return function(tree) {\n if (useExtendedMarkdown || !useMarkdown || !autolink) {\n return;\n }\n visitParents(tree, (node) => node.type === \"text\", (node, ancestors) => {\n if (ancestors.some((ancestor) => ancestor.type === \"link\" || ancestor.type === \"linkReference\")) {\n return;\n }\n const parent = ancestors.at(-1);\n const index = parent.children.indexOf(node) ?? 0;\n const parsed = parseUrl(node.value);\n const parsedNodes = typeof parsed === \"string\" ? [u(\"text\", parsed)] : parsed.map((n) => {\n if (typeof n === \"string\") {\n return u(\"text\", n);\n }\n return u(\"link\", {\n url: n.props.href\n }, [u(\"text\", n.props.href)]);\n }).filter((x) => x).flat();\n parent.children.splice(index, 1, ...parsedNodes);\n return [SKIP, index + parsedNodes.length];\n });\n };\n}\nfunction parseUrl(text) {\n let match = URL_PATTERN_AUTOLINK.exec(text);\n const list = [];\n let start = 0;\n while (match !== null) {\n let href = match[2];\n let textAfter;\n let textBefore = text.substring(start, match.index + match[1].length);\n if (href[0] === \" \") {\n textBefore += href[0];\n href = href.substring(1).trim();\n }\n const lastChar = href[href.length - 1];\n if (lastChar === \".\" || lastChar === \",\" || lastChar === \";\" || match[0][0] === \"(\" && lastChar === \")\") {\n href = href.substring(0, href.length - 1);\n textAfter = lastChar;\n }\n list.push(textBefore);\n list.push({ component: NcRichTextExternalLink, props: { href: href.trim(), decorateExternal: true } });\n if (textAfter) {\n list.push(textAfter);\n }\n start = match.index + match[0].length;\n match = URL_PATTERN_AUTOLINK.exec(text);\n }\n list.push(text.substring(start));\n const joinedText = list.map((item) => typeof item === \"string\" ? item : item.props.href).join(\"\");\n if (text === joinedText) {\n return list;\n }\n logger.error(\"[NcRichText] Failed to reassemble the chunked text: \" + text);\n return text;\n}\nfunction getRoute(router, url) {\n const removePrefix = (str, prefix) => str.startsWith(prefix) ? str.slice(prefix.length) : str;\n const removePrefixes = (str, ...prefixes) => prefixes.reduce((acc, prefix) => removePrefix(acc, prefix), str);\n if (!router) {\n return null;\n }\n const isAbsoluteURL = /^https?:\\/\\//.test(url);\n const isNonHttpLink = /^[a-z][a-z0-9+.-]*:.+/.test(url);\n if (!isAbsoluteURL && isNonHttpLink) {\n return null;\n }\n if (isAbsoluteURL && !url.startsWith(getBaseUrl())) {\n return null;\n }\n if (!isAbsoluteURL && !url.startsWith(\"/\")) {\n return null;\n }\n const relativeUrl = isAbsoluteURL ? removePrefixes(url, getBaseUrl(), \"/index.php\") : url;\n const relativeRouterBase = removePrefixes(router.options.history.base, getRootUrl(), \"/index.php\");\n const potentialRouterPath = removePrefixes(relativeUrl, relativeRouterBase) || \"/\";\n const route = router.resolve(potentialRouterPath);\n if (!route.matched.length) {\n return null;\n }\n return route.fullPath;\n}\nexport {\n NcRichTextExternalLink as N,\n URL_PATTERN as U,\n getRoute as g,\n parseUrl as p,\n remarkAutolink as r\n};\n//# sourceMappingURL=autolink-DrIurosL.mjs.map\n","\n\n"],"names":["u","type","props","value","node","convert","test","ok","castFactory","anyFactory","propertiesFactory","typeFactory","tests","checks","index","any","parameters","check","checkAsRecord","all","nodeAsRecord","key","testFunction","parent","looksLikeANode","empty","CONTINUE","EXIT","SKIP","visitParents","tree","visitor","reverse","is","step","factory","parents","name","visit","result","subresult","offset","grandparents","toResult","nodeAsParent","child","_hoisted_1","_sfc_main","defineComponent","__props","_ctx","_cache","openBlock","createElementBlock","normalizeClass","renderSlot","createTextVNode","toDisplayString","externalLink","externalLink_decorated","style0","cssModules","NcRichTextExternalLink","_export_sfc","URL_PATTERN","URL_PATTERN_AUTOLINK","remarkAutolink","autolink","useMarkdown","useExtendedMarkdown","ancestors","ancestor","parsed","parseUrl","parsedNodes","n","x","text","match","list","start","href","textAfter","textBefore","lastChar","joinedText","item","logger","getRoute","router","url","removePrefix","str","prefix","removePrefixes","prefixes","acc","isAbsoluteURL","isNonHttpLink","getBaseUrl","relativeUrl","relativeRouterBase","getRootUrl","potentialRouterPath","route","_hoisted_3","_createElementBlock","_mergeProps","$props","$event","_createElementVNode","_openBlock"],"mappings":"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","x_google_ignoreList":[0,1,2,3,4]} \ No newline at end of file +{"version":3,"file":"ArrowRight-BCzIOZ0l.chunk.mjs","sources":["../node_modules/unist-builder/lib/index.js","../node_modules/unist-util-is/lib/index.js","../node_modules/unist-util-visit-parents/lib/index.js","../node_modules/@nextcloud/vue/dist/chunks/autolink-DrIurosL.mjs","../node_modules/vue-material-design-icons/ArrowRight.vue"],"sourcesContent":["/**\n * @typedef {import('unist').Node} Node\n */\n\n/**\n * @typedef {Array | string} ChildrenOrValue\n * List to use as `children` or value to use as `value`.\n *\n * @typedef {Record} Props\n * Other fields to add to the node.\n */\n\n/**\n * Build a node.\n *\n * @template {string} T\n * @template {Props} P\n * @template {Array} C\n *\n * @overload\n * @param {T} type\n * @returns {{type: T}}\n *\n * @overload\n * @param {T} type\n * @param {P} props\n * @returns {{type: T} & P}\n *\n * @overload\n * @param {T} type\n * @param {string} value\n * @returns {{type: T, value: string}}\n *\n * @overload\n * @param {T} type\n * @param {P} props\n * @param {string} value\n * @returns {{type: T, value: string} & P}\n *\n * @overload\n * @param {T} type\n * @param {C} children\n * @returns {{type: T, children: C}}\n *\n * @overload\n * @param {T} type\n * @param {P} props\n * @param {C} children\n * @returns {{type: T, children: C} & P}\n *\n * @param {string} type\n * Node type.\n * @param {ChildrenOrValue | Props | null | undefined} [props]\n * Fields assigned to node (default: `undefined`).\n * @param {ChildrenOrValue | null | undefined} [value]\n * Children of node or value of `node` (cast to string).\n * @returns {Node}\n * Built node.\n */\nexport function u(type, props, value) {\n /** @type {Node} */\n const node = {type: String(type)}\n\n if (\n (value === undefined || value === null) &&\n (typeof props === 'string' || Array.isArray(props))\n ) {\n value = props\n } else {\n Object.assign(node, props)\n }\n\n if (Array.isArray(value)) {\n // @ts-expect-error: create a parent.\n node.children = value\n } else if (value !== undefined && value !== null) {\n // @ts-expect-error: create a literal.\n node.value = String(value)\n }\n\n return node\n}\n","/**\n * @import {Node, Parent} from 'unist'\n */\n\n/**\n * @template Fn\n * @template Fallback\n * @typedef {Fn extends (value: any) => value is infer Thing ? Thing : Fallback} Predicate\n */\n\n/**\n * @callback Check\n * Check that an arbitrary value is a node.\n * @param {unknown} this\n * The given context.\n * @param {unknown} [node]\n * Anything (typically a node).\n * @param {number | null | undefined} [index]\n * The node’s position in its parent.\n * @param {Parent | null | undefined} [parent]\n * The node’s parent.\n * @returns {boolean}\n * Whether this is a node and passes a test.\n *\n * @typedef {Record | Node} Props\n * Object to check for equivalence.\n *\n * Note: `Node` is included as it is common but is not indexable.\n *\n * @typedef {Array | ReadonlyArray | Props | TestFunction | string | null | undefined} Test\n * Check for an arbitrary node.\n *\n * @callback TestFunction\n * Check if a node passes a test.\n * @param {unknown} this\n * The given context.\n * @param {Node} node\n * A node.\n * @param {number | undefined} [index]\n * The node’s position in its parent.\n * @param {Parent | undefined} [parent]\n * The node’s parent.\n * @returns {boolean | undefined | void}\n * Whether this node passes the test.\n *\n * Note: `void` is included until TS sees no return as `undefined`.\n */\n\n/**\n * Check if `node` is a `Node` and whether it passes the given test.\n *\n * @param {unknown} node\n * Thing to check, typically `Node`.\n * @param {Test} test\n * A check for a specific node.\n * @param {number | null | undefined} index\n * The node’s position in its parent.\n * @param {Parent | null | undefined} parent\n * The node’s parent.\n * @param {unknown} context\n * Context object (`this`) to pass to `test` functions.\n * @returns {boolean}\n * Whether `node` is a node and passes a test.\n */\nexport const is =\n // Note: overloads in JSDoc can’t yet use different `@template`s.\n /**\n * @type {(\n * (>(node: unknown, test: Condition, index?: number | null | undefined, parent?: Parent | null | undefined, context?: unknown) => node is Node & {type: Condition[number]}) &\n * (>(node: unknown, test: Condition, index?: number | null | undefined, parent?: Parent | null | undefined, context?: unknown) => node is Node & {type: Condition[number]}) &\n * ((node: unknown, test: Condition, index?: number | null | undefined, parent?: Parent | null | undefined, context?: unknown) => node is Node & {type: Condition}) &\n * ((node: unknown, test: Condition, index?: number | null | undefined, parent?: Parent | null | undefined, context?: unknown) => node is Node & Condition) &\n * ((node: unknown, test: Condition, index?: number | null | undefined, parent?: Parent | null | undefined, context?: unknown) => node is Node & Predicate) &\n * ((node?: null | undefined) => false) &\n * ((node: unknown, test?: null | undefined, index?: number | null | undefined, parent?: Parent | null | undefined, context?: unknown) => node is Node) &\n * ((node: unknown, test?: Test, index?: number | null | undefined, parent?: Parent | null | undefined, context?: unknown) => boolean)\n * )}\n */\n (\n /**\n * @param {unknown} [node]\n * @param {Test} [test]\n * @param {number | null | undefined} [index]\n * @param {Parent | null | undefined} [parent]\n * @param {unknown} [context]\n * @returns {boolean}\n */\n // eslint-disable-next-line max-params\n function (node, test, index, parent, context) {\n const check = convert(test)\n\n if (\n index !== undefined &&\n index !== null &&\n (typeof index !== 'number' ||\n index < 0 ||\n index === Number.POSITIVE_INFINITY)\n ) {\n throw new Error('Expected positive finite index')\n }\n\n if (\n parent !== undefined &&\n parent !== null &&\n (!is(parent) || !parent.children)\n ) {\n throw new Error('Expected parent node')\n }\n\n if (\n (parent === undefined || parent === null) !==\n (index === undefined || index === null)\n ) {\n throw new Error('Expected both parent and index')\n }\n\n return looksLikeANode(node)\n ? check.call(context, node, index, parent)\n : false\n }\n )\n\n/**\n * Generate an assertion from a test.\n *\n * Useful if you’re going to test many nodes, for example when creating a\n * utility where something else passes a compatible test.\n *\n * The created function is a bit faster because it expects valid input only:\n * a `node`, `index`, and `parent`.\n *\n * @param {Test} test\n * * when nullish, checks if `node` is a `Node`.\n * * when `string`, works like passing `(node) => node.type === test`.\n * * when `function` checks if function passed the node is true.\n * * when `object`, checks that all keys in test are in node, and that they have (strictly) equal values.\n * * when `array`, checks if any one of the subtests pass.\n * @returns {Check}\n * An assertion.\n */\nexport const convert =\n // Note: overloads in JSDoc can’t yet use different `@template`s.\n /**\n * @type {(\n * ((test: Condition) => (node: unknown, index?: number | null | undefined, parent?: Parent | null | undefined, context?: unknown) => node is Node & {type: Condition}) &\n * ((test: Condition) => (node: unknown, index?: number | null | undefined, parent?: Parent | null | undefined, context?: unknown) => node is Node & Condition) &\n * ((test: Condition) => (node: unknown, index?: number | null | undefined, parent?: Parent | null | undefined, context?: unknown) => node is Node & Predicate) &\n * ((test?: null | undefined) => (node?: unknown, index?: number | null | undefined, parent?: Parent | null | undefined, context?: unknown) => node is Node) &\n * ((test?: Test) => Check)\n * )}\n */\n (\n /**\n * @param {Test} [test]\n * @returns {Check}\n */\n function (test) {\n if (test === null || test === undefined) {\n return ok\n }\n\n if (typeof test === 'function') {\n return castFactory(test)\n }\n\n if (typeof test === 'object') {\n return Array.isArray(test)\n ? anyFactory(test)\n : // Cast because `ReadonlyArray` goes into the above but `isArray`\n // narrows to `Array`.\n propertiesFactory(/** @type {Props} */ (test))\n }\n\n if (typeof test === 'string') {\n return typeFactory(test)\n }\n\n throw new Error('Expected function, string, or object as test')\n }\n )\n\n/**\n * @param {Array} tests\n * @returns {Check}\n */\nfunction anyFactory(tests) {\n /** @type {Array} */\n const checks = []\n let index = -1\n\n while (++index < tests.length) {\n checks[index] = convert(tests[index])\n }\n\n return castFactory(any)\n\n /**\n * @this {unknown}\n * @type {TestFunction}\n */\n function any(...parameters) {\n let index = -1\n\n while (++index < checks.length) {\n if (checks[index].apply(this, parameters)) return true\n }\n\n return false\n }\n}\n\n/**\n * Turn an object into a test for a node with a certain fields.\n *\n * @param {Props} check\n * @returns {Check}\n */\nfunction propertiesFactory(check) {\n const checkAsRecord = /** @type {Record} */ (check)\n\n return castFactory(all)\n\n /**\n * @param {Node} node\n * @returns {boolean}\n */\n function all(node) {\n const nodeAsRecord = /** @type {Record} */ (\n /** @type {unknown} */ (node)\n )\n\n /** @type {string} */\n let key\n\n for (key in check) {\n if (nodeAsRecord[key] !== checkAsRecord[key]) return false\n }\n\n return true\n }\n}\n\n/**\n * Turn a string into a test for a node with a certain type.\n *\n * @param {string} check\n * @returns {Check}\n */\nfunction typeFactory(check) {\n return castFactory(type)\n\n /**\n * @param {Node} node\n */\n function type(node) {\n return node && node.type === check\n }\n}\n\n/**\n * Turn a custom test into a test for a node that passes that test.\n *\n * @param {TestFunction} testFunction\n * @returns {Check}\n */\nfunction castFactory(testFunction) {\n return check\n\n /**\n * @this {unknown}\n * @type {Check}\n */\n function check(value, index, parent) {\n return Boolean(\n looksLikeANode(value) &&\n testFunction.call(\n this,\n value,\n typeof index === 'number' ? index : undefined,\n parent || undefined\n )\n )\n }\n}\n\nfunction ok() {\n return true\n}\n\n/**\n * @param {unknown} value\n * @returns {value is Node}\n */\nfunction looksLikeANode(value) {\n return value !== null && typeof value === 'object' && 'type' in value\n}\n","/**\n * @import {Node as UnistNode, Parent as UnistParent} from 'unist'\n */\n\n/**\n * @typedef {Exclude | undefined} Test\n * Test from `unist-util-is`.\n *\n * Note: we have remove and add `undefined`, because otherwise when generating\n * automatic `.d.ts` files, TS tries to flatten paths from a local perspective,\n * which doesn’t work when publishing on npm.\n */\n\n/**\n * @typedef {(\n * Fn extends (value: any) => value is infer Thing\n * ? Thing\n * : Fallback\n * )} Predicate\n * Get the value of a type guard `Fn`.\n * @template Fn\n * Value; typically function that is a type guard (such as `(x): x is Y`).\n * @template Fallback\n * Value to yield if `Fn` is not a type guard.\n */\n\n/**\n * @typedef {(\n * Check extends null | undefined // No test.\n * ? Value\n * : Value extends {type: Check} // String (type) test.\n * ? Value\n * : Value extends Check // Partial test.\n * ? Value\n * : Check extends Function // Function test.\n * ? Predicate extends Value\n * ? Predicate\n * : never\n * : never // Some other test?\n * )} MatchesOne\n * Check whether a node matches a primitive check in the type system.\n * @template Value\n * Value; typically unist `Node`.\n * @template Check\n * Value; typically `unist-util-is`-compatible test, but not arrays.\n */\n\n/**\n * @typedef {(\n * Check extends ReadonlyArray\n * ? MatchesOne\n * : Check extends Array\n * ? MatchesOne\n * : MatchesOne\n * )} Matches\n * Check whether a node matches a check in the type system.\n * @template Value\n * Value; typically unist `Node`.\n * @template Check\n * Value; typically `unist-util-is`-compatible test.\n */\n\n/**\n * @typedef {0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10} Uint\n * Number; capped reasonably.\n */\n\n/**\n * @typedef {I extends 0 ? 1 : I extends 1 ? 2 : I extends 2 ? 3 : I extends 3 ? 4 : I extends 4 ? 5 : I extends 5 ? 6 : I extends 6 ? 7 : I extends 7 ? 8 : I extends 8 ? 9 : 10} Increment\n * Increment a number in the type system.\n * @template {Uint} [I=0]\n * Index.\n */\n\n/**\n * @typedef {(\n * Node extends UnistParent\n * ? Node extends {children: Array}\n * ? Child extends Children ? Node : never\n * : never\n * : never\n * )} InternalParent\n * Collect nodes that can be parents of `Child`.\n * @template {UnistNode} Node\n * All node types in a tree.\n * @template {UnistNode} Child\n * Node to search for.\n */\n\n/**\n * @typedef {InternalParent, Child>} Parent\n * Collect nodes in `Tree` that can be parents of `Child`.\n * @template {UnistNode} Tree\n * All node types in a tree.\n * @template {UnistNode} Child\n * Node to search for.\n */\n\n/**\n * @typedef {(\n * Depth extends Max\n * ? never\n * :\n * | InternalParent\n * | InternalAncestor, Max, Increment>\n * )} InternalAncestor\n * Collect nodes in `Tree` that can be ancestors of `Child`.\n * @template {UnistNode} Node\n * All node types in a tree.\n * @template {UnistNode} Child\n * Node to search for.\n * @template {Uint} [Max=10]\n * Max; searches up to this depth.\n * @template {Uint} [Depth=0]\n * Current depth.\n */\n\n/**\n * @typedef {InternalAncestor, Child>} Ancestor\n * Collect nodes in `Tree` that can be ancestors of `Child`.\n * @template {UnistNode} Tree\n * All node types in a tree.\n * @template {UnistNode} Child\n * Node to search for.\n */\n\n/**\n * @typedef {(\n * Tree extends UnistParent\n * ? Depth extends Max\n * ? Tree\n * : Tree | InclusiveDescendant>\n * : Tree\n * )} InclusiveDescendant\n * Collect all (inclusive) descendants of `Tree`.\n *\n * > 👉 **Note**: for performance reasons, this seems to be the fastest way to\n * > recurse without actually running into an infinite loop, which the\n * > previous version did.\n * >\n * > Practically, a max of `2` is typically enough assuming a `Root` is\n * > passed, but it doesn’t improve performance.\n * > It gets higher with `List > ListItem > Table > TableRow > TableCell`.\n * > Using up to `10` doesn’t hurt or help either.\n * @template {UnistNode} Tree\n * Tree type.\n * @template {Uint} [Max=10]\n * Max; searches up to this depth.\n * @template {Uint} [Depth=0]\n * Current depth.\n */\n\n/**\n * @typedef {'skip' | boolean} Action\n * Union of the action types.\n *\n * @typedef {number} Index\n * Move to the sibling at `index` next (after node itself is completely\n * traversed).\n *\n * Useful if mutating the tree, such as removing the node the visitor is\n * currently on, or any of its previous siblings.\n * Results less than 0 or greater than or equal to `children.length` stop\n * traversing the parent.\n *\n * @typedef {[(Action | null | undefined | void)?, (Index | null | undefined)?]} ActionTuple\n * List with one or two values, the first an action, the second an index.\n *\n * @typedef {Action | ActionTuple | Index | null | undefined | void} VisitorResult\n * Any value that can be returned from a visitor.\n */\n\n/**\n * @callback Visitor\n * Handle a node (matching `test`, if given).\n *\n * Visitors are free to transform `node`.\n * They can also transform the parent of node (the last of `ancestors`).\n *\n * Replacing `node` itself, if `SKIP` is not returned, still causes its\n * descendants to be walked (which is a bug).\n *\n * When adding or removing previous siblings of `node` (or next siblings, in\n * case of reverse), the `Visitor` should return a new `Index` to specify the\n * sibling to traverse after `node` is traversed.\n * Adding or removing next siblings of `node` (or previous siblings, in case\n * of reverse) is handled as expected without needing to return a new `Index`.\n *\n * Removing the children property of an ancestor still results in them being\n * traversed.\n * @param {Visited} node\n * Found node.\n * @param {Array} ancestors\n * Ancestors of `node`.\n * @returns {VisitorResult}\n * What to do next.\n *\n * An `Index` is treated as a tuple of `[CONTINUE, Index]`.\n * An `Action` is treated as a tuple of `[Action]`.\n *\n * Passing a tuple back only makes sense if the `Action` is `SKIP`.\n * When the `Action` is `EXIT`, that action can be returned.\n * When the `Action` is `CONTINUE`, `Index` can be returned.\n * @template {UnistNode} [Visited=UnistNode]\n * Visited node type.\n * @template {UnistParent} [VisitedParents=UnistParent]\n * Ancestor type.\n */\n\n/**\n * @typedef {Visitor, Check>, Ancestor, Check>>>} BuildVisitor\n * Build a typed `Visitor` function from a tree and a test.\n *\n * It will infer which values are passed as `node` and which as `parents`.\n * @template {UnistNode} [Tree=UnistNode]\n * Tree type.\n * @template {Test} [Check=Test]\n * Test type.\n */\n\nimport {convert} from 'unist-util-is'\nimport {color} from 'unist-util-visit-parents/do-not-use-color'\n\n/** @type {Readonly} */\nconst empty = []\n\n/**\n * Continue traversing as normal.\n */\nexport const CONTINUE = true\n\n/**\n * Stop traversing immediately.\n */\nexport const EXIT = false\n\n/**\n * Do not traverse this node’s children.\n */\nexport const SKIP = 'skip'\n\n/**\n * Visit nodes, with ancestral information.\n *\n * This algorithm performs *depth-first* *tree traversal* in *preorder*\n * (**NLR**) or if `reverse` is given, in *reverse preorder* (**NRL**).\n *\n * You can choose for which nodes `visitor` is called by passing a `test`.\n * For complex tests, you should test yourself in `visitor`, as it will be\n * faster and will have improved type information.\n *\n * Walking the tree is an intensive task.\n * Make use of the return values of the visitor when possible.\n * Instead of walking a tree multiple times, walk it once, use `unist-util-is`\n * to check if a node matches, and then perform different operations.\n *\n * You can change the tree.\n * See `Visitor` for more info.\n *\n * @overload\n * @param {Tree} tree\n * @param {Check} check\n * @param {BuildVisitor} visitor\n * @param {boolean | null | undefined} [reverse]\n * @returns {undefined}\n *\n * @overload\n * @param {Tree} tree\n * @param {BuildVisitor} visitor\n * @param {boolean | null | undefined} [reverse]\n * @returns {undefined}\n *\n * @param {UnistNode} tree\n * Tree to traverse.\n * @param {Visitor | Test} test\n * `unist-util-is`-compatible test\n * @param {Visitor | boolean | null | undefined} [visitor]\n * Handle each node.\n * @param {boolean | null | undefined} [reverse]\n * Traverse in reverse preorder (NRL) instead of the default preorder (NLR).\n * @returns {undefined}\n * Nothing.\n *\n * @template {UnistNode} Tree\n * Node type.\n * @template {Test} Check\n * `unist-util-is`-compatible test.\n */\nexport function visitParents(tree, test, visitor, reverse) {\n /** @type {Test} */\n let check\n\n if (typeof test === 'function' && typeof visitor !== 'function') {\n reverse = visitor\n // @ts-expect-error no visitor given, so `visitor` is test.\n visitor = test\n } else {\n // @ts-expect-error visitor given, so `test` isn’t a visitor.\n check = test\n }\n\n const is = convert(check)\n const step = reverse ? -1 : 1\n\n factory(tree, undefined, [])()\n\n /**\n * @param {UnistNode} node\n * @param {number | undefined} index\n * @param {Array} parents\n */\n function factory(node, index, parents) {\n const value = /** @type {Record} */ (\n node && typeof node === 'object' ? node : {}\n )\n\n if (typeof value.type === 'string') {\n const name =\n // `hast`\n typeof value.tagName === 'string'\n ? value.tagName\n : // `xast`\n typeof value.name === 'string'\n ? value.name\n : undefined\n\n Object.defineProperty(visit, 'name', {\n value:\n 'node (' + color(node.type + (name ? '<' + name + '>' : '')) + ')'\n })\n }\n\n return visit\n\n function visit() {\n /** @type {Readonly} */\n let result = empty\n /** @type {Readonly} */\n let subresult\n /** @type {number} */\n let offset\n /** @type {Array} */\n let grandparents\n\n if (!test || is(node, index, parents[parents.length - 1] || undefined)) {\n // @ts-expect-error: `visitor` is now a visitor.\n result = toResult(visitor(node, parents))\n\n if (result[0] === EXIT) {\n return result\n }\n }\n\n if ('children' in node && node.children) {\n const nodeAsParent = /** @type {UnistParent} */ (node)\n\n if (nodeAsParent.children && result[0] !== SKIP) {\n offset = (reverse ? nodeAsParent.children.length : -1) + step\n grandparents = parents.concat(nodeAsParent)\n\n while (offset > -1 && offset < nodeAsParent.children.length) {\n const child = nodeAsParent.children[offset]\n\n subresult = factory(child, offset, grandparents)()\n\n if (subresult[0] === EXIT) {\n return subresult\n }\n\n offset =\n typeof subresult[1] === 'number' ? subresult[1] : offset + step\n }\n }\n }\n\n return result\n }\n }\n}\n\n/**\n * Turn a return value into a clean result.\n *\n * @param {VisitorResult} value\n * Valid return values from visitors.\n * @returns {Readonly}\n * Clean result.\n */\nfunction toResult(value) {\n if (Array.isArray(value)) {\n return value\n }\n\n if (typeof value === 'number') {\n return [CONTINUE, value]\n }\n\n return value === null || value === undefined ? empty : [value]\n}\n","import '../assets/autolink-XS-VDSVB.css';\nimport { getBaseUrl, getRootUrl } from \"@nextcloud/router\";\nimport { u } from \"unist-builder\";\nimport { visitParents, SKIP } from \"unist-util-visit-parents\";\nimport { defineComponent, openBlock, createElementBlock, normalizeClass, renderSlot, createTextVNode, toDisplayString } from \"vue\";\nimport { _ as _export_sfc } from \"./_plugin-vue_export-helper-1tPrXgE0.mjs\";\nimport { l as logger } from \"./logger-D3RVzcfQ.mjs\";\nconst _hoisted_1 = [\"href\"];\nconst _sfc_main = /* @__PURE__ */ defineComponent({\n __name: \"NcRichTextExternalLink\",\n props: {\n href: {},\n decorateExternal: { type: Boolean, default: false }\n },\n setup(__props) {\n return (_ctx, _cache) => {\n return openBlock(), createElementBlock(\"a\", {\n href: __props.href,\n rel: \"noopener noreferrer\",\n target: \"_blank\",\n class: normalizeClass([_ctx.$style.externalLink, {\n [_ctx.$style.externalLink_decorated]: __props.decorateExternal\n }])\n }, [\n renderSlot(_ctx.$slots, \"default\", {}, () => [\n createTextVNode(toDisplayString(__props.href), 1)\n ])\n ], 10, _hoisted_1);\n };\n }\n});\nconst externalLink = \"_externalLink_d-mCx\";\nconst externalLink_decorated = \"_externalLink_decorated_W3wuz\";\nconst style0 = {\n \"material-design-icon\": \"_material-design-icon_ZJnaR\",\n externalLink,\n externalLink_decorated\n};\nconst cssModules = {\n \"$style\": style0\n};\nconst NcRichTextExternalLink = /* @__PURE__ */ _export_sfc(_sfc_main, [[\"__cssModules\", cssModules]]);\n/*!\n * SPDX-FileCopyrightText: 2022 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\nconst URL_PATTERN = /(\\s|^)(https?:\\/\\/)([-A-Z0-9+_.]+(?::[0-9]+)?(?:\\/[-A-Z0-9+&@#%?=~_|!:,.;()]*)*)(\\s|$)/ig;\nconst URL_PATTERN_AUTOLINK = /(\\s|\\(|^)((https?:\\/\\/)([-A-Z0-9+_.]+[-A-Z0-9]+(?::[0-9]+)?(?:\\/[-A-Z0-9+&@#%?=~_|!:,.;()]*)*))(?=\\s|\\)|$)/ig;\nfunction remarkAutolink({ autolink, useMarkdown, useExtendedMarkdown }) {\n return function(tree) {\n if (useExtendedMarkdown || !useMarkdown || !autolink) {\n return;\n }\n visitParents(tree, (node) => node.type === \"text\", (node, ancestors) => {\n if (ancestors.some((ancestor) => ancestor.type === \"link\" || ancestor.type === \"linkReference\")) {\n return;\n }\n const parent = ancestors.at(-1);\n const index = parent.children.indexOf(node) ?? 0;\n const parsed = parseUrl(node.value);\n const parsedNodes = typeof parsed === \"string\" ? [u(\"text\", parsed)] : parsed.map((n) => {\n if (typeof n === \"string\") {\n return u(\"text\", n);\n }\n return u(\"link\", {\n url: n.props.href\n }, [u(\"text\", n.props.href)]);\n }).filter((x) => x).flat();\n parent.children.splice(index, 1, ...parsedNodes);\n return [SKIP, index + parsedNodes.length];\n });\n };\n}\nfunction parseUrl(text) {\n let match = URL_PATTERN_AUTOLINK.exec(text);\n const list = [];\n let start = 0;\n while (match !== null) {\n let href = match[2];\n let textAfter;\n let textBefore = text.substring(start, match.index + match[1].length);\n if (href[0] === \" \") {\n textBefore += href[0];\n href = href.substring(1).trim();\n }\n const lastChar = href[href.length - 1];\n if (lastChar === \".\" || lastChar === \",\" || lastChar === \";\" || match[0][0] === \"(\" && lastChar === \")\") {\n href = href.substring(0, href.length - 1);\n textAfter = lastChar;\n }\n list.push(textBefore);\n list.push({ component: NcRichTextExternalLink, props: { href: href.trim(), decorateExternal: true } });\n if (textAfter) {\n list.push(textAfter);\n }\n start = match.index + match[0].length;\n match = URL_PATTERN_AUTOLINK.exec(text);\n }\n list.push(text.substring(start));\n const joinedText = list.map((item) => typeof item === \"string\" ? item : item.props.href).join(\"\");\n if (text === joinedText) {\n return list;\n }\n logger.error(\"[NcRichText] Failed to reassemble the chunked text: \" + text);\n return text;\n}\nfunction getRoute(router, url) {\n const removePrefix = (str, prefix) => str.startsWith(prefix) ? str.slice(prefix.length) : str;\n const removePrefixes = (str, ...prefixes) => prefixes.reduce((acc, prefix) => removePrefix(acc, prefix), str);\n if (!router) {\n return null;\n }\n const isAbsoluteURL = /^https?:\\/\\//.test(url);\n const isNonHttpLink = /^[a-z][a-z0-9+.-]*:.+/.test(url);\n if (!isAbsoluteURL && isNonHttpLink) {\n return null;\n }\n if (isAbsoluteURL && !url.startsWith(getBaseUrl())) {\n return null;\n }\n if (!isAbsoluteURL && !url.startsWith(\"/\")) {\n return null;\n }\n const relativeUrl = isAbsoluteURL ? removePrefixes(url, getBaseUrl(), \"/index.php\") : url;\n const relativeRouterBase = removePrefixes(router.options.history.base, getRootUrl(), \"/index.php\");\n const potentialRouterPath = removePrefixes(relativeUrl, relativeRouterBase) || \"/\";\n const route = router.resolve(potentialRouterPath);\n if (!route.matched.length) {\n return null;\n }\n return route.fullPath;\n}\nexport {\n NcRichTextExternalLink as N,\n URL_PATTERN as U,\n getRoute as g,\n parseUrl as p,\n remarkAutolink as r\n};\n//# sourceMappingURL=autolink-DrIurosL.mjs.map\n","\n\n"],"names":["u","type","props","value","node","convert","test","ok","castFactory","anyFactory","propertiesFactory","typeFactory","tests","checks","index","any","parameters","check","checkAsRecord","all","nodeAsRecord","key","testFunction","parent","looksLikeANode","empty","CONTINUE","EXIT","SKIP","visitParents","tree","visitor","reverse","is","step","factory","parents","name","visit","result","subresult","offset","grandparents","toResult","nodeAsParent","child","_hoisted_1","_sfc_main","defineComponent","__props","_ctx","_cache","openBlock","createElementBlock","normalizeClass","renderSlot","createTextVNode","toDisplayString","externalLink","externalLink_decorated","style0","cssModules","NcRichTextExternalLink","_export_sfc","URL_PATTERN","URL_PATTERN_AUTOLINK","remarkAutolink","autolink","useMarkdown","useExtendedMarkdown","ancestors","ancestor","parsed","parseUrl","parsedNodes","n","x","text","match","list","start","href","textAfter","textBefore","lastChar","joinedText","item","logger","getRoute","router","url","removePrefix","str","prefix","removePrefixes","prefixes","acc","isAbsoluteURL","isNonHttpLink","getBaseUrl","relativeUrl","relativeRouterBase","getRootUrl","potentialRouterPath","route","_hoisted_3","_createElementBlock","_mergeProps","$props","$event","_createElementVNode","_openBlock"],"mappings":"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","x_google_ignoreList":[0,1,2,3,4]} \ No newline at end of file diff --git a/dist/ArrowRight-CSlQTlWs.chunk.mjs.map.license b/dist/ArrowRight-BCzIOZ0l.chunk.mjs.map.license similarity index 100% rename from dist/ArrowRight-CSlQTlWs.chunk.mjs.map.license rename to dist/ArrowRight-BCzIOZ0l.chunk.mjs.map.license diff --git a/dist/AuthMechanismRsa-vXoEDo92.chunk.mjs b/dist/AuthMechanismRsa-2rFmvka_.chunk.mjs similarity index 86% rename from dist/AuthMechanismRsa-vXoEDo92.chunk.mjs rename to dist/AuthMechanismRsa-2rFmvka_.chunk.mjs index 61f5ac67f442d..ebdb10b7ffa6f 100644 --- a/dist/AuthMechanismRsa-vXoEDo92.chunk.mjs +++ b/dist/AuthMechanismRsa-2rFmvka_.chunk.mjs @@ -1,2 +1,2 @@ -import{b as g,n as _,u as o,o as r,c as p,C as x,y as d,w as v,j as V,t as b,s as k,z as E,f,F as M,B as K,J as q,K as U,k as c,l as j}from"./Web-DYqXJUev.chunk.mjs";import{c as w}from"./index-CkGt55pS.chunk.mjs";import{a as C}from"./index-mH69OG7L.chunk.mjs";import{t as u}from"./translation-DoG5ZELJ-WOan4U8V.chunk.mjs";import{b as N}from"./index-Cp0kcsps.chunk.mjs";import{N as S}from"./logger-D3RVzcfQ-Bt9JRPzn.chunk.mjs";import{N as z}from"./index-BDlLVKOD.chunk.mjs";import{N as A}from"./NcCheckboxRadioSwitch-DVdt5Hkq-COYVxuqr.chunk.mjs";import{N as B}from"./NcPasswordField-BFyzHTOO-7Y4psNBG.chunk.mjs";import{_ as L}from"./NcTextField.vue_vue_type_script_setup_true_lang-Bx2esFU2-D61trFet.chunk.mjs";import{a as y,C as O}from"./types-DurdPjCi.chunk.mjs";import{_ as $}from"./public-C1mLBHT3.chunk.mjs";import{l as P}from"./logger-BFB83ufD.chunk.mjs";const R=g({__name:"ConfigurationEntry",props:k({configKey:{},configOption:{}},{modelValue:{type:[String,Boolean],default:""},modelModifiers:{}}),emits:["update:modelValue"],setup(e){const a=_(e,"modelValue");return(l,i)=>e.configOption.type!==o(y).Boolean?(r(),p(x(e.configOption.type===o(y).Password?o(B):o(L)),{key:0,modelValue:a.value,"onUpdate:modelValue":i[0]||(i[0]=t=>a.value=t),name:e.configKey,required:!(e.configOption.flags&o(O).Optional),label:e.configOption.value,title:e.configOption.tooltip,class:d(l.$style.configurationEntry)},null,8,["modelValue","name","required","label","title","class"])):(r(),p(o(A),{key:1,modelValue:a.value,"onUpdate:modelValue":i[1]||(i[1]=t=>a.value=t),type:"switch",title:e.configOption.tooltip,class:d(l.$style.configurationEntry)},{default:v(()=>[V(b(e.configOption.value),1)]),_:1},8,["modelValue","title","class"]))}}),F="_configurationEntry_1cmcq_2",G={configurationEntry:F},H={$style:G},J=$(R,[["__cssModules",H]]),T=g({__name:"AuthMechanismRsa",props:k({authMechanism:{}},{modelValue:{required:!0},modelModifiers:{}}),emits:["update:modelValue"],setup(e){const a=_(e,"modelValue"),l=j();E(l,()=>{l.value&&(a.value.private_key="",a.value.public_key="")});async function i(){try{const{data:t}=await w.post(N("/apps/files_external/ajax/public_key.php"),{keyLength:l.value});a.value.private_key=t.data.private_key,a.value.public_key=t.data.public_key}catch(t){P.error("Error generating RSA key pair",{error:t}),C(u("files_external","Error generating key pair"))}}return(t,m)=>(r(),f("div",null,[(r(!0),f(M,null,K(e.authMechanism.configuration,(n,s)=>q((r(),p(J,{key:n.value,modelValue:a.value[s],"onUpdate:modelValue":h=>a.value[s]=h,configKey:s,configOption:n},null,8,["modelValue","onUpdate:modelValue","configKey","configOption"])),[[U,!(n.flags&o(O).Hidden)]])),128)),c(o(z),{modelValue:l.value,"onUpdate:modelValue":m[0]||(m[0]=n=>l.value=n),clearable:!1,inputLabel:o(u)("files_external","Key size"),options:[1024,2048,4096],required:""},null,8,["modelValue","inputLabel"]),c(o(S),{disabled:!l.value,wide:"",onClick:i},{default:v(()=>[V(b(o(u)("files_external","Generate keys")),1)]),_:1},8,["disabled"])]))}}),ne=Object.freeze(Object.defineProperty({__proto__:null,default:T},Symbol.toStringTag,{value:"Module"}));export{ne as A,J as C}; -//# sourceMappingURL=AuthMechanismRsa-vXoEDo92.chunk.mjs.map +import{b as g,n as _,u as o,o as r,c as p,C as x,y as d,w as v,j as V,t as b,s as k,z as E,f,F as M,B as K,J as q,K as U,k as c,l as j}from"./Web-DYqXJUev.chunk.mjs";import{c as w}from"./index-CkGt55pS.chunk.mjs";import{a as C}from"./index-BQu_HuHB.chunk.mjs";import{t as u}from"./translation-DoG5ZELJ-WOan4U8V.chunk.mjs";import{b as N}from"./index-Cp0kcsps.chunk.mjs";import{N as S}from"./logger-D3RVzcfQ-BrUWOyzd.chunk.mjs";import{N as z}from"./index-BhwlPNkJ.chunk.mjs";import{N as A}from"./NcCheckboxRadioSwitch-DVdt5Hkq-COYVxuqr.chunk.mjs";import{N as B}from"./NcPasswordField-BFyzHTOO-BIm5AMSG.chunk.mjs";import{_ as L}from"./NcTextField.vue_vue_type_script_setup_true_lang-Bx2esFU2-CGsfYqql.chunk.mjs";import{a as y,C as O}from"./types-BWr2WvKc.chunk.mjs";import{_ as $}from"./public-C1mLBHT3.chunk.mjs";import{l as P}from"./logger-BFB83ufD.chunk.mjs";const R=g({__name:"ConfigurationEntry",props:k({configKey:{},configOption:{}},{modelValue:{type:[String,Boolean],default:""},modelModifiers:{}}),emits:["update:modelValue"],setup(e){const a=_(e,"modelValue");return(l,i)=>e.configOption.type!==o(y).Boolean?(r(),p(x(e.configOption.type===o(y).Password?o(B):o(L)),{key:0,modelValue:a.value,"onUpdate:modelValue":i[0]||(i[0]=t=>a.value=t),name:e.configKey,required:!(e.configOption.flags&o(O).Optional),label:e.configOption.value,title:e.configOption.tooltip,class:d(l.$style.configurationEntry)},null,8,["modelValue","name","required","label","title","class"])):(r(),p(o(A),{key:1,modelValue:a.value,"onUpdate:modelValue":i[1]||(i[1]=t=>a.value=t),type:"switch",title:e.configOption.tooltip,class:d(l.$style.configurationEntry)},{default:v(()=>[V(b(e.configOption.value),1)]),_:1},8,["modelValue","title","class"]))}}),F="_configurationEntry_1cmcq_2",G={configurationEntry:F},H={$style:G},J=$(R,[["__cssModules",H]]),T=g({__name:"AuthMechanismRsa",props:k({authMechanism:{}},{modelValue:{required:!0},modelModifiers:{}}),emits:["update:modelValue"],setup(e){const a=_(e,"modelValue"),l=j();E(l,()=>{l.value&&(a.value.private_key="",a.value.public_key="")});async function i(){try{const{data:t}=await w.post(N("/apps/files_external/ajax/public_key.php"),{keyLength:l.value});a.value.private_key=t.data.private_key,a.value.public_key=t.data.public_key}catch(t){P.error("Error generating RSA key pair",{error:t}),C(u("files_external","Error generating key pair"))}}return(t,m)=>(r(),f("div",null,[(r(!0),f(M,null,K(e.authMechanism.configuration,(n,s)=>q((r(),p(J,{key:n.value,modelValue:a.value[s],"onUpdate:modelValue":h=>a.value[s]=h,configKey:s,configOption:n},null,8,["modelValue","onUpdate:modelValue","configKey","configOption"])),[[U,!(n.flags&o(O).Hidden)]])),128)),c(o(z),{modelValue:l.value,"onUpdate:modelValue":m[0]||(m[0]=n=>l.value=n),clearable:!1,inputLabel:o(u)("files_external","Key size"),options:[1024,2048,4096],required:""},null,8,["modelValue","inputLabel"]),c(o(S),{disabled:!l.value,wide:"",onClick:i},{default:v(()=>[V(b(o(u)("files_external","Generate keys")),1)]),_:1},8,["disabled"])]))}}),ne=Object.freeze(Object.defineProperty({__proto__:null,default:T},Symbol.toStringTag,{value:"Module"}));export{ne as A,J as C}; +//# sourceMappingURL=AuthMechanismRsa-2rFmvka_.chunk.mjs.map diff --git a/dist/AuthMechanismRsa-vXoEDo92.chunk.mjs.license b/dist/AuthMechanismRsa-2rFmvka_.chunk.mjs.license similarity index 100% rename from dist/AuthMechanismRsa-vXoEDo92.chunk.mjs.license rename to dist/AuthMechanismRsa-2rFmvka_.chunk.mjs.license diff --git a/dist/AuthMechanismRsa-vXoEDo92.chunk.mjs.map b/dist/AuthMechanismRsa-2rFmvka_.chunk.mjs.map similarity index 98% rename from dist/AuthMechanismRsa-vXoEDo92.chunk.mjs.map rename to dist/AuthMechanismRsa-2rFmvka_.chunk.mjs.map index 6ac7e979457e3..1324101f007b9 100644 --- a/dist/AuthMechanismRsa-vXoEDo92.chunk.mjs.map +++ b/dist/AuthMechanismRsa-2rFmvka_.chunk.mjs.map @@ -1 +1 @@ -{"version":3,"file":"AuthMechanismRsa-vXoEDo92.chunk.mjs","sources":["../build/frontend/apps/files_external/src/components/AddExternalStorageDialog/ConfigurationEntry.vue","../build/frontend/apps/files_external/src/views/AuthMechanismRsa.vue"],"sourcesContent":["\n\n\n\n\n\n\n","\n\n\n\n\n"],"names":["value","_useModel","__props","_unref","ConfigurationType","_createBlock","_resolveDynamicComponent","NcPasswordField","NcTextField","$event","ConfigurationFlag","_normalizeClass","$style","NcCheckboxRadioSwitch","_createTextVNode","_toDisplayString","modelValue","keySize","ref","watch","generateKeys","data","axios","generateUrl","error","logger","showError","t","_createElementBlock","_openBlock","_Fragment","configOption","configKey","ConfigurationEntry","_vShow","_createVNode","NcSelect","NcButton"],"mappings":"ihCAaA,MAAMA,EAAQC,EAA6BC,EAAC,YAA6B,eAWjEA,EAAA,aAAa,OAASC,EAAAC,CAAA,EAAkB,aAF/CC,EAQsCC,EAPhCJ,EAAA,aAAa,OAASC,EAAAC,CAAA,EAAkB,SAAWD,EAAAI,CAAA,EAAkBJ,EAAAK,CAAA,CAAW,EAAA,kBAE5ER,EAAA,2CAAAA,EAAK,MAAAS,GACb,KAAMP,EAAA,UACN,WAAYA,EAAA,aAAa,MAAQC,EAAAO,CAAA,EAAkB,UACnD,MAAOR,EAAA,aAAa,MACpB,MAAOA,EAAA,aAAa,QACpB,MAAKS,EAAEC,EAAAA,OAAO,kBAAkB,CAAA,yEAClCP,EAOwBF,EAAAU,CAAA,EAAA,kBALdb,EAAA,2CAAAA,EAAK,MAAAS,GACd,KAAK,SACJ,MAAOP,EAAA,aAAa,QACpB,MAAKS,EAAEC,EAAAA,OAAO,kBAAkB,CAAA,aACjC,IAAwB,CAArBE,EAAAC,EAAAb,EAAA,aAAa,KAAK,EAAA,CAAA,CAAA,6RClBvB,MAAMc,EAAaf,EAA6CC,EAAA,YAAmB,EAM7Ee,EAAUC,EAAA,EAChBC,EAAMF,EAAS,IAAM,CAChBA,EAAQ,QACXD,EAAW,MAAM,YAAc,GAC/BA,EAAW,MAAM,WAAa,GAEhC,CAAC,EAKD,eAAeI,GAAe,CAC7B,GAAI,CAEH,KAAM,CAAE,KAAAC,GAAS,MAAMC,EAAM,KAAKC,EAAY,0CAA0C,EAAG,CAC1F,UAAWN,EAAQ,KAAA,CACnB,EAEDD,EAAW,MAAM,YAAcK,EAAK,KAAK,YACzCL,EAAW,MAAM,WAAaK,EAAK,KAAK,UACzC,OAASG,EAAO,CACfC,EAAO,MAAM,gCAAiC,CAAE,MAAAD,CAAA,CAAO,EACvDE,EAAUC,EAAE,iBAAkB,2BAA2B,CAAC,CAC3D,CACD,mBAICC,EAsBM,MAAA,KAAA,EArBLC,EAAA,EAAA,EAAAD,EAMgCE,SALG5B,EAAA,cAAc,cAAa,CAAtD6B,EAAcC,WADtB3B,EAMgC4B,EAAA,CAH9B,IAAKF,EAAa,MACV,WAAAf,EAAA,MAAWgB,CAAS,EAApB,sBAAAvB,GAAAO,EAAA,MAAWgB,CAAS,EAAAvB,EAC5B,UAAAuB,EACA,aAAAD,CAAA,4EAJS,CAAAG,EAAA,EAAAH,EAAa,MAAQ5B,EAAAO,CAAA,EAAkB,OAAM,CAAA,UAMxDyB,EAKYhC,EAAAiC,CAAA,EAAA,YAJFnB,EAAA,2CAAAA,EAAO,MAAAR,GACf,UAAW,GACX,WAAYN,EAAAwB,CAAA,EAAC,iBAAA,UAAA,EACb,QAAS,CAAA,KAAA,KAAA,IAAA,EACV,SAAA,EAAA,sCAEDQ,EAKWhC,EAAAkC,CAAA,EAAA,CAJT,UAAWpB,EAAA,MACZ,KAAA,GACC,QAAOG,CAAA,aACR,IAA0C,KAAvCjB,EAAAwB,CAAA,EAAC,iBAAA,eAAA,CAAA,EAAA,CAAA,CAAA"} \ No newline at end of file +{"version":3,"file":"AuthMechanismRsa-2rFmvka_.chunk.mjs","sources":["../build/frontend/apps/files_external/src/components/AddExternalStorageDialog/ConfigurationEntry.vue","../build/frontend/apps/files_external/src/views/AuthMechanismRsa.vue"],"sourcesContent":["\n\n\n\n\n\n\n","\n\n\n\n\n"],"names":["value","_useModel","__props","_unref","ConfigurationType","_createBlock","_resolveDynamicComponent","NcPasswordField","NcTextField","$event","ConfigurationFlag","_normalizeClass","$style","NcCheckboxRadioSwitch","_createTextVNode","_toDisplayString","modelValue","keySize","ref","watch","generateKeys","data","axios","generateUrl","error","logger","showError","t","_createElementBlock","_openBlock","_Fragment","configOption","configKey","ConfigurationEntry","_vShow","_createVNode","NcSelect","NcButton"],"mappings":"ihCAaA,MAAMA,EAAQC,EAA6BC,EAAC,YAA6B,eAWjEA,EAAA,aAAa,OAASC,EAAAC,CAAA,EAAkB,aAF/CC,EAQsCC,EAPhCJ,EAAA,aAAa,OAASC,EAAAC,CAAA,EAAkB,SAAWD,EAAAI,CAAA,EAAkBJ,EAAAK,CAAA,CAAW,EAAA,kBAE5ER,EAAA,2CAAAA,EAAK,MAAAS,GACb,KAAMP,EAAA,UACN,WAAYA,EAAA,aAAa,MAAQC,EAAAO,CAAA,EAAkB,UACnD,MAAOR,EAAA,aAAa,MACpB,MAAOA,EAAA,aAAa,QACpB,MAAKS,EAAEC,EAAAA,OAAO,kBAAkB,CAAA,yEAClCP,EAOwBF,EAAAU,CAAA,EAAA,kBALdb,EAAA,2CAAAA,EAAK,MAAAS,GACd,KAAK,SACJ,MAAOP,EAAA,aAAa,QACpB,MAAKS,EAAEC,EAAAA,OAAO,kBAAkB,CAAA,aACjC,IAAwB,CAArBE,EAAAC,EAAAb,EAAA,aAAa,KAAK,EAAA,CAAA,CAAA,6RClBvB,MAAMc,EAAaf,EAA6CC,EAAA,YAAmB,EAM7Ee,EAAUC,EAAA,EAChBC,EAAMF,EAAS,IAAM,CAChBA,EAAQ,QACXD,EAAW,MAAM,YAAc,GAC/BA,EAAW,MAAM,WAAa,GAEhC,CAAC,EAKD,eAAeI,GAAe,CAC7B,GAAI,CAEH,KAAM,CAAE,KAAAC,GAAS,MAAMC,EAAM,KAAKC,EAAY,0CAA0C,EAAG,CAC1F,UAAWN,EAAQ,KAAA,CACnB,EAEDD,EAAW,MAAM,YAAcK,EAAK,KAAK,YACzCL,EAAW,MAAM,WAAaK,EAAK,KAAK,UACzC,OAASG,EAAO,CACfC,EAAO,MAAM,gCAAiC,CAAE,MAAAD,CAAA,CAAO,EACvDE,EAAUC,EAAE,iBAAkB,2BAA2B,CAAC,CAC3D,CACD,mBAICC,EAsBM,MAAA,KAAA,EArBLC,EAAA,EAAA,EAAAD,EAMgCE,SALG5B,EAAA,cAAc,cAAa,CAAtD6B,EAAcC,WADtB3B,EAMgC4B,EAAA,CAH9B,IAAKF,EAAa,MACV,WAAAf,EAAA,MAAWgB,CAAS,EAApB,sBAAAvB,GAAAO,EAAA,MAAWgB,CAAS,EAAAvB,EAC5B,UAAAuB,EACA,aAAAD,CAAA,4EAJS,CAAAG,EAAA,EAAAH,EAAa,MAAQ5B,EAAAO,CAAA,EAAkB,OAAM,CAAA,UAMxDyB,EAKYhC,EAAAiC,CAAA,EAAA,YAJFnB,EAAA,2CAAAA,EAAO,MAAAR,GACf,UAAW,GACX,WAAYN,EAAAwB,CAAA,EAAC,iBAAA,UAAA,EACb,QAAS,CAAA,KAAA,KAAA,IAAA,EACV,SAAA,EAAA,sCAEDQ,EAKWhC,EAAAkC,CAAA,EAAA,CAJT,UAAWpB,EAAA,MACZ,KAAA,GACC,QAAOG,CAAA,aACR,IAA0C,KAAvCjB,EAAAwB,CAAA,EAAC,iBAAA,eAAA,CAAA,EAAA,CAAA,CAAA"} \ No newline at end of file diff --git a/dist/AuthMechanismRsa-vXoEDo92.chunk.mjs.map.license b/dist/AuthMechanismRsa-2rFmvka_.chunk.mjs.map.license similarity index 100% rename from dist/AuthMechanismRsa-vXoEDo92.chunk.mjs.map.license rename to dist/AuthMechanismRsa-2rFmvka_.chunk.mjs.map.license diff --git a/dist/CommentView-Dwuq398x.chunk.mjs b/dist/CommentView-qR2-hI5y.chunk.mjs similarity index 89% rename from dist/CommentView-Dwuq398x.chunk.mjs rename to dist/CommentView-qR2-hI5y.chunk.mjs index 42d21272ae9d5..b23fc34ac068f 100644 --- a/dist/CommentView-Dwuq398x.chunk.mjs +++ b/dist/CommentView-qR2-hI5y.chunk.mjs @@ -1,5 +1,5 @@ -const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=[window.OC.filePath('', '', 'dist/index-DueKLP2f.chunk.mjs'),window.OC.filePath('', '', 'dist/index-Cp0kcsps.chunk.mjs'),window.OC.filePath('', '', 'dist/NcAvatar-1KxMUN7V-X_YNB4Fv.chunk.mjs'),window.OC.filePath('', '', 'dist/index-CkGt55pS.chunk.mjs'),window.OC.filePath('', '', 'dist/Web-DYqXJUev.chunk.mjs'),window.OC.filePath('', '', 'dist/public-C1mLBHT3.chunk.mjs'),window.OC.filePath('', '', 'dist/util-DBjHxD9z.chunk.mjs'),window.OC.filePath('', '', 'dist/NcModal-DiDvgcU8-7_SNLMd-.chunk.mjs'),window.OC.filePath('', '', 'dist/logger-D3RVzcfQ-Bt9JRPzn.chunk.mjs'),window.OC.filePath('', '', 'dist/createElementId-DhjFt1I9-BmyhoOWk.chunk.mjs'),window.OC.filePath('', '', 'dist/translation-DoG5ZELJ-WOan4U8V.chunk.mjs'),window.OC.filePath('', '', 'dist/common-createElementId-DhjFt1I9-C_oBIsvc.chunk.css'),window.OC.filePath('', '', 'dist/common-logger-D3RVzcfQ-Ks0gkIDB.chunk.css'),window.OC.filePath('', '', 'dist/common-NcModal-DiDvgcU8-B-yi1OwC.chunk.css'),window.OC.filePath('', '', 'dist/ArrowRight-CSlQTlWs.chunk.mjs'),window.OC.filePath('', '', 'dist/common-ArrowRight-DfvWJUh_.chunk.css'),window.OC.filePath('', '', 'dist/colors-Cv9F-jWS-BFJACjQq.chunk.mjs'),window.OC.filePath('', '', 'dist/NcUserStatusIcon-BF5OEQFU-Bh_IaQ_D.chunk.mjs'),window.OC.filePath('', '', 'dist/common-NcUserStatusIcon-BF5OEQFU-Bq_6hmXG.chunk.css'),window.OC.filePath('', '', 'dist/PencilOutline-DhyEf5vr.chunk.mjs'),window.OC.filePath('', '', 'dist/common-PencilOutline-B3DMd8SU.chunk.css'),window.OC.filePath('', '', 'dist/NcDateTime.vue_vue_type_script_setup_true_lang-BJuPH7S7-DKsF6FS9.chunk.mjs'),window.OC.filePath('', '', 'dist/common-NcDateTime-b9UhLDij.chunk.css'),window.OC.filePath('', '', 'dist/TrashCanOutline-BU3aqDG_.chunk.mjs'),window.OC.filePath('', '', 'dist/common-TrashCanOutline-BYHcrfvW.chunk.css'),window.OC.filePath('', '', 'dist/common-NcAvatar-1KxMUN7V-CIJAK_jb.chunk.css'),window.OC.filePath('', '', 'dist/emoji-C8k9NUlo-BQiX-d8c.chunk.mjs'),window.OC.filePath('', '', 'dist/index-D9CqvIri.chunk.mjs'),window.OC.filePath('', '', 'dist/NcCheckboxRadioSwitch-DVdt5Hkq-COYVxuqr.chunk.mjs'),window.OC.filePath('', '', 'dist/common-NcCheckboxRadioSwitch-DVdt5Hkq-Ct9ZGMmH.chunk.css'),window.OC.filePath('', '', 'dist/index-BDlLVKOD.chunk.mjs'),window.OC.filePath('', '', 'dist/common-index-BWhNCeJl.chunk.css'),window.OC.filePath('', '', 'dist/NcEmptyContent-CGAPqk4S-LFG8iXZZ.chunk.mjs'),window.OC.filePath('', '', 'dist/common-NcEmptyContent-CGAPqk4S-Don1d5Bd.chunk.css'),window.OC.filePath('', '', 'dist/NcTextField.vue_vue_type_script_setup_true_lang-Bx2esFU2-D61trFet.chunk.mjs'),window.OC.filePath('', '', 'dist/NcInputField-5Sg6EUP6-DXw-ZWiv.chunk.mjs'),window.OC.filePath('', '', 'dist/common-NcInputField-5Sg6EUP6-BYHxARP-.chunk.css'),window.OC.filePath('', '', 'dist/common-index-BBuXQ7OS.chunk.css'),window.OC.filePath('', '', 'dist/common-index-BBhtJjWD.chunk.css')])))=>i.map(i=>d[i]); -import{o as n,f as h,g as u,t as y,h as N,m as V,a as T,_ as v,r as c,J as U,K as W,c as p,w as m,k as d,F as H,j as _,L as J,y as w,C as K,b as Z}from"./Web-DYqXJUev.chunk.mjs";import{a as f,c as G}from"./index-Cp0kcsps.chunk.mjs";import{t as Q}from"./translation-DoG5ZELJ-WOan4U8V.chunk.mjs";import{d as X,m as A}from"./pinia-BsumPXOW.chunk.mjs";import{N as Y,P as ee}from"./PencilOutline-DhyEf5vr.chunk.mjs";import{b as te}from"./NcModal-DiDvgcU8-7_SNLMd-.chunk.mjs";/* empty css */import{_ as oe}from"./createElementId-DhjFt1I9-BmyhoOWk.chunk.mjs";import{N as ie}from"./NcAvatar-1KxMUN7V-X_YNB4Fv.chunk.mjs";import{N as se}from"./logger-D3RVzcfQ-Bt9JRPzn.chunk.mjs";import{_ as ae}from"./NcDateTime.vue_vue_type_script_setup_true_lang-BJuPH7S7-DKsF6FS9.chunk.mjs";import{N as re,D as ne}from"./TrashCanOutline-BU3aqDG_.chunk.mjs";import{N as ce}from"./NcUserBubble-BXR7vT0V-CXAEWnoj.chunk.mjs";import{A as me}from"./ArrowRight-CSlQTlWs.chunk.mjs";import{_ as S,l as de}from"./public-C1mLBHT3.chunk.mjs";import{a as I,T as le,f as ue}from"./index-mH69OG7L.chunk.mjs";import{l as g}from"./activity-BZ6xFlZg.chunk.mjs";import{c as D,a as pe}from"./GetComments-2IL7C9Us.chunk.mjs";import{c as x}from"./index-CkGt55pS.chunk.mjs";const he={name:"NcActionSeparator"},ge={class:"action action-separator action--disabled",role:"separator"};function ye(e,o,i,a,r,s){return n(),h("li",ge)}const fe=oe(he,[["render",ye],["__scopeId","data-v-3e2324b7"]]),be={name:"CloseIcon",emits:["click"],props:{title:{type:String},fillColor:{type:String,default:"currentColor"},size:{type:Number,default:24}}},Ce=["aria-hidden","aria-label"],_e=["fill","width","height"],Ie={d:"M19,6.41L17.59,5L12,10.59L6.41,5L5,6.41L10.59,12L5,17.59L6.41,19L12,13.41L17.59,19L19,17.59L13.41,12L19,6.41Z"},Ne={key:0};function De(e,o,i,a,r,s){return n(),h("span",V(e.$attrs,{"aria-hidden":i.title?null:"true","aria-label":i.title,class:"material-design-icon close-icon",role:"img",onClick:o[0]||(o[0]=b=>e.$emit("click",b))}),[(n(),h("svg",{fill:i.fillColor,class:"material-design-icon__svg",width:i.size,height:i.size,viewBox:"0 0 24 24"},[u("path",Ie,[i.title?(n(),h("title",Ne,y(i.title),1)):N("",!0)])],8,_e))],16,Ce)}const ke=S(be,[["render",De]]);async function we(e,o,i){const a=["",e,o,i].join("/");await D.deleteFile(a)}async function Le(e,o,i,a){const r=["",e,o,i].join("/");return await D.customRequest(r,{method:"PROPPATCH",data:` +const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=[window.OC.filePath('', '', 'dist/index-8LKFZV9o.chunk.mjs'),window.OC.filePath('', '', 'dist/index-Cp0kcsps.chunk.mjs'),window.OC.filePath('', '', 'dist/NcAvatar-1KxMUN7V-R6Nmwuvb.chunk.mjs'),window.OC.filePath('', '', 'dist/index-CkGt55pS.chunk.mjs'),window.OC.filePath('', '', 'dist/Web-DYqXJUev.chunk.mjs'),window.OC.filePath('', '', 'dist/public-C1mLBHT3.chunk.mjs'),window.OC.filePath('', '', 'dist/util-DBjHxD9z.chunk.mjs'),window.OC.filePath('', '', 'dist/NcModal-DiDvgcU8-Cb_C64qI.chunk.mjs'),window.OC.filePath('', '', 'dist/logger-D3RVzcfQ-BrUWOyzd.chunk.mjs'),window.OC.filePath('', '', 'dist/createElementId-DhjFt1I9-BmyhoOWk.chunk.mjs'),window.OC.filePath('', '', 'dist/translation-DoG5ZELJ-WOan4U8V.chunk.mjs'),window.OC.filePath('', '', 'dist/common-createElementId-DhjFt1I9-C_oBIsvc.chunk.css'),window.OC.filePath('', '', 'dist/common-logger-D3RVzcfQ-Ks0gkIDB.chunk.css'),window.OC.filePath('', '', 'dist/common-NcModal-DiDvgcU8-B-yi1OwC.chunk.css'),window.OC.filePath('', '', 'dist/ArrowRight-BCzIOZ0l.chunk.mjs'),window.OC.filePath('', '', 'dist/common-ArrowRight-DfvWJUh_.chunk.css'),window.OC.filePath('', '', 'dist/colors-Cv9F-jWS-BFJACjQq.chunk.mjs'),window.OC.filePath('', '', 'dist/NcUserStatusIcon-BF5OEQFU-pJ2xeKbO.chunk.mjs'),window.OC.filePath('', '', 'dist/common-NcUserStatusIcon-BF5OEQFU-Bq_6hmXG.chunk.css'),window.OC.filePath('', '', 'dist/PencilOutline-CA_ZiZlA.chunk.mjs'),window.OC.filePath('', '', 'dist/common-PencilOutline-B3DMd8SU.chunk.css'),window.OC.filePath('', '', 'dist/NcDateTime.vue_vue_type_script_setup_true_lang-BJuPH7S7-BThMWOZt.chunk.mjs'),window.OC.filePath('', '', 'dist/common-NcDateTime-b9UhLDij.chunk.css'),window.OC.filePath('', '', 'dist/TrashCanOutline-BU3aqDG_.chunk.mjs'),window.OC.filePath('', '', 'dist/common-TrashCanOutline-BYHcrfvW.chunk.css'),window.OC.filePath('', '', 'dist/common-NcAvatar-1KxMUN7V-CIJAK_jb.chunk.css'),window.OC.filePath('', '', 'dist/emoji-C8k9NUlo-BQiX-d8c.chunk.mjs'),window.OC.filePath('', '', 'dist/index-EuTrUPdZ.chunk.mjs'),window.OC.filePath('', '', 'dist/NcCheckboxRadioSwitch-DVdt5Hkq-COYVxuqr.chunk.mjs'),window.OC.filePath('', '', 'dist/common-NcCheckboxRadioSwitch-DVdt5Hkq-Ct9ZGMmH.chunk.css'),window.OC.filePath('', '', 'dist/index-BhwlPNkJ.chunk.mjs'),window.OC.filePath('', '', 'dist/common-index-BWhNCeJl.chunk.css'),window.OC.filePath('', '', 'dist/NcEmptyContent-CGAPqk4S-LFG8iXZZ.chunk.mjs'),window.OC.filePath('', '', 'dist/common-NcEmptyContent-CGAPqk4S-Don1d5Bd.chunk.css'),window.OC.filePath('', '', 'dist/NcTextField.vue_vue_type_script_setup_true_lang-Bx2esFU2-CGsfYqql.chunk.mjs'),window.OC.filePath('', '', 'dist/NcInputField-5Sg6EUP6-CUyzAC2j.chunk.mjs'),window.OC.filePath('', '', 'dist/common-NcInputField-5Sg6EUP6-BYHxARP-.chunk.css'),window.OC.filePath('', '', 'dist/common-index-BBuXQ7OS.chunk.css'),window.OC.filePath('', '', 'dist/common-index-BBhtJjWD.chunk.css')])))=>i.map(i=>d[i]); +import{o as n,f as h,g as u,t as y,h as N,m as V,a as T,_ as v,r as c,J as U,K as W,c as p,w as m,k as d,F as H,j as _,L as J,y as w,C as K,b as Z}from"./Web-DYqXJUev.chunk.mjs";import{a as f,c as G}from"./index-Cp0kcsps.chunk.mjs";import{t as Q}from"./translation-DoG5ZELJ-WOan4U8V.chunk.mjs";import{d as X,m as A}from"./pinia-BsumPXOW.chunk.mjs";import{N as Y,P as ee}from"./PencilOutline-CA_ZiZlA.chunk.mjs";import{b as te}from"./NcModal-DiDvgcU8-Cb_C64qI.chunk.mjs";/* empty css */import{_ as oe}from"./createElementId-DhjFt1I9-BmyhoOWk.chunk.mjs";import{N as ie}from"./NcAvatar-1KxMUN7V-R6Nmwuvb.chunk.mjs";import{N as se}from"./logger-D3RVzcfQ-BrUWOyzd.chunk.mjs";import{_ as ae}from"./NcDateTime.vue_vue_type_script_setup_true_lang-BJuPH7S7-BThMWOZt.chunk.mjs";import{N as re,D as ne}from"./TrashCanOutline-BU3aqDG_.chunk.mjs";import{N as ce}from"./NcUserBubble-BXR7vT0V-BaTRETFp.chunk.mjs";import{A as me}from"./ArrowRight-BCzIOZ0l.chunk.mjs";import{_ as S,l as de}from"./public-C1mLBHT3.chunk.mjs";import{a as I,T as le,f as ue}from"./index-BQu_HuHB.chunk.mjs";import{l as g}from"./activity-BZ6xFlZg.chunk.mjs";import{c as D,a as pe}from"./GetComments-2IL7C9Us.chunk.mjs";import{c as x}from"./index-CkGt55pS.chunk.mjs";const he={name:"NcActionSeparator"},ge={class:"action action-separator action--disabled",role:"separator"};function ye(e,o,i,a,r,s){return n(),h("li",ge)}const fe=oe(he,[["render",ye],["__scopeId","data-v-3e2324b7"]]),be={name:"CloseIcon",emits:["click"],props:{title:{type:String},fillColor:{type:String,default:"currentColor"},size:{type:Number,default:24}}},Ce=["aria-hidden","aria-label"],_e=["fill","width","height"],Ie={d:"M19,6.41L17.59,5L12,10.59L6.41,5L5,6.41L10.59,12L5,17.59L6.41,19L12,13.41L17.59,19L19,17.59L13.41,12L19,6.41Z"},Ne={key:0};function De(e,o,i,a,r,s){return n(),h("span",V(e.$attrs,{"aria-hidden":i.title?null:"true","aria-label":i.title,class:"material-design-icon close-icon",role:"img",onClick:o[0]||(o[0]=b=>e.$emit("click",b))}),[(n(),h("svg",{fill:i.fillColor,class:"material-design-icon__svg",width:i.size,height:i.size,viewBox:"0 0 24 24"},[u("path",Ie,[i.title?(n(),h("title",Ne,y(i.title),1)):N("",!0)])],8,_e))],16,Ce)}const ke=S(be,[["render",De]]);async function we(e,o,i){const a=["",e,o,i].join("/");await D.deleteFile(a)}async function Le(e,o,i,a){const r=["",e,o,i].join("/");return await D.customRequest(r,{method:"PROPPATCH",data:` @@ -8,5 +8,5 @@ import{o as n,f as h,g as u,t as y,h as N,m as V,a as T,_ as v,r as c,J as U,K a ${a} - `})}function L(e,o=1){const i=new DOMParser;let a=e;for(let r=0;r({idsInLimbo:[]}),actions:{addId(e){this.idsInLimbo.push(e)},removeId(e){const o=this.idsInLimbo.indexOf(e);o>-1&&this.idsInLimbo.splice(o,1)},checkForId(e){return this.idsInLimbo.includes(e)}}}),ve={props:{id:{type:Number,default:null},message:{type:String,default:""},resourceId:{type:[String,Number],required:!0},resourceType:{type:String,default:"files"}},data(){return{deleted:!1,editing:!1,loading:!1}},computed:{...A(M)},methods:{onEdit(){this.editing=!0},onEditCancel(){this.editing=!1,this.updateLocalMessage(this.message)},async onEditComment(e){this.loading=!0;try{await Le(this.resourceType,this.resourceId,this.id,e),g.debug("Comment edited",{resourceType:this.resourceType,resourceId:this.resourceId,id:this.id,message:e}),this.$emit("update:message",e),this.editing=!1}catch(o){I(t("comments","An error occurred while trying to edit the comment")),g.error("An error occurred while trying to edit the comment",{error:o})}finally{this.loading=!1}},onDeleteWithUndo(){this.$emit("delete"),this.deleted=!0,this.deletedCommentLimboStore.addId(this.id);const e=setTimeout(this.onDelete,le);ue(t("comments","Comment deleted"),()=>{clearTimeout(e),this.deleted=!1,this.deletedCommentLimboStore.removeId(this.id)})},async onDelete(){try{await we(this.resourceType,this.resourceId,this.id),g.debug("Comment deleted",{resourceType:this.resourceType,resourceId:this.resourceId,id:this.id}),this.$emit("delete",this.id)}catch(e){I(t("comments","An error occurred while trying to delete the comment")),g.error("An error occurred while trying to delete the comment",{error:e}),this.deleted=!1,this.deletedCommentLimboStore.removeId(this.id)}},async onNewComment(e){this.loading=!0;try{const o=await Te(this.resourceType,this.resourceId,e);g.debug("New comment posted",{resourceType:this.resourceType,resourceId:this.resourceId,newComment:o}),this.$emit("new",o),this.$emit("update:message",""),this.localMessage=""}catch(o){I(t("comments","An error occurred while trying to create the comment")),g.error("An error occurred while trying to create the comment",{error:o})}finally{this.loading=!1}}}},Ae=T(()=>v(()=>import("./index-DueKLP2f.chunk.mjs"),__vite__mapDeps([0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38]),import.meta.url)),Se=T(()=>v(()=>import("./index-D9CqvIri.chunk.mjs").then(e=>e.i),__vite__mapDeps([27,4,5,8,9,10,1,11,12,28,23,24,29,3,6,30,7,13,31,32,33,14,15,34,35,36,37]),import.meta.url)),xe={name:"Comment",components:{IconArrowRight:me,IconClose:ke,IconTrashCanOutline:ne,IconPencilOutline:ee,NcActionButton:Y,NcActions:te,NcActionSeparator:fe,NcAvatar:ie,NcButton:se,NcDateTime:ae,NcLoadingIcon:re,NcRichContenteditable:Ae,NcRichText:Se},mixins:[ve],inheritAttrs:!1,props:{actorDisplayName:{type:String,required:!0},actorId:{type:String,required:!0},creationDateTime:{type:String,default:null},editor:{type:Boolean,default:!1},autoComplete:{type:Function,required:!0},userData:{type:Object,default:()=>({})},tag:{type:String,default:"div"}},data(){return{expanded:!1,localMessage:"",submitted:!1}},computed:{...A(M),isOwnComment(){return f().uid===this.actorId},richContent(){const e={};let o=this.localMessage;return Object.keys(this.userData).forEach((i,a)=>{const r=`mention-${a}`,s=new RegExp(`@${i}|@"${i}"`,"g");o=o.replace(s,`{${r}}`),e[r]={component:ce,props:{user:i,displayName:this.userData[i].label,primary:this.userData[i].primary}}}),{mentions:e,message:o}},isEmptyMessage(){return!this.localMessage||this.localMessage.trim()===""},timestamp(){return Date.parse(this.creationDateTime)},isLimbo(){return this.deletedCommentLimboStore.checkForId(this.id)}},watch:{message(e){this.updateLocalMessage(e)}},beforeMount(){this.updateLocalMessage(this.message)},methods:{t:Q,updateLocalMessage(e){this.localMessage=e.toString(),this.submitted=!1},onSubmit(){if(this.localMessage.trim()!==""){if(this.editor){this.onNewComment(this.localMessage.trim()),this.$nextTick(()=>{this.$refs.editor.$el.focus()});return}this.onEditComment(this.localMessage.trim())}},onExpand(){this.expanded=!0}}},Me={class:"comment__side"},Ee={class:"comment__body"},Oe={class:"comment__header"},Re={class:"comment__author"},$e={key:1,class:"comment_loading icon-loading-small"},je={class:"comment__editor-group"},Pe={class:"comment__submit"},ze={id:"tab-comments__editor-description",class:"comment__editor-description"};function qe(e,o,i,a,r,s){const b=c("NcAvatar"),C=c("IconPencilOutline"),l=c("NcActionButton"),E=c("NcActionSeparator"),O=c("IconTrashCanOutline"),R=c("IconClose"),$=c("NcActions"),j=c("NcDateTime"),P=c("NcRichContenteditable"),z=c("NcLoadingIcon"),q=c("IconArrowRight"),B=c("NcButton"),F=c("NcRichText");return U((n(),p(K(i.tag),{class:w([{"comment--loading":e.loading},"comment"])},{default:m(()=>[u("div",Me,[d(b,{class:"comment__avatar",displayName:i.actorDisplayName,user:i.actorId,size:32},null,8,["displayName","user"])]),u("div",Ee,[u("div",Oe,[u("span",Re,y(i.actorDisplayName),1),s.isOwnComment&&e.id&&!e.loading?(n(),p($,{key:0,class:"comment__actions"},{default:m(()=>[e.editing?(n(),p(l,{key:1,onClick:e.onEditCancel},{icon:m(()=>[d(R,{size:20})]),default:m(()=>[_(" "+y(s.t("comments","Cancel edit")),1)]),_:1},8,["onClick"])):(n(),h(H,{key:0},[d(l,{closeAfterClick:"",onClick:e.onEdit},{icon:m(()=>[d(C,{size:20})]),default:m(()=>[_(" "+y(s.t("comments","Edit comment")),1)]),_:1},8,["onClick"]),d(E),d(l,{closeAfterClick:"",onClick:e.onDeleteWithUndo},{icon:m(()=>[d(O,{size:20})]),default:m(()=>[_(" "+y(s.t("comments","Delete comment")),1)]),_:1},8,["onClick"])],64))]),_:1})):N("",!0),e.id&&e.loading?(n(),h("div",$e)):i.creationDateTime?(n(),p(j,{key:2,class:"comment__timestamp",timestamp:s.timestamp,ignoreSeconds:!0},null,8,["timestamp"])):N("",!0)]),i.editor||e.editing?(n(),h("form",{key:0,class:"comment__editor",onSubmit:o[2]||(o[2]=J(()=>{},["prevent"]))},[u("div",je,[d(P,{ref:"editor",modelValue:r.localMessage,"onUpdate:modelValue":[o[0]||(o[0]=k=>r.localMessage=k),o[1]||(o[1]=k=>r.submitted=!1)],autoComplete:i.autoComplete,contenteditable:!e.loading,label:i.editor?s.t("comments","New comment"):s.t("comments","Edit comment"),placeholder:s.t("comments","Write a comment …"),userData:i.userData,"aria-describedby":"tab-comments__editor-description",onSubmit:s.onSubmit},null,8,["modelValue","autoComplete","contenteditable","label","placeholder","userData","onSubmit"]),u("div",Pe,[d(B,{variant:"tertiary-no-background",type:"submit","aria-label":s.t("comments","Post comment"),disabled:s.isEmptyMessage,onClick:s.onSubmit},{icon:m(()=>[e.loading?(n(),p(z,{key:0})):(n(),p(q,{key:1,size:20}))]),_:1},8,["aria-label","disabled","onClick"])])]),u("div",ze,y(s.t("comments","@ for mentions, : for emoji, / for smart picker")),1)],32)):(n(),p(F,{key:1,class:w(["comment__message",{"comment__message--expanded":r.expanded}]),text:s.richContent.message,arguments:s.richContent.mentions,useMarkdown:"",onClick:s.onExpand},null,8,["class","text","arguments","onClick"]))])]),_:1},8,["class"])),[[W,!e.deleted&&!s.isLimbo]])}const rt=S(xe,[["render",qe],["__scopeId","data-v-767e5a19"]]),nt=Z({props:{resourceId:{type:Number,required:!0},resourceType:{type:String,default:"files"}},data(){return{editorData:{actorDisplayName:f().displayName,actorId:f().uid,key:"editor"},userData:{},currentResourceId:this.resourceId}},methods:{async autoComplete(e,o){const{data:i}=await x.get(G("core/autocomplete/get"),{params:{search:e,itemType:this.resourceType,itemId:this.currentResourceId,sorter:"commenters|share-recipients",limit:de("comments","maxAutoCompleteResults")}});return i.ocs.data.forEach(a=>{this.userData[a.id]=a}),o(Object.values(this.userData))},genMentionsData(e){return Object.values(e).flat().forEach(o=>{this.userData[o.mentionId]={icon:"icon-user",id:o.mentionId,label:o.mentionDisplayName,source:"users",primary:f()?.uid===o.mentionId}}),this.userData}}});export{nt as C,rt as a}; -//# sourceMappingURL=CommentView-Dwuq398x.chunk.mjs.map + `})}function L(e,o=1){const i=new DOMParser;let a=e;for(let r=0;r({idsInLimbo:[]}),actions:{addId(e){this.idsInLimbo.push(e)},removeId(e){const o=this.idsInLimbo.indexOf(e);o>-1&&this.idsInLimbo.splice(o,1)},checkForId(e){return this.idsInLimbo.includes(e)}}}),ve={props:{id:{type:Number,default:null},message:{type:String,default:""},resourceId:{type:[String,Number],required:!0},resourceType:{type:String,default:"files"}},data(){return{deleted:!1,editing:!1,loading:!1}},computed:{...A(M)},methods:{onEdit(){this.editing=!0},onEditCancel(){this.editing=!1,this.updateLocalMessage(this.message)},async onEditComment(e){this.loading=!0;try{await Le(this.resourceType,this.resourceId,this.id,e),g.debug("Comment edited",{resourceType:this.resourceType,resourceId:this.resourceId,id:this.id,message:e}),this.$emit("update:message",e),this.editing=!1}catch(o){I(t("comments","An error occurred while trying to edit the comment")),g.error("An error occurred while trying to edit the comment",{error:o})}finally{this.loading=!1}},onDeleteWithUndo(){this.$emit("delete"),this.deleted=!0,this.deletedCommentLimboStore.addId(this.id);const e=setTimeout(this.onDelete,le);ue(t("comments","Comment deleted"),()=>{clearTimeout(e),this.deleted=!1,this.deletedCommentLimboStore.removeId(this.id)})},async onDelete(){try{await we(this.resourceType,this.resourceId,this.id),g.debug("Comment deleted",{resourceType:this.resourceType,resourceId:this.resourceId,id:this.id}),this.$emit("delete",this.id)}catch(e){I(t("comments","An error occurred while trying to delete the comment")),g.error("An error occurred while trying to delete the comment",{error:e}),this.deleted=!1,this.deletedCommentLimboStore.removeId(this.id)}},async onNewComment(e){this.loading=!0;try{const o=await Te(this.resourceType,this.resourceId,e);g.debug("New comment posted",{resourceType:this.resourceType,resourceId:this.resourceId,newComment:o}),this.$emit("new",o),this.$emit("update:message",""),this.localMessage=""}catch(o){I(t("comments","An error occurred while trying to create the comment")),g.error("An error occurred while trying to create the comment",{error:o})}finally{this.loading=!1}}}},Ae=T(()=>v(()=>import("./index-8LKFZV9o.chunk.mjs"),__vite__mapDeps([0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38]),import.meta.url)),Se=T(()=>v(()=>import("./index-EuTrUPdZ.chunk.mjs").then(e=>e.i),__vite__mapDeps([27,4,5,8,9,10,1,11,12,28,23,24,29,3,6,30,7,13,31,32,33,14,15,34,35,36,37]),import.meta.url)),xe={name:"Comment",components:{IconArrowRight:me,IconClose:ke,IconTrashCanOutline:ne,IconPencilOutline:ee,NcActionButton:Y,NcActions:te,NcActionSeparator:fe,NcAvatar:ie,NcButton:se,NcDateTime:ae,NcLoadingIcon:re,NcRichContenteditable:Ae,NcRichText:Se},mixins:[ve],inheritAttrs:!1,props:{actorDisplayName:{type:String,required:!0},actorId:{type:String,required:!0},creationDateTime:{type:String,default:null},editor:{type:Boolean,default:!1},autoComplete:{type:Function,required:!0},userData:{type:Object,default:()=>({})},tag:{type:String,default:"div"}},data(){return{expanded:!1,localMessage:"",submitted:!1}},computed:{...A(M),isOwnComment(){return f().uid===this.actorId},richContent(){const e={};let o=this.localMessage;return Object.keys(this.userData).forEach((i,a)=>{const r=`mention-${a}`,s=new RegExp(`@${i}|@"${i}"`,"g");o=o.replace(s,`{${r}}`),e[r]={component:ce,props:{user:i,displayName:this.userData[i].label,primary:this.userData[i].primary}}}),{mentions:e,message:o}},isEmptyMessage(){return!this.localMessage||this.localMessage.trim()===""},timestamp(){return Date.parse(this.creationDateTime)},isLimbo(){return this.deletedCommentLimboStore.checkForId(this.id)}},watch:{message(e){this.updateLocalMessage(e)}},beforeMount(){this.updateLocalMessage(this.message)},methods:{t:Q,updateLocalMessage(e){this.localMessage=e.toString(),this.submitted=!1},onSubmit(){if(this.localMessage.trim()!==""){if(this.editor){this.onNewComment(this.localMessage.trim()),this.$nextTick(()=>{this.$refs.editor.$el.focus()});return}this.onEditComment(this.localMessage.trim())}},onExpand(){this.expanded=!0}}},Me={class:"comment__side"},Ee={class:"comment__body"},Oe={class:"comment__header"},Re={class:"comment__author"},$e={key:1,class:"comment_loading icon-loading-small"},je={class:"comment__editor-group"},Pe={class:"comment__submit"},ze={id:"tab-comments__editor-description",class:"comment__editor-description"};function qe(e,o,i,a,r,s){const b=c("NcAvatar"),C=c("IconPencilOutline"),l=c("NcActionButton"),E=c("NcActionSeparator"),O=c("IconTrashCanOutline"),R=c("IconClose"),$=c("NcActions"),j=c("NcDateTime"),P=c("NcRichContenteditable"),z=c("NcLoadingIcon"),q=c("IconArrowRight"),B=c("NcButton"),F=c("NcRichText");return U((n(),p(K(i.tag),{class:w([{"comment--loading":e.loading},"comment"])},{default:m(()=>[u("div",Me,[d(b,{class:"comment__avatar",displayName:i.actorDisplayName,user:i.actorId,size:32},null,8,["displayName","user"])]),u("div",Ee,[u("div",Oe,[u("span",Re,y(i.actorDisplayName),1),s.isOwnComment&&e.id&&!e.loading?(n(),p($,{key:0,class:"comment__actions"},{default:m(()=>[e.editing?(n(),p(l,{key:1,onClick:e.onEditCancel},{icon:m(()=>[d(R,{size:20})]),default:m(()=>[_(" "+y(s.t("comments","Cancel edit")),1)]),_:1},8,["onClick"])):(n(),h(H,{key:0},[d(l,{closeAfterClick:"",onClick:e.onEdit},{icon:m(()=>[d(C,{size:20})]),default:m(()=>[_(" "+y(s.t("comments","Edit comment")),1)]),_:1},8,["onClick"]),d(E),d(l,{closeAfterClick:"",onClick:e.onDeleteWithUndo},{icon:m(()=>[d(O,{size:20})]),default:m(()=>[_(" "+y(s.t("comments","Delete comment")),1)]),_:1},8,["onClick"])],64))]),_:1})):N("",!0),e.id&&e.loading?(n(),h("div",$e)):i.creationDateTime?(n(),p(j,{key:2,class:"comment__timestamp",timestamp:s.timestamp,ignoreSeconds:!0},null,8,["timestamp"])):N("",!0)]),i.editor||e.editing?(n(),h("form",{key:0,class:"comment__editor",onSubmit:o[2]||(o[2]=J(()=>{},["prevent"]))},[u("div",je,[d(P,{ref:"editor",modelValue:r.localMessage,"onUpdate:modelValue":[o[0]||(o[0]=k=>r.localMessage=k),o[1]||(o[1]=k=>r.submitted=!1)],autoComplete:i.autoComplete,contenteditable:!e.loading,label:i.editor?s.t("comments","New comment"):s.t("comments","Edit comment"),placeholder:s.t("comments","Write a comment …"),userData:i.userData,"aria-describedby":"tab-comments__editor-description",onSubmit:s.onSubmit},null,8,["modelValue","autoComplete","contenteditable","label","placeholder","userData","onSubmit"]),u("div",Pe,[d(B,{variant:"tertiary-no-background",type:"submit","aria-label":s.t("comments","Post comment"),disabled:s.isEmptyMessage,onClick:s.onSubmit},{icon:m(()=>[e.loading?(n(),p(z,{key:0})):(n(),p(q,{key:1,size:20}))]),_:1},8,["aria-label","disabled","onClick"])])]),u("div",ze,y(s.t("comments","@ for mentions, : for emoji, / for smart picker")),1)],32)):(n(),p(F,{key:1,class:w(["comment__message",{"comment__message--expanded":r.expanded}]),text:s.richContent.message,arguments:s.richContent.mentions,useMarkdown:"",onClick:s.onExpand},null,8,["class","text","arguments","onClick"]))])]),_:1},8,["class"])),[[W,!e.deleted&&!s.isLimbo]])}const rt=S(xe,[["render",qe],["__scopeId","data-v-767e5a19"]]),nt=Z({props:{resourceId:{type:Number,required:!0},resourceType:{type:String,default:"files"}},data(){return{editorData:{actorDisplayName:f().displayName,actorId:f().uid,key:"editor"},userData:{},currentResourceId:this.resourceId}},methods:{async autoComplete(e,o){const{data:i}=await x.get(G("core/autocomplete/get"),{params:{search:e,itemType:this.resourceType,itemId:this.currentResourceId,sorter:"commenters|share-recipients",limit:de("comments","maxAutoCompleteResults")}});return i.ocs.data.forEach(a=>{this.userData[a.id]=a}),o(Object.values(this.userData))},genMentionsData(e){return Object.values(e).flat().forEach(o=>{this.userData[o.mentionId]={icon:"icon-user",id:o.mentionId,label:o.mentionDisplayName,source:"users",primary:f()?.uid===o.mentionId}}),this.userData}}});export{nt as C,rt as a}; +//# sourceMappingURL=CommentView-qR2-hI5y.chunk.mjs.map diff --git a/dist/CommentView-Dwuq398x.chunk.mjs.license b/dist/CommentView-qR2-hI5y.chunk.mjs.license similarity index 100% rename from dist/CommentView-Dwuq398x.chunk.mjs.license rename to dist/CommentView-qR2-hI5y.chunk.mjs.license diff --git a/dist/CommentView-Dwuq398x.chunk.mjs.map b/dist/CommentView-qR2-hI5y.chunk.mjs.map similarity index 99% rename from dist/CommentView-Dwuq398x.chunk.mjs.map rename to dist/CommentView-qR2-hI5y.chunk.mjs.map index 6f5da5f76670b..01a80cb93332e 100644 --- a/dist/CommentView-Dwuq398x.chunk.mjs.map +++ b/dist/CommentView-qR2-hI5y.chunk.mjs.map @@ -1 +1 @@ -{"version":3,"mappings":"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","names":["_sfc_main","_hoisted_1","_sfc_render","_ctx","_cache","$props","$setup","$data","$options","openBlock","createElementBlock","NcActionSeparator","_export_sfc","_hoisted_3","_createElementBlock","_mergeProps","$event","_createElementVNode","_openBlock","DeleteComment","resourceType","resourceId","commentId","commentPath","client","EditComment","message","decodeHtmlEntities","value","passes","parser","decoded","i","NewComment","resourcePath","response","axios","getRootPath","getCurrentUser","comment","props","useDeletedCommentLimbo","defineStore","id","index","CommentMixin","mapStores","logger","error","showError","timeOutDelete","TOAST_UNDO_TIMEOUT","showUndo","newComment","NcRichContenteditable","defineAsyncComponent","NcRichText","n","IconArrowRight","IconClose","IconTrashCanOutline","IconPencilOutline","NcActionButton","NcActions","NcAvatar","NcButton","NcDateTime","NcLoadingIcon","mentions","user","key","regex","NcUserBubble","t","_hoisted_2","_hoisted_4","_hoisted_6","_hoisted_7","_withDirectives","_createBlock","_resolveDynamicComponent","_normalizeClass","_createVNode","_component_NcAvatar","_toDisplayString","_component_NcActions","_component_NcActionButton","_component_IconClose","_createTextVNode","_Fragment","_component_IconPencilOutline","_component_NcActionSeparator","_component_IconTrashCanOutline","_hoisted_5","_component_NcDateTime","_component_NcRichContenteditable","_component_NcButton","_component_NcLoadingIcon","_component_IconArrowRight","_hoisted_8","_component_NcRichText","_vShow","CommentView","defineComponent","search","callback","data","generateOcsUrl","loadState","mention"],"ignoreList":[0,1],"sources":["../node_modules/@nextcloud/vue/dist/chunks/NcActionSeparator-B9pNQaji.mjs","../node_modules/vue-material-design-icons/Close.vue","../build/frontend/apps/comments/src/services/DeleteComment.ts","../build/frontend/apps/comments/src/services/EditComment.ts","../build/frontend/apps/comments/src/utils/decodeHtmlEntities.ts","../build/frontend/apps/comments/src/services/NewComment.ts","../build/frontend/apps/comments/src/store/deletedCommentLimbo.ts","../build/frontend/apps/comments/src/mixins/CommentMixin.ts","../build/frontend/apps/comments/src/components/Comment.vue","../build/frontend/apps/comments/src/mixins/CommentView.ts"],"sourcesContent":["import '../assets/NcActionSeparator-Ct2RnclR.css';\nimport { openBlock, createElementBlock } from \"vue\";\nimport { _ as _export_sfc } from \"./_plugin-vue_export-helper-1tPrXgE0.mjs\";\nconst _sfc_main = {\n name: \"NcActionSeparator\"\n};\nconst _hoisted_1 = {\n class: \"action action-separator action--disabled\",\n role: \"separator\"\n};\nfunction _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {\n return openBlock(), createElementBlock(\"li\", _hoisted_1);\n}\nconst NcActionSeparator = /* @__PURE__ */ _export_sfc(_sfc_main, [[\"render\", _sfc_render], [\"__scopeId\", \"data-v-3e2324b7\"]]);\nexport {\n NcActionSeparator as N\n};\n//# sourceMappingURL=NcActionSeparator-B9pNQaji.mjs.map\n","\n\n","/**\n * SPDX-FileCopyrightText: 2020 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport client from './DavClient.ts'\n\n/**\n * Delete a comment\n *\n * @param resourceType the resource type\n * @param resourceId the resource ID\n * @param commentId the comment iD\n */\nexport default async function(resourceType: string, resourceId: number, commentId: number) {\n\tconst commentPath = ['', resourceType, resourceId, commentId].join('/')\n\n\t// Fetch newly created comment data\n\tawait client.deleteFile(commentPath)\n}\n","/**\n * SPDX-FileCopyrightText: 2020 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport client from './DavClient.ts'\n\n/**\n * Edit an existing comment\n *\n * @param resourceType the resource type\n * @param resourceId the resource ID\n * @param commentId the comment iD\n * @param message the message content\n */\nexport default async function(resourceType: string, resourceId: number, commentId: number, message: string) {\n\tconst commentPath = ['', resourceType, resourceId, commentId].join('/')\n\n\treturn await client.customRequest(commentPath, {\n\t\tmethod: 'PROPPATCH',\n\t\tdata: `\n\t\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\t\t${message}\n\t\t\t\t\n\t\t\t\n\t\t\t`,\n\t})\n}\n","/**\n * SPDX-FileCopyrightText: 2021 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\n/**\n * @param value - the string to decode\n * @param passes - the number of times to decode the string, default is 1\n */\nexport function decodeHtmlEntities(value: string, passes = 1) {\n\tconst parser = new DOMParser()\n\tlet decoded = value\n\tfor (let i = 0; i < passes; i++) {\n\t\tdecoded = parser.parseFromString(decoded, 'text/html').documentElement.textContent\n\t}\n\treturn decoded\n}\n","/**\n * SPDX-FileCopyrightText: 2020 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport { getCurrentUser } from '@nextcloud/auth'\nimport axios from '@nextcloud/axios'\nimport { getRootPath } from '../utils/davUtils.ts'\nimport { decodeHtmlEntities } from '../utils/decodeHtmlEntities.ts'\nimport client from './DavClient.ts'\n\n/**\n * Retrieve the comments list\n *\n * @param resourceType the resource type\n * @param resourceId the resource ID\n * @param message the message\n * @return The new comment\n */\nexport default async function(resourceType: string, resourceId: number, message: string) {\n\tconst resourcePath = ['', resourceType, resourceId].join('/')\n\n\tconst response = await axios.post(getRootPath() + resourcePath, {\n\t\tactorDisplayName: getCurrentUser()!.displayName,\n\t\tactorId: getCurrentUser()!.uid,\n\t\tactorType: 'users',\n\t\tcreationDateTime: (new Date()).toUTCString(),\n\t\tmessage,\n\t\tobjectType: resourceType,\n\t\tverb: 'comment',\n\t})\n\n\t// Retrieve comment id from resource location\n\tconst commentId = parseInt(response.headers['content-location'].split('/').pop())\n\tconst commentPath = resourcePath + '/' + commentId\n\n\t// Fetch newly created comment data\n\tconst comment = await client.stat(commentPath, {\n\t\tdetails: true,\n\t})\n\n\tconst props = comment.data.props\n\t// Decode twice to handle potentially double-encoded entities\n\t// FIXME Remove this once https://github.com/nextcloud/server/issues/29306\n\t// is resolved\n\tprops.actorDisplayName = decodeHtmlEntities(props.actorDisplayName, 2)\n\tprops.message = decodeHtmlEntities(props.message, 2)\n\n\treturn comment.data\n}\n","/**\n * SPDX-FileCopyrightText: 2024 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport { defineStore } from 'pinia'\n\nexport const useDeletedCommentLimbo = defineStore('deletedCommentLimbo', {\n\tstate: () => ({\n\t\tidsInLimbo: [],\n\t}),\n\tactions: {\n\t\taddId(id) {\n\t\t\tthis.idsInLimbo.push(id)\n\t\t},\n\n\t\tremoveId(id) {\n\t\t\tconst index = this.idsInLimbo.indexOf(id)\n\t\t\tif (index > -1) {\n\t\t\t\tthis.idsInLimbo.splice(index, 1)\n\t\t\t}\n\t\t},\n\n\t\tcheckForId(id) {\n\t\t\treturn this.idsInLimbo.includes(id)\n\t\t},\n\t},\n})\n","/**\n * SPDX-FileCopyrightText: 2020 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport { showError, showUndo, TOAST_UNDO_TIMEOUT } from '@nextcloud/dialogs'\nimport { mapStores } from 'pinia'\nimport logger from '../logger.ts'\nimport DeleteComment from '../services/DeleteComment.ts'\nimport EditComment from '../services/EditComment.ts'\nimport NewComment from '../services/NewComment.ts'\nimport { useDeletedCommentLimbo } from '../store/deletedCommentLimbo.ts'\n\nexport default {\n\tprops: {\n\t\tid: {\n\t\t\ttype: Number,\n\t\t\tdefault: null,\n\t\t},\n\t\tmessage: {\n\t\t\ttype: String,\n\t\t\tdefault: '',\n\t\t},\n\t\tresourceId: {\n\t\t\ttype: [String, Number],\n\t\t\trequired: true,\n\t\t},\n\t\tresourceType: {\n\t\t\ttype: String,\n\t\t\tdefault: 'files',\n\t\t},\n\t},\n\n\tdata() {\n\t\treturn {\n\t\t\tdeleted: false,\n\t\t\tediting: false,\n\t\t\tloading: false,\n\t\t}\n\t},\n\n\tcomputed: {\n\t\t...mapStores(useDeletedCommentLimbo),\n\t},\n\n\tmethods: {\n\t\t// EDITION\n\t\tonEdit() {\n\t\t\tthis.editing = true\n\t\t},\n\t\tonEditCancel() {\n\t\t\tthis.editing = false\n\t\t\t// Restore original value\n\t\t\tthis.updateLocalMessage(this.message)\n\t\t},\n\t\tasync onEditComment(message) {\n\t\t\tthis.loading = true\n\t\t\ttry {\n\t\t\t\tawait EditComment(this.resourceType, this.resourceId, this.id, message)\n\t\t\t\tlogger.debug('Comment edited', { resourceType: this.resourceType, resourceId: this.resourceId, id: this.id, message })\n\t\t\t\tthis.$emit('update:message', message)\n\t\t\t\tthis.editing = false\n\t\t\t} catch (error) {\n\t\t\t\tshowError(t('comments', 'An error occurred while trying to edit the comment'))\n\t\t\t\tlogger.error('An error occurred while trying to edit the comment', { error })\n\t\t\t} finally {\n\t\t\t\tthis.loading = false\n\t\t\t}\n\t\t},\n\n\t\t// DELETION\n\t\tonDeleteWithUndo() {\n\t\t\tthis.$emit('delete')\n\t\t\tthis.deleted = true\n\t\t\tthis.deletedCommentLimboStore.addId(this.id)\n\t\t\tconst timeOutDelete = setTimeout(this.onDelete, TOAST_UNDO_TIMEOUT)\n\t\t\tshowUndo(t('comments', 'Comment deleted'), () => {\n\t\t\t\tclearTimeout(timeOutDelete)\n\t\t\t\tthis.deleted = false\n\t\t\t\tthis.deletedCommentLimboStore.removeId(this.id)\n\t\t\t})\n\t\t},\n\t\tasync onDelete() {\n\t\t\ttry {\n\t\t\t\tawait DeleteComment(this.resourceType, this.resourceId, this.id)\n\t\t\t\tlogger.debug('Comment deleted', { resourceType: this.resourceType, resourceId: this.resourceId, id: this.id })\n\t\t\t\tthis.$emit('delete', this.id)\n\t\t\t} catch (error) {\n\t\t\t\tshowError(t('comments', 'An error occurred while trying to delete the comment'))\n\t\t\t\tlogger.error('An error occurred while trying to delete the comment', { error })\n\t\t\t\tthis.deleted = false\n\t\t\t\tthis.deletedCommentLimboStore.removeId(this.id)\n\t\t\t}\n\t\t},\n\n\t\t// CREATION\n\t\tasync onNewComment(message) {\n\t\t\tthis.loading = true\n\t\t\ttry {\n\t\t\t\tconst newComment = await NewComment(this.resourceType, this.resourceId, message)\n\t\t\t\tlogger.debug('New comment posted', { resourceType: this.resourceType, resourceId: this.resourceId, newComment })\n\t\t\t\tthis.$emit('new', newComment)\n\n\t\t\t\t// Clear old content\n\t\t\t\tthis.$emit('update:message', '')\n\t\t\t\tthis.localMessage = ''\n\t\t\t} catch (error) {\n\t\t\t\tshowError(t('comments', 'An error occurred while trying to create the comment'))\n\t\t\t\tlogger.error('An error occurred while trying to create the comment', { error })\n\t\t\t} finally {\n\t\t\t\tthis.loading = false\n\t\t\t}\n\t\t},\n\t},\n}\n","\n\n\n\n\n\n","/*!\n * SPDX-FileCopyrightText: 2023 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport { getCurrentUser } from '@nextcloud/auth'\nimport axios from '@nextcloud/axios'\nimport { loadState } from '@nextcloud/initial-state'\nimport { generateOcsUrl } from '@nextcloud/router'\nimport { defineComponent } from 'vue'\n\nexport default defineComponent({\n\tprops: {\n\t\tresourceId: {\n\t\t\ttype: Number,\n\t\t\trequired: true,\n\t\t},\n\t\tresourceType: {\n\t\t\ttype: String,\n\t\t\tdefault: 'files',\n\t\t},\n\t},\n\tdata() {\n\t\treturn {\n\t\t\teditorData: {\n\t\t\t\tactorDisplayName: getCurrentUser()!.displayName as string,\n\t\t\t\tactorId: getCurrentUser()!.uid as string,\n\t\t\t\tkey: 'editor',\n\t\t\t},\n\t\t\tuserData: {},\n\t\t\tcurrentResourceId: this.resourceId,\n\t\t}\n\t},\n\tmethods: {\n\t\t/**\n\t\t * Autocomplete `@mentions`\n\t\t *\n\t\t * @param search the query\n\t\t * @param callback the callback to process the results with\n\t\t */\n\t\tasync autoComplete(search, callback) {\n\t\t\tconst { data } = await axios.get(generateOcsUrl('core/autocomplete/get'), {\n\t\t\t\tparams: {\n\t\t\t\t\tsearch,\n\t\t\t\t\titemType: this.resourceType,\n\t\t\t\t\titemId: this.currentResourceId,\n\t\t\t\t\tsorter: 'commenters|share-recipients',\n\t\t\t\t\tlimit: loadState('comments', 'maxAutoCompleteResults'),\n\t\t\t\t},\n\t\t\t})\n\t\t\t// Save user data so it can be used by the editor to replace mentions\n\t\t\tdata.ocs.data.forEach((user) => {\n\t\t\t\tthis.userData[user.id] = user\n\t\t\t})\n\t\t\treturn callback(Object.values(this.userData))\n\t\t},\n\n\t\t/**\n\t\t * Make sure we have all mentions as Array of objects\n\t\t *\n\t\t * @param mentions the mentions list\n\t\t */\n\t\t// eslint-disable-next-line @typescript-eslint/no-explicit-any\n\t\tgenMentionsData(mentions: any[]): Record {\n\t\t\tObject.values(mentions)\n\t\t\t\t.flat()\n\t\t\t\t.forEach((mention) => {\n\t\t\t\t\tthis.userData[mention.mentionId] = {\n\t\t\t\t\t\t// TODO: support groups\n\t\t\t\t\t\ticon: 'icon-user',\n\t\t\t\t\t\tid: mention.mentionId,\n\t\t\t\t\t\tlabel: mention.mentionDisplayName,\n\t\t\t\t\t\tsource: 'users',\n\t\t\t\t\t\tprimary: getCurrentUser()?.uid === mention.mentionId,\n\t\t\t\t\t}\n\t\t\t\t})\n\t\t\treturn this.userData\n\t\t},\n\t},\n})\n"],"file":"CommentView-Dwuq398x.chunk.mjs"} \ No newline at end of file +{"version":3,"mappings":"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","names":["_sfc_main","_hoisted_1","_sfc_render","_ctx","_cache","$props","$setup","$data","$options","openBlock","createElementBlock","NcActionSeparator","_export_sfc","_hoisted_3","_createElementBlock","_mergeProps","$event","_createElementVNode","_openBlock","DeleteComment","resourceType","resourceId","commentId","commentPath","client","EditComment","message","decodeHtmlEntities","value","passes","parser","decoded","i","NewComment","resourcePath","response","axios","getRootPath","getCurrentUser","comment","props","useDeletedCommentLimbo","defineStore","id","index","CommentMixin","mapStores","logger","error","showError","timeOutDelete","TOAST_UNDO_TIMEOUT","showUndo","newComment","NcRichContenteditable","defineAsyncComponent","NcRichText","n","IconArrowRight","IconClose","IconTrashCanOutline","IconPencilOutline","NcActionButton","NcActions","NcAvatar","NcButton","NcDateTime","NcLoadingIcon","mentions","user","key","regex","NcUserBubble","t","_hoisted_2","_hoisted_4","_hoisted_6","_hoisted_7","_withDirectives","_createBlock","_resolveDynamicComponent","_normalizeClass","_createVNode","_component_NcAvatar","_toDisplayString","_component_NcActions","_component_NcActionButton","_component_IconClose","_createTextVNode","_Fragment","_component_IconPencilOutline","_component_NcActionSeparator","_component_IconTrashCanOutline","_hoisted_5","_component_NcDateTime","_component_NcRichContenteditable","_component_NcButton","_component_NcLoadingIcon","_component_IconArrowRight","_hoisted_8","_component_NcRichText","_vShow","CommentView","defineComponent","search","callback","data","generateOcsUrl","loadState","mention"],"ignoreList":[0,1],"sources":["../node_modules/@nextcloud/vue/dist/chunks/NcActionSeparator-B9pNQaji.mjs","../node_modules/vue-material-design-icons/Close.vue","../build/frontend/apps/comments/src/services/DeleteComment.ts","../build/frontend/apps/comments/src/services/EditComment.ts","../build/frontend/apps/comments/src/utils/decodeHtmlEntities.ts","../build/frontend/apps/comments/src/services/NewComment.ts","../build/frontend/apps/comments/src/store/deletedCommentLimbo.ts","../build/frontend/apps/comments/src/mixins/CommentMixin.ts","../build/frontend/apps/comments/src/components/Comment.vue","../build/frontend/apps/comments/src/mixins/CommentView.ts"],"sourcesContent":["import '../assets/NcActionSeparator-Ct2RnclR.css';\nimport { openBlock, createElementBlock } from \"vue\";\nimport { _ as _export_sfc } from \"./_plugin-vue_export-helper-1tPrXgE0.mjs\";\nconst _sfc_main = {\n name: \"NcActionSeparator\"\n};\nconst _hoisted_1 = {\n class: \"action action-separator action--disabled\",\n role: \"separator\"\n};\nfunction _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {\n return openBlock(), createElementBlock(\"li\", _hoisted_1);\n}\nconst NcActionSeparator = /* @__PURE__ */ _export_sfc(_sfc_main, [[\"render\", _sfc_render], [\"__scopeId\", \"data-v-3e2324b7\"]]);\nexport {\n NcActionSeparator as N\n};\n//# sourceMappingURL=NcActionSeparator-B9pNQaji.mjs.map\n","\n\n","/**\n * SPDX-FileCopyrightText: 2020 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport client from './DavClient.ts'\n\n/**\n * Delete a comment\n *\n * @param resourceType the resource type\n * @param resourceId the resource ID\n * @param commentId the comment iD\n */\nexport default async function(resourceType: string, resourceId: number, commentId: number) {\n\tconst commentPath = ['', resourceType, resourceId, commentId].join('/')\n\n\t// Fetch newly created comment data\n\tawait client.deleteFile(commentPath)\n}\n","/**\n * SPDX-FileCopyrightText: 2020 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport client from './DavClient.ts'\n\n/**\n * Edit an existing comment\n *\n * @param resourceType the resource type\n * @param resourceId the resource ID\n * @param commentId the comment iD\n * @param message the message content\n */\nexport default async function(resourceType: string, resourceId: number, commentId: number, message: string) {\n\tconst commentPath = ['', resourceType, resourceId, commentId].join('/')\n\n\treturn await client.customRequest(commentPath, {\n\t\tmethod: 'PROPPATCH',\n\t\tdata: `\n\t\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\t\t${message}\n\t\t\t\t\n\t\t\t\n\t\t\t`,\n\t})\n}\n","/**\n * SPDX-FileCopyrightText: 2021 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\n/**\n * @param value - the string to decode\n * @param passes - the number of times to decode the string, default is 1\n */\nexport function decodeHtmlEntities(value: string, passes = 1) {\n\tconst parser = new DOMParser()\n\tlet decoded = value\n\tfor (let i = 0; i < passes; i++) {\n\t\tdecoded = parser.parseFromString(decoded, 'text/html').documentElement.textContent\n\t}\n\treturn decoded\n}\n","/**\n * SPDX-FileCopyrightText: 2020 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport { getCurrentUser } from '@nextcloud/auth'\nimport axios from '@nextcloud/axios'\nimport { getRootPath } from '../utils/davUtils.ts'\nimport { decodeHtmlEntities } from '../utils/decodeHtmlEntities.ts'\nimport client from './DavClient.ts'\n\n/**\n * Retrieve the comments list\n *\n * @param resourceType the resource type\n * @param resourceId the resource ID\n * @param message the message\n * @return The new comment\n */\nexport default async function(resourceType: string, resourceId: number, message: string) {\n\tconst resourcePath = ['', resourceType, resourceId].join('/')\n\n\tconst response = await axios.post(getRootPath() + resourcePath, {\n\t\tactorDisplayName: getCurrentUser()!.displayName,\n\t\tactorId: getCurrentUser()!.uid,\n\t\tactorType: 'users',\n\t\tcreationDateTime: (new Date()).toUTCString(),\n\t\tmessage,\n\t\tobjectType: resourceType,\n\t\tverb: 'comment',\n\t})\n\n\t// Retrieve comment id from resource location\n\tconst commentId = parseInt(response.headers['content-location'].split('/').pop())\n\tconst commentPath = resourcePath + '/' + commentId\n\n\t// Fetch newly created comment data\n\tconst comment = await client.stat(commentPath, {\n\t\tdetails: true,\n\t})\n\n\tconst props = comment.data.props\n\t// Decode twice to handle potentially double-encoded entities\n\t// FIXME Remove this once https://github.com/nextcloud/server/issues/29306\n\t// is resolved\n\tprops.actorDisplayName = decodeHtmlEntities(props.actorDisplayName, 2)\n\tprops.message = decodeHtmlEntities(props.message, 2)\n\n\treturn comment.data\n}\n","/**\n * SPDX-FileCopyrightText: 2024 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport { defineStore } from 'pinia'\n\nexport const useDeletedCommentLimbo = defineStore('deletedCommentLimbo', {\n\tstate: () => ({\n\t\tidsInLimbo: [],\n\t}),\n\tactions: {\n\t\taddId(id) {\n\t\t\tthis.idsInLimbo.push(id)\n\t\t},\n\n\t\tremoveId(id) {\n\t\t\tconst index = this.idsInLimbo.indexOf(id)\n\t\t\tif (index > -1) {\n\t\t\t\tthis.idsInLimbo.splice(index, 1)\n\t\t\t}\n\t\t},\n\n\t\tcheckForId(id) {\n\t\t\treturn this.idsInLimbo.includes(id)\n\t\t},\n\t},\n})\n","/**\n * SPDX-FileCopyrightText: 2020 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport { showError, showUndo, TOAST_UNDO_TIMEOUT } from '@nextcloud/dialogs'\nimport { mapStores } from 'pinia'\nimport logger from '../logger.ts'\nimport DeleteComment from '../services/DeleteComment.ts'\nimport EditComment from '../services/EditComment.ts'\nimport NewComment from '../services/NewComment.ts'\nimport { useDeletedCommentLimbo } from '../store/deletedCommentLimbo.ts'\n\nexport default {\n\tprops: {\n\t\tid: {\n\t\t\ttype: Number,\n\t\t\tdefault: null,\n\t\t},\n\t\tmessage: {\n\t\t\ttype: String,\n\t\t\tdefault: '',\n\t\t},\n\t\tresourceId: {\n\t\t\ttype: [String, Number],\n\t\t\trequired: true,\n\t\t},\n\t\tresourceType: {\n\t\t\ttype: String,\n\t\t\tdefault: 'files',\n\t\t},\n\t},\n\n\tdata() {\n\t\treturn {\n\t\t\tdeleted: false,\n\t\t\tediting: false,\n\t\t\tloading: false,\n\t\t}\n\t},\n\n\tcomputed: {\n\t\t...mapStores(useDeletedCommentLimbo),\n\t},\n\n\tmethods: {\n\t\t// EDITION\n\t\tonEdit() {\n\t\t\tthis.editing = true\n\t\t},\n\t\tonEditCancel() {\n\t\t\tthis.editing = false\n\t\t\t// Restore original value\n\t\t\tthis.updateLocalMessage(this.message)\n\t\t},\n\t\tasync onEditComment(message) {\n\t\t\tthis.loading = true\n\t\t\ttry {\n\t\t\t\tawait EditComment(this.resourceType, this.resourceId, this.id, message)\n\t\t\t\tlogger.debug('Comment edited', { resourceType: this.resourceType, resourceId: this.resourceId, id: this.id, message })\n\t\t\t\tthis.$emit('update:message', message)\n\t\t\t\tthis.editing = false\n\t\t\t} catch (error) {\n\t\t\t\tshowError(t('comments', 'An error occurred while trying to edit the comment'))\n\t\t\t\tlogger.error('An error occurred while trying to edit the comment', { error })\n\t\t\t} finally {\n\t\t\t\tthis.loading = false\n\t\t\t}\n\t\t},\n\n\t\t// DELETION\n\t\tonDeleteWithUndo() {\n\t\t\tthis.$emit('delete')\n\t\t\tthis.deleted = true\n\t\t\tthis.deletedCommentLimboStore.addId(this.id)\n\t\t\tconst timeOutDelete = setTimeout(this.onDelete, TOAST_UNDO_TIMEOUT)\n\t\t\tshowUndo(t('comments', 'Comment deleted'), () => {\n\t\t\t\tclearTimeout(timeOutDelete)\n\t\t\t\tthis.deleted = false\n\t\t\t\tthis.deletedCommentLimboStore.removeId(this.id)\n\t\t\t})\n\t\t},\n\t\tasync onDelete() {\n\t\t\ttry {\n\t\t\t\tawait DeleteComment(this.resourceType, this.resourceId, this.id)\n\t\t\t\tlogger.debug('Comment deleted', { resourceType: this.resourceType, resourceId: this.resourceId, id: this.id })\n\t\t\t\tthis.$emit('delete', this.id)\n\t\t\t} catch (error) {\n\t\t\t\tshowError(t('comments', 'An error occurred while trying to delete the comment'))\n\t\t\t\tlogger.error('An error occurred while trying to delete the comment', { error })\n\t\t\t\tthis.deleted = false\n\t\t\t\tthis.deletedCommentLimboStore.removeId(this.id)\n\t\t\t}\n\t\t},\n\n\t\t// CREATION\n\t\tasync onNewComment(message) {\n\t\t\tthis.loading = true\n\t\t\ttry {\n\t\t\t\tconst newComment = await NewComment(this.resourceType, this.resourceId, message)\n\t\t\t\tlogger.debug('New comment posted', { resourceType: this.resourceType, resourceId: this.resourceId, newComment })\n\t\t\t\tthis.$emit('new', newComment)\n\n\t\t\t\t// Clear old content\n\t\t\t\tthis.$emit('update:message', '')\n\t\t\t\tthis.localMessage = ''\n\t\t\t} catch (error) {\n\t\t\t\tshowError(t('comments', 'An error occurred while trying to create the comment'))\n\t\t\t\tlogger.error('An error occurred while trying to create the comment', { error })\n\t\t\t} finally {\n\t\t\t\tthis.loading = false\n\t\t\t}\n\t\t},\n\t},\n}\n","\n\n\n\n\n\n","/*!\n * SPDX-FileCopyrightText: 2023 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport { getCurrentUser } from '@nextcloud/auth'\nimport axios from '@nextcloud/axios'\nimport { loadState } from '@nextcloud/initial-state'\nimport { generateOcsUrl } from '@nextcloud/router'\nimport { defineComponent } from 'vue'\n\nexport default defineComponent({\n\tprops: {\n\t\tresourceId: {\n\t\t\ttype: Number,\n\t\t\trequired: true,\n\t\t},\n\t\tresourceType: {\n\t\t\ttype: String,\n\t\t\tdefault: 'files',\n\t\t},\n\t},\n\tdata() {\n\t\treturn {\n\t\t\teditorData: {\n\t\t\t\tactorDisplayName: getCurrentUser()!.displayName as string,\n\t\t\t\tactorId: getCurrentUser()!.uid as string,\n\t\t\t\tkey: 'editor',\n\t\t\t},\n\t\t\tuserData: {},\n\t\t\tcurrentResourceId: this.resourceId,\n\t\t}\n\t},\n\tmethods: {\n\t\t/**\n\t\t * Autocomplete `@mentions`\n\t\t *\n\t\t * @param search the query\n\t\t * @param callback the callback to process the results with\n\t\t */\n\t\tasync autoComplete(search, callback) {\n\t\t\tconst { data } = await axios.get(generateOcsUrl('core/autocomplete/get'), {\n\t\t\t\tparams: {\n\t\t\t\t\tsearch,\n\t\t\t\t\titemType: this.resourceType,\n\t\t\t\t\titemId: this.currentResourceId,\n\t\t\t\t\tsorter: 'commenters|share-recipients',\n\t\t\t\t\tlimit: loadState('comments', 'maxAutoCompleteResults'),\n\t\t\t\t},\n\t\t\t})\n\t\t\t// Save user data so it can be used by the editor to replace mentions\n\t\t\tdata.ocs.data.forEach((user) => {\n\t\t\t\tthis.userData[user.id] = user\n\t\t\t})\n\t\t\treturn callback(Object.values(this.userData))\n\t\t},\n\n\t\t/**\n\t\t * Make sure we have all mentions as Array of objects\n\t\t *\n\t\t * @param mentions the mentions list\n\t\t */\n\t\t// eslint-disable-next-line @typescript-eslint/no-explicit-any\n\t\tgenMentionsData(mentions: any[]): Record {\n\t\t\tObject.values(mentions)\n\t\t\t\t.flat()\n\t\t\t\t.forEach((mention) => {\n\t\t\t\t\tthis.userData[mention.mentionId] = {\n\t\t\t\t\t\t// TODO: support groups\n\t\t\t\t\t\ticon: 'icon-user',\n\t\t\t\t\t\tid: mention.mentionId,\n\t\t\t\t\t\tlabel: mention.mentionDisplayName,\n\t\t\t\t\t\tsource: 'users',\n\t\t\t\t\t\tprimary: getCurrentUser()?.uid === mention.mentionId,\n\t\t\t\t\t}\n\t\t\t\t})\n\t\t\treturn this.userData\n\t\t},\n\t},\n})\n"],"file":"CommentView-qR2-hI5y.chunk.mjs"} \ No newline at end of file diff --git a/dist/CommentView-Dwuq398x.chunk.mjs.map.license b/dist/CommentView-qR2-hI5y.chunk.mjs.map.license similarity index 100% rename from dist/CommentView-Dwuq398x.chunk.mjs.map.license rename to dist/CommentView-qR2-hI5y.chunk.mjs.map.license diff --git a/dist/CredentialsDialog-COL2lHl3.chunk.mjs b/dist/CredentialsDialog-BIaz-CgX.chunk.mjs similarity index 74% rename from dist/CredentialsDialog-COL2lHl3.chunk.mjs rename to dist/CredentialsDialog-BIaz-CgX.chunk.mjs index 95b4ef6718186..df1da7fa0e368 100644 --- a/dist/CredentialsDialog-COL2lHl3.chunk.mjs +++ b/dist/CredentialsDialog-BIaz-CgX.chunk.mjs @@ -1,2 +1,2 @@ -import{t}from"./translation-DoG5ZELJ-WOan4U8V.chunk.mjs";import{N as u}from"./index-CmDAUQql.chunk.mjs";import{N as d}from"./mdi-B6W_Xvj-.chunk.mjs";import{N as p}from"./NcPasswordField-BFyzHTOO-7Y4psNBG.chunk.mjs";import{_ as c}from"./NcTextField.vue_vue_type_script_setup_true_lang-Bx2esFU2-D61trFet.chunk.mjs";import{b as g,o as f,c as h,w as x,k as s,u as e,l as n}from"./Web-DYqXJUev.chunk.mjs";import"./index-Cp0kcsps.chunk.mjs";import"./NcModal-DiDvgcU8-7_SNLMd-.chunk.mjs";import"./logger-D3RVzcfQ-Bt9JRPzn.chunk.mjs";import"./createElementId-DhjFt1I9-BmyhoOWk.chunk.mjs";import"./TrashCanOutline-BU3aqDG_.chunk.mjs";import"./public-C1mLBHT3.chunk.mjs";import"./index-CkGt55pS.chunk.mjs";import"./util-DBjHxD9z.chunk.mjs";import"./NcInputField-5Sg6EUP6-DXw-ZWiv.chunk.mjs";const D=g({__name:"CredentialsDialog",emits:["close"],setup(_){const o=n(""),r=n(""),m=[{label:t("files_external","Confirm"),type:"submit",variant:"primary"}];return(i,a)=>(f(),h(e(u),{buttons:m,class:"external-storage-auth",closeOnClickOutside:"","data-cy-external-storage-auth":"",isForm:"",name:e(t)("files_external","Storage credentials"),outTransition:"",onSubmit:a[2]||(a[2]=l=>i.$emit("close",{login:o.value,password:r.value})),"onUpdate:open":a[3]||(a[3]=l=>i.$emit("close"))},{default:x(()=>[s(e(d),{class:"external-storage-auth__header",text:e(t)("files_external","To access the storage, you need to provide the authentication credentials."),type:"info"},null,8,["text"]),s(e(c),{modelValue:o.value,"onUpdate:modelValue":a[0]||(a[0]=l=>o.value=l),autofocus:"",class:"external-storage-auth__login","data-cy-external-storage-auth-dialog-login":"",label:e(t)("files_external","Login"),placeholder:e(t)("files_external","Enter the storage login"),minlength:"2",name:"login",required:""},null,8,["modelValue","label","placeholder"]),s(e(p),{modelValue:r.value,"onUpdate:modelValue":a[1]||(a[1]=l=>r.value=l),class:"external-storage-auth__password","data-cy-external-storage-auth-dialog-password":"",label:e(t)("files_external","Password"),placeholder:e(t)("files_external","Enter the storage password"),name:"password",required:""},null,8,["modelValue","label","placeholder"])]),_:1},8,["name"]))}});export{D as default}; -//# sourceMappingURL=CredentialsDialog-COL2lHl3.chunk.mjs.map +import{t}from"./translation-DoG5ZELJ-WOan4U8V.chunk.mjs";import{N as u}from"./index-CHUjKZ5R.chunk.mjs";import{N as d}from"./mdi-BU6wr1QN.chunk.mjs";import{N as p}from"./NcPasswordField-BFyzHTOO-BIm5AMSG.chunk.mjs";import{_ as c}from"./NcTextField.vue_vue_type_script_setup_true_lang-Bx2esFU2-CGsfYqql.chunk.mjs";import{b as g,o as f,c as h,w as x,k as s,u as e,l as n}from"./Web-DYqXJUev.chunk.mjs";import"./index-Cp0kcsps.chunk.mjs";import"./NcModal-DiDvgcU8-Cb_C64qI.chunk.mjs";import"./logger-D3RVzcfQ-BrUWOyzd.chunk.mjs";import"./createElementId-DhjFt1I9-BmyhoOWk.chunk.mjs";import"./TrashCanOutline-BU3aqDG_.chunk.mjs";import"./public-C1mLBHT3.chunk.mjs";import"./index-CkGt55pS.chunk.mjs";import"./util-DBjHxD9z.chunk.mjs";import"./NcInputField-5Sg6EUP6-CUyzAC2j.chunk.mjs";const D=g({__name:"CredentialsDialog",emits:["close"],setup(_){const o=n(""),r=n(""),m=[{label:t("files_external","Confirm"),type:"submit",variant:"primary"}];return(i,a)=>(f(),h(e(u),{buttons:m,class:"external-storage-auth",closeOnClickOutside:"","data-cy-external-storage-auth":"",isForm:"",name:e(t)("files_external","Storage credentials"),outTransition:"",onSubmit:a[2]||(a[2]=l=>i.$emit("close",{login:o.value,password:r.value})),"onUpdate:open":a[3]||(a[3]=l=>i.$emit("close"))},{default:x(()=>[s(e(d),{class:"external-storage-auth__header",text:e(t)("files_external","To access the storage, you need to provide the authentication credentials."),type:"info"},null,8,["text"]),s(e(c),{modelValue:o.value,"onUpdate:modelValue":a[0]||(a[0]=l=>o.value=l),autofocus:"",class:"external-storage-auth__login","data-cy-external-storage-auth-dialog-login":"",label:e(t)("files_external","Login"),placeholder:e(t)("files_external","Enter the storage login"),minlength:"2",name:"login",required:""},null,8,["modelValue","label","placeholder"]),s(e(p),{modelValue:r.value,"onUpdate:modelValue":a[1]||(a[1]=l=>r.value=l),class:"external-storage-auth__password","data-cy-external-storage-auth-dialog-password":"",label:e(t)("files_external","Password"),placeholder:e(t)("files_external","Enter the storage password"),name:"password",required:""},null,8,["modelValue","label","placeholder"])]),_:1},8,["name"]))}});export{D as default}; +//# sourceMappingURL=CredentialsDialog-BIaz-CgX.chunk.mjs.map diff --git a/dist/CredentialsDialog-COL2lHl3.chunk.mjs.license b/dist/CredentialsDialog-BIaz-CgX.chunk.mjs.license similarity index 100% rename from dist/CredentialsDialog-COL2lHl3.chunk.mjs.license rename to dist/CredentialsDialog-BIaz-CgX.chunk.mjs.license diff --git a/dist/CredentialsDialog-COL2lHl3.chunk.mjs.map b/dist/CredentialsDialog-BIaz-CgX.chunk.mjs.map similarity index 98% rename from dist/CredentialsDialog-COL2lHl3.chunk.mjs.map rename to dist/CredentialsDialog-BIaz-CgX.chunk.mjs.map index d35c8dfeb1833..9082817d8a652 100644 --- a/dist/CredentialsDialog-COL2lHl3.chunk.mjs.map +++ b/dist/CredentialsDialog-BIaz-CgX.chunk.mjs.map @@ -1 +1 @@ -{"version":3,"file":"CredentialsDialog-COL2lHl3.chunk.mjs","sources":["../build/frontend/apps/files_external/src/views/CredentialsDialog.vue"],"sourcesContent":["\n\n\n\n\n"],"names":["login","ref","password","dialogButtons","t","_createBlock","_unref","NcDialog","_cache","$event","$emit","_createVNode","NcNoteCard","NcTextField","NcPasswordField"],"mappings":"40BAiBA,MAAMA,EAAQC,EAAI,EAAE,EACdC,EAAWD,EAAI,EAAE,EAEjBE,EAA0D,CAAC,CAChE,MAAOC,EAAE,iBAAkB,SAAS,EACpC,KAAM,SACN,QAAS,SAAA,CACT,oBAIAC,EAqCWC,EAAAC,CAAA,EAAA,CApCT,QAASJ,EACV,MAAM,wBACN,oBAAA,GACA,gCAAA,GACA,OAAA,GACC,KAAMG,EAAAF,CAAA,EAAC,iBAAA,qBAAA,EACR,cAAA,GACC,SAAMI,EAAA,CAAA,IAAAA,EAAA,CAAA,EAAAC,GAAEC,EAAAA,MAAK,QAAA,CAAA,MAAYV,EAAA,eAAOE,EAAA,MAAQ,GACxC,+BAAaQ,EAAAA,MAAK,OAAA,EAAA,aAEnB,IAGe,CAHfC,EAGeL,EAAAM,CAAA,EAAA,CAFd,MAAM,gCACL,KAAMN,EAAAF,CAAA,EAAC,iBAAA,4EAAA,EACR,KAAK,MAAA,mBAGNO,EASYL,EAAAO,CAAA,EAAA,YARFb,EAAA,2CAAAA,EAAK,MAAAS,GACd,UAAA,GACA,MAAM,+BACN,6CAAA,GACC,MAAOH,EAAAF,CAAA,EAAC,iBAAA,OAAA,EACR,YAAaE,EAAAF,CAAA,EAAC,iBAAA,yBAAA,EACf,UAAU,IACV,KAAK,QACL,SAAA,EAAA,+CAGDO,EAOYL,EAAAQ,CAAA,EAAA,YANFZ,EAAA,2CAAAA,EAAQ,MAAAO,GACjB,MAAM,kCACN,gDAAA,GACC,MAAOH,EAAAF,CAAA,EAAC,iBAAA,UAAA,EACR,YAAaE,EAAAF,CAAA,EAAC,iBAAA,4BAAA,EACf,KAAK,WACL,SAAA,EAAA"} \ No newline at end of file +{"version":3,"file":"CredentialsDialog-BIaz-CgX.chunk.mjs","sources":["../build/frontend/apps/files_external/src/views/CredentialsDialog.vue"],"sourcesContent":["\n\n\n\n\n"],"names":["login","ref","password","dialogButtons","t","_createBlock","_unref","NcDialog","_cache","$event","$emit","_createVNode","NcNoteCard","NcTextField","NcPasswordField"],"mappings":"40BAiBA,MAAMA,EAAQC,EAAI,EAAE,EACdC,EAAWD,EAAI,EAAE,EAEjBE,EAA0D,CAAC,CAChE,MAAOC,EAAE,iBAAkB,SAAS,EACpC,KAAM,SACN,QAAS,SAAA,CACT,oBAIAC,EAqCWC,EAAAC,CAAA,EAAA,CApCT,QAASJ,EACV,MAAM,wBACN,oBAAA,GACA,gCAAA,GACA,OAAA,GACC,KAAMG,EAAAF,CAAA,EAAC,iBAAA,qBAAA,EACR,cAAA,GACC,SAAMI,EAAA,CAAA,IAAAA,EAAA,CAAA,EAAAC,GAAEC,EAAAA,MAAK,QAAA,CAAA,MAAYV,EAAA,eAAOE,EAAA,MAAQ,GACxC,+BAAaQ,EAAAA,MAAK,OAAA,EAAA,aAEnB,IAGe,CAHfC,EAGeL,EAAAM,CAAA,EAAA,CAFd,MAAM,gCACL,KAAMN,EAAAF,CAAA,EAAC,iBAAA,4EAAA,EACR,KAAK,MAAA,mBAGNO,EASYL,EAAAO,CAAA,EAAA,YARFb,EAAA,2CAAAA,EAAK,MAAAS,GACd,UAAA,GACA,MAAM,+BACN,6CAAA,GACC,MAAOH,EAAAF,CAAA,EAAC,iBAAA,OAAA,EACR,YAAaE,EAAAF,CAAA,EAAC,iBAAA,yBAAA,EACf,UAAU,IACV,KAAK,QACL,SAAA,EAAA,+CAGDO,EAOYL,EAAAQ,CAAA,EAAA,YANFZ,EAAA,2CAAAA,EAAQ,MAAAO,GACjB,MAAM,kCACN,gDAAA,GACC,MAAOH,EAAAF,CAAA,EAAC,iBAAA,UAAA,EACR,YAAaE,EAAAF,CAAA,EAAC,iBAAA,4BAAA,EACf,KAAK,WACL,SAAA,EAAA"} \ No newline at end of file diff --git a/dist/CredentialsDialog-COL2lHl3.chunk.mjs.map.license b/dist/CredentialsDialog-BIaz-CgX.chunk.mjs.map.license similarity index 100% rename from dist/CredentialsDialog-COL2lHl3.chunk.mjs.map.license rename to dist/CredentialsDialog-BIaz-CgX.chunk.mjs.map.license diff --git a/dist/DiscoverTypeCarousel-D8xqFtm0.chunk.mjs b/dist/DiscoverTypeCarousel-BhgZW4td.chunk.mjs similarity index 64% rename from dist/DiscoverTypeCarousel-D8xqFtm0.chunk.mjs rename to dist/DiscoverTypeCarousel-BhgZW4td.chunk.mjs index d0d47f7102600..4064202ba03e0 100644 --- a/dist/DiscoverTypeCarousel-D8xqFtm0.chunk.mjs +++ b/dist/DiscoverTypeCarousel-BhgZW4td.chunk.mjs @@ -1,2 +1,2 @@ -import{b as w,l as h,z as D,o as p,f as y,t as I,u as a,h as N,g as u,k as r,w as d,c as k,m as M,T,F as q,B as z,v as s,D as A}from"./Web-DYqXJUev.chunk.mjs";import{f as B,g as F,h as P,i as S}from"./mdi-B6W_Xvj-.chunk.mjs";import{t as n}from"./translation-DoG5ZELJ-WOan4U8V.chunk.mjs";import{N as f}from"./logger-D3RVzcfQ-Bt9JRPzn.chunk.mjs";import{N as g}from"./createElementId-DhjFt1I9-BmyhoOWk.chunk.mjs";import{c as j,D as E,u as G}from"./DiscoverTypePost-D1FhRXE_.chunk.mjs";import{_ as H}from"./public-C1mLBHT3.chunk.mjs";import"./index-Cp0kcsps.chunk.mjs";import"./NcModal-DiDvgcU8-7_SNLMd-.chunk.mjs";import"./appstore-main.mjs";import"./pinia-BsumPXOW.chunk.mjs";import"./NcContent-BYh5hWDN-BPQwUlVv.chunk.mjs";import"./PencilOutline-DhyEf5vr.chunk.mjs";import"./NcTextArea-Dxzj4zdb-cEtDIZuj.chunk.mjs";import"./index-BDlLVKOD.chunk.mjs";import"./TrashCanOutline-BU3aqDG_.chunk.mjs";import"./TrayArrowDown-Fnpm9Yo9.chunk.mjs";import"./NcInputField-5Sg6EUP6-DXw-ZWiv.chunk.mjs";import"./index-CmDAUQql.chunk.mjs";import"./NcAvatar-1KxMUN7V-X_YNB4Fv.chunk.mjs";import"./index-CkGt55pS.chunk.mjs";import"./util-DBjHxD9z.chunk.mjs";import"./ArrowRight-CSlQTlWs.chunk.mjs";import"./colors-Cv9F-jWS-BFJACjQq.chunk.mjs";import"./NcUserStatusIcon-BF5OEQFU-Bh_IaQ_D.chunk.mjs";import"./NcDateTime.vue_vue_type_script_setup_true_lang-BJuPH7S7-DKsF6FS9.chunk.mjs";import"./NcEmptyContent-CGAPqk4S-LFG8iXZZ.chunk.mjs";import"./NcBreadcrumbs-B4eyDS9i-BkuFqTyn.chunk.mjs";import"./NcPasswordField-BFyzHTOO-7Y4psNBG.chunk.mjs";import"./NcTextField.vue_vue_type_script_setup_true_lang-Bx2esFU2-D61trFet.chunk.mjs";/* empty css */import"./NcCheckboxRadioSwitch-DVdt5Hkq-COYVxuqr.chunk.mjs";import"./Plus-Cvoorj3T.chunk.mjs";import"./index-BRPJrOcF.chunk.mjs";import"./index-Cdqy7gO-.chunk.mjs";import"./NcEmojiPicker-UTxgju3f-HSbVMwrx.chunk.mjs";import"./emoji-C8k9NUlo-BQiX-d8c.chunk.mjs";import"./index-D9CqvIri.chunk.mjs";/* empty css */import"./index-DueKLP2f.chunk.mjs";import"./NcSelectTags-I2hJaNax-B2PZ_kex.chunk.mjs";import"./ContentCopy-B9XOXCFO.chunk.mjs";import"./NcUserBubble-BXR7vT0V-CXAEWnoj.chunk.mjs";import"./modulepreload-polyfill-BxzAKjcf.chunk.mjs";import"./index-mH69OG7L.chunk.mjs";import"./index-BgrtITOq.chunk.mjs";const J=["aria-roledescription","aria-labelledby"],K=["id"],L={class:"app-discover-carousel__wrapper"},O={class:"app-discover-carousel__button-wrapper"},Q={class:"app-discover-carousel__button-wrapper"},R=["aria-label"],U=w({__name:"DiscoverTypeCarousel",props:{...j,content:{type:Array,required:!0}},setup(m){const t=m,$=G(s(()=>t.headline)),e=h(Math.min(1,t.content.length-1)),c=h(t.content[e.value]),C=s(()=>e.valuee.value>0),l=s(()=>t.id??(Math.random()+1).toString(36).substring(7)),v=s(()=>`${l.value}-h`),b=h("slide-in");return D(()=>e.value,(_,i)=>{_{c.value=t.content[e.value]})}),(_,i)=>(p(),y("section",{"aria-roledescription":a(n)("appstore","Carousel"),"aria-labelledby":v.value?`${v.value}`:void 0},[_.headline?(p(),y("h3",{key:0,id:v.value},I(a($)),9,K)):N("",!0),u("div",L,[u("div",O,[r(a(f),{class:"app-discover-carousel__button app-discover-carousel__button--previous",variant:"tertiary-no-background","aria-label":a(n)("appstore","Previous slide"),disabled:!x.value,onClick:i[0]||(i[0]=o=>e.value-=1)},{icon:d(()=>[r(a(g),{path:a(B)},null,8,["path"])]),_:1},8,["aria-label","disabled"])]),r(T,{name:b.value,mode:"out-in"},{default:d(()=>[(p(),k(E,M(c.value,{key:c.value.id??e.value,"aria-labelledby":`${l.value}-tab-${e.value}`,domId:`${l.value}-tabpanel-${e.value}`,inline:"",role:"tabpanel"}),null,16,["aria-labelledby","domId"]))]),_:1},8,["name"]),u("div",Q,[r(a(f),{class:"app-discover-carousel__button app-discover-carousel__button--next",variant:"tertiary-no-background","aria-label":a(n)("appstore","Next slide"),disabled:!C.value,onClick:i[1]||(i[1]=o=>e.value+=1)},{icon:d(()=>[r(a(g),{path:a(F)},null,8,["path"])]),_:1},8,["aria-label","disabled"])])]),u("div",{class:"app-discover-carousel__tabs",role:"tablist","aria-label":a(n)("appstore","Choose slide to display")},[(p(!0),y(q,null,z(m.content.length,o=>(p(),k(a(f),{id:`${l.value}-tab-${o}`,key:o,"aria-label":a(n)("appstore","{index} of {total}",{index:o,total:m.content.length}),"aria-controls":`${l.value}-tabpanel-${o}`,"aria-selected":`${e.value===o-1}`,role:"tab",variant:"tertiary-no-background",onClick:V=>e.value=o-1},{icon:d(()=>[r(a(g),{path:e.value===o-1?a(P):a(S)},null,8,["path"])]),_:2},1032,["id","aria-label","aria-controls","aria-selected","onClick"]))),128))],8,R)],8,J))}}),Ja=H(U,[["__scopeId","data-v-89f194e4"]]);export{Ja as default}; -//# sourceMappingURL=DiscoverTypeCarousel-D8xqFtm0.chunk.mjs.map +import{b as w,l as h,z as D,o as p,f as y,t as I,u as a,h as N,g as u,k as r,w as d,c as k,m as M,T,F as q,B as z,v as s,D as A}from"./Web-DYqXJUev.chunk.mjs";import{f as B,g as F,h as P,i as S}from"./mdi-BU6wr1QN.chunk.mjs";import{t as n}from"./translation-DoG5ZELJ-WOan4U8V.chunk.mjs";import{N as f}from"./logger-D3RVzcfQ-BrUWOyzd.chunk.mjs";import{N as g}from"./createElementId-DhjFt1I9-BmyhoOWk.chunk.mjs";import{c as j,D as E,u as G}from"./DiscoverTypePost-DbZIG6zf.chunk.mjs";import{_ as H}from"./public-C1mLBHT3.chunk.mjs";import"./index-Cp0kcsps.chunk.mjs";import"./NcModal-DiDvgcU8-Cb_C64qI.chunk.mjs";import"./appstore-main.mjs";import"./pinia-BsumPXOW.chunk.mjs";import"./NcContent-BYh5hWDN-C1_miOvl.chunk.mjs";import"./PencilOutline-CA_ZiZlA.chunk.mjs";import"./NcTextArea-Dxzj4zdb-DLw_yRcD.chunk.mjs";import"./index-BhwlPNkJ.chunk.mjs";import"./TrashCanOutline-BU3aqDG_.chunk.mjs";import"./TrayArrowDown-ZQRTTdRd.chunk.mjs";import"./NcInputField-5Sg6EUP6-CUyzAC2j.chunk.mjs";import"./index-CHUjKZ5R.chunk.mjs";import"./NcAvatar-1KxMUN7V-R6Nmwuvb.chunk.mjs";import"./index-CkGt55pS.chunk.mjs";import"./util-DBjHxD9z.chunk.mjs";import"./ArrowRight-BCzIOZ0l.chunk.mjs";import"./colors-Cv9F-jWS-BFJACjQq.chunk.mjs";import"./NcUserStatusIcon-BF5OEQFU-pJ2xeKbO.chunk.mjs";import"./NcDateTime.vue_vue_type_script_setup_true_lang-BJuPH7S7-BThMWOZt.chunk.mjs";import"./NcEmptyContent-CGAPqk4S-LFG8iXZZ.chunk.mjs";import"./NcBreadcrumbs-B4eyDS9i-bX0dOZmj.chunk.mjs";import"./NcPasswordField-BFyzHTOO-BIm5AMSG.chunk.mjs";import"./NcTextField.vue_vue_type_script_setup_true_lang-Bx2esFU2-CGsfYqql.chunk.mjs";/* empty css */import"./NcCheckboxRadioSwitch-DVdt5Hkq-COYVxuqr.chunk.mjs";import"./Plus-BxwPZLA-.chunk.mjs";import"./index-BH07KH9-.chunk.mjs";import"./index-C1YcCfSa.chunk.mjs";import"./NcEmojiPicker-UTxgju3f-D4QbKSIV.chunk.mjs";import"./emoji-C8k9NUlo-BQiX-d8c.chunk.mjs";import"./index-EuTrUPdZ.chunk.mjs";/* empty css */import"./index-8LKFZV9o.chunk.mjs";import"./NcSelectTags-I2hJaNax-N6jSSGJD.chunk.mjs";import"./ContentCopy-B9XOXCFO.chunk.mjs";import"./NcUserBubble-BXR7vT0V-BaTRETFp.chunk.mjs";import"./modulepreload-polyfill-BxzAKjcf.chunk.mjs";import"./index-BQu_HuHB.chunk.mjs";import"./index-g0PRm924.chunk.mjs";const J=["aria-roledescription","aria-labelledby"],K=["id"],L={class:"app-discover-carousel__wrapper"},O={class:"app-discover-carousel__button-wrapper"},Q={class:"app-discover-carousel__button-wrapper"},R=["aria-label"],U=w({__name:"DiscoverTypeCarousel",props:{...j,content:{type:Array,required:!0}},setup(m){const t=m,$=G(s(()=>t.headline)),e=h(Math.min(1,t.content.length-1)),c=h(t.content[e.value]),C=s(()=>e.valuee.value>0),l=s(()=>t.id??(Math.random()+1).toString(36).substring(7)),v=s(()=>`${l.value}-h`),b=h("slide-in");return D(()=>e.value,(_,i)=>{_{c.value=t.content[e.value]})}),(_,i)=>(p(),y("section",{"aria-roledescription":a(n)("appstore","Carousel"),"aria-labelledby":v.value?`${v.value}`:void 0},[_.headline?(p(),y("h3",{key:0,id:v.value},I(a($)),9,K)):N("",!0),u("div",L,[u("div",O,[r(a(f),{class:"app-discover-carousel__button app-discover-carousel__button--previous",variant:"tertiary-no-background","aria-label":a(n)("appstore","Previous slide"),disabled:!x.value,onClick:i[0]||(i[0]=o=>e.value-=1)},{icon:d(()=>[r(a(g),{path:a(B)},null,8,["path"])]),_:1},8,["aria-label","disabled"])]),r(T,{name:b.value,mode:"out-in"},{default:d(()=>[(p(),k(E,M(c.value,{key:c.value.id??e.value,"aria-labelledby":`${l.value}-tab-${e.value}`,domId:`${l.value}-tabpanel-${e.value}`,inline:"",role:"tabpanel"}),null,16,["aria-labelledby","domId"]))]),_:1},8,["name"]),u("div",Q,[r(a(f),{class:"app-discover-carousel__button app-discover-carousel__button--next",variant:"tertiary-no-background","aria-label":a(n)("appstore","Next slide"),disabled:!C.value,onClick:i[1]||(i[1]=o=>e.value+=1)},{icon:d(()=>[r(a(g),{path:a(F)},null,8,["path"])]),_:1},8,["aria-label","disabled"])])]),u("div",{class:"app-discover-carousel__tabs",role:"tablist","aria-label":a(n)("appstore","Choose slide to display")},[(p(!0),y(q,null,z(m.content.length,o=>(p(),k(a(f),{id:`${l.value}-tab-${o}`,key:o,"aria-label":a(n)("appstore","{index} of {total}",{index:o,total:m.content.length}),"aria-controls":`${l.value}-tabpanel-${o}`,"aria-selected":`${e.value===o-1}`,role:"tab",variant:"tertiary-no-background",onClick:V=>e.value=o-1},{icon:d(()=>[r(a(g),{path:e.value===o-1?a(P):a(S)},null,8,["path"])]),_:2},1032,["id","aria-label","aria-controls","aria-selected","onClick"]))),128))],8,R)],8,J))}}),Ja=H(U,[["__scopeId","data-v-89f194e4"]]);export{Ja as default}; +//# sourceMappingURL=DiscoverTypeCarousel-BhgZW4td.chunk.mjs.map diff --git a/dist/DiscoverTypeCarousel-D8xqFtm0.chunk.mjs.license b/dist/DiscoverTypeCarousel-BhgZW4td.chunk.mjs.license similarity index 100% rename from dist/DiscoverTypeCarousel-D8xqFtm0.chunk.mjs.license rename to dist/DiscoverTypeCarousel-BhgZW4td.chunk.mjs.license diff --git a/dist/DiscoverTypeCarousel-D8xqFtm0.chunk.mjs.map b/dist/DiscoverTypeCarousel-BhgZW4td.chunk.mjs.map similarity index 99% rename from dist/DiscoverTypeCarousel-D8xqFtm0.chunk.mjs.map rename to dist/DiscoverTypeCarousel-BhgZW4td.chunk.mjs.map index 624a4745b75d4..446a9f9280fde 100644 --- a/dist/DiscoverTypeCarousel-D8xqFtm0.chunk.mjs.map +++ b/dist/DiscoverTypeCarousel-BhgZW4td.chunk.mjs.map @@ -1 +1 @@ -{"version":3,"file":"DiscoverTypeCarousel-D8xqFtm0.chunk.mjs","sources":["../build/frontend/apps/appstore/src/components/DiscoverType/DiscoverTypeCarousel.vue"],"sourcesContent":["\n\n\n\n\n\n\n\n"],"names":["props","__props","translatedHeadline","useLocalizedValue","computed","currentIndex","ref","shownElement","hasNext","hasPrevious","internalId","headingId","transitionName","watch","o","n","nextTick","_createElementBlock","_unref","t","headline","_hoisted_2","_createElementVNode","_hoisted_3","_hoisted_4","_createVNode","NcButton","NcIconSvgWrapper","mdiChevronLeft","_Transition","_createBlock","DiscoverTypePost","_mergeProps","_hoisted_5","mdiChevronRight","_openBlock","_Fragment","_renderList","index","$event","mdiCircleSlice8","mdiCircleOutline"],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"DiscoverTypeCarousel-BhgZW4td.chunk.mjs","sources":["../build/frontend/apps/appstore/src/components/DiscoverType/DiscoverTypeCarousel.vue"],"sourcesContent":["\n\n\n\n\n\n\n\n"],"names":["props","__props","translatedHeadline","useLocalizedValue","computed","currentIndex","ref","shownElement","hasNext","hasPrevious","internalId","headingId","transitionName","watch","o","n","nextTick","_createElementBlock","_unref","t","headline","_hoisted_2","_createElementVNode","_hoisted_3","_hoisted_4","_createVNode","NcButton","NcIconSvgWrapper","mdiChevronLeft","_Transition","_createBlock","DiscoverTypePost","_mergeProps","_hoisted_5","mdiChevronRight","_openBlock","_Fragment","_renderList","index","$event","mdiCircleSlice8","mdiCircleOutline"],"mappings":"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"} \ No newline at end of file diff --git a/dist/DiscoverTypeCarousel-D8xqFtm0.chunk.mjs.map.license b/dist/DiscoverTypeCarousel-BhgZW4td.chunk.mjs.map.license similarity index 100% rename from dist/DiscoverTypeCarousel-D8xqFtm0.chunk.mjs.map.license rename to dist/DiscoverTypeCarousel-BhgZW4td.chunk.mjs.map.license diff --git a/dist/DiscoverTypePost-D1FhRXE_.chunk.mjs b/dist/DiscoverTypePost-DbZIG6zf.chunk.mjs similarity index 94% rename from dist/DiscoverTypePost-D1FhRXE_.chunk.mjs rename to dist/DiscoverTypePost-DbZIG6zf.chunk.mjs index 47d9499a4dcf4..7f0122e1313ec 100644 --- a/dist/DiscoverTypePost-D1FhRXE_.chunk.mjs +++ b/dist/DiscoverTypePost-DbZIG6zf.chunk.mjs @@ -1,2 +1,2 @@ -import{j as B}from"./mdi-B6W_Xvj-.chunk.mjs";import{c as D}from"./index-Cp0kcsps.chunk.mjs";import{u as L,a as W}from"./NcModal-DiDvgcU8-7_SNLMd-.chunk.mjs";import{N as C}from"./createElementId-DhjFt1I9-BmyhoOWk.chunk.mjs";import{g as F}from"./translation-DoG5ZELJ-WOan4U8V.chunk.mjs";import{v as l,b as M,E as G,o as r,f as n,c as d,w as v,C as c,j as H,t as N,u as m,g as S,h as f,F as J,B as K,y as O,l as h}from"./Web-DYqXJUev.chunk.mjs";import{A as P}from"./appstore-main.mjs";import{_ as Q}from"./public-C1mLBHT3.chunk.mjs";function k(e){const t=F();return l(()=>e?.value?R(e.value,t):null)}function R(e,t){return e[t]??e[t.split("_")[0]]??e.en??null}const U={type:{type:String,required:!0,validator:e=>typeof e=="string"&&P.includes(e)},id:{type:String,required:!0},date:{type:Number,required:!1,default:void 0},expiryDate:{type:Number,required:!1,default:void 0},headline:{type:Object,required:!1,default:()=>null},link:{type:String,required:!1,default:()=>null}},V=["id"],X=["src","srcset","type"],Y=["src","alt"],Z={class:"app-discover-post__play-icon-wrapper"},$=M({__name:"DiscoverTypePost",props:{...U,text:{type:Object,required:!1,default:()=>null},media:{type:Object,required:!1,default:()=>null},inline:{type:Boolean,required:!1,default:!1},domId:{type:String,required:!1,default:null}},setup(e){const t=e,g=k(l(()=>t.headline)),b=k(l(()=>t.text)),s=k(l(()=>t.media?.content)),p=l(()=>s.value!==null?[s.value.src].flat():void 0),w=l(()=>s.value?.alt??""),i=l(()=>p.value?.[0]?.mime.startsWith("image/")===!0),A=l(()=>!g.value&&!b.value),q=l(()=>s.value?.link??t.link),_=h(!1),E=l(()=>s.value?.link&&_.value),j=h(),{width:I}=L(j),T=l(()=>I.value<600);function y(a){return a.startsWith("/")?a:D("/apps/appstore/api/v1/discover/media?fileName={fileName}",{fileName:a})}const o=h(),z=W(o,{threshold:.3});return G(()=>{if(!i.value&&o.value){const a=o.value;z.value?(a.muted=!0,a.play()):(a.pause(),a.ended&&(a.currentTime=0,_.value=!1))}}),(a,x)=>(r(),n("article",{id:e.domId,ref_key:"container",ref:j,class:O(["app-discover-post",{"app-discover-post--reverse":e.media&&e.media.alignment==="start","app-discover-post--small":T.value}])},[a.headline||e.text?(r(),d(c(a.link?"AppLink":"div"),{key:0,href:a.link,class:"app-discover-post__text"},{default:v(()=>[(r(),d(c(e.inline?"h4":"h3"),null,{default:v(()=>[H(N(m(g)),1)]),_:1})),S("p",null,N(m(b)),1)]),_:1},8,["href"])):f("",!0),p.value?(r(),d(c(q.value?"AppLink":"div"),{key:1,href:q.value,class:O(["app-discover-post__media",{"app-discover-post__media--fullwidth":A.value,"app-discover-post__media--start":e.media?.alignment==="start","app-discover-post__media--end":e.media?.alignment==="end"}])},{default:v(()=>[(r(),d(c(i.value?"picture":"video"),{ref_key:"mediaElement",ref:o,class:"app-discover-post__media-element",muted:!i.value,playsinline:!i.value,preload:!i.value&&"auto",onEnded:x[0]||(x[0]=u=>_.value=!0)},{default:v(()=>[(r(!0),n(J,null,K(p.value,u=>(r(),n("source",{key:u.src,src:i.value?void 0:y(u.src),srcset:i.value?y(u.src):void 0,type:u.mime},null,8,X))),128)),i.value?(r(),n("img",{key:0,src:y(p.value[0].src),alt:w.value},null,8,Y)):f("",!0)]),_:1},40,["muted","playsinline","preload"])),S("div",Z,[!i.value&&E.value?(r(),d(m(C),{key:0,class:"app-discover-post__play-icon",path:m(B),size:92},null,8,["path"])):f("",!0)])]),_:1},8,["href","class"])):f("",!0)],10,V))}}),ee=Q($,[["__scopeId","data-v-e48b0e2c"]]),pe=Object.freeze(Object.defineProperty({__proto__:null,default:ee},Symbol.toStringTag,{value:"Module"}));export{ee as D,pe as a,U as c,k as u}; -//# sourceMappingURL=DiscoverTypePost-D1FhRXE_.chunk.mjs.map +import{j as B}from"./mdi-BU6wr1QN.chunk.mjs";import{c as D}from"./index-Cp0kcsps.chunk.mjs";import{u as L,a as W}from"./NcModal-DiDvgcU8-Cb_C64qI.chunk.mjs";import{N as C}from"./createElementId-DhjFt1I9-BmyhoOWk.chunk.mjs";import{g as F}from"./translation-DoG5ZELJ-WOan4U8V.chunk.mjs";import{v as l,b as M,E as G,o as r,f as n,c as d,w as v,C as c,j as H,t as N,u as m,g as S,h as f,F as J,B as K,y as O,l as h}from"./Web-DYqXJUev.chunk.mjs";import{A as P}from"./appstore-main.mjs";import{_ as Q}from"./public-C1mLBHT3.chunk.mjs";function k(e){const t=F();return l(()=>e?.value?R(e.value,t):null)}function R(e,t){return e[t]??e[t.split("_")[0]]??e.en??null}const U={type:{type:String,required:!0,validator:e=>typeof e=="string"&&P.includes(e)},id:{type:String,required:!0},date:{type:Number,required:!1,default:void 0},expiryDate:{type:Number,required:!1,default:void 0},headline:{type:Object,required:!1,default:()=>null},link:{type:String,required:!1,default:()=>null}},V=["id"],X=["src","srcset","type"],Y=["src","alt"],Z={class:"app-discover-post__play-icon-wrapper"},$=M({__name:"DiscoverTypePost",props:{...U,text:{type:Object,required:!1,default:()=>null},media:{type:Object,required:!1,default:()=>null},inline:{type:Boolean,required:!1,default:!1},domId:{type:String,required:!1,default:null}},setup(e){const t=e,g=k(l(()=>t.headline)),b=k(l(()=>t.text)),s=k(l(()=>t.media?.content)),p=l(()=>s.value!==null?[s.value.src].flat():void 0),w=l(()=>s.value?.alt??""),i=l(()=>p.value?.[0]?.mime.startsWith("image/")===!0),A=l(()=>!g.value&&!b.value),q=l(()=>s.value?.link??t.link),_=h(!1),E=l(()=>s.value?.link&&_.value),j=h(),{width:I}=L(j),T=l(()=>I.value<600);function y(a){return a.startsWith("/")?a:D("/apps/appstore/api/v1/discover/media?fileName={fileName}",{fileName:a})}const o=h(),z=W(o,{threshold:.3});return G(()=>{if(!i.value&&o.value){const a=o.value;z.value?(a.muted=!0,a.play()):(a.pause(),a.ended&&(a.currentTime=0,_.value=!1))}}),(a,x)=>(r(),n("article",{id:e.domId,ref_key:"container",ref:j,class:O(["app-discover-post",{"app-discover-post--reverse":e.media&&e.media.alignment==="start","app-discover-post--small":T.value}])},[a.headline||e.text?(r(),d(c(a.link?"AppLink":"div"),{key:0,href:a.link,class:"app-discover-post__text"},{default:v(()=>[(r(),d(c(e.inline?"h4":"h3"),null,{default:v(()=>[H(N(m(g)),1)]),_:1})),S("p",null,N(m(b)),1)]),_:1},8,["href"])):f("",!0),p.value?(r(),d(c(q.value?"AppLink":"div"),{key:1,href:q.value,class:O(["app-discover-post__media",{"app-discover-post__media--fullwidth":A.value,"app-discover-post__media--start":e.media?.alignment==="start","app-discover-post__media--end":e.media?.alignment==="end"}])},{default:v(()=>[(r(),d(c(i.value?"picture":"video"),{ref_key:"mediaElement",ref:o,class:"app-discover-post__media-element",muted:!i.value,playsinline:!i.value,preload:!i.value&&"auto",onEnded:x[0]||(x[0]=u=>_.value=!0)},{default:v(()=>[(r(!0),n(J,null,K(p.value,u=>(r(),n("source",{key:u.src,src:i.value?void 0:y(u.src),srcset:i.value?y(u.src):void 0,type:u.mime},null,8,X))),128)),i.value?(r(),n("img",{key:0,src:y(p.value[0].src),alt:w.value},null,8,Y)):f("",!0)]),_:1},40,["muted","playsinline","preload"])),S("div",Z,[!i.value&&E.value?(r(),d(m(C),{key:0,class:"app-discover-post__play-icon",path:m(B),size:92},null,8,["path"])):f("",!0)])]),_:1},8,["href","class"])):f("",!0)],10,V))}}),ee=Q($,[["__scopeId","data-v-e48b0e2c"]]),pe=Object.freeze(Object.defineProperty({__proto__:null,default:ee},Symbol.toStringTag,{value:"Module"}));export{ee as D,pe as a,U as c,k as u}; +//# sourceMappingURL=DiscoverTypePost-DbZIG6zf.chunk.mjs.map diff --git a/dist/DiscoverTypePost-D1FhRXE_.chunk.mjs.license b/dist/DiscoverTypePost-DbZIG6zf.chunk.mjs.license similarity index 100% rename from dist/DiscoverTypePost-D1FhRXE_.chunk.mjs.license rename to dist/DiscoverTypePost-DbZIG6zf.chunk.mjs.license diff --git a/dist/DiscoverTypePost-D1FhRXE_.chunk.mjs.map b/dist/DiscoverTypePost-DbZIG6zf.chunk.mjs.map similarity index 99% rename from dist/DiscoverTypePost-D1FhRXE_.chunk.mjs.map rename to dist/DiscoverTypePost-DbZIG6zf.chunk.mjs.map index 9e8d1bb2939b9..3b24fdcab9d08 100644 --- a/dist/DiscoverTypePost-D1FhRXE_.chunk.mjs.map +++ b/dist/DiscoverTypePost-DbZIG6zf.chunk.mjs.map @@ -1 +1 @@ -{"version":3,"file":"DiscoverTypePost-D1FhRXE_.chunk.mjs","sources":["../build/frontend/apps/appstore/src/composables/useGetLocalizedValue.ts","../build/frontend/apps/appstore/src/components/DiscoverType/common.ts","../build/frontend/apps/appstore/src/components/DiscoverType/DiscoverTypePost.vue"],"sourcesContent":["/*!\n * SPDX-FileCopyrightText: 2024 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport type { Ref } from 'vue'\nimport type { ILocalizedValue } from '../apps-discover.d.ts'\n\nimport { getLanguage } from '@nextcloud/l10n'\nimport { computed } from 'vue'\n\n/**\n * Get the localized value of the dictionary provided\n *\n * @param dict Dictionary\n * @return String or null if invalid dictionary\n */\nexport function useLocalizedValue(dict: Ref | undefined | null>) {\n\t/**\n\t * Language of the current user\n\t */\n\tconst language = getLanguage()\n\n\treturn computed(() => !dict?.value ? null : getLocalizedValue(dict.value as ILocalizedValue, language))\n}\n\n/**\n * Helper to get the localized value for the current users language\n *\n * @param dict The dictionary to get the value from\n * @param language The language to use\n */\nfunction getLocalizedValue(dict: ILocalizedValue, language: string) {\n\treturn dict[language] ?? dict[language.split('_')[0]!] ?? dict.en ?? null\n}\n","/**\n * SPDX-FileCopyrightText: 2024 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\nimport type { PropType } from 'vue'\nimport type { IAppDiscoverElement } from '../../apps-discover.d.ts'\n\nimport { APP_DISCOVER_KNOWN_TYPES } from '../../constants.ts'\n\n/**\n * Common Props for all app discover types\n */\nexport const commonAppDiscoverProps = {\n\ttype: {\n\t\ttype: String as PropType,\n\t\trequired: true,\n\t\tvalidator: (v: unknown) => typeof v === 'string' && APP_DISCOVER_KNOWN_TYPES.includes(v as never),\n\t},\n\n\tid: {\n\t\ttype: String as PropType,\n\t\trequired: true,\n\t},\n\n\tdate: {\n\t\ttype: Number as PropType,\n\t\trequired: false,\n\t\tdefault: undefined,\n\t},\n\n\texpiryDate: {\n\t\ttype: Number as PropType,\n\t\trequired: false,\n\t\tdefault: undefined,\n\t},\n\n\theadline: {\n\t\ttype: Object as PropType,\n\t\trequired: false,\n\t\tdefault: () => null,\n\t},\n\n\tlink: {\n\t\ttype: String as PropType,\n\t\trequired: false,\n\t\tdefault: () => null,\n\t},\n} as const\n","\n\n\n\n\n\n"],"names":["useLocalizedValue","dict","language","getLanguage","computed","getLocalizedValue","commonAppDiscoverProps","v","APP_DISCOVER_KNOWN_TYPES","props","__props","translatedHeadline","translatedText","localizedMedia","mediaSources","mediaAlt","isImage","isFullWidth","mediaLink","hasPlaybackEnded","ref","showPlayVideo","container","containerWidth","useElementSize","isSmallWidth","generatePrivacyUrl","url","generateOcsUrl","mediaElement","mediaIsVisible","useElementVisibility","watchEffect","video","_createElementBlock","headline","_openBlock","_createBlock","_resolveDynamicComponent","link","_unref","_createElementVNode","_Fragment","_renderList","source","_hoisted_4","NcIconSvgWrapper","mdiPlayCircleOutline"],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"DiscoverTypePost-DbZIG6zf.chunk.mjs","sources":["../build/frontend/apps/appstore/src/composables/useGetLocalizedValue.ts","../build/frontend/apps/appstore/src/components/DiscoverType/common.ts","../build/frontend/apps/appstore/src/components/DiscoverType/DiscoverTypePost.vue"],"sourcesContent":["/*!\n * SPDX-FileCopyrightText: 2024 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport type { Ref } from 'vue'\nimport type { ILocalizedValue } from '../apps-discover.d.ts'\n\nimport { getLanguage } from '@nextcloud/l10n'\nimport { computed } from 'vue'\n\n/**\n * Get the localized value of the dictionary provided\n *\n * @param dict Dictionary\n * @return String or null if invalid dictionary\n */\nexport function useLocalizedValue(dict: Ref | undefined | null>) {\n\t/**\n\t * Language of the current user\n\t */\n\tconst language = getLanguage()\n\n\treturn computed(() => !dict?.value ? null : getLocalizedValue(dict.value as ILocalizedValue, language))\n}\n\n/**\n * Helper to get the localized value for the current users language\n *\n * @param dict The dictionary to get the value from\n * @param language The language to use\n */\nfunction getLocalizedValue(dict: ILocalizedValue, language: string) {\n\treturn dict[language] ?? dict[language.split('_')[0]!] ?? dict.en ?? null\n}\n","/**\n * SPDX-FileCopyrightText: 2024 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\nimport type { PropType } from 'vue'\nimport type { IAppDiscoverElement } from '../../apps-discover.d.ts'\n\nimport { APP_DISCOVER_KNOWN_TYPES } from '../../constants.ts'\n\n/**\n * Common Props for all app discover types\n */\nexport const commonAppDiscoverProps = {\n\ttype: {\n\t\ttype: String as PropType,\n\t\trequired: true,\n\t\tvalidator: (v: unknown) => typeof v === 'string' && APP_DISCOVER_KNOWN_TYPES.includes(v as never),\n\t},\n\n\tid: {\n\t\ttype: String as PropType,\n\t\trequired: true,\n\t},\n\n\tdate: {\n\t\ttype: Number as PropType,\n\t\trequired: false,\n\t\tdefault: undefined,\n\t},\n\n\texpiryDate: {\n\t\ttype: Number as PropType,\n\t\trequired: false,\n\t\tdefault: undefined,\n\t},\n\n\theadline: {\n\t\ttype: Object as PropType,\n\t\trequired: false,\n\t\tdefault: () => null,\n\t},\n\n\tlink: {\n\t\ttype: String as PropType,\n\t\trequired: false,\n\t\tdefault: () => null,\n\t},\n} as const\n","\n\n\n\n\n\n"],"names":["useLocalizedValue","dict","language","getLanguage","computed","getLocalizedValue","commonAppDiscoverProps","v","APP_DISCOVER_KNOWN_TYPES","props","__props","translatedHeadline","translatedText","localizedMedia","mediaSources","mediaAlt","isImage","isFullWidth","mediaLink","hasPlaybackEnded","ref","showPlayVideo","container","containerWidth","useElementSize","isSmallWidth","generatePrivacyUrl","url","generateOcsUrl","mediaElement","mediaIsVisible","useElementVisibility","watchEffect","video","_createElementBlock","headline","_openBlock","_createBlock","_resolveDynamicComponent","link","_unref","_createElementVNode","_Fragment","_renderList","source","_hoisted_4","NcIconSvgWrapper","mdiPlayCircleOutline"],"mappings":"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"} \ No newline at end of file diff --git a/dist/DiscoverTypePost-D1FhRXE_.chunk.mjs.map.license b/dist/DiscoverTypePost-DbZIG6zf.chunk.mjs.map.license similarity index 100% rename from dist/DiscoverTypePost-D1FhRXE_.chunk.mjs.map.license rename to dist/DiscoverTypePost-DbZIG6zf.chunk.mjs.map.license diff --git a/dist/DiscoverTypeShowcase-65aK4fEm.chunk.mjs b/dist/DiscoverTypeShowcase-BdX4MG-M.chunk.mjs similarity index 62% rename from dist/DiscoverTypeShowcase-65aK4fEm.chunk.mjs rename to dist/DiscoverTypeShowcase-BdX4MG-M.chunk.mjs index 1ce7f419b8eaa..b31dd9e1a1e6e 100644 --- a/dist/DiscoverTypeShowcase-65aK4fEm.chunk.mjs +++ b/dist/DiscoverTypeShowcase-BdX4MG-M.chunk.mjs @@ -1,2 +1,2 @@ -import{u as x}from"./NcModal-DiDvgcU8-7_SNLMd-.chunk.mjs";import{A}from"./UpdateAllDialog-BqC8T943.chunk.mjs";import{l as B,_ as V}from"./public-C1mLBHT3.chunk.mjs";import{b as D}from"./index-Cp0kcsps.chunk.mjs";import{u as j,R as E}from"./logger-D3RVzcfQ-Bt9JRPzn.chunk.mjs";import{b as w,E as T,o as p,f as l,G as g,m as v,i as I,c as f,u as _,w as $,h,l as y,H as q,k as d,g as c,j as F,t as k,v as u,F as G,B as H,y as L}from"./Web-DYqXJUev.chunk.mjs";import{u as O,B as R}from"./appstore-main.mjs";import{c as S,D as z,u as C}from"./DiscoverTypePost-D1FhRXE_.chunk.mjs";import"./createElementId-DhjFt1I9-BmyhoOWk.chunk.mjs";import"./translation-DoG5ZELJ-WOan4U8V.chunk.mjs";import"./mdi-B6W_Xvj-.chunk.mjs";import"./PencilOutline-DhyEf5vr.chunk.mjs";import"./NcTextArea-Dxzj4zdb-cEtDIZuj.chunk.mjs";import"./NcContent-BYh5hWDN-BPQwUlVv.chunk.mjs";import"./index-BDlLVKOD.chunk.mjs";import"./TrashCanOutline-BU3aqDG_.chunk.mjs";import"./TrayArrowDown-Fnpm9Yo9.chunk.mjs";import"./NcInputField-5Sg6EUP6-DXw-ZWiv.chunk.mjs";import"./index-CmDAUQql.chunk.mjs";import"./NcAvatar-1KxMUN7V-X_YNB4Fv.chunk.mjs";import"./index-CkGt55pS.chunk.mjs";import"./util-DBjHxD9z.chunk.mjs";import"./ArrowRight-CSlQTlWs.chunk.mjs";import"./colors-Cv9F-jWS-BFJACjQq.chunk.mjs";import"./NcUserStatusIcon-BF5OEQFU-Bh_IaQ_D.chunk.mjs";import"./NcDateTime.vue_vue_type_script_setup_true_lang-BJuPH7S7-DKsF6FS9.chunk.mjs";import"./NcEmptyContent-CGAPqk4S-LFG8iXZZ.chunk.mjs";import"./NcBreadcrumbs-B4eyDS9i-BkuFqTyn.chunk.mjs";import"./NcPasswordField-BFyzHTOO-7Y4psNBG.chunk.mjs";import"./NcTextField.vue_vue_type_script_setup_true_lang-Bx2esFU2-D61trFet.chunk.mjs";/* empty css */import"./NcCheckboxRadioSwitch-DVdt5Hkq-COYVxuqr.chunk.mjs";import"./Plus-Cvoorj3T.chunk.mjs";import"./index-BRPJrOcF.chunk.mjs";import"./index-Cdqy7gO-.chunk.mjs";import"./NcEmojiPicker-UTxgju3f-HSbVMwrx.chunk.mjs";import"./emoji-C8k9NUlo-BQiX-d8c.chunk.mjs";import"./index-D9CqvIri.chunk.mjs";/* empty css */import"./index-DueKLP2f.chunk.mjs";import"./NcSelectTags-I2hJaNax-B2PZ_kex.chunk.mjs";import"./ContentCopy-B9XOXCFO.chunk.mjs";import"./NcUserBubble-BXR7vT0V-CXAEWnoj.chunk.mjs";import"./index-mH69OG7L.chunk.mjs";import"./pinia-BsumPXOW.chunk.mjs";import"./modulepreload-polyfill-BxzAKjcf.chunk.mjs";import"./index-BgrtITOq.chunk.mjs";const J=w({__name:"AppLink",props:{href:{}},setup(t){const o=t,i=j(),e=Object.fromEntries(B("core","apps").map(a=>[a.app??a.id,a.href])),s=y(),r=y();return T(()=>{const a=o.href.match(/^app:(\/\/)?([^/]+)(\/.+)?$/);if(s.value=void 0,r.value=void 0,a===null){r.value={href:o.href,target:"_blank",rel:"noreferrer noopener"};return}const m=a[2];if(a[3]){r.value={href:D(`/apps/${m}${a[3]}`)};return}if(m in e){r.value={href:e[m]};return}s.value={to:{name:"apps-discover",params:{category:i.params?.category??"discover",id:m}}}}),(a,m)=>r.value?(p(),l("a",g(v({key:0},r.value)),[I(a.$slots,"default")],16)):s.value?(p(),f(_(E),g(v({key:1},s.value)),{default:$(()=>[I(a.$slots,"default")]),_:3},16)):h("",!0)}}),K=["href","title"],M={key:1,class:"app-discover-app"},N={class:"app-discover-app__wrapper"},P={class:"app-discover-app__name"},Q=w({__name:"DiscoverTypeApp",props:{modelValue:{}},setup(t){const o=t,i=O(),e=u(()=>i.getAppById(o.modelValue.appId)),s=u(()=>o.modelValue.appId?`https://apps.nextcloud.com/apps/${o.modelValue.appId}`:"#");return(r,a)=>e.value?(p(),l("article",M,[d(A,{class:"app-discover-app__image",app:e.value},null,8,["app"]),c("div",N,[c("h3",P,[d(J,{href:`app:${e.value.id}`},{default:$(()=>[F(k(e.value.name),1)]),_:1},8,["href"])]),c("p",null,k(e.value.summary),1),d(R,{class:"app-discover-app__score",app:e.value},null,8,["app"])])])):(p(),l("a",{key:0,class:"app-discover-app app-discover-app__skeleton",href:s.value,target:"_blank",title:t.modelValue.appId,rel:"noopener noreferrer"},[...a[0]||(a[0]=[q('',5)])],8,K))}}),U=V(Q,[["__scopeId","data-v-6a756697"]]),W={key:0},X={class:"app-discover-showcase__list"},Y=w({__name:"DiscoverTypeShowcase",props:{...S,content:{type:Array,required:!0}},setup(t){const o=t,i=C(u(()=>o.headline)),e=y(),{width:s}=x(e),r=u(()=>s.value<768),a=u(()=>s.value<512);return(m,Z)=>(p(),l("section",{ref_key:"container",ref:e,class:L(["app-discover-showcase",{"app-discover-showcase--small":r.value,"app-discover-showcase--extra-small":a.value}])},[_(i)?(p(),l("h3",W,k(_(i)),1)):h("",!0),c("ul",X,[(p(!0),l(G,null,H(t.content,(n,b)=>(p(),l("li",{key:"id"in n?n.id:b,class:"app-discover-showcase__item"},[n.type==="post"?(p(),f(z,v({key:0,ref_for:!0},n,{inline:""}),null,16)):n.type==="app"?(p(),f(U,{key:1,modelValue:n},null,8,["modelValue"])):h("",!0)]))),128))])],2))}}),Pa=V(Y,[["__scopeId","data-v-83c1b4dd"]]);export{Pa as default}; -//# sourceMappingURL=DiscoverTypeShowcase-65aK4fEm.chunk.mjs.map +import{u as x}from"./NcModal-DiDvgcU8-Cb_C64qI.chunk.mjs";import{A}from"./UpdateAllDialog-FlTEPsBb.chunk.mjs";import{l as B,_ as V}from"./public-C1mLBHT3.chunk.mjs";import{b as D}from"./index-Cp0kcsps.chunk.mjs";import{u as j,R as E}from"./logger-D3RVzcfQ-BrUWOyzd.chunk.mjs";import{b as w,E as T,o as p,f as l,G as g,m as v,i as I,c as f,u as _,w as $,h,l as y,H as q,k as d,g as c,j as F,t as k,v as u,F as G,B as H,y as L}from"./Web-DYqXJUev.chunk.mjs";import{u as O,B as R}from"./appstore-main.mjs";import{c as S,D as z,u as C}from"./DiscoverTypePost-DbZIG6zf.chunk.mjs";import"./createElementId-DhjFt1I9-BmyhoOWk.chunk.mjs";import"./translation-DoG5ZELJ-WOan4U8V.chunk.mjs";import"./mdi-BU6wr1QN.chunk.mjs";import"./PencilOutline-CA_ZiZlA.chunk.mjs";import"./NcTextArea-Dxzj4zdb-DLw_yRcD.chunk.mjs";import"./NcContent-BYh5hWDN-C1_miOvl.chunk.mjs";import"./index-BhwlPNkJ.chunk.mjs";import"./TrashCanOutline-BU3aqDG_.chunk.mjs";import"./TrayArrowDown-ZQRTTdRd.chunk.mjs";import"./NcInputField-5Sg6EUP6-CUyzAC2j.chunk.mjs";import"./index-CHUjKZ5R.chunk.mjs";import"./NcAvatar-1KxMUN7V-R6Nmwuvb.chunk.mjs";import"./index-CkGt55pS.chunk.mjs";import"./util-DBjHxD9z.chunk.mjs";import"./ArrowRight-BCzIOZ0l.chunk.mjs";import"./colors-Cv9F-jWS-BFJACjQq.chunk.mjs";import"./NcUserStatusIcon-BF5OEQFU-pJ2xeKbO.chunk.mjs";import"./NcDateTime.vue_vue_type_script_setup_true_lang-BJuPH7S7-BThMWOZt.chunk.mjs";import"./NcEmptyContent-CGAPqk4S-LFG8iXZZ.chunk.mjs";import"./NcBreadcrumbs-B4eyDS9i-bX0dOZmj.chunk.mjs";import"./NcPasswordField-BFyzHTOO-BIm5AMSG.chunk.mjs";import"./NcTextField.vue_vue_type_script_setup_true_lang-Bx2esFU2-CGsfYqql.chunk.mjs";/* empty css */import"./NcCheckboxRadioSwitch-DVdt5Hkq-COYVxuqr.chunk.mjs";import"./Plus-BxwPZLA-.chunk.mjs";import"./index-BH07KH9-.chunk.mjs";import"./index-C1YcCfSa.chunk.mjs";import"./NcEmojiPicker-UTxgju3f-D4QbKSIV.chunk.mjs";import"./emoji-C8k9NUlo-BQiX-d8c.chunk.mjs";import"./index-EuTrUPdZ.chunk.mjs";/* empty css */import"./index-8LKFZV9o.chunk.mjs";import"./NcSelectTags-I2hJaNax-N6jSSGJD.chunk.mjs";import"./ContentCopy-B9XOXCFO.chunk.mjs";import"./NcUserBubble-BXR7vT0V-BaTRETFp.chunk.mjs";import"./index-BQu_HuHB.chunk.mjs";import"./pinia-BsumPXOW.chunk.mjs";import"./modulepreload-polyfill-BxzAKjcf.chunk.mjs";import"./index-g0PRm924.chunk.mjs";const J=w({__name:"AppLink",props:{href:{}},setup(t){const o=t,i=j(),e=Object.fromEntries(B("core","apps").map(a=>[a.app??a.id,a.href])),s=y(),r=y();return T(()=>{const a=o.href.match(/^app:(\/\/)?([^/]+)(\/.+)?$/);if(s.value=void 0,r.value=void 0,a===null){r.value={href:o.href,target:"_blank",rel:"noreferrer noopener"};return}const m=a[2];if(a[3]){r.value={href:D(`/apps/${m}${a[3]}`)};return}if(m in e){r.value={href:e[m]};return}s.value={to:{name:"apps-discover",params:{category:i.params?.category??"discover",id:m}}}}),(a,m)=>r.value?(p(),l("a",g(v({key:0},r.value)),[I(a.$slots,"default")],16)):s.value?(p(),f(_(E),g(v({key:1},s.value)),{default:$(()=>[I(a.$slots,"default")]),_:3},16)):h("",!0)}}),K=["href","title"],M={key:1,class:"app-discover-app"},N={class:"app-discover-app__wrapper"},P={class:"app-discover-app__name"},Q=w({__name:"DiscoverTypeApp",props:{modelValue:{}},setup(t){const o=t,i=O(),e=u(()=>i.getAppById(o.modelValue.appId)),s=u(()=>o.modelValue.appId?`https://apps.nextcloud.com/apps/${o.modelValue.appId}`:"#");return(r,a)=>e.value?(p(),l("article",M,[d(A,{class:"app-discover-app__image",app:e.value},null,8,["app"]),c("div",N,[c("h3",P,[d(J,{href:`app:${e.value.id}`},{default:$(()=>[F(k(e.value.name),1)]),_:1},8,["href"])]),c("p",null,k(e.value.summary),1),d(R,{class:"app-discover-app__score",app:e.value},null,8,["app"])])])):(p(),l("a",{key:0,class:"app-discover-app app-discover-app__skeleton",href:s.value,target:"_blank",title:t.modelValue.appId,rel:"noopener noreferrer"},[...a[0]||(a[0]=[q('',5)])],8,K))}}),U=V(Q,[["__scopeId","data-v-6a756697"]]),W={key:0},X={class:"app-discover-showcase__list"},Y=w({__name:"DiscoverTypeShowcase",props:{...S,content:{type:Array,required:!0}},setup(t){const o=t,i=C(u(()=>o.headline)),e=y(),{width:s}=x(e),r=u(()=>s.value<768),a=u(()=>s.value<512);return(m,Z)=>(p(),l("section",{ref_key:"container",ref:e,class:L(["app-discover-showcase",{"app-discover-showcase--small":r.value,"app-discover-showcase--extra-small":a.value}])},[_(i)?(p(),l("h3",W,k(_(i)),1)):h("",!0),c("ul",X,[(p(!0),l(G,null,H(t.content,(n,b)=>(p(),l("li",{key:"id"in n?n.id:b,class:"app-discover-showcase__item"},[n.type==="post"?(p(),f(z,v({key:0,ref_for:!0},n,{inline:""}),null,16)):n.type==="app"?(p(),f(U,{key:1,modelValue:n},null,8,["modelValue"])):h("",!0)]))),128))])],2))}}),Pa=V(Y,[["__scopeId","data-v-83c1b4dd"]]);export{Pa as default}; +//# sourceMappingURL=DiscoverTypeShowcase-BdX4MG-M.chunk.mjs.map diff --git a/dist/DiscoverTypeShowcase-65aK4fEm.chunk.mjs.license b/dist/DiscoverTypeShowcase-BdX4MG-M.chunk.mjs.license similarity index 100% rename from dist/DiscoverTypeShowcase-65aK4fEm.chunk.mjs.license rename to dist/DiscoverTypeShowcase-BdX4MG-M.chunk.mjs.license diff --git a/dist/DiscoverTypeShowcase-65aK4fEm.chunk.mjs.map b/dist/DiscoverTypeShowcase-BdX4MG-M.chunk.mjs.map similarity index 99% rename from dist/DiscoverTypeShowcase-65aK4fEm.chunk.mjs.map rename to dist/DiscoverTypeShowcase-BdX4MG-M.chunk.mjs.map index d028cc3194b93..a50dbc3742571 100644 --- a/dist/DiscoverTypeShowcase-65aK4fEm.chunk.mjs.map +++ b/dist/DiscoverTypeShowcase-BdX4MG-M.chunk.mjs.map @@ -1 +1 @@ -{"version":3,"file":"DiscoverTypeShowcase-65aK4fEm.chunk.mjs","sources":["../build/frontend/apps/appstore/src/components/AppLink.vue","../build/frontend/apps/appstore/src/components/DiscoverType/DiscoverTypeApp.vue","../build/frontend/apps/appstore/src/components/DiscoverType/DiscoverTypeShowcase.vue"],"sourcesContent":["\n\n\n\n\n","\n\n\n\n\n\n\n","\n\n\n\n\n\n"],"names":["props","__props","route","useRoute","knownRoutes","loadState","app","routerProps","ref","linkProps","watchEffect","match","appId","generateUrl","_openBlock","_createElementBlock","_renderSlot","_ctx","_createBlock","_unref","store","useAppsStore","computed","appStoreLink","_hoisted_2","_createVNode","AppImage","_createElementVNode","_hoisted_3","_hoisted_4","AppLink","_createTextVNode","_toDisplayString","BadgeAppScore","translatedHeadline","useLocalizedValue","container","containerWidth","useElementSize","isSmallWidth","isExtraSmallWidth","_Fragment","_renderList","item","index","DiscoverTypePost","_mergeProps","DiscoverTypeApp"],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"DiscoverTypeShowcase-BdX4MG-M.chunk.mjs","sources":["../build/frontend/apps/appstore/src/components/AppLink.vue","../build/frontend/apps/appstore/src/components/DiscoverType/DiscoverTypeApp.vue","../build/frontend/apps/appstore/src/components/DiscoverType/DiscoverTypeShowcase.vue"],"sourcesContent":["\n\n\n\n\n","\n\n\n\n\n\n\n","\n\n\n\n\n\n"],"names":["props","__props","route","useRoute","knownRoutes","loadState","app","routerProps","ref","linkProps","watchEffect","match","appId","generateUrl","_openBlock","_createElementBlock","_renderSlot","_ctx","_createBlock","_unref","store","useAppsStore","computed","appStoreLink","_hoisted_2","_createVNode","AppImage","_createElementVNode","_hoisted_3","_hoisted_4","AppLink","_createTextVNode","_toDisplayString","BadgeAppScore","translatedHeadline","useLocalizedValue","container","containerWidth","useElementSize","isSmallWidth","isExtraSmallWidth","_Fragment","_renderList","item","index","DiscoverTypePost","_mergeProps","DiscoverTypeApp"],"mappings":"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"} \ No newline at end of file diff --git a/dist/DiscoverTypeShowcase-65aK4fEm.chunk.mjs.map.license b/dist/DiscoverTypeShowcase-BdX4MG-M.chunk.mjs.map.license similarity index 100% rename from dist/DiscoverTypeShowcase-65aK4fEm.chunk.mjs.map.license rename to dist/DiscoverTypeShowcase-BdX4MG-M.chunk.mjs.map.license diff --git a/dist/FilePicker-0pVFI2AM.chunk.mjs b/dist/FilePicker-BXhywAAW.chunk.mjs similarity index 97% rename from dist/FilePicker-0pVFI2AM.chunk.mjs rename to dist/FilePicker-BXhywAAW.chunk.mjs index e5c0bf1c60d64..977a7aed21f94 100644 --- a/dist/FilePicker-0pVFI2AM.chunk.mjs +++ b/dist/FilePicker-BXhywAAW.chunk.mjs @@ -1,2 +1,2 @@ -import{r as re,o as s,f as c,c as C,q as Fe,w,i as ne,g as f,y as U,j as q,t as $,m as D,h as z,k as _,L as K,F as M,ag as be,ac as A,E as Ue,a8 as O,l as L,b as H,z as Pe,S as J,u as d,v as b,ah as de,n as ue,p as We,B as Q,s as pe,ai as Te,D as qe,N as Oe,O as Ze,a5 as Se}from"./Web-DYqXJUev.chunk.mjs";import{u as je,d as Ge,s as Je,b as me,f as Ke,n as X,a as Qe,m as Xe}from"./index-Cp0kcsps.chunk.mjs";import{N as Ye}from"./index-CmDAUQql.chunk.mjs";import{N as we}from"./NcEmptyContent-CGAPqk4S-LFG8iXZZ.chunk.mjs";import{v as et,I as tt,e as se,f as it,s as at}from"./index-BGv_Bbjs.chunk.mjs";import{N as Z}from"./logger-D3RVzcfQ-Bt9JRPzn.chunk.mjs";import{N as Ne}from"./NcCheckboxRadioSwitch-DVdt5Hkq-COYVxuqr.chunk.mjs";import{N as ke,a as _e,_ as lt}from"./NcDateTime.vue_vue_type_script_setup_true_lang-BJuPH7S7-DKsF6FS9.chunk.mjs";import{w as rt,x as nt,y as st,z as ot,A as ct,B as dt,C as Ce,t as ut,c as pt}from"./mdi-B6W_Xvj-.chunk.mjs";import{S as Le}from"./ShareType-suoNfd7y.chunk.mjs";import{_ as ee,c as ft,N as xe}from"./createElementId-DhjFt1I9-BmyhoOWk.chunk.mjs";import{F as j,P as $e}from"./folder-29HuacU_-YFFzfmzN.chunk.mjs";import"./translation-DoG5ZELJ-WOan4U8V.chunk.mjs";import{P as mt,a as ht}from"./NcBreadcrumbs-B4eyDS9i-BkuFqTyn.chunk.mjs";import{t as h,l as G,a as he}from"./index-mH69OG7L.chunk.mjs";import{c as Ve}from"./index-CkGt55pS.chunk.mjs";import{l as Ie,i as De}from"./public-C1mLBHT3.chunk.mjs";import{b as ve,p as vt}from"./NcModal-DiDvgcU8-7_SNLMd-.chunk.mjs";import{N as ze}from"./PencilOutline-DhyEf5vr.chunk.mjs";import{N as gt}from"./index-BDlLVKOD.chunk.mjs";import{_ as yt}from"./NcTextField.vue_vue_type_script_setup_true_lang-Bx2esFU2-D61trFet.chunk.mjs";import{g as bt,h as wt,i as ge,j as kt,r as ye,k as Me}from"./dav-DpOWisxz.chunk.mjs";import"./TrashCanOutline-BU3aqDG_.chunk.mjs";import"./util-DBjHxD9z.chunk.mjs";import"./NcPasswordField-BFyzHTOO-7Y4psNBG.chunk.mjs";import"./NcInputField-5Sg6EUP6-DXw-ZWiv.chunk.mjs";import"./index-D5zm-WFT.chunk.mjs";const _t={name:"ChevronRightIcon",emits:["click"],props:{title:{type:String},fillColor:{type:String,default:"currentColor"},size:{type:Number,default:24}}},Ct=["aria-hidden","aria-label"],Lt=["fill","width","height"],$t={d:"M8.59,16.58L13.17,12L8.59,7.41L10,6L16,12L10,18L8.59,16.58Z"},zt={key:0};function Bt(t,i,e,a,l,r){return s(),c("span",D(t.$attrs,{"aria-hidden":e.title?null:"true","aria-label":e.title,class:"material-design-icon chevron-right-icon",role:"img",onClick:i[0]||(i[0]=n=>t.$emit("click",n))}),[(s(),c("svg",{fill:e.fillColor,class:"material-design-icon__svg",width:e.size,height:e.size,viewBox:"0 0 24 24"},[f("path",$t,[e.title?(s(),c("title",zt,$(e.title),1)):z("",!0)])],8,Lt))],16,Ct)}const Ft=ee(_t,[["render",Bt]]),Pt={name:"NcBreadcrumb",components:{NcActions:ve,ChevronRight:Ft,NcButton:Z},inheritAttrs:!1,props:{name:{type:String,required:!0},title:{type:String,default:null},to:{type:[String,Object],default:void 0},href:{type:String,default:void 0},icon:{type:String,default:""},forceIconText:{type:Boolean,default:!1},disableDrop:{type:Boolean,default:!1},forceMenu:{type:Boolean,default:!1},open:{type:Boolean,default:!1},class:{type:[String,Array,Object],default:""}},emits:["dragenter","dragleave","dropped","update:open"],setup(){const t=ft();return{actionsContainer:`.vue-crumb[data-crumb-id="${t}"]`,crumbId:t}},data(){return{hovering:!1}},computed:{linkAttributes(){return this.to?{to:this.to,...this.$attrs}:this.href?{href:this.href,...this.$attrs}:this.$attrs}},methods:{onOpenChange(t){this.$emit("update:open",t)},dropped(t){return this.disableDrop||(this.$emit("dropped",t,this.to||this.href),this.$parent.$emit("dropped",t,this.to||this.href),this.hovering=!1),!1},dragEnter(t){this.$emit("dragenter",t),!this.disableDrop&&(this.hovering=!0)},dragLeave(t){this.$emit("dragleave",t),!this.disableDrop&&(t.target.contains(t.relatedTarget)||this.$refs.crumb.contains(t.relatedTarget)||(this.hovering=!1))}}},St=["data-crumb-id"];function Nt(t,i,e,a,l,r){const n=re("NcButton"),u=re("NcActions"),p=re("ChevronRight");return s(),c("li",{ref:"crumb",class:U(["vue-crumb",[{"vue-crumb--hovered":l.hovering},t.$props.class]]),"data-crumb-id":a.crumbId,draggable:"false",onDragstart:K(()=>{},["prevent"]),onDrop:i[0]||(i[0]=K((...o)=>r.dropped&&r.dropped(...o),["prevent"])),onDragover:K(()=>{},["prevent"]),onDragenter:i[1]||(i[1]=(...o)=>r.dragEnter&&r.dragEnter(...o)),onDragleave:i[2]||(i[2]=(...o)=>r.dragLeave&&r.dragLeave(...o))},[(e.name||e.icon||t.$slots.icon)&&!t.$slots.default?(s(),C(n,D({key:0,"aria-label":e.icon?e.name:void 0,variant:"tertiary"},r.linkAttributes),Fe({_:2},[t.$slots.icon||e.icon?{name:"icon",fn:w(()=>[ne(t.$slots,"icon",{},()=>[f("span",{class:U([e.icon,"icon"])},null,2)],!0)]),key:"0"}:void 0,!(t.$slots.icon||e.icon)||e.forceIconText?{name:"default",fn:w(()=>[q($(e.name),1)]),key:"1"}:void 0]),1040,["aria-label"])):z("",!0),t.$slots.default?(s(),C(u,{key:1,ref:"actions",container:a.actionsContainer,forceMenu:e.forceMenu,forceName:"",menuName:e.name,open:e.open,title:e.title,variant:"tertiary","onUpdate:open":r.onOpenChange},{icon:w(()=>[ne(t.$slots,"menu-icon",{},void 0,!0)]),default:w(()=>[ne(t.$slots,"default",{},void 0,!0)]),_:3},8,["container","forceMenu","menuName","open","title","onUpdate:open"])):z("",!0),_(p,{class:"vue-crumb__separator",size:20})],42,St)}const Y=ee(Pt,[["render",Nt],["__scopeId","data-v-7cec4a3e"]]),xt={name:"FolderIcon",emits:["click"],props:{title:{type:String},fillColor:{type:String,default:"currentColor"},size:{type:Number,default:24}}},Vt=["aria-hidden","aria-label"],It=["fill","width","height"],Dt={d:"M10,4H4C2.89,4 2,4.89 2,6V18A2,2 0 0,0 4,20H20A2,2 0 0,0 22,18V8C22,6.89 21.1,6 20,6H12L10,4Z"},Mt={key:0};function Rt(t,i,e,a,l,r){return s(),c("span",D(t.$attrs,{"aria-hidden":e.title?null:"true","aria-label":e.title,class:"material-design-icon folder-icon",role:"img",onClick:i[0]||(i[0]=n=>t.$emit("click",n))}),[(s(),c("svg",{fill:e.fillColor,class:"material-design-icon__svg",width:e.size,height:e.size,viewBox:"0 0 24 24"},[f("path",Dt,[e.title?(s(),c("title",Mt,$(e.title),1)):z("",!0)])],8,It))],16,Vt)}const Be=ee(xt,[["render",Rt]]),N="vue-crumb",At={name:"NcBreadcrumbs",components:{NcActions:ve,NcActionButton:ze,NcActionRouter:_e,NcActionLink:ke,NcBreadcrumb:Y,IconFolder:Be},props:{rootIcon:{type:String,default:"icon-home"},ariaLabel:{type:String,default:null}},emits:["dropped"],data(){return{hiddenIndices:[],menuBreadcrumbProps:{name:"",forceMenu:!0,disableDrop:!0,open:!1},breadcrumbsRefs:[]}},created(){window.addEventListener("resize",Ge(()=>{this.handleWindowResize()},100)),Je("navigation-toggled",this.delayedResize)},mounted(){this.handleWindowResize()},updated(){this.delayedResize(),this.$nextTick(()=>{this.hideCrumbs()})},beforeUnmount(){window.removeEventListener("resize",this.handleWindowResize),je("navigation-toggled",this.delayedResize)},methods:{closeActions(t){this.$refs.actionsBreadcrumb.$el.contains(t.relatedTarget)||(this.menuBreadcrumbProps.open=!1)},async delayedResize(){await this.$nextTick(),this.handleWindowResize()},handleWindowResize(){if(!this.$refs.container)return;const t=this.breadcrumbsRefs.length,i=[],e=this.$refs.container.offsetWidth;let a=this.getTotalWidth();this.$refs.breadcrumb__actions&&(a+=this.$refs.breadcrumb__actions.offsetWidth);let l=a-e;l+=l>0?64:0;let r=0;const n=Math.floor(t/2);for(;l>0&&ru-p))||(this.hiddenIndices=i)},arraysEqual(t,i){if(t.length!==i.length)return!1;if(t===i)return!0;if(t===null||i===null)return!1;for(let e=0;et+this.getWidth(i.$el,e===this.breadcrumbsRefs.length-1),0)},getWidth(t,i){if(!t?.classList)return 0;const e=t.classList.contains(`${N}--hidden`);t.style.minWidth="auto",i&&(t.style.maxWidth="210px"),t.classList.remove(`${N}--hidden`);const a=t.offsetWidth;return e&&t.classList.add(`${N}--hidden`),t.style.minWidth="",t.style.maxWidth="",a},preventDefault(t){return t.preventDefault&&t.preventDefault(),!1},dragStart(t){return this.preventDefault(t)},dropped(t,i,e){e||this.$emit("dropped",t,i),this.menuBreadcrumbProps.open=!1;const a=document.querySelectorAll(`.${N}`);for(const l of a)l.classList.remove(`${N}--hovered`);return this.preventDefault(t)},dragOver(t){return this.preventDefault(t)},dragEnter(t,i){if(!i&&t.target.closest){const e=t.target.closest(`.${N}`);if(e.classList&&e.classList.contains(N)){const a=document.querySelectorAll(`.${N}`);for(const l of a)l.classList.remove(`${N}--hovered`);e.classList.add(`${N}--hovered`)}}},dragLeave(t,i){if(!i&&!t.target.contains(t.relatedTarget)&&t.target.closest){const e=t.target.closest(`.${N}`);if(e.contains(t.relatedTarget))return;e.classList&&e.classList.contains(N)&&e.classList.remove(`${N}--hovered`)}},hideCrumbs(){this.breadcrumbsRefs.forEach((t,i)=>{t?.$el?.classList&&(this.hiddenIndices.includes(i)?t.$el.classList.add(`${N}--hidden`):t.$el.classList.remove(`${N}--hidden`))})},isBreadcrumb(t){return t?.type?.name==="NcBreadcrumb"}},render(){let t=[];if(this.$slots.default?.().forEach(l=>{if(this.isBreadcrumb(l)){t.push(l);return}l?.type===M&&l?.children?.forEach?.(r=>{this.isBreadcrumb(r)&&t.push(r)})}),t.length===0)return;t[0]=be(t[0],{icon:this.rootIcon,ref:"breadcrumbs"});const i=[];t=t.map((l,r)=>be(l,{ref:n=>{i[r]=n}}));const e=[...t];this.hiddenIndices.length&&e.splice(Math.round(t.length/2),0,A(Y,{class:"dropdown",...this.menuBreadcrumbProps,"aria-hidden":!0,ref:"actionsBreadcrumb",key:"actions-breadcrumb-1",onDragenter:()=>{this.menuBreadcrumbProps.open=!0},onDragleave:this.closeActions,"onUpdate:open":l=>{this.menuBreadcrumbProps.open=l}},{default:()=>this.hiddenIndices.filter(l=>l<=t.length-1).map(l=>{const r=t[l],{to:n,href:u,disableDrop:p,name:o,...g}=r.props;delete g.ref;let y=ze,v="";u&&(y=ke,v=u),n&&(y=_e,v=n);const B=A(Be,{size:20});return A(y,{...g,class:N,href:u||null,to:n||null,draggable:!1,onDragstart:this.dragStart,onDrop:V=>this.dropped(V,v,p),onDragover:this.dragOver,onDragenter:V=>this.dragEnter(V,p),onDragleave:V=>this.dragLeave(V,p)},{default:()=>o,icon:()=>B})})}));const a=[A("nav",{"aria-label":this.ariaLabel},[A("ul",{class:"breadcrumb__crumbs"},[e])])];return vt(this.$slots.actions?.())&&a.push(A("div",{class:"breadcrumb__actions",ref:"breadcrumb__actions"},this.$slots.actions?.())),this.breadcrumbsRefs=i,A("div",{class:["breadcrumb",{"breadcrumb--collapsed":this.hiddenIndices.length===t.length-2}],ref:"container"},a)}},Ht=ee(At,[["__scopeId","data-v-5a4d73af"]]),Et=new mt({concurrency:5});function Ut(t){const{resolve:i,promise:e}=Promise.withResolvers();return Et.add(()=>{const a=new Image;return a.onerror=()=>i(!1),a.onload=()=>i(!0),a.src=t,e}),e}function Wt(t,i={}){i={size:32,cropPreview:!1,mimeFallback:!0,...i};try{const e=t.attributes?.previewUrl||me("/core/preview?fileId={fileid}",{fileid:t.fileid});let a;try{a=new URL(e)}catch{a=new URL(e,window.location.origin)}return a.searchParams.set("x",`${i.size}`),a.searchParams.set("y",`${i.size}`),a.searchParams.set("mimeFallback",`${i.mimeFallback}`),a.searchParams.set("a",i.cropPreview===!0?"0":"1"),a.searchParams.set("c",`${t.attributes.etag}`),a}catch{return null}}function Tt(t,i){const e=L(null),a=L(!1);return Ue(()=>{a.value=!1,e.value=Wt(O(t),O(i||{})),e.value&&O(t).type===j.File&&Ut(e.value.href).then(l=>{a.value=l})}),{previewURL:e,previewLoaded:a}}const x=(t,i)=>{const e=t.__vccOpts||t;for(const[a,l]of i)e[a]=l;return e},qt={name:"FileIcon",emits:["click"],props:{title:{type:String},fillColor:{type:String,default:"currentColor"},size:{type:Number,default:24}}},Ot=["aria-hidden","aria-label"],Zt=["fill","width","height"],jt={d:"M13,9V3.5L18.5,9M6,2C4.89,2 4,2.89 4,4V20A2,2 0 0,0 6,22H18A2,2 0 0,0 20,20V8L14,2H6Z"},Gt={key:0};function Jt(t,i,e,a,l,r){return s(),c("span",D(t.$attrs,{"aria-hidden":e.title?null:"true","aria-label":e.title,class:"material-design-icon file-icon",role:"img",onClick:i[0]||(i[0]=n=>t.$emit("click",n))}),[(s(),c("svg",{fill:e.fillColor,class:"material-design-icon__svg",width:e.size,height:e.size,viewBox:"0 0 24 24"},[f("path",jt,[e.title?(s(),c("title",Gt,$(e.title),1)):z("",!0)])],8,Zt))],16,Ot)}const fe=x(qt,[["render",Jt]]),Kt={name:"MenuDownIcon",emits:["click"],props:{title:{type:String},fillColor:{type:String,default:"currentColor"},size:{type:Number,default:24}}},Qt=["aria-hidden","aria-label"],Xt=["fill","width","height"],Yt={d:"M7,10L12,15L17,10H7Z"},ei={key:0};function ti(t,i,e,a,l,r){return s(),c("span",D(t.$attrs,{"aria-hidden":e.title?null:"true","aria-label":e.title,class:"material-design-icon menu-down-icon",role:"img",onClick:i[0]||(i[0]=n=>t.$emit("click",n))}),[(s(),c("svg",{fill:e.fillColor,class:"material-design-icon__svg",width:e.size,height:e.size,viewBox:"0 0 24 24"},[f("path",Yt,[e.title?(s(),c("title",ei,$(e.title),1)):z("",!0)])],8,Xt))],16,Qt)}const oe=x(Kt,[["render",ti]]),ii={name:"MenuUpIcon",emits:["click"],props:{title:{type:String},fillColor:{type:String,default:"currentColor"},size:{type:Number,default:24}}},ai=["aria-hidden","aria-label"],li=["fill","width","height"],ri={d:"M7,15L12,10L17,15H7Z"},ni={key:0};function si(t,i,e,a,l,r){return s(),c("span",D(t.$attrs,{"aria-hidden":e.title?null:"true","aria-label":e.title,class:"material-design-icon menu-up-icon",role:"img",onClick:i[0]||(i[0]=n=>t.$emit("click",n))}),[(s(),c("svg",{fill:e.fillColor,class:"material-design-icon__svg",width:e.size,height:e.size,viewBox:"0 0 24 24"},[f("path",ri,[e.title?(s(),c("title",ni,$(e.title),1)):z("",!0)])],8,li))],16,ai)}const ce=x(ii,[["render",si]]),oi={name:"FolderIcon",emits:["click"],props:{title:{type:String},fillColor:{type:String,default:"currentColor"},size:{type:Number,default:24}}},ci=["aria-hidden","aria-label"],di=["fill","width","height"],ui={d:"M10,4H4C2.89,4 2,4.89 2,6V18A2,2 0 0,0 4,20H20A2,2 0 0,0 22,18V8C22,6.89 21.1,6 20,6H12L10,4Z"},pi={key:0};function fi(t,i,e,a,l,r){return s(),c("span",D(t.$attrs,{"aria-hidden":e.title?null:"true","aria-label":e.title,class:"material-design-icon folder-icon",role:"img",onClick:i[0]||(i[0]=n=>t.$emit("click",n))}),[(s(),c("svg",{fill:e.fillColor,class:"material-design-icon__svg",width:e.size,height:e.size,viewBox:"0 0 24 24"},[f("path",ui,[e.title?(s(),c("title",pi,$(e.title),1)):z("",!0)])],8,di))],16,ci)}const Re=x(oi,[["render",fi]]),Ae={"file-picker__file-icon":"_file-picker__file-icon_1aykw_9","file-picker__file-icon--primary":"_file-picker__file-icon--primary_1aykw_22","file-picker__file-icon-overlay":"_file-picker__file-icon-overlay_1aykw_26"},mi=H({__name:"FilePreview",props:{node:{},cropImagePreviews:{type:Boolean}},setup(t){const i=t,e=L(Ae),{previewURL:a,previewLoaded:l}=Tt(Se(i,"node"),b(()=>({cropPreview:i.cropImagePreviews}))),r=b(()=>i.node.type===j.File),n=b(()=>{if(i.node.type!==j.Folder)return null;if(i.node.attributes?.["is-encrypted"]===1)return ot;if(i.node.attributes?.["is-tag"])return ct;const u=Object.values(i.node.attributes?.["share-types"]||{}).flat();if(u.some(p=>p===Le.Link||p===Le.Email))return dt;if(u.length>0)return Ce;switch(i.node.attributes?.["mount-type"]){case"external":case"external-session":return pt;case"group":return ut;case"shared":return Ce}return null});return(u,p)=>(s(),c("div",{style:Ze(d(l)?{backgroundImage:`url(${d(a)})`}:void 0),class:U(e.value["file-picker__file-icon"])},[d(l)?z("",!0):(s(),c(M,{key:0},[r.value?(s(),C(fe,{key:0,size:32})):(s(),c(M,{key:1},[n.value?(s(),C(d(xe),{key:0,class:U(e.value["file-picker__file-icon-overlay"]),inline:"",path:n.value,size:16},null,8,["class","path"])):z("",!0),_(Re,{class:U(e.value["file-picker__file-icon--primary"]),size:32},null,8,["class"])],64))],64))],6))}}),hi=["tabindex","aria-selected","data-filename"],vi={class:"row-name"},gi={class:"file-picker__name-container","data-testid":"row-name"},yi=["title","textContent"],bi=["textContent"],wi={class:"row-size"},ki={class:"row-modified"},_i=H({__name:"FileListRow",props:{allowPickDirectory:{type:Boolean},selected:{type:Boolean},showCheckbox:{type:Boolean},canPick:{type:Boolean},node:{},cropImagePreviews:{type:Boolean}},emits:["update:selected","enterDirectory"],setup(t,{emit:i}){const e=t,a=i,l=b(()=>e.node.mtime??0),r=b(()=>Xe(e.node.displayname)),n=b(()=>e.node.displayname.slice(0,r.value?-r.value.length:void 0)),u=b(()=>e.node.type===j.Folder),p=b(()=>e.canPick&&(e.allowPickDirectory||!u.value)),o=b(()=>(e.node.permissions&$e.READ)===$e.READ);function g(){p.value&&a("update:selected",!e.selected)}function y(){u.value?o.value&&a("enterDirectory",e.node):g()}function v(B){B.key==="Enter"&&y()}return(B,V)=>(s(),c("tr",D({tabindex:t.showCheckbox&&!u.value?void 0:0,"aria-selected":p.value?t.selected:void 0,class:["file-picker__row",[{"file-picker__row--selected":t.selected&&!t.showCheckbox,"file-picker__row--not-navigatable":u.value&&!o.value,"file-picker__row--not-pickable":!p.value}]],"data-filename":t.node.basename,"data-testid":"file-list-row"},Oe({click:y,...!t.showCheckbox||u.value?{keydown:v}:{}},!0)),[t.showCheckbox?(s(),c("td",{key:0,class:"row-checkbox",onClick:K(()=>{},["stop"])},[_(d(Ne),{"aria-label":d(h)("Select the row for {nodename}",{nodename:n.value}),disabled:!p.value,"data-testid":"row-checkbox",modelValue:t.selected,"onUpdate:modelValue":g},null,8,["aria-label","disabled","modelValue"])])):z("",!0),f("td",vi,[f("div",gi,[_(mi,{node:t.node,cropImagePreviews:t.cropImagePreviews},null,8,["node","cropImagePreviews"]),f("div",{class:"file-picker__file-name",title:n.value,textContent:$(n.value)},null,8,yi),f("div",{class:"file-picker__file-extension",textContent:$(r.value)},null,8,bi)])]),f("td",wi,$(d(it)(t.node.size||0)),1),f("td",ki,[_(d(lt),{timestamp:l.value,ignoreSeconds:""},null,8,["timestamp"])])],16,hi))}}),Ci=x(_i,[["__scopeId","data-v-7857e8bd"]]),Li={"aria-hidden":"true",class:"file-picker__row loading-row"},$i={key:0,class:"row-checkbox"},zi={class:"row-name"},Bi={class:"row-wrapper"},Fi=H({__name:"LoadingTableRow",props:{showCheckbox:{type:Boolean}},setup(t){return(i,e)=>(s(),c("tr",Li,[t.showCheckbox?(s(),c("td",$i,[...e[0]||(e[0]=[f("span",null,null,-1)])])):z("",!0),f("td",zi,[f("div",Bi,[f("span",{class:U(d(Ae)["file-picker__file-icon"])},null,2),e[1]||(e[1]=f("span",null,null,-1))])]),e[2]||(e[2]=f("td",{class:"row-size"},[f("span")],-1)),e[3]||(e[3]=f("td",{class:"row-modified"},[f("span")],-1))]))}}),Pi=x(Fi,[["__scopeId","data-v-1f96131b"]]);function He(){const t=Ie("files","config",null),i=L(t?.show_hidden??!0),e=L(t?.sort_favorites_first??!0),a=L(t?.crop_image_previews??!0);return J(async()=>{if(De())G.debug("Skip loading files settings - currently on public share");else try{const{data:l}=await Ve.get(me("/apps/files/api/v1/configs"));i.value=l?.data?.show_hidden??!1,e.value=l?.data?.sort_favorites_first??!0,a.value=l?.data?.crop_image_previews??!0}catch(l){G.error("Could not load files settings",{error:l}),he(h("Could not load files settings"))}}),{showHiddenFiles:i,sortFavoritesFirst:e,cropImagePreviews:a}}function Si(t){const i=o=>o==="asc"?"ascending":o==="desc"?"descending":"none",e=Ie("files","viewConfigs",null),a=L({sortBy:e?.files?.sorting_mode??"basename",order:i(e?.files?.sorting_direction??"asc")}),l=L({sortBy:e?.recent?.sorting_mode??"basename",order:i(e?.recent?.sorting_direction??"asc")}),r=L({sortBy:e?.favorites?.sorting_mode??"basename",order:i(e?.favorites?.sorting_direction??"asc")});J(async()=>{if(De())G.debug("Skip loading files views - currently on public share");else try{const{data:o}=await Ve.get(me("/apps/files/api/v1/views"));a.value={sortBy:o?.data?.files?.sorting_mode??"basename",order:i(o?.data?.files?.sorting_direction)},r.value={sortBy:o?.data?.favorites?.sorting_mode??"basename",order:i(o?.data?.favorites?.sorting_direction)},l.value={sortBy:o?.data?.recent?.sorting_mode??"basename",order:i(o?.data?.recent?.sorting_direction)}}catch(o){G.error("Could not load files views",{error:o}),he(h("Could not load files views"))}});const n=b(()=>O(t||"files")==="files"?a.value:O(t)==="recent"?l.value:r.value),u=b(()=>n.value.sortBy),p=b(()=>n.value.order);return{filesViewConfig:a,favoritesViewConfig:r,recentViewConfig:l,currentConfig:n,sortBy:u,order:p}}const Ni={key:0,class:"row-checkbox"},xi={class:"hidden-visually"},Vi=["aria-sort"],Ii={class:"header-wrapper"},Di={key:2,style:{width:"44px"}},Mi=["aria-sort"],Ri={key:2,style:{width:"44px"}},Ai=["aria-sort"],Hi={key:2,style:{width:"44px"}},Ei=H({__name:"FileList",props:pe({currentView:{},multiselect:{type:Boolean},allowPickDirectory:{type:Boolean},loading:{type:Boolean},files:{},canPick:{type:Function}},{path:{required:!0},pathModifiers:{},selectedFiles:{required:!0},selectedFilesModifiers:{}}),emits:["update:path","update:selectedFiles"],setup(t){const i=ue(t,"path"),e=ue(t,"selectedFiles"),a=t,l=L(),{currentConfig:r}=Si(a.currentView),n=b(()=>l.value??r.value),u=b(()=>n.value.sortBy==="basename"?n.value.order==="none"?void 0:n.value.order:void 0),p=b(()=>n.value.sortBy==="size"?n.value.order==="none"?void 0:n.value.order:void 0),o=b(()=>n.value.sortBy==="mtime"?n.value.order==="none"?void 0:n.value.order:void 0);function g(F){n.value.sortBy===F?n.value.order==="ascending"?l.value={sortBy:n.value.sortBy,order:"descending"}:l.value={sortBy:n.value.sortBy,order:"ascending"}:l.value={sortBy:F,order:"ascending"}}const{sortFavoritesFirst:y,cropImagePreviews:v}=He(),B=b(()=>at(a.files,{sortFoldersFirst:!0,sortFavoritesFirst:y.value,sortingOrder:n.value.order==="descending"?"desc":"asc",sortingMode:n.value.sortBy})),V=b(()=>a.files.filter(F=>a.allowPickDirectory||F.type!==j.Folder)),te=b(()=>!a.loading&&e.value.length>0&&e.value.length>=V.value.length);function W(){e.value.lengthP.path!==F.path):a.multiselect?e.value=[...e.value,F]:e.value=[F]}function ae(F){i.value=F.path}const T=L(4),E=L();{const F=()=>qe(()=>{const P=E.value?.parentElement?.children||[];let S=E.value?.parentElement?.clientHeight||450;for(let R=0;R{window.addEventListener("resize",F),F()}),Te(()=>{window.removeEventListener("resize",F)})}return(F,P)=>(s(),c("div",{ref_key:"fileContainer",ref:E,class:"file-picker__files"},[f("table",null,[f("thead",null,[f("tr",null,[t.multiselect?(s(),c("th",Ni,[f("span",xi,$(d(h)("Select entry")),1),t.multiselect?(s(),C(d(Ne),{key:0,"aria-label":d(h)("Select all entries"),"data-testid":"select-all-checkbox",modelValue:te.value,"onUpdate:modelValue":W},null,8,["aria-label","modelValue"])):z("",!0)])):z("",!0),f("th",{"aria-sort":u.value,class:"row-name"},[f("div",Ii,[P[3]||(P[3]=f("span",{class:"file-picker__header-preview"},null,-1)),_(d(Z),{"data-test":"file-picker_sort-name",variant:"tertiary",wide:"",onClick:P[0]||(P[0]=S=>g("basename"))},{icon:w(()=>[u.value==="ascending"?(s(),C(ce,{key:0,size:20})):u.value==="descending"?(s(),C(oe,{key:1,size:20})):(s(),c("span",Di))]),default:w(()=>[q(" "+$(d(h)("Name")),1)]),_:1})])],8,Vi),f("th",{"aria-sort":p.value,class:"row-size"},[_(d(Z),{variant:"tertiary",wide:"",onClick:P[1]||(P[1]=S=>g("size"))},{icon:w(()=>[p.value==="ascending"?(s(),C(ce,{key:0,size:20})):p.value==="descending"?(s(),C(oe,{key:1,size:20})):(s(),c("span",Ri))]),default:w(()=>[q(" "+$(d(h)("Size")),1)]),_:1})],8,Mi),f("th",{"aria-sort":o.value,class:"row-modified"},[_(d(Z),{variant:"tertiary",wide:"",onClick:P[2]||(P[2]=S=>g("mtime"))},{icon:w(()=>[o.value==="ascending"?(s(),C(ce,{key:0,size:20})):o.value==="descending"?(s(),C(oe,{key:1,size:20})):(s(),c("span",Hi))]),default:w(()=>[q(" "+$(d(h)("Modified")),1)]),_:1})],8,Ai)])]),f("tbody",null,[t.loading?(s(!0),c(M,{key:0},Q(T.value,S=>(s(),C(Pi,{key:S,showCheckbox:t.multiselect},null,8,["showCheckbox"]))),128)):(s(!0),c(M,{key:1},Q(B.value,S=>(s(),C(Ci,{key:S.fileid||S.path,allowPickDirectory:t.allowPickDirectory,showCheckbox:t.multiselect,canPick:(t.multiselect||e.value.length===0||e.value.includes(S))&&(t.canPick===void 0||t.canPick(S)),selected:e.value.includes(S),node:S,cropImagePreviews:d(v),"onUpdate:selected":R=>ie(S),onEnterDirectory:ae},null,8,["allowPickDirectory","showCheckbox","canPick","selected","node","cropImagePreviews","onUpdate:selected"]))),128))])])],512))}}),Ui=x(Ei,[["__scopeId","data-v-412efd5c"]]),Wi={name:"HomeIcon",emits:["click"],props:{title:{type:String},fillColor:{type:String,default:"currentColor"},size:{type:Number,default:24}}},Ti=["aria-hidden","aria-label"],qi=["fill","width","height"],Oi={d:"M10,20V14H14V20H19V12H22L12,3L2,12H5V20H10Z"},Zi={key:0};function ji(t,i,e,a,l,r){return s(),c("span",D(t.$attrs,{"aria-hidden":e.title?null:"true","aria-label":e.title,class:"material-design-icon home-icon",role:"img",onClick:i[0]||(i[0]=n=>t.$emit("click",n))}),[(s(),c("svg",{fill:e.fillColor,class:"material-design-icon__svg",width:e.size,height:e.size,viewBox:"0 0 24 24"},[f("path",Oi,[e.title?(s(),c("title",Zi,$(e.title),1)):z("",!0)])],8,qi))],16,Ti)}const Gi=x(Wi,[["render",ji]]),Ji={name:"PlusIcon",emits:["click"],props:{title:{type:String},fillColor:{type:String,default:"currentColor"},size:{type:Number,default:24}}},Ki=["aria-hidden","aria-label"],Qi=["fill","width","height"],Xi={d:"M19,13H13V19H11V13H5V11H11V5H13V11H19V13Z"},Yi={key:0};function ea(t,i,e,a,l,r){return s(),c("span",D(t.$attrs,{"aria-hidden":e.title?null:"true","aria-label":e.title,class:"material-design-icon plus-icon",role:"img",onClick:i[0]||(i[0]=n=>t.$emit("click",n))}),[(s(),c("svg",{fill:e.fillColor,class:"material-design-icon__svg",width:e.size,height:e.size,viewBox:"0 0 24 24"},[f("path",Xi,[e.title?(s(),c("title",Yi,$(e.title),1)):z("",!0)])],8,Qi))],16,Ki)}const ta=x(Ji,[["render",ea]]),ia=H({__name:"FilePickerBreadcrumbs",props:pe({showMenu:{type:Boolean}},{path:{required:!0},pathModifiers:{}}),emits:pe(["createNode"],["update:path"]),setup(t,{emit:i}){const e=ue(t,"path"),a=i,l=L(!1),r=L(""),n=We("nameInput");function u(){const g=r.value.trim(),y=n.value?.$el?.querySelector("input");let v="";try{et(g)}catch(B){if(!(B instanceof tt))throw B;switch(B.reason){case se.Character:v=h('"{char}" is not allowed inside a folder name.',{char:B.segment});break;case se.ReservedName:v=h('"{segment}" is a reserved name and not allowed for folder names.',{segment:B.segment});break;case se.Extension:v=h('Folder names must not end with "{extension}".',{extension:B.segment});break;default:v=h("Invalid folder name.")}}return y&&y.setCustomValidity(v),v===""}function p(){const g=r.value.trim();u()&&(l.value=!1,a("createNode",g),r.value="")}const o=b(()=>e.value.split("/").filter(g=>g!=="").map((g,y,v)=>({name:g,path:"/"+v.slice(0,y+1).join("/")})));return(g,y)=>(s(),C(d(Ht),{class:"file-picker__breadcrumbs"},Fe({default:w(()=>[_(d(Y),{name:d(h)("All files"),title:d(h)("Home"),onClick:y[0]||(y[0]=v=>e.value="/")},{icon:w(()=>[_(Gi,{size:20})]),_:1},8,["name","title"]),(s(!0),c(M,null,Q(o.value,v=>(s(),C(d(Y),{key:v.path,name:v.name,title:v.path,onClick:B=>e.value=v.path},null,8,["name","title","onClick"]))),128))]),_:2},[t.showMenu?{name:"actions",fn:w(()=>[_(d(ve),{open:l.value,"onUpdate:open":y[2]||(y[2]=v=>l.value=v),"aria-label":d(h)("Create directory"),forceMenu:!0,forceName:!0,menuName:d(h)("New"),variant:"secondary",onClose:y[3]||(y[3]=v=>r.value="")},{icon:w(()=>[_(ta,{size:20})]),default:w(()=>[_(d(ht),{ref_key:"nameInput",ref:n,modelValue:r.value,"onUpdate:modelValue":[y[1]||(y[1]=v=>r.value=v),u],label:d(h)("New folder"),placeholder:d(h)("New folder name"),onSubmit:p},{icon:w(()=>[_(Re,{size:20})]),_:1},8,["modelValue","label","placeholder"])]),_:1},8,["open","aria-label","menuName"])]),key:"0"}:void 0]),1024))}}),aa=x(ia,[["__scopeId","data-v-b448b141"]]),la={name:"CloseIcon",emits:["click"],props:{title:{type:String},fillColor:{type:String,default:"currentColor"},size:{type:Number,default:24}}},ra=["aria-hidden","aria-label"],na=["fill","width","height"],sa={d:"M19,6.41L17.59,5L12,10.59L6.41,5L5,6.41L10.59,12L5,17.59L6.41,19L12,13.41L17.59,19L19,17.59L13.41,12L19,6.41Z"},oa={key:0};function ca(t,i,e,a,l,r){return s(),c("span",D(t.$attrs,{"aria-hidden":e.title?null:"true","aria-label":e.title,class:"material-design-icon close-icon",role:"img",onClick:i[0]||(i[0]=n=>t.$emit("click",n))}),[(s(),c("svg",{fill:e.fillColor,class:"material-design-icon__svg",width:e.size,height:e.size,viewBox:"0 0 24 24"},[f("path",sa,[e.title?(s(),c("title",oa,$(e.title),1)):z("",!0)])],8,na))],16,ra)}const da=x(la,[["render",ca]]),ua={name:"MagnifyIcon",emits:["click"],props:{title:{type:String},fillColor:{type:String,default:"currentColor"},size:{type:Number,default:24}}},pa=["aria-hidden","aria-label"],fa=["fill","width","height"],ma={d:"M9.5,3A6.5,6.5 0 0,1 16,9.5C16,11.11 15.41,12.59 14.44,13.73L14.71,14H15.5L20.5,19L19,20.5L14,15.5V14.71L13.73,14.44C12.59,15.41 11.11,16 9.5,16A6.5,6.5 0 0,1 3,9.5A6.5,6.5 0 0,1 9.5,3M9.5,5C7,5 5,7 5,9.5C5,12 7,14 9.5,14C12,14 14,12 14,9.5C14,7 12,5 9.5,5Z"},ha={key:0};function va(t,i,e,a,l,r){return s(),c("span",D(t.$attrs,{"aria-hidden":e.title?null:"true","aria-label":e.title,class:"material-design-icon magnify-icon",role:"img",onClick:i[0]||(i[0]=n=>t.$emit("click",n))}),[(s(),c("svg",{fill:e.fillColor,class:"material-design-icon__svg",width:e.size,height:e.size,viewBox:"0 0 24 24"},[f("path",ma,[e.title?(s(),c("title",ha,$(e.title),1)):z("",!0)])],8,fa))],16,pa)}const ga=x(ua,[["render",va]]);function ya(t){const i=[{id:"files",label:h("All files"),icon:rt},{id:"recent",label:h("Recent"),icon:nt},{id:"favorites",label:h("Favorites"),icon:st}],e=t.value?i.filter(({id:a})=>a==="files"):i;return{allViews:i,availableViews:e}}const ba={key:0,class:"file-picker__side"},wa=H({__name:"FilePickerNavigation",props:{currentView:{},filterString:{},isCollapsed:{type:Boolean},disabledNavigation:{type:Boolean}},emits:["update:currentView","update:filterString"],setup(t,{emit:i}){const e=t,a=i,{availableViews:l}=ya(L(Qe()===null)),r=b(()=>l.filter(u=>u.id===e.currentView)[0]??l[0]),n=u=>a("update:filterString",u.toString());return(u,p)=>(s(),c(M,null,[_(d(yt),{class:"file-picker__filter-input",label:d(h)("Filter file list"),showTrailingButton:!!t.filterString,modelValue:t.filterString,"onUpdate:modelValue":n,onTrailingButtonClick:p[0]||(p[0]=o=>n(""))},{"trailing-button-icon":w(()=>[_(da,{size:16})]),default:w(()=>[_(ga,{size:16})]),_:1},8,["label","showTrailingButton","modelValue"]),d(l).length>1&&!t.disabledNavigation?(s(),c(M,{key:0},[t.isCollapsed?(s(),C(d(gt),{key:1,"aria-label":d(h)("Current view selector"),clearable:!1,searchable:!1,options:d(l),modelValue:r.value,"onUpdate:modelValue":p[1]||(p[1]=o=>a("update:currentView",o.id))},null,8,["aria-label","options","modelValue"])):(s(),c("ul",ba,[(s(!0),c(M,null,Q(d(l),o=>(s(),c("li",{key:o.id},[_(d(Z),{variant:t.currentView===o.id?"primary":"tertiary",wide:!0,onClick:g=>u.$emit("update:currentView",o.id)},{icon:w(()=>[_(d(xe),{path:o.icon,size:20},null,8,["path"])]),default:w(()=>[q(" "+$(o.label),1)]),_:2},1032,["variant","onClick"])]))),128))]))],64)):z("",!0)],64))}}),ka=x(wa,[["__scopeId","data-v-e1c54e23"]]);async function _a({client:t,signal:i}){const e=Math.round(Date.now()/1e3)-1209600,{data:a}=await t.search("/",{signal:i,details:!0,data:kt(e)});return a.results.map(l=>ye(l))}async function Ca({client:t,path:i,signal:e}){const a=(await t.getDirectoryContents(X(ge,i),{signal:e,details:!0,includeSelf:!0,data:Me()})).data.map(l=>ye(l));return{contents:a.filter(({path:l})=>l!==i),folder:a.find(({path:l})=>i===l)}}async function La(t,i){const{data:e}=await t.stat(X(ge,i),{details:!0,data:Me()});return ye(e)}function $a(t,i){const e=bt(),a=de([]),l=de(null),r=L(!0);let n;async function u(o){const g=X(i.value,o);await e.createDirectory(X(ge,g));const y=await La(e,g);return a.value=[...a.value,y],y}async function p(){n&&(n.abort(),n=void 0),n=new AbortController,r.value=!0;try{if(t.value==="favorites")a.value=await wt({client:e,path:i.value,signal:n.signal}),l.value=null;else if(t.value==="recent")a.value=await _a({client:e,signal:n.signal}),l.value=null;else{const o=await Ca({client:e,path:i.value,signal:n.signal});l.value=o.folder,a.value=o.contents}}catch(o){if(o instanceof Error&&o.name==="AbortError")return;throw o}finally{n=void 0,r.value=!1}}return Pe([t,i],()=>p()),J(()=>p()),{isLoading:r,files:a,folder:l,loadFiles:p,createDirectory:u}}function za(t){const i=b(()=>t.value.map(e=>e.split("/")));return{isSupportedMimeType:e=>{const a=e.split("/");return i.value.some(([l,r])=>(a[0]===l||l==="*")&&(a[1]===r||r==="*"))}}}const Ba={class:"file-picker__main"},Fa={key:1,class:"file-picker__view"},Pa=H({__name:"FilePicker",props:{buttons:{},name:{},allowPickDirectory:{type:Boolean,default:!1},noMenu:{type:Boolean,default:!1},disabledNavigation:{type:Boolean,default:!1},filterFn:{type:Function,default:void 0},canPickFn:{type:Function,default:void 0},mimetypeFilter:{default:()=>[]},multiselect:{type:Boolean,default:!1},path:{default:void 0}},emits:["close"],setup(t,{emit:i}){const e=t,a=i,l=L(!0),r=L("files"),n=L(window?.sessionStorage.getItem("NC.FilePicker.LastPath")||"/"),u=L(""),p=b({get:()=>r.value==="files"?u.value||e.path||n.value:"/",set:k=>{u.value=k}}),o=de([]),g=L(""),{files:y,folder:v,isLoading:B,loadFiles:V,createDirectory:te}=$a(r,p);Pe([u],()=>{e.path===void 0&&u.value&&window.sessionStorage.setItem("NC.FilePicker.LastPath",u.value),o.value=[],g.value=""});let W=!1;const ie=b(()=>{const k=o.value.length===0&&e.allowPickDirectory&&v.value&&(!e.canPickFn||e.canPickFn(v.value))?[v.value]:o.value;return(typeof e.buttons=="function"?e.buttons(k,p.value,r.value):e.buttons).map(m=>({...m,disabled:m.disabled||B.value,callback:()=>{W=!0,ae(m.callback,k)}}))});async function ae(k,m){await k(m),a("close",m),W=!1}const T=b(()=>r.value==="favorites"?h("Favorites"):r.value==="recent"?h("Recent"):""),{isSupportedMimeType:E}=za(Se(e,"mimetypeFilter"));J(()=>V());const{showHiddenFiles:F}=He(),P=b(()=>{let k=y.value;return F.value||(k=k.filter(m=>!m.basename.startsWith("."))),e.mimetypeFilter.length>0&&(k=k.filter(m=>m.type==="folder"||m.mime&&E(m.mime))),g.value&&(k=k.filter(m=>m.basename.toLowerCase().includes(g.value.toLowerCase()))),e.filterFn&&(k=k.filter(m=>e.filterFn(m))),k}),S=b(()=>r.value==="files"?h("Upload some content or sync with your devices!"):r.value==="recent"?h("Files and folders you recently modified will show up here."):h("Files and folders you mark as favorite will show up here."));async function R(k){try{const m=await te(k);u.value=m.path,Ke("files:node:created",y.value.filter(I=>I.basename===k)[0])}catch(m){G.warn("Could not create new folder",{name:k,error:m}),he(h("Could not create the new folder"))}}function Ee(k){!k&&!W&&a("close")}return(k,m)=>(s(),C(d(Ye),{open:l.value,"onUpdate:open":[m[6]||(m[6]=I=>l.value=I),Ee],buttons:ie.value,name:t.name,size:"large",contentClasses:"file-picker__content",dialogClasses:"file-picker",navigationClasses:"file-picker__navigation"},{navigation:w(({isCollapsed:I})=>[_(ka,{currentView:r.value,"onUpdate:currentView":m[0]||(m[0]=le=>r.value=le),filterString:g.value,"onUpdate:filterString":m[1]||(m[1]=le=>g.value=le),isCollapsed:I,disabledNavigation:t.disabledNavigation},null,8,["currentView","filterString","isCollapsed","disabledNavigation"])]),default:w(()=>[f("div",Ba,[r.value==="files"?(s(),C(aa,{key:0,path:p.value,"onUpdate:path":m[2]||(m[2]=I=>p.value=I),showMenu:!t.noMenu,onCreateNode:R},null,8,["path","showMenu"])):(s(),c("div",Fa,[f("h3",null,$(T.value),1)])),d(B)||P.value.length>0?(s(),C(Ui,{key:2,path:p.value,"onUpdate:path":[m[3]||(m[3]=I=>p.value=I),m[5]||(m[5]=I=>r.value="files")],selectedFiles:o.value,"onUpdate:selectedFiles":m[4]||(m[4]=I=>o.value=I),allowPickDirectory:t.allowPickDirectory,currentView:r.value,files:P.value,multiselect:t.multiselect,loading:d(B),name:T.value,canPick:t.canPickFn},null,8,["path","selectedFiles","allowPickDirectory","currentView","files","multiselect","loading","name","canPick"])):g.value?(s(),C(d(we),{key:3,name:d(h)("No matching files"),description:d(h)("No files matching your filter were found.")},{icon:w(()=>[_(fe)]),_:1},8,["name","description"])):(s(),C(d(we),{key:4,name:d(h)("No files in here"),description:S.value},{icon:w(()=>[_(fe)]),_:1},8,["name","description"]))])]),_:1},8,["open","buttons","name"]))}}),al=x(Pa,[["__scopeId","data-v-39182aaf"]]);export{al as default}; -//# sourceMappingURL=FilePicker-0pVFI2AM.chunk.mjs.map +import{r as re,o as s,f as c,c as C,q as Fe,w,i as ne,g as f,y as U,j as q,t as $,m as D,h as z,k as _,L as K,F as M,ag as be,ac as A,E as Ue,a8 as O,l as L,b as H,z as Pe,S as J,u as d,v as b,ah as de,n as ue,p as We,B as Q,s as pe,ai as Te,D as qe,N as Oe,O as Ze,a5 as Se}from"./Web-DYqXJUev.chunk.mjs";import{u as je,d as Ge,s as Je,b as me,f as Ke,n as X,a as Qe,m as Xe}from"./index-Cp0kcsps.chunk.mjs";import{N as Ye}from"./index-CHUjKZ5R.chunk.mjs";import{N as we}from"./NcEmptyContent-CGAPqk4S-LFG8iXZZ.chunk.mjs";import{v as et,I as tt,e as se,f as it,s as at}from"./index-BGv_Bbjs.chunk.mjs";import{N as Z}from"./logger-D3RVzcfQ-BrUWOyzd.chunk.mjs";import{N as Ne}from"./NcCheckboxRadioSwitch-DVdt5Hkq-COYVxuqr.chunk.mjs";import{N as ke,a as _e,_ as lt}from"./NcDateTime.vue_vue_type_script_setup_true_lang-BJuPH7S7-BThMWOZt.chunk.mjs";import{w as rt,x as nt,y as st,z as ot,A as ct,B as dt,C as Ce,t as ut,c as pt}from"./mdi-BU6wr1QN.chunk.mjs";import{S as Le}from"./ShareType-suoNfd7y.chunk.mjs";import{_ as ee,c as ft,N as xe}from"./createElementId-DhjFt1I9-BmyhoOWk.chunk.mjs";import{F as j,P as $e}from"./folder-29HuacU_-YFFzfmzN.chunk.mjs";import"./translation-DoG5ZELJ-WOan4U8V.chunk.mjs";import{P as mt,a as ht}from"./NcBreadcrumbs-B4eyDS9i-bX0dOZmj.chunk.mjs";import{t as h,l as G,a as he}from"./index-BQu_HuHB.chunk.mjs";import{c as Ve}from"./index-CkGt55pS.chunk.mjs";import{l as Ie,i as De}from"./public-C1mLBHT3.chunk.mjs";import{b as ve,p as vt}from"./NcModal-DiDvgcU8-Cb_C64qI.chunk.mjs";import{N as ze}from"./PencilOutline-CA_ZiZlA.chunk.mjs";import{N as gt}from"./index-BhwlPNkJ.chunk.mjs";import{_ as yt}from"./NcTextField.vue_vue_type_script_setup_true_lang-Bx2esFU2-CGsfYqql.chunk.mjs";import{g as bt,h as wt,i as ge,j as kt,r as ye,k as Me}from"./dav-DpOWisxz.chunk.mjs";import"./TrashCanOutline-BU3aqDG_.chunk.mjs";import"./util-DBjHxD9z.chunk.mjs";import"./NcPasswordField-BFyzHTOO-BIm5AMSG.chunk.mjs";import"./NcInputField-5Sg6EUP6-CUyzAC2j.chunk.mjs";import"./index-D5zm-WFT.chunk.mjs";const _t={name:"ChevronRightIcon",emits:["click"],props:{title:{type:String},fillColor:{type:String,default:"currentColor"},size:{type:Number,default:24}}},Ct=["aria-hidden","aria-label"],Lt=["fill","width","height"],$t={d:"M8.59,16.58L13.17,12L8.59,7.41L10,6L16,12L10,18L8.59,16.58Z"},zt={key:0};function Bt(t,i,e,a,l,r){return s(),c("span",D(t.$attrs,{"aria-hidden":e.title?null:"true","aria-label":e.title,class:"material-design-icon chevron-right-icon",role:"img",onClick:i[0]||(i[0]=n=>t.$emit("click",n))}),[(s(),c("svg",{fill:e.fillColor,class:"material-design-icon__svg",width:e.size,height:e.size,viewBox:"0 0 24 24"},[f("path",$t,[e.title?(s(),c("title",zt,$(e.title),1)):z("",!0)])],8,Lt))],16,Ct)}const Ft=ee(_t,[["render",Bt]]),Pt={name:"NcBreadcrumb",components:{NcActions:ve,ChevronRight:Ft,NcButton:Z},inheritAttrs:!1,props:{name:{type:String,required:!0},title:{type:String,default:null},to:{type:[String,Object],default:void 0},href:{type:String,default:void 0},icon:{type:String,default:""},forceIconText:{type:Boolean,default:!1},disableDrop:{type:Boolean,default:!1},forceMenu:{type:Boolean,default:!1},open:{type:Boolean,default:!1},class:{type:[String,Array,Object],default:""}},emits:["dragenter","dragleave","dropped","update:open"],setup(){const t=ft();return{actionsContainer:`.vue-crumb[data-crumb-id="${t}"]`,crumbId:t}},data(){return{hovering:!1}},computed:{linkAttributes(){return this.to?{to:this.to,...this.$attrs}:this.href?{href:this.href,...this.$attrs}:this.$attrs}},methods:{onOpenChange(t){this.$emit("update:open",t)},dropped(t){return this.disableDrop||(this.$emit("dropped",t,this.to||this.href),this.$parent.$emit("dropped",t,this.to||this.href),this.hovering=!1),!1},dragEnter(t){this.$emit("dragenter",t),!this.disableDrop&&(this.hovering=!0)},dragLeave(t){this.$emit("dragleave",t),!this.disableDrop&&(t.target.contains(t.relatedTarget)||this.$refs.crumb.contains(t.relatedTarget)||(this.hovering=!1))}}},St=["data-crumb-id"];function Nt(t,i,e,a,l,r){const n=re("NcButton"),u=re("NcActions"),p=re("ChevronRight");return s(),c("li",{ref:"crumb",class:U(["vue-crumb",[{"vue-crumb--hovered":l.hovering},t.$props.class]]),"data-crumb-id":a.crumbId,draggable:"false",onDragstart:K(()=>{},["prevent"]),onDrop:i[0]||(i[0]=K((...o)=>r.dropped&&r.dropped(...o),["prevent"])),onDragover:K(()=>{},["prevent"]),onDragenter:i[1]||(i[1]=(...o)=>r.dragEnter&&r.dragEnter(...o)),onDragleave:i[2]||(i[2]=(...o)=>r.dragLeave&&r.dragLeave(...o))},[(e.name||e.icon||t.$slots.icon)&&!t.$slots.default?(s(),C(n,D({key:0,"aria-label":e.icon?e.name:void 0,variant:"tertiary"},r.linkAttributes),Fe({_:2},[t.$slots.icon||e.icon?{name:"icon",fn:w(()=>[ne(t.$slots,"icon",{},()=>[f("span",{class:U([e.icon,"icon"])},null,2)],!0)]),key:"0"}:void 0,!(t.$slots.icon||e.icon)||e.forceIconText?{name:"default",fn:w(()=>[q($(e.name),1)]),key:"1"}:void 0]),1040,["aria-label"])):z("",!0),t.$slots.default?(s(),C(u,{key:1,ref:"actions",container:a.actionsContainer,forceMenu:e.forceMenu,forceName:"",menuName:e.name,open:e.open,title:e.title,variant:"tertiary","onUpdate:open":r.onOpenChange},{icon:w(()=>[ne(t.$slots,"menu-icon",{},void 0,!0)]),default:w(()=>[ne(t.$slots,"default",{},void 0,!0)]),_:3},8,["container","forceMenu","menuName","open","title","onUpdate:open"])):z("",!0),_(p,{class:"vue-crumb__separator",size:20})],42,St)}const Y=ee(Pt,[["render",Nt],["__scopeId","data-v-7cec4a3e"]]),xt={name:"FolderIcon",emits:["click"],props:{title:{type:String},fillColor:{type:String,default:"currentColor"},size:{type:Number,default:24}}},Vt=["aria-hidden","aria-label"],It=["fill","width","height"],Dt={d:"M10,4H4C2.89,4 2,4.89 2,6V18A2,2 0 0,0 4,20H20A2,2 0 0,0 22,18V8C22,6.89 21.1,6 20,6H12L10,4Z"},Mt={key:0};function Rt(t,i,e,a,l,r){return s(),c("span",D(t.$attrs,{"aria-hidden":e.title?null:"true","aria-label":e.title,class:"material-design-icon folder-icon",role:"img",onClick:i[0]||(i[0]=n=>t.$emit("click",n))}),[(s(),c("svg",{fill:e.fillColor,class:"material-design-icon__svg",width:e.size,height:e.size,viewBox:"0 0 24 24"},[f("path",Dt,[e.title?(s(),c("title",Mt,$(e.title),1)):z("",!0)])],8,It))],16,Vt)}const Be=ee(xt,[["render",Rt]]),N="vue-crumb",At={name:"NcBreadcrumbs",components:{NcActions:ve,NcActionButton:ze,NcActionRouter:_e,NcActionLink:ke,NcBreadcrumb:Y,IconFolder:Be},props:{rootIcon:{type:String,default:"icon-home"},ariaLabel:{type:String,default:null}},emits:["dropped"],data(){return{hiddenIndices:[],menuBreadcrumbProps:{name:"",forceMenu:!0,disableDrop:!0,open:!1},breadcrumbsRefs:[]}},created(){window.addEventListener("resize",Ge(()=>{this.handleWindowResize()},100)),Je("navigation-toggled",this.delayedResize)},mounted(){this.handleWindowResize()},updated(){this.delayedResize(),this.$nextTick(()=>{this.hideCrumbs()})},beforeUnmount(){window.removeEventListener("resize",this.handleWindowResize),je("navigation-toggled",this.delayedResize)},methods:{closeActions(t){this.$refs.actionsBreadcrumb.$el.contains(t.relatedTarget)||(this.menuBreadcrumbProps.open=!1)},async delayedResize(){await this.$nextTick(),this.handleWindowResize()},handleWindowResize(){if(!this.$refs.container)return;const t=this.breadcrumbsRefs.length,i=[],e=this.$refs.container.offsetWidth;let a=this.getTotalWidth();this.$refs.breadcrumb__actions&&(a+=this.$refs.breadcrumb__actions.offsetWidth);let l=a-e;l+=l>0?64:0;let r=0;const n=Math.floor(t/2);for(;l>0&&ru-p))||(this.hiddenIndices=i)},arraysEqual(t,i){if(t.length!==i.length)return!1;if(t===i)return!0;if(t===null||i===null)return!1;for(let e=0;et+this.getWidth(i.$el,e===this.breadcrumbsRefs.length-1),0)},getWidth(t,i){if(!t?.classList)return 0;const e=t.classList.contains(`${N}--hidden`);t.style.minWidth="auto",i&&(t.style.maxWidth="210px"),t.classList.remove(`${N}--hidden`);const a=t.offsetWidth;return e&&t.classList.add(`${N}--hidden`),t.style.minWidth="",t.style.maxWidth="",a},preventDefault(t){return t.preventDefault&&t.preventDefault(),!1},dragStart(t){return this.preventDefault(t)},dropped(t,i,e){e||this.$emit("dropped",t,i),this.menuBreadcrumbProps.open=!1;const a=document.querySelectorAll(`.${N}`);for(const l of a)l.classList.remove(`${N}--hovered`);return this.preventDefault(t)},dragOver(t){return this.preventDefault(t)},dragEnter(t,i){if(!i&&t.target.closest){const e=t.target.closest(`.${N}`);if(e.classList&&e.classList.contains(N)){const a=document.querySelectorAll(`.${N}`);for(const l of a)l.classList.remove(`${N}--hovered`);e.classList.add(`${N}--hovered`)}}},dragLeave(t,i){if(!i&&!t.target.contains(t.relatedTarget)&&t.target.closest){const e=t.target.closest(`.${N}`);if(e.contains(t.relatedTarget))return;e.classList&&e.classList.contains(N)&&e.classList.remove(`${N}--hovered`)}},hideCrumbs(){this.breadcrumbsRefs.forEach((t,i)=>{t?.$el?.classList&&(this.hiddenIndices.includes(i)?t.$el.classList.add(`${N}--hidden`):t.$el.classList.remove(`${N}--hidden`))})},isBreadcrumb(t){return t?.type?.name==="NcBreadcrumb"}},render(){let t=[];if(this.$slots.default?.().forEach(l=>{if(this.isBreadcrumb(l)){t.push(l);return}l?.type===M&&l?.children?.forEach?.(r=>{this.isBreadcrumb(r)&&t.push(r)})}),t.length===0)return;t[0]=be(t[0],{icon:this.rootIcon,ref:"breadcrumbs"});const i=[];t=t.map((l,r)=>be(l,{ref:n=>{i[r]=n}}));const e=[...t];this.hiddenIndices.length&&e.splice(Math.round(t.length/2),0,A(Y,{class:"dropdown",...this.menuBreadcrumbProps,"aria-hidden":!0,ref:"actionsBreadcrumb",key:"actions-breadcrumb-1",onDragenter:()=>{this.menuBreadcrumbProps.open=!0},onDragleave:this.closeActions,"onUpdate:open":l=>{this.menuBreadcrumbProps.open=l}},{default:()=>this.hiddenIndices.filter(l=>l<=t.length-1).map(l=>{const r=t[l],{to:n,href:u,disableDrop:p,name:o,...g}=r.props;delete g.ref;let y=ze,v="";u&&(y=ke,v=u),n&&(y=_e,v=n);const B=A(Be,{size:20});return A(y,{...g,class:N,href:u||null,to:n||null,draggable:!1,onDragstart:this.dragStart,onDrop:V=>this.dropped(V,v,p),onDragover:this.dragOver,onDragenter:V=>this.dragEnter(V,p),onDragleave:V=>this.dragLeave(V,p)},{default:()=>o,icon:()=>B})})}));const a=[A("nav",{"aria-label":this.ariaLabel},[A("ul",{class:"breadcrumb__crumbs"},[e])])];return vt(this.$slots.actions?.())&&a.push(A("div",{class:"breadcrumb__actions",ref:"breadcrumb__actions"},this.$slots.actions?.())),this.breadcrumbsRefs=i,A("div",{class:["breadcrumb",{"breadcrumb--collapsed":this.hiddenIndices.length===t.length-2}],ref:"container"},a)}},Ht=ee(At,[["__scopeId","data-v-5a4d73af"]]),Et=new mt({concurrency:5});function Ut(t){const{resolve:i,promise:e}=Promise.withResolvers();return Et.add(()=>{const a=new Image;return a.onerror=()=>i(!1),a.onload=()=>i(!0),a.src=t,e}),e}function Wt(t,i={}){i={size:32,cropPreview:!1,mimeFallback:!0,...i};try{const e=t.attributes?.previewUrl||me("/core/preview?fileId={fileid}",{fileid:t.fileid});let a;try{a=new URL(e)}catch{a=new URL(e,window.location.origin)}return a.searchParams.set("x",`${i.size}`),a.searchParams.set("y",`${i.size}`),a.searchParams.set("mimeFallback",`${i.mimeFallback}`),a.searchParams.set("a",i.cropPreview===!0?"0":"1"),a.searchParams.set("c",`${t.attributes.etag}`),a}catch{return null}}function Tt(t,i){const e=L(null),a=L(!1);return Ue(()=>{a.value=!1,e.value=Wt(O(t),O(i||{})),e.value&&O(t).type===j.File&&Ut(e.value.href).then(l=>{a.value=l})}),{previewURL:e,previewLoaded:a}}const x=(t,i)=>{const e=t.__vccOpts||t;for(const[a,l]of i)e[a]=l;return e},qt={name:"FileIcon",emits:["click"],props:{title:{type:String},fillColor:{type:String,default:"currentColor"},size:{type:Number,default:24}}},Ot=["aria-hidden","aria-label"],Zt=["fill","width","height"],jt={d:"M13,9V3.5L18.5,9M6,2C4.89,2 4,2.89 4,4V20A2,2 0 0,0 6,22H18A2,2 0 0,0 20,20V8L14,2H6Z"},Gt={key:0};function Jt(t,i,e,a,l,r){return s(),c("span",D(t.$attrs,{"aria-hidden":e.title?null:"true","aria-label":e.title,class:"material-design-icon file-icon",role:"img",onClick:i[0]||(i[0]=n=>t.$emit("click",n))}),[(s(),c("svg",{fill:e.fillColor,class:"material-design-icon__svg",width:e.size,height:e.size,viewBox:"0 0 24 24"},[f("path",jt,[e.title?(s(),c("title",Gt,$(e.title),1)):z("",!0)])],8,Zt))],16,Ot)}const fe=x(qt,[["render",Jt]]),Kt={name:"MenuDownIcon",emits:["click"],props:{title:{type:String},fillColor:{type:String,default:"currentColor"},size:{type:Number,default:24}}},Qt=["aria-hidden","aria-label"],Xt=["fill","width","height"],Yt={d:"M7,10L12,15L17,10H7Z"},ei={key:0};function ti(t,i,e,a,l,r){return s(),c("span",D(t.$attrs,{"aria-hidden":e.title?null:"true","aria-label":e.title,class:"material-design-icon menu-down-icon",role:"img",onClick:i[0]||(i[0]=n=>t.$emit("click",n))}),[(s(),c("svg",{fill:e.fillColor,class:"material-design-icon__svg",width:e.size,height:e.size,viewBox:"0 0 24 24"},[f("path",Yt,[e.title?(s(),c("title",ei,$(e.title),1)):z("",!0)])],8,Xt))],16,Qt)}const oe=x(Kt,[["render",ti]]),ii={name:"MenuUpIcon",emits:["click"],props:{title:{type:String},fillColor:{type:String,default:"currentColor"},size:{type:Number,default:24}}},ai=["aria-hidden","aria-label"],li=["fill","width","height"],ri={d:"M7,15L12,10L17,15H7Z"},ni={key:0};function si(t,i,e,a,l,r){return s(),c("span",D(t.$attrs,{"aria-hidden":e.title?null:"true","aria-label":e.title,class:"material-design-icon menu-up-icon",role:"img",onClick:i[0]||(i[0]=n=>t.$emit("click",n))}),[(s(),c("svg",{fill:e.fillColor,class:"material-design-icon__svg",width:e.size,height:e.size,viewBox:"0 0 24 24"},[f("path",ri,[e.title?(s(),c("title",ni,$(e.title),1)):z("",!0)])],8,li))],16,ai)}const ce=x(ii,[["render",si]]),oi={name:"FolderIcon",emits:["click"],props:{title:{type:String},fillColor:{type:String,default:"currentColor"},size:{type:Number,default:24}}},ci=["aria-hidden","aria-label"],di=["fill","width","height"],ui={d:"M10,4H4C2.89,4 2,4.89 2,6V18A2,2 0 0,0 4,20H20A2,2 0 0,0 22,18V8C22,6.89 21.1,6 20,6H12L10,4Z"},pi={key:0};function fi(t,i,e,a,l,r){return s(),c("span",D(t.$attrs,{"aria-hidden":e.title?null:"true","aria-label":e.title,class:"material-design-icon folder-icon",role:"img",onClick:i[0]||(i[0]=n=>t.$emit("click",n))}),[(s(),c("svg",{fill:e.fillColor,class:"material-design-icon__svg",width:e.size,height:e.size,viewBox:"0 0 24 24"},[f("path",ui,[e.title?(s(),c("title",pi,$(e.title),1)):z("",!0)])],8,di))],16,ci)}const Re=x(oi,[["render",fi]]),Ae={"file-picker__file-icon":"_file-picker__file-icon_1aykw_9","file-picker__file-icon--primary":"_file-picker__file-icon--primary_1aykw_22","file-picker__file-icon-overlay":"_file-picker__file-icon-overlay_1aykw_26"},mi=H({__name:"FilePreview",props:{node:{},cropImagePreviews:{type:Boolean}},setup(t){const i=t,e=L(Ae),{previewURL:a,previewLoaded:l}=Tt(Se(i,"node"),b(()=>({cropPreview:i.cropImagePreviews}))),r=b(()=>i.node.type===j.File),n=b(()=>{if(i.node.type!==j.Folder)return null;if(i.node.attributes?.["is-encrypted"]===1)return ot;if(i.node.attributes?.["is-tag"])return ct;const u=Object.values(i.node.attributes?.["share-types"]||{}).flat();if(u.some(p=>p===Le.Link||p===Le.Email))return dt;if(u.length>0)return Ce;switch(i.node.attributes?.["mount-type"]){case"external":case"external-session":return pt;case"group":return ut;case"shared":return Ce}return null});return(u,p)=>(s(),c("div",{style:Ze(d(l)?{backgroundImage:`url(${d(a)})`}:void 0),class:U(e.value["file-picker__file-icon"])},[d(l)?z("",!0):(s(),c(M,{key:0},[r.value?(s(),C(fe,{key:0,size:32})):(s(),c(M,{key:1},[n.value?(s(),C(d(xe),{key:0,class:U(e.value["file-picker__file-icon-overlay"]),inline:"",path:n.value,size:16},null,8,["class","path"])):z("",!0),_(Re,{class:U(e.value["file-picker__file-icon--primary"]),size:32},null,8,["class"])],64))],64))],6))}}),hi=["tabindex","aria-selected","data-filename"],vi={class:"row-name"},gi={class:"file-picker__name-container","data-testid":"row-name"},yi=["title","textContent"],bi=["textContent"],wi={class:"row-size"},ki={class:"row-modified"},_i=H({__name:"FileListRow",props:{allowPickDirectory:{type:Boolean},selected:{type:Boolean},showCheckbox:{type:Boolean},canPick:{type:Boolean},node:{},cropImagePreviews:{type:Boolean}},emits:["update:selected","enterDirectory"],setup(t,{emit:i}){const e=t,a=i,l=b(()=>e.node.mtime??0),r=b(()=>Xe(e.node.displayname)),n=b(()=>e.node.displayname.slice(0,r.value?-r.value.length:void 0)),u=b(()=>e.node.type===j.Folder),p=b(()=>e.canPick&&(e.allowPickDirectory||!u.value)),o=b(()=>(e.node.permissions&$e.READ)===$e.READ);function g(){p.value&&a("update:selected",!e.selected)}function y(){u.value?o.value&&a("enterDirectory",e.node):g()}function v(B){B.key==="Enter"&&y()}return(B,V)=>(s(),c("tr",D({tabindex:t.showCheckbox&&!u.value?void 0:0,"aria-selected":p.value?t.selected:void 0,class:["file-picker__row",[{"file-picker__row--selected":t.selected&&!t.showCheckbox,"file-picker__row--not-navigatable":u.value&&!o.value,"file-picker__row--not-pickable":!p.value}]],"data-filename":t.node.basename,"data-testid":"file-list-row"},Oe({click:y,...!t.showCheckbox||u.value?{keydown:v}:{}},!0)),[t.showCheckbox?(s(),c("td",{key:0,class:"row-checkbox",onClick:K(()=>{},["stop"])},[_(d(Ne),{"aria-label":d(h)("Select the row for {nodename}",{nodename:n.value}),disabled:!p.value,"data-testid":"row-checkbox",modelValue:t.selected,"onUpdate:modelValue":g},null,8,["aria-label","disabled","modelValue"])])):z("",!0),f("td",vi,[f("div",gi,[_(mi,{node:t.node,cropImagePreviews:t.cropImagePreviews},null,8,["node","cropImagePreviews"]),f("div",{class:"file-picker__file-name",title:n.value,textContent:$(n.value)},null,8,yi),f("div",{class:"file-picker__file-extension",textContent:$(r.value)},null,8,bi)])]),f("td",wi,$(d(it)(t.node.size||0)),1),f("td",ki,[_(d(lt),{timestamp:l.value,ignoreSeconds:""},null,8,["timestamp"])])],16,hi))}}),Ci=x(_i,[["__scopeId","data-v-7857e8bd"]]),Li={"aria-hidden":"true",class:"file-picker__row loading-row"},$i={key:0,class:"row-checkbox"},zi={class:"row-name"},Bi={class:"row-wrapper"},Fi=H({__name:"LoadingTableRow",props:{showCheckbox:{type:Boolean}},setup(t){return(i,e)=>(s(),c("tr",Li,[t.showCheckbox?(s(),c("td",$i,[...e[0]||(e[0]=[f("span",null,null,-1)])])):z("",!0),f("td",zi,[f("div",Bi,[f("span",{class:U(d(Ae)["file-picker__file-icon"])},null,2),e[1]||(e[1]=f("span",null,null,-1))])]),e[2]||(e[2]=f("td",{class:"row-size"},[f("span")],-1)),e[3]||(e[3]=f("td",{class:"row-modified"},[f("span")],-1))]))}}),Pi=x(Fi,[["__scopeId","data-v-1f96131b"]]);function He(){const t=Ie("files","config",null),i=L(t?.show_hidden??!0),e=L(t?.sort_favorites_first??!0),a=L(t?.crop_image_previews??!0);return J(async()=>{if(De())G.debug("Skip loading files settings - currently on public share");else try{const{data:l}=await Ve.get(me("/apps/files/api/v1/configs"));i.value=l?.data?.show_hidden??!1,e.value=l?.data?.sort_favorites_first??!0,a.value=l?.data?.crop_image_previews??!0}catch(l){G.error("Could not load files settings",{error:l}),he(h("Could not load files settings"))}}),{showHiddenFiles:i,sortFavoritesFirst:e,cropImagePreviews:a}}function Si(t){const i=o=>o==="asc"?"ascending":o==="desc"?"descending":"none",e=Ie("files","viewConfigs",null),a=L({sortBy:e?.files?.sorting_mode??"basename",order:i(e?.files?.sorting_direction??"asc")}),l=L({sortBy:e?.recent?.sorting_mode??"basename",order:i(e?.recent?.sorting_direction??"asc")}),r=L({sortBy:e?.favorites?.sorting_mode??"basename",order:i(e?.favorites?.sorting_direction??"asc")});J(async()=>{if(De())G.debug("Skip loading files views - currently on public share");else try{const{data:o}=await Ve.get(me("/apps/files/api/v1/views"));a.value={sortBy:o?.data?.files?.sorting_mode??"basename",order:i(o?.data?.files?.sorting_direction)},r.value={sortBy:o?.data?.favorites?.sorting_mode??"basename",order:i(o?.data?.favorites?.sorting_direction)},l.value={sortBy:o?.data?.recent?.sorting_mode??"basename",order:i(o?.data?.recent?.sorting_direction)}}catch(o){G.error("Could not load files views",{error:o}),he(h("Could not load files views"))}});const n=b(()=>O(t||"files")==="files"?a.value:O(t)==="recent"?l.value:r.value),u=b(()=>n.value.sortBy),p=b(()=>n.value.order);return{filesViewConfig:a,favoritesViewConfig:r,recentViewConfig:l,currentConfig:n,sortBy:u,order:p}}const Ni={key:0,class:"row-checkbox"},xi={class:"hidden-visually"},Vi=["aria-sort"],Ii={class:"header-wrapper"},Di={key:2,style:{width:"44px"}},Mi=["aria-sort"],Ri={key:2,style:{width:"44px"}},Ai=["aria-sort"],Hi={key:2,style:{width:"44px"}},Ei=H({__name:"FileList",props:pe({currentView:{},multiselect:{type:Boolean},allowPickDirectory:{type:Boolean},loading:{type:Boolean},files:{},canPick:{type:Function}},{path:{required:!0},pathModifiers:{},selectedFiles:{required:!0},selectedFilesModifiers:{}}),emits:["update:path","update:selectedFiles"],setup(t){const i=ue(t,"path"),e=ue(t,"selectedFiles"),a=t,l=L(),{currentConfig:r}=Si(a.currentView),n=b(()=>l.value??r.value),u=b(()=>n.value.sortBy==="basename"?n.value.order==="none"?void 0:n.value.order:void 0),p=b(()=>n.value.sortBy==="size"?n.value.order==="none"?void 0:n.value.order:void 0),o=b(()=>n.value.sortBy==="mtime"?n.value.order==="none"?void 0:n.value.order:void 0);function g(F){n.value.sortBy===F?n.value.order==="ascending"?l.value={sortBy:n.value.sortBy,order:"descending"}:l.value={sortBy:n.value.sortBy,order:"ascending"}:l.value={sortBy:F,order:"ascending"}}const{sortFavoritesFirst:y,cropImagePreviews:v}=He(),B=b(()=>at(a.files,{sortFoldersFirst:!0,sortFavoritesFirst:y.value,sortingOrder:n.value.order==="descending"?"desc":"asc",sortingMode:n.value.sortBy})),V=b(()=>a.files.filter(F=>a.allowPickDirectory||F.type!==j.Folder)),te=b(()=>!a.loading&&e.value.length>0&&e.value.length>=V.value.length);function W(){e.value.lengthP.path!==F.path):a.multiselect?e.value=[...e.value,F]:e.value=[F]}function ae(F){i.value=F.path}const T=L(4),E=L();{const F=()=>qe(()=>{const P=E.value?.parentElement?.children||[];let S=E.value?.parentElement?.clientHeight||450;for(let R=0;R{window.addEventListener("resize",F),F()}),Te(()=>{window.removeEventListener("resize",F)})}return(F,P)=>(s(),c("div",{ref_key:"fileContainer",ref:E,class:"file-picker__files"},[f("table",null,[f("thead",null,[f("tr",null,[t.multiselect?(s(),c("th",Ni,[f("span",xi,$(d(h)("Select entry")),1),t.multiselect?(s(),C(d(Ne),{key:0,"aria-label":d(h)("Select all entries"),"data-testid":"select-all-checkbox",modelValue:te.value,"onUpdate:modelValue":W},null,8,["aria-label","modelValue"])):z("",!0)])):z("",!0),f("th",{"aria-sort":u.value,class:"row-name"},[f("div",Ii,[P[3]||(P[3]=f("span",{class:"file-picker__header-preview"},null,-1)),_(d(Z),{"data-test":"file-picker_sort-name",variant:"tertiary",wide:"",onClick:P[0]||(P[0]=S=>g("basename"))},{icon:w(()=>[u.value==="ascending"?(s(),C(ce,{key:0,size:20})):u.value==="descending"?(s(),C(oe,{key:1,size:20})):(s(),c("span",Di))]),default:w(()=>[q(" "+$(d(h)("Name")),1)]),_:1})])],8,Vi),f("th",{"aria-sort":p.value,class:"row-size"},[_(d(Z),{variant:"tertiary",wide:"",onClick:P[1]||(P[1]=S=>g("size"))},{icon:w(()=>[p.value==="ascending"?(s(),C(ce,{key:0,size:20})):p.value==="descending"?(s(),C(oe,{key:1,size:20})):(s(),c("span",Ri))]),default:w(()=>[q(" "+$(d(h)("Size")),1)]),_:1})],8,Mi),f("th",{"aria-sort":o.value,class:"row-modified"},[_(d(Z),{variant:"tertiary",wide:"",onClick:P[2]||(P[2]=S=>g("mtime"))},{icon:w(()=>[o.value==="ascending"?(s(),C(ce,{key:0,size:20})):o.value==="descending"?(s(),C(oe,{key:1,size:20})):(s(),c("span",Hi))]),default:w(()=>[q(" "+$(d(h)("Modified")),1)]),_:1})],8,Ai)])]),f("tbody",null,[t.loading?(s(!0),c(M,{key:0},Q(T.value,S=>(s(),C(Pi,{key:S,showCheckbox:t.multiselect},null,8,["showCheckbox"]))),128)):(s(!0),c(M,{key:1},Q(B.value,S=>(s(),C(Ci,{key:S.fileid||S.path,allowPickDirectory:t.allowPickDirectory,showCheckbox:t.multiselect,canPick:(t.multiselect||e.value.length===0||e.value.includes(S))&&(t.canPick===void 0||t.canPick(S)),selected:e.value.includes(S),node:S,cropImagePreviews:d(v),"onUpdate:selected":R=>ie(S),onEnterDirectory:ae},null,8,["allowPickDirectory","showCheckbox","canPick","selected","node","cropImagePreviews","onUpdate:selected"]))),128))])])],512))}}),Ui=x(Ei,[["__scopeId","data-v-412efd5c"]]),Wi={name:"HomeIcon",emits:["click"],props:{title:{type:String},fillColor:{type:String,default:"currentColor"},size:{type:Number,default:24}}},Ti=["aria-hidden","aria-label"],qi=["fill","width","height"],Oi={d:"M10,20V14H14V20H19V12H22L12,3L2,12H5V20H10Z"},Zi={key:0};function ji(t,i,e,a,l,r){return s(),c("span",D(t.$attrs,{"aria-hidden":e.title?null:"true","aria-label":e.title,class:"material-design-icon home-icon",role:"img",onClick:i[0]||(i[0]=n=>t.$emit("click",n))}),[(s(),c("svg",{fill:e.fillColor,class:"material-design-icon__svg",width:e.size,height:e.size,viewBox:"0 0 24 24"},[f("path",Oi,[e.title?(s(),c("title",Zi,$(e.title),1)):z("",!0)])],8,qi))],16,Ti)}const Gi=x(Wi,[["render",ji]]),Ji={name:"PlusIcon",emits:["click"],props:{title:{type:String},fillColor:{type:String,default:"currentColor"},size:{type:Number,default:24}}},Ki=["aria-hidden","aria-label"],Qi=["fill","width","height"],Xi={d:"M19,13H13V19H11V13H5V11H11V5H13V11H19V13Z"},Yi={key:0};function ea(t,i,e,a,l,r){return s(),c("span",D(t.$attrs,{"aria-hidden":e.title?null:"true","aria-label":e.title,class:"material-design-icon plus-icon",role:"img",onClick:i[0]||(i[0]=n=>t.$emit("click",n))}),[(s(),c("svg",{fill:e.fillColor,class:"material-design-icon__svg",width:e.size,height:e.size,viewBox:"0 0 24 24"},[f("path",Xi,[e.title?(s(),c("title",Yi,$(e.title),1)):z("",!0)])],8,Qi))],16,Ki)}const ta=x(Ji,[["render",ea]]),ia=H({__name:"FilePickerBreadcrumbs",props:pe({showMenu:{type:Boolean}},{path:{required:!0},pathModifiers:{}}),emits:pe(["createNode"],["update:path"]),setup(t,{emit:i}){const e=ue(t,"path"),a=i,l=L(!1),r=L(""),n=We("nameInput");function u(){const g=r.value.trim(),y=n.value?.$el?.querySelector("input");let v="";try{et(g)}catch(B){if(!(B instanceof tt))throw B;switch(B.reason){case se.Character:v=h('"{char}" is not allowed inside a folder name.',{char:B.segment});break;case se.ReservedName:v=h('"{segment}" is a reserved name and not allowed for folder names.',{segment:B.segment});break;case se.Extension:v=h('Folder names must not end with "{extension}".',{extension:B.segment});break;default:v=h("Invalid folder name.")}}return y&&y.setCustomValidity(v),v===""}function p(){const g=r.value.trim();u()&&(l.value=!1,a("createNode",g),r.value="")}const o=b(()=>e.value.split("/").filter(g=>g!=="").map((g,y,v)=>({name:g,path:"/"+v.slice(0,y+1).join("/")})));return(g,y)=>(s(),C(d(Ht),{class:"file-picker__breadcrumbs"},Fe({default:w(()=>[_(d(Y),{name:d(h)("All files"),title:d(h)("Home"),onClick:y[0]||(y[0]=v=>e.value="/")},{icon:w(()=>[_(Gi,{size:20})]),_:1},8,["name","title"]),(s(!0),c(M,null,Q(o.value,v=>(s(),C(d(Y),{key:v.path,name:v.name,title:v.path,onClick:B=>e.value=v.path},null,8,["name","title","onClick"]))),128))]),_:2},[t.showMenu?{name:"actions",fn:w(()=>[_(d(ve),{open:l.value,"onUpdate:open":y[2]||(y[2]=v=>l.value=v),"aria-label":d(h)("Create directory"),forceMenu:!0,forceName:!0,menuName:d(h)("New"),variant:"secondary",onClose:y[3]||(y[3]=v=>r.value="")},{icon:w(()=>[_(ta,{size:20})]),default:w(()=>[_(d(ht),{ref_key:"nameInput",ref:n,modelValue:r.value,"onUpdate:modelValue":[y[1]||(y[1]=v=>r.value=v),u],label:d(h)("New folder"),placeholder:d(h)("New folder name"),onSubmit:p},{icon:w(()=>[_(Re,{size:20})]),_:1},8,["modelValue","label","placeholder"])]),_:1},8,["open","aria-label","menuName"])]),key:"0"}:void 0]),1024))}}),aa=x(ia,[["__scopeId","data-v-b448b141"]]),la={name:"CloseIcon",emits:["click"],props:{title:{type:String},fillColor:{type:String,default:"currentColor"},size:{type:Number,default:24}}},ra=["aria-hidden","aria-label"],na=["fill","width","height"],sa={d:"M19,6.41L17.59,5L12,10.59L6.41,5L5,6.41L10.59,12L5,17.59L6.41,19L12,13.41L17.59,19L19,17.59L13.41,12L19,6.41Z"},oa={key:0};function ca(t,i,e,a,l,r){return s(),c("span",D(t.$attrs,{"aria-hidden":e.title?null:"true","aria-label":e.title,class:"material-design-icon close-icon",role:"img",onClick:i[0]||(i[0]=n=>t.$emit("click",n))}),[(s(),c("svg",{fill:e.fillColor,class:"material-design-icon__svg",width:e.size,height:e.size,viewBox:"0 0 24 24"},[f("path",sa,[e.title?(s(),c("title",oa,$(e.title),1)):z("",!0)])],8,na))],16,ra)}const da=x(la,[["render",ca]]),ua={name:"MagnifyIcon",emits:["click"],props:{title:{type:String},fillColor:{type:String,default:"currentColor"},size:{type:Number,default:24}}},pa=["aria-hidden","aria-label"],fa=["fill","width","height"],ma={d:"M9.5,3A6.5,6.5 0 0,1 16,9.5C16,11.11 15.41,12.59 14.44,13.73L14.71,14H15.5L20.5,19L19,20.5L14,15.5V14.71L13.73,14.44C12.59,15.41 11.11,16 9.5,16A6.5,6.5 0 0,1 3,9.5A6.5,6.5 0 0,1 9.5,3M9.5,5C7,5 5,7 5,9.5C5,12 7,14 9.5,14C12,14 14,12 14,9.5C14,7 12,5 9.5,5Z"},ha={key:0};function va(t,i,e,a,l,r){return s(),c("span",D(t.$attrs,{"aria-hidden":e.title?null:"true","aria-label":e.title,class:"material-design-icon magnify-icon",role:"img",onClick:i[0]||(i[0]=n=>t.$emit("click",n))}),[(s(),c("svg",{fill:e.fillColor,class:"material-design-icon__svg",width:e.size,height:e.size,viewBox:"0 0 24 24"},[f("path",ma,[e.title?(s(),c("title",ha,$(e.title),1)):z("",!0)])],8,fa))],16,pa)}const ga=x(ua,[["render",va]]);function ya(t){const i=[{id:"files",label:h("All files"),icon:rt},{id:"recent",label:h("Recent"),icon:nt},{id:"favorites",label:h("Favorites"),icon:st}],e=t.value?i.filter(({id:a})=>a==="files"):i;return{allViews:i,availableViews:e}}const ba={key:0,class:"file-picker__side"},wa=H({__name:"FilePickerNavigation",props:{currentView:{},filterString:{},isCollapsed:{type:Boolean},disabledNavigation:{type:Boolean}},emits:["update:currentView","update:filterString"],setup(t,{emit:i}){const e=t,a=i,{availableViews:l}=ya(L(Qe()===null)),r=b(()=>l.filter(u=>u.id===e.currentView)[0]??l[0]),n=u=>a("update:filterString",u.toString());return(u,p)=>(s(),c(M,null,[_(d(yt),{class:"file-picker__filter-input",label:d(h)("Filter file list"),showTrailingButton:!!t.filterString,modelValue:t.filterString,"onUpdate:modelValue":n,onTrailingButtonClick:p[0]||(p[0]=o=>n(""))},{"trailing-button-icon":w(()=>[_(da,{size:16})]),default:w(()=>[_(ga,{size:16})]),_:1},8,["label","showTrailingButton","modelValue"]),d(l).length>1&&!t.disabledNavigation?(s(),c(M,{key:0},[t.isCollapsed?(s(),C(d(gt),{key:1,"aria-label":d(h)("Current view selector"),clearable:!1,searchable:!1,options:d(l),modelValue:r.value,"onUpdate:modelValue":p[1]||(p[1]=o=>a("update:currentView",o.id))},null,8,["aria-label","options","modelValue"])):(s(),c("ul",ba,[(s(!0),c(M,null,Q(d(l),o=>(s(),c("li",{key:o.id},[_(d(Z),{variant:t.currentView===o.id?"primary":"tertiary",wide:!0,onClick:g=>u.$emit("update:currentView",o.id)},{icon:w(()=>[_(d(xe),{path:o.icon,size:20},null,8,["path"])]),default:w(()=>[q(" "+$(o.label),1)]),_:2},1032,["variant","onClick"])]))),128))]))],64)):z("",!0)],64))}}),ka=x(wa,[["__scopeId","data-v-e1c54e23"]]);async function _a({client:t,signal:i}){const e=Math.round(Date.now()/1e3)-1209600,{data:a}=await t.search("/",{signal:i,details:!0,data:kt(e)});return a.results.map(l=>ye(l))}async function Ca({client:t,path:i,signal:e}){const a=(await t.getDirectoryContents(X(ge,i),{signal:e,details:!0,includeSelf:!0,data:Me()})).data.map(l=>ye(l));return{contents:a.filter(({path:l})=>l!==i),folder:a.find(({path:l})=>i===l)}}async function La(t,i){const{data:e}=await t.stat(X(ge,i),{details:!0,data:Me()});return ye(e)}function $a(t,i){const e=bt(),a=de([]),l=de(null),r=L(!0);let n;async function u(o){const g=X(i.value,o);await e.createDirectory(X(ge,g));const y=await La(e,g);return a.value=[...a.value,y],y}async function p(){n&&(n.abort(),n=void 0),n=new AbortController,r.value=!0;try{if(t.value==="favorites")a.value=await wt({client:e,path:i.value,signal:n.signal}),l.value=null;else if(t.value==="recent")a.value=await _a({client:e,signal:n.signal}),l.value=null;else{const o=await Ca({client:e,path:i.value,signal:n.signal});l.value=o.folder,a.value=o.contents}}catch(o){if(o instanceof Error&&o.name==="AbortError")return;throw o}finally{n=void 0,r.value=!1}}return Pe([t,i],()=>p()),J(()=>p()),{isLoading:r,files:a,folder:l,loadFiles:p,createDirectory:u}}function za(t){const i=b(()=>t.value.map(e=>e.split("/")));return{isSupportedMimeType:e=>{const a=e.split("/");return i.value.some(([l,r])=>(a[0]===l||l==="*")&&(a[1]===r||r==="*"))}}}const Ba={class:"file-picker__main"},Fa={key:1,class:"file-picker__view"},Pa=H({__name:"FilePicker",props:{buttons:{},name:{},allowPickDirectory:{type:Boolean,default:!1},noMenu:{type:Boolean,default:!1},disabledNavigation:{type:Boolean,default:!1},filterFn:{type:Function,default:void 0},canPickFn:{type:Function,default:void 0},mimetypeFilter:{default:()=>[]},multiselect:{type:Boolean,default:!1},path:{default:void 0}},emits:["close"],setup(t,{emit:i}){const e=t,a=i,l=L(!0),r=L("files"),n=L(window?.sessionStorage.getItem("NC.FilePicker.LastPath")||"/"),u=L(""),p=b({get:()=>r.value==="files"?u.value||e.path||n.value:"/",set:k=>{u.value=k}}),o=de([]),g=L(""),{files:y,folder:v,isLoading:B,loadFiles:V,createDirectory:te}=$a(r,p);Pe([u],()=>{e.path===void 0&&u.value&&window.sessionStorage.setItem("NC.FilePicker.LastPath",u.value),o.value=[],g.value=""});let W=!1;const ie=b(()=>{const k=o.value.length===0&&e.allowPickDirectory&&v.value&&(!e.canPickFn||e.canPickFn(v.value))?[v.value]:o.value;return(typeof e.buttons=="function"?e.buttons(k,p.value,r.value):e.buttons).map(m=>({...m,disabled:m.disabled||B.value,callback:()=>{W=!0,ae(m.callback,k)}}))});async function ae(k,m){await k(m),a("close",m),W=!1}const T=b(()=>r.value==="favorites"?h("Favorites"):r.value==="recent"?h("Recent"):""),{isSupportedMimeType:E}=za(Se(e,"mimetypeFilter"));J(()=>V());const{showHiddenFiles:F}=He(),P=b(()=>{let k=y.value;return F.value||(k=k.filter(m=>!m.basename.startsWith("."))),e.mimetypeFilter.length>0&&(k=k.filter(m=>m.type==="folder"||m.mime&&E(m.mime))),g.value&&(k=k.filter(m=>m.basename.toLowerCase().includes(g.value.toLowerCase()))),e.filterFn&&(k=k.filter(m=>e.filterFn(m))),k}),S=b(()=>r.value==="files"?h("Upload some content or sync with your devices!"):r.value==="recent"?h("Files and folders you recently modified will show up here."):h("Files and folders you mark as favorite will show up here."));async function R(k){try{const m=await te(k);u.value=m.path,Ke("files:node:created",y.value.filter(I=>I.basename===k)[0])}catch(m){G.warn("Could not create new folder",{name:k,error:m}),he(h("Could not create the new folder"))}}function Ee(k){!k&&!W&&a("close")}return(k,m)=>(s(),C(d(Ye),{open:l.value,"onUpdate:open":[m[6]||(m[6]=I=>l.value=I),Ee],buttons:ie.value,name:t.name,size:"large",contentClasses:"file-picker__content",dialogClasses:"file-picker",navigationClasses:"file-picker__navigation"},{navigation:w(({isCollapsed:I})=>[_(ka,{currentView:r.value,"onUpdate:currentView":m[0]||(m[0]=le=>r.value=le),filterString:g.value,"onUpdate:filterString":m[1]||(m[1]=le=>g.value=le),isCollapsed:I,disabledNavigation:t.disabledNavigation},null,8,["currentView","filterString","isCollapsed","disabledNavigation"])]),default:w(()=>[f("div",Ba,[r.value==="files"?(s(),C(aa,{key:0,path:p.value,"onUpdate:path":m[2]||(m[2]=I=>p.value=I),showMenu:!t.noMenu,onCreateNode:R},null,8,["path","showMenu"])):(s(),c("div",Fa,[f("h3",null,$(T.value),1)])),d(B)||P.value.length>0?(s(),C(Ui,{key:2,path:p.value,"onUpdate:path":[m[3]||(m[3]=I=>p.value=I),m[5]||(m[5]=I=>r.value="files")],selectedFiles:o.value,"onUpdate:selectedFiles":m[4]||(m[4]=I=>o.value=I),allowPickDirectory:t.allowPickDirectory,currentView:r.value,files:P.value,multiselect:t.multiselect,loading:d(B),name:T.value,canPick:t.canPickFn},null,8,["path","selectedFiles","allowPickDirectory","currentView","files","multiselect","loading","name","canPick"])):g.value?(s(),C(d(we),{key:3,name:d(h)("No matching files"),description:d(h)("No files matching your filter were found.")},{icon:w(()=>[_(fe)]),_:1},8,["name","description"])):(s(),C(d(we),{key:4,name:d(h)("No files in here"),description:S.value},{icon:w(()=>[_(fe)]),_:1},8,["name","description"]))])]),_:1},8,["open","buttons","name"]))}}),al=x(Pa,[["__scopeId","data-v-39182aaf"]]);export{al as default}; +//# sourceMappingURL=FilePicker-BXhywAAW.chunk.mjs.map diff --git a/dist/FilePicker-0pVFI2AM.chunk.mjs.license b/dist/FilePicker-BXhywAAW.chunk.mjs.license similarity index 100% rename from dist/FilePicker-0pVFI2AM.chunk.mjs.license rename to dist/FilePicker-BXhywAAW.chunk.mjs.license diff --git a/dist/FilePicker-0pVFI2AM.chunk.mjs.map b/dist/FilePicker-BXhywAAW.chunk.mjs.map similarity index 99% rename from dist/FilePicker-0pVFI2AM.chunk.mjs.map rename to dist/FilePicker-BXhywAAW.chunk.mjs.map index 54d692a889df8..2fec0502ecac3 100644 --- a/dist/FilePicker-0pVFI2AM.chunk.mjs.map +++ b/dist/FilePicker-BXhywAAW.chunk.mjs.map @@ -1 +1 @@ -{"version":3,"file":"FilePicker-0pVFI2AM.chunk.mjs","sources":["../node_modules/@nextcloud/vue/dist/chunks/NcBreadcrumb-3Y5NWXnV.mjs","../node_modules/@nextcloud/vue/dist/chunks/NcBreadcrumbs-BaTp3Sya.mjs","../node_modules/@nextcloud/dialogs/dist/chunks/preview.mjs","../node_modules/@nextcloud/dialogs/dist/chunks/_plugin-vue_export-helper.mjs","../node_modules/@nextcloud/dialogs/dist/chunks/FilePicker.mjs"],"sourcesContent":["import '../assets/NcBreadcrumb-BxhZKQlW.css';\nimport { openBlock, createElementBlock, mergeProps, createElementVNode, toDisplayString, createCommentVNode, resolveComponent, withModifiers, normalizeClass, createBlock, createSlots, withCtx, renderSlot, createTextVNode, createVNode } from \"vue\";\nimport { _ as _export_sfc } from \"./_plugin-vue_export-helper-1tPrXgE0.mjs\";\nimport { N as NcButton } from \"./NcButton-jvoYS2my.mjs\";\nimport { c as createElementId } from \"./createElementId-DhjFt1I9.mjs\";\nimport { N as NcActions } from \"./NcActions-C-wDqSrv.mjs\";\nconst _sfc_main$1 = {\n name: \"ChevronRightIcon\",\n emits: [\"click\"],\n props: {\n title: {\n type: String\n },\n fillColor: {\n type: String,\n default: \"currentColor\"\n },\n size: {\n type: Number,\n default: 24\n }\n }\n};\nconst _hoisted_1$1 = [\"aria-hidden\", \"aria-label\"];\nconst _hoisted_2 = [\"fill\", \"width\", \"height\"];\nconst _hoisted_3 = { d: \"M8.59,16.58L13.17,12L8.59,7.41L10,6L16,12L10,18L8.59,16.58Z\" };\nconst _hoisted_4 = { key: 0 };\nfunction _sfc_render$1(_ctx, _cache, $props, $setup, $data, $options) {\n return openBlock(), createElementBlock(\"span\", mergeProps(_ctx.$attrs, {\n \"aria-hidden\": $props.title ? null : \"true\",\n \"aria-label\": $props.title,\n class: \"material-design-icon chevron-right-icon\",\n role: \"img\",\n onClick: _cache[0] || (_cache[0] = ($event) => _ctx.$emit(\"click\", $event))\n }), [\n (openBlock(), createElementBlock(\"svg\", {\n fill: $props.fillColor,\n class: \"material-design-icon__svg\",\n width: $props.size,\n height: $props.size,\n viewBox: \"0 0 24 24\"\n }, [\n createElementVNode(\"path\", _hoisted_3, [\n $props.title ? (openBlock(), createElementBlock(\"title\", _hoisted_4, toDisplayString($props.title), 1)) : createCommentVNode(\"\", true)\n ])\n ], 8, _hoisted_2))\n ], 16, _hoisted_1$1);\n}\nconst ChevronRight = /* @__PURE__ */ _export_sfc(_sfc_main$1, [[\"render\", _sfc_render$1]]);\nconst _sfc_main = {\n name: \"NcBreadcrumb\",\n components: {\n NcActions,\n ChevronRight,\n NcButton\n },\n inheritAttrs: false,\n props: {\n /**\n * The main text content of the entry.\n */\n name: {\n type: String,\n required: true\n },\n /**\n * The title attribute of the element.\n */\n title: {\n type: String,\n default: null\n },\n /**\n * Route Location the link should navigate to when clicked on.\n *\n * @see https://v3.router.vuejs.org/api/#to\n */\n to: {\n type: [String, Object],\n default: void 0\n },\n /**\n * Set this prop if your app doesn't use vue-router, breadcrumbs will show as normal links.\n */\n href: {\n type: String,\n default: void 0\n },\n /**\n * Set a css icon-class to show an icon along name text (if forceIconText is provided, otherwise just icon).\n */\n icon: {\n type: String,\n default: \"\"\n },\n /**\n * Enables text to accompany the icon, if the icon was provided. The text that will be displayed is the name prop.\n */\n forceIconText: {\n type: Boolean,\n default: false\n },\n /**\n * Disable dropping on this breadcrumb.\n */\n disableDrop: {\n type: Boolean,\n default: false\n },\n /**\n * Force the actions to display in a three dot menu\n */\n forceMenu: {\n type: Boolean,\n default: false\n },\n /**\n * Open state of the Actions menu\n */\n open: {\n type: Boolean,\n default: false\n },\n /**\n * CSS class to apply to the root element.\n */\n class: {\n type: [String, Array, Object],\n default: \"\"\n }\n },\n emits: [\n \"dragenter\",\n \"dragleave\",\n \"dropped\",\n \"update:open\"\n ],\n setup() {\n const crumbId = createElementId();\n return {\n actionsContainer: `.vue-crumb[data-crumb-id=\"${crumbId}\"]`,\n crumbId\n };\n },\n data() {\n return {\n /**\n * Variable to track if we hover over the breadcrumb\n */\n hovering: false\n };\n },\n computed: {\n /**\n * The attributes to pass to `router-link` or `a`\n */\n linkAttributes() {\n if (this.to) {\n return { to: this.to, ...this.$attrs };\n } else if (this.href) {\n return { href: this.href, ...this.$attrs };\n }\n return this.$attrs;\n }\n },\n methods: {\n /**\n * Function to handle changing the open state of the Actions menu\n * $emit the open state.\n *\n * @param {boolean} open The open state of the Actions menu\n */\n onOpenChange(open) {\n this.$emit(\"update:open\", open);\n },\n /**\n * Function to handle a drop on the breadcrumb.\n * $emit the event and the path, remove the hovering state.\n *\n * @param {object} e The drop event\n * @return {boolean}\n */\n dropped(e) {\n if (this.disableDrop) {\n return false;\n }\n this.$emit(\"dropped\", e, this.to || this.href);\n this.$parent.$emit(\"dropped\", e, this.to || this.href);\n this.hovering = false;\n return false;\n },\n /**\n * Add the hovering state on drag enter\n *\n * @param {DragEvent} e The drag-enter event\n */\n dragEnter(e) {\n this.$emit(\"dragenter\", e);\n if (this.disableDrop) {\n return;\n }\n this.hovering = true;\n },\n /**\n * Remove the hovering state on drag leave\n *\n * @param {DragEvent} e The drag leave event\n */\n dragLeave(e) {\n this.$emit(\"dragleave\", e);\n if (this.disableDrop) {\n return;\n }\n if (e.target.contains(e.relatedTarget) || this.$refs.crumb.contains(e.relatedTarget)) {\n return;\n }\n this.hovering = false;\n }\n }\n};\nconst _hoisted_1 = [\"data-crumb-id\"];\nfunction _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {\n const _component_NcButton = resolveComponent(\"NcButton\");\n const _component_NcActions = resolveComponent(\"NcActions\");\n const _component_ChevronRight = resolveComponent(\"ChevronRight\");\n return openBlock(), createElementBlock(\"li\", {\n ref: \"crumb\",\n class: normalizeClass([\"vue-crumb\", [{ \"vue-crumb--hovered\": $data.hovering }, _ctx.$props.class]]),\n \"data-crumb-id\": $setup.crumbId,\n draggable: \"false\",\n onDragstart: withModifiers(() => {\n }, [\"prevent\"]),\n onDrop: _cache[0] || (_cache[0] = withModifiers((...args) => $options.dropped && $options.dropped(...args), [\"prevent\"])),\n onDragover: withModifiers(() => {\n }, [\"prevent\"]),\n onDragenter: _cache[1] || (_cache[1] = (...args) => $options.dragEnter && $options.dragEnter(...args)),\n onDragleave: _cache[2] || (_cache[2] = (...args) => $options.dragLeave && $options.dragLeave(...args))\n }, [\n ($props.name || $props.icon || _ctx.$slots.icon) && !_ctx.$slots.default ? (openBlock(), createBlock(_component_NcButton, mergeProps({\n key: 0,\n \"aria-label\": $props.icon ? $props.name : void 0,\n variant: \"tertiary\"\n }, $options.linkAttributes), createSlots({ _: 2 }, [\n _ctx.$slots.icon || $props.icon ? {\n name: \"icon\",\n fn: withCtx(() => [\n renderSlot(_ctx.$slots, \"icon\", {}, () => [\n createElementVNode(\"span\", {\n class: normalizeClass([$props.icon, \"icon\"])\n }, null, 2)\n ], true)\n ]),\n key: \"0\"\n } : void 0,\n !(_ctx.$slots.icon || $props.icon) || $props.forceIconText ? {\n name: \"default\",\n fn: withCtx(() => [\n createTextVNode(toDisplayString($props.name), 1)\n ]),\n key: \"1\"\n } : void 0\n ]), 1040, [\"aria-label\"])) : createCommentVNode(\"\", true),\n _ctx.$slots.default ? (openBlock(), createBlock(_component_NcActions, {\n key: 1,\n ref: \"actions\",\n container: $setup.actionsContainer,\n forceMenu: $props.forceMenu,\n forceName: \"\",\n menuName: $props.name,\n open: $props.open,\n title: $props.title,\n variant: \"tertiary\",\n \"onUpdate:open\": $options.onOpenChange\n }, {\n icon: withCtx(() => [\n renderSlot(_ctx.$slots, \"menu-icon\", {}, void 0, true)\n ]),\n default: withCtx(() => [\n renderSlot(_ctx.$slots, \"default\", {}, void 0, true)\n ]),\n _: 3\n }, 8, [\"container\", \"forceMenu\", \"menuName\", \"open\", \"title\", \"onUpdate:open\"])) : createCommentVNode(\"\", true),\n createVNode(_component_ChevronRight, {\n class: \"vue-crumb__separator\",\n size: 20\n })\n ], 42, _hoisted_1);\n}\nconst NcBreadcrumb = /* @__PURE__ */ _export_sfc(_sfc_main, [[\"render\", _sfc_render], [\"__scopeId\", \"data-v-7cec4a3e\"]]);\nexport {\n NcBreadcrumb as N\n};\n//# sourceMappingURL=NcBreadcrumb-3Y5NWXnV.mjs.map\n","import '../assets/NcBreadcrumbs-B4eyDS9i.css';\nimport { unsubscribe, subscribe } from \"@nextcloud/event-bus\";\nimport debounce from \"debounce\";\nimport { openBlock, createElementBlock, mergeProps, createElementVNode, toDisplayString, createCommentVNode, Fragment, cloneVNode, h } from \"vue\";\nimport { _ as _export_sfc } from \"./_plugin-vue_export-helper-1tPrXgE0.mjs\";\nimport { N as NcActions, i as isSlotPopulated } from \"./NcActions-C-wDqSrv.mjs\";\nimport { N as NcActionButton } from \"./NcActionButton-BO5T5ePT.mjs\";\nimport { N as NcActionLink } from \"./NcActionLink-BFiaYt9A.mjs\";\nimport { N as NcActionRouter } from \"./NcActionRouter-vYFtIOzD.mjs\";\nimport { N as NcBreadcrumb } from \"./NcBreadcrumb-3Y5NWXnV.mjs\";\nconst _sfc_main$1 = {\n name: \"FolderIcon\",\n emits: [\"click\"],\n props: {\n title: {\n type: String\n },\n fillColor: {\n type: String,\n default: \"currentColor\"\n },\n size: {\n type: Number,\n default: 24\n }\n }\n};\nconst _hoisted_1 = [\"aria-hidden\", \"aria-label\"];\nconst _hoisted_2 = [\"fill\", \"width\", \"height\"];\nconst _hoisted_3 = { d: \"M10,4H4C2.89,4 2,4.89 2,6V18A2,2 0 0,0 4,20H20A2,2 0 0,0 22,18V8C22,6.89 21.1,6 20,6H12L10,4Z\" };\nconst _hoisted_4 = { key: 0 };\nfunction _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {\n return openBlock(), createElementBlock(\"span\", mergeProps(_ctx.$attrs, {\n \"aria-hidden\": $props.title ? null : \"true\",\n \"aria-label\": $props.title,\n class: \"material-design-icon folder-icon\",\n role: \"img\",\n onClick: _cache[0] || (_cache[0] = ($event) => _ctx.$emit(\"click\", $event))\n }), [\n (openBlock(), createElementBlock(\"svg\", {\n fill: $props.fillColor,\n class: \"material-design-icon__svg\",\n width: $props.size,\n height: $props.size,\n viewBox: \"0 0 24 24\"\n }, [\n createElementVNode(\"path\", _hoisted_3, [\n $props.title ? (openBlock(), createElementBlock(\"title\", _hoisted_4, toDisplayString($props.title), 1)) : createCommentVNode(\"\", true)\n ])\n ], 8, _hoisted_2))\n ], 16, _hoisted_1);\n}\nconst IconFolder = /* @__PURE__ */ _export_sfc(_sfc_main$1, [[\"render\", _sfc_render]]);\nconst crumbClass = \"vue-crumb\";\nconst _sfc_main = {\n name: \"NcBreadcrumbs\",\n components: {\n NcActions,\n NcActionButton,\n NcActionRouter,\n NcActionLink,\n NcBreadcrumb,\n IconFolder\n },\n props: {\n /**\n * Set a css icon-class for the icon of the root breadcrumb to be used.\n */\n rootIcon: {\n type: String,\n default: \"icon-home\"\n },\n /**\n * Set the aria-label of the nav element.\n */\n ariaLabel: {\n type: String,\n default: null\n }\n },\n emits: [\"dropped\"],\n data() {\n return {\n /**\n * Array to track the hidden breadcrumbs by their index.\n * Comparing two crumbs somehow does not work, so we use the indices.\n */\n hiddenIndices: [],\n /**\n * This is the props of the middle Action menu\n * that show the ellipsised breadcrumbs\n */\n menuBreadcrumbProps: {\n // Don't show a name for this breadcrumb, only the Actions menu\n name: \"\",\n forceMenu: true,\n // Don't allow dropping directly on the actions breadcrumb\n disableDrop: true,\n // Is the menu open or not\n open: false\n },\n breadcrumbsRefs: []\n };\n },\n created() {\n window.addEventListener(\"resize\", debounce(() => {\n this.handleWindowResize();\n }, 100));\n subscribe(\"navigation-toggled\", this.delayedResize);\n },\n mounted() {\n this.handleWindowResize();\n },\n updated() {\n this.delayedResize();\n this.$nextTick(() => {\n this.hideCrumbs();\n });\n },\n beforeUnmount() {\n window.removeEventListener(\"resize\", this.handleWindowResize);\n unsubscribe(\"navigation-toggled\", this.delayedResize);\n },\n methods: {\n /**\n * Close the actions menu\n *\n * @param {object} e The event\n */\n closeActions(e) {\n if (this.$refs.actionsBreadcrumb.$el.contains(e.relatedTarget)) {\n return;\n }\n this.menuBreadcrumbProps.open = false;\n },\n /**\n * Call the resize function after a delay\n */\n async delayedResize() {\n await this.$nextTick();\n this.handleWindowResize();\n },\n /**\n * Check the width of the breadcrumb and hide breadcrumbs\n * if we overflow otherwise.\n */\n handleWindowResize() {\n if (!this.$refs.container) {\n return;\n }\n const nrCrumbs = this.breadcrumbsRefs.length;\n const hiddenIndices = [];\n const availableWidth = this.$refs.container.offsetWidth;\n let totalWidth = this.getTotalWidth();\n if (this.$refs.breadcrumb__actions) {\n totalWidth += this.$refs.breadcrumb__actions.offsetWidth;\n }\n let overflow = totalWidth - availableWidth;\n overflow += overflow > 0 ? 64 : 0;\n let i = 0;\n const startIndex = Math.floor(nrCrumbs / 2);\n while (overflow > 0 && i < nrCrumbs - 2) {\n const currentIndex = startIndex + (i % 2 ? i + 1 : i) / 2 * Math.pow(-1, i + nrCrumbs % 2);\n overflow -= this.getWidth(this.breadcrumbsRefs[currentIndex]?.$el, currentIndex === this.breadcrumbsRefs.length - 1);\n hiddenIndices.push(currentIndex);\n i++;\n }\n if (!this.arraysEqual(this.hiddenIndices, hiddenIndices.sort((a, b) => a - b))) {\n this.hiddenIndices = hiddenIndices;\n }\n },\n /**\n * Checks if two arrays are equal.\n * Only works for primitive arrays, but that's enough here.\n *\n * @param {Array} a The first array\n * @param {Array} b The second array\n * @return {boolean} Wether the arrays are equal\n */\n arraysEqual(a, b) {\n if (a.length !== b.length) {\n return false;\n } else if (a === b) {\n return true;\n } else if (a === null || b === null) {\n return false;\n }\n for (let i = 0; i < a.length; ++i) {\n if (a[i] !== b[i]) {\n return false;\n }\n }\n return true;\n },\n /**\n * Calculates the total width of all breadcrumbs\n *\n * @return {number} The total width\n */\n getTotalWidth() {\n return this.breadcrumbsRefs.reduce((width, crumb, index) => width + this.getWidth(crumb.$el, index === this.breadcrumbsRefs.length - 1), 0);\n },\n /**\n * Calculates the width of the provided element\n *\n * @param {object} el The element\n * @param {boolean} isLast Is this the last crumb\n * @return {number} The width\n */\n getWidth(el, isLast) {\n if (!el?.classList) {\n return 0;\n }\n const hide = el.classList.contains(`${crumbClass}--hidden`);\n el.style.minWidth = \"auto\";\n if (isLast) {\n el.style.maxWidth = \"210px\";\n }\n el.classList.remove(`${crumbClass}--hidden`);\n const w = el.offsetWidth;\n if (hide) {\n el.classList.add(`${crumbClass}--hidden`);\n }\n el.style.minWidth = \"\";\n el.style.maxWidth = \"\";\n return w;\n },\n /**\n * Prevents the default of a provided event\n *\n * @param {object} e The event\n * @return {boolean}\n */\n preventDefault(e) {\n if (e.preventDefault) {\n e.preventDefault();\n }\n return false;\n },\n /**\n * Handles the drag start.\n * Prevents a breadcrumb from being draggable.\n *\n * @param {object} e The event\n * @return {boolean}\n */\n dragStart(e) {\n return this.preventDefault(e);\n },\n /**\n * Handles when something is dropped on the breadcrumb.\n *\n * @param {object} e The drop event\n * @param {string} path The path of the breadcrumb\n * @param {boolean} disabled Whether dropping is disabled for this breadcrumb\n * @return {boolean}\n */\n dropped(e, path, disabled) {\n if (!disabled) {\n this.$emit(\"dropped\", e, path);\n }\n this.menuBreadcrumbProps.open = false;\n const crumbs = document.querySelectorAll(`.${crumbClass}`);\n for (const crumb of crumbs) {\n crumb.classList.remove(`${crumbClass}--hovered`);\n }\n return this.preventDefault(e);\n },\n /**\n * Handles the drag over event\n *\n * @param {object} e The drag over event\n * @return {boolean}\n */\n dragOver(e) {\n return this.preventDefault(e);\n },\n /**\n * Handles the drag enter event\n *\n * @param {object} e The drag over event\n * @param {boolean} disabled Whether dropping is disabled for this breadcrumb\n */\n dragEnter(e, disabled) {\n if (disabled) {\n return;\n }\n if (e.target.closest) {\n const target = e.target.closest(`.${crumbClass}`);\n if (target.classList && target.classList.contains(crumbClass)) {\n const crumbs = document.querySelectorAll(`.${crumbClass}`);\n for (const crumb of crumbs) {\n crumb.classList.remove(`${crumbClass}--hovered`);\n }\n target.classList.add(`${crumbClass}--hovered`);\n }\n }\n },\n /**\n * Handles the drag leave event\n *\n * @param {object} e The drag leave event\n * @param {boolean} disabled Whether dropping is disabled for this breadcrumb\n */\n dragLeave(e, disabled) {\n if (disabled) {\n return;\n }\n if (e.target.contains(e.relatedTarget)) {\n return;\n }\n if (e.target.closest) {\n const target = e.target.closest(`.${crumbClass}`);\n if (target.contains(e.relatedTarget)) {\n return;\n }\n if (target.classList && target.classList.contains(crumbClass)) {\n target.classList.remove(`${crumbClass}--hovered`);\n }\n }\n },\n /**\n * Check for each crumb if we have to hide it and\n * add it to the array of all crumbs.\n */\n hideCrumbs() {\n this.breadcrumbsRefs.forEach((crumb, i) => {\n if (crumb?.$el?.classList) {\n if (this.hiddenIndices.includes(i)) {\n crumb.$el.classList.add(`${crumbClass}--hidden`);\n } else {\n crumb.$el.classList.remove(`${crumbClass}--hidden`);\n }\n }\n });\n },\n isBreadcrumb(vnode) {\n return vnode?.type?.name === \"NcBreadcrumb\";\n }\n },\n /**\n * The render function to display the component\n *\n * @return {object|undefined} The created VNode\n */\n render() {\n let breadcrumbs = [];\n this.$slots.default?.().forEach((vnode) => {\n if (this.isBreadcrumb(vnode)) {\n breadcrumbs.push(vnode);\n return;\n }\n if (vnode?.type === Fragment) {\n vnode?.children?.forEach?.((child) => {\n if (this.isBreadcrumb(child)) {\n breadcrumbs.push(child);\n }\n });\n }\n });\n if (breadcrumbs.length === 0) {\n return;\n }\n breadcrumbs[0] = cloneVNode(breadcrumbs[0], {\n icon: this.rootIcon,\n ref: \"breadcrumbs\"\n });\n const breadcrumbsRefs = [];\n breadcrumbs = breadcrumbs.map((crumb, index) => cloneVNode(crumb, {\n ref: (crumb2) => {\n breadcrumbsRefs[index] = crumb2;\n }\n }));\n const crumbs = [...breadcrumbs];\n if (this.hiddenIndices.length) {\n crumbs.splice(\n Math.round(breadcrumbs.length / 2),\n 0,\n // The Actions menu\n // Use a breadcrumb component for the hidden breadcrumbs\n h(NcBreadcrumb, {\n class: \"dropdown\",\n ...this.menuBreadcrumbProps,\n // Hide the dropdown menu from screen-readers,\n // since the crumbs in the menu are still in the list.\n \"aria-hidden\": true,\n // Add a ref to the Actions menu\n ref: \"actionsBreadcrumb\",\n key: \"actions-breadcrumb-1\",\n // Add handlers so the Actions menu opens on hover\n onDragenter: () => {\n this.menuBreadcrumbProps.open = true;\n },\n onDragleave: this.closeActions,\n // Make sure we keep the same open state\n // as the Actions component\n \"onUpdate:open\": (open) => {\n this.menuBreadcrumbProps.open = open;\n }\n // Add all hidden breadcrumbs as ActionRouter or ActionLink\n }, {\n default: () => this.hiddenIndices.filter((index) => index <= breadcrumbs.length - 1).map((index) => {\n const crumb = breadcrumbs[index];\n const {\n // Get the parameters from the breadcrumb component props\n to,\n href,\n disableDrop,\n name,\n // Props to forward\n ...propsToForward\n } = crumb.props;\n delete propsToForward.ref;\n let element = NcActionButton;\n let path = \"\";\n if (href) {\n element = NcActionLink;\n path = href;\n }\n if (to) {\n element = NcActionRouter;\n path = to;\n }\n const folderIcon = h(IconFolder, {\n size: 20\n });\n return h(element, {\n ...propsToForward,\n class: crumbClass,\n href: href || null,\n to: to || null,\n // Prevent the breadcrumbs from being draggable\n draggable: false,\n // Add the drag and drop handlers\n onDragstart: this.dragStart,\n onDrop: ($event) => this.dropped($event, path, disableDrop),\n onDragover: this.dragOver,\n onDragenter: ($event) => this.dragEnter($event, disableDrop),\n onDragleave: ($event) => this.dragLeave($event, disableDrop)\n }, {\n default: () => name,\n icon: () => folderIcon\n });\n })\n })\n );\n }\n const wrapper = [h(\"nav\", { \"aria-label\": this.ariaLabel }, [h(\"ul\", { class: \"breadcrumb__crumbs\" }, [crumbs])])];\n if (isSlotPopulated(this.$slots.actions?.())) {\n wrapper.push(h(\"div\", { class: \"breadcrumb__actions\", ref: \"breadcrumb__actions\" }, this.$slots.actions?.()));\n }\n this.breadcrumbsRefs = breadcrumbsRefs;\n return h(\"div\", { class: [\"breadcrumb\", { \"breadcrumb--collapsed\": this.hiddenIndices.length === breadcrumbs.length - 2 }], ref: \"container\" }, wrapper);\n }\n};\nconst NcBreadcrumbs = /* @__PURE__ */ _export_sfc(_sfc_main, [[\"__scopeId\", \"data-v-5a4d73af\"]]);\nexport {\n NcBreadcrumbs as N\n};\n//# sourceMappingURL=NcBreadcrumbs-BaTp3Sya.mjs.map\n","import { FileType } from \"@nextcloud/files\";\nimport { generateUrl } from \"@nextcloud/router\";\nimport { ref, watchEffect, toValue } from \"vue\";\nimport PQueue from \"p-queue\";\nconst queue = new PQueue({ concurrency: 5 });\nfunction preloadImage(url) {\n const { resolve, promise } = Promise.withResolvers();\n queue.add(() => {\n const image = new Image();\n image.onerror = () => resolve(false);\n image.onload = () => resolve(true);\n image.src = url;\n return promise;\n });\n return promise;\n}\nfunction getPreviewURL(node, options = {}) {\n options = { size: 32, cropPreview: false, mimeFallback: true, ...options };\n try {\n const previewUrl = node.attributes?.previewUrl || generateUrl(\"/core/preview?fileId={fileid}\", {\n fileid: node.fileid\n });\n let url;\n try {\n url = new URL(previewUrl);\n } catch {\n url = new URL(previewUrl, window.location.origin);\n }\n url.searchParams.set(\"x\", `${options.size}`);\n url.searchParams.set(\"y\", `${options.size}`);\n url.searchParams.set(\"mimeFallback\", `${options.mimeFallback}`);\n url.searchParams.set(\"a\", options.cropPreview === true ? \"0\" : \"1\");\n url.searchParams.set(\"c\", `${node.attributes.etag}`);\n return url;\n } catch {\n return null;\n }\n}\nfunction usePreviewURL(node, options) {\n const previewURL = ref(null);\n const previewLoaded = ref(false);\n watchEffect(() => {\n previewLoaded.value = false;\n previewURL.value = getPreviewURL(toValue(node), toValue(options || {}));\n if (previewURL.value && toValue(node).type === FileType.File) {\n preloadImage(previewURL.value.href).then((success) => {\n previewLoaded.value = success;\n });\n }\n });\n return {\n previewURL,\n previewLoaded\n };\n}\nexport {\n getPreviewURL as g,\n usePreviewURL as u\n};\n//# sourceMappingURL=preview.mjs.map\n","const _export_sfc = (sfc, props) => {\n const target = sfc.__vccOpts || sfc;\n for (const [key, val] of props) {\n target[key] = val;\n }\n return target;\n};\nexport {\n _export_sfc as _\n};\n//# sourceMappingURL=_plugin-vue_export-helper.mjs.map\n","import { openBlock, createElementBlock, mergeProps, createElementVNode, toDisplayString, createCommentVNode, defineComponent, ref, computed, toRef, normalizeClass, normalizeStyle, unref, Fragment, createBlock, createVNode, toHandlers, withModifiers, onMounted, toValue, useModel, onUnmounted, withCtx, createTextVNode, renderList, mergeModels, nextTick, useTemplateRef, createSlots, shallowRef, watch } from \"vue\";\nimport { emit } from \"@nextcloud/event-bus\";\nimport NcDialog from \"@nextcloud/vue/components/NcDialog\";\nimport NcEmptyContent from \"@nextcloud/vue/components/NcEmptyContent\";\nimport { _ as _export_sfc } from \"./_plugin-vue_export-helper.mjs\";\nimport { FileType, Permission, formatFileSize, sortNodes, validateFilename, InvalidFilenameError, InvalidFilenameErrorReason } from \"@nextcloud/files\";\nimport NcButton from \"@nextcloud/vue/components/NcButton\";\nimport NcCheckboxRadioSwitch from \"@nextcloud/vue/components/NcCheckboxRadioSwitch\";\nimport { extname, join } from \"@nextcloud/paths\";\nimport NcDateTime from \"@nextcloud/vue/components/NcDateTime\";\nimport { mdiKey, mdiTagOutline, mdiLink, mdiAccountPlus, mdiAccountGroupOutline, mdiNetworkOutline, mdiFolder, mdiClock, mdiStar } from \"@mdi/js\";\nimport { ShareType } from \"@nextcloud/sharing\";\nimport NcIconSvgWrapper from \"@nextcloud/vue/components/NcIconSvgWrapper\";\nimport { u as usePreviewURL } from \"./preview.mjs\";\nimport { t, l as logger, s as showError } from \"./index.mjs\";\nimport axios from \"@nextcloud/axios\";\nimport { loadState } from \"@nextcloud/initial-state\";\nimport { generateUrl } from \"@nextcloud/router\";\nimport { isPublicShare } from \"@nextcloud/sharing/public\";\nimport NcActionInput from \"@nextcloud/vue/components/NcActionInput\";\nimport NcActions from \"@nextcloud/vue/components/NcActions\";\nimport NcBreadcrumb from \"@nextcloud/vue/components/NcBreadcrumb\";\nimport NcBreadcrumbs from \"@nextcloud/vue/components/NcBreadcrumbs\";\nimport { getCurrentUser } from \"@nextcloud/auth\";\nimport NcSelect from \"@nextcloud/vue/components/NcSelect\";\nimport NcTextField from \"@nextcloud/vue/components/NcTextField\";\nimport { getRecentSearch, resultToNode, defaultRootPath, getDefaultPropfind, getClient, getFavoriteNodes } from \"@nextcloud/files/dav\";\nconst _sfc_main$e = {\n name: \"FileIcon\",\n emits: [\"click\"],\n props: {\n title: {\n type: String\n },\n fillColor: {\n type: String,\n default: \"currentColor\"\n },\n size: {\n type: Number,\n default: 24\n }\n }\n};\nconst _hoisted_1$c = [\"aria-hidden\", \"aria-label\"];\nconst _hoisted_2$b = [\"fill\", \"width\", \"height\"];\nconst _hoisted_3$a = { d: \"M13,9V3.5L18.5,9M6,2C4.89,2 4,2.89 4,4V20A2,2 0 0,0 6,22H18A2,2 0 0,0 20,20V8L14,2H6Z\" };\nconst _hoisted_4$a = { key: 0 };\nfunction _sfc_render$7(_ctx, _cache, $props, $setup, $data, $options) {\n return openBlock(), createElementBlock(\"span\", mergeProps(_ctx.$attrs, {\n \"aria-hidden\": $props.title ? null : \"true\",\n \"aria-label\": $props.title,\n class: \"material-design-icon file-icon\",\n role: \"img\",\n onClick: _cache[0] || (_cache[0] = ($event) => _ctx.$emit(\"click\", $event))\n }), [\n (openBlock(), createElementBlock(\"svg\", {\n fill: $props.fillColor,\n class: \"material-design-icon__svg\",\n width: $props.size,\n height: $props.size,\n viewBox: \"0 0 24 24\"\n }, [\n createElementVNode(\"path\", _hoisted_3$a, [\n $props.title ? (openBlock(), createElementBlock(\"title\", _hoisted_4$a, toDisplayString($props.title), 1)) : createCommentVNode(\"\", true)\n ])\n ], 8, _hoisted_2$b))\n ], 16, _hoisted_1$c);\n}\nconst IconFile = /* @__PURE__ */ _export_sfc(_sfc_main$e, [[\"render\", _sfc_render$7]]);\nconst _sfc_main$d = {\n name: \"MenuDownIcon\",\n emits: [\"click\"],\n props: {\n title: {\n type: String\n },\n fillColor: {\n type: String,\n default: \"currentColor\"\n },\n size: {\n type: Number,\n default: 24\n }\n }\n};\nconst _hoisted_1$b = [\"aria-hidden\", \"aria-label\"];\nconst _hoisted_2$a = [\"fill\", \"width\", \"height\"];\nconst _hoisted_3$9 = { d: \"M7,10L12,15L17,10H7Z\" };\nconst _hoisted_4$9 = { key: 0 };\nfunction _sfc_render$6(_ctx, _cache, $props, $setup, $data, $options) {\n return openBlock(), createElementBlock(\"span\", mergeProps(_ctx.$attrs, {\n \"aria-hidden\": $props.title ? null : \"true\",\n \"aria-label\": $props.title,\n class: \"material-design-icon menu-down-icon\",\n role: \"img\",\n onClick: _cache[0] || (_cache[0] = ($event) => _ctx.$emit(\"click\", $event))\n }), [\n (openBlock(), createElementBlock(\"svg\", {\n fill: $props.fillColor,\n class: \"material-design-icon__svg\",\n width: $props.size,\n height: $props.size,\n viewBox: \"0 0 24 24\"\n }, [\n createElementVNode(\"path\", _hoisted_3$9, [\n $props.title ? (openBlock(), createElementBlock(\"title\", _hoisted_4$9, toDisplayString($props.title), 1)) : createCommentVNode(\"\", true)\n ])\n ], 8, _hoisted_2$a))\n ], 16, _hoisted_1$b);\n}\nconst IconSortDescending = /* @__PURE__ */ _export_sfc(_sfc_main$d, [[\"render\", _sfc_render$6]]);\nconst _sfc_main$c = {\n name: \"MenuUpIcon\",\n emits: [\"click\"],\n props: {\n title: {\n type: String\n },\n fillColor: {\n type: String,\n default: \"currentColor\"\n },\n size: {\n type: Number,\n default: 24\n }\n }\n};\nconst _hoisted_1$a = [\"aria-hidden\", \"aria-label\"];\nconst _hoisted_2$9 = [\"fill\", \"width\", \"height\"];\nconst _hoisted_3$8 = { d: \"M7,15L12,10L17,15H7Z\" };\nconst _hoisted_4$8 = { key: 0 };\nfunction _sfc_render$5(_ctx, _cache, $props, $setup, $data, $options) {\n return openBlock(), createElementBlock(\"span\", mergeProps(_ctx.$attrs, {\n \"aria-hidden\": $props.title ? null : \"true\",\n \"aria-label\": $props.title,\n class: \"material-design-icon menu-up-icon\",\n role: \"img\",\n onClick: _cache[0] || (_cache[0] = ($event) => _ctx.$emit(\"click\", $event))\n }), [\n (openBlock(), createElementBlock(\"svg\", {\n fill: $props.fillColor,\n class: \"material-design-icon__svg\",\n width: $props.size,\n height: $props.size,\n viewBox: \"0 0 24 24\"\n }, [\n createElementVNode(\"path\", _hoisted_3$8, [\n $props.title ? (openBlock(), createElementBlock(\"title\", _hoisted_4$8, toDisplayString($props.title), 1)) : createCommentVNode(\"\", true)\n ])\n ], 8, _hoisted_2$9))\n ], 16, _hoisted_1$a);\n}\nconst IconSortAscending = /* @__PURE__ */ _export_sfc(_sfc_main$c, [[\"render\", _sfc_render$5]]);\nconst _sfc_main$b = {\n name: \"FolderIcon\",\n emits: [\"click\"],\n props: {\n title: {\n type: String\n },\n fillColor: {\n type: String,\n default: \"currentColor\"\n },\n size: {\n type: Number,\n default: 24\n }\n }\n};\nconst _hoisted_1$9 = [\"aria-hidden\", \"aria-label\"];\nconst _hoisted_2$8 = [\"fill\", \"width\", \"height\"];\nconst _hoisted_3$7 = { d: \"M10,4H4C2.89,4 2,4.89 2,6V18A2,2 0 0,0 4,20H20A2,2 0 0,0 22,18V8C22,6.89 21.1,6 20,6H12L10,4Z\" };\nconst _hoisted_4$7 = { key: 0 };\nfunction _sfc_render$4(_ctx, _cache, $props, $setup, $data, $options) {\n return openBlock(), createElementBlock(\"span\", mergeProps(_ctx.$attrs, {\n \"aria-hidden\": $props.title ? null : \"true\",\n \"aria-label\": $props.title,\n class: \"material-design-icon folder-icon\",\n role: \"img\",\n onClick: _cache[0] || (_cache[0] = ($event) => _ctx.$emit(\"click\", $event))\n }), [\n (openBlock(), createElementBlock(\"svg\", {\n fill: $props.fillColor,\n class: \"material-design-icon__svg\",\n width: $props.size,\n height: $props.size,\n viewBox: \"0 0 24 24\"\n }, [\n createElementVNode(\"path\", _hoisted_3$7, [\n $props.title ? (openBlock(), createElementBlock(\"title\", _hoisted_4$7, toDisplayString($props.title), 1)) : createCommentVNode(\"\", true)\n ])\n ], 8, _hoisted_2$8))\n ], 16, _hoisted_1$9);\n}\nconst IconFolder = /* @__PURE__ */ _export_sfc(_sfc_main$b, [[\"render\", _sfc_render$4]]);\nconst fileListIconStyles = {\n \"file-picker__file-icon\": \"_file-picker__file-icon_1aykw_9\",\n \"file-picker__file-icon--primary\": \"_file-picker__file-icon--primary_1aykw_22\",\n \"file-picker__file-icon-overlay\": \"_file-picker__file-icon-overlay_1aykw_26\"\n};\nconst _sfc_main$a = /* @__PURE__ */ defineComponent({\n __name: \"FilePreview\",\n props: {\n node: {},\n cropImagePreviews: { type: Boolean }\n },\n setup(__props) {\n const props = __props;\n const fileListIconStyles$1 = ref(fileListIconStyles);\n const {\n previewURL,\n previewLoaded\n } = usePreviewURL(toRef(props, \"node\"), computed(() => ({ cropPreview: props.cropImagePreviews })));\n const isFile = computed(() => props.node.type === FileType.File);\n const folderDecorationIcon = computed(() => {\n if (props.node.type !== FileType.Folder) {\n return null;\n }\n if (props.node.attributes?.[\"is-encrypted\"] === 1) {\n return mdiKey;\n }\n if (props.node.attributes?.[\"is-tag\"]) {\n return mdiTagOutline;\n }\n const shareTypes = Object.values(props.node.attributes?.[\"share-types\"] || {}).flat();\n if (shareTypes.some((type) => type === ShareType.Link || type === ShareType.Email)) {\n return mdiLink;\n }\n if (shareTypes.length > 0) {\n return mdiAccountPlus;\n }\n switch (props.node.attributes?.[\"mount-type\"]) {\n case \"external\":\n case \"external-session\":\n return mdiNetworkOutline;\n case \"group\":\n return mdiAccountGroupOutline;\n case \"shared\":\n return mdiAccountPlus;\n }\n return null;\n });\n return (_ctx, _cache) => {\n return openBlock(), createElementBlock(\"div\", {\n style: normalizeStyle(unref(previewLoaded) ? { backgroundImage: `url(${unref(previewURL)})` } : void 0),\n class: normalizeClass(fileListIconStyles$1.value[\"file-picker__file-icon\"])\n }, [\n !unref(previewLoaded) ? (openBlock(), createElementBlock(Fragment, { key: 0 }, [\n isFile.value ? (openBlock(), createBlock(IconFile, {\n key: 0,\n size: 32\n })) : (openBlock(), createElementBlock(Fragment, { key: 1 }, [\n folderDecorationIcon.value ? (openBlock(), createBlock(unref(NcIconSvgWrapper), {\n key: 0,\n class: normalizeClass(fileListIconStyles$1.value[\"file-picker__file-icon-overlay\"]),\n inline: \"\",\n path: folderDecorationIcon.value,\n size: 16\n }, null, 8, [\"class\", \"path\"])) : createCommentVNode(\"\", true),\n createVNode(IconFolder, {\n class: normalizeClass(fileListIconStyles$1.value[\"file-picker__file-icon--primary\"]),\n size: 32\n }, null, 8, [\"class\"])\n ], 64))\n ], 64)) : createCommentVNode(\"\", true)\n ], 6);\n };\n }\n});\nconst _hoisted_1$8 = [\"tabindex\", \"aria-selected\", \"data-filename\"];\nconst _hoisted_2$7 = { class: \"row-name\" };\nconst _hoisted_3$6 = {\n class: \"file-picker__name-container\",\n \"data-testid\": \"row-name\"\n};\nconst _hoisted_4$6 = [\"title\", \"textContent\"];\nconst _hoisted_5$1 = [\"textContent\"];\nconst _hoisted_6$1 = { class: \"row-size\" };\nconst _hoisted_7$1 = { class: \"row-modified\" };\nconst _sfc_main$9 = /* @__PURE__ */ defineComponent({\n __name: \"FileListRow\",\n props: {\n allowPickDirectory: { type: Boolean },\n selected: { type: Boolean },\n showCheckbox: { type: Boolean },\n canPick: { type: Boolean },\n node: {},\n cropImagePreviews: { type: Boolean }\n },\n emits: [\"update:selected\", \"enterDirectory\"],\n setup(__props, { emit: __emit }) {\n const props = __props;\n const emit2 = __emit;\n const timestamp = computed(() => props.node.mtime ?? 0);\n const fileExtension = computed(() => extname(props.node.displayname));\n const displayName = computed(() => props.node.displayname.slice(0, fileExtension.value ? -fileExtension.value.length : void 0));\n const isDirectory = computed(() => props.node.type === FileType.Folder);\n const isPickable = computed(() => props.canPick && (props.allowPickDirectory || !isDirectory.value));\n const isNavigatable = computed(() => (props.node.permissions & Permission.READ) === Permission.READ);\n function toggleSelected() {\n if (!isPickable.value) {\n return;\n }\n emit2(\"update:selected\", !props.selected);\n }\n function handleClick() {\n if (isDirectory.value) {\n if (isNavigatable.value) {\n emit2(\"enterDirectory\", props.node);\n }\n } else {\n toggleSelected();\n }\n }\n function handleKeyDown(event) {\n if (event.key === \"Enter\") {\n handleClick();\n }\n }\n return (_ctx, _cache) => {\n return openBlock(), createElementBlock(\"tr\", mergeProps({\n tabindex: __props.showCheckbox && !isDirectory.value ? void 0 : 0,\n \"aria-selected\": !isPickable.value ? void 0 : __props.selected,\n class: [\"file-picker__row\", [\n {\n \"file-picker__row--selected\": __props.selected && !__props.showCheckbox,\n \"file-picker__row--not-navigatable\": isDirectory.value && !isNavigatable.value,\n \"file-picker__row--not-pickable\": !isPickable.value\n }\n ]],\n \"data-filename\": __props.node.basename,\n \"data-testid\": \"file-list-row\"\n }, toHandlers({\n click: handleClick,\n /* same as tabindex -> if we hide the checkbox or this is a directory we need keyboard access to enter the directory or select the node */\n ...!__props.showCheckbox || isDirectory.value ? { keydown: handleKeyDown } : {}\n }, true)), [\n __props.showCheckbox ? (openBlock(), createElementBlock(\"td\", {\n key: 0,\n class: \"row-checkbox\",\n onClick: withModifiers(() => {\n }, [\"stop\"])\n }, [\n createVNode(unref(NcCheckboxRadioSwitch), {\n \"aria-label\": unref(t)(\"Select the row for {nodename}\", { nodename: displayName.value }),\n disabled: !isPickable.value,\n \"data-testid\": \"row-checkbox\",\n modelValue: __props.selected,\n \"onUpdate:modelValue\": toggleSelected\n }, null, 8, [\"aria-label\", \"disabled\", \"modelValue\"])\n ])) : createCommentVNode(\"\", true),\n createElementVNode(\"td\", _hoisted_2$7, [\n createElementVNode(\"div\", _hoisted_3$6, [\n createVNode(_sfc_main$a, {\n node: __props.node,\n cropImagePreviews: __props.cropImagePreviews\n }, null, 8, [\"node\", \"cropImagePreviews\"]),\n createElementVNode(\"div\", {\n class: \"file-picker__file-name\",\n title: displayName.value,\n textContent: toDisplayString(displayName.value)\n }, null, 8, _hoisted_4$6),\n createElementVNode(\"div\", {\n class: \"file-picker__file-extension\",\n textContent: toDisplayString(fileExtension.value)\n }, null, 8, _hoisted_5$1)\n ])\n ]),\n createElementVNode(\"td\", _hoisted_6$1, toDisplayString(unref(formatFileSize)(__props.node.size || 0)), 1),\n createElementVNode(\"td\", _hoisted_7$1, [\n createVNode(unref(NcDateTime), {\n timestamp: timestamp.value,\n ignoreSeconds: \"\"\n }, null, 8, [\"timestamp\"])\n ])\n ], 16, _hoisted_1$8);\n };\n }\n});\nconst FileListRow = /* @__PURE__ */ _export_sfc(_sfc_main$9, [[\"__scopeId\", \"data-v-7857e8bd\"]]);\nconst _hoisted_1$7 = {\n \"aria-hidden\": \"true\",\n class: \"file-picker__row loading-row\"\n};\nconst _hoisted_2$6 = {\n key: 0,\n class: \"row-checkbox\"\n};\nconst _hoisted_3$5 = { class: \"row-name\" };\nconst _hoisted_4$5 = { class: \"row-wrapper\" };\nconst _sfc_main$8 = /* @__PURE__ */ defineComponent({\n __name: \"LoadingTableRow\",\n props: {\n showCheckbox: { type: Boolean }\n },\n setup(__props) {\n return (_ctx, _cache) => {\n return openBlock(), createElementBlock(\"tr\", _hoisted_1$7, [\n __props.showCheckbox ? (openBlock(), createElementBlock(\"td\", _hoisted_2$6, [..._cache[0] || (_cache[0] = [\n createElementVNode(\"span\", null, null, -1)\n ])])) : createCommentVNode(\"\", true),\n createElementVNode(\"td\", _hoisted_3$5, [\n createElementVNode(\"div\", _hoisted_4$5, [\n createElementVNode(\"span\", {\n class: normalizeClass(unref(fileListIconStyles)[\"file-picker__file-icon\"])\n }, null, 2),\n _cache[1] || (_cache[1] = createElementVNode(\"span\", null, null, -1))\n ])\n ]),\n _cache[2] || (_cache[2] = createElementVNode(\"td\", { class: \"row-size\" }, [\n createElementVNode(\"span\")\n ], -1)),\n _cache[3] || (_cache[3] = createElementVNode(\"td\", { class: \"row-modified\" }, [\n createElementVNode(\"span\")\n ], -1))\n ]);\n };\n }\n});\nconst LoadingTableRow = /* @__PURE__ */ _export_sfc(_sfc_main$8, [[\"__scopeId\", \"data-v-1f96131b\"]]);\nfunction useFilesSettings() {\n const filesUserState = loadState(\"files\", \"config\", null);\n const showHiddenFiles = ref(filesUserState?.show_hidden ?? true);\n const sortFavoritesFirst = ref(filesUserState?.sort_favorites_first ?? true);\n const cropImagePreviews = ref(filesUserState?.crop_image_previews ?? true);\n onMounted(async () => {\n if (!isPublicShare()) {\n try {\n const { data } = await axios.get(generateUrl(\"/apps/files/api/v1/configs\"));\n showHiddenFiles.value = data?.data?.show_hidden ?? false;\n sortFavoritesFirst.value = data?.data?.sort_favorites_first ?? true;\n cropImagePreviews.value = data?.data?.crop_image_previews ?? true;\n } catch (error) {\n logger.error(\"Could not load files settings\", { error });\n showError(t(\"Could not load files settings\"));\n }\n } else {\n logger.debug(\"Skip loading files settings - currently on public share\");\n }\n });\n return {\n showHiddenFiles,\n sortFavoritesFirst,\n cropImagePreviews\n };\n}\nfunction useFilesViews(currentView) {\n const convertOrder = (order2) => order2 === \"asc\" ? \"ascending\" : order2 === \"desc\" ? \"descending\" : \"none\";\n const filesViewsState = loadState(\"files\", \"viewConfigs\", null);\n const filesViewConfig = ref({\n sortBy: filesViewsState?.files?.sorting_mode ?? \"basename\",\n order: convertOrder(filesViewsState?.files?.sorting_direction ?? \"asc\")\n });\n const recentViewConfig = ref({\n sortBy: filesViewsState?.recent?.sorting_mode ?? \"basename\",\n order: convertOrder(filesViewsState?.recent?.sorting_direction ?? \"asc\")\n });\n const favoritesViewConfig = ref({\n sortBy: filesViewsState?.favorites?.sorting_mode ?? \"basename\",\n order: convertOrder(filesViewsState?.favorites?.sorting_direction ?? \"asc\")\n });\n onMounted(async () => {\n if (!isPublicShare()) {\n try {\n const { data } = await axios.get(generateUrl(\"/apps/files/api/v1/views\"));\n filesViewConfig.value = {\n sortBy: data?.data?.files?.sorting_mode ?? \"basename\",\n order: convertOrder(data?.data?.files?.sorting_direction)\n };\n favoritesViewConfig.value = {\n sortBy: data?.data?.favorites?.sorting_mode ?? \"basename\",\n order: convertOrder(data?.data?.favorites?.sorting_direction)\n };\n recentViewConfig.value = {\n sortBy: data?.data?.recent?.sorting_mode ?? \"basename\",\n order: convertOrder(data?.data?.recent?.sorting_direction)\n };\n } catch (error) {\n logger.error(\"Could not load files views\", { error });\n showError(t(\"Could not load files views\"));\n }\n } else {\n logger.debug(\"Skip loading files views - currently on public share\");\n }\n });\n const currentConfig = computed(() => toValue(currentView || \"files\") === \"files\" ? filesViewConfig.value : toValue(currentView) === \"recent\" ? recentViewConfig.value : favoritesViewConfig.value);\n const sortBy = computed(() => currentConfig.value.sortBy);\n const order = computed(() => currentConfig.value.order);\n return {\n filesViewConfig,\n favoritesViewConfig,\n recentViewConfig,\n currentConfig,\n sortBy,\n order\n };\n}\nconst _hoisted_1$6 = {\n key: 0,\n class: \"row-checkbox\"\n};\nconst _hoisted_2$5 = { class: \"hidden-visually\" };\nconst _hoisted_3$4 = [\"aria-sort\"];\nconst _hoisted_4$4 = { class: \"header-wrapper\" };\nconst _hoisted_5 = {\n key: 2,\n style: { \"width\": \"44px\" }\n};\nconst _hoisted_6 = [\"aria-sort\"];\nconst _hoisted_7 = {\n key: 2,\n style: { \"width\": \"44px\" }\n};\nconst _hoisted_8 = [\"aria-sort\"];\nconst _hoisted_9 = {\n key: 2,\n style: { \"width\": \"44px\" }\n};\nconst _sfc_main$7 = /* @__PURE__ */ defineComponent({\n __name: \"FileList\",\n props: /* @__PURE__ */ mergeModels({\n currentView: {},\n multiselect: { type: Boolean },\n allowPickDirectory: { type: Boolean },\n loading: { type: Boolean },\n files: {},\n canPick: { type: Function }\n }, {\n \"path\": { required: true },\n \"pathModifiers\": {},\n \"selectedFiles\": { required: true },\n \"selectedFilesModifiers\": {}\n }),\n emits: [\"update:path\", \"update:selectedFiles\"],\n setup(__props) {\n const path = useModel(__props, \"path\");\n const selectedFiles = useModel(__props, \"selectedFiles\");\n const props = __props;\n const customSortingConfig = ref();\n const { currentConfig: filesAppSorting } = useFilesViews(props.currentView);\n const sortingConfig = computed(() => customSortingConfig.value ?? filesAppSorting.value);\n const sortByName = computed(() => sortingConfig.value.sortBy === \"basename\" ? sortingConfig.value.order === \"none\" ? void 0 : sortingConfig.value.order : void 0);\n const sortBySize = computed(() => sortingConfig.value.sortBy === \"size\" ? sortingConfig.value.order === \"none\" ? void 0 : sortingConfig.value.order : void 0);\n const sortByModified = computed(() => sortingConfig.value.sortBy === \"mtime\" ? sortingConfig.value.order === \"none\" ? void 0 : sortingConfig.value.order : void 0);\n function toggleSorting(sortBy) {\n if (sortingConfig.value.sortBy === sortBy) {\n if (sortingConfig.value.order === \"ascending\") {\n customSortingConfig.value = { sortBy: sortingConfig.value.sortBy, order: \"descending\" };\n } else {\n customSortingConfig.value = { sortBy: sortingConfig.value.sortBy, order: \"ascending\" };\n }\n } else {\n customSortingConfig.value = { sortBy, order: \"ascending\" };\n }\n }\n const { sortFavoritesFirst, cropImagePreviews } = useFilesSettings();\n const sortedFiles = computed(() => {\n return sortNodes(props.files, {\n sortFoldersFirst: true,\n sortFavoritesFirst: sortFavoritesFirst.value,\n sortingOrder: sortingConfig.value.order === \"descending\" ? \"desc\" : \"asc\",\n sortingMode: sortingConfig.value.sortBy\n });\n });\n const selectableFiles = computed(() => props.files.filter((file) => props.allowPickDirectory || file.type !== FileType.Folder));\n const allSelected = computed(() => !props.loading && selectedFiles.value.length > 0 && selectedFiles.value.length >= selectableFiles.value.length);\n function onSelectAll() {\n if (selectedFiles.value.length < selectableFiles.value.length) {\n selectedFiles.value = [...selectableFiles.value];\n } else {\n selectedFiles.value = [];\n }\n }\n function onNodeSelected(file) {\n if (selectedFiles.value.includes(file)) {\n selectedFiles.value = selectedFiles.value.filter((f) => f.path !== file.path);\n } else {\n if (props.multiselect) {\n selectedFiles.value = [...selectedFiles.value, file];\n } else {\n selectedFiles.value = [file];\n }\n }\n }\n function onChangeDirectory(dir) {\n path.value = dir.path;\n }\n const skeletonNumber = ref(4);\n const fileContainer = ref();\n {\n const resize = () => nextTick(() => {\n const nodes = fileContainer.value?.parentElement?.children || [];\n let height = fileContainer.value?.parentElement?.clientHeight || 450;\n for (let index = 0; index < nodes.length; index++) {\n if (!fileContainer.value?.isSameNode(nodes[index])) {\n height -= nodes[index].clientHeight;\n }\n }\n skeletonNumber.value = Math.max(1, Math.floor((height - 50) / 50));\n });\n onMounted(() => {\n window.addEventListener(\"resize\", resize);\n resize();\n });\n onUnmounted(() => {\n window.removeEventListener(\"resize\", resize);\n });\n }\n return (_ctx, _cache) => {\n return openBlock(), createElementBlock(\"div\", {\n ref_key: \"fileContainer\",\n ref: fileContainer,\n class: \"file-picker__files\"\n }, [\n createElementVNode(\"table\", null, [\n createElementVNode(\"thead\", null, [\n createElementVNode(\"tr\", null, [\n __props.multiselect ? (openBlock(), createElementBlock(\"th\", _hoisted_1$6, [\n createElementVNode(\"span\", _hoisted_2$5, toDisplayString(unref(t)(\"Select entry\")), 1),\n __props.multiselect ? (openBlock(), createBlock(unref(NcCheckboxRadioSwitch), {\n key: 0,\n \"aria-label\": unref(t)(\"Select all entries\"),\n \"data-testid\": \"select-all-checkbox\",\n modelValue: allSelected.value,\n \"onUpdate:modelValue\": onSelectAll\n }, null, 8, [\"aria-label\", \"modelValue\"])) : createCommentVNode(\"\", true)\n ])) : createCommentVNode(\"\", true),\n createElementVNode(\"th\", {\n \"aria-sort\": sortByName.value,\n class: \"row-name\"\n }, [\n createElementVNode(\"div\", _hoisted_4$4, [\n _cache[3] || (_cache[3] = createElementVNode(\"span\", { class: \"file-picker__header-preview\" }, null, -1)),\n createVNode(unref(NcButton), {\n \"data-test\": \"file-picker_sort-name\",\n variant: \"tertiary\",\n wide: \"\",\n onClick: _cache[0] || (_cache[0] = ($event) => toggleSorting(\"basename\"))\n }, {\n icon: withCtx(() => [\n sortByName.value === \"ascending\" ? (openBlock(), createBlock(IconSortAscending, {\n key: 0,\n size: 20\n })) : sortByName.value === \"descending\" ? (openBlock(), createBlock(IconSortDescending, {\n key: 1,\n size: 20\n })) : (openBlock(), createElementBlock(\"span\", _hoisted_5))\n ]),\n default: withCtx(() => [\n createTextVNode(\" \" + toDisplayString(unref(t)(\"Name\")), 1)\n ]),\n _: 1\n })\n ])\n ], 8, _hoisted_3$4),\n createElementVNode(\"th\", {\n \"aria-sort\": sortBySize.value,\n class: \"row-size\"\n }, [\n createVNode(unref(NcButton), {\n variant: \"tertiary\",\n wide: \"\",\n onClick: _cache[1] || (_cache[1] = ($event) => toggleSorting(\"size\"))\n }, {\n icon: withCtx(() => [\n sortBySize.value === \"ascending\" ? (openBlock(), createBlock(IconSortAscending, {\n key: 0,\n size: 20\n })) : sortBySize.value === \"descending\" ? (openBlock(), createBlock(IconSortDescending, {\n key: 1,\n size: 20\n })) : (openBlock(), createElementBlock(\"span\", _hoisted_7))\n ]),\n default: withCtx(() => [\n createTextVNode(\" \" + toDisplayString(unref(t)(\"Size\")), 1)\n ]),\n _: 1\n })\n ], 8, _hoisted_6),\n createElementVNode(\"th\", {\n \"aria-sort\": sortByModified.value,\n class: \"row-modified\"\n }, [\n createVNode(unref(NcButton), {\n variant: \"tertiary\",\n wide: \"\",\n onClick: _cache[2] || (_cache[2] = ($event) => toggleSorting(\"mtime\"))\n }, {\n icon: withCtx(() => [\n sortByModified.value === \"ascending\" ? (openBlock(), createBlock(IconSortAscending, {\n key: 0,\n size: 20\n })) : sortByModified.value === \"descending\" ? (openBlock(), createBlock(IconSortDescending, {\n key: 1,\n size: 20\n })) : (openBlock(), createElementBlock(\"span\", _hoisted_9))\n ]),\n default: withCtx(() => [\n createTextVNode(\" \" + toDisplayString(unref(t)(\"Modified\")), 1)\n ]),\n _: 1\n })\n ], 8, _hoisted_8)\n ])\n ]),\n createElementVNode(\"tbody\", null, [\n __props.loading ? (openBlock(true), createElementBlock(Fragment, { key: 0 }, renderList(skeletonNumber.value, (index) => {\n return openBlock(), createBlock(LoadingTableRow, {\n key: index,\n showCheckbox: __props.multiselect\n }, null, 8, [\"showCheckbox\"]);\n }), 128)) : (openBlock(true), createElementBlock(Fragment, { key: 1 }, renderList(sortedFiles.value, (file) => {\n return openBlock(), createBlock(FileListRow, {\n key: file.fileid || file.path,\n allowPickDirectory: __props.allowPickDirectory,\n showCheckbox: __props.multiselect,\n canPick: (__props.multiselect || selectedFiles.value.length === 0 || selectedFiles.value.includes(file)) && (__props.canPick === void 0 || __props.canPick(file)),\n selected: selectedFiles.value.includes(file),\n node: file,\n cropImagePreviews: unref(cropImagePreviews),\n \"onUpdate:selected\": ($event) => onNodeSelected(file),\n onEnterDirectory: onChangeDirectory\n }, null, 8, [\"allowPickDirectory\", \"showCheckbox\", \"canPick\", \"selected\", \"node\", \"cropImagePreviews\", \"onUpdate:selected\"]);\n }), 128))\n ])\n ])\n ], 512);\n };\n }\n});\nconst FileList = /* @__PURE__ */ _export_sfc(_sfc_main$7, [[\"__scopeId\", \"data-v-412efd5c\"]]);\nconst _sfc_main$6 = {\n name: \"HomeIcon\",\n emits: [\"click\"],\n props: {\n title: {\n type: String\n },\n fillColor: {\n type: String,\n default: \"currentColor\"\n },\n size: {\n type: Number,\n default: 24\n }\n }\n};\nconst _hoisted_1$5 = [\"aria-hidden\", \"aria-label\"];\nconst _hoisted_2$4 = [\"fill\", \"width\", \"height\"];\nconst _hoisted_3$3 = { d: \"M10,20V14H14V20H19V12H22L12,3L2,12H5V20H10Z\" };\nconst _hoisted_4$3 = { key: 0 };\nfunction _sfc_render$3(_ctx, _cache, $props, $setup, $data, $options) {\n return openBlock(), createElementBlock(\"span\", mergeProps(_ctx.$attrs, {\n \"aria-hidden\": $props.title ? null : \"true\",\n \"aria-label\": $props.title,\n class: \"material-design-icon home-icon\",\n role: \"img\",\n onClick: _cache[0] || (_cache[0] = ($event) => _ctx.$emit(\"click\", $event))\n }), [\n (openBlock(), createElementBlock(\"svg\", {\n fill: $props.fillColor,\n class: \"material-design-icon__svg\",\n width: $props.size,\n height: $props.size,\n viewBox: \"0 0 24 24\"\n }, [\n createElementVNode(\"path\", _hoisted_3$3, [\n $props.title ? (openBlock(), createElementBlock(\"title\", _hoisted_4$3, toDisplayString($props.title), 1)) : createCommentVNode(\"\", true)\n ])\n ], 8, _hoisted_2$4))\n ], 16, _hoisted_1$5);\n}\nconst IconHome = /* @__PURE__ */ _export_sfc(_sfc_main$6, [[\"render\", _sfc_render$3]]);\nconst _sfc_main$5 = {\n name: \"PlusIcon\",\n emits: [\"click\"],\n props: {\n title: {\n type: String\n },\n fillColor: {\n type: String,\n default: \"currentColor\"\n },\n size: {\n type: Number,\n default: 24\n }\n }\n};\nconst _hoisted_1$4 = [\"aria-hidden\", \"aria-label\"];\nconst _hoisted_2$3 = [\"fill\", \"width\", \"height\"];\nconst _hoisted_3$2 = { d: \"M19,13H13V19H11V13H5V11H11V5H13V11H19V13Z\" };\nconst _hoisted_4$2 = { key: 0 };\nfunction _sfc_render$2(_ctx, _cache, $props, $setup, $data, $options) {\n return openBlock(), createElementBlock(\"span\", mergeProps(_ctx.$attrs, {\n \"aria-hidden\": $props.title ? null : \"true\",\n \"aria-label\": $props.title,\n class: \"material-design-icon plus-icon\",\n role: \"img\",\n onClick: _cache[0] || (_cache[0] = ($event) => _ctx.$emit(\"click\", $event))\n }), [\n (openBlock(), createElementBlock(\"svg\", {\n fill: $props.fillColor,\n class: \"material-design-icon__svg\",\n width: $props.size,\n height: $props.size,\n viewBox: \"0 0 24 24\"\n }, [\n createElementVNode(\"path\", _hoisted_3$2, [\n $props.title ? (openBlock(), createElementBlock(\"title\", _hoisted_4$2, toDisplayString($props.title), 1)) : createCommentVNode(\"\", true)\n ])\n ], 8, _hoisted_2$3))\n ], 16, _hoisted_1$4);\n}\nconst IconPlus = /* @__PURE__ */ _export_sfc(_sfc_main$5, [[\"render\", _sfc_render$2]]);\nconst _sfc_main$4 = /* @__PURE__ */ defineComponent({\n __name: \"FilePickerBreadcrumbs\",\n props: /* @__PURE__ */ mergeModels({\n showMenu: { type: Boolean }\n }, {\n \"path\": { required: true },\n \"pathModifiers\": {}\n }),\n emits: /* @__PURE__ */ mergeModels([\"createNode\"], [\"update:path\"]),\n setup(__props, { emit: __emit }) {\n const path = useModel(__props, \"path\");\n const emit2 = __emit;\n const actionsOpen = ref(false);\n const newNodeName = ref(\"\");\n const nameInput = useTemplateRef(\"nameInput\");\n function validateInput() {\n const name = newNodeName.value.trim();\n const input = nameInput.value?.$el?.querySelector(\"input\");\n let validity = \"\";\n try {\n validateFilename(name);\n } catch (error) {\n if (!(error instanceof InvalidFilenameError)) {\n throw error;\n }\n switch (error.reason) {\n case InvalidFilenameErrorReason.Character:\n validity = t('\"{char}\" is not allowed inside a folder name.', { char: error.segment });\n break;\n case InvalidFilenameErrorReason.ReservedName:\n validity = t('\"{segment}\" is a reserved name and not allowed for folder names.', { segment: error.segment });\n break;\n case InvalidFilenameErrorReason.Extension:\n validity = t('Folder names must not end with \"{extension}\".', { extension: error.segment });\n break;\n default:\n validity = t(\"Invalid folder name.\");\n }\n }\n if (input) {\n input.setCustomValidity(validity);\n }\n return validity === \"\";\n }\n function onSubmit() {\n const name = newNodeName.value.trim();\n if (validateInput()) {\n actionsOpen.value = false;\n emit2(\"createNode\", name);\n newNodeName.value = \"\";\n }\n }\n const pathElements = computed(() => path.value.split(\"/\").filter((v) => v !== \"\").map((v, i, elements) => ({\n name: v,\n path: \"/\" + elements.slice(0, i + 1).join(\"/\")\n })));\n return (_ctx, _cache) => {\n return openBlock(), createBlock(unref(NcBreadcrumbs), { class: \"file-picker__breadcrumbs\" }, createSlots({\n default: withCtx(() => [\n createVNode(unref(NcBreadcrumb), {\n name: unref(t)(\"All files\"),\n title: unref(t)(\"Home\"),\n onClick: _cache[0] || (_cache[0] = ($event) => path.value = \"/\")\n }, {\n icon: withCtx(() => [\n createVNode(IconHome, { size: 20 })\n ]),\n _: 1\n }, 8, [\"name\", \"title\"]),\n (openBlock(true), createElementBlock(Fragment, null, renderList(pathElements.value, (dir) => {\n return openBlock(), createBlock(unref(NcBreadcrumb), {\n key: dir.path,\n name: dir.name,\n title: dir.path,\n onClick: ($event) => path.value = dir.path\n }, null, 8, [\"name\", \"title\", \"onClick\"]);\n }), 128))\n ]),\n _: 2\n }, [\n __props.showMenu ? {\n name: \"actions\",\n fn: withCtx(() => [\n createVNode(unref(NcActions), {\n open: actionsOpen.value,\n \"onUpdate:open\": _cache[2] || (_cache[2] = ($event) => actionsOpen.value = $event),\n \"aria-label\": unref(t)(\"Create directory\"),\n forceMenu: true,\n forceName: true,\n menuName: unref(t)(\"New\"),\n variant: \"secondary\",\n onClose: _cache[3] || (_cache[3] = ($event) => newNodeName.value = \"\")\n }, {\n icon: withCtx(() => [\n createVNode(IconPlus, { size: 20 })\n ]),\n default: withCtx(() => [\n createVNode(unref(NcActionInput), {\n ref_key: \"nameInput\",\n ref: nameInput,\n modelValue: newNodeName.value,\n \"onUpdate:modelValue\": [\n _cache[1] || (_cache[1] = ($event) => newNodeName.value = $event),\n validateInput\n ],\n label: unref(t)(\"New folder\"),\n placeholder: unref(t)(\"New folder name\"),\n onSubmit\n }, {\n icon: withCtx(() => [\n createVNode(IconFolder, { size: 20 })\n ]),\n _: 1\n }, 8, [\"modelValue\", \"label\", \"placeholder\"])\n ]),\n _: 1\n }, 8, [\"open\", \"aria-label\", \"menuName\"])\n ]),\n key: \"0\"\n } : void 0\n ]), 1024);\n };\n }\n});\nconst FilePickerBreadcrumbs = /* @__PURE__ */ _export_sfc(_sfc_main$4, [[\"__scopeId\", \"data-v-b448b141\"]]);\nconst _sfc_main$3 = {\n name: \"CloseIcon\",\n emits: [\"click\"],\n props: {\n title: {\n type: String\n },\n fillColor: {\n type: String,\n default: \"currentColor\"\n },\n size: {\n type: Number,\n default: 24\n }\n }\n};\nconst _hoisted_1$3 = [\"aria-hidden\", \"aria-label\"];\nconst _hoisted_2$2 = [\"fill\", \"width\", \"height\"];\nconst _hoisted_3$1 = { d: \"M19,6.41L17.59,5L12,10.59L6.41,5L5,6.41L10.59,12L5,17.59L6.41,19L12,13.41L17.59,19L19,17.59L13.41,12L19,6.41Z\" };\nconst _hoisted_4$1 = { key: 0 };\nfunction _sfc_render$1(_ctx, _cache, $props, $setup, $data, $options) {\n return openBlock(), createElementBlock(\"span\", mergeProps(_ctx.$attrs, {\n \"aria-hidden\": $props.title ? null : \"true\",\n \"aria-label\": $props.title,\n class: \"material-design-icon close-icon\",\n role: \"img\",\n onClick: _cache[0] || (_cache[0] = ($event) => _ctx.$emit(\"click\", $event))\n }), [\n (openBlock(), createElementBlock(\"svg\", {\n fill: $props.fillColor,\n class: \"material-design-icon__svg\",\n width: $props.size,\n height: $props.size,\n viewBox: \"0 0 24 24\"\n }, [\n createElementVNode(\"path\", _hoisted_3$1, [\n $props.title ? (openBlock(), createElementBlock(\"title\", _hoisted_4$1, toDisplayString($props.title), 1)) : createCommentVNode(\"\", true)\n ])\n ], 8, _hoisted_2$2))\n ], 16, _hoisted_1$3);\n}\nconst IconClose = /* @__PURE__ */ _export_sfc(_sfc_main$3, [[\"render\", _sfc_render$1]]);\nconst _sfc_main$2 = {\n name: \"MagnifyIcon\",\n emits: [\"click\"],\n props: {\n title: {\n type: String\n },\n fillColor: {\n type: String,\n default: \"currentColor\"\n },\n size: {\n type: Number,\n default: 24\n }\n }\n};\nconst _hoisted_1$2 = [\"aria-hidden\", \"aria-label\"];\nconst _hoisted_2$1 = [\"fill\", \"width\", \"height\"];\nconst _hoisted_3 = { d: \"M9.5,3A6.5,6.5 0 0,1 16,9.5C16,11.11 15.41,12.59 14.44,13.73L14.71,14H15.5L20.5,19L19,20.5L14,15.5V14.71L13.73,14.44C12.59,15.41 11.11,16 9.5,16A6.5,6.5 0 0,1 3,9.5A6.5,6.5 0 0,1 9.5,3M9.5,5C7,5 5,7 5,9.5C5,12 7,14 9.5,14C12,14 14,12 14,9.5C14,7 12,5 9.5,5Z\" };\nconst _hoisted_4 = { key: 0 };\nfunction _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {\n return openBlock(), createElementBlock(\"span\", mergeProps(_ctx.$attrs, {\n \"aria-hidden\": $props.title ? null : \"true\",\n \"aria-label\": $props.title,\n class: \"material-design-icon magnify-icon\",\n role: \"img\",\n onClick: _cache[0] || (_cache[0] = ($event) => _ctx.$emit(\"click\", $event))\n }), [\n (openBlock(), createElementBlock(\"svg\", {\n fill: $props.fillColor,\n class: \"material-design-icon__svg\",\n width: $props.size,\n height: $props.size,\n viewBox: \"0 0 24 24\"\n }, [\n createElementVNode(\"path\", _hoisted_3, [\n $props.title ? (openBlock(), createElementBlock(\"title\", _hoisted_4, toDisplayString($props.title), 1)) : createCommentVNode(\"\", true)\n ])\n ], 8, _hoisted_2$1))\n ], 16, _hoisted_1$2);\n}\nconst IconMagnify = /* @__PURE__ */ _export_sfc(_sfc_main$2, [[\"render\", _sfc_render]]);\nfunction useViews(isAnonymous) {\n const allViews = [\n {\n id: \"files\",\n label: t(\"All files\"),\n icon: mdiFolder\n },\n {\n id: \"recent\",\n label: t(\"Recent\"),\n icon: mdiClock\n },\n {\n id: \"favorites\",\n label: t(\"Favorites\"),\n icon: mdiStar\n }\n ];\n const availableViews = isAnonymous.value ? allViews.filter(({ id }) => id === \"files\") : allViews;\n return {\n allViews,\n availableViews\n };\n}\nconst _hoisted_1$1 = {\n key: 0,\n class: \"file-picker__side\"\n};\nconst _sfc_main$1 = /* @__PURE__ */ defineComponent({\n __name: \"FilePickerNavigation\",\n props: {\n currentView: {},\n filterString: {},\n isCollapsed: { type: Boolean },\n disabledNavigation: { type: Boolean }\n },\n emits: [\"update:currentView\", \"update:filterString\"],\n setup(__props, { emit: __emit }) {\n const props = __props;\n const emit2 = __emit;\n const { availableViews } = useViews(ref(getCurrentUser() === null));\n const currentViewObject = computed(() => availableViews.filter((v) => v.id === props.currentView)[0] ?? availableViews[0]);\n const updateFilterValue = (value) => emit2(\"update:filterString\", value.toString());\n return (_ctx, _cache) => {\n return openBlock(), createElementBlock(Fragment, null, [\n createVNode(unref(NcTextField), {\n class: \"file-picker__filter-input\",\n label: unref(t)(\"Filter file list\"),\n showTrailingButton: !!__props.filterString,\n modelValue: __props.filterString,\n \"onUpdate:modelValue\": updateFilterValue,\n onTrailingButtonClick: _cache[0] || (_cache[0] = ($event) => updateFilterValue(\"\"))\n }, {\n \"trailing-button-icon\": withCtx(() => [\n createVNode(IconClose, { size: 16 })\n ]),\n default: withCtx(() => [\n createVNode(IconMagnify, { size: 16 })\n ]),\n _: 1\n }, 8, [\"label\", \"showTrailingButton\", \"modelValue\"]),\n unref(availableViews).length > 1 && !__props.disabledNavigation ? (openBlock(), createElementBlock(Fragment, { key: 0 }, [\n !__props.isCollapsed ? (openBlock(), createElementBlock(\"ul\", _hoisted_1$1, [\n (openBlock(true), createElementBlock(Fragment, null, renderList(unref(availableViews), (view) => {\n return openBlock(), createElementBlock(\"li\", {\n key: view.id\n }, [\n createVNode(unref(NcButton), {\n variant: __props.currentView === view.id ? \"primary\" : \"tertiary\",\n wide: true,\n onClick: ($event) => _ctx.$emit(\"update:currentView\", view.id)\n }, {\n icon: withCtx(() => [\n createVNode(unref(NcIconSvgWrapper), {\n path: view.icon,\n size: 20\n }, null, 8, [\"path\"])\n ]),\n default: withCtx(() => [\n createTextVNode(\" \" + toDisplayString(view.label), 1)\n ]),\n _: 2\n }, 1032, [\"variant\", \"onClick\"])\n ]);\n }), 128))\n ])) : (openBlock(), createBlock(unref(NcSelect), {\n key: 1,\n \"aria-label\": unref(t)(\"Current view selector\"),\n clearable: false,\n searchable: false,\n options: unref(availableViews),\n modelValue: currentViewObject.value,\n \"onUpdate:modelValue\": _cache[1] || (_cache[1] = ($event) => emit2(\"update:currentView\", $event.id))\n }, null, 8, [\"aria-label\", \"options\", \"modelValue\"]))\n ], 64)) : createCommentVNode(\"\", true)\n ], 64);\n };\n }\n});\nconst FilePickerNavigation = /* @__PURE__ */ _export_sfc(_sfc_main$1, [[\"__scopeId\", \"data-v-e1c54e23\"]]);\nasync function getRecentNodes({ client, signal }) {\n const lastTwoWeek = Math.round(Date.now() / 1e3) - 60 * 60 * 24 * 14;\n const { data } = await client.search(\"/\", {\n signal,\n details: true,\n data: getRecentSearch(lastTwoWeek)\n });\n return data.results.map((result) => resultToNode(result));\n}\nasync function getNodes({ client, path, signal }) {\n const results = await client.getDirectoryContents(join(defaultRootPath, path), {\n signal,\n details: true,\n includeSelf: true,\n data: getDefaultPropfind()\n });\n const nodes = results.data.map((result) => resultToNode(result));\n return {\n contents: nodes.filter(({ path: nodePath }) => nodePath !== path),\n folder: nodes.find(({ path: nodePath }) => path === nodePath)\n };\n}\nasync function getFile(client, path) {\n const { data } = await client.stat(join(defaultRootPath, path), {\n details: true,\n data: getDefaultPropfind()\n });\n return resultToNode(data);\n}\nfunction useDAVFiles(currentView, currentPath) {\n const client = getClient();\n const files = shallowRef([]);\n const folder = shallowRef(null);\n const isLoading = ref(true);\n let abortController;\n async function createDirectory(name) {\n const path = join(currentPath.value, name);\n await client.createDirectory(join(defaultRootPath, path));\n const directory = await getFile(client, path);\n files.value = [...files.value, directory];\n return directory;\n }\n async function loadDAVFiles() {\n if (abortController) {\n abortController.abort();\n abortController = void 0;\n }\n abortController = new AbortController();\n isLoading.value = true;\n try {\n if (currentView.value === \"favorites\") {\n files.value = await getFavoriteNodes({ client, path: currentPath.value, signal: abortController.signal });\n folder.value = null;\n } else if (currentView.value === \"recent\") {\n files.value = await getRecentNodes({ client, signal: abortController.signal });\n folder.value = null;\n } else {\n const content = await getNodes({ client, path: currentPath.value, signal: abortController.signal });\n folder.value = content.folder;\n files.value = content.contents;\n }\n } catch (error) {\n if (error instanceof Error && error.name === \"AbortError\") {\n return;\n }\n throw error;\n } finally {\n abortController = void 0;\n isLoading.value = false;\n }\n }\n watch([currentView, currentPath], () => loadDAVFiles());\n onMounted(() => loadDAVFiles());\n return {\n isLoading,\n files,\n folder,\n loadFiles: loadDAVFiles,\n createDirectory\n };\n}\nfunction useMimeFilter(allowedMIMETypes) {\n const splittedTypes = computed(() => allowedMIMETypes.value.map((filter) => filter.split(\"/\")));\n const isSupportedMimeType = (mime) => {\n const mimeTypeArray = mime.split(\"/\");\n return splittedTypes.value.some(([type, subtype]) => (\n // check mime type matches or is wildcard\n (mimeTypeArray[0] === type || type === \"*\") && (mimeTypeArray[1] === subtype || subtype === \"*\")\n ));\n };\n return {\n isSupportedMimeType\n };\n}\nconst _hoisted_1 = { class: \"file-picker__main\" };\nconst _hoisted_2 = {\n key: 1,\n class: \"file-picker__view\"\n};\nconst _sfc_main = /* @__PURE__ */ defineComponent({\n __name: \"FilePicker\",\n props: {\n buttons: {},\n name: {},\n allowPickDirectory: { type: Boolean, default: false },\n noMenu: { type: Boolean, default: false },\n disabledNavigation: { type: Boolean, default: false },\n filterFn: { type: Function, default: void 0 },\n canPickFn: { type: Function, default: void 0 },\n mimetypeFilter: { default: () => [] },\n multiselect: { type: Boolean, default: false },\n path: { default: void 0 }\n },\n emits: [\"close\"],\n setup(__props, { emit: __emit }) {\n const props = __props;\n const emit$1 = __emit;\n const isOpen = ref(true);\n const currentView = ref(\"files\");\n const savedPath = ref(window?.sessionStorage.getItem(\"NC.FilePicker.LastPath\") || \"/\");\n const navigatedPath = ref(\"\");\n const currentPath = computed({\n get: () => {\n return currentView.value === \"files\" ? navigatedPath.value || props.path || savedPath.value : \"/\";\n },\n set: (path) => {\n navigatedPath.value = path;\n }\n });\n const selectedFiles = shallowRef([]);\n const filterString = ref(\"\");\n const {\n files,\n folder: currentFolder,\n isLoading,\n loadFiles,\n createDirectory\n } = useDAVFiles(currentView, currentPath);\n watch([navigatedPath], () => {\n if (props.path === void 0 && navigatedPath.value) {\n window.sessionStorage.setItem(\"NC.FilePicker.LastPath\", navigatedPath.value);\n }\n selectedFiles.value = [];\n filterString.value = \"\";\n });\n let isHandlingCallback = false;\n const dialogButtons = computed(() => {\n const nodes = selectedFiles.value.length === 0 && props.allowPickDirectory && currentFolder.value && (!props.canPickFn || props.canPickFn(currentFolder.value)) ? [currentFolder.value] : selectedFiles.value;\n const buttons = typeof props.buttons === \"function\" ? props.buttons(nodes, currentPath.value, currentView.value) : props.buttons;\n return buttons.map((button) => ({\n ...button,\n disabled: button.disabled || isLoading.value,\n callback: () => {\n isHandlingCallback = true;\n handleButtonClick(button.callback, nodes);\n }\n }));\n });\n async function handleButtonClick(callback, nodes) {\n await callback(nodes);\n emit$1(\"close\", nodes);\n isHandlingCallback = false;\n }\n const viewHeadline = computed(() => currentView.value === \"favorites\" ? t(\"Favorites\") : currentView.value === \"recent\" ? t(\"Recent\") : \"\");\n const { isSupportedMimeType } = useMimeFilter(toRef(props, \"mimetypeFilter\"));\n onMounted(() => loadFiles());\n const { showHiddenFiles } = useFilesSettings();\n const filteredFiles = computed(() => {\n let filtered = files.value;\n if (!showHiddenFiles.value) {\n filtered = filtered.filter((file) => !file.basename.startsWith(\".\"));\n }\n if (props.mimetypeFilter.length > 0) {\n filtered = filtered.filter((file) => file.type === \"folder\" || file.mime && isSupportedMimeType(file.mime));\n }\n if (filterString.value) {\n filtered = filtered.filter((file) => file.basename.toLowerCase().includes(filterString.value.toLowerCase()));\n }\n if (props.filterFn) {\n filtered = filtered.filter((f) => props.filterFn(f));\n }\n return filtered;\n });\n const noFilesDescription = computed(() => {\n if (currentView.value === \"files\") {\n return t(\"Upload some content or sync with your devices!\");\n } else if (currentView.value === \"recent\") {\n return t(\"Files and folders you recently modified will show up here.\");\n } else {\n return t(\"Files and folders you mark as favorite will show up here.\");\n }\n });\n async function onCreateFolder(name) {\n try {\n const folder = await createDirectory(name);\n navigatedPath.value = folder.path;\n emit(\"files:node:created\", files.value.filter((file) => file.basename === name)[0]);\n } catch (error) {\n logger.warn(\"Could not create new folder\", { name, error });\n showError(t(\"Could not create the new folder\"));\n }\n }\n function handleClose(open) {\n if (!open && !isHandlingCallback) {\n emit$1(\"close\");\n }\n }\n return (_ctx, _cache) => {\n return openBlock(), createBlock(unref(NcDialog), {\n open: isOpen.value,\n \"onUpdate:open\": [\n _cache[6] || (_cache[6] = ($event) => isOpen.value = $event),\n handleClose\n ],\n buttons: dialogButtons.value,\n name: __props.name,\n size: \"large\",\n contentClasses: \"file-picker__content\",\n dialogClasses: \"file-picker\",\n navigationClasses: \"file-picker__navigation\"\n }, {\n navigation: withCtx(({ isCollapsed }) => [\n createVNode(FilePickerNavigation, {\n currentView: currentView.value,\n \"onUpdate:currentView\": _cache[0] || (_cache[0] = ($event) => currentView.value = $event),\n filterString: filterString.value,\n \"onUpdate:filterString\": _cache[1] || (_cache[1] = ($event) => filterString.value = $event),\n isCollapsed,\n disabledNavigation: __props.disabledNavigation\n }, null, 8, [\"currentView\", \"filterString\", \"isCollapsed\", \"disabledNavigation\"])\n ]),\n default: withCtx(() => [\n createElementVNode(\"div\", _hoisted_1, [\n currentView.value === \"files\" ? (openBlock(), createBlock(FilePickerBreadcrumbs, {\n key: 0,\n path: currentPath.value,\n \"onUpdate:path\": _cache[2] || (_cache[2] = ($event) => currentPath.value = $event),\n showMenu: !__props.noMenu,\n onCreateNode: onCreateFolder\n }, null, 8, [\"path\", \"showMenu\"])) : (openBlock(), createElementBlock(\"div\", _hoisted_2, [\n createElementVNode(\"h3\", null, toDisplayString(viewHeadline.value), 1)\n ])),\n unref(isLoading) || filteredFiles.value.length > 0 ? (openBlock(), createBlock(FileList, {\n key: 2,\n path: currentPath.value,\n \"onUpdate:path\": [\n _cache[3] || (_cache[3] = ($event) => currentPath.value = $event),\n _cache[5] || (_cache[5] = ($event) => currentView.value = \"files\")\n ],\n selectedFiles: selectedFiles.value,\n \"onUpdate:selectedFiles\": _cache[4] || (_cache[4] = ($event) => selectedFiles.value = $event),\n allowPickDirectory: __props.allowPickDirectory,\n currentView: currentView.value,\n files: filteredFiles.value,\n multiselect: __props.multiselect,\n loading: unref(isLoading),\n name: viewHeadline.value,\n canPick: __props.canPickFn\n }, null, 8, [\"path\", \"selectedFiles\", \"allowPickDirectory\", \"currentView\", \"files\", \"multiselect\", \"loading\", \"name\", \"canPick\"])) : filterString.value ? (openBlock(), createBlock(unref(NcEmptyContent), {\n key: 3,\n name: unref(t)(\"No matching files\"),\n description: unref(t)(\"No files matching your filter were found.\")\n }, {\n icon: withCtx(() => [\n createVNode(IconFile)\n ]),\n _: 1\n }, 8, [\"name\", \"description\"])) : (openBlock(), createBlock(unref(NcEmptyContent), {\n key: 4,\n name: unref(t)(\"No files in here\"),\n description: noFilesDescription.value\n }, {\n icon: withCtx(() => [\n createVNode(IconFile)\n ]),\n _: 1\n }, 8, [\"name\", \"description\"]))\n ])\n ]),\n _: 1\n }, 8, [\"open\", \"buttons\", \"name\"]);\n };\n }\n});\nconst FilePicker = /* @__PURE__ */ _export_sfc(_sfc_main, [[\"__scopeId\", \"data-v-39182aaf\"]]);\nexport {\n FilePicker as default\n};\n//# sourceMappingURL=FilePicker.mjs.map\n"],"names":["_sfc_main$1","_hoisted_1$1","_hoisted_2","_hoisted_3","_hoisted_4","_sfc_render$1","_ctx","_cache","$props","$setup","$data","$options","openBlock","createElementBlock","mergeProps","$event","createElementVNode","toDisplayString","createCommentVNode","ChevronRight","_export_sfc","_sfc_main","NcActions","NcButton","crumbId","createElementId","open","e","_hoisted_1","_sfc_render","_component_NcButton","resolveComponent","_component_NcActions","_component_ChevronRight","normalizeClass","withModifiers","args","createBlock","createSlots","withCtx","renderSlot","createTextVNode","createVNode","NcBreadcrumb","IconFolder","crumbClass","NcActionButton","NcActionRouter","NcActionLink","debounce","subscribe","unsubscribe","nrCrumbs","hiddenIndices","availableWidth","totalWidth","overflow","i","startIndex","currentIndex","a","b","width","crumb","index","el","isLast","hide","w","path","disabled","crumbs","target","vnode","breadcrumbs","Fragment","child","cloneVNode","breadcrumbsRefs","crumb2","h","to","href","disableDrop","name","propsToForward","element","folderIcon","wrapper","isSlotPopulated","NcBreadcrumbs","queue","PQueue","preloadImage","url","resolve","promise","image","getPreviewURL","node","options","previewUrl","generateUrl","usePreviewURL","previewURL","ref","previewLoaded","watchEffect","toValue","FileType","success","sfc","props","key","val","_sfc_main$e","_hoisted_1$c","_hoisted_2$b","_hoisted_3$a","_hoisted_4$a","_sfc_render$7","IconFile","_sfc_main$d","_hoisted_1$b","_hoisted_2$a","_hoisted_3$9","_hoisted_4$9","_sfc_render$6","IconSortDescending","_sfc_main$c","_hoisted_1$a","_hoisted_2$9","_hoisted_3$8","_hoisted_4$8","_sfc_render$5","IconSortAscending","_sfc_main$b","_hoisted_1$9","_hoisted_2$8","_hoisted_3$7","_hoisted_4$7","_sfc_render$4","fileListIconStyles","_sfc_main$a","defineComponent","__props","fileListIconStyles$1","toRef","computed","isFile","folderDecorationIcon","mdiKey","mdiTagOutline","shareTypes","type","ShareType","mdiLink","mdiAccountPlus","mdiNetworkOutline","mdiAccountGroupOutline","normalizeStyle","unref","NcIconSvgWrapper","_hoisted_1$8","_hoisted_2$7","_hoisted_3$6","_hoisted_4$6","_hoisted_5$1","_hoisted_6$1","_hoisted_7$1","_sfc_main$9","__emit","emit2","timestamp","fileExtension","extname","displayName","isDirectory","isPickable","isNavigatable","Permission","toggleSelected","handleClick","handleKeyDown","event","toHandlers","NcCheckboxRadioSwitch","t","formatFileSize","NcDateTime","FileListRow","_hoisted_1$7","_hoisted_2$6","_hoisted_3$5","_hoisted_4$5","_sfc_main$8","LoadingTableRow","useFilesSettings","filesUserState","loadState","showHiddenFiles","sortFavoritesFirst","cropImagePreviews","onMounted","isPublicShare","logger","data","axios","error","showError","useFilesViews","currentView","convertOrder","order2","filesViewsState","filesViewConfig","recentViewConfig","favoritesViewConfig","currentConfig","sortBy","order","_hoisted_1$6","_hoisted_2$5","_hoisted_3$4","_hoisted_4$4","_hoisted_5","_hoisted_6","_hoisted_7","_hoisted_8","_hoisted_9","_sfc_main$7","mergeModels","useModel","selectedFiles","customSortingConfig","filesAppSorting","sortingConfig","sortByName","sortBySize","sortByModified","toggleSorting","sortedFiles","sortNodes","selectableFiles","file","allSelected","onSelectAll","onNodeSelected","f","onChangeDirectory","dir","skeletonNumber","fileContainer","resize","nextTick","nodes","height","onUnmounted","renderList","FileList","_sfc_main$6","_hoisted_1$5","_hoisted_2$4","_hoisted_3$3","_hoisted_4$3","_sfc_render$3","IconHome","_sfc_main$5","_hoisted_1$4","_hoisted_2$3","_hoisted_3$2","_hoisted_4$2","_sfc_render$2","IconPlus","_sfc_main$4","actionsOpen","newNodeName","nameInput","useTemplateRef","validateInput","input","validity","validateFilename","InvalidFilenameError","InvalidFilenameErrorReason","onSubmit","pathElements","v","elements","NcActionInput","FilePickerBreadcrumbs","_sfc_main$3","_hoisted_1$3","_hoisted_2$2","_hoisted_3$1","_hoisted_4$1","IconClose","_sfc_main$2","_hoisted_1$2","_hoisted_2$1","IconMagnify","useViews","isAnonymous","allViews","mdiFolder","mdiClock","mdiStar","availableViews","id","getCurrentUser","currentViewObject","updateFilterValue","value","NcTextField","NcSelect","view","FilePickerNavigation","getRecentNodes","client","signal","lastTwoWeek","getRecentSearch","result","resultToNode","getNodes","join","defaultRootPath","getDefaultPropfind","nodePath","getFile","useDAVFiles","currentPath","getClient","files","shallowRef","folder","isLoading","abortController","createDirectory","directory","loadDAVFiles","getFavoriteNodes","content","watch","useMimeFilter","allowedMIMETypes","splittedTypes","filter","mime","mimeTypeArray","subtype","emit$1","isOpen","savedPath","navigatedPath","filterString","currentFolder","loadFiles","isHandlingCallback","dialogButtons","button","handleButtonClick","callback","viewHeadline","isSupportedMimeType","filteredFiles","filtered","noFilesDescription","onCreateFolder","emit","handleClose","NcDialog","isCollapsed","NcEmptyContent","FilePicker"],"mappings":"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","x_google_ignoreList":[0,1,2,3,4]} \ No newline at end of file +{"version":3,"file":"FilePicker-BXhywAAW.chunk.mjs","sources":["../node_modules/@nextcloud/vue/dist/chunks/NcBreadcrumb-3Y5NWXnV.mjs","../node_modules/@nextcloud/vue/dist/chunks/NcBreadcrumbs-BaTp3Sya.mjs","../node_modules/@nextcloud/dialogs/dist/chunks/preview.mjs","../node_modules/@nextcloud/dialogs/dist/chunks/_plugin-vue_export-helper.mjs","../node_modules/@nextcloud/dialogs/dist/chunks/FilePicker.mjs"],"sourcesContent":["import '../assets/NcBreadcrumb-BxhZKQlW.css';\nimport { openBlock, createElementBlock, mergeProps, createElementVNode, toDisplayString, createCommentVNode, resolveComponent, withModifiers, normalizeClass, createBlock, createSlots, withCtx, renderSlot, createTextVNode, createVNode } from \"vue\";\nimport { _ as _export_sfc } from \"./_plugin-vue_export-helper-1tPrXgE0.mjs\";\nimport { N as NcButton } from \"./NcButton-jvoYS2my.mjs\";\nimport { c as createElementId } from \"./createElementId-DhjFt1I9.mjs\";\nimport { N as NcActions } from \"./NcActions-C-wDqSrv.mjs\";\nconst _sfc_main$1 = {\n name: \"ChevronRightIcon\",\n emits: [\"click\"],\n props: {\n title: {\n type: String\n },\n fillColor: {\n type: String,\n default: \"currentColor\"\n },\n size: {\n type: Number,\n default: 24\n }\n }\n};\nconst _hoisted_1$1 = [\"aria-hidden\", \"aria-label\"];\nconst _hoisted_2 = [\"fill\", \"width\", \"height\"];\nconst _hoisted_3 = { d: \"M8.59,16.58L13.17,12L8.59,7.41L10,6L16,12L10,18L8.59,16.58Z\" };\nconst _hoisted_4 = { key: 0 };\nfunction _sfc_render$1(_ctx, _cache, $props, $setup, $data, $options) {\n return openBlock(), createElementBlock(\"span\", mergeProps(_ctx.$attrs, {\n \"aria-hidden\": $props.title ? null : \"true\",\n \"aria-label\": $props.title,\n class: \"material-design-icon chevron-right-icon\",\n role: \"img\",\n onClick: _cache[0] || (_cache[0] = ($event) => _ctx.$emit(\"click\", $event))\n }), [\n (openBlock(), createElementBlock(\"svg\", {\n fill: $props.fillColor,\n class: \"material-design-icon__svg\",\n width: $props.size,\n height: $props.size,\n viewBox: \"0 0 24 24\"\n }, [\n createElementVNode(\"path\", _hoisted_3, [\n $props.title ? (openBlock(), createElementBlock(\"title\", _hoisted_4, toDisplayString($props.title), 1)) : createCommentVNode(\"\", true)\n ])\n ], 8, _hoisted_2))\n ], 16, _hoisted_1$1);\n}\nconst ChevronRight = /* @__PURE__ */ _export_sfc(_sfc_main$1, [[\"render\", _sfc_render$1]]);\nconst _sfc_main = {\n name: \"NcBreadcrumb\",\n components: {\n NcActions,\n ChevronRight,\n NcButton\n },\n inheritAttrs: false,\n props: {\n /**\n * The main text content of the entry.\n */\n name: {\n type: String,\n required: true\n },\n /**\n * The title attribute of the element.\n */\n title: {\n type: String,\n default: null\n },\n /**\n * Route Location the link should navigate to when clicked on.\n *\n * @see https://v3.router.vuejs.org/api/#to\n */\n to: {\n type: [String, Object],\n default: void 0\n },\n /**\n * Set this prop if your app doesn't use vue-router, breadcrumbs will show as normal links.\n */\n href: {\n type: String,\n default: void 0\n },\n /**\n * Set a css icon-class to show an icon along name text (if forceIconText is provided, otherwise just icon).\n */\n icon: {\n type: String,\n default: \"\"\n },\n /**\n * Enables text to accompany the icon, if the icon was provided. The text that will be displayed is the name prop.\n */\n forceIconText: {\n type: Boolean,\n default: false\n },\n /**\n * Disable dropping on this breadcrumb.\n */\n disableDrop: {\n type: Boolean,\n default: false\n },\n /**\n * Force the actions to display in a three dot menu\n */\n forceMenu: {\n type: Boolean,\n default: false\n },\n /**\n * Open state of the Actions menu\n */\n open: {\n type: Boolean,\n default: false\n },\n /**\n * CSS class to apply to the root element.\n */\n class: {\n type: [String, Array, Object],\n default: \"\"\n }\n },\n emits: [\n \"dragenter\",\n \"dragleave\",\n \"dropped\",\n \"update:open\"\n ],\n setup() {\n const crumbId = createElementId();\n return {\n actionsContainer: `.vue-crumb[data-crumb-id=\"${crumbId}\"]`,\n crumbId\n };\n },\n data() {\n return {\n /**\n * Variable to track if we hover over the breadcrumb\n */\n hovering: false\n };\n },\n computed: {\n /**\n * The attributes to pass to `router-link` or `a`\n */\n linkAttributes() {\n if (this.to) {\n return { to: this.to, ...this.$attrs };\n } else if (this.href) {\n return { href: this.href, ...this.$attrs };\n }\n return this.$attrs;\n }\n },\n methods: {\n /**\n * Function to handle changing the open state of the Actions menu\n * $emit the open state.\n *\n * @param {boolean} open The open state of the Actions menu\n */\n onOpenChange(open) {\n this.$emit(\"update:open\", open);\n },\n /**\n * Function to handle a drop on the breadcrumb.\n * $emit the event and the path, remove the hovering state.\n *\n * @param {object} e The drop event\n * @return {boolean}\n */\n dropped(e) {\n if (this.disableDrop) {\n return false;\n }\n this.$emit(\"dropped\", e, this.to || this.href);\n this.$parent.$emit(\"dropped\", e, this.to || this.href);\n this.hovering = false;\n return false;\n },\n /**\n * Add the hovering state on drag enter\n *\n * @param {DragEvent} e The drag-enter event\n */\n dragEnter(e) {\n this.$emit(\"dragenter\", e);\n if (this.disableDrop) {\n return;\n }\n this.hovering = true;\n },\n /**\n * Remove the hovering state on drag leave\n *\n * @param {DragEvent} e The drag leave event\n */\n dragLeave(e) {\n this.$emit(\"dragleave\", e);\n if (this.disableDrop) {\n return;\n }\n if (e.target.contains(e.relatedTarget) || this.$refs.crumb.contains(e.relatedTarget)) {\n return;\n }\n this.hovering = false;\n }\n }\n};\nconst _hoisted_1 = [\"data-crumb-id\"];\nfunction _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {\n const _component_NcButton = resolveComponent(\"NcButton\");\n const _component_NcActions = resolveComponent(\"NcActions\");\n const _component_ChevronRight = resolveComponent(\"ChevronRight\");\n return openBlock(), createElementBlock(\"li\", {\n ref: \"crumb\",\n class: normalizeClass([\"vue-crumb\", [{ \"vue-crumb--hovered\": $data.hovering }, _ctx.$props.class]]),\n \"data-crumb-id\": $setup.crumbId,\n draggable: \"false\",\n onDragstart: withModifiers(() => {\n }, [\"prevent\"]),\n onDrop: _cache[0] || (_cache[0] = withModifiers((...args) => $options.dropped && $options.dropped(...args), [\"prevent\"])),\n onDragover: withModifiers(() => {\n }, [\"prevent\"]),\n onDragenter: _cache[1] || (_cache[1] = (...args) => $options.dragEnter && $options.dragEnter(...args)),\n onDragleave: _cache[2] || (_cache[2] = (...args) => $options.dragLeave && $options.dragLeave(...args))\n }, [\n ($props.name || $props.icon || _ctx.$slots.icon) && !_ctx.$slots.default ? (openBlock(), createBlock(_component_NcButton, mergeProps({\n key: 0,\n \"aria-label\": $props.icon ? $props.name : void 0,\n variant: \"tertiary\"\n }, $options.linkAttributes), createSlots({ _: 2 }, [\n _ctx.$slots.icon || $props.icon ? {\n name: \"icon\",\n fn: withCtx(() => [\n renderSlot(_ctx.$slots, \"icon\", {}, () => [\n createElementVNode(\"span\", {\n class: normalizeClass([$props.icon, \"icon\"])\n }, null, 2)\n ], true)\n ]),\n key: \"0\"\n } : void 0,\n !(_ctx.$slots.icon || $props.icon) || $props.forceIconText ? {\n name: \"default\",\n fn: withCtx(() => [\n createTextVNode(toDisplayString($props.name), 1)\n ]),\n key: \"1\"\n } : void 0\n ]), 1040, [\"aria-label\"])) : createCommentVNode(\"\", true),\n _ctx.$slots.default ? (openBlock(), createBlock(_component_NcActions, {\n key: 1,\n ref: \"actions\",\n container: $setup.actionsContainer,\n forceMenu: $props.forceMenu,\n forceName: \"\",\n menuName: $props.name,\n open: $props.open,\n title: $props.title,\n variant: \"tertiary\",\n \"onUpdate:open\": $options.onOpenChange\n }, {\n icon: withCtx(() => [\n renderSlot(_ctx.$slots, \"menu-icon\", {}, void 0, true)\n ]),\n default: withCtx(() => [\n renderSlot(_ctx.$slots, \"default\", {}, void 0, true)\n ]),\n _: 3\n }, 8, [\"container\", \"forceMenu\", \"menuName\", \"open\", \"title\", \"onUpdate:open\"])) : createCommentVNode(\"\", true),\n createVNode(_component_ChevronRight, {\n class: \"vue-crumb__separator\",\n size: 20\n })\n ], 42, _hoisted_1);\n}\nconst NcBreadcrumb = /* @__PURE__ */ _export_sfc(_sfc_main, [[\"render\", _sfc_render], [\"__scopeId\", \"data-v-7cec4a3e\"]]);\nexport {\n NcBreadcrumb as N\n};\n//# sourceMappingURL=NcBreadcrumb-3Y5NWXnV.mjs.map\n","import '../assets/NcBreadcrumbs-B4eyDS9i.css';\nimport { unsubscribe, subscribe } from \"@nextcloud/event-bus\";\nimport debounce from \"debounce\";\nimport { openBlock, createElementBlock, mergeProps, createElementVNode, toDisplayString, createCommentVNode, Fragment, cloneVNode, h } from \"vue\";\nimport { _ as _export_sfc } from \"./_plugin-vue_export-helper-1tPrXgE0.mjs\";\nimport { N as NcActions, i as isSlotPopulated } from \"./NcActions-C-wDqSrv.mjs\";\nimport { N as NcActionButton } from \"./NcActionButton-BO5T5ePT.mjs\";\nimport { N as NcActionLink } from \"./NcActionLink-BFiaYt9A.mjs\";\nimport { N as NcActionRouter } from \"./NcActionRouter-vYFtIOzD.mjs\";\nimport { N as NcBreadcrumb } from \"./NcBreadcrumb-3Y5NWXnV.mjs\";\nconst _sfc_main$1 = {\n name: \"FolderIcon\",\n emits: [\"click\"],\n props: {\n title: {\n type: String\n },\n fillColor: {\n type: String,\n default: \"currentColor\"\n },\n size: {\n type: Number,\n default: 24\n }\n }\n};\nconst _hoisted_1 = [\"aria-hidden\", \"aria-label\"];\nconst _hoisted_2 = [\"fill\", \"width\", \"height\"];\nconst _hoisted_3 = { d: \"M10,4H4C2.89,4 2,4.89 2,6V18A2,2 0 0,0 4,20H20A2,2 0 0,0 22,18V8C22,6.89 21.1,6 20,6H12L10,4Z\" };\nconst _hoisted_4 = { key: 0 };\nfunction _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {\n return openBlock(), createElementBlock(\"span\", mergeProps(_ctx.$attrs, {\n \"aria-hidden\": $props.title ? null : \"true\",\n \"aria-label\": $props.title,\n class: \"material-design-icon folder-icon\",\n role: \"img\",\n onClick: _cache[0] || (_cache[0] = ($event) => _ctx.$emit(\"click\", $event))\n }), [\n (openBlock(), createElementBlock(\"svg\", {\n fill: $props.fillColor,\n class: \"material-design-icon__svg\",\n width: $props.size,\n height: $props.size,\n viewBox: \"0 0 24 24\"\n }, [\n createElementVNode(\"path\", _hoisted_3, [\n $props.title ? (openBlock(), createElementBlock(\"title\", _hoisted_4, toDisplayString($props.title), 1)) : createCommentVNode(\"\", true)\n ])\n ], 8, _hoisted_2))\n ], 16, _hoisted_1);\n}\nconst IconFolder = /* @__PURE__ */ _export_sfc(_sfc_main$1, [[\"render\", _sfc_render]]);\nconst crumbClass = \"vue-crumb\";\nconst _sfc_main = {\n name: \"NcBreadcrumbs\",\n components: {\n NcActions,\n NcActionButton,\n NcActionRouter,\n NcActionLink,\n NcBreadcrumb,\n IconFolder\n },\n props: {\n /**\n * Set a css icon-class for the icon of the root breadcrumb to be used.\n */\n rootIcon: {\n type: String,\n default: \"icon-home\"\n },\n /**\n * Set the aria-label of the nav element.\n */\n ariaLabel: {\n type: String,\n default: null\n }\n },\n emits: [\"dropped\"],\n data() {\n return {\n /**\n * Array to track the hidden breadcrumbs by their index.\n * Comparing two crumbs somehow does not work, so we use the indices.\n */\n hiddenIndices: [],\n /**\n * This is the props of the middle Action menu\n * that show the ellipsised breadcrumbs\n */\n menuBreadcrumbProps: {\n // Don't show a name for this breadcrumb, only the Actions menu\n name: \"\",\n forceMenu: true,\n // Don't allow dropping directly on the actions breadcrumb\n disableDrop: true,\n // Is the menu open or not\n open: false\n },\n breadcrumbsRefs: []\n };\n },\n created() {\n window.addEventListener(\"resize\", debounce(() => {\n this.handleWindowResize();\n }, 100));\n subscribe(\"navigation-toggled\", this.delayedResize);\n },\n mounted() {\n this.handleWindowResize();\n },\n updated() {\n this.delayedResize();\n this.$nextTick(() => {\n this.hideCrumbs();\n });\n },\n beforeUnmount() {\n window.removeEventListener(\"resize\", this.handleWindowResize);\n unsubscribe(\"navigation-toggled\", this.delayedResize);\n },\n methods: {\n /**\n * Close the actions menu\n *\n * @param {object} e The event\n */\n closeActions(e) {\n if (this.$refs.actionsBreadcrumb.$el.contains(e.relatedTarget)) {\n return;\n }\n this.menuBreadcrumbProps.open = false;\n },\n /**\n * Call the resize function after a delay\n */\n async delayedResize() {\n await this.$nextTick();\n this.handleWindowResize();\n },\n /**\n * Check the width of the breadcrumb and hide breadcrumbs\n * if we overflow otherwise.\n */\n handleWindowResize() {\n if (!this.$refs.container) {\n return;\n }\n const nrCrumbs = this.breadcrumbsRefs.length;\n const hiddenIndices = [];\n const availableWidth = this.$refs.container.offsetWidth;\n let totalWidth = this.getTotalWidth();\n if (this.$refs.breadcrumb__actions) {\n totalWidth += this.$refs.breadcrumb__actions.offsetWidth;\n }\n let overflow = totalWidth - availableWidth;\n overflow += overflow > 0 ? 64 : 0;\n let i = 0;\n const startIndex = Math.floor(nrCrumbs / 2);\n while (overflow > 0 && i < nrCrumbs - 2) {\n const currentIndex = startIndex + (i % 2 ? i + 1 : i) / 2 * Math.pow(-1, i + nrCrumbs % 2);\n overflow -= this.getWidth(this.breadcrumbsRefs[currentIndex]?.$el, currentIndex === this.breadcrumbsRefs.length - 1);\n hiddenIndices.push(currentIndex);\n i++;\n }\n if (!this.arraysEqual(this.hiddenIndices, hiddenIndices.sort((a, b) => a - b))) {\n this.hiddenIndices = hiddenIndices;\n }\n },\n /**\n * Checks if two arrays are equal.\n * Only works for primitive arrays, but that's enough here.\n *\n * @param {Array} a The first array\n * @param {Array} b The second array\n * @return {boolean} Wether the arrays are equal\n */\n arraysEqual(a, b) {\n if (a.length !== b.length) {\n return false;\n } else if (a === b) {\n return true;\n } else if (a === null || b === null) {\n return false;\n }\n for (let i = 0; i < a.length; ++i) {\n if (a[i] !== b[i]) {\n return false;\n }\n }\n return true;\n },\n /**\n * Calculates the total width of all breadcrumbs\n *\n * @return {number} The total width\n */\n getTotalWidth() {\n return this.breadcrumbsRefs.reduce((width, crumb, index) => width + this.getWidth(crumb.$el, index === this.breadcrumbsRefs.length - 1), 0);\n },\n /**\n * Calculates the width of the provided element\n *\n * @param {object} el The element\n * @param {boolean} isLast Is this the last crumb\n * @return {number} The width\n */\n getWidth(el, isLast) {\n if (!el?.classList) {\n return 0;\n }\n const hide = el.classList.contains(`${crumbClass}--hidden`);\n el.style.minWidth = \"auto\";\n if (isLast) {\n el.style.maxWidth = \"210px\";\n }\n el.classList.remove(`${crumbClass}--hidden`);\n const w = el.offsetWidth;\n if (hide) {\n el.classList.add(`${crumbClass}--hidden`);\n }\n el.style.minWidth = \"\";\n el.style.maxWidth = \"\";\n return w;\n },\n /**\n * Prevents the default of a provided event\n *\n * @param {object} e The event\n * @return {boolean}\n */\n preventDefault(e) {\n if (e.preventDefault) {\n e.preventDefault();\n }\n return false;\n },\n /**\n * Handles the drag start.\n * Prevents a breadcrumb from being draggable.\n *\n * @param {object} e The event\n * @return {boolean}\n */\n dragStart(e) {\n return this.preventDefault(e);\n },\n /**\n * Handles when something is dropped on the breadcrumb.\n *\n * @param {object} e The drop event\n * @param {string} path The path of the breadcrumb\n * @param {boolean} disabled Whether dropping is disabled for this breadcrumb\n * @return {boolean}\n */\n dropped(e, path, disabled) {\n if (!disabled) {\n this.$emit(\"dropped\", e, path);\n }\n this.menuBreadcrumbProps.open = false;\n const crumbs = document.querySelectorAll(`.${crumbClass}`);\n for (const crumb of crumbs) {\n crumb.classList.remove(`${crumbClass}--hovered`);\n }\n return this.preventDefault(e);\n },\n /**\n * Handles the drag over event\n *\n * @param {object} e The drag over event\n * @return {boolean}\n */\n dragOver(e) {\n return this.preventDefault(e);\n },\n /**\n * Handles the drag enter event\n *\n * @param {object} e The drag over event\n * @param {boolean} disabled Whether dropping is disabled for this breadcrumb\n */\n dragEnter(e, disabled) {\n if (disabled) {\n return;\n }\n if (e.target.closest) {\n const target = e.target.closest(`.${crumbClass}`);\n if (target.classList && target.classList.contains(crumbClass)) {\n const crumbs = document.querySelectorAll(`.${crumbClass}`);\n for (const crumb of crumbs) {\n crumb.classList.remove(`${crumbClass}--hovered`);\n }\n target.classList.add(`${crumbClass}--hovered`);\n }\n }\n },\n /**\n * Handles the drag leave event\n *\n * @param {object} e The drag leave event\n * @param {boolean} disabled Whether dropping is disabled for this breadcrumb\n */\n dragLeave(e, disabled) {\n if (disabled) {\n return;\n }\n if (e.target.contains(e.relatedTarget)) {\n return;\n }\n if (e.target.closest) {\n const target = e.target.closest(`.${crumbClass}`);\n if (target.contains(e.relatedTarget)) {\n return;\n }\n if (target.classList && target.classList.contains(crumbClass)) {\n target.classList.remove(`${crumbClass}--hovered`);\n }\n }\n },\n /**\n * Check for each crumb if we have to hide it and\n * add it to the array of all crumbs.\n */\n hideCrumbs() {\n this.breadcrumbsRefs.forEach((crumb, i) => {\n if (crumb?.$el?.classList) {\n if (this.hiddenIndices.includes(i)) {\n crumb.$el.classList.add(`${crumbClass}--hidden`);\n } else {\n crumb.$el.classList.remove(`${crumbClass}--hidden`);\n }\n }\n });\n },\n isBreadcrumb(vnode) {\n return vnode?.type?.name === \"NcBreadcrumb\";\n }\n },\n /**\n * The render function to display the component\n *\n * @return {object|undefined} The created VNode\n */\n render() {\n let breadcrumbs = [];\n this.$slots.default?.().forEach((vnode) => {\n if (this.isBreadcrumb(vnode)) {\n breadcrumbs.push(vnode);\n return;\n }\n if (vnode?.type === Fragment) {\n vnode?.children?.forEach?.((child) => {\n if (this.isBreadcrumb(child)) {\n breadcrumbs.push(child);\n }\n });\n }\n });\n if (breadcrumbs.length === 0) {\n return;\n }\n breadcrumbs[0] = cloneVNode(breadcrumbs[0], {\n icon: this.rootIcon,\n ref: \"breadcrumbs\"\n });\n const breadcrumbsRefs = [];\n breadcrumbs = breadcrumbs.map((crumb, index) => cloneVNode(crumb, {\n ref: (crumb2) => {\n breadcrumbsRefs[index] = crumb2;\n }\n }));\n const crumbs = [...breadcrumbs];\n if (this.hiddenIndices.length) {\n crumbs.splice(\n Math.round(breadcrumbs.length / 2),\n 0,\n // The Actions menu\n // Use a breadcrumb component for the hidden breadcrumbs\n h(NcBreadcrumb, {\n class: \"dropdown\",\n ...this.menuBreadcrumbProps,\n // Hide the dropdown menu from screen-readers,\n // since the crumbs in the menu are still in the list.\n \"aria-hidden\": true,\n // Add a ref to the Actions menu\n ref: \"actionsBreadcrumb\",\n key: \"actions-breadcrumb-1\",\n // Add handlers so the Actions menu opens on hover\n onDragenter: () => {\n this.menuBreadcrumbProps.open = true;\n },\n onDragleave: this.closeActions,\n // Make sure we keep the same open state\n // as the Actions component\n \"onUpdate:open\": (open) => {\n this.menuBreadcrumbProps.open = open;\n }\n // Add all hidden breadcrumbs as ActionRouter or ActionLink\n }, {\n default: () => this.hiddenIndices.filter((index) => index <= breadcrumbs.length - 1).map((index) => {\n const crumb = breadcrumbs[index];\n const {\n // Get the parameters from the breadcrumb component props\n to,\n href,\n disableDrop,\n name,\n // Props to forward\n ...propsToForward\n } = crumb.props;\n delete propsToForward.ref;\n let element = NcActionButton;\n let path = \"\";\n if (href) {\n element = NcActionLink;\n path = href;\n }\n if (to) {\n element = NcActionRouter;\n path = to;\n }\n const folderIcon = h(IconFolder, {\n size: 20\n });\n return h(element, {\n ...propsToForward,\n class: crumbClass,\n href: href || null,\n to: to || null,\n // Prevent the breadcrumbs from being draggable\n draggable: false,\n // Add the drag and drop handlers\n onDragstart: this.dragStart,\n onDrop: ($event) => this.dropped($event, path, disableDrop),\n onDragover: this.dragOver,\n onDragenter: ($event) => this.dragEnter($event, disableDrop),\n onDragleave: ($event) => this.dragLeave($event, disableDrop)\n }, {\n default: () => name,\n icon: () => folderIcon\n });\n })\n })\n );\n }\n const wrapper = [h(\"nav\", { \"aria-label\": this.ariaLabel }, [h(\"ul\", { class: \"breadcrumb__crumbs\" }, [crumbs])])];\n if (isSlotPopulated(this.$slots.actions?.())) {\n wrapper.push(h(\"div\", { class: \"breadcrumb__actions\", ref: \"breadcrumb__actions\" }, this.$slots.actions?.()));\n }\n this.breadcrumbsRefs = breadcrumbsRefs;\n return h(\"div\", { class: [\"breadcrumb\", { \"breadcrumb--collapsed\": this.hiddenIndices.length === breadcrumbs.length - 2 }], ref: \"container\" }, wrapper);\n }\n};\nconst NcBreadcrumbs = /* @__PURE__ */ _export_sfc(_sfc_main, [[\"__scopeId\", \"data-v-5a4d73af\"]]);\nexport {\n NcBreadcrumbs as N\n};\n//# sourceMappingURL=NcBreadcrumbs-BaTp3Sya.mjs.map\n","import { FileType } from \"@nextcloud/files\";\nimport { generateUrl } from \"@nextcloud/router\";\nimport { ref, watchEffect, toValue } from \"vue\";\nimport PQueue from \"p-queue\";\nconst queue = new PQueue({ concurrency: 5 });\nfunction preloadImage(url) {\n const { resolve, promise } = Promise.withResolvers();\n queue.add(() => {\n const image = new Image();\n image.onerror = () => resolve(false);\n image.onload = () => resolve(true);\n image.src = url;\n return promise;\n });\n return promise;\n}\nfunction getPreviewURL(node, options = {}) {\n options = { size: 32, cropPreview: false, mimeFallback: true, ...options };\n try {\n const previewUrl = node.attributes?.previewUrl || generateUrl(\"/core/preview?fileId={fileid}\", {\n fileid: node.fileid\n });\n let url;\n try {\n url = new URL(previewUrl);\n } catch {\n url = new URL(previewUrl, window.location.origin);\n }\n url.searchParams.set(\"x\", `${options.size}`);\n url.searchParams.set(\"y\", `${options.size}`);\n url.searchParams.set(\"mimeFallback\", `${options.mimeFallback}`);\n url.searchParams.set(\"a\", options.cropPreview === true ? \"0\" : \"1\");\n url.searchParams.set(\"c\", `${node.attributes.etag}`);\n return url;\n } catch {\n return null;\n }\n}\nfunction usePreviewURL(node, options) {\n const previewURL = ref(null);\n const previewLoaded = ref(false);\n watchEffect(() => {\n previewLoaded.value = false;\n previewURL.value = getPreviewURL(toValue(node), toValue(options || {}));\n if (previewURL.value && toValue(node).type === FileType.File) {\n preloadImage(previewURL.value.href).then((success) => {\n previewLoaded.value = success;\n });\n }\n });\n return {\n previewURL,\n previewLoaded\n };\n}\nexport {\n getPreviewURL as g,\n usePreviewURL as u\n};\n//# sourceMappingURL=preview.mjs.map\n","const _export_sfc = (sfc, props) => {\n const target = sfc.__vccOpts || sfc;\n for (const [key, val] of props) {\n target[key] = val;\n }\n return target;\n};\nexport {\n _export_sfc as _\n};\n//# sourceMappingURL=_plugin-vue_export-helper.mjs.map\n","import { openBlock, createElementBlock, mergeProps, createElementVNode, toDisplayString, createCommentVNode, defineComponent, ref, computed, toRef, normalizeClass, normalizeStyle, unref, Fragment, createBlock, createVNode, toHandlers, withModifiers, onMounted, toValue, useModel, onUnmounted, withCtx, createTextVNode, renderList, mergeModels, nextTick, useTemplateRef, createSlots, shallowRef, watch } from \"vue\";\nimport { emit } from \"@nextcloud/event-bus\";\nimport NcDialog from \"@nextcloud/vue/components/NcDialog\";\nimport NcEmptyContent from \"@nextcloud/vue/components/NcEmptyContent\";\nimport { _ as _export_sfc } from \"./_plugin-vue_export-helper.mjs\";\nimport { FileType, Permission, formatFileSize, sortNodes, validateFilename, InvalidFilenameError, InvalidFilenameErrorReason } from \"@nextcloud/files\";\nimport NcButton from \"@nextcloud/vue/components/NcButton\";\nimport NcCheckboxRadioSwitch from \"@nextcloud/vue/components/NcCheckboxRadioSwitch\";\nimport { extname, join } from \"@nextcloud/paths\";\nimport NcDateTime from \"@nextcloud/vue/components/NcDateTime\";\nimport { mdiKey, mdiTagOutline, mdiLink, mdiAccountPlus, mdiAccountGroupOutline, mdiNetworkOutline, mdiFolder, mdiClock, mdiStar } from \"@mdi/js\";\nimport { ShareType } from \"@nextcloud/sharing\";\nimport NcIconSvgWrapper from \"@nextcloud/vue/components/NcIconSvgWrapper\";\nimport { u as usePreviewURL } from \"./preview.mjs\";\nimport { t, l as logger, s as showError } from \"./index.mjs\";\nimport axios from \"@nextcloud/axios\";\nimport { loadState } from \"@nextcloud/initial-state\";\nimport { generateUrl } from \"@nextcloud/router\";\nimport { isPublicShare } from \"@nextcloud/sharing/public\";\nimport NcActionInput from \"@nextcloud/vue/components/NcActionInput\";\nimport NcActions from \"@nextcloud/vue/components/NcActions\";\nimport NcBreadcrumb from \"@nextcloud/vue/components/NcBreadcrumb\";\nimport NcBreadcrumbs from \"@nextcloud/vue/components/NcBreadcrumbs\";\nimport { getCurrentUser } from \"@nextcloud/auth\";\nimport NcSelect from \"@nextcloud/vue/components/NcSelect\";\nimport NcTextField from \"@nextcloud/vue/components/NcTextField\";\nimport { getRecentSearch, resultToNode, defaultRootPath, getDefaultPropfind, getClient, getFavoriteNodes } from \"@nextcloud/files/dav\";\nconst _sfc_main$e = {\n name: \"FileIcon\",\n emits: [\"click\"],\n props: {\n title: {\n type: String\n },\n fillColor: {\n type: String,\n default: \"currentColor\"\n },\n size: {\n type: Number,\n default: 24\n }\n }\n};\nconst _hoisted_1$c = [\"aria-hidden\", \"aria-label\"];\nconst _hoisted_2$b = [\"fill\", \"width\", \"height\"];\nconst _hoisted_3$a = { d: \"M13,9V3.5L18.5,9M6,2C4.89,2 4,2.89 4,4V20A2,2 0 0,0 6,22H18A2,2 0 0,0 20,20V8L14,2H6Z\" };\nconst _hoisted_4$a = { key: 0 };\nfunction _sfc_render$7(_ctx, _cache, $props, $setup, $data, $options) {\n return openBlock(), createElementBlock(\"span\", mergeProps(_ctx.$attrs, {\n \"aria-hidden\": $props.title ? null : \"true\",\n \"aria-label\": $props.title,\n class: \"material-design-icon file-icon\",\n role: \"img\",\n onClick: _cache[0] || (_cache[0] = ($event) => _ctx.$emit(\"click\", $event))\n }), [\n (openBlock(), createElementBlock(\"svg\", {\n fill: $props.fillColor,\n class: \"material-design-icon__svg\",\n width: $props.size,\n height: $props.size,\n viewBox: \"0 0 24 24\"\n }, [\n createElementVNode(\"path\", _hoisted_3$a, [\n $props.title ? (openBlock(), createElementBlock(\"title\", _hoisted_4$a, toDisplayString($props.title), 1)) : createCommentVNode(\"\", true)\n ])\n ], 8, _hoisted_2$b))\n ], 16, _hoisted_1$c);\n}\nconst IconFile = /* @__PURE__ */ _export_sfc(_sfc_main$e, [[\"render\", _sfc_render$7]]);\nconst _sfc_main$d = {\n name: \"MenuDownIcon\",\n emits: [\"click\"],\n props: {\n title: {\n type: String\n },\n fillColor: {\n type: String,\n default: \"currentColor\"\n },\n size: {\n type: Number,\n default: 24\n }\n }\n};\nconst _hoisted_1$b = [\"aria-hidden\", \"aria-label\"];\nconst _hoisted_2$a = [\"fill\", \"width\", \"height\"];\nconst _hoisted_3$9 = { d: \"M7,10L12,15L17,10H7Z\" };\nconst _hoisted_4$9 = { key: 0 };\nfunction _sfc_render$6(_ctx, _cache, $props, $setup, $data, $options) {\n return openBlock(), createElementBlock(\"span\", mergeProps(_ctx.$attrs, {\n \"aria-hidden\": $props.title ? null : \"true\",\n \"aria-label\": $props.title,\n class: \"material-design-icon menu-down-icon\",\n role: \"img\",\n onClick: _cache[0] || (_cache[0] = ($event) => _ctx.$emit(\"click\", $event))\n }), [\n (openBlock(), createElementBlock(\"svg\", {\n fill: $props.fillColor,\n class: \"material-design-icon__svg\",\n width: $props.size,\n height: $props.size,\n viewBox: \"0 0 24 24\"\n }, [\n createElementVNode(\"path\", _hoisted_3$9, [\n $props.title ? (openBlock(), createElementBlock(\"title\", _hoisted_4$9, toDisplayString($props.title), 1)) : createCommentVNode(\"\", true)\n ])\n ], 8, _hoisted_2$a))\n ], 16, _hoisted_1$b);\n}\nconst IconSortDescending = /* @__PURE__ */ _export_sfc(_sfc_main$d, [[\"render\", _sfc_render$6]]);\nconst _sfc_main$c = {\n name: \"MenuUpIcon\",\n emits: [\"click\"],\n props: {\n title: {\n type: String\n },\n fillColor: {\n type: String,\n default: \"currentColor\"\n },\n size: {\n type: Number,\n default: 24\n }\n }\n};\nconst _hoisted_1$a = [\"aria-hidden\", \"aria-label\"];\nconst _hoisted_2$9 = [\"fill\", \"width\", \"height\"];\nconst _hoisted_3$8 = { d: \"M7,15L12,10L17,15H7Z\" };\nconst _hoisted_4$8 = { key: 0 };\nfunction _sfc_render$5(_ctx, _cache, $props, $setup, $data, $options) {\n return openBlock(), createElementBlock(\"span\", mergeProps(_ctx.$attrs, {\n \"aria-hidden\": $props.title ? null : \"true\",\n \"aria-label\": $props.title,\n class: \"material-design-icon menu-up-icon\",\n role: \"img\",\n onClick: _cache[0] || (_cache[0] = ($event) => _ctx.$emit(\"click\", $event))\n }), [\n (openBlock(), createElementBlock(\"svg\", {\n fill: $props.fillColor,\n class: \"material-design-icon__svg\",\n width: $props.size,\n height: $props.size,\n viewBox: \"0 0 24 24\"\n }, [\n createElementVNode(\"path\", _hoisted_3$8, [\n $props.title ? (openBlock(), createElementBlock(\"title\", _hoisted_4$8, toDisplayString($props.title), 1)) : createCommentVNode(\"\", true)\n ])\n ], 8, _hoisted_2$9))\n ], 16, _hoisted_1$a);\n}\nconst IconSortAscending = /* @__PURE__ */ _export_sfc(_sfc_main$c, [[\"render\", _sfc_render$5]]);\nconst _sfc_main$b = {\n name: \"FolderIcon\",\n emits: [\"click\"],\n props: {\n title: {\n type: String\n },\n fillColor: {\n type: String,\n default: \"currentColor\"\n },\n size: {\n type: Number,\n default: 24\n }\n }\n};\nconst _hoisted_1$9 = [\"aria-hidden\", \"aria-label\"];\nconst _hoisted_2$8 = [\"fill\", \"width\", \"height\"];\nconst _hoisted_3$7 = { d: \"M10,4H4C2.89,4 2,4.89 2,6V18A2,2 0 0,0 4,20H20A2,2 0 0,0 22,18V8C22,6.89 21.1,6 20,6H12L10,4Z\" };\nconst _hoisted_4$7 = { key: 0 };\nfunction _sfc_render$4(_ctx, _cache, $props, $setup, $data, $options) {\n return openBlock(), createElementBlock(\"span\", mergeProps(_ctx.$attrs, {\n \"aria-hidden\": $props.title ? null : \"true\",\n \"aria-label\": $props.title,\n class: \"material-design-icon folder-icon\",\n role: \"img\",\n onClick: _cache[0] || (_cache[0] = ($event) => _ctx.$emit(\"click\", $event))\n }), [\n (openBlock(), createElementBlock(\"svg\", {\n fill: $props.fillColor,\n class: \"material-design-icon__svg\",\n width: $props.size,\n height: $props.size,\n viewBox: \"0 0 24 24\"\n }, [\n createElementVNode(\"path\", _hoisted_3$7, [\n $props.title ? (openBlock(), createElementBlock(\"title\", _hoisted_4$7, toDisplayString($props.title), 1)) : createCommentVNode(\"\", true)\n ])\n ], 8, _hoisted_2$8))\n ], 16, _hoisted_1$9);\n}\nconst IconFolder = /* @__PURE__ */ _export_sfc(_sfc_main$b, [[\"render\", _sfc_render$4]]);\nconst fileListIconStyles = {\n \"file-picker__file-icon\": \"_file-picker__file-icon_1aykw_9\",\n \"file-picker__file-icon--primary\": \"_file-picker__file-icon--primary_1aykw_22\",\n \"file-picker__file-icon-overlay\": \"_file-picker__file-icon-overlay_1aykw_26\"\n};\nconst _sfc_main$a = /* @__PURE__ */ defineComponent({\n __name: \"FilePreview\",\n props: {\n node: {},\n cropImagePreviews: { type: Boolean }\n },\n setup(__props) {\n const props = __props;\n const fileListIconStyles$1 = ref(fileListIconStyles);\n const {\n previewURL,\n previewLoaded\n } = usePreviewURL(toRef(props, \"node\"), computed(() => ({ cropPreview: props.cropImagePreviews })));\n const isFile = computed(() => props.node.type === FileType.File);\n const folderDecorationIcon = computed(() => {\n if (props.node.type !== FileType.Folder) {\n return null;\n }\n if (props.node.attributes?.[\"is-encrypted\"] === 1) {\n return mdiKey;\n }\n if (props.node.attributes?.[\"is-tag\"]) {\n return mdiTagOutline;\n }\n const shareTypes = Object.values(props.node.attributes?.[\"share-types\"] || {}).flat();\n if (shareTypes.some((type) => type === ShareType.Link || type === ShareType.Email)) {\n return mdiLink;\n }\n if (shareTypes.length > 0) {\n return mdiAccountPlus;\n }\n switch (props.node.attributes?.[\"mount-type\"]) {\n case \"external\":\n case \"external-session\":\n return mdiNetworkOutline;\n case \"group\":\n return mdiAccountGroupOutline;\n case \"shared\":\n return mdiAccountPlus;\n }\n return null;\n });\n return (_ctx, _cache) => {\n return openBlock(), createElementBlock(\"div\", {\n style: normalizeStyle(unref(previewLoaded) ? { backgroundImage: `url(${unref(previewURL)})` } : void 0),\n class: normalizeClass(fileListIconStyles$1.value[\"file-picker__file-icon\"])\n }, [\n !unref(previewLoaded) ? (openBlock(), createElementBlock(Fragment, { key: 0 }, [\n isFile.value ? (openBlock(), createBlock(IconFile, {\n key: 0,\n size: 32\n })) : (openBlock(), createElementBlock(Fragment, { key: 1 }, [\n folderDecorationIcon.value ? (openBlock(), createBlock(unref(NcIconSvgWrapper), {\n key: 0,\n class: normalizeClass(fileListIconStyles$1.value[\"file-picker__file-icon-overlay\"]),\n inline: \"\",\n path: folderDecorationIcon.value,\n size: 16\n }, null, 8, [\"class\", \"path\"])) : createCommentVNode(\"\", true),\n createVNode(IconFolder, {\n class: normalizeClass(fileListIconStyles$1.value[\"file-picker__file-icon--primary\"]),\n size: 32\n }, null, 8, [\"class\"])\n ], 64))\n ], 64)) : createCommentVNode(\"\", true)\n ], 6);\n };\n }\n});\nconst _hoisted_1$8 = [\"tabindex\", \"aria-selected\", \"data-filename\"];\nconst _hoisted_2$7 = { class: \"row-name\" };\nconst _hoisted_3$6 = {\n class: \"file-picker__name-container\",\n \"data-testid\": \"row-name\"\n};\nconst _hoisted_4$6 = [\"title\", \"textContent\"];\nconst _hoisted_5$1 = [\"textContent\"];\nconst _hoisted_6$1 = { class: \"row-size\" };\nconst _hoisted_7$1 = { class: \"row-modified\" };\nconst _sfc_main$9 = /* @__PURE__ */ defineComponent({\n __name: \"FileListRow\",\n props: {\n allowPickDirectory: { type: Boolean },\n selected: { type: Boolean },\n showCheckbox: { type: Boolean },\n canPick: { type: Boolean },\n node: {},\n cropImagePreviews: { type: Boolean }\n },\n emits: [\"update:selected\", \"enterDirectory\"],\n setup(__props, { emit: __emit }) {\n const props = __props;\n const emit2 = __emit;\n const timestamp = computed(() => props.node.mtime ?? 0);\n const fileExtension = computed(() => extname(props.node.displayname));\n const displayName = computed(() => props.node.displayname.slice(0, fileExtension.value ? -fileExtension.value.length : void 0));\n const isDirectory = computed(() => props.node.type === FileType.Folder);\n const isPickable = computed(() => props.canPick && (props.allowPickDirectory || !isDirectory.value));\n const isNavigatable = computed(() => (props.node.permissions & Permission.READ) === Permission.READ);\n function toggleSelected() {\n if (!isPickable.value) {\n return;\n }\n emit2(\"update:selected\", !props.selected);\n }\n function handleClick() {\n if (isDirectory.value) {\n if (isNavigatable.value) {\n emit2(\"enterDirectory\", props.node);\n }\n } else {\n toggleSelected();\n }\n }\n function handleKeyDown(event) {\n if (event.key === \"Enter\") {\n handleClick();\n }\n }\n return (_ctx, _cache) => {\n return openBlock(), createElementBlock(\"tr\", mergeProps({\n tabindex: __props.showCheckbox && !isDirectory.value ? void 0 : 0,\n \"aria-selected\": !isPickable.value ? void 0 : __props.selected,\n class: [\"file-picker__row\", [\n {\n \"file-picker__row--selected\": __props.selected && !__props.showCheckbox,\n \"file-picker__row--not-navigatable\": isDirectory.value && !isNavigatable.value,\n \"file-picker__row--not-pickable\": !isPickable.value\n }\n ]],\n \"data-filename\": __props.node.basename,\n \"data-testid\": \"file-list-row\"\n }, toHandlers({\n click: handleClick,\n /* same as tabindex -> if we hide the checkbox or this is a directory we need keyboard access to enter the directory or select the node */\n ...!__props.showCheckbox || isDirectory.value ? { keydown: handleKeyDown } : {}\n }, true)), [\n __props.showCheckbox ? (openBlock(), createElementBlock(\"td\", {\n key: 0,\n class: \"row-checkbox\",\n onClick: withModifiers(() => {\n }, [\"stop\"])\n }, [\n createVNode(unref(NcCheckboxRadioSwitch), {\n \"aria-label\": unref(t)(\"Select the row for {nodename}\", { nodename: displayName.value }),\n disabled: !isPickable.value,\n \"data-testid\": \"row-checkbox\",\n modelValue: __props.selected,\n \"onUpdate:modelValue\": toggleSelected\n }, null, 8, [\"aria-label\", \"disabled\", \"modelValue\"])\n ])) : createCommentVNode(\"\", true),\n createElementVNode(\"td\", _hoisted_2$7, [\n createElementVNode(\"div\", _hoisted_3$6, [\n createVNode(_sfc_main$a, {\n node: __props.node,\n cropImagePreviews: __props.cropImagePreviews\n }, null, 8, [\"node\", \"cropImagePreviews\"]),\n createElementVNode(\"div\", {\n class: \"file-picker__file-name\",\n title: displayName.value,\n textContent: toDisplayString(displayName.value)\n }, null, 8, _hoisted_4$6),\n createElementVNode(\"div\", {\n class: \"file-picker__file-extension\",\n textContent: toDisplayString(fileExtension.value)\n }, null, 8, _hoisted_5$1)\n ])\n ]),\n createElementVNode(\"td\", _hoisted_6$1, toDisplayString(unref(formatFileSize)(__props.node.size || 0)), 1),\n createElementVNode(\"td\", _hoisted_7$1, [\n createVNode(unref(NcDateTime), {\n timestamp: timestamp.value,\n ignoreSeconds: \"\"\n }, null, 8, [\"timestamp\"])\n ])\n ], 16, _hoisted_1$8);\n };\n }\n});\nconst FileListRow = /* @__PURE__ */ _export_sfc(_sfc_main$9, [[\"__scopeId\", \"data-v-7857e8bd\"]]);\nconst _hoisted_1$7 = {\n \"aria-hidden\": \"true\",\n class: \"file-picker__row loading-row\"\n};\nconst _hoisted_2$6 = {\n key: 0,\n class: \"row-checkbox\"\n};\nconst _hoisted_3$5 = { class: \"row-name\" };\nconst _hoisted_4$5 = { class: \"row-wrapper\" };\nconst _sfc_main$8 = /* @__PURE__ */ defineComponent({\n __name: \"LoadingTableRow\",\n props: {\n showCheckbox: { type: Boolean }\n },\n setup(__props) {\n return (_ctx, _cache) => {\n return openBlock(), createElementBlock(\"tr\", _hoisted_1$7, [\n __props.showCheckbox ? (openBlock(), createElementBlock(\"td\", _hoisted_2$6, [..._cache[0] || (_cache[0] = [\n createElementVNode(\"span\", null, null, -1)\n ])])) : createCommentVNode(\"\", true),\n createElementVNode(\"td\", _hoisted_3$5, [\n createElementVNode(\"div\", _hoisted_4$5, [\n createElementVNode(\"span\", {\n class: normalizeClass(unref(fileListIconStyles)[\"file-picker__file-icon\"])\n }, null, 2),\n _cache[1] || (_cache[1] = createElementVNode(\"span\", null, null, -1))\n ])\n ]),\n _cache[2] || (_cache[2] = createElementVNode(\"td\", { class: \"row-size\" }, [\n createElementVNode(\"span\")\n ], -1)),\n _cache[3] || (_cache[3] = createElementVNode(\"td\", { class: \"row-modified\" }, [\n createElementVNode(\"span\")\n ], -1))\n ]);\n };\n }\n});\nconst LoadingTableRow = /* @__PURE__ */ _export_sfc(_sfc_main$8, [[\"__scopeId\", \"data-v-1f96131b\"]]);\nfunction useFilesSettings() {\n const filesUserState = loadState(\"files\", \"config\", null);\n const showHiddenFiles = ref(filesUserState?.show_hidden ?? true);\n const sortFavoritesFirst = ref(filesUserState?.sort_favorites_first ?? true);\n const cropImagePreviews = ref(filesUserState?.crop_image_previews ?? true);\n onMounted(async () => {\n if (!isPublicShare()) {\n try {\n const { data } = await axios.get(generateUrl(\"/apps/files/api/v1/configs\"));\n showHiddenFiles.value = data?.data?.show_hidden ?? false;\n sortFavoritesFirst.value = data?.data?.sort_favorites_first ?? true;\n cropImagePreviews.value = data?.data?.crop_image_previews ?? true;\n } catch (error) {\n logger.error(\"Could not load files settings\", { error });\n showError(t(\"Could not load files settings\"));\n }\n } else {\n logger.debug(\"Skip loading files settings - currently on public share\");\n }\n });\n return {\n showHiddenFiles,\n sortFavoritesFirst,\n cropImagePreviews\n };\n}\nfunction useFilesViews(currentView) {\n const convertOrder = (order2) => order2 === \"asc\" ? \"ascending\" : order2 === \"desc\" ? \"descending\" : \"none\";\n const filesViewsState = loadState(\"files\", \"viewConfigs\", null);\n const filesViewConfig = ref({\n sortBy: filesViewsState?.files?.sorting_mode ?? \"basename\",\n order: convertOrder(filesViewsState?.files?.sorting_direction ?? \"asc\")\n });\n const recentViewConfig = ref({\n sortBy: filesViewsState?.recent?.sorting_mode ?? \"basename\",\n order: convertOrder(filesViewsState?.recent?.sorting_direction ?? \"asc\")\n });\n const favoritesViewConfig = ref({\n sortBy: filesViewsState?.favorites?.sorting_mode ?? \"basename\",\n order: convertOrder(filesViewsState?.favorites?.sorting_direction ?? \"asc\")\n });\n onMounted(async () => {\n if (!isPublicShare()) {\n try {\n const { data } = await axios.get(generateUrl(\"/apps/files/api/v1/views\"));\n filesViewConfig.value = {\n sortBy: data?.data?.files?.sorting_mode ?? \"basename\",\n order: convertOrder(data?.data?.files?.sorting_direction)\n };\n favoritesViewConfig.value = {\n sortBy: data?.data?.favorites?.sorting_mode ?? \"basename\",\n order: convertOrder(data?.data?.favorites?.sorting_direction)\n };\n recentViewConfig.value = {\n sortBy: data?.data?.recent?.sorting_mode ?? \"basename\",\n order: convertOrder(data?.data?.recent?.sorting_direction)\n };\n } catch (error) {\n logger.error(\"Could not load files views\", { error });\n showError(t(\"Could not load files views\"));\n }\n } else {\n logger.debug(\"Skip loading files views - currently on public share\");\n }\n });\n const currentConfig = computed(() => toValue(currentView || \"files\") === \"files\" ? filesViewConfig.value : toValue(currentView) === \"recent\" ? recentViewConfig.value : favoritesViewConfig.value);\n const sortBy = computed(() => currentConfig.value.sortBy);\n const order = computed(() => currentConfig.value.order);\n return {\n filesViewConfig,\n favoritesViewConfig,\n recentViewConfig,\n currentConfig,\n sortBy,\n order\n };\n}\nconst _hoisted_1$6 = {\n key: 0,\n class: \"row-checkbox\"\n};\nconst _hoisted_2$5 = { class: \"hidden-visually\" };\nconst _hoisted_3$4 = [\"aria-sort\"];\nconst _hoisted_4$4 = { class: \"header-wrapper\" };\nconst _hoisted_5 = {\n key: 2,\n style: { \"width\": \"44px\" }\n};\nconst _hoisted_6 = [\"aria-sort\"];\nconst _hoisted_7 = {\n key: 2,\n style: { \"width\": \"44px\" }\n};\nconst _hoisted_8 = [\"aria-sort\"];\nconst _hoisted_9 = {\n key: 2,\n style: { \"width\": \"44px\" }\n};\nconst _sfc_main$7 = /* @__PURE__ */ defineComponent({\n __name: \"FileList\",\n props: /* @__PURE__ */ mergeModels({\n currentView: {},\n multiselect: { type: Boolean },\n allowPickDirectory: { type: Boolean },\n loading: { type: Boolean },\n files: {},\n canPick: { type: Function }\n }, {\n \"path\": { required: true },\n \"pathModifiers\": {},\n \"selectedFiles\": { required: true },\n \"selectedFilesModifiers\": {}\n }),\n emits: [\"update:path\", \"update:selectedFiles\"],\n setup(__props) {\n const path = useModel(__props, \"path\");\n const selectedFiles = useModel(__props, \"selectedFiles\");\n const props = __props;\n const customSortingConfig = ref();\n const { currentConfig: filesAppSorting } = useFilesViews(props.currentView);\n const sortingConfig = computed(() => customSortingConfig.value ?? filesAppSorting.value);\n const sortByName = computed(() => sortingConfig.value.sortBy === \"basename\" ? sortingConfig.value.order === \"none\" ? void 0 : sortingConfig.value.order : void 0);\n const sortBySize = computed(() => sortingConfig.value.sortBy === \"size\" ? sortingConfig.value.order === \"none\" ? void 0 : sortingConfig.value.order : void 0);\n const sortByModified = computed(() => sortingConfig.value.sortBy === \"mtime\" ? sortingConfig.value.order === \"none\" ? void 0 : sortingConfig.value.order : void 0);\n function toggleSorting(sortBy) {\n if (sortingConfig.value.sortBy === sortBy) {\n if (sortingConfig.value.order === \"ascending\") {\n customSortingConfig.value = { sortBy: sortingConfig.value.sortBy, order: \"descending\" };\n } else {\n customSortingConfig.value = { sortBy: sortingConfig.value.sortBy, order: \"ascending\" };\n }\n } else {\n customSortingConfig.value = { sortBy, order: \"ascending\" };\n }\n }\n const { sortFavoritesFirst, cropImagePreviews } = useFilesSettings();\n const sortedFiles = computed(() => {\n return sortNodes(props.files, {\n sortFoldersFirst: true,\n sortFavoritesFirst: sortFavoritesFirst.value,\n sortingOrder: sortingConfig.value.order === \"descending\" ? \"desc\" : \"asc\",\n sortingMode: sortingConfig.value.sortBy\n });\n });\n const selectableFiles = computed(() => props.files.filter((file) => props.allowPickDirectory || file.type !== FileType.Folder));\n const allSelected = computed(() => !props.loading && selectedFiles.value.length > 0 && selectedFiles.value.length >= selectableFiles.value.length);\n function onSelectAll() {\n if (selectedFiles.value.length < selectableFiles.value.length) {\n selectedFiles.value = [...selectableFiles.value];\n } else {\n selectedFiles.value = [];\n }\n }\n function onNodeSelected(file) {\n if (selectedFiles.value.includes(file)) {\n selectedFiles.value = selectedFiles.value.filter((f) => f.path !== file.path);\n } else {\n if (props.multiselect) {\n selectedFiles.value = [...selectedFiles.value, file];\n } else {\n selectedFiles.value = [file];\n }\n }\n }\n function onChangeDirectory(dir) {\n path.value = dir.path;\n }\n const skeletonNumber = ref(4);\n const fileContainer = ref();\n {\n const resize = () => nextTick(() => {\n const nodes = fileContainer.value?.parentElement?.children || [];\n let height = fileContainer.value?.parentElement?.clientHeight || 450;\n for (let index = 0; index < nodes.length; index++) {\n if (!fileContainer.value?.isSameNode(nodes[index])) {\n height -= nodes[index].clientHeight;\n }\n }\n skeletonNumber.value = Math.max(1, Math.floor((height - 50) / 50));\n });\n onMounted(() => {\n window.addEventListener(\"resize\", resize);\n resize();\n });\n onUnmounted(() => {\n window.removeEventListener(\"resize\", resize);\n });\n }\n return (_ctx, _cache) => {\n return openBlock(), createElementBlock(\"div\", {\n ref_key: \"fileContainer\",\n ref: fileContainer,\n class: \"file-picker__files\"\n }, [\n createElementVNode(\"table\", null, [\n createElementVNode(\"thead\", null, [\n createElementVNode(\"tr\", null, [\n __props.multiselect ? (openBlock(), createElementBlock(\"th\", _hoisted_1$6, [\n createElementVNode(\"span\", _hoisted_2$5, toDisplayString(unref(t)(\"Select entry\")), 1),\n __props.multiselect ? (openBlock(), createBlock(unref(NcCheckboxRadioSwitch), {\n key: 0,\n \"aria-label\": unref(t)(\"Select all entries\"),\n \"data-testid\": \"select-all-checkbox\",\n modelValue: allSelected.value,\n \"onUpdate:modelValue\": onSelectAll\n }, null, 8, [\"aria-label\", \"modelValue\"])) : createCommentVNode(\"\", true)\n ])) : createCommentVNode(\"\", true),\n createElementVNode(\"th\", {\n \"aria-sort\": sortByName.value,\n class: \"row-name\"\n }, [\n createElementVNode(\"div\", _hoisted_4$4, [\n _cache[3] || (_cache[3] = createElementVNode(\"span\", { class: \"file-picker__header-preview\" }, null, -1)),\n createVNode(unref(NcButton), {\n \"data-test\": \"file-picker_sort-name\",\n variant: \"tertiary\",\n wide: \"\",\n onClick: _cache[0] || (_cache[0] = ($event) => toggleSorting(\"basename\"))\n }, {\n icon: withCtx(() => [\n sortByName.value === \"ascending\" ? (openBlock(), createBlock(IconSortAscending, {\n key: 0,\n size: 20\n })) : sortByName.value === \"descending\" ? (openBlock(), createBlock(IconSortDescending, {\n key: 1,\n size: 20\n })) : (openBlock(), createElementBlock(\"span\", _hoisted_5))\n ]),\n default: withCtx(() => [\n createTextVNode(\" \" + toDisplayString(unref(t)(\"Name\")), 1)\n ]),\n _: 1\n })\n ])\n ], 8, _hoisted_3$4),\n createElementVNode(\"th\", {\n \"aria-sort\": sortBySize.value,\n class: \"row-size\"\n }, [\n createVNode(unref(NcButton), {\n variant: \"tertiary\",\n wide: \"\",\n onClick: _cache[1] || (_cache[1] = ($event) => toggleSorting(\"size\"))\n }, {\n icon: withCtx(() => [\n sortBySize.value === \"ascending\" ? (openBlock(), createBlock(IconSortAscending, {\n key: 0,\n size: 20\n })) : sortBySize.value === \"descending\" ? (openBlock(), createBlock(IconSortDescending, {\n key: 1,\n size: 20\n })) : (openBlock(), createElementBlock(\"span\", _hoisted_7))\n ]),\n default: withCtx(() => [\n createTextVNode(\" \" + toDisplayString(unref(t)(\"Size\")), 1)\n ]),\n _: 1\n })\n ], 8, _hoisted_6),\n createElementVNode(\"th\", {\n \"aria-sort\": sortByModified.value,\n class: \"row-modified\"\n }, [\n createVNode(unref(NcButton), {\n variant: \"tertiary\",\n wide: \"\",\n onClick: _cache[2] || (_cache[2] = ($event) => toggleSorting(\"mtime\"))\n }, {\n icon: withCtx(() => [\n sortByModified.value === \"ascending\" ? (openBlock(), createBlock(IconSortAscending, {\n key: 0,\n size: 20\n })) : sortByModified.value === \"descending\" ? (openBlock(), createBlock(IconSortDescending, {\n key: 1,\n size: 20\n })) : (openBlock(), createElementBlock(\"span\", _hoisted_9))\n ]),\n default: withCtx(() => [\n createTextVNode(\" \" + toDisplayString(unref(t)(\"Modified\")), 1)\n ]),\n _: 1\n })\n ], 8, _hoisted_8)\n ])\n ]),\n createElementVNode(\"tbody\", null, [\n __props.loading ? (openBlock(true), createElementBlock(Fragment, { key: 0 }, renderList(skeletonNumber.value, (index) => {\n return openBlock(), createBlock(LoadingTableRow, {\n key: index,\n showCheckbox: __props.multiselect\n }, null, 8, [\"showCheckbox\"]);\n }), 128)) : (openBlock(true), createElementBlock(Fragment, { key: 1 }, renderList(sortedFiles.value, (file) => {\n return openBlock(), createBlock(FileListRow, {\n key: file.fileid || file.path,\n allowPickDirectory: __props.allowPickDirectory,\n showCheckbox: __props.multiselect,\n canPick: (__props.multiselect || selectedFiles.value.length === 0 || selectedFiles.value.includes(file)) && (__props.canPick === void 0 || __props.canPick(file)),\n selected: selectedFiles.value.includes(file),\n node: file,\n cropImagePreviews: unref(cropImagePreviews),\n \"onUpdate:selected\": ($event) => onNodeSelected(file),\n onEnterDirectory: onChangeDirectory\n }, null, 8, [\"allowPickDirectory\", \"showCheckbox\", \"canPick\", \"selected\", \"node\", \"cropImagePreviews\", \"onUpdate:selected\"]);\n }), 128))\n ])\n ])\n ], 512);\n };\n }\n});\nconst FileList = /* @__PURE__ */ _export_sfc(_sfc_main$7, [[\"__scopeId\", \"data-v-412efd5c\"]]);\nconst _sfc_main$6 = {\n name: \"HomeIcon\",\n emits: [\"click\"],\n props: {\n title: {\n type: String\n },\n fillColor: {\n type: String,\n default: \"currentColor\"\n },\n size: {\n type: Number,\n default: 24\n }\n }\n};\nconst _hoisted_1$5 = [\"aria-hidden\", \"aria-label\"];\nconst _hoisted_2$4 = [\"fill\", \"width\", \"height\"];\nconst _hoisted_3$3 = { d: \"M10,20V14H14V20H19V12H22L12,3L2,12H5V20H10Z\" };\nconst _hoisted_4$3 = { key: 0 };\nfunction _sfc_render$3(_ctx, _cache, $props, $setup, $data, $options) {\n return openBlock(), createElementBlock(\"span\", mergeProps(_ctx.$attrs, {\n \"aria-hidden\": $props.title ? null : \"true\",\n \"aria-label\": $props.title,\n class: \"material-design-icon home-icon\",\n role: \"img\",\n onClick: _cache[0] || (_cache[0] = ($event) => _ctx.$emit(\"click\", $event))\n }), [\n (openBlock(), createElementBlock(\"svg\", {\n fill: $props.fillColor,\n class: \"material-design-icon__svg\",\n width: $props.size,\n height: $props.size,\n viewBox: \"0 0 24 24\"\n }, [\n createElementVNode(\"path\", _hoisted_3$3, [\n $props.title ? (openBlock(), createElementBlock(\"title\", _hoisted_4$3, toDisplayString($props.title), 1)) : createCommentVNode(\"\", true)\n ])\n ], 8, _hoisted_2$4))\n ], 16, _hoisted_1$5);\n}\nconst IconHome = /* @__PURE__ */ _export_sfc(_sfc_main$6, [[\"render\", _sfc_render$3]]);\nconst _sfc_main$5 = {\n name: \"PlusIcon\",\n emits: [\"click\"],\n props: {\n title: {\n type: String\n },\n fillColor: {\n type: String,\n default: \"currentColor\"\n },\n size: {\n type: Number,\n default: 24\n }\n }\n};\nconst _hoisted_1$4 = [\"aria-hidden\", \"aria-label\"];\nconst _hoisted_2$3 = [\"fill\", \"width\", \"height\"];\nconst _hoisted_3$2 = { d: \"M19,13H13V19H11V13H5V11H11V5H13V11H19V13Z\" };\nconst _hoisted_4$2 = { key: 0 };\nfunction _sfc_render$2(_ctx, _cache, $props, $setup, $data, $options) {\n return openBlock(), createElementBlock(\"span\", mergeProps(_ctx.$attrs, {\n \"aria-hidden\": $props.title ? null : \"true\",\n \"aria-label\": $props.title,\n class: \"material-design-icon plus-icon\",\n role: \"img\",\n onClick: _cache[0] || (_cache[0] = ($event) => _ctx.$emit(\"click\", $event))\n }), [\n (openBlock(), createElementBlock(\"svg\", {\n fill: $props.fillColor,\n class: \"material-design-icon__svg\",\n width: $props.size,\n height: $props.size,\n viewBox: \"0 0 24 24\"\n }, [\n createElementVNode(\"path\", _hoisted_3$2, [\n $props.title ? (openBlock(), createElementBlock(\"title\", _hoisted_4$2, toDisplayString($props.title), 1)) : createCommentVNode(\"\", true)\n ])\n ], 8, _hoisted_2$3))\n ], 16, _hoisted_1$4);\n}\nconst IconPlus = /* @__PURE__ */ _export_sfc(_sfc_main$5, [[\"render\", _sfc_render$2]]);\nconst _sfc_main$4 = /* @__PURE__ */ defineComponent({\n __name: \"FilePickerBreadcrumbs\",\n props: /* @__PURE__ */ mergeModels({\n showMenu: { type: Boolean }\n }, {\n \"path\": { required: true },\n \"pathModifiers\": {}\n }),\n emits: /* @__PURE__ */ mergeModels([\"createNode\"], [\"update:path\"]),\n setup(__props, { emit: __emit }) {\n const path = useModel(__props, \"path\");\n const emit2 = __emit;\n const actionsOpen = ref(false);\n const newNodeName = ref(\"\");\n const nameInput = useTemplateRef(\"nameInput\");\n function validateInput() {\n const name = newNodeName.value.trim();\n const input = nameInput.value?.$el?.querySelector(\"input\");\n let validity = \"\";\n try {\n validateFilename(name);\n } catch (error) {\n if (!(error instanceof InvalidFilenameError)) {\n throw error;\n }\n switch (error.reason) {\n case InvalidFilenameErrorReason.Character:\n validity = t('\"{char}\" is not allowed inside a folder name.', { char: error.segment });\n break;\n case InvalidFilenameErrorReason.ReservedName:\n validity = t('\"{segment}\" is a reserved name and not allowed for folder names.', { segment: error.segment });\n break;\n case InvalidFilenameErrorReason.Extension:\n validity = t('Folder names must not end with \"{extension}\".', { extension: error.segment });\n break;\n default:\n validity = t(\"Invalid folder name.\");\n }\n }\n if (input) {\n input.setCustomValidity(validity);\n }\n return validity === \"\";\n }\n function onSubmit() {\n const name = newNodeName.value.trim();\n if (validateInput()) {\n actionsOpen.value = false;\n emit2(\"createNode\", name);\n newNodeName.value = \"\";\n }\n }\n const pathElements = computed(() => path.value.split(\"/\").filter((v) => v !== \"\").map((v, i, elements) => ({\n name: v,\n path: \"/\" + elements.slice(0, i + 1).join(\"/\")\n })));\n return (_ctx, _cache) => {\n return openBlock(), createBlock(unref(NcBreadcrumbs), { class: \"file-picker__breadcrumbs\" }, createSlots({\n default: withCtx(() => [\n createVNode(unref(NcBreadcrumb), {\n name: unref(t)(\"All files\"),\n title: unref(t)(\"Home\"),\n onClick: _cache[0] || (_cache[0] = ($event) => path.value = \"/\")\n }, {\n icon: withCtx(() => [\n createVNode(IconHome, { size: 20 })\n ]),\n _: 1\n }, 8, [\"name\", \"title\"]),\n (openBlock(true), createElementBlock(Fragment, null, renderList(pathElements.value, (dir) => {\n return openBlock(), createBlock(unref(NcBreadcrumb), {\n key: dir.path,\n name: dir.name,\n title: dir.path,\n onClick: ($event) => path.value = dir.path\n }, null, 8, [\"name\", \"title\", \"onClick\"]);\n }), 128))\n ]),\n _: 2\n }, [\n __props.showMenu ? {\n name: \"actions\",\n fn: withCtx(() => [\n createVNode(unref(NcActions), {\n open: actionsOpen.value,\n \"onUpdate:open\": _cache[2] || (_cache[2] = ($event) => actionsOpen.value = $event),\n \"aria-label\": unref(t)(\"Create directory\"),\n forceMenu: true,\n forceName: true,\n menuName: unref(t)(\"New\"),\n variant: \"secondary\",\n onClose: _cache[3] || (_cache[3] = ($event) => newNodeName.value = \"\")\n }, {\n icon: withCtx(() => [\n createVNode(IconPlus, { size: 20 })\n ]),\n default: withCtx(() => [\n createVNode(unref(NcActionInput), {\n ref_key: \"nameInput\",\n ref: nameInput,\n modelValue: newNodeName.value,\n \"onUpdate:modelValue\": [\n _cache[1] || (_cache[1] = ($event) => newNodeName.value = $event),\n validateInput\n ],\n label: unref(t)(\"New folder\"),\n placeholder: unref(t)(\"New folder name\"),\n onSubmit\n }, {\n icon: withCtx(() => [\n createVNode(IconFolder, { size: 20 })\n ]),\n _: 1\n }, 8, [\"modelValue\", \"label\", \"placeholder\"])\n ]),\n _: 1\n }, 8, [\"open\", \"aria-label\", \"menuName\"])\n ]),\n key: \"0\"\n } : void 0\n ]), 1024);\n };\n }\n});\nconst FilePickerBreadcrumbs = /* @__PURE__ */ _export_sfc(_sfc_main$4, [[\"__scopeId\", \"data-v-b448b141\"]]);\nconst _sfc_main$3 = {\n name: \"CloseIcon\",\n emits: [\"click\"],\n props: {\n title: {\n type: String\n },\n fillColor: {\n type: String,\n default: \"currentColor\"\n },\n size: {\n type: Number,\n default: 24\n }\n }\n};\nconst _hoisted_1$3 = [\"aria-hidden\", \"aria-label\"];\nconst _hoisted_2$2 = [\"fill\", \"width\", \"height\"];\nconst _hoisted_3$1 = { d: \"M19,6.41L17.59,5L12,10.59L6.41,5L5,6.41L10.59,12L5,17.59L6.41,19L12,13.41L17.59,19L19,17.59L13.41,12L19,6.41Z\" };\nconst _hoisted_4$1 = { key: 0 };\nfunction _sfc_render$1(_ctx, _cache, $props, $setup, $data, $options) {\n return openBlock(), createElementBlock(\"span\", mergeProps(_ctx.$attrs, {\n \"aria-hidden\": $props.title ? null : \"true\",\n \"aria-label\": $props.title,\n class: \"material-design-icon close-icon\",\n role: \"img\",\n onClick: _cache[0] || (_cache[0] = ($event) => _ctx.$emit(\"click\", $event))\n }), [\n (openBlock(), createElementBlock(\"svg\", {\n fill: $props.fillColor,\n class: \"material-design-icon__svg\",\n width: $props.size,\n height: $props.size,\n viewBox: \"0 0 24 24\"\n }, [\n createElementVNode(\"path\", _hoisted_3$1, [\n $props.title ? (openBlock(), createElementBlock(\"title\", _hoisted_4$1, toDisplayString($props.title), 1)) : createCommentVNode(\"\", true)\n ])\n ], 8, _hoisted_2$2))\n ], 16, _hoisted_1$3);\n}\nconst IconClose = /* @__PURE__ */ _export_sfc(_sfc_main$3, [[\"render\", _sfc_render$1]]);\nconst _sfc_main$2 = {\n name: \"MagnifyIcon\",\n emits: [\"click\"],\n props: {\n title: {\n type: String\n },\n fillColor: {\n type: String,\n default: \"currentColor\"\n },\n size: {\n type: Number,\n default: 24\n }\n }\n};\nconst _hoisted_1$2 = [\"aria-hidden\", \"aria-label\"];\nconst _hoisted_2$1 = [\"fill\", \"width\", \"height\"];\nconst _hoisted_3 = { d: \"M9.5,3A6.5,6.5 0 0,1 16,9.5C16,11.11 15.41,12.59 14.44,13.73L14.71,14H15.5L20.5,19L19,20.5L14,15.5V14.71L13.73,14.44C12.59,15.41 11.11,16 9.5,16A6.5,6.5 0 0,1 3,9.5A6.5,6.5 0 0,1 9.5,3M9.5,5C7,5 5,7 5,9.5C5,12 7,14 9.5,14C12,14 14,12 14,9.5C14,7 12,5 9.5,5Z\" };\nconst _hoisted_4 = { key: 0 };\nfunction _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {\n return openBlock(), createElementBlock(\"span\", mergeProps(_ctx.$attrs, {\n \"aria-hidden\": $props.title ? null : \"true\",\n \"aria-label\": $props.title,\n class: \"material-design-icon magnify-icon\",\n role: \"img\",\n onClick: _cache[0] || (_cache[0] = ($event) => _ctx.$emit(\"click\", $event))\n }), [\n (openBlock(), createElementBlock(\"svg\", {\n fill: $props.fillColor,\n class: \"material-design-icon__svg\",\n width: $props.size,\n height: $props.size,\n viewBox: \"0 0 24 24\"\n }, [\n createElementVNode(\"path\", _hoisted_3, [\n $props.title ? (openBlock(), createElementBlock(\"title\", _hoisted_4, toDisplayString($props.title), 1)) : createCommentVNode(\"\", true)\n ])\n ], 8, _hoisted_2$1))\n ], 16, _hoisted_1$2);\n}\nconst IconMagnify = /* @__PURE__ */ _export_sfc(_sfc_main$2, [[\"render\", _sfc_render]]);\nfunction useViews(isAnonymous) {\n const allViews = [\n {\n id: \"files\",\n label: t(\"All files\"),\n icon: mdiFolder\n },\n {\n id: \"recent\",\n label: t(\"Recent\"),\n icon: mdiClock\n },\n {\n id: \"favorites\",\n label: t(\"Favorites\"),\n icon: mdiStar\n }\n ];\n const availableViews = isAnonymous.value ? allViews.filter(({ id }) => id === \"files\") : allViews;\n return {\n allViews,\n availableViews\n };\n}\nconst _hoisted_1$1 = {\n key: 0,\n class: \"file-picker__side\"\n};\nconst _sfc_main$1 = /* @__PURE__ */ defineComponent({\n __name: \"FilePickerNavigation\",\n props: {\n currentView: {},\n filterString: {},\n isCollapsed: { type: Boolean },\n disabledNavigation: { type: Boolean }\n },\n emits: [\"update:currentView\", \"update:filterString\"],\n setup(__props, { emit: __emit }) {\n const props = __props;\n const emit2 = __emit;\n const { availableViews } = useViews(ref(getCurrentUser() === null));\n const currentViewObject = computed(() => availableViews.filter((v) => v.id === props.currentView)[0] ?? availableViews[0]);\n const updateFilterValue = (value) => emit2(\"update:filterString\", value.toString());\n return (_ctx, _cache) => {\n return openBlock(), createElementBlock(Fragment, null, [\n createVNode(unref(NcTextField), {\n class: \"file-picker__filter-input\",\n label: unref(t)(\"Filter file list\"),\n showTrailingButton: !!__props.filterString,\n modelValue: __props.filterString,\n \"onUpdate:modelValue\": updateFilterValue,\n onTrailingButtonClick: _cache[0] || (_cache[0] = ($event) => updateFilterValue(\"\"))\n }, {\n \"trailing-button-icon\": withCtx(() => [\n createVNode(IconClose, { size: 16 })\n ]),\n default: withCtx(() => [\n createVNode(IconMagnify, { size: 16 })\n ]),\n _: 1\n }, 8, [\"label\", \"showTrailingButton\", \"modelValue\"]),\n unref(availableViews).length > 1 && !__props.disabledNavigation ? (openBlock(), createElementBlock(Fragment, { key: 0 }, [\n !__props.isCollapsed ? (openBlock(), createElementBlock(\"ul\", _hoisted_1$1, [\n (openBlock(true), createElementBlock(Fragment, null, renderList(unref(availableViews), (view) => {\n return openBlock(), createElementBlock(\"li\", {\n key: view.id\n }, [\n createVNode(unref(NcButton), {\n variant: __props.currentView === view.id ? \"primary\" : \"tertiary\",\n wide: true,\n onClick: ($event) => _ctx.$emit(\"update:currentView\", view.id)\n }, {\n icon: withCtx(() => [\n createVNode(unref(NcIconSvgWrapper), {\n path: view.icon,\n size: 20\n }, null, 8, [\"path\"])\n ]),\n default: withCtx(() => [\n createTextVNode(\" \" + toDisplayString(view.label), 1)\n ]),\n _: 2\n }, 1032, [\"variant\", \"onClick\"])\n ]);\n }), 128))\n ])) : (openBlock(), createBlock(unref(NcSelect), {\n key: 1,\n \"aria-label\": unref(t)(\"Current view selector\"),\n clearable: false,\n searchable: false,\n options: unref(availableViews),\n modelValue: currentViewObject.value,\n \"onUpdate:modelValue\": _cache[1] || (_cache[1] = ($event) => emit2(\"update:currentView\", $event.id))\n }, null, 8, [\"aria-label\", \"options\", \"modelValue\"]))\n ], 64)) : createCommentVNode(\"\", true)\n ], 64);\n };\n }\n});\nconst FilePickerNavigation = /* @__PURE__ */ _export_sfc(_sfc_main$1, [[\"__scopeId\", \"data-v-e1c54e23\"]]);\nasync function getRecentNodes({ client, signal }) {\n const lastTwoWeek = Math.round(Date.now() / 1e3) - 60 * 60 * 24 * 14;\n const { data } = await client.search(\"/\", {\n signal,\n details: true,\n data: getRecentSearch(lastTwoWeek)\n });\n return data.results.map((result) => resultToNode(result));\n}\nasync function getNodes({ client, path, signal }) {\n const results = await client.getDirectoryContents(join(defaultRootPath, path), {\n signal,\n details: true,\n includeSelf: true,\n data: getDefaultPropfind()\n });\n const nodes = results.data.map((result) => resultToNode(result));\n return {\n contents: nodes.filter(({ path: nodePath }) => nodePath !== path),\n folder: nodes.find(({ path: nodePath }) => path === nodePath)\n };\n}\nasync function getFile(client, path) {\n const { data } = await client.stat(join(defaultRootPath, path), {\n details: true,\n data: getDefaultPropfind()\n });\n return resultToNode(data);\n}\nfunction useDAVFiles(currentView, currentPath) {\n const client = getClient();\n const files = shallowRef([]);\n const folder = shallowRef(null);\n const isLoading = ref(true);\n let abortController;\n async function createDirectory(name) {\n const path = join(currentPath.value, name);\n await client.createDirectory(join(defaultRootPath, path));\n const directory = await getFile(client, path);\n files.value = [...files.value, directory];\n return directory;\n }\n async function loadDAVFiles() {\n if (abortController) {\n abortController.abort();\n abortController = void 0;\n }\n abortController = new AbortController();\n isLoading.value = true;\n try {\n if (currentView.value === \"favorites\") {\n files.value = await getFavoriteNodes({ client, path: currentPath.value, signal: abortController.signal });\n folder.value = null;\n } else if (currentView.value === \"recent\") {\n files.value = await getRecentNodes({ client, signal: abortController.signal });\n folder.value = null;\n } else {\n const content = await getNodes({ client, path: currentPath.value, signal: abortController.signal });\n folder.value = content.folder;\n files.value = content.contents;\n }\n } catch (error) {\n if (error instanceof Error && error.name === \"AbortError\") {\n return;\n }\n throw error;\n } finally {\n abortController = void 0;\n isLoading.value = false;\n }\n }\n watch([currentView, currentPath], () => loadDAVFiles());\n onMounted(() => loadDAVFiles());\n return {\n isLoading,\n files,\n folder,\n loadFiles: loadDAVFiles,\n createDirectory\n };\n}\nfunction useMimeFilter(allowedMIMETypes) {\n const splittedTypes = computed(() => allowedMIMETypes.value.map((filter) => filter.split(\"/\")));\n const isSupportedMimeType = (mime) => {\n const mimeTypeArray = mime.split(\"/\");\n return splittedTypes.value.some(([type, subtype]) => (\n // check mime type matches or is wildcard\n (mimeTypeArray[0] === type || type === \"*\") && (mimeTypeArray[1] === subtype || subtype === \"*\")\n ));\n };\n return {\n isSupportedMimeType\n };\n}\nconst _hoisted_1 = { class: \"file-picker__main\" };\nconst _hoisted_2 = {\n key: 1,\n class: \"file-picker__view\"\n};\nconst _sfc_main = /* @__PURE__ */ defineComponent({\n __name: \"FilePicker\",\n props: {\n buttons: {},\n name: {},\n allowPickDirectory: { type: Boolean, default: false },\n noMenu: { type: Boolean, default: false },\n disabledNavigation: { type: Boolean, default: false },\n filterFn: { type: Function, default: void 0 },\n canPickFn: { type: Function, default: void 0 },\n mimetypeFilter: { default: () => [] },\n multiselect: { type: Boolean, default: false },\n path: { default: void 0 }\n },\n emits: [\"close\"],\n setup(__props, { emit: __emit }) {\n const props = __props;\n const emit$1 = __emit;\n const isOpen = ref(true);\n const currentView = ref(\"files\");\n const savedPath = ref(window?.sessionStorage.getItem(\"NC.FilePicker.LastPath\") || \"/\");\n const navigatedPath = ref(\"\");\n const currentPath = computed({\n get: () => {\n return currentView.value === \"files\" ? navigatedPath.value || props.path || savedPath.value : \"/\";\n },\n set: (path) => {\n navigatedPath.value = path;\n }\n });\n const selectedFiles = shallowRef([]);\n const filterString = ref(\"\");\n const {\n files,\n folder: currentFolder,\n isLoading,\n loadFiles,\n createDirectory\n } = useDAVFiles(currentView, currentPath);\n watch([navigatedPath], () => {\n if (props.path === void 0 && navigatedPath.value) {\n window.sessionStorage.setItem(\"NC.FilePicker.LastPath\", navigatedPath.value);\n }\n selectedFiles.value = [];\n filterString.value = \"\";\n });\n let isHandlingCallback = false;\n const dialogButtons = computed(() => {\n const nodes = selectedFiles.value.length === 0 && props.allowPickDirectory && currentFolder.value && (!props.canPickFn || props.canPickFn(currentFolder.value)) ? [currentFolder.value] : selectedFiles.value;\n const buttons = typeof props.buttons === \"function\" ? props.buttons(nodes, currentPath.value, currentView.value) : props.buttons;\n return buttons.map((button) => ({\n ...button,\n disabled: button.disabled || isLoading.value,\n callback: () => {\n isHandlingCallback = true;\n handleButtonClick(button.callback, nodes);\n }\n }));\n });\n async function handleButtonClick(callback, nodes) {\n await callback(nodes);\n emit$1(\"close\", nodes);\n isHandlingCallback = false;\n }\n const viewHeadline = computed(() => currentView.value === \"favorites\" ? t(\"Favorites\") : currentView.value === \"recent\" ? t(\"Recent\") : \"\");\n const { isSupportedMimeType } = useMimeFilter(toRef(props, \"mimetypeFilter\"));\n onMounted(() => loadFiles());\n const { showHiddenFiles } = useFilesSettings();\n const filteredFiles = computed(() => {\n let filtered = files.value;\n if (!showHiddenFiles.value) {\n filtered = filtered.filter((file) => !file.basename.startsWith(\".\"));\n }\n if (props.mimetypeFilter.length > 0) {\n filtered = filtered.filter((file) => file.type === \"folder\" || file.mime && isSupportedMimeType(file.mime));\n }\n if (filterString.value) {\n filtered = filtered.filter((file) => file.basename.toLowerCase().includes(filterString.value.toLowerCase()));\n }\n if (props.filterFn) {\n filtered = filtered.filter((f) => props.filterFn(f));\n }\n return filtered;\n });\n const noFilesDescription = computed(() => {\n if (currentView.value === \"files\") {\n return t(\"Upload some content or sync with your devices!\");\n } else if (currentView.value === \"recent\") {\n return t(\"Files and folders you recently modified will show up here.\");\n } else {\n return t(\"Files and folders you mark as favorite will show up here.\");\n }\n });\n async function onCreateFolder(name) {\n try {\n const folder = await createDirectory(name);\n navigatedPath.value = folder.path;\n emit(\"files:node:created\", files.value.filter((file) => file.basename === name)[0]);\n } catch (error) {\n logger.warn(\"Could not create new folder\", { name, error });\n showError(t(\"Could not create the new folder\"));\n }\n }\n function handleClose(open) {\n if (!open && !isHandlingCallback) {\n emit$1(\"close\");\n }\n }\n return (_ctx, _cache) => {\n return openBlock(), createBlock(unref(NcDialog), {\n open: isOpen.value,\n \"onUpdate:open\": [\n _cache[6] || (_cache[6] = ($event) => isOpen.value = $event),\n handleClose\n ],\n buttons: dialogButtons.value,\n name: __props.name,\n size: \"large\",\n contentClasses: \"file-picker__content\",\n dialogClasses: \"file-picker\",\n navigationClasses: \"file-picker__navigation\"\n }, {\n navigation: withCtx(({ isCollapsed }) => [\n createVNode(FilePickerNavigation, {\n currentView: currentView.value,\n \"onUpdate:currentView\": _cache[0] || (_cache[0] = ($event) => currentView.value = $event),\n filterString: filterString.value,\n \"onUpdate:filterString\": _cache[1] || (_cache[1] = ($event) => filterString.value = $event),\n isCollapsed,\n disabledNavigation: __props.disabledNavigation\n }, null, 8, [\"currentView\", \"filterString\", \"isCollapsed\", \"disabledNavigation\"])\n ]),\n default: withCtx(() => [\n createElementVNode(\"div\", _hoisted_1, [\n currentView.value === \"files\" ? (openBlock(), createBlock(FilePickerBreadcrumbs, {\n key: 0,\n path: currentPath.value,\n \"onUpdate:path\": _cache[2] || (_cache[2] = ($event) => currentPath.value = $event),\n showMenu: !__props.noMenu,\n onCreateNode: onCreateFolder\n }, null, 8, [\"path\", \"showMenu\"])) : (openBlock(), createElementBlock(\"div\", _hoisted_2, [\n createElementVNode(\"h3\", null, toDisplayString(viewHeadline.value), 1)\n ])),\n unref(isLoading) || filteredFiles.value.length > 0 ? (openBlock(), createBlock(FileList, {\n key: 2,\n path: currentPath.value,\n \"onUpdate:path\": [\n _cache[3] || (_cache[3] = ($event) => currentPath.value = $event),\n _cache[5] || (_cache[5] = ($event) => currentView.value = \"files\")\n ],\n selectedFiles: selectedFiles.value,\n \"onUpdate:selectedFiles\": _cache[4] || (_cache[4] = ($event) => selectedFiles.value = $event),\n allowPickDirectory: __props.allowPickDirectory,\n currentView: currentView.value,\n files: filteredFiles.value,\n multiselect: __props.multiselect,\n loading: unref(isLoading),\n name: viewHeadline.value,\n canPick: __props.canPickFn\n }, null, 8, [\"path\", \"selectedFiles\", \"allowPickDirectory\", \"currentView\", \"files\", \"multiselect\", \"loading\", \"name\", \"canPick\"])) : filterString.value ? (openBlock(), createBlock(unref(NcEmptyContent), {\n key: 3,\n name: unref(t)(\"No matching files\"),\n description: unref(t)(\"No files matching your filter were found.\")\n }, {\n icon: withCtx(() => [\n createVNode(IconFile)\n ]),\n _: 1\n }, 8, [\"name\", \"description\"])) : (openBlock(), createBlock(unref(NcEmptyContent), {\n key: 4,\n name: unref(t)(\"No files in here\"),\n description: noFilesDescription.value\n }, {\n icon: withCtx(() => [\n createVNode(IconFile)\n ]),\n _: 1\n }, 8, [\"name\", \"description\"]))\n ])\n ]),\n _: 1\n }, 8, [\"open\", \"buttons\", \"name\"]);\n };\n }\n});\nconst FilePicker = /* @__PURE__ */ _export_sfc(_sfc_main, [[\"__scopeId\", \"data-v-39182aaf\"]]);\nexport {\n FilePicker as default\n};\n//# sourceMappingURL=FilePicker.mjs.map\n"],"names":["_sfc_main$1","_hoisted_1$1","_hoisted_2","_hoisted_3","_hoisted_4","_sfc_render$1","_ctx","_cache","$props","$setup","$data","$options","openBlock","createElementBlock","mergeProps","$event","createElementVNode","toDisplayString","createCommentVNode","ChevronRight","_export_sfc","_sfc_main","NcActions","NcButton","crumbId","createElementId","open","e","_hoisted_1","_sfc_render","_component_NcButton","resolveComponent","_component_NcActions","_component_ChevronRight","normalizeClass","withModifiers","args","createBlock","createSlots","withCtx","renderSlot","createTextVNode","createVNode","NcBreadcrumb","IconFolder","crumbClass","NcActionButton","NcActionRouter","NcActionLink","debounce","subscribe","unsubscribe","nrCrumbs","hiddenIndices","availableWidth","totalWidth","overflow","i","startIndex","currentIndex","a","b","width","crumb","index","el","isLast","hide","w","path","disabled","crumbs","target","vnode","breadcrumbs","Fragment","child","cloneVNode","breadcrumbsRefs","crumb2","h","to","href","disableDrop","name","propsToForward","element","folderIcon","wrapper","isSlotPopulated","NcBreadcrumbs","queue","PQueue","preloadImage","url","resolve","promise","image","getPreviewURL","node","options","previewUrl","generateUrl","usePreviewURL","previewURL","ref","previewLoaded","watchEffect","toValue","FileType","success","sfc","props","key","val","_sfc_main$e","_hoisted_1$c","_hoisted_2$b","_hoisted_3$a","_hoisted_4$a","_sfc_render$7","IconFile","_sfc_main$d","_hoisted_1$b","_hoisted_2$a","_hoisted_3$9","_hoisted_4$9","_sfc_render$6","IconSortDescending","_sfc_main$c","_hoisted_1$a","_hoisted_2$9","_hoisted_3$8","_hoisted_4$8","_sfc_render$5","IconSortAscending","_sfc_main$b","_hoisted_1$9","_hoisted_2$8","_hoisted_3$7","_hoisted_4$7","_sfc_render$4","fileListIconStyles","_sfc_main$a","defineComponent","__props","fileListIconStyles$1","toRef","computed","isFile","folderDecorationIcon","mdiKey","mdiTagOutline","shareTypes","type","ShareType","mdiLink","mdiAccountPlus","mdiNetworkOutline","mdiAccountGroupOutline","normalizeStyle","unref","NcIconSvgWrapper","_hoisted_1$8","_hoisted_2$7","_hoisted_3$6","_hoisted_4$6","_hoisted_5$1","_hoisted_6$1","_hoisted_7$1","_sfc_main$9","__emit","emit2","timestamp","fileExtension","extname","displayName","isDirectory","isPickable","isNavigatable","Permission","toggleSelected","handleClick","handleKeyDown","event","toHandlers","NcCheckboxRadioSwitch","t","formatFileSize","NcDateTime","FileListRow","_hoisted_1$7","_hoisted_2$6","_hoisted_3$5","_hoisted_4$5","_sfc_main$8","LoadingTableRow","useFilesSettings","filesUserState","loadState","showHiddenFiles","sortFavoritesFirst","cropImagePreviews","onMounted","isPublicShare","logger","data","axios","error","showError","useFilesViews","currentView","convertOrder","order2","filesViewsState","filesViewConfig","recentViewConfig","favoritesViewConfig","currentConfig","sortBy","order","_hoisted_1$6","_hoisted_2$5","_hoisted_3$4","_hoisted_4$4","_hoisted_5","_hoisted_6","_hoisted_7","_hoisted_8","_hoisted_9","_sfc_main$7","mergeModels","useModel","selectedFiles","customSortingConfig","filesAppSorting","sortingConfig","sortByName","sortBySize","sortByModified","toggleSorting","sortedFiles","sortNodes","selectableFiles","file","allSelected","onSelectAll","onNodeSelected","f","onChangeDirectory","dir","skeletonNumber","fileContainer","resize","nextTick","nodes","height","onUnmounted","renderList","FileList","_sfc_main$6","_hoisted_1$5","_hoisted_2$4","_hoisted_3$3","_hoisted_4$3","_sfc_render$3","IconHome","_sfc_main$5","_hoisted_1$4","_hoisted_2$3","_hoisted_3$2","_hoisted_4$2","_sfc_render$2","IconPlus","_sfc_main$4","actionsOpen","newNodeName","nameInput","useTemplateRef","validateInput","input","validity","validateFilename","InvalidFilenameError","InvalidFilenameErrorReason","onSubmit","pathElements","v","elements","NcActionInput","FilePickerBreadcrumbs","_sfc_main$3","_hoisted_1$3","_hoisted_2$2","_hoisted_3$1","_hoisted_4$1","IconClose","_sfc_main$2","_hoisted_1$2","_hoisted_2$1","IconMagnify","useViews","isAnonymous","allViews","mdiFolder","mdiClock","mdiStar","availableViews","id","getCurrentUser","currentViewObject","updateFilterValue","value","NcTextField","NcSelect","view","FilePickerNavigation","getRecentNodes","client","signal","lastTwoWeek","getRecentSearch","result","resultToNode","getNodes","join","defaultRootPath","getDefaultPropfind","nodePath","getFile","useDAVFiles","currentPath","getClient","files","shallowRef","folder","isLoading","abortController","createDirectory","directory","loadDAVFiles","getFavoriteNodes","content","watch","useMimeFilter","allowedMIMETypes","splittedTypes","filter","mime","mimeTypeArray","subtype","emit$1","isOpen","savedPath","navigatedPath","filterString","currentFolder","loadFiles","isHandlingCallback","dialogButtons","button","handleButtonClick","callback","viewHeadline","isSupportedMimeType","filteredFiles","filtered","noFilesDescription","onCreateFolder","emit","handleClose","NcDialog","isCollapsed","NcEmptyContent","FilePicker"],"mappings":"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","x_google_ignoreList":[0,1,2,3,4]} \ No newline at end of file diff --git a/dist/FilePicker-0pVFI2AM.chunk.mjs.map.license b/dist/FilePicker-BXhywAAW.chunk.mjs.map.license similarity index 100% rename from dist/FilePicker-0pVFI2AM.chunk.mjs.map.license rename to dist/FilePicker-BXhywAAW.chunk.mjs.map.license diff --git a/dist/FilesSidebarTab-Bv3AwXFc.chunk.mjs b/dist/FilesSidebarTab-DIgbF1OF.chunk.mjs similarity index 95% rename from dist/FilesSidebarTab-Bv3AwXFc.chunk.mjs rename to dist/FilesSidebarTab-DIgbF1OF.chunk.mjs index e916e156d32e9..ff94c984de7c7 100644 --- a/dist/FilesSidebarTab-Bv3AwXFc.chunk.mjs +++ b/dist/FilesSidebarTab-DIgbF1OF.chunk.mjs @@ -1,4 +1,4 @@ -import{a as H}from"./index-mH69OG7L.chunk.mjs";import{t as y}from"./translation-DoG5ZELJ-WOan4U8V.chunk.mjs";import{v as M}from"./NcAvatar-1KxMUN7V-X_YNB4Fv.chunk.mjs";import{N}from"./logger-D3RVzcfQ-Bt9JRPzn.chunk.mjs";import{N as S}from"./NcEmptyContent-CGAPqk4S-LFG8iXZZ.chunk.mjs";import{_ as f}from"./public-C1mLBHT3.chunk.mjs";import{o as s,f as r,g as I,t as p,h as d,m as h,r as c,af as z,J as O,k as m,F as C,c as _,w as g,B,j as F,y as L,b as $,v as q}from"./Web-DYqXJUev.chunk.mjs";import{C as P,a as v}from"./CommentView-Dwuq398x.chunk.mjs";import{l as b}from"./activity-BZ6xFlZg.chunk.mjs";import{c as j,g as U,D as w}from"./GetComments-2IL7C9Us.chunk.mjs";const E={name:"AlertCircleOutlineIcon",emits:["click"],props:{title:{type:String},fillColor:{type:String,default:"currentColor"},size:{type:Number,default:24}}},Z=["aria-hidden","aria-label"],J=["fill","width","height"],G={d:"M11,15H13V17H11V15M11,7H13V13H11V7M12,2C6.47,2 2,6.5 2,12A10,10 0 0,0 12,22A10,10 0 0,0 22,12A10,10 0 0,0 12,2M12,20A8,8 0 0,1 4,12A8,8 0 0,1 12,4A8,8 0 0,1 20,12A8,8 0 0,1 12,20Z"},K={key:0};function Q(t,o,e,a,i,n){return s(),r("span",h(t.$attrs,{"aria-hidden":e.title?null:"true","aria-label":e.title,class:"material-design-icon alert-circle-outline-icon",role:"img",onClick:o[0]||(o[0]=l=>t.$emit("click",l))}),[(s(),r("svg",{fill:e.fillColor,class:"material-design-icon__svg",width:e.size,height:e.size,viewBox:"0 0 24 24"},[I("path",G,[e.title?(s(),r("title",K,p(e.title),1)):d("",!0)])],8,J))],16,Z)}const W=f(E,[["render",Q]]),X={name:"MessageReplyTextOutlineIcon",emits:["click"],props:{title:{type:String},fillColor:{type:String,default:"currentColor"},size:{type:Number,default:24}}},Y=["aria-hidden","aria-label"],ee=["fill","width","height"],te={d:"M9 11H18V13H9V11M18 7H6V9H18V7M22 4V22L18 18H4C2.9 18 2 17.11 2 16V4C2 2.9 2.9 2 4 2H20C21.1 2 22 2.89 22 4M20 4H4V16H18.83L20 17.17V4Z"},oe={key:0};function se(t,o,e,a,i,n){return s(),r("span",h(t.$attrs,{"aria-hidden":e.title?null:"true","aria-label":e.title,class:"material-design-icon message-reply-text-outline-icon",role:"img",onClick:o[0]||(o[0]=l=>t.$emit("click",l))}),[(s(),r("svg",{fill:e.fillColor,class:"material-design-icon__svg",width:e.size,height:e.size,viewBox:"0 0 24 24"},[I("path",te,[e.title?(s(),r("title",oe,p(e.title),1)):d("",!0)])],8,ee))],16,Y)}const re=f(X,[["render",se]]),ie={name:"RefreshIcon",emits:["click"],props:{title:{type:String},fillColor:{type:String,default:"currentColor"},size:{type:Number,default:24}}},ne=["aria-hidden","aria-label"],ae=["fill","width","height"],le={d:"M17.65,6.35C16.2,4.9 14.21,4 12,4A8,8 0 0,0 4,12A8,8 0 0,0 12,20C15.73,20 18.84,17.45 19.73,14H17.65C16.83,16.33 14.61,18 12,18A6,6 0 0,1 6,12A6,6 0 0,1 12,6C13.66,6 15.14,6.69 16.22,7.78L13,11H20V4L17.65,6.35Z"},ce={key:0};function me(t,o,e,a,i,n){return s(),r("span",h(t.$attrs,{"aria-hidden":e.title?null:"true","aria-label":e.title,class:"material-design-icon refresh-icon",role:"img",onClick:o[0]||(o[0]=l=>t.$emit("click",l))}),[(s(),r("svg",{fill:e.fillColor,class:"material-design-icon__svg",width:e.size,height:e.size,viewBox:"0 0 24 24"},[I("path",le,[e.title?(s(),r("title",ce,p(e.title),1)):d("",!0)])],8,ae))],16,ne)}const de=f(ie,[["render",me]]);function ue(t,o,e){const a=["",t,o].join("/"),i=e.toUTCString();return j.customRequest(a,{method:"PROPPATCH",data:` +import{a as H}from"./index-BQu_HuHB.chunk.mjs";import{t as y}from"./translation-DoG5ZELJ-WOan4U8V.chunk.mjs";import{v as M}from"./NcAvatar-1KxMUN7V-R6Nmwuvb.chunk.mjs";import{N}from"./logger-D3RVzcfQ-BrUWOyzd.chunk.mjs";import{N as S}from"./NcEmptyContent-CGAPqk4S-LFG8iXZZ.chunk.mjs";import{_ as f}from"./public-C1mLBHT3.chunk.mjs";import{o as s,f as r,g as I,t as p,h as d,m as h,r as c,af as z,J as O,k as m,F as C,c as _,w as g,B,j as F,y as L,b as $,v as q}from"./Web-DYqXJUev.chunk.mjs";import{C as P,a as v}from"./CommentView-qR2-hI5y.chunk.mjs";import{l as b}from"./activity-BZ6xFlZg.chunk.mjs";import{c as j,g as U,D as w}from"./GetComments-2IL7C9Us.chunk.mjs";const E={name:"AlertCircleOutlineIcon",emits:["click"],props:{title:{type:String},fillColor:{type:String,default:"currentColor"},size:{type:Number,default:24}}},Z=["aria-hidden","aria-label"],J=["fill","width","height"],G={d:"M11,15H13V17H11V15M11,7H13V13H11V7M12,2C6.47,2 2,6.5 2,12A10,10 0 0,0 12,22A10,10 0 0,0 22,12A10,10 0 0,0 12,2M12,20A8,8 0 0,1 4,12A8,8 0 0,1 12,4A8,8 0 0,1 20,12A8,8 0 0,1 12,20Z"},K={key:0};function Q(t,o,e,a,i,n){return s(),r("span",h(t.$attrs,{"aria-hidden":e.title?null:"true","aria-label":e.title,class:"material-design-icon alert-circle-outline-icon",role:"img",onClick:o[0]||(o[0]=l=>t.$emit("click",l))}),[(s(),r("svg",{fill:e.fillColor,class:"material-design-icon__svg",width:e.size,height:e.size,viewBox:"0 0 24 24"},[I("path",G,[e.title?(s(),r("title",K,p(e.title),1)):d("",!0)])],8,J))],16,Z)}const W=f(E,[["render",Q]]),X={name:"MessageReplyTextOutlineIcon",emits:["click"],props:{title:{type:String},fillColor:{type:String,default:"currentColor"},size:{type:Number,default:24}}},Y=["aria-hidden","aria-label"],ee=["fill","width","height"],te={d:"M9 11H18V13H9V11M18 7H6V9H18V7M22 4V22L18 18H4C2.9 18 2 17.11 2 16V4C2 2.9 2.9 2 4 2H20C21.1 2 22 2.89 22 4M20 4H4V16H18.83L20 17.17V4Z"},oe={key:0};function se(t,o,e,a,i,n){return s(),r("span",h(t.$attrs,{"aria-hidden":e.title?null:"true","aria-label":e.title,class:"material-design-icon message-reply-text-outline-icon",role:"img",onClick:o[0]||(o[0]=l=>t.$emit("click",l))}),[(s(),r("svg",{fill:e.fillColor,class:"material-design-icon__svg",width:e.size,height:e.size,viewBox:"0 0 24 24"},[I("path",te,[e.title?(s(),r("title",oe,p(e.title),1)):d("",!0)])],8,ee))],16,Y)}const re=f(X,[["render",se]]),ie={name:"RefreshIcon",emits:["click"],props:{title:{type:String},fillColor:{type:String,default:"currentColor"},size:{type:Number,default:24}}},ne=["aria-hidden","aria-label"],ae=["fill","width","height"],le={d:"M17.65,6.35C16.2,4.9 14.21,4 12,4A8,8 0 0,0 4,12A8,8 0 0,0 12,20C15.73,20 18.84,17.45 19.73,14H17.65C16.83,16.33 14.61,18 12,18A6,6 0 0,1 6,12A6,6 0 0,1 12,6C13.66,6 15.14,6.69 16.22,7.78L13,11H20V4L17.65,6.35Z"},ce={key:0};function me(t,o,e,a,i,n){return s(),r("span",h(t.$attrs,{"aria-hidden":e.title?null:"true","aria-label":e.title,class:"material-design-icon refresh-icon",role:"img",onClick:o[0]||(o[0]=l=>t.$emit("click",l))}),[(s(),r("svg",{fill:e.fillColor,class:"material-design-icon__svg",width:e.size,height:e.size,viewBox:"0 0 24 24"},[I("path",le,[e.title?(s(),r("title",ce,p(e.title),1)):d("",!0)])],8,ae))],16,ne)}const de=f(ie,[["render",me]]);function ue(t,o,e){const a=["",t,o].join("/"),i=e.toUTCString();return j.customRequest(a,{method:"PROPPATCH",data:` @@ -8,4 +8,4 @@ import{a as H}from"./index-mH69OG7L.chunk.mjs";import{t as y}from"./translation- `})}function pe(t){const o=new AbortController,e=o.signal;return{request:async function(a,i){return await t(a,{signal:e,...i})},abort:()=>o.abort()}}const he={name:"CommentsApp",components:{Comment:v,NcEmptyContent:S,NcButton:N,IconRefresh:de,IconMessageReplyTextOutline:re,IconAlertCircleOutline:W},directives:{elementVisibility:M},mixins:[P],expose:["update"],data(){return{error:"",loading:!1,done:!1,offset:0,comments:[],cancelRequest:()=>{},Comment:v,userData:{}}},computed:{hasComments(){return this.comments.length>0},isFirstLoading(){return this.loading&&this.offset===0}},watch:{resourceId(){this.currentResourceId=this.resourceId}},methods:{t:y,async onVisibilityChange(t){if(t)try{await ue(this.resourceType,this.currentResourceId,new Date)}catch(o){H(o.message||y("comments","Failed to mark comments as read"))}},async update(t){this.currentResourceId=t,this.resetState(),await this.getComments()},onScrollBottomReached(){this.error||this.done||this.loading||this.getComments()},async getComments(){this.cancelRequest("cancel");try{this.loading=!0,this.error="";const{request:t,abort:o}=pe(U);this.cancelRequest=o;const{data:e}=await t({resourceType:this.resourceType,resourceId:this.currentResourceId},{offset:this.offset})||{data:[]};this.logger.debug(`Processed ${e.length} comments`,{comments:e}),e.lengthe.props.id===t);o>-1?this.comments.splice(o,1):b.error("Could not find the deleted comment in the list",{id:t})},resetState(){this.error="",this.loading=!1,this.done=!1,this.offset=0,this.comments=[]}}},ge={key:1},fe={key:2,class:"comments__info icon-loading"},ye={key:3,class:"comments__info"};function Ce(t,o,e,a,i,n){const l=c("Comment"),V=c("IconMessageReplyTextOutline"),k=c("NcEmptyContent"),R=c("IconAlertCircleOutline"),A=c("IconRefresh"),T=c("NcButton"),x=z("element-visibility");return O((s(),r("div",{class:L(["comments",{"icon-loading":n.isFirstLoading}])},[m(l,h(t.editorData,{editor:"",autoComplete:t.autoComplete,resourceType:t.resourceType,userData:i.userData,resourceId:t.currentResourceId,class:"comments__writer",onNew:n.onNewComment}),null,16,["autoComplete","resourceType","userData","resourceId","onNew"]),n.isFirstLoading?d("",!0):(s(),r(C,{key:0},[!n.hasComments&&i.done?(s(),_(k,{key:0,class:"comments__empty",name:n.t("comments","No comments yet, start the conversation!")},{icon:g(()=>[m(V)]),_:1},8,["name"])):(s(),r("ul",ge,[(s(!0),r(C,null,B(i.comments,u=>(s(),_(l,h({key:u.props.id,modelValue:u.props.message,"onUpdate:modelValue":D=>u.props.message=D,tag:"li"},{ref_for:!0},u.props,{autoComplete:t.autoComplete,resourceType:t.resourceType,resourceId:t.currentResourceId,userData:t.genMentionsData(u.props.mentions),class:"comments__list",onDelete:n.onDelete}),null,16,["modelValue","onUpdate:modelValue","autoComplete","resourceType","resourceId","userData","onDelete"]))),128))])),i.loading&&!n.isFirstLoading?(s(),r("div",fe)):n.hasComments&&i.done?(s(),r("div",ye,p(n.t("comments","No more messages")),1)):i.error?(s(),r(C,{key:4},[m(k,{class:"comments__error",name:i.error},{icon:g(()=>[m(R)]),_:1},8,["name"]),m(T,{class:"comments__retry",onClick:n.getComments},{icon:g(()=>[m(A)]),default:g(()=>[F(" "+p(n.t("comments","Retry")),1)]),_:1},8,["onClick"])],64)):d("",!0)],64))],2)),[[x,n.onVisibilityChange]])}const _e=f(he,[["render",Ce],["__scopeId","data-v-2295a278"]]),Ie=$({__name:"FilesSidebarTab",props:{node:{},active:{type:Boolean},folder:{},view:{}},setup(t){const o=t,e=q(()=>o.node?.fileid);return(a,i)=>e.value!==void 0?(s(),_(_e,{key:e.value,resourceId:e.value,resourceType:"files"},null,8,["resourceId"])):d("",!0)}}),He=Object.freeze(Object.defineProperty({__proto__:null,default:Ie},Symbol.toStringTag,{value:"Module"}));export{_e as C,He as F}; -//# sourceMappingURL=FilesSidebarTab-Bv3AwXFc.chunk.mjs.map +//# sourceMappingURL=FilesSidebarTab-DIgbF1OF.chunk.mjs.map diff --git a/dist/FilesSidebarTab-Bv3AwXFc.chunk.mjs.license b/dist/FilesSidebarTab-DIgbF1OF.chunk.mjs.license similarity index 100% rename from dist/FilesSidebarTab-Bv3AwXFc.chunk.mjs.license rename to dist/FilesSidebarTab-DIgbF1OF.chunk.mjs.license diff --git a/dist/FilesSidebarTab-Bv3AwXFc.chunk.mjs.map b/dist/FilesSidebarTab-DIgbF1OF.chunk.mjs.map similarity index 99% rename from dist/FilesSidebarTab-Bv3AwXFc.chunk.mjs.map rename to dist/FilesSidebarTab-DIgbF1OF.chunk.mjs.map index b4ac8698d63e3..a43983aacdbab 100644 --- a/dist/FilesSidebarTab-Bv3AwXFc.chunk.mjs.map +++ b/dist/FilesSidebarTab-DIgbF1OF.chunk.mjs.map @@ -1 +1 @@ -{"version":3,"file":"FilesSidebarTab-Bv3AwXFc.chunk.mjs","sources":["../node_modules/vue-material-design-icons/AlertCircleOutline.vue","../node_modules/vue-material-design-icons/MessageReplyTextOutline.vue","../node_modules/vue-material-design-icons/Refresh.vue","../build/frontend/apps/comments/src/services/ReadComments.ts","../build/frontend/apps/comments/src/utils/cancelableRequest.ts","../build/frontend/apps/comments/src/views/CommentsApp.vue","../build/frontend/apps/comments/src/views/FilesSidebarTab.vue"],"sourcesContent":["\n\n","\n\n","\n\n","/**\n * SPDX-FileCopyrightText: 2023 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport type { Response } from 'webdav'\n\nimport client from './DavClient.ts'\n\n/**\n * Mark comments older than the date timestamp as read\n *\n * @param resourceType the resource type\n * @param resourceId the resource ID\n * @param date the date object\n */\nexport function markCommentsAsRead(\n\tresourceType: string,\n\tresourceId: number,\n\tdate: Date,\n): Promise {\n\tconst resourcePath = ['', resourceType, resourceId].join('/')\n\tconst readMarker = date.toUTCString()\n\n\treturn client.customRequest(resourcePath, {\n\t\tmethod: 'PROPPATCH',\n\t\tdata: `\n\t\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\t\t${readMarker}\n\t\t\t\t\n\t\t\t\n\t\t\t`,\n\t})\n}\n","/**\n * SPDX-FileCopyrightText: 2020 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\n/**\n * Creates a cancelable axios 'request object'.\n *\n * @param request the axios promise request\n * @return\n */\nfunction cancelableRequest(request: (url: string, options?: Record) => Promise) {\n\tconst controller = new AbortController()\n\tconst signal = controller.signal\n\n\t/**\n\t * Execute the request\n\t *\n\t * @param url the url to send the request to\n\t * @param [options] optional config for the request\n\t */\n\tconst fetch = async function(url: string, options?: Record) {\n\t\tconst response = await request(\n\t\t\turl,\n\t\t\t{ signal, ...options },\n\t\t)\n\t\treturn response\n\t}\n\n\treturn {\n\t\trequest: fetch,\n\t\tabort: () => controller.abort(),\n\t}\n}\n\nexport default cancelableRequest\n","\n\n\n\n\n\n\n","\n\n\n\n\n"],"names":["_sfc_main","_hoisted_3","_createElementBlock","_mergeProps","_ctx","$props","_cache","$event","_createElementVNode","_openBlock","markCommentsAsRead","resourceType","resourceId","date","resourcePath","readMarker","client","cancelableRequest","request","controller","signal","url","options","Comment","NcEmptyContent","NcButton","IconRefresh","IconMessageReplyTextOutline","IconAlertCircleOutline","elementVisibility","CommentView","t","isVisible","e","showError","abort","getComments","comments","DEFAULT_LIMIT","comment","error","logger","id","index","_normalizeClass","$options","_createVNode","_component_Comment","$data","_Fragment","_createBlock","_component_NcEmptyContent","_component_IconMessageReplyTextOutline","_hoisted_1","_renderList","_hoisted_2","_toDisplayString","_component_IconAlertCircleOutline","_component_NcButton","_component_IconRefresh","_createTextVNode","props","__props","computed","CommentsApp"],"mappings":"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","x_google_ignoreList":[0,1,2]} \ No newline at end of file +{"version":3,"file":"FilesSidebarTab-DIgbF1OF.chunk.mjs","sources":["../node_modules/vue-material-design-icons/AlertCircleOutline.vue","../node_modules/vue-material-design-icons/MessageReplyTextOutline.vue","../node_modules/vue-material-design-icons/Refresh.vue","../build/frontend/apps/comments/src/services/ReadComments.ts","../build/frontend/apps/comments/src/utils/cancelableRequest.ts","../build/frontend/apps/comments/src/views/CommentsApp.vue","../build/frontend/apps/comments/src/views/FilesSidebarTab.vue"],"sourcesContent":["\n\n","\n\n","\n\n","/**\n * SPDX-FileCopyrightText: 2023 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport type { Response } from 'webdav'\n\nimport client from './DavClient.ts'\n\n/**\n * Mark comments older than the date timestamp as read\n *\n * @param resourceType the resource type\n * @param resourceId the resource ID\n * @param date the date object\n */\nexport function markCommentsAsRead(\n\tresourceType: string,\n\tresourceId: number,\n\tdate: Date,\n): Promise {\n\tconst resourcePath = ['', resourceType, resourceId].join('/')\n\tconst readMarker = date.toUTCString()\n\n\treturn client.customRequest(resourcePath, {\n\t\tmethod: 'PROPPATCH',\n\t\tdata: `\n\t\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\t\t${readMarker}\n\t\t\t\t\n\t\t\t\n\t\t\t`,\n\t})\n}\n","/**\n * SPDX-FileCopyrightText: 2020 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\n/**\n * Creates a cancelable axios 'request object'.\n *\n * @param request the axios promise request\n * @return\n */\nfunction cancelableRequest(request: (url: string, options?: Record) => Promise) {\n\tconst controller = new AbortController()\n\tconst signal = controller.signal\n\n\t/**\n\t * Execute the request\n\t *\n\t * @param url the url to send the request to\n\t * @param [options] optional config for the request\n\t */\n\tconst fetch = async function(url: string, options?: Record) {\n\t\tconst response = await request(\n\t\t\turl,\n\t\t\t{ signal, ...options },\n\t\t)\n\t\treturn response\n\t}\n\n\treturn {\n\t\trequest: fetch,\n\t\tabort: () => controller.abort(),\n\t}\n}\n\nexport default cancelableRequest\n","\n\n\n\n\n\n\n","\n\n\n\n\n"],"names":["_sfc_main","_hoisted_3","_createElementBlock","_mergeProps","_ctx","$props","_cache","$event","_createElementVNode","_openBlock","markCommentsAsRead","resourceType","resourceId","date","resourcePath","readMarker","client","cancelableRequest","request","controller","signal","url","options","Comment","NcEmptyContent","NcButton","IconRefresh","IconMessageReplyTextOutline","IconAlertCircleOutline","elementVisibility","CommentView","t","isVisible","e","showError","abort","getComments","comments","DEFAULT_LIMIT","comment","error","logger","id","index","_normalizeClass","$options","_createVNode","_component_Comment","$data","_Fragment","_createBlock","_component_NcEmptyContent","_component_IconMessageReplyTextOutline","_hoisted_1","_renderList","_hoisted_2","_toDisplayString","_component_IconAlertCircleOutline","_component_NcButton","_component_IconRefresh","_createTextVNode","props","__props","computed","CommentsApp"],"mappings":"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","x_google_ignoreList":[0,1,2]} \ No newline at end of file diff --git a/dist/FilesSidebarTab-Bv3AwXFc.chunk.mjs.map.license b/dist/FilesSidebarTab-DIgbF1OF.chunk.mjs.map.license similarity index 100% rename from dist/FilesSidebarTab-Bv3AwXFc.chunk.mjs.map.license rename to dist/FilesSidebarTab-DIgbF1OF.chunk.mjs.map.license diff --git a/dist/FilesVersionsSidebarTab-DpBNHNa_.chunk.mjs b/dist/FilesVersionsSidebarTab-7HCKzlGh.chunk.mjs similarity index 95% rename from dist/FilesVersionsSidebarTab-DpBNHNa_.chunk.mjs rename to dist/FilesVersionsSidebarTab-7HCKzlGh.chunk.mjs index f65c742a61a3d..66d2220753587 100644 --- a/dist/FilesVersionsSidebarTab-DpBNHNa_.chunk.mjs +++ b/dist/FilesVersionsSidebarTab-7HCKzlGh.chunk.mjs @@ -1,4 +1,4 @@ -import{d as j,a as Y}from"./index-mH69OG7L.chunk.mjs";import{a as B,q as te,g as oe,b as J,h as se,j as ne,n as re,f as N}from"./index-Cp0kcsps.chunk.mjs";import{t as c,b as O}from"./translation-DoG5ZELJ-WOan4U8V.chunk.mjs";import{w as ae,d as le}from"./NcModal-DiDvgcU8-7_SNLMd-.chunk.mjs";import{D as ce,N as de}from"./TrashCanOutline-BU3aqDG_.chunk.mjs";import{f as ue}from"./index-BGv_Bbjs.chunk.mjs";import{_ as D,l as ve}from"./public-C1mLBHT3.chunk.mjs";import{N as I,P as me}from"./PencilOutline-DhyEf5vr.chunk.mjs";import{N as pe,_ as fe}from"./NcDateTime.vue_vue_type_script_setup_true_lang-BJuPH7S7-DKsF6FS9.chunk.mjs";import{N as he}from"./NcAvatar-1KxMUN7V-X_YNB4Fv.chunk.mjs";import{D as ge,N as be,s as ye}from"./TrayArrowDown-Fnpm9Yo9.chunk.mjs";import{o as a,f as m,g as C,t as _,h as y,m as Q,b as P,l as $,c as H,w as h,u as d,j as E,k as S,v as g,D as G,p as we,E as X,i as M,O as ee,z as _e,F as Ce,B as ke}from"./Web-DYqXJUev.chunk.mjs";import{P as Z}from"./folder-29HuacU_-YFFzfmzN.chunk.mjs";import{N as Ve}from"./index-CmDAUQql.chunk.mjs";import{_ as Se}from"./NcTextField.vue_vue_type_script_setup_true_lang-Bx2esFU2-D61trFet.chunk.mjs";import{c as He}from"./index-CkGt55pS.chunk.mjs";import{g as ze}from"./dav-DpOWisxz.chunk.mjs";import"./createElementId-DhjFt1I9-BmyhoOWk.chunk.mjs";import"./mdi-B6W_Xvj-.chunk.mjs";import"./logger-D3RVzcfQ-Bt9JRPzn.chunk.mjs";import"./util-DBjHxD9z.chunk.mjs";import"./ArrowRight-CSlQTlWs.chunk.mjs";import"./colors-Cv9F-jWS-BFJACjQq.chunk.mjs";import"./NcUserStatusIcon-BF5OEQFU-Bh_IaQ_D.chunk.mjs";import"./NcInputField-5Sg6EUP6-DXw-ZWiv.chunk.mjs";import"./index-D5zm-WFT.chunk.mjs";const Le={name:"BackupRestoreIcon",emits:["click"],props:{title:{type:String},fillColor:{type:String,default:"currentColor"},size:{type:Number,default:24}}},Ae=["aria-hidden","aria-label"],$e=["fill","width","height"],xe={d:"M12,3A9,9 0 0,0 3,12H0L4,16L8,12H5A7,7 0 0,1 12,5A7,7 0 0,1 19,12A7,7 0 0,1 12,19C10.5,19 9.09,18.5 7.94,17.7L6.5,19.14C8.04,20.3 9.94,21 12,21A9,9 0 0,0 21,12A9,9 0 0,0 12,3M14,12A2,2 0 0,0 12,10A2,2 0 0,0 10,12A2,2 0 0,0 12,14A2,2 0 0,0 14,12Z"},De={key:0};function Ee(e,t,i,n,v,r){return a(),m("span",Q(e.$attrs,{"aria-hidden":i.title?null:"true","aria-label":i.title,class:"material-design-icon backup-restore-icon",role:"img",onClick:t[0]||(t[0]=l=>e.$emit("click",l))}),[(a(),m("svg",{fill:i.fillColor,class:"material-design-icon__svg",width:i.size,height:i.size,viewBox:"0 0 24 24"},[C("path",xe,[i.title?(a(),m("title",De,_(i.title),1)):y("",!0)])],8,$e))],16,Ae)}const Te=D(Le,[["render",Ee]]),Ne={name:"FileCompareIcon",emits:["click"],props:{title:{type:String},fillColor:{type:String,default:"currentColor"},size:{type:Number,default:24}}},Ie=["aria-hidden","aria-label"],Me=["fill","width","height"],Be={d:"M10,18H6V16H10V18M10,14H6V12H10V14M10,1V2H6C4.89,2 4,2.89 4,4V20A2,2 0 0,0 6,22H10V23H12V1H10M20,8V20C20,21.11 19.11,22 18,22H14V20H18V11H14V9H18.5L14,4.5V2L20,8M16,14H14V12H16V14M16,18H14V16H16V18Z"},Oe={key:0};function Pe(e,t,i,n,v,r){return a(),m("span",Q(e.$attrs,{"aria-hidden":i.title?null:"true","aria-label":i.title,class:"material-design-icon file-compare-icon",role:"img",onClick:t[0]||(t[0]=l=>e.$emit("click",l))}),[(a(),m("svg",{fill:i.fillColor,class:"material-design-icon__svg",width:i.size,height:i.size,viewBox:"0 0 24 24"},[C("path",Be,[i.title?(a(),m("title",Oe,_(i.title),1)):y("",!0)])],8,Me))],16,Ie)}const Re=D(Ne,[["render",Pe]]),Fe={name:"ImageOffOutlineIcon",emits:["click"],props:{title:{type:String},fillColor:{type:String,default:"currentColor"},size:{type:Number,default:24}}},Ue=["aria-hidden","aria-label"],qe=["fill","width","height"],Ke={d:"M22 20.7L3.3 2L2 3.3L3 4.3V19C3 20.1 3.9 21 5 21H19.7L20.7 22L22 20.7M5 19V6.3L12.6 13.9L11.1 15.8L9 13.1L6 17H15.7L17.7 19H5M8.8 5L6.8 3H19C20.1 3 21 3.9 21 5V17.2L19 15.2V5H8.8"},We={key:0};function je(e,t,i,n,v,r){return a(),m("span",Q(e.$attrs,{"aria-hidden":i.title?null:"true","aria-label":i.title,class:"material-design-icon image-off-outline-icon",role:"img",onClick:t[0]||(t[0]=l=>e.$emit("click",l))}),[(a(),m("svg",{fill:i.fillColor,class:"material-design-icon__svg",width:i.size,height:i.size,viewBox:"0 0 24 24"},[C("path",Ke,[i.title?(a(),m("title",We,_(i.title),1)):y("",!0)])],8,qe))],16,Ue)}const Ye=D(Fe,[["render",je]]),Ze={key:0,class:"version__image"},Je=["src"],Ge={key:2,class:"version__image"},Qe={class:"version__info"},Xe=["title"],ei={key:1,class:"version__info","data-cy-files-version-author-name":""},ii={key:0},ti=["title"],oi={class:"version__info version__info__subline"},si=P({__name:"VersionEntry",props:{version:{},node:{},isCurrent:{type:Boolean},isFirstVersion:{type:Boolean},loadPreview:{type:Boolean},canView:{type:Boolean},canCompare:{type:Boolean}},emits:["click","compare","restore","delete","labelUpdateRequest"],setup(e,{emit:t}){const i=e,n=t,v=$(!1),r=$(!1),l=$(ve("core","capabilities",{files:{version_labeling:!1,version_deletion:!1}})),k=g(()=>ue(i.version.size)),f=g(()=>{const p=i.version.label??"";return i.isCurrent?p===""?c("files_versions","Current version"):`${p} (${c("files_versions","Current version")})`:i.isFirstVersion&&p===""?c("files_versions","Initial version"):p}),w=g(()=>!i.version.author||!i.version.authorName?"":i.version.author===B()?.uid?c("files_versions","You"):i.version.authorName??i.version.author),s=g(()=>new Date(i.version.mtime).toLocaleString([O(),O().split("-")[0]],{timeStyle:"long",dateStyle:"long"})),V=g(()=>i.isCurrent?i.node.source:te()+i.version.url),A=g(()=>l.value.files.version_labeling===!0),z=g(()=>l.value.files.version_deletion===!0),F=g(()=>b(i.node,Z.DELETE)),T=g(()=>b(i.node,Z.UPDATE)),U=g(()=>!((i.node.permissions&Z.READ)===0||i.node.attributes["mount-type"]==="shared"&&i.node.attributes["share-attributes"]&&(JSON.parse(i.node.attributes["share-attributes"]).find(p=>p.scope==="permissions"&&p.key==="download")||{})?.value===!1));function q(){n("labelUpdateRequest")}function K(){n("restore",i.version)}async function W(){await G(),await G(),n("delete",i.version)}function o(p){i.canView&&p.preventDefault(),n("click",i.version)}function u(){if(!i.canView)throw new Error("Cannot compare version of this file");n("compare",i.version)}function b(p,L){return(p.permissions&L)!==0}return(p,L)=>(a(),H(d(be),{class:"version",forceDisplayActions:!0,"actions-aria-label":d(c)("files_versions","Actions for version from {versionHumanExplicitDate}",{versionHumanExplicitDate:s.value}),"data-files-versions-version":e.version.fileVersion,href:V.value,onClick:o},{icon:h(()=>[e.loadPreview||v.value?e.version.previewUrl&&!r.value?(a(),m("img",{key:1,src:e.version.previewUrl,alt:"",decoding:"async",fetchpriority:"low",loading:"lazy",class:"version__image",onLoad:L[0]||(L[0]=ie=>v.value=!0),onError:L[1]||(L[1]=ie=>r.value=!0)},null,40,Je)):(a(),m("div",Ge,[S(Ye,{size:20})])):(a(),m("div",Ze))]),name:h(()=>[C("div",Qe,[f.value?(a(),m("div",{key:0,class:"version__info__label","data-cy-files-version-label":"",title:f.value},_(f.value),9,Xe)):y("",!0),w.value?(a(),m("div",ei,[f.value?(a(),m("span",ii,"•")):y("",!0),S(d(he),{class:"avatar",user:e.version.author??void 0,size:20,disableMenu:"",disableTooltip:"",hideStatus:""},null,8,["user"]),C("div",{class:"version__info__author_name",title:w.value},_(w.value),9,ti)])):y("",!0)])]),subname:h(()=>[C("div",oi,[S(d(fe),{class:"version__info__date",relativeTime:"short",timestamp:e.version.mtime},null,8,["timestamp"]),L[2]||(L[2]=C("span",null,"•",-1)),C("span",null,_(k.value),1)])]),actions:h(()=>[A.value&&T.value?(a(),H(d(I),{key:0,"data-cy-files-versions-version-action":"label",closeAfterClick:!0,onClick:q},{icon:h(()=>[S(me,{size:22})]),default:h(()=>[E(" "+_(e.version.label===""?d(c)("files_versions","Name this version"):d(c)("files_versions","Edit version name")),1)]),_:1})):y("",!0),!e.isCurrent&&e.canView&&e.canCompare?(a(),H(d(I),{key:1,"data-cy-files-versions-version-action":"compare",closeAfterClick:!0,onClick:u},{icon:h(()=>[S(Re,{size:22})]),default:h(()=>[E(" "+_(d(c)("files_versions","Compare to current version")),1)]),_:1})):y("",!0),!e.isCurrent&&T.value?(a(),H(d(I),{key:2,"data-cy-files-versions-version-action":"restore",closeAfterClick:!0,onClick:K},{icon:h(()=>[S(Te,{size:22})]),default:h(()=>[E(" "+_(d(c)("files_versions","Restore version")),1)]),_:1})):y("",!0),U.value?(a(),H(d(pe),{key:3,"data-cy-files-versions-version-action":"download",href:V.value,closeAfterClick:!0,download:V.value},{icon:h(()=>[S(ge,{size:22})]),default:h(()=>[E(" "+_(d(c)("files_versions","Download version")),1)]),_:1},8,["href","download"])):y("",!0),!e.isCurrent&&z.value&&F.value?(a(),H(d(I),{key:4,"data-cy-files-versions-version-action":"delete",closeAfterClick:!0,onClick:W},{icon:h(()=>[S(ce,{size:22})]),default:h(()=>[E(" "+_(d(c)("files_versions","Delete version")),1)]),_:1})):y("",!0)]),_:1},8,["actions-aria-label","data-files-versions-version","href"]))}}),ni=D(si,[["__scopeId","data-v-037e7d96"]]),ri={class:"version-label-modal__info"},ai=P({__name:"VersionLabelDialog",props:{open:{type:Boolean,default:!1},label:{type:String,default:""}},emits:["update:open","update:label"],setup(e,{emit:t}){const i=e,n=t,v=we("labelInput"),r=$(""),l=g(()=>{const f=[];return i.label.trim()===""?f.push({label:c("files_versions","Cancel")}):f.push({label:c("files_versions","Remove version name"),type:"reset",variant:"error",callback:()=>{k("")}}),[...f,{label:c("files_versions","Save version name"),icon:ye,type:"submit",variant:"primary"}]});X(()=>{r.value=i.label??""}),X(()=>{i.open&&G(()=>v.value?.focus()),r.value=i.label});function k(f){n("update:label",f)}return(f,w)=>(a(),H(d(Ve),{buttons:l.value,contentClasses:"version-label-modal",isForm:"",open:e.open,size:"normal",name:d(c)("files_versions","Name this version"),"onUpdate:open":w[1]||(w[1]=s=>f.$emit("update:open",s)),onSubmit:w[2]||(w[2]=s=>k(r.value))},{default:h(()=>[S(d(Se),{ref_key:"labelInput",ref:v,modelValue:r.value,"onUpdate:modelValue":w[0]||(w[0]=s=>r.value=s),class:"version-label-modal__input",label:d(c)("files_versions","Version name"),placeholder:d(c)("files_versions","Version name")},null,8,["modelValue","label","placeholder"]),C("p",ri,_(d(c)("files_versions","Named versions are persisted, and excluded from automatic cleanups when your storage quota is full.")),1)]),_:1},8,["buttons","open","name"]))}}),li=D(ai,[["__scopeId","data-v-0955585b"]]),x=oe().setApp("files_version").detectUser().build(),ci=P({name:"VirtualScrolling",props:{sections:{type:Array,required:!0},containerElement:{type:HTMLElement,default:null},useWindow:{type:Boolean,default:!1},headerHeight:{type:Number,default:75},renderDistance:{type:Number,default:.5},bottomBufferRatio:{type:Number,default:2},scrollToKey:{type:String,default:""}},emits:["needContent"],data(){return{scrollPosition:0,containerHeight:0,rowsContainerHeight:0,resizeObserver:null}},computed:{visibleSections(){x.debug("[VirtualScrolling] Computing visible section",{sections:this.sections});const e=this.containerHeight,t=this.scrollPosition,i=t+e;let n=0,v=0;const r=this.sections.map(s=>(v+=this.headerHeight,{...s,rows:s.rows.reduce((V,A)=>{n=v,v+=A.height;let z=0;return vi&&(z=(n-i)/e),z>this.renderDistance?V:[...V,{...A,distance:z}]},[])})).filter(s=>s.rows.length>0),l=r.flatMap(({rows:s})=>s).flatMap(({items:s})=>s),k=this._rowIdToKeyMap;l.forEach(s=>s.key=k[s.id]);const f=l.map(({key:s})=>s).filter(s=>s!==void 0),w=Object.values(k).filter(s=>!f.includes(s));return l.filter(({key:s})=>s===void 0).forEach(s=>s.key=w.pop()??Math.random().toString(36).substr(2)),this._rowIdToKeyMap=l.reduce((s,{id:V,key:A})=>({...s,[`${V}`]:A}),{}),r},totalHeight(){return this.sections.map(e=>this.headerHeight+e.height).reduce((e,t)=>e+t,0)+0},paddingTop(){if(this.visibleSections.length===0)return 0;let e=0;for(const t of this.sections){if(t.key!==this.visibleSections[0].rows[0].sectionKey){e+=this.headerHeight+t.height;continue}for(const i of t.rows){if(i.key===this.visibleSections[0].rows[0].key)return e;e+=i.height}e+=this.headerHeight}return e},rowsContainerStyle(){return{height:`${this.totalHeight}px`,paddingTop:`${this.paddingTop}px`}},isNearBottom(){const e=this.containerHeight*this.bottomBufferRatio;return this.scrollPosition+this.containerHeight>=this.totalHeight-e},container(){return x.debug("[VirtualScrolling] Computing container"),this.containerElement!==null?this.containerElement:this.useWindow?window:this.$refs.container}},watch:{isNearBottom(e){x.debug("[VirtualScrolling] isNearBottom changed",{value:e}),e&&this.$emit("needContent")},visibleSections(){this.isNearBottom&&this.$emit("needContent")},scrollToKey(e){let t=0;for(const i of this.sections){if(i.key!==e){t+=this.headerHeight+i.height;continue}break}x.debug("[VirtualScrolling] Scrolling to",{currentRowTopDistanceFromTop:t}),this.container.scrollTo({top:t,behavior:"smooth"})}},beforeCreate(){this._rowIdToKeyMap={}},mounted(){this.resizeObserver=new ResizeObserver(e=>{for(const t of e){const i=t.contentRect;t.target===this.container&&(this.containerHeight=i.height),t.target.classList.contains("vs-rows-container")&&(this.rowsContainerHeight=i.height)}}),this.useWindow?(window.addEventListener("resize",this.updateContainerSize,{passive:!0}),this.containerHeight=window.innerHeight):this.resizeObserver.observe(this.container),this.resizeObserver.observe(this.$refs.rowsContainer),this.container.addEventListener("scroll",this.updateScrollPosition,{passive:!0})},beforeUnmount(){this.useWindow&&window.removeEventListener("resize",this.updateContainerSize),this.resizeObserver?.disconnect(),this.container.removeEventListener("scroll",this.updateScrollPosition)},methods:{updateScrollPosition(){this._onScrollHandle??=requestAnimationFrame(()=>{this._onScrollHandle=null,this.useWindow?this.scrollPosition=this.container.scrollY:this.scrollPosition=this.container.scrollTop})},updateContainerSize(){this.containerHeight=window.innerHeight}}}),di={key:0,ref:"container",class:"vs-container"};function ui(e,t,i,n,v,r){return!e.useWindow&&e.containerElement===null?(a(),m("div",di,[C("div",{ref:"rowsContainer",class:"vs-rows-container",style:ee(e.rowsContainerStyle)},[M(e.$slots,"default",{visibleSections:e.visibleSections},void 0,!0),M(e.$slots,"loader",{},void 0,!0)],4)],512)):(a(),m("div",{key:1,ref:"rowsContainer",class:"vs-rows-container",style:ee(e.rowsContainerStyle)},[M(e.$slots,"default",{visibleSections:e.visibleSections},void 0,!0),M(e.$slots,"loader",{},void 0,!0)],4))}const vi=D(ci,[["render",ui],["__scopeId","data-v-0a27da21"]]),mi=` +import{d as j,a as Y}from"./index-BQu_HuHB.chunk.mjs";import{a as B,q as te,g as oe,b as J,h as se,j as ne,n as re,f as N}from"./index-Cp0kcsps.chunk.mjs";import{t as c,b as O}from"./translation-DoG5ZELJ-WOan4U8V.chunk.mjs";import{w as ae,d as le}from"./NcModal-DiDvgcU8-Cb_C64qI.chunk.mjs";import{D as ce,N as de}from"./TrashCanOutline-BU3aqDG_.chunk.mjs";import{f as ue}from"./index-BGv_Bbjs.chunk.mjs";import{_ as D,l as ve}from"./public-C1mLBHT3.chunk.mjs";import{N as I,P as me}from"./PencilOutline-CA_ZiZlA.chunk.mjs";import{N as pe,_ as fe}from"./NcDateTime.vue_vue_type_script_setup_true_lang-BJuPH7S7-BThMWOZt.chunk.mjs";import{N as he}from"./NcAvatar-1KxMUN7V-R6Nmwuvb.chunk.mjs";import{D as ge,N as be,s as ye}from"./TrayArrowDown-ZQRTTdRd.chunk.mjs";import{o as a,f as m,g as C,t as _,h as y,m as Q,b as P,l as $,c as H,w as h,u as d,j as E,k as S,v as g,D as G,p as we,E as X,i as M,O as ee,z as _e,F as Ce,B as ke}from"./Web-DYqXJUev.chunk.mjs";import{P as Z}from"./folder-29HuacU_-YFFzfmzN.chunk.mjs";import{N as Ve}from"./index-CHUjKZ5R.chunk.mjs";import{_ as Se}from"./NcTextField.vue_vue_type_script_setup_true_lang-Bx2esFU2-CGsfYqql.chunk.mjs";import{c as He}from"./index-CkGt55pS.chunk.mjs";import{g as ze}from"./dav-DpOWisxz.chunk.mjs";import"./createElementId-DhjFt1I9-BmyhoOWk.chunk.mjs";import"./mdi-BU6wr1QN.chunk.mjs";import"./logger-D3RVzcfQ-BrUWOyzd.chunk.mjs";import"./util-DBjHxD9z.chunk.mjs";import"./ArrowRight-BCzIOZ0l.chunk.mjs";import"./colors-Cv9F-jWS-BFJACjQq.chunk.mjs";import"./NcUserStatusIcon-BF5OEQFU-pJ2xeKbO.chunk.mjs";import"./NcInputField-5Sg6EUP6-CUyzAC2j.chunk.mjs";import"./index-D5zm-WFT.chunk.mjs";const Le={name:"BackupRestoreIcon",emits:["click"],props:{title:{type:String},fillColor:{type:String,default:"currentColor"},size:{type:Number,default:24}}},Ae=["aria-hidden","aria-label"],$e=["fill","width","height"],xe={d:"M12,3A9,9 0 0,0 3,12H0L4,16L8,12H5A7,7 0 0,1 12,5A7,7 0 0,1 19,12A7,7 0 0,1 12,19C10.5,19 9.09,18.5 7.94,17.7L6.5,19.14C8.04,20.3 9.94,21 12,21A9,9 0 0,0 21,12A9,9 0 0,0 12,3M14,12A2,2 0 0,0 12,10A2,2 0 0,0 10,12A2,2 0 0,0 12,14A2,2 0 0,0 14,12Z"},De={key:0};function Ee(e,t,i,n,v,r){return a(),m("span",Q(e.$attrs,{"aria-hidden":i.title?null:"true","aria-label":i.title,class:"material-design-icon backup-restore-icon",role:"img",onClick:t[0]||(t[0]=l=>e.$emit("click",l))}),[(a(),m("svg",{fill:i.fillColor,class:"material-design-icon__svg",width:i.size,height:i.size,viewBox:"0 0 24 24"},[C("path",xe,[i.title?(a(),m("title",De,_(i.title),1)):y("",!0)])],8,$e))],16,Ae)}const Te=D(Le,[["render",Ee]]),Ne={name:"FileCompareIcon",emits:["click"],props:{title:{type:String},fillColor:{type:String,default:"currentColor"},size:{type:Number,default:24}}},Ie=["aria-hidden","aria-label"],Me=["fill","width","height"],Be={d:"M10,18H6V16H10V18M10,14H6V12H10V14M10,1V2H6C4.89,2 4,2.89 4,4V20A2,2 0 0,0 6,22H10V23H12V1H10M20,8V20C20,21.11 19.11,22 18,22H14V20H18V11H14V9H18.5L14,4.5V2L20,8M16,14H14V12H16V14M16,18H14V16H16V18Z"},Oe={key:0};function Pe(e,t,i,n,v,r){return a(),m("span",Q(e.$attrs,{"aria-hidden":i.title?null:"true","aria-label":i.title,class:"material-design-icon file-compare-icon",role:"img",onClick:t[0]||(t[0]=l=>e.$emit("click",l))}),[(a(),m("svg",{fill:i.fillColor,class:"material-design-icon__svg",width:i.size,height:i.size,viewBox:"0 0 24 24"},[C("path",Be,[i.title?(a(),m("title",Oe,_(i.title),1)):y("",!0)])],8,Me))],16,Ie)}const Re=D(Ne,[["render",Pe]]),Fe={name:"ImageOffOutlineIcon",emits:["click"],props:{title:{type:String},fillColor:{type:String,default:"currentColor"},size:{type:Number,default:24}}},Ue=["aria-hidden","aria-label"],qe=["fill","width","height"],Ke={d:"M22 20.7L3.3 2L2 3.3L3 4.3V19C3 20.1 3.9 21 5 21H19.7L20.7 22L22 20.7M5 19V6.3L12.6 13.9L11.1 15.8L9 13.1L6 17H15.7L17.7 19H5M8.8 5L6.8 3H19C20.1 3 21 3.9 21 5V17.2L19 15.2V5H8.8"},We={key:0};function je(e,t,i,n,v,r){return a(),m("span",Q(e.$attrs,{"aria-hidden":i.title?null:"true","aria-label":i.title,class:"material-design-icon image-off-outline-icon",role:"img",onClick:t[0]||(t[0]=l=>e.$emit("click",l))}),[(a(),m("svg",{fill:i.fillColor,class:"material-design-icon__svg",width:i.size,height:i.size,viewBox:"0 0 24 24"},[C("path",Ke,[i.title?(a(),m("title",We,_(i.title),1)):y("",!0)])],8,qe))],16,Ue)}const Ye=D(Fe,[["render",je]]),Ze={key:0,class:"version__image"},Je=["src"],Ge={key:2,class:"version__image"},Qe={class:"version__info"},Xe=["title"],ei={key:1,class:"version__info","data-cy-files-version-author-name":""},ii={key:0},ti=["title"],oi={class:"version__info version__info__subline"},si=P({__name:"VersionEntry",props:{version:{},node:{},isCurrent:{type:Boolean},isFirstVersion:{type:Boolean},loadPreview:{type:Boolean},canView:{type:Boolean},canCompare:{type:Boolean}},emits:["click","compare","restore","delete","labelUpdateRequest"],setup(e,{emit:t}){const i=e,n=t,v=$(!1),r=$(!1),l=$(ve("core","capabilities",{files:{version_labeling:!1,version_deletion:!1}})),k=g(()=>ue(i.version.size)),f=g(()=>{const p=i.version.label??"";return i.isCurrent?p===""?c("files_versions","Current version"):`${p} (${c("files_versions","Current version")})`:i.isFirstVersion&&p===""?c("files_versions","Initial version"):p}),w=g(()=>!i.version.author||!i.version.authorName?"":i.version.author===B()?.uid?c("files_versions","You"):i.version.authorName??i.version.author),s=g(()=>new Date(i.version.mtime).toLocaleString([O(),O().split("-")[0]],{timeStyle:"long",dateStyle:"long"})),V=g(()=>i.isCurrent?i.node.source:te()+i.version.url),A=g(()=>l.value.files.version_labeling===!0),z=g(()=>l.value.files.version_deletion===!0),F=g(()=>b(i.node,Z.DELETE)),T=g(()=>b(i.node,Z.UPDATE)),U=g(()=>!((i.node.permissions&Z.READ)===0||i.node.attributes["mount-type"]==="shared"&&i.node.attributes["share-attributes"]&&(JSON.parse(i.node.attributes["share-attributes"]).find(p=>p.scope==="permissions"&&p.key==="download")||{})?.value===!1));function q(){n("labelUpdateRequest")}function K(){n("restore",i.version)}async function W(){await G(),await G(),n("delete",i.version)}function o(p){i.canView&&p.preventDefault(),n("click",i.version)}function u(){if(!i.canView)throw new Error("Cannot compare version of this file");n("compare",i.version)}function b(p,L){return(p.permissions&L)!==0}return(p,L)=>(a(),H(d(be),{class:"version",forceDisplayActions:!0,"actions-aria-label":d(c)("files_versions","Actions for version from {versionHumanExplicitDate}",{versionHumanExplicitDate:s.value}),"data-files-versions-version":e.version.fileVersion,href:V.value,onClick:o},{icon:h(()=>[e.loadPreview||v.value?e.version.previewUrl&&!r.value?(a(),m("img",{key:1,src:e.version.previewUrl,alt:"",decoding:"async",fetchpriority:"low",loading:"lazy",class:"version__image",onLoad:L[0]||(L[0]=ie=>v.value=!0),onError:L[1]||(L[1]=ie=>r.value=!0)},null,40,Je)):(a(),m("div",Ge,[S(Ye,{size:20})])):(a(),m("div",Ze))]),name:h(()=>[C("div",Qe,[f.value?(a(),m("div",{key:0,class:"version__info__label","data-cy-files-version-label":"",title:f.value},_(f.value),9,Xe)):y("",!0),w.value?(a(),m("div",ei,[f.value?(a(),m("span",ii,"•")):y("",!0),S(d(he),{class:"avatar",user:e.version.author??void 0,size:20,disableMenu:"",disableTooltip:"",hideStatus:""},null,8,["user"]),C("div",{class:"version__info__author_name",title:w.value},_(w.value),9,ti)])):y("",!0)])]),subname:h(()=>[C("div",oi,[S(d(fe),{class:"version__info__date",relativeTime:"short",timestamp:e.version.mtime},null,8,["timestamp"]),L[2]||(L[2]=C("span",null,"•",-1)),C("span",null,_(k.value),1)])]),actions:h(()=>[A.value&&T.value?(a(),H(d(I),{key:0,"data-cy-files-versions-version-action":"label",closeAfterClick:!0,onClick:q},{icon:h(()=>[S(me,{size:22})]),default:h(()=>[E(" "+_(e.version.label===""?d(c)("files_versions","Name this version"):d(c)("files_versions","Edit version name")),1)]),_:1})):y("",!0),!e.isCurrent&&e.canView&&e.canCompare?(a(),H(d(I),{key:1,"data-cy-files-versions-version-action":"compare",closeAfterClick:!0,onClick:u},{icon:h(()=>[S(Re,{size:22})]),default:h(()=>[E(" "+_(d(c)("files_versions","Compare to current version")),1)]),_:1})):y("",!0),!e.isCurrent&&T.value?(a(),H(d(I),{key:2,"data-cy-files-versions-version-action":"restore",closeAfterClick:!0,onClick:K},{icon:h(()=>[S(Te,{size:22})]),default:h(()=>[E(" "+_(d(c)("files_versions","Restore version")),1)]),_:1})):y("",!0),U.value?(a(),H(d(pe),{key:3,"data-cy-files-versions-version-action":"download",href:V.value,closeAfterClick:!0,download:V.value},{icon:h(()=>[S(ge,{size:22})]),default:h(()=>[E(" "+_(d(c)("files_versions","Download version")),1)]),_:1},8,["href","download"])):y("",!0),!e.isCurrent&&z.value&&F.value?(a(),H(d(I),{key:4,"data-cy-files-versions-version-action":"delete",closeAfterClick:!0,onClick:W},{icon:h(()=>[S(ce,{size:22})]),default:h(()=>[E(" "+_(d(c)("files_versions","Delete version")),1)]),_:1})):y("",!0)]),_:1},8,["actions-aria-label","data-files-versions-version","href"]))}}),ni=D(si,[["__scopeId","data-v-037e7d96"]]),ri={class:"version-label-modal__info"},ai=P({__name:"VersionLabelDialog",props:{open:{type:Boolean,default:!1},label:{type:String,default:""}},emits:["update:open","update:label"],setup(e,{emit:t}){const i=e,n=t,v=we("labelInput"),r=$(""),l=g(()=>{const f=[];return i.label.trim()===""?f.push({label:c("files_versions","Cancel")}):f.push({label:c("files_versions","Remove version name"),type:"reset",variant:"error",callback:()=>{k("")}}),[...f,{label:c("files_versions","Save version name"),icon:ye,type:"submit",variant:"primary"}]});X(()=>{r.value=i.label??""}),X(()=>{i.open&&G(()=>v.value?.focus()),r.value=i.label});function k(f){n("update:label",f)}return(f,w)=>(a(),H(d(Ve),{buttons:l.value,contentClasses:"version-label-modal",isForm:"",open:e.open,size:"normal",name:d(c)("files_versions","Name this version"),"onUpdate:open":w[1]||(w[1]=s=>f.$emit("update:open",s)),onSubmit:w[2]||(w[2]=s=>k(r.value))},{default:h(()=>[S(d(Se),{ref_key:"labelInput",ref:v,modelValue:r.value,"onUpdate:modelValue":w[0]||(w[0]=s=>r.value=s),class:"version-label-modal__input",label:d(c)("files_versions","Version name"),placeholder:d(c)("files_versions","Version name")},null,8,["modelValue","label","placeholder"]),C("p",ri,_(d(c)("files_versions","Named versions are persisted, and excluded from automatic cleanups when your storage quota is full.")),1)]),_:1},8,["buttons","open","name"]))}}),li=D(ai,[["__scopeId","data-v-0955585b"]]),x=oe().setApp("files_version").detectUser().build(),ci=P({name:"VirtualScrolling",props:{sections:{type:Array,required:!0},containerElement:{type:HTMLElement,default:null},useWindow:{type:Boolean,default:!1},headerHeight:{type:Number,default:75},renderDistance:{type:Number,default:.5},bottomBufferRatio:{type:Number,default:2},scrollToKey:{type:String,default:""}},emits:["needContent"],data(){return{scrollPosition:0,containerHeight:0,rowsContainerHeight:0,resizeObserver:null}},computed:{visibleSections(){x.debug("[VirtualScrolling] Computing visible section",{sections:this.sections});const e=this.containerHeight,t=this.scrollPosition,i=t+e;let n=0,v=0;const r=this.sections.map(s=>(v+=this.headerHeight,{...s,rows:s.rows.reduce((V,A)=>{n=v,v+=A.height;let z=0;return vi&&(z=(n-i)/e),z>this.renderDistance?V:[...V,{...A,distance:z}]},[])})).filter(s=>s.rows.length>0),l=r.flatMap(({rows:s})=>s).flatMap(({items:s})=>s),k=this._rowIdToKeyMap;l.forEach(s=>s.key=k[s.id]);const f=l.map(({key:s})=>s).filter(s=>s!==void 0),w=Object.values(k).filter(s=>!f.includes(s));return l.filter(({key:s})=>s===void 0).forEach(s=>s.key=w.pop()??Math.random().toString(36).substr(2)),this._rowIdToKeyMap=l.reduce((s,{id:V,key:A})=>({...s,[`${V}`]:A}),{}),r},totalHeight(){return this.sections.map(e=>this.headerHeight+e.height).reduce((e,t)=>e+t,0)+0},paddingTop(){if(this.visibleSections.length===0)return 0;let e=0;for(const t of this.sections){if(t.key!==this.visibleSections[0].rows[0].sectionKey){e+=this.headerHeight+t.height;continue}for(const i of t.rows){if(i.key===this.visibleSections[0].rows[0].key)return e;e+=i.height}e+=this.headerHeight}return e},rowsContainerStyle(){return{height:`${this.totalHeight}px`,paddingTop:`${this.paddingTop}px`}},isNearBottom(){const e=this.containerHeight*this.bottomBufferRatio;return this.scrollPosition+this.containerHeight>=this.totalHeight-e},container(){return x.debug("[VirtualScrolling] Computing container"),this.containerElement!==null?this.containerElement:this.useWindow?window:this.$refs.container}},watch:{isNearBottom(e){x.debug("[VirtualScrolling] isNearBottom changed",{value:e}),e&&this.$emit("needContent")},visibleSections(){this.isNearBottom&&this.$emit("needContent")},scrollToKey(e){let t=0;for(const i of this.sections){if(i.key!==e){t+=this.headerHeight+i.height;continue}break}x.debug("[VirtualScrolling] Scrolling to",{currentRowTopDistanceFromTop:t}),this.container.scrollTo({top:t,behavior:"smooth"})}},beforeCreate(){this._rowIdToKeyMap={}},mounted(){this.resizeObserver=new ResizeObserver(e=>{for(const t of e){const i=t.contentRect;t.target===this.container&&(this.containerHeight=i.height),t.target.classList.contains("vs-rows-container")&&(this.rowsContainerHeight=i.height)}}),this.useWindow?(window.addEventListener("resize",this.updateContainerSize,{passive:!0}),this.containerHeight=window.innerHeight):this.resizeObserver.observe(this.container),this.resizeObserver.observe(this.$refs.rowsContainer),this.container.addEventListener("scroll",this.updateScrollPosition,{passive:!0})},beforeUnmount(){this.useWindow&&window.removeEventListener("resize",this.updateContainerSize),this.resizeObserver?.disconnect(),this.container.removeEventListener("scroll",this.updateScrollPosition)},methods:{updateScrollPosition(){this._onScrollHandle??=requestAnimationFrame(()=>{this._onScrollHandle=null,this.useWindow?this.scrollPosition=this.container.scrollY:this.scrollPosition=this.container.scrollTop})},updateContainerSize(){this.containerHeight=window.innerHeight}}}),di={key:0,ref:"container",class:"vs-container"};function ui(e,t,i,n,v,r){return!e.useWindow&&e.containerElement===null?(a(),m("div",di,[C("div",{ref:"rowsContainer",class:"vs-rows-container",style:ee(e.rowsContainerStyle)},[M(e.$slots,"default",{visibleSections:e.visibleSections},void 0,!0),M(e.$slots,"loader",{},void 0,!0)],4)],512)):(a(),m("div",{key:1,ref:"rowsContainer",class:"vs-rows-container",style:ee(e.rowsContainerStyle)},[M(e.$slots,"default",{visibleSections:e.visibleSections},void 0,!0),M(e.$slots,"loader",{},void 0,!0)],4))}const vi=D(ci,[["render",ui],["__scopeId","data-v-0a27da21"]]),mi=` `})}async function bi(e){await R.deleteFile(e.filename)}const yi={key:0,class:"versions-tab__container"},wi=["aria-label"],ji=P({__name:"FilesVersionsSidebarTab",props:{active:{type:Boolean},node:{},folder:{},view:{}},setup(e){const t=e,i=le(),n=$([]),v=$(!1),r=$(!1),l=$(null),k=g(()=>t.node?.mtime?.getTime()??0),f=g(()=>[...n.value].sort((o,u)=>t.node?o.mtime===t.node.mtime?.getTime()?-1:u.mtime===t.node.mtime?.getTime()?1:u.mtime-o.mtime:0)),w=g(()=>[{key:"versions",rows:f.value.map(o=>({key:o.mtime.toString(),height:68,sectionKey:"versions",items:[{id:o.mtime.toString(),version:o}]})),height:68*f.value.length}]),s=g(()=>n.value.map(o=>o.mtime).reduce((o,u)=>Math.min(o,u))),V=g(()=>t.node?window.OCA.Viewer?.mimetypes?.includes(t.node?.mime):!1),A=g(()=>!i.value&&window.OCA.Viewer?.mimetypesCompare?.includes(t.node?.mime));_e(()=>t.node.id,z,{immediate:!0}),ae(k,z,{debounce:600});async function z(){try{v.value=!0,n.value=await pi(t.node)}finally{v.value=!1}}async function F(o){if(!t.node)return;const u=t.node.clone();u.attributes.etag=o.etag,u.size=o.size,u.mtime=new Date(o.mtime);const b={preventDefault:!1,node:u,version:o};if(N("files_versions:restore:requested",b),!b.preventDefault)try{await fi(o),o.label?j(c("files_versions",`${o.label} restored`)):o.mtime===s.value?j(c("files_versions","Initial version restored")):j(c("files_versions","Version restored")),N("files:node:updated",u),N("files_versions:restore:restored",{node:u,version:o})}catch{Y(c("files_versions","Could not restore version")),N("files_versions:restore:failed",o)}}function T(o){r.value=!0,l.value=o}async function U(o){if(l.value===null)throw new Error("editedVersion should be set at that point");const u=l.value.label;l.value.label=o,r.value=!1;try{await gi(l.value,o),l.value=null}catch(b){l.value.label=u,Y(c("files_versions","Could not set version label")),x.error("Could not set version label",{exception:b})}}async function q(o){const u=n.value.indexOf(o);n.value.splice(u,1);try{await bi(o)}catch{n.value.push(o),Y(c("files_versions","Could not delete version"))}}function K(o){if(t.node!==null){if(o.mtime===t.node?.mtime?.getTime()){window.OCA.Viewer.open({path:t.node.path});return}window.OCA.Viewer.open({fileInfo:{...o,filename:o.filename,previewUrl:void 0},enableSidebar:!1})}}function W(o){const u=n.value.map(b=>({...b,previewUrl:void 0}));window.OCA.Viewer.compare({path:t.node.path},u.find(b=>b.source===o.source))}return(o,u)=>e.node?(a(),m("div",yi,[S(vi,{sections:w.value,headerHeight:0},{default:h(({visibleSections:b})=>[C("ul",{"aria-label":d(c)("files_versions","File versions"),"data-files-versions-versions-list":""},[b.length===1?(a(!0),m(Ce,{key:0},ke(b[0].rows,p=>(a(),H(ni,{key:p.items[0].version.mtime,canView:V.value,canCompare:A.value,loadPreview:e.active,version:p.items[0].version,node:e.node,isCurrent:p.items[0].version.mtime===k.value,isFirstVersion:p.items[0].version.mtime===s.value,onClick:K,onCompare:W,onRestore:F,onLabelUpdateRequest:L=>T(p.items[0].version),onDelete:q},null,8,["canView","canCompare","loadPreview","version","node","isCurrent","isFirstVersion","onLabelUpdateRequest"]))),128)):y("",!0)],8,wi)]),loader:h(()=>[v.value?(a(),H(d(de),{key:0,class:"files-list-viewer__loader"})):y("",!0)]),_:1},8,["sections"]),l.value?(a(),H(li,{key:0,open:r.value,"onUpdate:open":u[0]||(u[0]=b=>r.value=b),label:l.value.label,"onUpdate:label":U},null,8,["open","label"])):y("",!0)])):y("",!0)}});export{ji as default}; -//# sourceMappingURL=FilesVersionsSidebarTab-DpBNHNa_.chunk.mjs.map +//# sourceMappingURL=FilesVersionsSidebarTab-7HCKzlGh.chunk.mjs.map diff --git a/dist/FilesVersionsSidebarTab-DpBNHNa_.chunk.mjs.license b/dist/FilesVersionsSidebarTab-7HCKzlGh.chunk.mjs.license similarity index 100% rename from dist/FilesVersionsSidebarTab-DpBNHNa_.chunk.mjs.license rename to dist/FilesVersionsSidebarTab-7HCKzlGh.chunk.mjs.license diff --git a/dist/FilesVersionsSidebarTab-DpBNHNa_.chunk.mjs.map b/dist/FilesVersionsSidebarTab-7HCKzlGh.chunk.mjs.map similarity index 99% rename from dist/FilesVersionsSidebarTab-DpBNHNa_.chunk.mjs.map rename to dist/FilesVersionsSidebarTab-7HCKzlGh.chunk.mjs.map index 226f6a036459f..d458912b85376 100644 --- a/dist/FilesVersionsSidebarTab-DpBNHNa_.chunk.mjs.map +++ b/dist/FilesVersionsSidebarTab-7HCKzlGh.chunk.mjs.map @@ -1 +1 @@ -{"version":3,"file":"FilesVersionsSidebarTab-DpBNHNa_.chunk.mjs","sources":["../node_modules/vue-material-design-icons/BackupRestore.vue","../node_modules/vue-material-design-icons/FileCompare.vue","../node_modules/vue-material-design-icons/ImageOffOutline.vue","../build/frontend/apps/files_versions/src/components/VersionEntry.vue","../build/frontend/apps/files_versions/src/components/VersionLabelDialog.vue","../build/frontend/apps/files_versions/src/utils/logger.ts","../build/frontend/apps/files_versions/src/components/VirtualScrolling.vue","../build/frontend/apps/files_versions/src/utils/davRequest.ts","../build/frontend/apps/files_versions/src/utils/versions.ts","../build/frontend/apps/files_versions/src/views/FilesVersionsSidebarTab.vue"],"sourcesContent":["\n\n","\n\n","\n\n","\n\n\n\n\n\n","\n\n\n\n\n\n","/**\n * SPDX-FileCopyrightText: 2022 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport { getLoggerBuilder } from '@nextcloud/logger'\n\nexport default getLoggerBuilder()\n\t.setApp('files_version')\n\t.detectUser()\n\t.build()\n","\n\n\n\n\n\n","/**\n * SPDX-FileCopyrightText: 2019 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nexport default `\n\n\t\n\t\t\n\t\t\n\t\t\n\t\t\n\t\t\n\t\t\n\t\t\n\t\n`\n","/*!\n * SPDX-FileCopyrightText: 2022 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport type { INode } from '@nextcloud/files'\nimport type { FileStat, ResponseDataDetailed } from 'webdav'\n\nimport { getCurrentUser } from '@nextcloud/auth'\nimport axios from '@nextcloud/axios'\nimport { getClient } from '@nextcloud/files/dav'\nimport { getCanonicalLocale } from '@nextcloud/l10n'\nimport { encodePath, join } from '@nextcloud/paths'\nimport { generateRemoteUrl, generateUrl } from '@nextcloud/router'\nimport davRequest from '../utils/davRequest.ts'\nimport logger from '../utils/logger.ts'\n\nexport interface Version {\n\tfileId: string // The id of the file associated to the version.\n\tlabel: string // 'Current version' or ''\n\tauthor: string | null // UID for the author of the version\n\tauthorName: string | null // Display name of the author\n\tfilename: string // File name relative to the version DAV endpoint\n\tbasename: string // A base name generated from the mtime\n\tmime: string // Empty for the current version, else the actual mime type of the version\n\tetag: string // Empty for the current version, else the actual mime type of the version\n\tsize: number // File size in bytes\n\ttype: string // 'file'\n\tmtime: number // Version creation date as a timestamp\n\tpermissions: string // Only readable: 'R'\n\tpreviewUrl: string // Preview URL of the version\n\turl: string // Download URL of the version\n\tsource: string // The WebDAV endpoint of the resource\n\tfileVersion: string | null // The version id, null for the current version\n}\n\nconst client = getClient()\n\n/**\n * Get file versions for a given node\n *\n * @param node - The node to fetch versions for\n */\nexport async function fetchVersions(node: INode): Promise {\n\tconst path = `/versions/${getCurrentUser()?.uid}/versions/${node.fileid}`\n\n\ttry {\n\t\tconst response = await client.getDirectoryContents(path, {\n\t\t\tdata: davRequest,\n\t\t\tdetails: true,\n\t\t}) as ResponseDataDetailed\n\n\t\tconst versions = response.data\n\t\t\t// Filter out root\n\t\t\t.filter(({ mime }) => mime !== '')\n\t\t\t.map((version) => formatVersion(version as Required, node))\n\n\t\tconst authorIds = new Set(versions.map((version) => String(version.author)))\n\t\tconst authors = await axios.post(generateUrl('/displaynames'), { users: [...authorIds] })\n\n\t\tfor (const version of versions) {\n\t\t\tconst author = authors.data.users[version.author ?? '']\n\t\t\tif (author) {\n\t\t\t\tversion.authorName = author\n\t\t\t}\n\t\t}\n\n\t\treturn versions\n\t} catch (exception) {\n\t\tlogger.error('Could not fetch version', { exception })\n\t\tthrow exception\n\t}\n}\n\n/**\n * Restore the given version\n *\n * @param version - The version to restore\n */\nexport async function restoreVersion(version: Version) {\n\ttry {\n\t\tlogger.debug('Restoring version', { url: version.url })\n\t\tawait client.moveFile(\n\t\t\t`/versions/${getCurrentUser()?.uid}/versions/${version.fileId}/${version.fileVersion}`,\n\t\t\t`/versions/${getCurrentUser()?.uid}/restore/target`,\n\t\t)\n\t} catch (exception) {\n\t\tlogger.error('Could not restore version', { exception })\n\t\tthrow exception\n\t}\n}\n\n/**\n * Format version\n *\n * @param version - The version data from WebDAV\n * @param node - The original node\n */\nfunction formatVersion(version: Required, node: INode): Version {\n\tconst mtime = Date.parse(version.lastmod)\n\n\tlet previewUrl: string\n\tif (mtime === node.mtime?.getTime()) { // Version is the current one\n\t\tpreviewUrl = generateUrl('/core/preview?fileId={fileId}&c={fileEtag}&x=250&y=250&forceIcon=0&a=0&forceIcon=1&mimeFallback=1', {\n\t\t\tfileId: node.id,\n\t\t\tfileEtag: node.attributes.etag,\n\t\t})\n\t} else {\n\t\tpreviewUrl = generateUrl('/apps/files_versions/preview?file={file}&version={fileVersion}&mimeFallback=1', {\n\t\t\tfile: node.path,\n\t\t\tfileVersion: version.basename,\n\t\t})\n\t}\n\n\treturn {\n\t\tfileId: node.id!,\n\t\t// If version-label is defined make sure it is a string (prevent issue if the label is a number an PHP returns a number then)\n\t\tlabel: version.props['version-label'] ? String(version.props['version-label']) : '',\n\t\tauthor: version.props['version-author'] ? String(version.props['version-author']) : null,\n\t\tauthorName: null,\n\t\tfilename: version.filename,\n\t\tbasename: new Date(mtime).toLocaleString(\n\t\t\t[getCanonicalLocale(), getCanonicalLocale().split('-')[0]!],\n\t\t\t{\n\t\t\t\ttimeStyle: 'long',\n\t\t\t\tdateStyle: 'medium',\n\t\t\t},\n\t\t),\n\t\tmime: version.mime,\n\t\tetag: `${version.props.getetag}`,\n\t\tsize: version.size,\n\t\ttype: version.type,\n\t\tmtime,\n\t\tpermissions: 'R',\n\t\tpreviewUrl,\n\t\turl: join('/remote.php/dav', version.filename),\n\t\tsource: generateRemoteUrl('dav') + encodePath(version.filename),\n\t\tfileVersion: version.basename,\n\t}\n}\n\n/**\n * Set version label\n *\n * @param version - The version to set the label for\n * @param newLabel - The new label\n */\nexport async function setVersionLabel(version: Version, newLabel: string) {\n\treturn await client.customRequest(\n\t\tversion.filename,\n\t\t{\n\t\t\tmethod: 'PROPPATCH',\n\t\t\tdata: `\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t${newLabel}\n\t\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t`,\n\t\t},\n\t)\n}\n\n/**\n * Delete version\n *\n * @param version - The version to delete\n */\nexport async function deleteVersion(version: Version) {\n\tawait client.deleteFile(version.filename)\n}\n","\n\n\n\n\n\n"],"names":["_sfc_main","_hoisted_3","_createElementBlock","_mergeProps","_ctx","$props","_cache","$event","_createElementVNode","_openBlock","props","__props","emit","__emit","previewLoaded","ref","previewErrored","capabilities","loadState","humanReadableSize","computed","formatFileSize","versionLabel","label","t","versionAuthor","getCurrentUser","versionHumanExplicitDate","getCanonicalLocale","downloadURL","getRootUrl","enableLabeling","enableDeletion","hasDeletePermissions","hasPermission","Permission","hasUpdatePermissions","isDownloadable","attribute","labelUpdate","restoreVersion","deleteVersion","nextTick","click","event","compareVersion","node","permission","_createBlock","_unref","NcListItem","_createVNode","ImageOffOutline","_hoisted_1","_hoisted_4","_hoisted_5","_hoisted_6","NcAvatar","_hoisted_8","_hoisted_9","NcDateTime","NcActionButton","Pencil","_createTextVNode","FileCompare","BackupRestore","NcActionLink","Download","Delete","labelInput","useTemplateRef","internalLabel","dialogButtons","buttons","setVersionLabel","svgCheck","watchEffect","NcDialog","$emit","NcTextField","_toDisplayString","logger","getLoggerBuilder","_sfc_main$1","defineComponent","containerHeight","containerTop","containerBottom","currentRowTop","currentRowBottom","visibleSections","section","visibleRows","row","distance","visibleItems","rows","items","rowIdToKeyMap","item","usedTokens","key","unusedTokens","finalMapping","id","totalHeight","sectionHeight","paddingTop","buffer","value","currentRowTopDistanceFromTop","entries","entry","cr","_normalizeStyle","_renderSlot","davRequest","client","getClient","fetchVersions","path","versions","mime","version","formatVersion","authorIds","authors","axios","generateUrl","author","exception","mtime","previewUrl","join","generateRemoteUrl","encodePath","newLabel","isMobile","useIsMobile","loading","showVersionLabelForm","editedVersion","currentVersionMtime","orderedVersions","a","b","sections","initialVersionMtime","canView","canCompare","watch","loadVersions","watchDebounced","handleRestore","restoredNode","restoreStartedEventState","showSuccess","showError","handleLabelUpdateRequest","handleLabelUpdate","oldLabel","handleDelete","index","openVersion","_versions","v","VirtualScrolling","_withCtx","_Fragment","_renderList","VersionEntry","NcLoadingIcon","VersionLabelDialog"],"mappings":"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","x_google_ignoreList":[0,1,2]} \ No newline at end of file +{"version":3,"file":"FilesVersionsSidebarTab-7HCKzlGh.chunk.mjs","sources":["../node_modules/vue-material-design-icons/BackupRestore.vue","../node_modules/vue-material-design-icons/FileCompare.vue","../node_modules/vue-material-design-icons/ImageOffOutline.vue","../build/frontend/apps/files_versions/src/components/VersionEntry.vue","../build/frontend/apps/files_versions/src/components/VersionLabelDialog.vue","../build/frontend/apps/files_versions/src/utils/logger.ts","../build/frontend/apps/files_versions/src/components/VirtualScrolling.vue","../build/frontend/apps/files_versions/src/utils/davRequest.ts","../build/frontend/apps/files_versions/src/utils/versions.ts","../build/frontend/apps/files_versions/src/views/FilesVersionsSidebarTab.vue"],"sourcesContent":["\n\n","\n\n","\n\n","\n\n\n\n\n\n","\n\n\n\n\n\n","/**\n * SPDX-FileCopyrightText: 2022 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport { getLoggerBuilder } from '@nextcloud/logger'\n\nexport default getLoggerBuilder()\n\t.setApp('files_version')\n\t.detectUser()\n\t.build()\n","\n\n\n\n\n\n","/**\n * SPDX-FileCopyrightText: 2019 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nexport default `\n\n\t\n\t\t\n\t\t\n\t\t\n\t\t\n\t\t\n\t\t\n\t\t\n\t\n`\n","/*!\n * SPDX-FileCopyrightText: 2022 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport type { INode } from '@nextcloud/files'\nimport type { FileStat, ResponseDataDetailed } from 'webdav'\n\nimport { getCurrentUser } from '@nextcloud/auth'\nimport axios from '@nextcloud/axios'\nimport { getClient } from '@nextcloud/files/dav'\nimport { getCanonicalLocale } from '@nextcloud/l10n'\nimport { encodePath, join } from '@nextcloud/paths'\nimport { generateRemoteUrl, generateUrl } from '@nextcloud/router'\nimport davRequest from '../utils/davRequest.ts'\nimport logger from '../utils/logger.ts'\n\nexport interface Version {\n\tfileId: string // The id of the file associated to the version.\n\tlabel: string // 'Current version' or ''\n\tauthor: string | null // UID for the author of the version\n\tauthorName: string | null // Display name of the author\n\tfilename: string // File name relative to the version DAV endpoint\n\tbasename: string // A base name generated from the mtime\n\tmime: string // Empty for the current version, else the actual mime type of the version\n\tetag: string // Empty for the current version, else the actual mime type of the version\n\tsize: number // File size in bytes\n\ttype: string // 'file'\n\tmtime: number // Version creation date as a timestamp\n\tpermissions: string // Only readable: 'R'\n\tpreviewUrl: string // Preview URL of the version\n\turl: string // Download URL of the version\n\tsource: string // The WebDAV endpoint of the resource\n\tfileVersion: string | null // The version id, null for the current version\n}\n\nconst client = getClient()\n\n/**\n * Get file versions for a given node\n *\n * @param node - The node to fetch versions for\n */\nexport async function fetchVersions(node: INode): Promise {\n\tconst path = `/versions/${getCurrentUser()?.uid}/versions/${node.fileid}`\n\n\ttry {\n\t\tconst response = await client.getDirectoryContents(path, {\n\t\t\tdata: davRequest,\n\t\t\tdetails: true,\n\t\t}) as ResponseDataDetailed\n\n\t\tconst versions = response.data\n\t\t\t// Filter out root\n\t\t\t.filter(({ mime }) => mime !== '')\n\t\t\t.map((version) => formatVersion(version as Required, node))\n\n\t\tconst authorIds = new Set(versions.map((version) => String(version.author)))\n\t\tconst authors = await axios.post(generateUrl('/displaynames'), { users: [...authorIds] })\n\n\t\tfor (const version of versions) {\n\t\t\tconst author = authors.data.users[version.author ?? '']\n\t\t\tif (author) {\n\t\t\t\tversion.authorName = author\n\t\t\t}\n\t\t}\n\n\t\treturn versions\n\t} catch (exception) {\n\t\tlogger.error('Could not fetch version', { exception })\n\t\tthrow exception\n\t}\n}\n\n/**\n * Restore the given version\n *\n * @param version - The version to restore\n */\nexport async function restoreVersion(version: Version) {\n\ttry {\n\t\tlogger.debug('Restoring version', { url: version.url })\n\t\tawait client.moveFile(\n\t\t\t`/versions/${getCurrentUser()?.uid}/versions/${version.fileId}/${version.fileVersion}`,\n\t\t\t`/versions/${getCurrentUser()?.uid}/restore/target`,\n\t\t)\n\t} catch (exception) {\n\t\tlogger.error('Could not restore version', { exception })\n\t\tthrow exception\n\t}\n}\n\n/**\n * Format version\n *\n * @param version - The version data from WebDAV\n * @param node - The original node\n */\nfunction formatVersion(version: Required, node: INode): Version {\n\tconst mtime = Date.parse(version.lastmod)\n\n\tlet previewUrl: string\n\tif (mtime === node.mtime?.getTime()) { // Version is the current one\n\t\tpreviewUrl = generateUrl('/core/preview?fileId={fileId}&c={fileEtag}&x=250&y=250&forceIcon=0&a=0&forceIcon=1&mimeFallback=1', {\n\t\t\tfileId: node.id,\n\t\t\tfileEtag: node.attributes.etag,\n\t\t})\n\t} else {\n\t\tpreviewUrl = generateUrl('/apps/files_versions/preview?file={file}&version={fileVersion}&mimeFallback=1', {\n\t\t\tfile: node.path,\n\t\t\tfileVersion: version.basename,\n\t\t})\n\t}\n\n\treturn {\n\t\tfileId: node.id!,\n\t\t// If version-label is defined make sure it is a string (prevent issue if the label is a number an PHP returns a number then)\n\t\tlabel: version.props['version-label'] ? String(version.props['version-label']) : '',\n\t\tauthor: version.props['version-author'] ? String(version.props['version-author']) : null,\n\t\tauthorName: null,\n\t\tfilename: version.filename,\n\t\tbasename: new Date(mtime).toLocaleString(\n\t\t\t[getCanonicalLocale(), getCanonicalLocale().split('-')[0]!],\n\t\t\t{\n\t\t\t\ttimeStyle: 'long',\n\t\t\t\tdateStyle: 'medium',\n\t\t\t},\n\t\t),\n\t\tmime: version.mime,\n\t\tetag: `${version.props.getetag}`,\n\t\tsize: version.size,\n\t\ttype: version.type,\n\t\tmtime,\n\t\tpermissions: 'R',\n\t\tpreviewUrl,\n\t\turl: join('/remote.php/dav', version.filename),\n\t\tsource: generateRemoteUrl('dav') + encodePath(version.filename),\n\t\tfileVersion: version.basename,\n\t}\n}\n\n/**\n * Set version label\n *\n * @param version - The version to set the label for\n * @param newLabel - The new label\n */\nexport async function setVersionLabel(version: Version, newLabel: string) {\n\treturn await client.customRequest(\n\t\tversion.filename,\n\t\t{\n\t\t\tmethod: 'PROPPATCH',\n\t\t\tdata: `\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t${newLabel}\n\t\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t`,\n\t\t},\n\t)\n}\n\n/**\n * Delete version\n *\n * @param version - The version to delete\n */\nexport async function deleteVersion(version: Version) {\n\tawait client.deleteFile(version.filename)\n}\n","\n\n\n\n\n\n"],"names":["_sfc_main","_hoisted_3","_createElementBlock","_mergeProps","_ctx","$props","_cache","$event","_createElementVNode","_openBlock","props","__props","emit","__emit","previewLoaded","ref","previewErrored","capabilities","loadState","humanReadableSize","computed","formatFileSize","versionLabel","label","t","versionAuthor","getCurrentUser","versionHumanExplicitDate","getCanonicalLocale","downloadURL","getRootUrl","enableLabeling","enableDeletion","hasDeletePermissions","hasPermission","Permission","hasUpdatePermissions","isDownloadable","attribute","labelUpdate","restoreVersion","deleteVersion","nextTick","click","event","compareVersion","node","permission","_createBlock","_unref","NcListItem","_createVNode","ImageOffOutline","_hoisted_1","_hoisted_4","_hoisted_5","_hoisted_6","NcAvatar","_hoisted_8","_hoisted_9","NcDateTime","NcActionButton","Pencil","_createTextVNode","FileCompare","BackupRestore","NcActionLink","Download","Delete","labelInput","useTemplateRef","internalLabel","dialogButtons","buttons","setVersionLabel","svgCheck","watchEffect","NcDialog","$emit","NcTextField","_toDisplayString","logger","getLoggerBuilder","_sfc_main$1","defineComponent","containerHeight","containerTop","containerBottom","currentRowTop","currentRowBottom","visibleSections","section","visibleRows","row","distance","visibleItems","rows","items","rowIdToKeyMap","item","usedTokens","key","unusedTokens","finalMapping","id","totalHeight","sectionHeight","paddingTop","buffer","value","currentRowTopDistanceFromTop","entries","entry","cr","_normalizeStyle","_renderSlot","davRequest","client","getClient","fetchVersions","path","versions","mime","version","formatVersion","authorIds","authors","axios","generateUrl","author","exception","mtime","previewUrl","join","generateRemoteUrl","encodePath","newLabel","isMobile","useIsMobile","loading","showVersionLabelForm","editedVersion","currentVersionMtime","orderedVersions","a","b","sections","initialVersionMtime","canView","canCompare","watch","loadVersions","watchDebounced","handleRestore","restoredNode","restoreStartedEventState","showSuccess","showError","handleLabelUpdateRequest","handleLabelUpdate","oldLabel","handleDelete","index","openVersion","_versions","v","VirtualScrolling","_withCtx","_Fragment","_renderList","VersionEntry","NcLoadingIcon","VersionLabelDialog"],"mappings":"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","x_google_ignoreList":[0,1,2]} \ No newline at end of file diff --git a/dist/FilesVersionsSidebarTab-DpBNHNa_.chunk.mjs.map.license b/dist/FilesVersionsSidebarTab-7HCKzlGh.chunk.mjs.map.license similarity index 100% rename from dist/FilesVersionsSidebarTab-DpBNHNa_.chunk.mjs.map.license rename to dist/FilesVersionsSidebarTab-7HCKzlGh.chunk.mjs.map.license diff --git a/dist/NcAvatar-1KxMUN7V-X_YNB4Fv.chunk.mjs b/dist/NcAvatar-1KxMUN7V-R6Nmwuvb.chunk.mjs similarity index 97% rename from dist/NcAvatar-1KxMUN7V-X_YNB4Fv.chunk.mjs rename to dist/NcAvatar-1KxMUN7V-R6Nmwuvb.chunk.mjs index 75512a9ab9c04..1d21b1ecb1405 100644 --- a/dist/NcAvatar-1KxMUN7V-X_YNB4Fv.chunk.mjs +++ b/dist/NcAvatar-1KxMUN7V-R6Nmwuvb.chunk.mjs @@ -1,5 +1,5 @@ -import{t as it,b as Y,p as rt,a as F,u as z,s as B,c as ot}from"./index-Cp0kcsps.chunk.mjs";import{c as Z}from"./index-CkGt55pS.chunk.mjs";import{e as ut,g as ct,h as G,j as lt,k as ht,o as q,l as dt,a as P,b as ft,I as pt}from"./NcModal-DiDvgcU8-7_SNLMd-.chunk.mjs";import{o as c,f as p,g as D,i as tt,O,y as H,h as k,t as S,V as mt,v as et,l as gt,z as I,a9 as vt,a8 as yt,r as _,af as bt,J as St,c as x,w,q as J,k as R,F as _t,B as xt,C as kt,m as Ut,j as At}from"./Web-DYqXJUev.chunk.mjs";import{g as Lt}from"./ArrowRight-CSlQTlWs.chunk.mjs";import{N as wt,l as V}from"./logger-D3RVzcfQ-Bt9JRPzn.chunk.mjs";import{g as It}from"./colors-Cv9F-jWS-BFJACjQq.chunk.mjs";import{_ as st,r as Mt,m as Nt,b as T,N as Ct}from"./createElementId-DhjFt1I9-BmyhoOWk.chunk.mjs";import"./translation-DoG5ZELJ-WOan4U8V.chunk.mjs";import{g as Dt}from"./public-C1mLBHT3.chunk.mjs";import{N as Ot,g as $t}from"./NcUserStatusIcon-BF5OEQFU-Bh_IaQ_D.chunk.mjs";import{A as Et,N as zt}from"./PencilOutline-DhyEf5vr.chunk.mjs";import{a as Bt,N as Pt}from"./NcDateTime.vue_vue_type_script_setup_true_lang-BJuPH7S7-DKsF6FS9.chunk.mjs";import{N as Tt}from"./TrashCanOutline-BU3aqDG_.chunk.mjs";const jt={name:"NcActionText",mixins:[Et],inject:{isInSemanticMenu:{from:ut,default:!1}}},Ft=["role"],Gt={key:0,class:"action-text__longtext-wrapper"},Ht={class:"action-text__name"},Vt=["textContent"],Wt=["textContent"],qt={key:2,class:"action-text__text"};function Jt(r,i,n,e,t,s){return c(),p("li",{class:"action",role:s.isInSemanticMenu&&"presentation"},[D("span",{class:"action-text",onClick:i[0]||(i[0]=(...a)=>r.onClick&&r.onClick(...a))},[tt(r.$slots,"icon",{},()=>[r.icon!==""?(c(),p("span",{key:0,"aria-hidden":"true",class:H(["action-text__icon",[r.isIconUrl?"action-text__icon--url":r.icon]]),style:O({backgroundImage:r.isIconUrl?`url(${r.icon})`:null})},null,6)):k("",!0)],!0),r.name?(c(),p("span",Gt,[D("strong",Ht,S(r.name),1),D("span",{class:"action-text__longtext",textContent:S(r.text)},null,8,Vt)])):r.isLongText?(c(),p("span",{key:1,class:"action-text__longtext",textContent:S(r.text)},null,8,Wt)):(c(),p("span",qt,S(r.text),1)),k("",!0)])],8,Ft)}const Rt=st(jt,[["render",Jt],["__scopeId","data-v-fa684b48"]]),Kt=Symbol.for("nc:theme:enforced");function Qt(r){const i=et(()=>yt(r)??document.body),n=gt(G(i.value)),e=ht();function t(){n.value=G(i.value)}return lt(i,t,{attributes:!0}),I(i,t),I(e,t,{immediate:!0}),vt(n)}const Xt=ct(()=>Qt());function Yt(){const r=Xt(),i=mt(Kt,void 0);return et(()=>i?.value?i.value==="dark":r.value)}const j=new WeakMap,Zt={mounted(r,i){const n=!i.modifiers.bubble;let e;if(typeof i.value=="function")e=q(r,i.value,{capture:n});else{const[t,s]=i.value;e=q(r,t,Object.assign({capture:n},s))}j.set(r,e)},unmounted(r){const i=j.get(r);i&&typeof i=="function"?i():i?.stop(),j.delete(r)}},Ie=dt({mounted(r,i){if(typeof i.value=="function"){const n=i.value;I(P(r),e=>n(e),{immediate:!0})}else{const[n,e]=i.value;if(e?.controls){const t=P(r,e);I(t.isVisible,()=>n(t),{immediate:!0})}else I(P(r,e),t=>n(t),{immediate:!0})}}});function te(r){return window._nc_contacts_menu_hooks?Object.values(window._nc_contacts_menu_hooks).filter(i=>i.enabled(r)):[]}const ee=new Int32Array(4);class h{static hashStr(i,n=!1){return this.onePassHasher.start().appendStr(i).end(n)}static hashAsciiStr(i,n=!1){return this.onePassHasher.start().appendAsciiStr(i).end(n)}static stateIdentity=new Int32Array([1732584193,-271733879,-1732584194,271733878]);static buffer32Identity=new Int32Array([0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]);static hexChars="0123456789abcdef";static hexOut=[];static onePassHasher=new h;static _hex(i){const n=h.hexChars,e=h.hexOut;let t,s,a,d;for(d=0;d<4;d+=1)for(s=d*8,t=i[d],a=0;a<8;a+=2)e[s+1+a]=n.charAt(t&15),t>>>=4,e[s+0+a]=n.charAt(t&15),t>>>=4;return e.join("")}static _md5cycle(i,n){let e=i[0],t=i[1],s=i[2],a=i[3];e+=(t&s|~t&a)+n[0]-680876936|0,e=(e<<7|e>>>25)+t|0,a+=(e&t|~e&s)+n[1]-389564586|0,a=(a<<12|a>>>20)+e|0,s+=(a&e|~a&t)+n[2]+606105819|0,s=(s<<17|s>>>15)+a|0,t+=(s&a|~s&e)+n[3]-1044525330|0,t=(t<<22|t>>>10)+s|0,e+=(t&s|~t&a)+n[4]-176418897|0,e=(e<<7|e>>>25)+t|0,a+=(e&t|~e&s)+n[5]+1200080426|0,a=(a<<12|a>>>20)+e|0,s+=(a&e|~a&t)+n[6]-1473231341|0,s=(s<<17|s>>>15)+a|0,t+=(s&a|~s&e)+n[7]-45705983|0,t=(t<<22|t>>>10)+s|0,e+=(t&s|~t&a)+n[8]+1770035416|0,e=(e<<7|e>>>25)+t|0,a+=(e&t|~e&s)+n[9]-1958414417|0,a=(a<<12|a>>>20)+e|0,s+=(a&e|~a&t)+n[10]-42063|0,s=(s<<17|s>>>15)+a|0,t+=(s&a|~s&e)+n[11]-1990404162|0,t=(t<<22|t>>>10)+s|0,e+=(t&s|~t&a)+n[12]+1804603682|0,e=(e<<7|e>>>25)+t|0,a+=(e&t|~e&s)+n[13]-40341101|0,a=(a<<12|a>>>20)+e|0,s+=(a&e|~a&t)+n[14]-1502002290|0,s=(s<<17|s>>>15)+a|0,t+=(s&a|~s&e)+n[15]+1236535329|0,t=(t<<22|t>>>10)+s|0,e+=(t&a|s&~a)+n[1]-165796510|0,e=(e<<5|e>>>27)+t|0,a+=(e&s|t&~s)+n[6]-1069501632|0,a=(a<<9|a>>>23)+e|0,s+=(a&t|e&~t)+n[11]+643717713|0,s=(s<<14|s>>>18)+a|0,t+=(s&e|a&~e)+n[0]-373897302|0,t=(t<<20|t>>>12)+s|0,e+=(t&a|s&~a)+n[5]-701558691|0,e=(e<<5|e>>>27)+t|0,a+=(e&s|t&~s)+n[10]+38016083|0,a=(a<<9|a>>>23)+e|0,s+=(a&t|e&~t)+n[15]-660478335|0,s=(s<<14|s>>>18)+a|0,t+=(s&e|a&~e)+n[4]-405537848|0,t=(t<<20|t>>>12)+s|0,e+=(t&a|s&~a)+n[9]+568446438|0,e=(e<<5|e>>>27)+t|0,a+=(e&s|t&~s)+n[14]-1019803690|0,a=(a<<9|a>>>23)+e|0,s+=(a&t|e&~t)+n[3]-187363961|0,s=(s<<14|s>>>18)+a|0,t+=(s&e|a&~e)+n[8]+1163531501|0,t=(t<<20|t>>>12)+s|0,e+=(t&a|s&~a)+n[13]-1444681467|0,e=(e<<5|e>>>27)+t|0,a+=(e&s|t&~s)+n[2]-51403784|0,a=(a<<9|a>>>23)+e|0,s+=(a&t|e&~t)+n[7]+1735328473|0,s=(s<<14|s>>>18)+a|0,t+=(s&e|a&~e)+n[12]-1926607734|0,t=(t<<20|t>>>12)+s|0,e+=(t^s^a)+n[5]-378558|0,e=(e<<4|e>>>28)+t|0,a+=(e^t^s)+n[8]-2022574463|0,a=(a<<11|a>>>21)+e|0,s+=(a^e^t)+n[11]+1839030562|0,s=(s<<16|s>>>16)+a|0,t+=(s^a^e)+n[14]-35309556|0,t=(t<<23|t>>>9)+s|0,e+=(t^s^a)+n[1]-1530992060|0,e=(e<<4|e>>>28)+t|0,a+=(e^t^s)+n[4]+1272893353|0,a=(a<<11|a>>>21)+e|0,s+=(a^e^t)+n[7]-155497632|0,s=(s<<16|s>>>16)+a|0,t+=(s^a^e)+n[10]-1094730640|0,t=(t<<23|t>>>9)+s|0,e+=(t^s^a)+n[13]+681279174|0,e=(e<<4|e>>>28)+t|0,a+=(e^t^s)+n[0]-358537222|0,a=(a<<11|a>>>21)+e|0,s+=(a^e^t)+n[3]-722521979|0,s=(s<<16|s>>>16)+a|0,t+=(s^a^e)+n[6]+76029189|0,t=(t<<23|t>>>9)+s|0,e+=(t^s^a)+n[9]-640364487|0,e=(e<<4|e>>>28)+t|0,a+=(e^t^s)+n[12]-421815835|0,a=(a<<11|a>>>21)+e|0,s+=(a^e^t)+n[15]+530742520|0,s=(s<<16|s>>>16)+a|0,t+=(s^a^e)+n[2]-995338651|0,t=(t<<23|t>>>9)+s|0,e+=(s^(t|~a))+n[0]-198630844|0,e=(e<<6|e>>>26)+t|0,a+=(t^(e|~s))+n[7]+1126891415|0,a=(a<<10|a>>>22)+e|0,s+=(e^(a|~t))+n[14]-1416354905|0,s=(s<<15|s>>>17)+a|0,t+=(a^(s|~e))+n[5]-57434055|0,t=(t<<21|t>>>11)+s|0,e+=(s^(t|~a))+n[12]+1700485571|0,e=(e<<6|e>>>26)+t|0,a+=(t^(e|~s))+n[3]-1894986606|0,a=(a<<10|a>>>22)+e|0,s+=(e^(a|~t))+n[10]-1051523|0,s=(s<<15|s>>>17)+a|0,t+=(a^(s|~e))+n[1]-2054922799|0,t=(t<<21|t>>>11)+s|0,e+=(s^(t|~a))+n[8]+1873313359|0,e=(e<<6|e>>>26)+t|0,a+=(t^(e|~s))+n[15]-30611744|0,a=(a<<10|a>>>22)+e|0,s+=(e^(a|~t))+n[6]-1560198380|0,s=(s<<15|s>>>17)+a|0,t+=(a^(s|~e))+n[13]+1309151649|0,t=(t<<21|t>>>11)+s|0,e+=(s^(t|~a))+n[4]-145523070|0,e=(e<<6|e>>>26)+t|0,a+=(t^(e|~s))+n[11]-1120210379|0,a=(a<<10|a>>>22)+e|0,s+=(e^(a|~t))+n[2]+718787259|0,s=(s<<15|s>>>17)+a|0,t+=(a^(s|~e))+n[9]-343485551|0,t=(t<<21|t>>>11)+s|0,i[0]=e+i[0]|0,i[1]=t+i[1]|0,i[2]=s+i[2]|0,i[3]=a+i[3]|0}_dataLength=0;_bufferLength=0;_state=new Int32Array(4);_buffer=new ArrayBuffer(68);_buffer8;_buffer32;constructor(){this._buffer8=new Uint8Array(this._buffer,0,68),this._buffer32=new Uint32Array(this._buffer,0,17),this.start()}start(){return this._dataLength=0,this._bufferLength=0,this._state.set(h.stateIdentity),this}appendStr(i){const n=this._buffer8,e=this._buffer32;let t=this._bufferLength,s,a;for(a=0;a>>6)+192,n[t++]=s&63|128;else if(s<55296||s>56319)n[t++]=(s>>>12)+224,n[t++]=s>>>6&63|128,n[t++]=s&63|128;else{if(s=(s-55296)*1024+(i.charCodeAt(++a)-56320)+65536,s>1114111)throw new Error("Unicode standard supports code points up to U+10FFFF");n[t++]=(s>>>18)+240,n[t++]=s>>>12&63|128,n[t++]=s>>>6&63|128,n[t++]=s&63|128}t>=64&&(this._dataLength+=64,h._md5cycle(this._state,e),t-=64,e[0]=e[16])}return this._bufferLength=t,this}appendAsciiStr(i){const n=this._buffer8,e=this._buffer32;let t=this._bufferLength,s,a=0;for(;;){for(s=Math.min(i.length-a,64-t);s--;)n[t++]=i.charCodeAt(a++);if(t<64)break;this._dataLength+=64,h._md5cycle(this._state,e),t=0}return this._bufferLength=t,this}appendByteArray(i){const n=this._buffer8,e=this._buffer32;let t=this._bufferLength,s,a=0;for(;;){for(s=Math.min(i.length-a,64-t);s--;)n[t++]=i[a++];if(t<64)break;this._dataLength+=64,h._md5cycle(this._state,e),t=0}return this._bufferLength=t,this}getState(){const i=this._state;return{buffer:String.fromCharCode.apply(null,Array.from(this._buffer8)),buflen:this._bufferLength,length:this._dataLength,state:[i[0],i[1],i[2],i[3]]}}setState(i){const n=i.buffer,e=i.state,t=this._state;let s;for(this._dataLength=i.length,this._bufferLength=i.buflen,t[0]=e[0],t[1]=e[1],t[2]=e[2],t[3]=e[3],s=0;s>2)+1;this._dataLength+=n;const a=this._dataLength*8;if(e[n]=128,e[n+1]=e[n+2]=e[n+3]=0,t.set(h.buffer32Identity.subarray(s),s),n>55&&(h._md5cycle(this._state,t),t.set(h.buffer32Identity)),a<=4294967295)t[14]=a;else{const d=a.toString(16).match(/(.*?)(.{0,8})$/);if(d===null)return i?ee:"";const b=parseInt(d[2],16),U=parseInt(d[1],16)||0;t[14]=b,t[15]=U}return h._md5cycle(this._state,t),i?this._state:h._hex(this._state)}}if(h.hashStr("hello")!=="5d41402abc4b2a76b9719d911017c592")throw new Error("Md5 self test failed.");function se(r){let i=r;r.match(/^([0-9a-f]{4}-?){8}$/)===null&&(i=h.hashStr(r)),i=i.replace(/[^0-9a-f]/g,"");let n=0;for(let e=0;e/g,d=/<\/?([^\s\/>]+)/;function b(u,o,m){u=u||"",o=o||[],m=m||"";let A=M(o,m);return N(u,A)}function U(u,o){u=u||[],o=o||"";let m=M(u,o);return function(A){return N(A||"",m)}}b.init_streaming_mode=U;function M(u,o){return u=$(u),{allowable_tags:u,tag_replacement:o,state:e,tag_buffer:"",depth:0,in_quote_char:""}}function N(u,o){if(typeof u!="string")throw new TypeError("'html' parameter must be a string");let m=o.allowable_tags,A=o.tag_replacement,v=o.state,l=o.tag_buffer,C=o.depth,y=o.in_quote_char,L="";for(let E=0,nt=u.length;E":if(y)break;if(C){C--;break}y="",v=e,l+=">",m.has(g(l))?L+=l:L+=A,l="";break;case'"':case"'":f===y?y="":y=y||f,l+=f;break;case"-":l==="r.onClick&&r.onClick(...a))},[tt(r.$slots,"icon",{},()=>[r.icon!==""?(c(),p("span",{key:0,"aria-hidden":"true",class:H(["action-text__icon",[r.isIconUrl?"action-text__icon--url":r.icon]]),style:O({backgroundImage:r.isIconUrl?`url(${r.icon})`:null})},null,6)):k("",!0)],!0),r.name?(c(),p("span",Gt,[D("strong",Ht,S(r.name),1),D("span",{class:"action-text__longtext",textContent:S(r.text)},null,8,Vt)])):r.isLongText?(c(),p("span",{key:1,class:"action-text__longtext",textContent:S(r.text)},null,8,Wt)):(c(),p("span",qt,S(r.text),1)),k("",!0)])],8,Ft)}const Rt=st(jt,[["render",Jt],["__scopeId","data-v-fa684b48"]]),Kt=Symbol.for("nc:theme:enforced");function Qt(r){const i=et(()=>yt(r)??document.body),n=gt(G(i.value)),e=ht();function t(){n.value=G(i.value)}return lt(i,t,{attributes:!0}),I(i,t),I(e,t,{immediate:!0}),vt(n)}const Xt=ct(()=>Qt());function Yt(){const r=Xt(),i=mt(Kt,void 0);return et(()=>i?.value?i.value==="dark":r.value)}const j=new WeakMap,Zt={mounted(r,i){const n=!i.modifiers.bubble;let e;if(typeof i.value=="function")e=q(r,i.value,{capture:n});else{const[t,s]=i.value;e=q(r,t,Object.assign({capture:n},s))}j.set(r,e)},unmounted(r){const i=j.get(r);i&&typeof i=="function"?i():i?.stop(),j.delete(r)}},Ie=dt({mounted(r,i){if(typeof i.value=="function"){const n=i.value;I(P(r),e=>n(e),{immediate:!0})}else{const[n,e]=i.value;if(e?.controls){const t=P(r,e);I(t.isVisible,()=>n(t),{immediate:!0})}else I(P(r,e),t=>n(t),{immediate:!0})}}});function te(r){return window._nc_contacts_menu_hooks?Object.values(window._nc_contacts_menu_hooks).filter(i=>i.enabled(r)):[]}const ee=new Int32Array(4);class h{static hashStr(i,n=!1){return this.onePassHasher.start().appendStr(i).end(n)}static hashAsciiStr(i,n=!1){return this.onePassHasher.start().appendAsciiStr(i).end(n)}static stateIdentity=new Int32Array([1732584193,-271733879,-1732584194,271733878]);static buffer32Identity=new Int32Array([0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]);static hexChars="0123456789abcdef";static hexOut=[];static onePassHasher=new h;static _hex(i){const n=h.hexChars,e=h.hexOut;let t,s,a,d;for(d=0;d<4;d+=1)for(s=d*8,t=i[d],a=0;a<8;a+=2)e[s+1+a]=n.charAt(t&15),t>>>=4,e[s+0+a]=n.charAt(t&15),t>>>=4;return e.join("")}static _md5cycle(i,n){let e=i[0],t=i[1],s=i[2],a=i[3];e+=(t&s|~t&a)+n[0]-680876936|0,e=(e<<7|e>>>25)+t|0,a+=(e&t|~e&s)+n[1]-389564586|0,a=(a<<12|a>>>20)+e|0,s+=(a&e|~a&t)+n[2]+606105819|0,s=(s<<17|s>>>15)+a|0,t+=(s&a|~s&e)+n[3]-1044525330|0,t=(t<<22|t>>>10)+s|0,e+=(t&s|~t&a)+n[4]-176418897|0,e=(e<<7|e>>>25)+t|0,a+=(e&t|~e&s)+n[5]+1200080426|0,a=(a<<12|a>>>20)+e|0,s+=(a&e|~a&t)+n[6]-1473231341|0,s=(s<<17|s>>>15)+a|0,t+=(s&a|~s&e)+n[7]-45705983|0,t=(t<<22|t>>>10)+s|0,e+=(t&s|~t&a)+n[8]+1770035416|0,e=(e<<7|e>>>25)+t|0,a+=(e&t|~e&s)+n[9]-1958414417|0,a=(a<<12|a>>>20)+e|0,s+=(a&e|~a&t)+n[10]-42063|0,s=(s<<17|s>>>15)+a|0,t+=(s&a|~s&e)+n[11]-1990404162|0,t=(t<<22|t>>>10)+s|0,e+=(t&s|~t&a)+n[12]+1804603682|0,e=(e<<7|e>>>25)+t|0,a+=(e&t|~e&s)+n[13]-40341101|0,a=(a<<12|a>>>20)+e|0,s+=(a&e|~a&t)+n[14]-1502002290|0,s=(s<<17|s>>>15)+a|0,t+=(s&a|~s&e)+n[15]+1236535329|0,t=(t<<22|t>>>10)+s|0,e+=(t&a|s&~a)+n[1]-165796510|0,e=(e<<5|e>>>27)+t|0,a+=(e&s|t&~s)+n[6]-1069501632|0,a=(a<<9|a>>>23)+e|0,s+=(a&t|e&~t)+n[11]+643717713|0,s=(s<<14|s>>>18)+a|0,t+=(s&e|a&~e)+n[0]-373897302|0,t=(t<<20|t>>>12)+s|0,e+=(t&a|s&~a)+n[5]-701558691|0,e=(e<<5|e>>>27)+t|0,a+=(e&s|t&~s)+n[10]+38016083|0,a=(a<<9|a>>>23)+e|0,s+=(a&t|e&~t)+n[15]-660478335|0,s=(s<<14|s>>>18)+a|0,t+=(s&e|a&~e)+n[4]-405537848|0,t=(t<<20|t>>>12)+s|0,e+=(t&a|s&~a)+n[9]+568446438|0,e=(e<<5|e>>>27)+t|0,a+=(e&s|t&~s)+n[14]-1019803690|0,a=(a<<9|a>>>23)+e|0,s+=(a&t|e&~t)+n[3]-187363961|0,s=(s<<14|s>>>18)+a|0,t+=(s&e|a&~e)+n[8]+1163531501|0,t=(t<<20|t>>>12)+s|0,e+=(t&a|s&~a)+n[13]-1444681467|0,e=(e<<5|e>>>27)+t|0,a+=(e&s|t&~s)+n[2]-51403784|0,a=(a<<9|a>>>23)+e|0,s+=(a&t|e&~t)+n[7]+1735328473|0,s=(s<<14|s>>>18)+a|0,t+=(s&e|a&~e)+n[12]-1926607734|0,t=(t<<20|t>>>12)+s|0,e+=(t^s^a)+n[5]-378558|0,e=(e<<4|e>>>28)+t|0,a+=(e^t^s)+n[8]-2022574463|0,a=(a<<11|a>>>21)+e|0,s+=(a^e^t)+n[11]+1839030562|0,s=(s<<16|s>>>16)+a|0,t+=(s^a^e)+n[14]-35309556|0,t=(t<<23|t>>>9)+s|0,e+=(t^s^a)+n[1]-1530992060|0,e=(e<<4|e>>>28)+t|0,a+=(e^t^s)+n[4]+1272893353|0,a=(a<<11|a>>>21)+e|0,s+=(a^e^t)+n[7]-155497632|0,s=(s<<16|s>>>16)+a|0,t+=(s^a^e)+n[10]-1094730640|0,t=(t<<23|t>>>9)+s|0,e+=(t^s^a)+n[13]+681279174|0,e=(e<<4|e>>>28)+t|0,a+=(e^t^s)+n[0]-358537222|0,a=(a<<11|a>>>21)+e|0,s+=(a^e^t)+n[3]-722521979|0,s=(s<<16|s>>>16)+a|0,t+=(s^a^e)+n[6]+76029189|0,t=(t<<23|t>>>9)+s|0,e+=(t^s^a)+n[9]-640364487|0,e=(e<<4|e>>>28)+t|0,a+=(e^t^s)+n[12]-421815835|0,a=(a<<11|a>>>21)+e|0,s+=(a^e^t)+n[15]+530742520|0,s=(s<<16|s>>>16)+a|0,t+=(s^a^e)+n[2]-995338651|0,t=(t<<23|t>>>9)+s|0,e+=(s^(t|~a))+n[0]-198630844|0,e=(e<<6|e>>>26)+t|0,a+=(t^(e|~s))+n[7]+1126891415|0,a=(a<<10|a>>>22)+e|0,s+=(e^(a|~t))+n[14]-1416354905|0,s=(s<<15|s>>>17)+a|0,t+=(a^(s|~e))+n[5]-57434055|0,t=(t<<21|t>>>11)+s|0,e+=(s^(t|~a))+n[12]+1700485571|0,e=(e<<6|e>>>26)+t|0,a+=(t^(e|~s))+n[3]-1894986606|0,a=(a<<10|a>>>22)+e|0,s+=(e^(a|~t))+n[10]-1051523|0,s=(s<<15|s>>>17)+a|0,t+=(a^(s|~e))+n[1]-2054922799|0,t=(t<<21|t>>>11)+s|0,e+=(s^(t|~a))+n[8]+1873313359|0,e=(e<<6|e>>>26)+t|0,a+=(t^(e|~s))+n[15]-30611744|0,a=(a<<10|a>>>22)+e|0,s+=(e^(a|~t))+n[6]-1560198380|0,s=(s<<15|s>>>17)+a|0,t+=(a^(s|~e))+n[13]+1309151649|0,t=(t<<21|t>>>11)+s|0,e+=(s^(t|~a))+n[4]-145523070|0,e=(e<<6|e>>>26)+t|0,a+=(t^(e|~s))+n[11]-1120210379|0,a=(a<<10|a>>>22)+e|0,s+=(e^(a|~t))+n[2]+718787259|0,s=(s<<15|s>>>17)+a|0,t+=(a^(s|~e))+n[9]-343485551|0,t=(t<<21|t>>>11)+s|0,i[0]=e+i[0]|0,i[1]=t+i[1]|0,i[2]=s+i[2]|0,i[3]=a+i[3]|0}_dataLength=0;_bufferLength=0;_state=new Int32Array(4);_buffer=new ArrayBuffer(68);_buffer8;_buffer32;constructor(){this._buffer8=new Uint8Array(this._buffer,0,68),this._buffer32=new Uint32Array(this._buffer,0,17),this.start()}start(){return this._dataLength=0,this._bufferLength=0,this._state.set(h.stateIdentity),this}appendStr(i){const n=this._buffer8,e=this._buffer32;let t=this._bufferLength,s,a;for(a=0;a>>6)+192,n[t++]=s&63|128;else if(s<55296||s>56319)n[t++]=(s>>>12)+224,n[t++]=s>>>6&63|128,n[t++]=s&63|128;else{if(s=(s-55296)*1024+(i.charCodeAt(++a)-56320)+65536,s>1114111)throw new Error("Unicode standard supports code points up to U+10FFFF");n[t++]=(s>>>18)+240,n[t++]=s>>>12&63|128,n[t++]=s>>>6&63|128,n[t++]=s&63|128}t>=64&&(this._dataLength+=64,h._md5cycle(this._state,e),t-=64,e[0]=e[16])}return this._bufferLength=t,this}appendAsciiStr(i){const n=this._buffer8,e=this._buffer32;let t=this._bufferLength,s,a=0;for(;;){for(s=Math.min(i.length-a,64-t);s--;)n[t++]=i.charCodeAt(a++);if(t<64)break;this._dataLength+=64,h._md5cycle(this._state,e),t=0}return this._bufferLength=t,this}appendByteArray(i){const n=this._buffer8,e=this._buffer32;let t=this._bufferLength,s,a=0;for(;;){for(s=Math.min(i.length-a,64-t);s--;)n[t++]=i[a++];if(t<64)break;this._dataLength+=64,h._md5cycle(this._state,e),t=0}return this._bufferLength=t,this}getState(){const i=this._state;return{buffer:String.fromCharCode.apply(null,Array.from(this._buffer8)),buflen:this._bufferLength,length:this._dataLength,state:[i[0],i[1],i[2],i[3]]}}setState(i){const n=i.buffer,e=i.state,t=this._state;let s;for(this._dataLength=i.length,this._bufferLength=i.buflen,t[0]=e[0],t[1]=e[1],t[2]=e[2],t[3]=e[3],s=0;s>2)+1;this._dataLength+=n;const a=this._dataLength*8;if(e[n]=128,e[n+1]=e[n+2]=e[n+3]=0,t.set(h.buffer32Identity.subarray(s),s),n>55&&(h._md5cycle(this._state,t),t.set(h.buffer32Identity)),a<=4294967295)t[14]=a;else{const d=a.toString(16).match(/(.*?)(.{0,8})$/);if(d===null)return i?ee:"";const b=parseInt(d[2],16),U=parseInt(d[1],16)||0;t[14]=b,t[15]=U}return h._md5cycle(this._state,t),i?this._state:h._hex(this._state)}}if(h.hashStr("hello")!=="5d41402abc4b2a76b9719d911017c592")throw new Error("Md5 self test failed.");function se(r){let i=r;r.match(/^([0-9a-f]{4}-?){8}$/)===null&&(i=h.hashStr(r)),i=i.replace(/[^0-9a-f]/g,"");let n=0;for(let e=0;e/g,d=/<\/?([^\s\/>]+)/;function b(u,o,m){u=u||"",o=o||[],m=m||"";let A=M(o,m);return N(u,A)}function U(u,o){u=u||[],o=o||"";let m=M(u,o);return function(A){return N(A||"",m)}}b.init_streaming_mode=U;function M(u,o){return u=$(u),{allowable_tags:u,tag_replacement:o,state:e,tag_buffer:"",depth:0,in_quote_char:""}}function N(u,o){if(typeof u!="string")throw new TypeError("'html' parameter must be a string");let m=o.allowable_tags,A=o.tag_replacement,v=o.state,l=o.tag_buffer,C=o.depth,y=o.in_quote_char,L="";for(let E=0,nt=u.length;E":if(y)break;if(C){C--;break}y="",v=e,l+=">",m.has(g(l))?L+=l:L+=A,l="";break;case'"':case"'":f===y?y="":y=y||f,l+=f;break;case"-":l===""?(l.slice(-2)=="--"&&(v=e),l=""):l+=f)}return o.state=v,o.tag_buffer=l,o.depth=C,o.in_quote_char=y,L}function $(u){let o=new Set;if(typeof u=="string"){let m;for(;m=a.exec(u);)o.add(m[1])}else!n.nonNative&&typeof u[n.iterator]=="function"?o=new Set(u):typeof u.forEach=="function"&&u.forEach(o.add,o);return o}function g(u){let o=d.exec(u);return o?o[1].toLowerCase():null}r.exports?r.exports=b:i.striptags=b})(ae)})(W)),W.exports}var ie=ne();const Me=it(ie);function re(r,i){const n=(i?.size||64)<=64?64:512,e=i?.isGuest?"/guest":"",t=i?.isDarkTheme??G(document.body)?"/dark":"";return Y(`/avatar${e}/{user}/{size}${t}?guestFallback=true`,{user:r,size:n})}Mt(Nt);const oe={data(){return{hasStatus:!1,userStatus:{status:null,message:null,icon:null}}},methods:{async fetchUserStatus(r){if(!r)return;const i=Dt();if(!(!Object.hasOwn(i,"user_status")||!i.user_status.enabled)&&F())try{const{data:n}=await Z.get(ot("apps/user_status/api/v1/statuses/{userId}",{userId:r}));this.setUserStatus(n.ocs.data)}catch(n){if(n.response.status===404&&n.response.data.ocs?.data?.length===0)return;V.error("Failed to fetch user status",{error:n})}},setUserStatus({status:r,message:i,icon:n}){this.userStatus.status=r||"",this.userStatus.message=i||"",this.userStatus.icon=n||"",this.hasStatus=!!r}}},at=rt("nextcloud").persist().build();function ue(r){const i=at.getItem("user-has-avatar."+r);return typeof i=="string"?!!i:null}function X(r,i){r&&at.setItem("user-has-avatar."+r,i)}const ce={name:"NcAvatar",directives:{ClickOutside:Zt},components:{IconDotsHorizontal:pt,NcActions:ft,NcButton:wt,NcIconSvgWrapper:Ct,NcLoadingIcon:Tt,NcUserStatusIcon:Ot},mixins:[oe],props:{url:{type:String,default:void 0},iconClass:{type:String,default:void 0},user:{type:String,default:void 0},hideStatus:{type:Boolean,default:!1},verboseStatus:{type:Boolean,default:!1},preloadedUserStatus:{type:Object,default:void 0},isGuest:{type:Boolean,default:!1},displayName:{type:String,default:void 0},size:{type:Number,default:32},noPlaceholder:{type:Boolean,default:!1},disableTooltip:{type:Boolean,default:!1},disableMenu:{type:Boolean,default:!1},tooltipMessage:{type:String,default:null},isNoUser:{type:Boolean,default:!1},menuContainer:{type:[Boolean,String,Object,Element],default:"body"}},setup(){return{isDarkTheme:Yt()}},data(){return{avatarUrlLoaded:null,avatarSrcSetLoaded:null,userDoesNotExist:!1,isAvatarLoaded:!1,isMenuLoaded:!1,contactsMenuLoading:!1,contactsMenuData:{},contactsMenuActions:[],contactsMenuOpenState:!1}},computed:{avatarAriaLabel(){if(this.hasMenu)return this.canDisplayUserStatus||this.showUserStatusIconOnAvatar?T("Avatar of {displayName}, {status}",{displayName:this.displayName??this.user,status:$t(this.userStatus.status)}):T("Avatar of {displayName}",{displayName:this.displayName??this.user})},canDisplayUserStatus(){return!this.hideStatus&&this.hasStatus&&["online","away","busy","dnd"].includes(this.userStatus.status)},showUserStatusIconOnAvatar(){return!this.hideStatus&&!this.verboseStatus&&this.hasStatus&&this.userStatus.status!=="dnd"&&this.userStatus.icon},userIdentifier(){return this.isDisplayNameDefined?this.displayName:this.isUserDefined?this.user:""},isUserDefined(){return typeof this.user<"u"},isDisplayNameDefined(){return typeof this.displayName<"u"},isUrlDefined(){return typeof this.url<"u"},hasMenu(){return this.disableMenu?!1:this.isMenuLoaded?this.menu.length>0:!(this.user===F()?.uid||this.userDoesNotExist||this.url)},showInitials(){return!this.noPlaceholder&&this.userDoesNotExist&&!(this.iconClass||this.$slots.icon)},avatarStyle(){return{"--avatar-size":this.size+"px",lineHeight:this.showInitials?this.size+"px":0,fontSize:Math.round(this.size*.45)+"px"}},initialsWrapperStyle(){const{r,g:i,b:n}=K(this.userIdentifier);return{backgroundColor:`rgba(${r}, ${i}, ${n}, 0.1)`}},initialsStyle(){const{r,g:i,b:n}=K(this.userIdentifier);return{color:`rgb(${r}, ${i}, ${n})`}},tooltip(){return this.disableTooltip?null:this.tooltipMessage?this.tooltipMessage:this.displayName},initials(){let r="?";if(this.showInitials){const i=this.userIdentifier.trim();if(i==="")return r;const n=i.match(/[\p{L}\p{N}\s]/gu);if(!n)return r;const e=n.join(""),t=e.lastIndexOf(" ");r=String.fromCodePoint(e.codePointAt(0)),t!==-1&&(r=r.concat(String.fromCodePoint(e.codePointAt(t+1))))}return r.toLocaleUpperCase()},menu(){const r=this.contactsMenuActions.map(n=>{const e=Lt(this.$router,n.hyperlink);return{ncActionComponent:e?Bt:Pt,ncActionComponentProps:e?{to:e,icon:n.icon}:{href:n.hyperlink,icon:n.icon},text:n.title}});for(const n of te(this.contactsMenuData))try{r.push({ncActionComponent:zt,ncActionComponentProps:{onClick:()=>n.callback(this.contactsMenuData)},text:n.displayName(this.contactsMenuData),iconSvg:n.iconSvg(this.contactsMenuData)})}catch(e){V.error(`Failed to render ContactsMenu action ${n.id}`,{error:e,action:n})}function i(n){const e=document.createTextNode(n),t=document.createElement("p");return t.appendChild(e),t.innerHTML}if(!this.hideStatus&&(this.userStatus.icon||this.userStatus.message)){const n=` ${i(this.userStatus.icon)} `;return[{ncActionComponent:Rt,ncActionComponentProps:{},iconSvg:this.userStatus.icon?n:void 0,text:`${this.userStatus.message}`}].concat(r)}return r}},watch:{url(){this.userDoesNotExist=!1,this.loadAvatarUrl()},user(){this.userDoesNotExist=!1,this.isMenuLoaded=!1,this.loadAvatarUrl()}},mounted(){this.loadAvatarUrl(),B("settings:avatar:updated",this.loadAvatarUrl),B("settings:display-name:updated",this.loadAvatarUrl),!this.hideStatus&&this.user&&!this.isNoUser?(this.preloadedUserStatus?this.setUserStatus(this.preloadedUserStatus):this.fetchUserStatus(this.user),B("user_status:status.updated",this.handleUserStatusUpdated)):!this.hideStatus&&this.preloadedUserStatus&&this.setUserStatus(this.preloadedUserStatus)},beforeUnmount(){z("settings:avatar:updated",this.loadAvatarUrl),z("settings:display-name:updated",this.loadAvatarUrl),z("user_status:status.updated",this.handleUserStatusUpdated)},methods:{t:T,handleUserStatusUpdated(r){this.user===r.userId&&(this.userStatus={status:r.status,icon:r.icon,message:r.message},this.hasStatus=r.status!==null)},async toggleMenu(r){r.type==="keydown"&&r.key!=="Enter"||(this.contactsMenuOpenState||await this.fetchContactsMenu(),this.contactsMenuOpenState=!this.contactsMenuOpenState)},closeMenu(){this.contactsMenuOpenState=!1},async fetchContactsMenu(){this.contactsMenuLoading=!0;try{const r=encodeURIComponent(this.user),{data:i}=await Z.post(Y("contactsmenu/findOne"),`shareType=0&shareWith=${r}`);this.contactsMenuData=i,this.contactsMenuActions=i.topAction?[i.topAction].concat(i.actions):i.actions}catch{this.contactsMenuOpenState=!1}this.contactsMenuLoading=!1,this.isMenuLoaded=!0},loadAvatarUrl(){if(this.isAvatarLoaded=!1,!this.isUrlDefined&&(!this.isUserDefined||this.isNoUser||this.iconClass||this.$slots.icon)){this.isAvatarLoaded=!0,this.userDoesNotExist=!0;return}if(this.isUrlDefined){this.updateImageIfValid(this.url);return}if(this.size<=64){const r=this.avatarUrlGenerator(this.user,64),i=[r+" 1x",this.avatarUrlGenerator(this.user,512)+" 8x"].join(", ");this.updateImageIfValid(r,i)}else{const r=this.avatarUrlGenerator(this.user,512);this.updateImageIfValid(r)}},avatarUrlGenerator(r,i){let n=re(r,{size:i,isDarkTheme:this.isDarkTheme,isGuest:this.isGuest});return r===F()?.uid&&typeof oc_userconfig<"u"&&(n+="?v="+window.oc_userconfig.avatar.version),n},updateImageIfValid(r,i=null){const n=ue(this.user);if(this.isUserDefined&&typeof n=="boolean"){this.isAvatarLoaded=!0,this.avatarUrlLoaded=r,i&&(this.avatarSrcSetLoaded=i),n===!1&&(this.userDoesNotExist=!0);return}const e=new Image;e.onload=()=>{this.avatarUrlLoaded=r,i&&(this.avatarSrcSetLoaded=i),this.isAvatarLoaded=!0,X(this.user,!0)},e.onerror=t=>{V.debug("[NcAvatar] Invalid avatar url",{error:t,url:r}),this.avatarUrlLoaded=null,this.avatarSrcSetLoaded=null,this.userDoesNotExist=!0,this.isAvatarLoaded=!1,X(this.user,!1)},i&&(e.srcset=i),e.src=r}}},le=["title"],he=["src","srcset"],de={key:2,class:"avatardiv__user-status avatardiv__user-status--icon"};function fe(r,i,n,e,t,s){const a=_("NcLoadingIcon"),d=_("IconDotsHorizontal"),b=_("NcButton"),U=_("NcIconSvgWrapper"),M=_("NcActions"),N=_("NcUserStatusIcon"),$=bt("click-outside");return St((c(),p("span",{class:H(["avatardiv popovermenu-wrapper",{"avatardiv--unknown":t.userDoesNotExist,"avatardiv--with-menu":s.hasMenu,"avatardiv--with-menu-loading":t.contactsMenuLoading}]),style:O(s.avatarStyle),title:s.tooltip},[tt(r.$slots,"icon",{},()=>[n.iconClass?(c(),p("span",{key:0,class:H([n.iconClass,"avatar-class-icon"])},null,2)):t.isAvatarLoaded&&!t.userDoesNotExist?(c(),p("img",{key:1,src:t.avatarUrlLoaded,srcset:t.avatarSrcSetLoaded,alt:""},null,8,he)):k("",!0)],!0),s.hasMenu&&s.menu.length===0?(c(),x(b,{key:0,"aria-label":s.avatarAriaLabel,class:"action-item action-item__menutoggle",variant:"tertiary-no-background",onClick:s.toggleMenu},{icon:w(()=>[t.contactsMenuLoading?(c(),x(a,{key:0})):(c(),x(d,{key:1,size:20}))]),_:1},8,["aria-label","onClick"])):s.hasMenu?(c(),x(M,{key:1,open:t.contactsMenuOpenState,"onUpdate:open":i[0]||(i[0]=g=>t.contactsMenuOpenState=g),"aria-label":s.avatarAriaLabel,container:n.menuContainer,forceMenu:"",manualOpen:"",variant:"tertiary-no-background",onClick:s.toggleMenu},J({default:w(()=>[(c(!0),p(_t,null,xt(s.menu,(g,u)=>(c(),x(kt(g.ncActionComponent),Ut({key:u},{ref_for:!0},g.ncActionComponentProps),J({default:w(()=>[At(" "+S(g.text),1)]),_:2},[g.iconSvg?{name:"icon",fn:w(()=>[R(U,{svg:g.iconSvg},null,8,["svg"])]),key:"0"}:void 0]),1040))),128))]),_:2},[t.contactsMenuLoading?{name:"icon",fn:w(()=>[R(a)]),key:"0"}:void 0]),1032,["open","aria-label","container","onClick"])):k("",!0),s.showUserStatusIconOnAvatar?(c(),p("span",de,S(r.userStatus.icon),1)):s.canDisplayUserStatus?(c(),x(N,{key:3,class:"avatardiv__user-status",status:r.userStatus.status,"aria-hidden":String(s.hasMenu)},null,8,["status","aria-hidden"])):k("",!0),s.showInitials?(c(),p("span",{key:4,style:O(s.initialsWrapperStyle),class:"avatardiv__initials-wrapper"},[D("span",{style:O(s.initialsStyle),class:"avatardiv__initials"},S(s.initials),5)],4)):k("",!0)],14,le)),[[$,s.closeMenu]])}const Ne=st(ce,[["render",fe],["__scopeId","data-v-e0ae1174"]]);export{Ne as N,Zt as a,oe as b,re as g,Me as s,Yt as u,Ie as v}; -//# sourceMappingURL=NcAvatar-1KxMUN7V-X_YNB4Fv.chunk.mjs.map +//# sourceMappingURL=NcAvatar-1KxMUN7V-R6Nmwuvb.chunk.mjs.map diff --git a/dist/NcAvatar-1KxMUN7V-X_YNB4Fv.chunk.mjs.license b/dist/NcAvatar-1KxMUN7V-R6Nmwuvb.chunk.mjs.license similarity index 100% rename from dist/NcAvatar-1KxMUN7V-X_YNB4Fv.chunk.mjs.license rename to dist/NcAvatar-1KxMUN7V-R6Nmwuvb.chunk.mjs.license diff --git a/dist/NcAvatar-1KxMUN7V-X_YNB4Fv.chunk.mjs.map b/dist/NcAvatar-1KxMUN7V-R6Nmwuvb.chunk.mjs.map similarity index 99% rename from dist/NcAvatar-1KxMUN7V-X_YNB4Fv.chunk.mjs.map rename to dist/NcAvatar-1KxMUN7V-R6Nmwuvb.chunk.mjs.map index dc45167c466fc..5318e4568f2a8 100644 --- a/dist/NcAvatar-1KxMUN7V-X_YNB4Fv.chunk.mjs.map +++ b/dist/NcAvatar-1KxMUN7V-R6Nmwuvb.chunk.mjs.map @@ -1 +1 @@ -{"version":3,"file":"NcAvatar-1KxMUN7V-X_YNB4Fv.chunk.mjs","sources":["../node_modules/@nextcloud/vue/dist/chunks/NcActionText-CQ9qwJ0p.mjs","../node_modules/@nextcloud/vue/dist/chunks/constants-wIEKSp2G.mjs","../node_modules/@nextcloud/vue/dist/composables/useIsDarkTheme/index.mjs","../node_modules/@vueuse/components/dist/index.js","../node_modules/@nextcloud/vue/dist/functions/contactsMenu/index.mjs","../node_modules/ts-md5/dist/index.es.js","../node_modules/@nextcloud/vue/dist/functions/usernameToColor/index.mjs","../node_modules/striptags/src/striptags.js","../node_modules/@nextcloud/vue/dist/chunks/NcMentionBubble.vue_vue_type_style_index_0_scoped_3c4a673d_lang-DyqakLm5.mjs","../node_modules/@nextcloud/vue/dist/chunks/NcAvatar-1KxMUN7V.mjs"],"sourcesContent":["import '../assets/NcActionText-Dzegj6AY.css';\nimport { A as ActionTextMixin } from \"./actionText-BXR0sWNu.mjs\";\nimport { a as NC_ACTIONS_IS_SEMANTIC_MENU } from \"./useNcActions-BzPO2c4h.mjs\";\nimport { openBlock, createElementBlock, createElementVNode, renderSlot, normalizeStyle, normalizeClass, createCommentVNode, toDisplayString } from \"vue\";\nimport { _ as _export_sfc } from \"./_plugin-vue_export-helper-1tPrXgE0.mjs\";\nconst _sfc_main = {\n name: \"NcActionText\",\n mixins: [ActionTextMixin],\n inject: {\n isInSemanticMenu: {\n from: NC_ACTIONS_IS_SEMANTIC_MENU,\n default: false\n }\n }\n};\nconst _hoisted_1 = [\"role\"];\nconst _hoisted_2 = {\n key: 0,\n class: \"action-text__longtext-wrapper\"\n};\nconst _hoisted_3 = { class: \"action-text__name\" };\nconst _hoisted_4 = [\"textContent\"];\nconst _hoisted_5 = [\"textContent\"];\nconst _hoisted_6 = {\n key: 2,\n class: \"action-text__text\"\n};\nfunction _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {\n return openBlock(), createElementBlock(\"li\", {\n class: \"action\",\n role: $options.isInSemanticMenu && \"presentation\"\n }, [\n createElementVNode(\"span\", {\n class: \"action-text\",\n onClick: _cache[0] || (_cache[0] = (...args) => _ctx.onClick && _ctx.onClick(...args))\n }, [\n renderSlot(_ctx.$slots, \"icon\", {}, () => [\n _ctx.icon !== \"\" ? (openBlock(), createElementBlock(\"span\", {\n key: 0,\n \"aria-hidden\": \"true\",\n class: normalizeClass([\"action-text__icon\", [_ctx.isIconUrl ? \"action-text__icon--url\" : _ctx.icon]]),\n style: normalizeStyle({ backgroundImage: _ctx.isIconUrl ? `url(${_ctx.icon})` : null })\n }, null, 6)) : createCommentVNode(\"\", true)\n ], true),\n _ctx.name ? (openBlock(), createElementBlock(\"span\", _hoisted_2, [\n createElementVNode(\"strong\", _hoisted_3, toDisplayString(_ctx.name), 1),\n createElementVNode(\"span\", {\n class: \"action-text__longtext\",\n textContent: toDisplayString(_ctx.text)\n }, null, 8, _hoisted_4)\n ])) : _ctx.isLongText ? (openBlock(), createElementBlock(\"span\", {\n key: 1,\n class: \"action-text__longtext\",\n textContent: toDisplayString(_ctx.text)\n }, null, 8, _hoisted_5)) : (openBlock(), createElementBlock(\"span\", _hoisted_6, toDisplayString(_ctx.text), 1)),\n createCommentVNode(\"\", true)\n ])\n ], 8, _hoisted_1);\n}\nconst NcActionText = /* @__PURE__ */ _export_sfc(_sfc_main, [[\"render\", _sfc_render], [\"__scopeId\", \"data-v-fa684b48\"]]);\nexport {\n NcActionText as N\n};\n//# sourceMappingURL=NcActionText-CQ9qwJ0p.mjs.map\n","/*!\n * SPDX-FileCopyrightText: 2025 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\nconst INJECTION_KEY_THEME = /* @__PURE__ */ Symbol.for(\"nc:theme:enforced\");\nexport {\n INJECTION_KEY_THEME as I\n};\n//# sourceMappingURL=constants-wIEKSp2G.mjs.map\n","import { createSharedComposable, usePreferredDark, useMutationObserver } from \"@vueuse/core\";\nimport { computed, toValue, ref, watch, readonly, inject } from \"vue\";\nimport { checkIfDarkTheme } from \"../../functions/isDarkTheme/index.mjs\";\nimport { I as INJECTION_KEY_THEME } from \"../../chunks/constants-wIEKSp2G.mjs\";\n/*!\n * SPDX-FileCopyrightText: 2024 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\nfunction useIsDarkThemeElement(el) {\n const element = computed(() => toValue(el) ?? document.body);\n const isDarkTheme = ref(checkIfDarkTheme(element.value));\n const isDarkSystemTheme = usePreferredDark();\n function updateIsDarkTheme() {\n isDarkTheme.value = checkIfDarkTheme(element.value);\n }\n useMutationObserver(element, updateIsDarkTheme, { attributes: true });\n watch(element, updateIsDarkTheme);\n watch(isDarkSystemTheme, updateIsDarkTheme, { immediate: true });\n return readonly(isDarkTheme);\n}\nconst useInternalIsDarkTheme = createSharedComposable(() => useIsDarkThemeElement());\nfunction useIsDarkTheme() {\n const isDarkTheme = useInternalIsDarkTheme();\n const enforcedTheme = inject(INJECTION_KEY_THEME, void 0);\n return computed(() => {\n if (enforcedTheme?.value) {\n return enforcedTheme.value === \"dark\";\n }\n return isDarkTheme.value;\n });\n}\nexport {\n useIsDarkTheme,\n useIsDarkThemeElement\n};\n//# sourceMappingURL=index.mjs.map\n","import { defaultWindow, isClient, onClickOutside, onKeyStroke, onLongPress, useActiveElement, useBattery, useBrowserLocation, useClipboard, useColorMode, useDark, useDeviceMotion, useDeviceOrientation, useDevicePixelRatio, useDevicesList, useDocumentVisibility, useDraggable, useElementBounding, useElementHover, useElementSize, useElementVisibility, useEyeDropper, useFullscreen, useGeolocation, useIdle, useImage, useInfiniteScroll, useIntersectionObserver, useMouse, useMouseInElement, useMousePressed, useNetwork, useNow, useObjectUrl, useOffsetPagination, useOnline, usePageLeave, usePointer, usePointerLock, usePreferredColorScheme, usePreferredContrast, usePreferredDark, usePreferredLanguages, usePreferredReducedMotion, usePreferredReducedTransparency, useResizeObserver, useScreenSafeArea, useScroll, useScrollLock, useStorage, useTimeAgo, useTimestamp, useVirtualList, useWindowFocus, useWindowSize } from \"@vueuse/core\";\nimport { computed, defineComponent, h, reactive, shallowRef, toRefs, toValue, watch } from \"vue\";\nimport { createDisposableDirective, reactiveOmit, toRefs as toRefs$1, useToggle } from \"@vueuse/shared\";\n//#region ../core/onClickOutside/component.ts\nconst OnClickOutside = /* @__PURE__ */ defineComponent((props, { slots, emit }) => {\n\tconst target = shallowRef();\n\tonClickOutside(target, (e) => {\n\t\temit(\"trigger\", e);\n\t}, props.options);\n\treturn () => {\n\t\tif (slots.default) return h(props.as || \"div\", { ref: target }, slots.default());\n\t};\n}, {\n\tname: \"OnClickOutside\",\n\tprops: [\"as\", \"options\"],\n\temits: [\"trigger\"]\n});\n//#endregion\n//#region ../core/onClickOutside/directive.ts\nconst stopClickOutsideMap = /* @__PURE__ */ new WeakMap();\nconst vOnClickOutside = {\n\tmounted(el, binding) {\n\t\tconst capture = !binding.modifiers.bubble;\n\t\tlet stop;\n\t\tif (typeof binding.value === \"function\") stop = onClickOutside(el, binding.value, { capture });\n\t\telse {\n\t\t\tconst [handler, options] = binding.value;\n\t\t\tstop = onClickOutside(el, handler, Object.assign({ capture }, options));\n\t\t}\n\t\tstopClickOutsideMap.set(el, stop);\n\t},\n\tunmounted(el) {\n\t\tconst stop = stopClickOutsideMap.get(el);\n\t\tif (stop && typeof stop === \"function\") stop();\n\t\telse stop === null || stop === void 0 || stop.stop();\n\t\tstopClickOutsideMap.delete(el);\n\t}\n};\n/** @deprecated use `vOnClickOutside` instead */\nconst VOnClickOutside = vOnClickOutside;\n//#endregion\n//#region ../core/onKeyStroke/directive.ts\nconst vOnKeyStroke = createDisposableDirective({ mounted(el, binding) {\n\tvar _binding$arg$split, _binding$arg;\n\tconst keys = (_binding$arg$split = (_binding$arg = binding.arg) === null || _binding$arg === void 0 ? void 0 : _binding$arg.split(\",\")) !== null && _binding$arg$split !== void 0 ? _binding$arg$split : true;\n\tif (typeof binding.value === \"function\") onKeyStroke(keys, binding.value, { target: el });\n\telse {\n\t\tconst [handler, options] = binding.value;\n\t\tonKeyStroke(keys, handler, {\n\t\t\ttarget: el,\n\t\t\t...options\n\t\t});\n\t}\n} });\n//#endregion\n//#region ../core/onLongPress/component.ts\nconst OnLongPress = /* @__PURE__ */ defineComponent((props, { slots, emit }) => {\n\tconst target = shallowRef();\n\tconst data = onLongPress(target, (e) => {\n\t\temit(\"trigger\", e);\n\t}, props.options);\n\treturn () => {\n\t\tif (slots.default) return h(props.as || \"div\", { ref: target }, slots.default(data));\n\t};\n}, {\n\tname: \"OnLongPress\",\n\tprops: [\"as\", \"options\"],\n\temits: [\"trigger\"]\n});\n//#endregion\n//#region ../core/onLongPress/directive.ts\nconst vOnLongPress = createDisposableDirective({ mounted(el, binding) {\n\tif (typeof binding.value === \"function\") onLongPress(el, binding.value, { modifiers: binding.modifiers });\n\telse onLongPress(el, ...binding.value);\n} });\n/** @deprecated use `vOnLongPress` instead */\nconst VOnLongPress = vOnLongPress;\n//#endregion\n//#region ../core/useActiveElement/component.ts\nconst UseActiveElement = /* @__PURE__ */ defineComponent((props, { slots }) => {\n\tconst data = reactive({ element: useActiveElement(props) });\n\treturn () => {\n\t\tif (slots.default) return slots.default(data);\n\t};\n}, {\n\tname: \"UseActiveElement\",\n\tprops: [\n\t\t\"deep\",\n\t\t\"triggerOnRemoval\",\n\t\t\"window\",\n\t\t\"document\"\n\t]\n});\n//#endregion\n//#region ../core/useBattery/component.ts\nconst UseBattery = /* @__PURE__ */ defineComponent((props, { slots }) => {\n\tconst data = reactive(useBattery(props));\n\treturn () => {\n\t\tif (slots.default) return slots.default(data);\n\t};\n}, {\n\tname: \"UseBattery\",\n\tprops: [\"navigator\"]\n});\n//#endregion\n//#region ../core/useBrowserLocation/component.ts\nconst UseBrowserLocation = /* @__PURE__ */ defineComponent((props, { slots }) => {\n\tconst data = reactive(useBrowserLocation(props));\n\treturn () => {\n\t\tif (slots.default) return slots.default(data);\n\t};\n}, {\n\tname: \"UseBrowserLocation\",\n\tprops: [\"window\"]\n});\n//#endregion\n//#region ../core/useClipboard/component.ts\nconst UseClipboard = /* @__PURE__ */ defineComponent((props, { slots }) => {\n\tconst data = reactive(useClipboard(props));\n\treturn () => {\n\t\tif (slots.default) return slots.default(data);\n\t};\n}, {\n\tname: \"UseClipboard\",\n\tprops: [\n\t\t\"source\",\n\t\t\"read\",\n\t\t\"navigator\",\n\t\t\"copiedDuring\",\n\t\t\"legacy\"\n\t]\n});\n//#endregion\n//#region ../core/useColorMode/component.ts\nconst UseColorMode = /* @__PURE__ */ defineComponent((props, { slots }) => {\n\tconst mode = useColorMode(props);\n\tconst data = reactive({\n\t\tmode,\n\t\tsystem: mode.system,\n\t\tstore: mode.store\n\t});\n\treturn () => {\n\t\tif (slots.default) return slots.default(data);\n\t};\n}, {\n\tname: \"UseColorMode\",\n\tprops: [\n\t\t\"attribute\",\n\t\t\"deep\",\n\t\t\"disableTransition\",\n\t\t\"emitAuto\",\n\t\t\"eventFilter\",\n\t\t\"flush\",\n\t\t\"initOnMounted\",\n\t\t\"initialValue\",\n\t\t\"listenToStorageChanges\",\n\t\t\"mergeDefaults\",\n\t\t\"modes\",\n\t\t\"onChanged\",\n\t\t\"onError\",\n\t\t\"selector\",\n\t\t\"serializer\",\n\t\t\"shallow\",\n\t\t\"storage\",\n\t\t\"storageKey\",\n\t\t\"storageRef\",\n\t\t\"window\",\n\t\t\"writeDefaults\"\n\t]\n});\n//#endregion\n//#region ../core/useDark/component.ts\nconst UseDark = /* @__PURE__ */ defineComponent((props, { slots }) => {\n\tconst isDark = useDark(props);\n\tconst data = reactive({\n\t\tisDark,\n\t\ttoggleDark: useToggle(isDark)\n\t});\n\treturn () => {\n\t\tif (slots.default) return slots.default(data);\n\t};\n}, {\n\tname: \"UseDark\",\n\tprops: [\n\t\t\"attribute\",\n\t\t\"deep\",\n\t\t\"disableTransition\",\n\t\t\"emitAuto\",\n\t\t\"eventFilter\",\n\t\t\"flush\",\n\t\t\"initOnMounted\",\n\t\t\"initialValue\",\n\t\t\"listenToStorageChanges\",\n\t\t\"mergeDefaults\",\n\t\t\"onChanged\",\n\t\t\"onError\",\n\t\t\"selector\",\n\t\t\"serializer\",\n\t\t\"shallow\",\n\t\t\"storage\",\n\t\t\"storageKey\",\n\t\t\"storageRef\",\n\t\t\"valueDark\",\n\t\t\"valueLight\",\n\t\t\"window\",\n\t\t\"writeDefaults\"\n\t]\n});\n//#endregion\n//#region ../core/useDeviceMotion/component.ts\nconst UseDeviceMotion = /* @__PURE__ */ defineComponent((props, { slots }) => {\n\tconst data = useDeviceMotion(props);\n\treturn () => {\n\t\tif (slots.default) return slots.default(data);\n\t};\n}, {\n\tname: \"UseDeviceMotion\",\n\tprops: [\n\t\t\"eventFilter\",\n\t\t\"requestPermissions\",\n\t\t\"window\"\n\t]\n});\n//#endregion\n//#region ../core/useDeviceOrientation/component.ts\nconst UseDeviceOrientation = /* @__PURE__ */ defineComponent((props, { slots }) => {\n\tconst data = reactive(useDeviceOrientation(props));\n\treturn () => {\n\t\tif (slots.default) return slots.default(data);\n\t};\n}, {\n\tname: \"UseDeviceOrientation\",\n\tprops: [\"window\"]\n});\n//#endregion\n//#region ../core/useDevicePixelRatio/component.ts\nconst UseDevicePixelRatio = /* @__PURE__ */ defineComponent((props, { slots }) => {\n\tconst data = reactive(useDevicePixelRatio(props));\n\treturn () => {\n\t\tif (slots.default) return slots.default(data);\n\t};\n}, {\n\tname: \"UseDevicePixelRatio\",\n\tprops: [\"window\"]\n});\n//#endregion\n//#region ../core/useDevicesList/component.ts\nconst UseDevicesList = /* @__PURE__ */ defineComponent((props, { slots }) => {\n\tconst data = reactive(useDevicesList(props));\n\treturn () => {\n\t\tif (slots.default) return slots.default(data);\n\t};\n}, {\n\tname: \"UseDevicesList\",\n\tprops: [\n\t\t\"constraints\",\n\t\t\"navigator\",\n\t\t\"onUpdated\",\n\t\t\"requestPermissions\"\n\t]\n});\n//#endregion\n//#region ../core/useDocumentVisibility/component.ts\nconst UseDocumentVisibility = /* @__PURE__ */ defineComponent((props, { slots }) => {\n\tconst data = reactive({ visibility: useDocumentVisibility(props) });\n\treturn () => {\n\t\tif (slots.default) return slots.default(data);\n\t};\n}, {\n\tname: \"UseDocumentVisibility\",\n\tprops: [\"document\"]\n});\n//#endregion\n//#region ../core/useDraggable/component.ts\nconst UseDraggable = /* @__PURE__ */ defineComponent((props, { slots }) => {\n\tconst target = shallowRef();\n\tconst handle = computed(() => {\n\t\tvar _toValue;\n\t\treturn (_toValue = toValue(props.handle)) !== null && _toValue !== void 0 ? _toValue : target.value;\n\t});\n\tconst containerElement = computed(() => {\n\t\tvar _ref;\n\t\treturn (_ref = props.containerElement) !== null && _ref !== void 0 ? _ref : void 0;\n\t});\n\tconst disabled = computed(() => !!props.disabled);\n\tconst storageValue = props.storageKey && useStorage(props.storageKey, toValue(props.initialValue) || {\n\t\tx: 0,\n\t\ty: 0\n\t}, isClient ? props.storageType === \"session\" ? sessionStorage : localStorage : void 0);\n\tconst initialValue = storageValue || props.initialValue || {\n\t\tx: 0,\n\t\ty: 0\n\t};\n\tconst onEnd = (position, event) => {\n\t\tvar _props$onEnd;\n\t\t(_props$onEnd = props.onEnd) === null || _props$onEnd === void 0 || _props$onEnd.call(props, position, event);\n\t\tif (!storageValue) return;\n\t\tstorageValue.value.x = position.x;\n\t\tstorageValue.value.y = position.y;\n\t};\n\tconst data = reactive(useDraggable(target, {\n\t\t...props,\n\t\thandle,\n\t\tinitialValue,\n\t\tonEnd,\n\t\tdisabled,\n\t\tcontainerElement\n\t}));\n\treturn () => {\n\t\tif (slots.default) return h(props.as || \"div\", {\n\t\t\tref: target,\n\t\t\tstyle: `touch-action:none;${data.style}`\n\t\t}, slots.default(data));\n\t};\n}, {\n\tname: \"UseDraggable\",\n\tprops: [\n\t\t\"storageKey\",\n\t\t\"storageType\",\n\t\t\"initialValue\",\n\t\t\"exact\",\n\t\t\"preventDefault\",\n\t\t\"stopPropagation\",\n\t\t\"pointerTypes\",\n\t\t\"as\",\n\t\t\"handle\",\n\t\t\"axis\",\n\t\t\"onStart\",\n\t\t\"onMove\",\n\t\t\"onEnd\",\n\t\t\"disabled\",\n\t\t\"buttons\",\n\t\t\"containerElement\",\n\t\t\"capture\",\n\t\t\"draggingElement\"\n\t]\n});\n//#endregion\n//#region ../core/useElementBounding/component.ts\nconst UseElementBounding = /* @__PURE__ */ defineComponent((props, { slots }) => {\n\tconst target = shallowRef();\n\tconst data = reactive(useElementBounding(target, props));\n\treturn () => {\n\t\tif (slots.default) return h(props.as || \"div\", { ref: target }, slots.default(data));\n\t};\n}, {\n\tname: \"UseElementBounding\",\n\tprops: [\n\t\t\"as\",\n\t\t\"immediate\",\n\t\t\"reset\",\n\t\t\"updateTiming\",\n\t\t\"windowResize\",\n\t\t\"windowScroll\"\n\t]\n});\n//#endregion\n//#region ../core/useElementBounding/directive.ts\nconst vElementBounding = createDisposableDirective({ mounted(el, binding) {\n\tconst [handler, options] = typeof binding.value === \"function\" ? [binding.value, {}] : binding.value;\n\tconst { height, bottom, left, right, top, width, x, y } = useElementBounding(el, options);\n\twatch([\n\t\theight,\n\t\tbottom,\n\t\tleft,\n\t\tright,\n\t\ttop,\n\t\twidth,\n\t\tx,\n\t\ty\n\t], () => handler({\n\t\theight,\n\t\tbottom,\n\t\tleft,\n\t\tright,\n\t\ttop,\n\t\twidth,\n\t\tx,\n\t\ty\n\t}));\n} });\n//#endregion\n//#region ../core/useElementHover/directive.ts\nconst vElementHover = createDisposableDirective({ mounted(el, binding) {\n\tconst value = binding.value;\n\tif (typeof value === \"function\") watch(useElementHover(el), (v) => value(v));\n\telse {\n\t\tconst [handler, options] = value;\n\t\twatch(useElementHover(el, options), (v) => handler(v));\n\t}\n} });\n//#endregion\n//#region ../core/useElementSize/component.ts\nconst UseElementSize = /* @__PURE__ */ defineComponent((props, { slots }) => {\n\tvar _toValue, _toValue2;\n\tconst target = shallowRef();\n\tconst { width, height } = toRefs(props);\n\tconst data = reactive(useElementSize(target, {\n\t\twidth: (_toValue = toValue(width)) !== null && _toValue !== void 0 ? _toValue : 0,\n\t\theight: (_toValue2 = toValue(height)) !== null && _toValue2 !== void 0 ? _toValue2 : 0\n\t}, {\n\t\tbox: props.box,\n\t\twindow: props.window\n\t}));\n\treturn () => {\n\t\tif (slots.default) return h(props.as || \"div\", { ref: target }, slots.default(data));\n\t};\n}, {\n\tname: \"UseElementSize\",\n\tprops: [\n\t\t\"as\",\n\t\t\"box\",\n\t\t\"height\",\n\t\t\"width\",\n\t\t\"window\"\n\t]\n});\n//#endregion\n//#region ../core/useElementSize/directive.ts\nconst vElementSize = createDisposableDirective({ mounted(el, binding) {\n\tvar _binding$value;\n\tconst handler = typeof binding.value === \"function\" ? binding.value : (_binding$value = binding.value) === null || _binding$value === void 0 ? void 0 : _binding$value[0];\n\tconst { width, height } = useElementSize(el, ...typeof binding.value === \"function\" ? [] : binding.value.slice(1));\n\twatch([width, height], ([width, height]) => handler({\n\t\twidth,\n\t\theight\n\t}));\n} });\n//#endregion\n//#region ../core/useElementVisibility/component.ts\nconst UseElementVisibility = /* @__PURE__ */ defineComponent((props, { slots }) => {\n\tconst target = shallowRef();\n\tconst data = reactive(useElementVisibility(target, {\n\t\t...props,\n\t\tcontrols: true\n\t}));\n\treturn () => {\n\t\tif (slots.default) return h(props.as || \"div\", { ref: target }, slots.default(data));\n\t};\n}, {\n\tname: \"UseElementVisibility\",\n\tprops: [\n\t\t\"as\",\n\t\t\"once\",\n\t\t\"rootMargin\",\n\t\t\"scrollTarget\",\n\t\t\"threshold\",\n\t\t\"window\"\n\t]\n});\n//#endregion\n//#region ../core/useElementVisibility/directive.ts\nconst vElementVisibility = createDisposableDirective({ mounted(el, binding) {\n\tif (typeof binding.value === \"function\") {\n\t\tconst handler = binding.value;\n\t\twatch(useElementVisibility(el), (v) => handler(v), { immediate: true });\n\t} else {\n\t\tconst [handler, options] = binding.value;\n\t\tif (options === null || options === void 0 ? void 0 : options.controls) {\n\t\t\tconst state = useElementVisibility(el, options);\n\t\t\twatch(state.isVisible, () => handler(state), { immediate: true });\n\t\t} else watch(useElementVisibility(el, options), (v) => handler(v), { immediate: true });\n\t}\n} });\n//#endregion\n//#region ../core/useEyeDropper/component.ts\nconst UseEyeDropper = /* @__PURE__ */ defineComponent((props, { slots }) => {\n\tconst data = reactive(useEyeDropper(props));\n\treturn () => {\n\t\tif (slots.default) return slots.default(data);\n\t};\n}, {\n\tname: \"UseEyeDropper\",\n\tprops: [\"initialValue\"]\n});\n//#endregion\n//#region ../core/useFullscreen/component.ts\nconst UseFullscreen = /* @__PURE__ */ defineComponent((props, { slots }) => {\n\tconst target = shallowRef();\n\tconst data = reactive(useFullscreen(target, props));\n\treturn () => {\n\t\tif (slots.default) return h(props.as || \"div\", { ref: target }, slots.default(data));\n\t};\n}, {\n\tname: \"UseFullscreen\",\n\tprops: [\n\t\t\"as\",\n\t\t\"autoExit\",\n\t\t\"document\"\n\t]\n});\n//#endregion\n//#region ../core/useGeolocation/component.ts\nconst UseGeolocation = /* @__PURE__ */ defineComponent((props, { slots }) => {\n\tconst data = reactive(useGeolocation(props));\n\treturn () => {\n\t\tif (slots.default) return slots.default(data);\n\t};\n}, {\n\tname: \"UseGeolocation\",\n\tprops: [\n\t\t\"enableHighAccuracy\",\n\t\t\"immediate\",\n\t\t\"maximumAge\",\n\t\t\"navigator\",\n\t\t\"timeout\"\n\t]\n});\n//#endregion\n//#region ../core/useIdle/component.ts\nconst UseIdle = /* @__PURE__ */ defineComponent((props, { slots }) => {\n\tconst data = reactive(useIdle(props.timeout, props));\n\treturn () => {\n\t\tif (slots.default) return slots.default(data);\n\t};\n}, {\n\tname: \"UseIdle\",\n\tprops: [\n\t\t\"eventFilter\",\n\t\t\"events\",\n\t\t\"initialState\",\n\t\t\"listenForVisibilityChange\",\n\t\t\"timeout\",\n\t\t\"window\"\n\t]\n});\n//#endregion\n//#region ../core/useImage/component.ts\nconst UseImage = /* @__PURE__ */ defineComponent((props, { slots }) => {\n\tconst data = reactive(useImage(props));\n\treturn () => {\n\t\tif (data.isLoading && slots.loading) return slots.loading(data);\n\t\telse if (data.error && slots.error) return slots.error(data.error);\n\t\tif (slots.default) return slots.default(data);\n\t\treturn h(props.as || \"img\", props);\n\t};\n}, {\n\tname: \"UseImage\",\n\tprops: [\n\t\t\"alt\",\n\t\t\"as\",\n\t\t\"class\",\n\t\t\"crossorigin\",\n\t\t\"decoding\",\n\t\t\"fetchPriority\",\n\t\t\"height\",\n\t\t\"ismap\",\n\t\t\"loading\",\n\t\t\"referrerPolicy\",\n\t\t\"sizes\",\n\t\t\"src\",\n\t\t\"srcset\",\n\t\t\"usemap\",\n\t\t\"width\"\n\t]\n});\n//#endregion\n//#region ../core/useInfiniteScroll/directive.ts\nconst vInfiniteScroll = createDisposableDirective({ mounted(el, binding) {\n\tif (typeof binding.value === \"function\") useInfiniteScroll(el, binding.value);\n\telse useInfiniteScroll(el, ...binding.value);\n} });\n//#endregion\n//#region ../core/useIntersectionObserver/directive.ts\nconst vIntersectionObserver = createDisposableDirective({ mounted(el, binding) {\n\tif (typeof binding.value === \"function\") useIntersectionObserver(el, binding.value);\n\telse useIntersectionObserver(el, ...binding.value);\n} });\n//#endregion\n//#region ../core/useMouse/component.ts\nconst UseMouse = /* @__PURE__ */ defineComponent((props, { slots }) => {\n\tconst data = reactive(useMouse(props));\n\treturn () => {\n\t\tif (slots.default) return slots.default(data);\n\t};\n}, {\n\tname: \"UseMouse\",\n\tprops: [\n\t\t\"eventFilter\",\n\t\t\"initialValue\",\n\t\t\"resetOnTouchEnds\",\n\t\t\"scroll\",\n\t\t\"target\",\n\t\t\"touch\",\n\t\t\"type\",\n\t\t\"window\"\n\t]\n});\n//#endregion\n//#region ../core/useMouseInElement/component.ts\nconst UseMouseInElement = /* @__PURE__ */ defineComponent((props, { slots }) => {\n\tconst target = shallowRef();\n\tconst data = reactive(useMouseInElement(target, props));\n\treturn () => {\n\t\tif (slots.default) return h(props.as || \"div\", { ref: target }, slots.default(data));\n\t};\n}, {\n\tname: \"UseMouseInElement\",\n\tprops: [\n\t\t\"as\",\n\t\t\"eventFilter\",\n\t\t\"handleOutside\",\n\t\t\"initialValue\",\n\t\t\"resetOnTouchEnds\",\n\t\t\"scroll\",\n\t\t\"target\",\n\t\t\"touch\",\n\t\t\"type\",\n\t\t\"window\",\n\t\t\"windowResize\",\n\t\t\"windowScroll\"\n\t]\n});\n//#endregion\n//#region ../core/useMouseInElement/directive.ts\nconst vMouseInElement = createDisposableDirective({ mounted(el, binding) {\n\tconst [handler, options] = typeof binding.value === \"function\" ? [binding.value, {}] : binding.value;\n\twatch(reactiveOmit(reactive(useMouseInElement(el, options)), \"stop\"), (val) => handler(val));\n} });\n//#endregion\n//#region ../core/useMousePressed/component.ts\nconst UseMousePressed = /* @__PURE__ */ defineComponent((props, { slots }) => {\n\tconst target = shallowRef();\n\tconst data = reactive(useMousePressed({\n\t\t...props,\n\t\ttarget\n\t}));\n\treturn () => {\n\t\tif (slots.default) return h(props.as || \"div\", { ref: target }, slots.default(data));\n\t};\n}, {\n\tname: \"UseMousePressed\",\n\tprops: [\n\t\t\"as\",\n\t\t\"capture\",\n\t\t\"drag\",\n\t\t\"initialValue\",\n\t\t\"onPressed\",\n\t\t\"onReleased\",\n\t\t\"touch\",\n\t\t\"window\"\n\t]\n});\n//#endregion\n//#region ../core/useNetwork/component.ts\nconst UseNetwork = /* @__PURE__ */ defineComponent((props, { slots }) => {\n\tconst data = reactive(useNetwork(props));\n\treturn () => {\n\t\tif (slots.default) return slots.default(data);\n\t};\n}, {\n\tname: \"UseNetwork\",\n\tprops: [\"window\"]\n});\n//#endregion\n//#region ../core/useNow/component.ts\nconst UseNow = /* @__PURE__ */ defineComponent((props, { slots }) => {\n\tconst data = reactive(useNow({\n\t\t...props,\n\t\tcontrols: true\n\t}));\n\treturn () => {\n\t\tif (slots.default) return slots.default(data);\n\t};\n}, {\n\tname: \"UseNow\",\n\tprops: [\n\t\t\"scheduler\",\n\t\t\"immediate\",\n\t\t\"interval\"\n\t]\n});\n//#endregion\n//#region ../core/useObjectUrl/component.ts\nconst UseObjectUrl = /* @__PURE__ */ defineComponent((props, { slots }) => {\n\tconst { object } = toRefs$1(props);\n\tconst url = useObjectUrl(object);\n\treturn () => {\n\t\tif (slots.default && url.value) return slots.default(url.value);\n\t};\n}, {\n\tname: \"UseObjectUrl\",\n\tprops: [\"object\"]\n});\n//#endregion\n//#region ../core/useOffsetPagination/component.ts\nconst UseOffsetPagination = /* @__PURE__ */ defineComponent((props, { slots, emit }) => {\n\tconst data = reactive(useOffsetPagination({\n\t\t...props,\n\t\ttotal: toValue(props.total) || void 0,\n\t\tonPageChange(...args) {\n\t\t\tvar _props$onPageChange;\n\t\t\t(_props$onPageChange = props.onPageChange) === null || _props$onPageChange === void 0 || _props$onPageChange.call(props, ...args);\n\t\t\temit(\"page-change\", ...args);\n\t\t},\n\t\tonPageSizeChange(...args) {\n\t\t\tvar _props$onPageSizeChan;\n\t\t\t(_props$onPageSizeChan = props.onPageSizeChange) === null || _props$onPageSizeChan === void 0 || _props$onPageSizeChan.call(props, ...args);\n\t\t\temit(\"page-size-change\", ...args);\n\t\t},\n\t\tonPageCountChange(...args) {\n\t\t\tvar _props$onPageCountCha;\n\t\t\t(_props$onPageCountCha = props.onPageCountChange) === null || _props$onPageCountCha === void 0 || _props$onPageCountCha.call(props, ...args);\n\t\t\temit(\"page-count-change\", ...args);\n\t\t}\n\t}));\n\treturn () => {\n\t\tif (slots.default) return slots.default(data);\n\t};\n}, {\n\tname: \"UseOffsetPagination\",\n\tprops: [\n\t\t\"onPageChange\",\n\t\t\"onPageCountChange\",\n\t\t\"onPageSizeChange\",\n\t\t\"page\",\n\t\t\"pageSize\",\n\t\t\"total\"\n\t]\n});\n//#endregion\n//#region ../core/useOnline/component.ts\nconst UseOnline = /* @__PURE__ */ defineComponent((props, { slots }) => {\n\tconst data = reactive({ isOnline: useOnline(props) });\n\treturn () => {\n\t\tif (slots.default) return slots.default(data);\n\t};\n}, {\n\tname: \"UseOnline\",\n\tprops: [\"window\"]\n});\n//#endregion\n//#region ../core/usePageLeave/component.ts\nconst UsePageLeave = /* @__PURE__ */ defineComponent((props, { slots }) => {\n\tconst data = reactive({ isLeft: usePageLeave(props) });\n\treturn () => {\n\t\tif (slots.default) return slots.default(data);\n\t};\n}, {\n\tname: \"UsePageLeave\",\n\tprops: [\"window\"]\n});\n//#endregion\n//#region ../core/usePointer/component.ts\nconst UsePointer = /* @__PURE__ */ defineComponent((props, { slots }) => {\n\tconst el = shallowRef(null);\n\tconst data = reactive(usePointer({\n\t\t...props,\n\t\ttarget: props.target === \"self\" ? el : defaultWindow\n\t}));\n\treturn () => {\n\t\tif (slots.default) return slots.default(data);\n\t};\n}, {\n\tname: \"UsePointer\",\n\tprops: [\n\t\t\"initialValue\",\n\t\t\"pointerTypes\",\n\t\t\"target\",\n\t\t\"window\"\n\t]\n});\n//#endregion\n//#region ../core/usePointerLock/component.ts\nconst UsePointerLock = /* @__PURE__ */ defineComponent((props, { slots }) => {\n\tconst target = shallowRef();\n\tconst data = reactive(usePointerLock(target));\n\treturn () => {\n\t\tif (slots.default) return h(props.as || \"div\", { ref: target }, slots.default(data));\n\t};\n}, {\n\tname: \"UsePointerLock\",\n\tprops: [\"as\", \"document\"]\n});\n//#endregion\n//#region ../core/usePreferredColorScheme/component.ts\nconst UsePreferredColorScheme = /* @__PURE__ */ defineComponent((props, { slots }) => {\n\tconst data = reactive({ colorScheme: usePreferredColorScheme(props) });\n\treturn () => {\n\t\tif (slots.default) return slots.default(data);\n\t};\n}, {\n\tname: \"UsePreferredColorScheme\",\n\tprops: [\"window\"]\n});\n//#endregion\n//#region ../core/usePreferredContrast/component.ts\nconst UsePreferredContrast = /* @__PURE__ */ defineComponent((props, { slots }) => {\n\tconst data = reactive({ contrast: usePreferredContrast(props) });\n\treturn () => {\n\t\tif (slots.default) return slots.default(data);\n\t};\n}, {\n\tname: \"UsePreferredContrast\",\n\tprops: [\"window\"]\n});\n//#endregion\n//#region ../core/usePreferredDark/component.ts\nconst UsePreferredDark = /* @__PURE__ */ defineComponent((props, { slots }) => {\n\tconst data = reactive({ prefersDark: usePreferredDark(props) });\n\treturn () => {\n\t\tif (slots.default) return slots.default(data);\n\t};\n}, {\n\tname: \"UsePreferredDark\",\n\tprops: [\"window\"]\n});\n//#endregion\n//#region ../core/usePreferredLanguages/component.ts\nconst UsePreferredLanguages = /* @__PURE__ */ defineComponent((props, { slots }) => {\n\tconst data = reactive({ languages: usePreferredLanguages(props) });\n\treturn () => {\n\t\tif (slots.default) return slots.default(data);\n\t};\n}, {\n\tname: \"UsePreferredLanguages\",\n\tprops: [\"window\"]\n});\n//#endregion\n//#region ../core/usePreferredReducedMotion/component.ts\nconst UsePreferredReducedMotion = /* @__PURE__ */ defineComponent((props, { slots }) => {\n\tconst data = reactive({ motion: usePreferredReducedMotion(props) });\n\treturn () => {\n\t\tif (slots.default) return slots.default(data);\n\t};\n}, {\n\tname: \"UsePreferredReducedMotion\",\n\tprops: [\"window\"]\n});\n//#endregion\n//#region ../core/usePreferredReducedTransparency/component.ts\nconst UsePreferredReducedTransparency = /* @__PURE__ */ defineComponent({\n\tname: \"UsePreferredReducedTransparency\",\n\tsetup(props, { slots }) {\n\t\tconst data = reactive({ transparency: usePreferredReducedTransparency() });\n\t\treturn () => {\n\t\t\tif (slots.default) return slots.default(data);\n\t\t};\n\t}\n});\n//#endregion\n//#region ../core/useResizeObserver/directive.ts\nconst vResizeObserver = createDisposableDirective({ mounted(el, binding) {\n\tif (typeof binding.value === \"function\") useResizeObserver(el, binding.value);\n\telse useResizeObserver(el, ...binding.value);\n} });\n//#endregion\n//#region ../core/useScreenSafeArea/component.ts\nconst UseScreenSafeArea = /* @__PURE__ */ defineComponent((props, { slots }) => {\n\tconst data = reactive(useScreenSafeArea());\n\treturn () => {\n\t\tif (slots.default) return h(props.as || \"div\", { style: {\n\t\t\tpaddingTop: props.top ? data.top : \"\",\n\t\t\tpaddingRight: props.right ? data.right : \"\",\n\t\t\tpaddingBottom: props.bottom ? data.bottom : \"\",\n\t\t\tpaddingLeft: props.left ? data.left : \"\",\n\t\t\tboxSizing: \"border-box\",\n\t\t\tmaxHeight: \"100vh\",\n\t\t\tmaxWidth: \"100vw\",\n\t\t\toverflow: \"auto\"\n\t\t} }, slots.default(data));\n\t};\n}, {\n\tname: \"UseScreenSafeArea\",\n\tprops: [\n\t\t\"top\",\n\t\t\"right\",\n\t\t\"bottom\",\n\t\t\"left\"\n\t]\n});\n//#endregion\n//#region ../core/useScroll/directive.ts\nconst vScroll = createDisposableDirective({ mounted(el, binding) {\n\tif (typeof binding.value === \"function\") {\n\t\tconst handler = binding.value;\n\t\tconst state = useScroll(el, {\n\t\t\tonScroll() {\n\t\t\t\thandler(state);\n\t\t\t},\n\t\t\tonStop() {\n\t\t\t\thandler(state);\n\t\t\t}\n\t\t});\n\t} else {\n\t\tconst [handler, options] = binding.value;\n\t\tconst state = useScroll(el, {\n\t\t\t...options,\n\t\t\tonScroll(e) {\n\t\t\t\tvar _options$onScroll;\n\t\t\t\t(_options$onScroll = options.onScroll) === null || _options$onScroll === void 0 || _options$onScroll.call(options, e);\n\t\t\t\thandler(state);\n\t\t\t},\n\t\t\tonStop(e) {\n\t\t\t\tvar _options$onStop;\n\t\t\t\t(_options$onStop = options.onStop) === null || _options$onStop === void 0 || _options$onStop.call(options, e);\n\t\t\t\thandler(state);\n\t\t\t}\n\t\t});\n\t}\n} });\n//#endregion\n//#region ../core/useScrollLock/directive.ts\nfunction onScrollLock() {\n\tlet isMounted = false;\n\tconst state = shallowRef(false);\n\treturn createDisposableDirective((el, binding) => {\n\t\tstate.value = binding.value;\n\t\tif (isMounted) return;\n\t\tisMounted = true;\n\t\tconst isLocked = useScrollLock(el, binding.value);\n\t\twatch(state, (v) => isLocked.value = v);\n\t});\n}\nconst vScrollLock = onScrollLock();\n//#endregion\n//#region ../core/useTimeAgo/component.ts\nconst UseTimeAgo = /* @__PURE__ */ defineComponent((props, { slots }) => {\n\tconst data = reactive(useTimeAgo(() => props.time, {\n\t\t...props,\n\t\tcontrols: true\n\t}));\n\treturn () => {\n\t\tif (slots.default) return slots.default(data);\n\t};\n}, {\n\tname: \"UseTimeAgo\",\n\tprops: [\n\t\t\"fullDateFormatter\",\n\t\t\"max\",\n\t\t\"messages\",\n\t\t\"rounding\",\n\t\t\"showSecond\",\n\t\t\"time\",\n\t\t\"units\",\n\t\t\"updateInterval\"\n\t]\n});\n//#endregion\n//#region ../core/useTimestamp/component.ts\nconst UseTimestamp = /* @__PURE__ */ defineComponent((props, { slots }) => {\n\tconst data = reactive(useTimestamp({\n\t\t...props,\n\t\tcontrols: true\n\t}));\n\treturn () => {\n\t\tif (slots.default) return slots.default(data);\n\t};\n}, {\n\tname: \"UseTimestamp\",\n\tprops: [\n\t\t\"scheduler\",\n\t\t\"callback\",\n\t\t\"immediate\",\n\t\t\"interval\",\n\t\t\"offset\"\n\t]\n});\n//#endregion\n//#region ../core/useVirtualList/component.ts\nconst UseVirtualList = /* @__PURE__ */ defineComponent((props, { slots, expose }) => {\n\tconst { list: listRef } = toRefs(props);\n\tconst { list, containerProps, wrapperProps, scrollTo } = useVirtualList(listRef, props.options);\n\texpose({ scrollTo });\n\tif (containerProps.style && typeof containerProps.style === \"object\" && !Array.isArray(containerProps.style)) containerProps.style.height = props.height || \"300px\";\n\treturn () => h(\"div\", { ...containerProps }, [h(\"div\", { ...wrapperProps.value }, list.value.map((item) => h(\"div\", { style: {\n\t\toverflow: \"hidden\",\n\t\theight: item.height\n\t} }, slots.default ? slots.default(item) : \"Please set content!\")))]);\n}, {\n\tname: \"UseVirtualList\",\n\tprops: [\n\t\t\"height\",\n\t\t\"list\",\n\t\t\"options\"\n\t]\n});\n//#endregion\n//#region ../core/useWindowFocus/component.ts\nconst UseWindowFocus = /* @__PURE__ */ defineComponent((props, { slots }) => {\n\tconst data = reactive({ focused: useWindowFocus(props) });\n\treturn () => {\n\t\tif (slots.default) return slots.default(data);\n\t};\n}, {\n\tname: \"UseWindowFocus\",\n\tprops: [\"window\"]\n});\n//#endregion\n//#region ../core/useWindowSize/component.ts\nconst UseWindowSize = /* @__PURE__ */ defineComponent((props, { slots }) => {\n\tconst data = reactive(useWindowSize(props));\n\treturn () => {\n\t\tif (slots.default) return slots.default(data);\n\t};\n}, {\n\tname: \"UseWindowSize\",\n\tprops: [\n\t\t\"includeScrollbar\",\n\t\t\"initialHeight\",\n\t\t\"initialWidth\",\n\t\t\"listenOrientation\",\n\t\t\"type\",\n\t\t\"window\"\n\t]\n});\n//#endregion\nexport { OnClickOutside, OnLongPress, UseActiveElement, UseBattery, UseBrowserLocation, UseClipboard, UseColorMode, UseDark, UseDeviceMotion, UseDeviceOrientation, UseDevicePixelRatio, UseDevicesList, UseDocumentVisibility, UseDraggable, UseElementBounding, UseElementSize, UseElementVisibility, UseEyeDropper, UseFullscreen, UseGeolocation, UseIdle, UseImage, UseMouse, UseMouseInElement, UseMousePressed, UseNetwork, UseNow, UseObjectUrl, UseOffsetPagination, UseOnline, UsePageLeave, UsePointer, UsePointerLock, UsePreferredColorScheme, UsePreferredContrast, UsePreferredDark, UsePreferredLanguages, UsePreferredReducedMotion, UsePreferredReducedTransparency, UseScreenSafeArea, UseTimeAgo, UseTimestamp, UseVirtualList, UseWindowFocus, UseWindowSize, VOnClickOutside, VOnLongPress, vElementBounding, vElementHover, vElementSize, vElementVisibility, vInfiniteScroll, vIntersectionObserver, vMouseInElement, vOnClickOutside, vOnKeyStroke, vOnLongPress, vResizeObserver, vScroll, vScrollLock };\n","import { l as logger } from \"../../chunks/logger-D3RVzcfQ.mjs\";\nfunction registerContactsMenuAction(action) {\n window._nc_contacts_menu_hooks ??= {};\n if (window._nc_contacts_menu_hooks[action.id]) {\n logger.error(`ContactsMenu action for id ${action.id} has already been registered`, {\n action\n });\n return;\n }\n window._nc_contacts_menu_hooks[action.id] = action;\n}\nfunction getEnabledContactsMenuActions(entry) {\n if (!window._nc_contacts_menu_hooks) {\n return [];\n }\n return Object.values(window._nc_contacts_menu_hooks).filter((action) => action.enabled(entry));\n}\nexport {\n getEnabledContactsMenuActions,\n registerContactsMenuAction\n};\n//# sourceMappingURL=index.mjs.map\n","const c = new Int32Array(4);\nclass h {\n static hashStr(i, a = !1) {\n return this.onePassHasher.start().appendStr(i).end(a);\n }\n static hashAsciiStr(i, a = !1) {\n return this.onePassHasher.start().appendAsciiStr(i).end(a);\n }\n // Private Static Variables\n static stateIdentity = new Int32Array([\n 1732584193,\n -271733879,\n -1732584194,\n 271733878\n ]);\n static buffer32Identity = new Int32Array([\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0\n ]);\n static hexChars = \"0123456789abcdef\";\n static hexOut = [];\n // Permanent instance is to use for one-call hashing\n static onePassHasher = new h();\n static _hex(i) {\n const a = h.hexChars, t = h.hexOut;\n let e, s, r, n;\n for (n = 0; n < 4; n += 1)\n for (s = n * 8, e = i[n], r = 0; r < 8; r += 2)\n t[s + 1 + r] = a.charAt(e & 15), e >>>= 4, t[s + 0 + r] = a.charAt(e & 15), e >>>= 4;\n return t.join(\"\");\n }\n static _md5cycle(i, a) {\n let t = i[0], e = i[1], s = i[2], r = i[3];\n t += (e & s | ~e & r) + a[0] - 680876936 | 0, t = (t << 7 | t >>> 25) + e | 0, r += (t & e | ~t & s) + a[1] - 389564586 | 0, r = (r << 12 | r >>> 20) + t | 0, s += (r & t | ~r & e) + a[2] + 606105819 | 0, s = (s << 17 | s >>> 15) + r | 0, e += (s & r | ~s & t) + a[3] - 1044525330 | 0, e = (e << 22 | e >>> 10) + s | 0, t += (e & s | ~e & r) + a[4] - 176418897 | 0, t = (t << 7 | t >>> 25) + e | 0, r += (t & e | ~t & s) + a[5] + 1200080426 | 0, r = (r << 12 | r >>> 20) + t | 0, s += (r & t | ~r & e) + a[6] - 1473231341 | 0, s = (s << 17 | s >>> 15) + r | 0, e += (s & r | ~s & t) + a[7] - 45705983 | 0, e = (e << 22 | e >>> 10) + s | 0, t += (e & s | ~e & r) + a[8] + 1770035416 | 0, t = (t << 7 | t >>> 25) + e | 0, r += (t & e | ~t & s) + a[9] - 1958414417 | 0, r = (r << 12 | r >>> 20) + t | 0, s += (r & t | ~r & e) + a[10] - 42063 | 0, s = (s << 17 | s >>> 15) + r | 0, e += (s & r | ~s & t) + a[11] - 1990404162 | 0, e = (e << 22 | e >>> 10) + s | 0, t += (e & s | ~e & r) + a[12] + 1804603682 | 0, t = (t << 7 | t >>> 25) + e | 0, r += (t & e | ~t & s) + a[13] - 40341101 | 0, r = (r << 12 | r >>> 20) + t | 0, s += (r & t | ~r & e) + a[14] - 1502002290 | 0, s = (s << 17 | s >>> 15) + r | 0, e += (s & r | ~s & t) + a[15] + 1236535329 | 0, e = (e << 22 | e >>> 10) + s | 0, t += (e & r | s & ~r) + a[1] - 165796510 | 0, t = (t << 5 | t >>> 27) + e | 0, r += (t & s | e & ~s) + a[6] - 1069501632 | 0, r = (r << 9 | r >>> 23) + t | 0, s += (r & e | t & ~e) + a[11] + 643717713 | 0, s = (s << 14 | s >>> 18) + r | 0, e += (s & t | r & ~t) + a[0] - 373897302 | 0, e = (e << 20 | e >>> 12) + s | 0, t += (e & r | s & ~r) + a[5] - 701558691 | 0, t = (t << 5 | t >>> 27) + e | 0, r += (t & s | e & ~s) + a[10] + 38016083 | 0, r = (r << 9 | r >>> 23) + t | 0, s += (r & e | t & ~e) + a[15] - 660478335 | 0, s = (s << 14 | s >>> 18) + r | 0, e += (s & t | r & ~t) + a[4] - 405537848 | 0, e = (e << 20 | e >>> 12) + s | 0, t += (e & r | s & ~r) + a[9] + 568446438 | 0, t = (t << 5 | t >>> 27) + e | 0, r += (t & s | e & ~s) + a[14] - 1019803690 | 0, r = (r << 9 | r >>> 23) + t | 0, s += (r & e | t & ~e) + a[3] - 187363961 | 0, s = (s << 14 | s >>> 18) + r | 0, e += (s & t | r & ~t) + a[8] + 1163531501 | 0, e = (e << 20 | e >>> 12) + s | 0, t += (e & r | s & ~r) + a[13] - 1444681467 | 0, t = (t << 5 | t >>> 27) + e | 0, r += (t & s | e & ~s) + a[2] - 51403784 | 0, r = (r << 9 | r >>> 23) + t | 0, s += (r & e | t & ~e) + a[7] + 1735328473 | 0, s = (s << 14 | s >>> 18) + r | 0, e += (s & t | r & ~t) + a[12] - 1926607734 | 0, e = (e << 20 | e >>> 12) + s | 0, t += (e ^ s ^ r) + a[5] - 378558 | 0, t = (t << 4 | t >>> 28) + e | 0, r += (t ^ e ^ s) + a[8] - 2022574463 | 0, r = (r << 11 | r >>> 21) + t | 0, s += (r ^ t ^ e) + a[11] + 1839030562 | 0, s = (s << 16 | s >>> 16) + r | 0, e += (s ^ r ^ t) + a[14] - 35309556 | 0, e = (e << 23 | e >>> 9) + s | 0, t += (e ^ s ^ r) + a[1] - 1530992060 | 0, t = (t << 4 | t >>> 28) + e | 0, r += (t ^ e ^ s) + a[4] + 1272893353 | 0, r = (r << 11 | r >>> 21) + t | 0, s += (r ^ t ^ e) + a[7] - 155497632 | 0, s = (s << 16 | s >>> 16) + r | 0, e += (s ^ r ^ t) + a[10] - 1094730640 | 0, e = (e << 23 | e >>> 9) + s | 0, t += (e ^ s ^ r) + a[13] + 681279174 | 0, t = (t << 4 | t >>> 28) + e | 0, r += (t ^ e ^ s) + a[0] - 358537222 | 0, r = (r << 11 | r >>> 21) + t | 0, s += (r ^ t ^ e) + a[3] - 722521979 | 0, s = (s << 16 | s >>> 16) + r | 0, e += (s ^ r ^ t) + a[6] + 76029189 | 0, e = (e << 23 | e >>> 9) + s | 0, t += (e ^ s ^ r) + a[9] - 640364487 | 0, t = (t << 4 | t >>> 28) + e | 0, r += (t ^ e ^ s) + a[12] - 421815835 | 0, r = (r << 11 | r >>> 21) + t | 0, s += (r ^ t ^ e) + a[15] + 530742520 | 0, s = (s << 16 | s >>> 16) + r | 0, e += (s ^ r ^ t) + a[2] - 995338651 | 0, e = (e << 23 | e >>> 9) + s | 0, t += (s ^ (e | ~r)) + a[0] - 198630844 | 0, t = (t << 6 | t >>> 26) + e | 0, r += (e ^ (t | ~s)) + a[7] + 1126891415 | 0, r = (r << 10 | r >>> 22) + t | 0, s += (t ^ (r | ~e)) + a[14] - 1416354905 | 0, s = (s << 15 | s >>> 17) + r | 0, e += (r ^ (s | ~t)) + a[5] - 57434055 | 0, e = (e << 21 | e >>> 11) + s | 0, t += (s ^ (e | ~r)) + a[12] + 1700485571 | 0, t = (t << 6 | t >>> 26) + e | 0, r += (e ^ (t | ~s)) + a[3] - 1894986606 | 0, r = (r << 10 | r >>> 22) + t | 0, s += (t ^ (r | ~e)) + a[10] - 1051523 | 0, s = (s << 15 | s >>> 17) + r | 0, e += (r ^ (s | ~t)) + a[1] - 2054922799 | 0, e = (e << 21 | e >>> 11) + s | 0, t += (s ^ (e | ~r)) + a[8] + 1873313359 | 0, t = (t << 6 | t >>> 26) + e | 0, r += (e ^ (t | ~s)) + a[15] - 30611744 | 0, r = (r << 10 | r >>> 22) + t | 0, s += (t ^ (r | ~e)) + a[6] - 1560198380 | 0, s = (s << 15 | s >>> 17) + r | 0, e += (r ^ (s | ~t)) + a[13] + 1309151649 | 0, e = (e << 21 | e >>> 11) + s | 0, t += (s ^ (e | ~r)) + a[4] - 145523070 | 0, t = (t << 6 | t >>> 26) + e | 0, r += (e ^ (t | ~s)) + a[11] - 1120210379 | 0, r = (r << 10 | r >>> 22) + t | 0, s += (t ^ (r | ~e)) + a[2] + 718787259 | 0, s = (s << 15 | s >>> 17) + r | 0, e += (r ^ (s | ~t)) + a[9] - 343485551 | 0, e = (e << 21 | e >>> 11) + s | 0, i[0] = t + i[0] | 0, i[1] = e + i[1] | 0, i[2] = s + i[2] | 0, i[3] = r + i[3] | 0;\n }\n _dataLength = 0;\n _bufferLength = 0;\n _state = new Int32Array(4);\n _buffer = new ArrayBuffer(68);\n _buffer8;\n _buffer32;\n constructor() {\n this._buffer8 = new Uint8Array(this._buffer, 0, 68), this._buffer32 = new Uint32Array(this._buffer, 0, 17), this.start();\n }\n /**\n * Initialise buffer to be hashed\n */\n start() {\n return this._dataLength = 0, this._bufferLength = 0, this._state.set(h.stateIdentity), this;\n }\n // Char to code point to to array conversion:\n // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/charCodeAt\n // #Example.3A_Fixing_charCodeAt_to_handle_non-Basic-Multilingual-Plane_characters_if_their_presence_earlier_in_the_string_is_unknown\n /**\n * Append a UTF-8 string to the hash buffer\n * @param str String to append\n */\n appendStr(i) {\n const a = this._buffer8, t = this._buffer32;\n let e = this._bufferLength, s, r;\n for (r = 0; r < i.length; r += 1) {\n if (s = i.charCodeAt(r), s < 128)\n a[e++] = s;\n else if (s < 2048)\n a[e++] = (s >>> 6) + 192, a[e++] = s & 63 | 128;\n else if (s < 55296 || s > 56319)\n a[e++] = (s >>> 12) + 224, a[e++] = s >>> 6 & 63 | 128, a[e++] = s & 63 | 128;\n else {\n if (s = (s - 55296) * 1024 + (i.charCodeAt(++r) - 56320) + 65536, s > 1114111)\n throw new Error(\n \"Unicode standard supports code points up to U+10FFFF\"\n );\n a[e++] = (s >>> 18) + 240, a[e++] = s >>> 12 & 63 | 128, a[e++] = s >>> 6 & 63 | 128, a[e++] = s & 63 | 128;\n }\n e >= 64 && (this._dataLength += 64, h._md5cycle(this._state, t), e -= 64, t[0] = t[16]);\n }\n return this._bufferLength = e, this;\n }\n /**\n * Append an ASCII string to the hash buffer\n * @param str String to append\n */\n appendAsciiStr(i) {\n const a = this._buffer8, t = this._buffer32;\n let e = this._bufferLength, s, r = 0;\n for (; ; ) {\n for (s = Math.min(i.length - r, 64 - e); s--; )\n a[e++] = i.charCodeAt(r++);\n if (e < 64)\n break;\n this._dataLength += 64, h._md5cycle(this._state, t), e = 0;\n }\n return this._bufferLength = e, this;\n }\n /**\n * Append a byte array to the hash buffer\n * @param input array to append\n */\n appendByteArray(i) {\n const a = this._buffer8, t = this._buffer32;\n let e = this._bufferLength, s, r = 0;\n for (; ; ) {\n for (s = Math.min(i.length - r, 64 - e); s--; )\n a[e++] = i[r++];\n if (e < 64)\n break;\n this._dataLength += 64, h._md5cycle(this._state, t), e = 0;\n }\n return this._bufferLength = e, this;\n }\n /**\n * Get the state of the hash buffer\n */\n getState() {\n const i = this._state;\n return {\n buffer: String.fromCharCode.apply(null, Array.from(this._buffer8)),\n buflen: this._bufferLength,\n length: this._dataLength,\n state: [i[0], i[1], i[2], i[3]]\n };\n }\n /**\n * Override the current state of the hash buffer\n * @param state New hash buffer state\n */\n setState(i) {\n const a = i.buffer, t = i.state, e = this._state;\n let s;\n for (this._dataLength = i.length, this._bufferLength = i.buflen, e[0] = t[0], e[1] = t[1], e[2] = t[2], e[3] = t[3], s = 0; s < a.length; s += 1)\n this._buffer8[s] = a.charCodeAt(s);\n }\n /**\n * Hash the current state of the hash buffer and return the result\n * @param raw Whether to return the value as an `Int32Array`\n */\n end(i = !1) {\n const a = this._bufferLength, t = this._buffer8, e = this._buffer32, s = (a >> 2) + 1;\n this._dataLength += a;\n const r = this._dataLength * 8;\n if (t[a] = 128, t[a + 1] = t[a + 2] = t[a + 3] = 0, e.set(h.buffer32Identity.subarray(s), s), a > 55 && (h._md5cycle(this._state, e), e.set(h.buffer32Identity)), r <= 4294967295)\n e[14] = r;\n else {\n const n = r.toString(16).match(/(.*?)(.{0,8})$/);\n if (n === null) return i ? c : \"\";\n const o = parseInt(n[2], 16), _ = parseInt(n[1], 16) || 0;\n e[14] = o, e[15] = _;\n }\n return h._md5cycle(this._state, e), i ? this._state : h._hex(this._state);\n }\n}\nif (h.hashStr(\"hello\") !== \"5d41402abc4b2a76b9719d911017c592\")\n throw new Error(\"Md5 self test failed.\");\nclass l {\n constructor(i, a = !0, t = 1048576) {\n this._callback = i, this._async = a, this._partSize = t, this._configureReader();\n }\n _reader;\n _md5;\n _part;\n // private _length!: number;\n _blob;\n /**\n * Hash a blob of data in the worker\n * @param blob Data to hash\n */\n hash(i) {\n const a = this;\n a._blob = i, a._part = 0, a._md5 = new h(), a._processPart();\n }\n _fail() {\n this._callback({\n success: !1,\n result: \"data read failed\"\n });\n }\n _hashData(i) {\n let a = this;\n a._md5.appendByteArray(new Uint8Array(i.target.result)), a._part * a._partSize >= a._blob.size ? a._callback({\n success: !0,\n result: a._md5.end()\n }) : a._processPart();\n }\n _processPart() {\n const i = this;\n let a = 0, t;\n i._part += 1, i._blob.size > i._partSize ? (a = i._part * i._partSize, a > i._blob.size && (a = i._blob.size), t = i._blob.slice(\n (i._part - 1) * i._partSize,\n a\n )) : t = i._blob, i._async ? i._reader.readAsArrayBuffer(t) : setTimeout(() => {\n try {\n i._hashData({\n target: {\n result: i._reader.readAsArrayBuffer(\n t\n )\n }\n });\n } catch {\n i._fail();\n }\n }, 0);\n }\n _configureReader() {\n const i = this;\n i._async ? (i._reader = new FileReader(), i._reader.onload = i._hashData.bind(i), i._reader.onerror = i._fail.bind(i), i._reader.onabort = i._fail.bind(i)) : i._reader = new FileReaderSync();\n }\n}\nclass u {\n _queue = [];\n _hashWorker;\n _processing;\n _ready = !0;\n constructor(i, a) {\n const t = this;\n Worker ? (t._hashWorker = new Worker(i, a), t._hashWorker.onmessage = t._recievedMessage.bind(t), t._hashWorker.onerror = (e) => {\n t._ready = !1, console.error(\"Hash worker failure\", e);\n }) : (t._ready = !1, console.error(\"Web Workers are not supported in this browser\"));\n }\n /**\n * Hash a blob of data in the worker\n * @param blob Data to hash\n * @returns Promise of the Hashed result\n */\n hash(i) {\n const a = this;\n let t;\n return t = new Promise((e, s) => {\n a._queue.push({\n blob: i,\n resolve: e,\n reject: s\n }), a._processNext();\n }), t;\n }\n /** Terminate any existing hash requests */\n terminate() {\n this._ready = !1, this._hashWorker.terminate();\n }\n // Processes the next item in the queue\n _processNext() {\n this._ready && !this._processing && this._queue.length > 0 && (this._processing = this._queue.pop(), this._hashWorker.postMessage(this._processing.blob));\n }\n // Hash result is returned from the worker\n _recievedMessage(i) {\n const a = i.data;\n a.success ? this._processing?.resolve(a.result) : this._processing?.reject(a.result), this._processing = void 0, this._processNext();\n }\n}\nexport {\n h as Md5,\n l as Md5FileHasher,\n u as ParallelHasher\n};\n//# sourceMappingURL=index.es.js.map\n","import { Md5 } from \"ts-md5\";\nimport { g as generatePalette } from \"../../chunks/colors-Cv9F-jWS.mjs\";\nfunction hashCode(str) {\n let hash = str;\n if (str.match(/^([0-9a-f]{4}-?){8}$/) === null) {\n hash = Md5.hashStr(str);\n }\n hash = hash.replace(/[^0-9a-f]/g, \"\");\n let finalInt = 0;\n for (let i = 0; i < hash.length; i++) {\n finalInt += parseInt(hash.charAt(i), 16);\n }\n return finalInt;\n}\nfunction usernameToColor(username) {\n const steps = 6;\n const finalPalette = generatePalette(steps);\n const hash = hashCode(username.toLocaleLowerCase());\n return finalPalette[hash % finalPalette.length];\n}\nexport {\n usernameToColor\n};\n//# sourceMappingURL=index.mjs.map\n","'use strict';\n\n(function (global) {\n\n // minimal symbol polyfill for IE11 and others\n if (typeof Symbol !== 'function') {\n var Symbol = function(name) {\n return name;\n }\n\n Symbol.nonNative = true;\n }\n\n const STATE_PLAINTEXT = Symbol('plaintext');\n const STATE_HTML = Symbol('html');\n const STATE_COMMENT = Symbol('comment');\n\n const ALLOWED_TAGS_REGEX = /<(\\w*)>/g;\n const NORMALIZE_TAG_REGEX = /<\\/?([^\\s\\/>]+)/;\n\n function striptags(html, allowable_tags, tag_replacement) {\n html = html || '';\n allowable_tags = allowable_tags || [];\n tag_replacement = tag_replacement || '';\n\n let context = init_context(allowable_tags, tag_replacement);\n\n return striptags_internal(html, context);\n }\n\n function init_striptags_stream(allowable_tags, tag_replacement) {\n allowable_tags = allowable_tags || [];\n tag_replacement = tag_replacement || '';\n\n let context = init_context(allowable_tags, tag_replacement);\n\n return function striptags_stream(html) {\n return striptags_internal(html || '', context);\n };\n }\n\n striptags.init_streaming_mode = init_striptags_stream;\n\n function init_context(allowable_tags, tag_replacement) {\n allowable_tags = parse_allowable_tags(allowable_tags);\n\n return {\n allowable_tags : allowable_tags,\n tag_replacement: tag_replacement,\n\n state : STATE_PLAINTEXT,\n tag_buffer : '',\n depth : 0,\n in_quote_char : ''\n };\n }\n\n function striptags_internal(html, context) {\n if (typeof html != \"string\") {\n throw new TypeError(\"'html' parameter must be a string\");\n }\n\n let allowable_tags = context.allowable_tags;\n let tag_replacement = context.tag_replacement;\n\n let state = context.state;\n let tag_buffer = context.tag_buffer;\n let depth = context.depth;\n let in_quote_char = context.in_quote_char;\n let output = '';\n\n for (let idx = 0, length = html.length; idx < length; idx++) {\n let char = html[idx];\n\n if (state === STATE_PLAINTEXT) {\n switch (char) {\n case '<':\n state = STATE_HTML;\n tag_buffer += char;\n break;\n\n default:\n output += char;\n break;\n }\n }\n\n else if (state === STATE_HTML) {\n switch (char) {\n case '<':\n // ignore '<' if inside a quote\n if (in_quote_char) {\n break;\n }\n\n // we're seeing a nested '<'\n depth++;\n break;\n\n case '>':\n // ignore '>' if inside a quote\n if (in_quote_char) {\n break;\n }\n\n // something like this is happening: '<<>>'\n if (depth) {\n depth--;\n\n break;\n }\n\n // this is closing the tag in tag_buffer\n in_quote_char = '';\n state = STATE_PLAINTEXT;\n tag_buffer += '>';\n\n if (allowable_tags.has(normalize_tag(tag_buffer))) {\n output += tag_buffer;\n } else {\n output += tag_replacement;\n }\n\n tag_buffer = '';\n break;\n\n case '\"':\n case '\\'':\n // catch both single and double quotes\n\n if (char === in_quote_char) {\n in_quote_char = '';\n } else {\n in_quote_char = in_quote_char || char;\n }\n\n tag_buffer += char;\n break;\n\n case '-':\n if (tag_buffer === '':\n if (tag_buffer.slice(-2) == '--') {\n // close the comment\n state = STATE_PLAINTEXT;\n }\n\n tag_buffer = '';\n break;\n\n default:\n tag_buffer += char;\n break;\n }\n }\n }\n\n // save the context for future iterations\n context.state = state;\n context.tag_buffer = tag_buffer;\n context.depth = depth;\n context.in_quote_char = in_quote_char;\n\n return output;\n }\n\n function parse_allowable_tags(allowable_tags) {\n let tag_set = new Set();\n\n if (typeof allowable_tags === 'string') {\n let match;\n\n while ((match = ALLOWED_TAGS_REGEX.exec(allowable_tags))) {\n tag_set.add(match[1]);\n }\n }\n\n else if (!Symbol.nonNative &&\n typeof allowable_tags[Symbol.iterator] === 'function') {\n\n tag_set = new Set(allowable_tags);\n }\n\n else if (typeof allowable_tags.forEach === 'function') {\n // IE11 compatible\n allowable_tags.forEach(tag_set.add, tag_set);\n }\n\n return tag_set;\n }\n\n function normalize_tag(tag_buffer) {\n let match = NORMALIZE_TAG_REGEX.exec(tag_buffer);\n\n return match ? match[1].toLowerCase() : null;\n }\n\n if (typeof define === 'function' && define.amd) {\n // AMD\n define(function module_factory() { return striptags; });\n }\n\n else if (typeof module === 'object' && module.exports) {\n // Node\n module.exports = striptags;\n }\n\n else {\n // Browser\n global.striptags = striptags;\n }\n}(this));\n","import '../assets/NcMentionBubble-BeGb2xGc.css';\nimport { generateUrl } from \"@nextcloud/router\";\nimport { checkIfDarkTheme } from \"../functions/isDarkTheme/index.mjs\";\nfunction getAvatarUrl(user, options) {\n const size = (options?.size || 64) <= 64 ? 64 : 512;\n const guestUrl = options?.isGuest ? \"/guest\" : \"\";\n const themeUrl = options?.isDarkTheme ?? checkIfDarkTheme(document.body) ? \"/dark\" : \"\";\n return generateUrl(`/avatar${guestUrl}/{user}/{size}${themeUrl}?guestFallback=true`, {\n user,\n size\n });\n}\nexport {\n getAvatarUrl as g\n};\n//# sourceMappingURL=NcMentionBubble.vue_vue_type_style_index_0_scoped_3c4a673d_lang-DyqakLm5.mjs.map\n","import '../assets/NcAvatar-Bs7qEhkA.css';\nimport { getCurrentUser } from \"@nextcloud/auth\";\nimport axios from \"@nextcloud/axios\";\nimport { getBuilder } from \"@nextcloud/browser-storage\";\nimport { unsubscribe, subscribe } from \"@nextcloud/event-bus\";\nimport { generateOcsUrl, generateUrl } from \"@nextcloud/router\";\nimport { vOnClickOutside } from \"@vueuse/components\";\nimport { N as NcActions, I as IconDotsHorizontal } from \"./NcActions-C-wDqSrv.mjs\";\nimport { g as getRoute } from \"./autolink-DrIurosL.mjs\";\nimport \"../composables/useFormatDateTime/index.mjs\";\nimport \"../composables/useHotKey/index.mjs\";\nimport { useIsDarkTheme } from \"../composables/useIsDarkTheme/index.mjs\";\nimport \"../composables/useIsFullscreen/index.mjs\";\nimport \"../composables/useIsMobile/index.mjs\";\nimport { getEnabledContactsMenuActions } from \"../functions/contactsMenu/index.mjs\";\nimport { usernameToColor } from \"../functions/usernameToColor/index.mjs\";\nimport { r as register, m as t10, a as t } from \"./_l10n-wdIzZwir.mjs\";\nimport \"escape-html\";\nimport \"striptags\";\nimport { resolveComponent, resolveDirective, withDirectives, openBlock, createElementBlock, normalizeStyle, normalizeClass, renderSlot, createCommentVNode, createBlock, withCtx, createSlots, Fragment, renderList, resolveDynamicComponent, mergeProps, createTextVNode, toDisplayString, createVNode, createElementVNode } from \"vue\";\nimport { g as getAvatarUrl } from \"./NcMentionBubble.vue_vue_type_style_index_0_scoped_3c4a673d_lang-DyqakLm5.mjs\";\nimport { _ as _export_sfc } from \"./_plugin-vue_export-helper-1tPrXgE0.mjs\";\nimport { getCapabilities } from \"@nextcloud/capabilities\";\nimport { l as logger } from \"./logger-D3RVzcfQ.mjs\";\nimport { N as NcUserStatusIcon, g as getUserStatusText } from \"./NcUserStatusIcon-BF5OEQFU.mjs\";\nimport { N as NcActionButton } from \"./NcActionButton-BO5T5ePT.mjs\";\nimport { N as NcActionLink } from \"./NcActionLink-BFiaYt9A.mjs\";\nimport { N as NcActionRouter } from \"./NcActionRouter-vYFtIOzD.mjs\";\nimport { N as NcActionText } from \"./NcActionText-CQ9qwJ0p.mjs\";\nimport { N as NcButton } from \"./NcButton-jvoYS2my.mjs\";\nimport { N as NcIconSvgWrapper } from \"./NcIconSvgWrapper-g8ubWhoz.mjs\";\nimport { N as NcLoadingIcon } from \"./NcLoadingIcon-BOVpFVQz.mjs\";\nregister(t10);\nconst userStatus = {\n data() {\n return {\n hasStatus: false,\n userStatus: {\n status: null,\n message: null,\n icon: null\n }\n };\n },\n methods: {\n /**\n * Fetches the user-status from the server\n *\n * @param {string} userId UserId of the user to fetch the status for\n *\n * @return {Promise}\n */\n async fetchUserStatus(userId) {\n if (!userId) {\n return;\n }\n const capabilities = getCapabilities();\n if (!Object.hasOwn(capabilities, \"user_status\") || !capabilities.user_status.enabled) {\n return;\n }\n if (!getCurrentUser()) {\n return;\n }\n try {\n const { data } = await axios.get(generateOcsUrl(\"apps/user_status/api/v1/statuses/{userId}\", { userId }));\n this.setUserStatus(data.ocs.data);\n } catch (e) {\n if (e.response.status === 404 && e.response.data.ocs?.data?.length === 0) {\n return;\n }\n logger.error(\"Failed to fetch user status\", { error: e });\n }\n },\n /**\n * Sets the user status\n *\n * @param {Record} options - Options for setting the user status\n * @param {string} options.status user's status\n * @param {string} options.message user's message\n * @param {string} options.icon user's icon\n */\n setUserStatus({ status, message, icon }) {\n this.userStatus.status = status || \"\";\n this.userStatus.message = message || \"\";\n this.userStatus.icon = icon || \"\";\n this.hasStatus = !!status;\n }\n }\n};\nconst browserStorage = getBuilder(\"nextcloud\").persist().build();\nfunction getUserHasAvatar(userId) {\n const flag = browserStorage.getItem(\"user-has-avatar.\" + userId);\n if (typeof flag === \"string\") {\n return Boolean(flag);\n }\n return null;\n}\nfunction setUserHasAvatar(userId, flag) {\n if (userId) {\n browserStorage.setItem(\"user-has-avatar.\" + userId, flag);\n }\n}\nconst _sfc_main = {\n name: \"NcAvatar\",\n directives: {\n /** @type {import('vue').ObjectDirective} */\n ClickOutside: vOnClickOutside\n },\n components: {\n IconDotsHorizontal,\n NcActions,\n NcButton,\n NcIconSvgWrapper,\n NcLoadingIcon,\n NcUserStatusIcon\n },\n mixins: [userStatus],\n props: {\n /**\n * Set a custom url to the avatar image\n * either the url, user or displayName property must be defined\n */\n url: {\n type: String,\n default: void 0\n },\n /**\n * Set a css icon-class for an icon to be used instead of the avatar.\n */\n iconClass: {\n type: String,\n default: void 0\n },\n /**\n * Set the user id to fetch the avatar\n * either the url, user or displayName property must be defined\n */\n user: {\n type: String,\n default: void 0\n },\n /**\n * Do not show the user status on the avatar.\n */\n hideStatus: {\n type: Boolean,\n default: false\n },\n /**\n * Show the verbose user status (e.g. \"online\" / \"away\") instead of just the status icon.\n */\n verboseStatus: {\n type: Boolean,\n default: false\n },\n /**\n * When the user status was preloaded via another source it can be handed in with this property to save the request.\n * If this property is not set the status will be fetched automatically.\n * If a preloaded no-status is available provide this object with properties \"status\", \"icon\" and \"message\" set to null.\n */\n preloadedUserStatus: {\n type: Object,\n default: void 0\n },\n /**\n * Is the user a guest user (then we have to user a different endpoint)\n */\n isGuest: {\n type: Boolean,\n default: false\n },\n /**\n * Set a display name that will be rendered as a tooltip\n * either the url, user or displayName property must be defined\n * specify just the displayname to generate a placeholder avatar without\n * trying to fetch the avatar based on the user id\n */\n displayName: {\n type: String,\n default: void 0\n },\n /**\n * Set a size in px for the rendered avatar\n */\n size: {\n type: Number,\n default: 32\n },\n /**\n * Do not automatically generate a placeholder avatars if there is no real avatar is available.\n */\n noPlaceholder: {\n type: Boolean,\n default: false\n },\n /**\n * Disable the tooltip\n */\n disableTooltip: {\n type: Boolean,\n default: false\n },\n /**\n * Disable the menu\n */\n disableMenu: {\n type: Boolean,\n default: false\n },\n /**\n * Declares a custom tooltip when not null\n * Fallback will be the displayName\n *\n * requires disableTooltip not to be set to true\n */\n tooltipMessage: {\n type: String,\n default: null\n },\n /**\n * Declares username is not a user's name, when true.\n * Prevents loading user's avatar from server and forces generating colored initials,\n * i.e. if the user is a group\n */\n isNoUser: {\n type: Boolean,\n default: false\n },\n /**\n * Selector for the popover menu container\n */\n menuContainer: {\n type: [Boolean, String, Object, Element],\n default: \"body\"\n }\n },\n setup() {\n const isDarkTheme = useIsDarkTheme();\n return {\n isDarkTheme\n };\n },\n data() {\n return {\n avatarUrlLoaded: null,\n avatarSrcSetLoaded: null,\n userDoesNotExist: false,\n isAvatarLoaded: false,\n isMenuLoaded: false,\n contactsMenuLoading: false,\n contactsMenuData: {},\n contactsMenuActions: [],\n contactsMenuOpenState: false\n };\n },\n computed: {\n avatarAriaLabel() {\n if (!this.hasMenu) {\n return;\n }\n if (this.canDisplayUserStatus || this.showUserStatusIconOnAvatar) {\n return t(\"Avatar of {displayName}, {status}\", { displayName: this.displayName ?? this.user, status: getUserStatusText(this.userStatus.status) });\n }\n return t(\"Avatar of {displayName}\", { displayName: this.displayName ?? this.user });\n },\n canDisplayUserStatus() {\n return !this.hideStatus && this.hasStatus && [\"online\", \"away\", \"busy\", \"dnd\"].includes(this.userStatus.status);\n },\n showUserStatusIconOnAvatar() {\n return !this.hideStatus && !this.verboseStatus && this.hasStatus && this.userStatus.status !== \"dnd\" && this.userStatus.icon;\n },\n /**\n * The user identifier, either the display name if set or the user property\n * If both properties are not set an empty string is returned\n */\n userIdentifier() {\n if (this.isDisplayNameDefined) {\n return this.displayName;\n }\n if (this.isUserDefined) {\n return this.user;\n }\n return \"\";\n },\n isUserDefined() {\n return typeof this.user !== \"undefined\";\n },\n isDisplayNameDefined() {\n return typeof this.displayName !== \"undefined\";\n },\n isUrlDefined() {\n return typeof this.url !== \"undefined\";\n },\n hasMenu() {\n if (this.disableMenu) {\n return false;\n }\n if (this.isMenuLoaded) {\n return this.menu.length > 0;\n }\n return !(this.user === getCurrentUser()?.uid || this.userDoesNotExist || this.url);\n },\n /**\n * True if initials should be shown as the user icon fallback\n */\n showInitials() {\n return !this.noPlaceholder && this.userDoesNotExist && !(this.iconClass || this.$slots.icon);\n },\n avatarStyle() {\n return {\n \"--avatar-size\": this.size + \"px\",\n lineHeight: this.showInitials ? this.size + \"px\" : 0,\n fontSize: Math.round(this.size * 0.45) + \"px\"\n };\n },\n initialsWrapperStyle() {\n const { r, g, b } = usernameToColor(this.userIdentifier);\n return {\n backgroundColor: `rgba(${r}, ${g}, ${b}, 0.1)`\n };\n },\n initialsStyle() {\n const { r, g, b } = usernameToColor(this.userIdentifier);\n return {\n color: `rgb(${r}, ${g}, ${b})`\n };\n },\n tooltip() {\n if (this.disableTooltip) {\n return null;\n }\n if (this.tooltipMessage) {\n return this.tooltipMessage;\n }\n return this.displayName;\n },\n /**\n * Get the (max. two) initials of the user as uppcase string\n */\n initials() {\n let initials = \"?\";\n if (this.showInitials) {\n const user = this.userIdentifier.trim();\n if (user === \"\") {\n return initials;\n }\n const filteredChars = user.match(/[\\p{L}\\p{N}\\s]/gu);\n if (!filteredChars) {\n return initials;\n }\n const filtered = filteredChars.join(\"\");\n const idx = filtered.lastIndexOf(\" \");\n initials = String.fromCodePoint(filtered.codePointAt(0));\n if (idx !== -1) {\n initials = initials.concat(String.fromCodePoint(filtered.codePointAt(idx + 1)));\n }\n }\n return initials.toLocaleUpperCase();\n },\n menu() {\n const actions = this.contactsMenuActions.map((item) => {\n const route = getRoute(this.$router, item.hyperlink);\n return {\n ncActionComponent: route ? NcActionRouter : NcActionLink,\n ncActionComponentProps: route ? {\n to: route,\n icon: item.icon\n } : {\n href: item.hyperlink,\n icon: item.icon\n },\n text: item.title\n };\n });\n for (const action of getEnabledContactsMenuActions(this.contactsMenuData)) {\n try {\n actions.push({\n ncActionComponent: NcActionButton,\n ncActionComponentProps: {\n onClick: () => action.callback(this.contactsMenuData)\n },\n text: action.displayName(this.contactsMenuData),\n iconSvg: action.iconSvg(this.contactsMenuData)\n });\n } catch (error) {\n logger.error(`Failed to render ContactsMenu action ${action.id}`, {\n error,\n action\n });\n }\n }\n function escape(html) {\n const text = document.createTextNode(html);\n const p = document.createElement(\"p\");\n p.appendChild(text);\n return p.innerHTML;\n }\n if (!this.hideStatus && (this.userStatus.icon || this.userStatus.message)) {\n const emojiIcon = `\n\t\t\t\t\t${escape(this.userStatus.icon)}\n\t\t\t\t`;\n return [{\n ncActionComponent: NcActionText,\n ncActionComponentProps: {},\n iconSvg: this.userStatus.icon ? emojiIcon : void 0,\n text: `${this.userStatus.message}`\n }].concat(actions);\n }\n return actions;\n }\n },\n watch: {\n url() {\n this.userDoesNotExist = false;\n this.loadAvatarUrl();\n },\n user() {\n this.userDoesNotExist = false;\n this.isMenuLoaded = false;\n this.loadAvatarUrl();\n }\n },\n mounted() {\n this.loadAvatarUrl();\n subscribe(\"settings:avatar:updated\", this.loadAvatarUrl);\n subscribe(\"settings:display-name:updated\", this.loadAvatarUrl);\n if (!this.hideStatus && this.user && !this.isNoUser) {\n if (!this.preloadedUserStatus) {\n this.fetchUserStatus(this.user);\n } else {\n this.setUserStatus(this.preloadedUserStatus);\n }\n subscribe(\"user_status:status.updated\", this.handleUserStatusUpdated);\n } else if (!this.hideStatus && this.preloadedUserStatus) {\n this.setUserStatus(this.preloadedUserStatus);\n }\n },\n beforeUnmount() {\n unsubscribe(\"settings:avatar:updated\", this.loadAvatarUrl);\n unsubscribe(\"settings:display-name:updated\", this.loadAvatarUrl);\n unsubscribe(\"user_status:status.updated\", this.handleUserStatusUpdated);\n },\n methods: {\n t,\n handleUserStatusUpdated(state) {\n if (this.user === state.userId) {\n this.userStatus = {\n status: state.status,\n icon: state.icon,\n message: state.message\n };\n this.hasStatus = state.status !== null;\n }\n },\n /**\n * Toggle the popover menu on click or enter\n *\n * @param {KeyboardEvent|MouseEvent} event the UI event\n */\n async toggleMenu(event) {\n if (event.type === \"keydown\" && event.key !== \"Enter\") {\n return;\n }\n if (!this.contactsMenuOpenState) {\n await this.fetchContactsMenu();\n }\n this.contactsMenuOpenState = !this.contactsMenuOpenState;\n },\n closeMenu() {\n this.contactsMenuOpenState = false;\n },\n async fetchContactsMenu() {\n this.contactsMenuLoading = true;\n try {\n const user = encodeURIComponent(this.user);\n const { data } = await axios.post(generateUrl(\"contactsmenu/findOne\"), `shareType=0&shareWith=${user}`);\n this.contactsMenuData = data;\n this.contactsMenuActions = data.topAction ? [data.topAction].concat(data.actions) : data.actions;\n } catch {\n this.contactsMenuOpenState = false;\n }\n this.contactsMenuLoading = false;\n this.isMenuLoaded = true;\n },\n /**\n * Handle avatar loading if user or url defined\n */\n loadAvatarUrl() {\n this.isAvatarLoaded = false;\n if (!this.isUrlDefined && (!this.isUserDefined || this.isNoUser || this.iconClass || this.$slots.icon)) {\n this.isAvatarLoaded = true;\n this.userDoesNotExist = true;\n return;\n }\n if (this.isUrlDefined) {\n this.updateImageIfValid(this.url);\n return;\n }\n if (this.size <= 64) {\n const avatarUrl = this.avatarUrlGenerator(this.user, 64);\n const srcset = [\n avatarUrl + \" 1x\",\n this.avatarUrlGenerator(this.user, 512) + \" 8x\"\n ].join(\", \");\n this.updateImageIfValid(avatarUrl, srcset);\n } else {\n const avatarUrl = this.avatarUrlGenerator(this.user, 512);\n this.updateImageIfValid(avatarUrl);\n }\n },\n /**\n * Generate an avatar url from the server's avatar endpoint\n *\n * @param {string} user the user id\n * @param {number} size the desired size\n * @return {string}\n */\n avatarUrlGenerator(user, size) {\n let avatarUrl = getAvatarUrl(user, {\n size,\n isDarkTheme: this.isDarkTheme,\n isGuest: this.isGuest\n });\n if (user === getCurrentUser()?.uid && typeof oc_userconfig !== \"undefined\") {\n avatarUrl += \"?v=\" + window.oc_userconfig.avatar.version;\n }\n return avatarUrl;\n },\n /**\n * Check if the provided url is valid and update Avatar if so\n *\n * @param {string} url the avatar url\n * @param {Array} srcset the avatar srcset\n */\n updateImageIfValid(url, srcset = null) {\n const userHasAvatar = getUserHasAvatar(this.user);\n if (this.isUserDefined && typeof userHasAvatar === \"boolean\") {\n this.isAvatarLoaded = true;\n this.avatarUrlLoaded = url;\n if (srcset) {\n this.avatarSrcSetLoaded = srcset;\n }\n if (userHasAvatar === false) {\n this.userDoesNotExist = true;\n }\n return;\n }\n const img = new Image();\n img.onload = () => {\n this.avatarUrlLoaded = url;\n if (srcset) {\n this.avatarSrcSetLoaded = srcset;\n }\n this.isAvatarLoaded = true;\n setUserHasAvatar(this.user, true);\n };\n img.onerror = (error) => {\n logger.debug(\"[NcAvatar] Invalid avatar url\", { error, url });\n this.avatarUrlLoaded = null;\n this.avatarSrcSetLoaded = null;\n this.userDoesNotExist = true;\n this.isAvatarLoaded = false;\n setUserHasAvatar(this.user, false);\n };\n if (srcset) {\n img.srcset = srcset;\n }\n img.src = url;\n }\n }\n};\nconst _hoisted_1 = [\"title\"];\nconst _hoisted_2 = [\"src\", \"srcset\"];\nconst _hoisted_3 = {\n key: 2,\n class: \"avatardiv__user-status avatardiv__user-status--icon\"\n};\nfunction _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {\n const _component_NcLoadingIcon = resolveComponent(\"NcLoadingIcon\");\n const _component_IconDotsHorizontal = resolveComponent(\"IconDotsHorizontal\");\n const _component_NcButton = resolveComponent(\"NcButton\");\n const _component_NcIconSvgWrapper = resolveComponent(\"NcIconSvgWrapper\");\n const _component_NcActions = resolveComponent(\"NcActions\");\n const _component_NcUserStatusIcon = resolveComponent(\"NcUserStatusIcon\");\n const _directive_click_outside = resolveDirective(\"click-outside\");\n return withDirectives((openBlock(), createElementBlock(\"span\", {\n class: normalizeClass([\"avatardiv popovermenu-wrapper\", {\n \"avatardiv--unknown\": $data.userDoesNotExist,\n \"avatardiv--with-menu\": $options.hasMenu,\n \"avatardiv--with-menu-loading\": $data.contactsMenuLoading\n }]),\n style: normalizeStyle($options.avatarStyle),\n title: $options.tooltip\n }, [\n renderSlot(_ctx.$slots, \"icon\", {}, () => [\n $props.iconClass ? (openBlock(), createElementBlock(\"span\", {\n key: 0,\n class: normalizeClass([$props.iconClass, \"avatar-class-icon\"])\n }, null, 2)) : $data.isAvatarLoaded && !$data.userDoesNotExist ? (openBlock(), createElementBlock(\"img\", {\n key: 1,\n src: $data.avatarUrlLoaded,\n srcset: $data.avatarSrcSetLoaded,\n alt: \"\"\n }, null, 8, _hoisted_2)) : createCommentVNode(\"\", true)\n ], true),\n $options.hasMenu && $options.menu.length === 0 ? (openBlock(), createBlock(_component_NcButton, {\n key: 0,\n \"aria-label\": $options.avatarAriaLabel,\n class: \"action-item action-item__menutoggle\",\n variant: \"tertiary-no-background\",\n onClick: $options.toggleMenu\n }, {\n icon: withCtx(() => [\n $data.contactsMenuLoading ? (openBlock(), createBlock(_component_NcLoadingIcon, { key: 0 })) : (openBlock(), createBlock(_component_IconDotsHorizontal, {\n key: 1,\n size: 20\n }))\n ]),\n _: 1\n }, 8, [\"aria-label\", \"onClick\"])) : $options.hasMenu ? (openBlock(), createBlock(_component_NcActions, {\n key: 1,\n open: $data.contactsMenuOpenState,\n \"onUpdate:open\": _cache[0] || (_cache[0] = ($event) => $data.contactsMenuOpenState = $event),\n \"aria-label\": $options.avatarAriaLabel,\n container: $props.menuContainer,\n forceMenu: \"\",\n manualOpen: \"\",\n variant: \"tertiary-no-background\",\n onClick: $options.toggleMenu\n }, createSlots({\n default: withCtx(() => [\n (openBlock(true), createElementBlock(Fragment, null, renderList($options.menu, (item, key) => {\n return openBlock(), createBlock(resolveDynamicComponent(item.ncActionComponent), mergeProps({ key }, { ref_for: true }, item.ncActionComponentProps), createSlots({\n default: withCtx(() => [\n createTextVNode(\" \" + toDisplayString(item.text), 1)\n ]),\n _: 2\n }, [\n item.iconSvg ? {\n name: \"icon\",\n fn: withCtx(() => [\n createVNode(_component_NcIconSvgWrapper, {\n svg: item.iconSvg\n }, null, 8, [\"svg\"])\n ]),\n key: \"0\"\n } : void 0\n ]), 1040);\n }), 128))\n ]),\n _: 2\n }, [\n $data.contactsMenuLoading ? {\n name: \"icon\",\n fn: withCtx(() => [\n createVNode(_component_NcLoadingIcon)\n ]),\n key: \"0\"\n } : void 0\n ]), 1032, [\"open\", \"aria-label\", \"container\", \"onClick\"])) : createCommentVNode(\"\", true),\n $options.showUserStatusIconOnAvatar ? (openBlock(), createElementBlock(\"span\", _hoisted_3, toDisplayString(_ctx.userStatus.icon), 1)) : $options.canDisplayUserStatus ? (openBlock(), createBlock(_component_NcUserStatusIcon, {\n key: 3,\n class: \"avatardiv__user-status\",\n status: _ctx.userStatus.status,\n \"aria-hidden\": String($options.hasMenu)\n }, null, 8, [\"status\", \"aria-hidden\"])) : createCommentVNode(\"\", true),\n $options.showInitials ? (openBlock(), createElementBlock(\"span\", {\n key: 4,\n style: normalizeStyle($options.initialsWrapperStyle),\n class: \"avatardiv__initials-wrapper\"\n }, [\n createElementVNode(\"span\", {\n style: normalizeStyle($options.initialsStyle),\n class: \"avatardiv__initials\"\n }, toDisplayString($options.initials), 5)\n ], 4)) : createCommentVNode(\"\", true)\n ], 14, _hoisted_1)), [\n [_directive_click_outside, $options.closeMenu]\n ]);\n}\nconst NcAvatar = /* @__PURE__ */ _export_sfc(_sfc_main, [[\"render\", _sfc_render], [\"__scopeId\", \"data-v-e0ae1174\"]]);\nexport {\n NcAvatar as N,\n userStatus as u\n};\n//# sourceMappingURL=NcAvatar-1KxMUN7V.mjs.map\n"],"names":["_sfc_main","ActionTextMixin","NC_ACTIONS_IS_SEMANTIC_MENU","_hoisted_1","_hoisted_2","_hoisted_3","_hoisted_4","_hoisted_5","_hoisted_6","_sfc_render","_ctx","_cache","$props","$setup","$data","$options","openBlock","createElementBlock","createElementVNode","args","renderSlot","normalizeClass","normalizeStyle","createCommentVNode","toDisplayString","NcActionText","_export_sfc","INJECTION_KEY_THEME","useIsDarkThemeElement","el","element","computed","toValue","isDarkTheme","ref","checkIfDarkTheme","isDarkSystemTheme","usePreferredDark","updateIsDarkTheme","useMutationObserver","watch","readonly","useInternalIsDarkTheme","createSharedComposable","useIsDarkTheme","enforcedTheme","inject","stopClickOutsideMap","vOnClickOutside","binding","capture","stop","onClickOutside","handler","options","vElementVisibility","createDisposableDirective","useElementVisibility","v","state","getEnabledContactsMenuActions","entry","action","c","i","a","t","e","r","n","o","_","hashCode","str","hash","Md5","finalInt","usernameToColor","username","finalPalette","generatePalette","global","Symbol","name","STATE_PLAINTEXT","STATE_HTML","STATE_COMMENT","ALLOWED_TAGS_REGEX","NORMALIZE_TAG_REGEX","striptags","html","allowable_tags","tag_replacement","context","init_context","striptags_internal","init_striptags_stream","parse_allowable_tags","tag_buffer","depth","in_quote_char","output","idx","length","char","normalize_tag","tag_set","match","module","this","getAvatarUrl","user","size","guestUrl","themeUrl","generateUrl","register","t10","userStatus","userId","capabilities","getCapabilities","getCurrentUser","data","axios","generateOcsUrl","logger","status","message","icon","browserStorage","getBuilder","getUserHasAvatar","flag","setUserHasAvatar","IconDotsHorizontal","NcActions","NcButton","NcIconSvgWrapper","NcLoadingIcon","NcUserStatusIcon","getUserStatusText","g","b","initials","filteredChars","filtered","actions","item","route","getRoute","NcActionRouter","NcActionLink","NcActionButton","error","escape","text","p","emojiIcon","subscribe","unsubscribe","event","avatarUrl","srcset","url","userHasAvatar","img","_component_NcLoadingIcon","resolveComponent","_component_IconDotsHorizontal","_component_NcButton","_component_NcIconSvgWrapper","_component_NcActions","_component_NcUserStatusIcon","_directive_click_outside","resolveDirective","withDirectives","createBlock","withCtx","$event","createSlots","Fragment","renderList","key","resolveDynamicComponent","mergeProps","createTextVNode","createVNode","NcAvatar"],"mappings":"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","x_google_ignoreList":[0,1,2,3,4,5,6,7,8,9]} \ No newline at end of file +{"version":3,"file":"NcAvatar-1KxMUN7V-R6Nmwuvb.chunk.mjs","sources":["../node_modules/@nextcloud/vue/dist/chunks/NcActionText-CQ9qwJ0p.mjs","../node_modules/@nextcloud/vue/dist/chunks/constants-wIEKSp2G.mjs","../node_modules/@nextcloud/vue/dist/composables/useIsDarkTheme/index.mjs","../node_modules/@vueuse/components/dist/index.js","../node_modules/@nextcloud/vue/dist/functions/contactsMenu/index.mjs","../node_modules/ts-md5/dist/index.es.js","../node_modules/@nextcloud/vue/dist/functions/usernameToColor/index.mjs","../node_modules/striptags/src/striptags.js","../node_modules/@nextcloud/vue/dist/chunks/NcMentionBubble.vue_vue_type_style_index_0_scoped_3c4a673d_lang-DyqakLm5.mjs","../node_modules/@nextcloud/vue/dist/chunks/NcAvatar-1KxMUN7V.mjs"],"sourcesContent":["import '../assets/NcActionText-Dzegj6AY.css';\nimport { A as ActionTextMixin } from \"./actionText-BXR0sWNu.mjs\";\nimport { a as NC_ACTIONS_IS_SEMANTIC_MENU } from \"./useNcActions-BzPO2c4h.mjs\";\nimport { openBlock, createElementBlock, createElementVNode, renderSlot, normalizeStyle, normalizeClass, createCommentVNode, toDisplayString } from \"vue\";\nimport { _ as _export_sfc } from \"./_plugin-vue_export-helper-1tPrXgE0.mjs\";\nconst _sfc_main = {\n name: \"NcActionText\",\n mixins: [ActionTextMixin],\n inject: {\n isInSemanticMenu: {\n from: NC_ACTIONS_IS_SEMANTIC_MENU,\n default: false\n }\n }\n};\nconst _hoisted_1 = [\"role\"];\nconst _hoisted_2 = {\n key: 0,\n class: \"action-text__longtext-wrapper\"\n};\nconst _hoisted_3 = { class: \"action-text__name\" };\nconst _hoisted_4 = [\"textContent\"];\nconst _hoisted_5 = [\"textContent\"];\nconst _hoisted_6 = {\n key: 2,\n class: \"action-text__text\"\n};\nfunction _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {\n return openBlock(), createElementBlock(\"li\", {\n class: \"action\",\n role: $options.isInSemanticMenu && \"presentation\"\n }, [\n createElementVNode(\"span\", {\n class: \"action-text\",\n onClick: _cache[0] || (_cache[0] = (...args) => _ctx.onClick && _ctx.onClick(...args))\n }, [\n renderSlot(_ctx.$slots, \"icon\", {}, () => [\n _ctx.icon !== \"\" ? (openBlock(), createElementBlock(\"span\", {\n key: 0,\n \"aria-hidden\": \"true\",\n class: normalizeClass([\"action-text__icon\", [_ctx.isIconUrl ? \"action-text__icon--url\" : _ctx.icon]]),\n style: normalizeStyle({ backgroundImage: _ctx.isIconUrl ? `url(${_ctx.icon})` : null })\n }, null, 6)) : createCommentVNode(\"\", true)\n ], true),\n _ctx.name ? (openBlock(), createElementBlock(\"span\", _hoisted_2, [\n createElementVNode(\"strong\", _hoisted_3, toDisplayString(_ctx.name), 1),\n createElementVNode(\"span\", {\n class: \"action-text__longtext\",\n textContent: toDisplayString(_ctx.text)\n }, null, 8, _hoisted_4)\n ])) : _ctx.isLongText ? (openBlock(), createElementBlock(\"span\", {\n key: 1,\n class: \"action-text__longtext\",\n textContent: toDisplayString(_ctx.text)\n }, null, 8, _hoisted_5)) : (openBlock(), createElementBlock(\"span\", _hoisted_6, toDisplayString(_ctx.text), 1)),\n createCommentVNode(\"\", true)\n ])\n ], 8, _hoisted_1);\n}\nconst NcActionText = /* @__PURE__ */ _export_sfc(_sfc_main, [[\"render\", _sfc_render], [\"__scopeId\", \"data-v-fa684b48\"]]);\nexport {\n NcActionText as N\n};\n//# sourceMappingURL=NcActionText-CQ9qwJ0p.mjs.map\n","/*!\n * SPDX-FileCopyrightText: 2025 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\nconst INJECTION_KEY_THEME = /* @__PURE__ */ Symbol.for(\"nc:theme:enforced\");\nexport {\n INJECTION_KEY_THEME as I\n};\n//# sourceMappingURL=constants-wIEKSp2G.mjs.map\n","import { createSharedComposable, usePreferredDark, useMutationObserver } from \"@vueuse/core\";\nimport { computed, toValue, ref, watch, readonly, inject } from \"vue\";\nimport { checkIfDarkTheme } from \"../../functions/isDarkTheme/index.mjs\";\nimport { I as INJECTION_KEY_THEME } from \"../../chunks/constants-wIEKSp2G.mjs\";\n/*!\n * SPDX-FileCopyrightText: 2024 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\nfunction useIsDarkThemeElement(el) {\n const element = computed(() => toValue(el) ?? document.body);\n const isDarkTheme = ref(checkIfDarkTheme(element.value));\n const isDarkSystemTheme = usePreferredDark();\n function updateIsDarkTheme() {\n isDarkTheme.value = checkIfDarkTheme(element.value);\n }\n useMutationObserver(element, updateIsDarkTheme, { attributes: true });\n watch(element, updateIsDarkTheme);\n watch(isDarkSystemTheme, updateIsDarkTheme, { immediate: true });\n return readonly(isDarkTheme);\n}\nconst useInternalIsDarkTheme = createSharedComposable(() => useIsDarkThemeElement());\nfunction useIsDarkTheme() {\n const isDarkTheme = useInternalIsDarkTheme();\n const enforcedTheme = inject(INJECTION_KEY_THEME, void 0);\n return computed(() => {\n if (enforcedTheme?.value) {\n return enforcedTheme.value === \"dark\";\n }\n return isDarkTheme.value;\n });\n}\nexport {\n useIsDarkTheme,\n useIsDarkThemeElement\n};\n//# sourceMappingURL=index.mjs.map\n","import { defaultWindow, isClient, onClickOutside, onKeyStroke, onLongPress, useActiveElement, useBattery, useBrowserLocation, useClipboard, useColorMode, useDark, useDeviceMotion, useDeviceOrientation, useDevicePixelRatio, useDevicesList, useDocumentVisibility, useDraggable, useElementBounding, useElementHover, useElementSize, useElementVisibility, useEyeDropper, useFullscreen, useGeolocation, useIdle, useImage, useInfiniteScroll, useIntersectionObserver, useMouse, useMouseInElement, useMousePressed, useNetwork, useNow, useObjectUrl, useOffsetPagination, useOnline, usePageLeave, usePointer, usePointerLock, usePreferredColorScheme, usePreferredContrast, usePreferredDark, usePreferredLanguages, usePreferredReducedMotion, usePreferredReducedTransparency, useResizeObserver, useScreenSafeArea, useScroll, useScrollLock, useStorage, useTimeAgo, useTimestamp, useVirtualList, useWindowFocus, useWindowSize } from \"@vueuse/core\";\nimport { computed, defineComponent, h, reactive, shallowRef, toRefs, toValue, watch } from \"vue\";\nimport { createDisposableDirective, reactiveOmit, toRefs as toRefs$1, useToggle } from \"@vueuse/shared\";\n//#region ../core/onClickOutside/component.ts\nconst OnClickOutside = /* @__PURE__ */ defineComponent((props, { slots, emit }) => {\n\tconst target = shallowRef();\n\tonClickOutside(target, (e) => {\n\t\temit(\"trigger\", e);\n\t}, props.options);\n\treturn () => {\n\t\tif (slots.default) return h(props.as || \"div\", { ref: target }, slots.default());\n\t};\n}, {\n\tname: \"OnClickOutside\",\n\tprops: [\"as\", \"options\"],\n\temits: [\"trigger\"]\n});\n//#endregion\n//#region ../core/onClickOutside/directive.ts\nconst stopClickOutsideMap = /* @__PURE__ */ new WeakMap();\nconst vOnClickOutside = {\n\tmounted(el, binding) {\n\t\tconst capture = !binding.modifiers.bubble;\n\t\tlet stop;\n\t\tif (typeof binding.value === \"function\") stop = onClickOutside(el, binding.value, { capture });\n\t\telse {\n\t\t\tconst [handler, options] = binding.value;\n\t\t\tstop = onClickOutside(el, handler, Object.assign({ capture }, options));\n\t\t}\n\t\tstopClickOutsideMap.set(el, stop);\n\t},\n\tunmounted(el) {\n\t\tconst stop = stopClickOutsideMap.get(el);\n\t\tif (stop && typeof stop === \"function\") stop();\n\t\telse stop === null || stop === void 0 || stop.stop();\n\t\tstopClickOutsideMap.delete(el);\n\t}\n};\n/** @deprecated use `vOnClickOutside` instead */\nconst VOnClickOutside = vOnClickOutside;\n//#endregion\n//#region ../core/onKeyStroke/directive.ts\nconst vOnKeyStroke = createDisposableDirective({ mounted(el, binding) {\n\tvar _binding$arg$split, _binding$arg;\n\tconst keys = (_binding$arg$split = (_binding$arg = binding.arg) === null || _binding$arg === void 0 ? void 0 : _binding$arg.split(\",\")) !== null && _binding$arg$split !== void 0 ? _binding$arg$split : true;\n\tif (typeof binding.value === \"function\") onKeyStroke(keys, binding.value, { target: el });\n\telse {\n\t\tconst [handler, options] = binding.value;\n\t\tonKeyStroke(keys, handler, {\n\t\t\ttarget: el,\n\t\t\t...options\n\t\t});\n\t}\n} });\n//#endregion\n//#region ../core/onLongPress/component.ts\nconst OnLongPress = /* @__PURE__ */ defineComponent((props, { slots, emit }) => {\n\tconst target = shallowRef();\n\tconst data = onLongPress(target, (e) => {\n\t\temit(\"trigger\", e);\n\t}, props.options);\n\treturn () => {\n\t\tif (slots.default) return h(props.as || \"div\", { ref: target }, slots.default(data));\n\t};\n}, {\n\tname: \"OnLongPress\",\n\tprops: [\"as\", \"options\"],\n\temits: [\"trigger\"]\n});\n//#endregion\n//#region ../core/onLongPress/directive.ts\nconst vOnLongPress = createDisposableDirective({ mounted(el, binding) {\n\tif (typeof binding.value === \"function\") onLongPress(el, binding.value, { modifiers: binding.modifiers });\n\telse onLongPress(el, ...binding.value);\n} });\n/** @deprecated use `vOnLongPress` instead */\nconst VOnLongPress = vOnLongPress;\n//#endregion\n//#region ../core/useActiveElement/component.ts\nconst UseActiveElement = /* @__PURE__ */ defineComponent((props, { slots }) => {\n\tconst data = reactive({ element: useActiveElement(props) });\n\treturn () => {\n\t\tif (slots.default) return slots.default(data);\n\t};\n}, {\n\tname: \"UseActiveElement\",\n\tprops: [\n\t\t\"deep\",\n\t\t\"triggerOnRemoval\",\n\t\t\"window\",\n\t\t\"document\"\n\t]\n});\n//#endregion\n//#region ../core/useBattery/component.ts\nconst UseBattery = /* @__PURE__ */ defineComponent((props, { slots }) => {\n\tconst data = reactive(useBattery(props));\n\treturn () => {\n\t\tif (slots.default) return slots.default(data);\n\t};\n}, {\n\tname: \"UseBattery\",\n\tprops: [\"navigator\"]\n});\n//#endregion\n//#region ../core/useBrowserLocation/component.ts\nconst UseBrowserLocation = /* @__PURE__ */ defineComponent((props, { slots }) => {\n\tconst data = reactive(useBrowserLocation(props));\n\treturn () => {\n\t\tif (slots.default) return slots.default(data);\n\t};\n}, {\n\tname: \"UseBrowserLocation\",\n\tprops: [\"window\"]\n});\n//#endregion\n//#region ../core/useClipboard/component.ts\nconst UseClipboard = /* @__PURE__ */ defineComponent((props, { slots }) => {\n\tconst data = reactive(useClipboard(props));\n\treturn () => {\n\t\tif (slots.default) return slots.default(data);\n\t};\n}, {\n\tname: \"UseClipboard\",\n\tprops: [\n\t\t\"source\",\n\t\t\"read\",\n\t\t\"navigator\",\n\t\t\"copiedDuring\",\n\t\t\"legacy\"\n\t]\n});\n//#endregion\n//#region ../core/useColorMode/component.ts\nconst UseColorMode = /* @__PURE__ */ defineComponent((props, { slots }) => {\n\tconst mode = useColorMode(props);\n\tconst data = reactive({\n\t\tmode,\n\t\tsystem: mode.system,\n\t\tstore: mode.store\n\t});\n\treturn () => {\n\t\tif (slots.default) return slots.default(data);\n\t};\n}, {\n\tname: \"UseColorMode\",\n\tprops: [\n\t\t\"attribute\",\n\t\t\"deep\",\n\t\t\"disableTransition\",\n\t\t\"emitAuto\",\n\t\t\"eventFilter\",\n\t\t\"flush\",\n\t\t\"initOnMounted\",\n\t\t\"initialValue\",\n\t\t\"listenToStorageChanges\",\n\t\t\"mergeDefaults\",\n\t\t\"modes\",\n\t\t\"onChanged\",\n\t\t\"onError\",\n\t\t\"selector\",\n\t\t\"serializer\",\n\t\t\"shallow\",\n\t\t\"storage\",\n\t\t\"storageKey\",\n\t\t\"storageRef\",\n\t\t\"window\",\n\t\t\"writeDefaults\"\n\t]\n});\n//#endregion\n//#region ../core/useDark/component.ts\nconst UseDark = /* @__PURE__ */ defineComponent((props, { slots }) => {\n\tconst isDark = useDark(props);\n\tconst data = reactive({\n\t\tisDark,\n\t\ttoggleDark: useToggle(isDark)\n\t});\n\treturn () => {\n\t\tif (slots.default) return slots.default(data);\n\t};\n}, {\n\tname: \"UseDark\",\n\tprops: [\n\t\t\"attribute\",\n\t\t\"deep\",\n\t\t\"disableTransition\",\n\t\t\"emitAuto\",\n\t\t\"eventFilter\",\n\t\t\"flush\",\n\t\t\"initOnMounted\",\n\t\t\"initialValue\",\n\t\t\"listenToStorageChanges\",\n\t\t\"mergeDefaults\",\n\t\t\"onChanged\",\n\t\t\"onError\",\n\t\t\"selector\",\n\t\t\"serializer\",\n\t\t\"shallow\",\n\t\t\"storage\",\n\t\t\"storageKey\",\n\t\t\"storageRef\",\n\t\t\"valueDark\",\n\t\t\"valueLight\",\n\t\t\"window\",\n\t\t\"writeDefaults\"\n\t]\n});\n//#endregion\n//#region ../core/useDeviceMotion/component.ts\nconst UseDeviceMotion = /* @__PURE__ */ defineComponent((props, { slots }) => {\n\tconst data = useDeviceMotion(props);\n\treturn () => {\n\t\tif (slots.default) return slots.default(data);\n\t};\n}, {\n\tname: \"UseDeviceMotion\",\n\tprops: [\n\t\t\"eventFilter\",\n\t\t\"requestPermissions\",\n\t\t\"window\"\n\t]\n});\n//#endregion\n//#region ../core/useDeviceOrientation/component.ts\nconst UseDeviceOrientation = /* @__PURE__ */ defineComponent((props, { slots }) => {\n\tconst data = reactive(useDeviceOrientation(props));\n\treturn () => {\n\t\tif (slots.default) return slots.default(data);\n\t};\n}, {\n\tname: \"UseDeviceOrientation\",\n\tprops: [\"window\"]\n});\n//#endregion\n//#region ../core/useDevicePixelRatio/component.ts\nconst UseDevicePixelRatio = /* @__PURE__ */ defineComponent((props, { slots }) => {\n\tconst data = reactive(useDevicePixelRatio(props));\n\treturn () => {\n\t\tif (slots.default) return slots.default(data);\n\t};\n}, {\n\tname: \"UseDevicePixelRatio\",\n\tprops: [\"window\"]\n});\n//#endregion\n//#region ../core/useDevicesList/component.ts\nconst UseDevicesList = /* @__PURE__ */ defineComponent((props, { slots }) => {\n\tconst data = reactive(useDevicesList(props));\n\treturn () => {\n\t\tif (slots.default) return slots.default(data);\n\t};\n}, {\n\tname: \"UseDevicesList\",\n\tprops: [\n\t\t\"constraints\",\n\t\t\"navigator\",\n\t\t\"onUpdated\",\n\t\t\"requestPermissions\"\n\t]\n});\n//#endregion\n//#region ../core/useDocumentVisibility/component.ts\nconst UseDocumentVisibility = /* @__PURE__ */ defineComponent((props, { slots }) => {\n\tconst data = reactive({ visibility: useDocumentVisibility(props) });\n\treturn () => {\n\t\tif (slots.default) return slots.default(data);\n\t};\n}, {\n\tname: \"UseDocumentVisibility\",\n\tprops: [\"document\"]\n});\n//#endregion\n//#region ../core/useDraggable/component.ts\nconst UseDraggable = /* @__PURE__ */ defineComponent((props, { slots }) => {\n\tconst target = shallowRef();\n\tconst handle = computed(() => {\n\t\tvar _toValue;\n\t\treturn (_toValue = toValue(props.handle)) !== null && _toValue !== void 0 ? _toValue : target.value;\n\t});\n\tconst containerElement = computed(() => {\n\t\tvar _ref;\n\t\treturn (_ref = props.containerElement) !== null && _ref !== void 0 ? _ref : void 0;\n\t});\n\tconst disabled = computed(() => !!props.disabled);\n\tconst storageValue = props.storageKey && useStorage(props.storageKey, toValue(props.initialValue) || {\n\t\tx: 0,\n\t\ty: 0\n\t}, isClient ? props.storageType === \"session\" ? sessionStorage : localStorage : void 0);\n\tconst initialValue = storageValue || props.initialValue || {\n\t\tx: 0,\n\t\ty: 0\n\t};\n\tconst onEnd = (position, event) => {\n\t\tvar _props$onEnd;\n\t\t(_props$onEnd = props.onEnd) === null || _props$onEnd === void 0 || _props$onEnd.call(props, position, event);\n\t\tif (!storageValue) return;\n\t\tstorageValue.value.x = position.x;\n\t\tstorageValue.value.y = position.y;\n\t};\n\tconst data = reactive(useDraggable(target, {\n\t\t...props,\n\t\thandle,\n\t\tinitialValue,\n\t\tonEnd,\n\t\tdisabled,\n\t\tcontainerElement\n\t}));\n\treturn () => {\n\t\tif (slots.default) return h(props.as || \"div\", {\n\t\t\tref: target,\n\t\t\tstyle: `touch-action:none;${data.style}`\n\t\t}, slots.default(data));\n\t};\n}, {\n\tname: \"UseDraggable\",\n\tprops: [\n\t\t\"storageKey\",\n\t\t\"storageType\",\n\t\t\"initialValue\",\n\t\t\"exact\",\n\t\t\"preventDefault\",\n\t\t\"stopPropagation\",\n\t\t\"pointerTypes\",\n\t\t\"as\",\n\t\t\"handle\",\n\t\t\"axis\",\n\t\t\"onStart\",\n\t\t\"onMove\",\n\t\t\"onEnd\",\n\t\t\"disabled\",\n\t\t\"buttons\",\n\t\t\"containerElement\",\n\t\t\"capture\",\n\t\t\"draggingElement\"\n\t]\n});\n//#endregion\n//#region ../core/useElementBounding/component.ts\nconst UseElementBounding = /* @__PURE__ */ defineComponent((props, { slots }) => {\n\tconst target = shallowRef();\n\tconst data = reactive(useElementBounding(target, props));\n\treturn () => {\n\t\tif (slots.default) return h(props.as || \"div\", { ref: target }, slots.default(data));\n\t};\n}, {\n\tname: \"UseElementBounding\",\n\tprops: [\n\t\t\"as\",\n\t\t\"immediate\",\n\t\t\"reset\",\n\t\t\"updateTiming\",\n\t\t\"windowResize\",\n\t\t\"windowScroll\"\n\t]\n});\n//#endregion\n//#region ../core/useElementBounding/directive.ts\nconst vElementBounding = createDisposableDirective({ mounted(el, binding) {\n\tconst [handler, options] = typeof binding.value === \"function\" ? [binding.value, {}] : binding.value;\n\tconst { height, bottom, left, right, top, width, x, y } = useElementBounding(el, options);\n\twatch([\n\t\theight,\n\t\tbottom,\n\t\tleft,\n\t\tright,\n\t\ttop,\n\t\twidth,\n\t\tx,\n\t\ty\n\t], () => handler({\n\t\theight,\n\t\tbottom,\n\t\tleft,\n\t\tright,\n\t\ttop,\n\t\twidth,\n\t\tx,\n\t\ty\n\t}));\n} });\n//#endregion\n//#region ../core/useElementHover/directive.ts\nconst vElementHover = createDisposableDirective({ mounted(el, binding) {\n\tconst value = binding.value;\n\tif (typeof value === \"function\") watch(useElementHover(el), (v) => value(v));\n\telse {\n\t\tconst [handler, options] = value;\n\t\twatch(useElementHover(el, options), (v) => handler(v));\n\t}\n} });\n//#endregion\n//#region ../core/useElementSize/component.ts\nconst UseElementSize = /* @__PURE__ */ defineComponent((props, { slots }) => {\n\tvar _toValue, _toValue2;\n\tconst target = shallowRef();\n\tconst { width, height } = toRefs(props);\n\tconst data = reactive(useElementSize(target, {\n\t\twidth: (_toValue = toValue(width)) !== null && _toValue !== void 0 ? _toValue : 0,\n\t\theight: (_toValue2 = toValue(height)) !== null && _toValue2 !== void 0 ? _toValue2 : 0\n\t}, {\n\t\tbox: props.box,\n\t\twindow: props.window\n\t}));\n\treturn () => {\n\t\tif (slots.default) return h(props.as || \"div\", { ref: target }, slots.default(data));\n\t};\n}, {\n\tname: \"UseElementSize\",\n\tprops: [\n\t\t\"as\",\n\t\t\"box\",\n\t\t\"height\",\n\t\t\"width\",\n\t\t\"window\"\n\t]\n});\n//#endregion\n//#region ../core/useElementSize/directive.ts\nconst vElementSize = createDisposableDirective({ mounted(el, binding) {\n\tvar _binding$value;\n\tconst handler = typeof binding.value === \"function\" ? binding.value : (_binding$value = binding.value) === null || _binding$value === void 0 ? void 0 : _binding$value[0];\n\tconst { width, height } = useElementSize(el, ...typeof binding.value === \"function\" ? [] : binding.value.slice(1));\n\twatch([width, height], ([width, height]) => handler({\n\t\twidth,\n\t\theight\n\t}));\n} });\n//#endregion\n//#region ../core/useElementVisibility/component.ts\nconst UseElementVisibility = /* @__PURE__ */ defineComponent((props, { slots }) => {\n\tconst target = shallowRef();\n\tconst data = reactive(useElementVisibility(target, {\n\t\t...props,\n\t\tcontrols: true\n\t}));\n\treturn () => {\n\t\tif (slots.default) return h(props.as || \"div\", { ref: target }, slots.default(data));\n\t};\n}, {\n\tname: \"UseElementVisibility\",\n\tprops: [\n\t\t\"as\",\n\t\t\"once\",\n\t\t\"rootMargin\",\n\t\t\"scrollTarget\",\n\t\t\"threshold\",\n\t\t\"window\"\n\t]\n});\n//#endregion\n//#region ../core/useElementVisibility/directive.ts\nconst vElementVisibility = createDisposableDirective({ mounted(el, binding) {\n\tif (typeof binding.value === \"function\") {\n\t\tconst handler = binding.value;\n\t\twatch(useElementVisibility(el), (v) => handler(v), { immediate: true });\n\t} else {\n\t\tconst [handler, options] = binding.value;\n\t\tif (options === null || options === void 0 ? void 0 : options.controls) {\n\t\t\tconst state = useElementVisibility(el, options);\n\t\t\twatch(state.isVisible, () => handler(state), { immediate: true });\n\t\t} else watch(useElementVisibility(el, options), (v) => handler(v), { immediate: true });\n\t}\n} });\n//#endregion\n//#region ../core/useEyeDropper/component.ts\nconst UseEyeDropper = /* @__PURE__ */ defineComponent((props, { slots }) => {\n\tconst data = reactive(useEyeDropper(props));\n\treturn () => {\n\t\tif (slots.default) return slots.default(data);\n\t};\n}, {\n\tname: \"UseEyeDropper\",\n\tprops: [\"initialValue\"]\n});\n//#endregion\n//#region ../core/useFullscreen/component.ts\nconst UseFullscreen = /* @__PURE__ */ defineComponent((props, { slots }) => {\n\tconst target = shallowRef();\n\tconst data = reactive(useFullscreen(target, props));\n\treturn () => {\n\t\tif (slots.default) return h(props.as || \"div\", { ref: target }, slots.default(data));\n\t};\n}, {\n\tname: \"UseFullscreen\",\n\tprops: [\n\t\t\"as\",\n\t\t\"autoExit\",\n\t\t\"document\"\n\t]\n});\n//#endregion\n//#region ../core/useGeolocation/component.ts\nconst UseGeolocation = /* @__PURE__ */ defineComponent((props, { slots }) => {\n\tconst data = reactive(useGeolocation(props));\n\treturn () => {\n\t\tif (slots.default) return slots.default(data);\n\t};\n}, {\n\tname: \"UseGeolocation\",\n\tprops: [\n\t\t\"enableHighAccuracy\",\n\t\t\"immediate\",\n\t\t\"maximumAge\",\n\t\t\"navigator\",\n\t\t\"timeout\"\n\t]\n});\n//#endregion\n//#region ../core/useIdle/component.ts\nconst UseIdle = /* @__PURE__ */ defineComponent((props, { slots }) => {\n\tconst data = reactive(useIdle(props.timeout, props));\n\treturn () => {\n\t\tif (slots.default) return slots.default(data);\n\t};\n}, {\n\tname: \"UseIdle\",\n\tprops: [\n\t\t\"eventFilter\",\n\t\t\"events\",\n\t\t\"initialState\",\n\t\t\"listenForVisibilityChange\",\n\t\t\"timeout\",\n\t\t\"window\"\n\t]\n});\n//#endregion\n//#region ../core/useImage/component.ts\nconst UseImage = /* @__PURE__ */ defineComponent((props, { slots }) => {\n\tconst data = reactive(useImage(props));\n\treturn () => {\n\t\tif (data.isLoading && slots.loading) return slots.loading(data);\n\t\telse if (data.error && slots.error) return slots.error(data.error);\n\t\tif (slots.default) return slots.default(data);\n\t\treturn h(props.as || \"img\", props);\n\t};\n}, {\n\tname: \"UseImage\",\n\tprops: [\n\t\t\"alt\",\n\t\t\"as\",\n\t\t\"class\",\n\t\t\"crossorigin\",\n\t\t\"decoding\",\n\t\t\"fetchPriority\",\n\t\t\"height\",\n\t\t\"ismap\",\n\t\t\"loading\",\n\t\t\"referrerPolicy\",\n\t\t\"sizes\",\n\t\t\"src\",\n\t\t\"srcset\",\n\t\t\"usemap\",\n\t\t\"width\"\n\t]\n});\n//#endregion\n//#region ../core/useInfiniteScroll/directive.ts\nconst vInfiniteScroll = createDisposableDirective({ mounted(el, binding) {\n\tif (typeof binding.value === \"function\") useInfiniteScroll(el, binding.value);\n\telse useInfiniteScroll(el, ...binding.value);\n} });\n//#endregion\n//#region ../core/useIntersectionObserver/directive.ts\nconst vIntersectionObserver = createDisposableDirective({ mounted(el, binding) {\n\tif (typeof binding.value === \"function\") useIntersectionObserver(el, binding.value);\n\telse useIntersectionObserver(el, ...binding.value);\n} });\n//#endregion\n//#region ../core/useMouse/component.ts\nconst UseMouse = /* @__PURE__ */ defineComponent((props, { slots }) => {\n\tconst data = reactive(useMouse(props));\n\treturn () => {\n\t\tif (slots.default) return slots.default(data);\n\t};\n}, {\n\tname: \"UseMouse\",\n\tprops: [\n\t\t\"eventFilter\",\n\t\t\"initialValue\",\n\t\t\"resetOnTouchEnds\",\n\t\t\"scroll\",\n\t\t\"target\",\n\t\t\"touch\",\n\t\t\"type\",\n\t\t\"window\"\n\t]\n});\n//#endregion\n//#region ../core/useMouseInElement/component.ts\nconst UseMouseInElement = /* @__PURE__ */ defineComponent((props, { slots }) => {\n\tconst target = shallowRef();\n\tconst data = reactive(useMouseInElement(target, props));\n\treturn () => {\n\t\tif (slots.default) return h(props.as || \"div\", { ref: target }, slots.default(data));\n\t};\n}, {\n\tname: \"UseMouseInElement\",\n\tprops: [\n\t\t\"as\",\n\t\t\"eventFilter\",\n\t\t\"handleOutside\",\n\t\t\"initialValue\",\n\t\t\"resetOnTouchEnds\",\n\t\t\"scroll\",\n\t\t\"target\",\n\t\t\"touch\",\n\t\t\"type\",\n\t\t\"window\",\n\t\t\"windowResize\",\n\t\t\"windowScroll\"\n\t]\n});\n//#endregion\n//#region ../core/useMouseInElement/directive.ts\nconst vMouseInElement = createDisposableDirective({ mounted(el, binding) {\n\tconst [handler, options] = typeof binding.value === \"function\" ? [binding.value, {}] : binding.value;\n\twatch(reactiveOmit(reactive(useMouseInElement(el, options)), \"stop\"), (val) => handler(val));\n} });\n//#endregion\n//#region ../core/useMousePressed/component.ts\nconst UseMousePressed = /* @__PURE__ */ defineComponent((props, { slots }) => {\n\tconst target = shallowRef();\n\tconst data = reactive(useMousePressed({\n\t\t...props,\n\t\ttarget\n\t}));\n\treturn () => {\n\t\tif (slots.default) return h(props.as || \"div\", { ref: target }, slots.default(data));\n\t};\n}, {\n\tname: \"UseMousePressed\",\n\tprops: [\n\t\t\"as\",\n\t\t\"capture\",\n\t\t\"drag\",\n\t\t\"initialValue\",\n\t\t\"onPressed\",\n\t\t\"onReleased\",\n\t\t\"touch\",\n\t\t\"window\"\n\t]\n});\n//#endregion\n//#region ../core/useNetwork/component.ts\nconst UseNetwork = /* @__PURE__ */ defineComponent((props, { slots }) => {\n\tconst data = reactive(useNetwork(props));\n\treturn () => {\n\t\tif (slots.default) return slots.default(data);\n\t};\n}, {\n\tname: \"UseNetwork\",\n\tprops: [\"window\"]\n});\n//#endregion\n//#region ../core/useNow/component.ts\nconst UseNow = /* @__PURE__ */ defineComponent((props, { slots }) => {\n\tconst data = reactive(useNow({\n\t\t...props,\n\t\tcontrols: true\n\t}));\n\treturn () => {\n\t\tif (slots.default) return slots.default(data);\n\t};\n}, {\n\tname: \"UseNow\",\n\tprops: [\n\t\t\"scheduler\",\n\t\t\"immediate\",\n\t\t\"interval\"\n\t]\n});\n//#endregion\n//#region ../core/useObjectUrl/component.ts\nconst UseObjectUrl = /* @__PURE__ */ defineComponent((props, { slots }) => {\n\tconst { object } = toRefs$1(props);\n\tconst url = useObjectUrl(object);\n\treturn () => {\n\t\tif (slots.default && url.value) return slots.default(url.value);\n\t};\n}, {\n\tname: \"UseObjectUrl\",\n\tprops: [\"object\"]\n});\n//#endregion\n//#region ../core/useOffsetPagination/component.ts\nconst UseOffsetPagination = /* @__PURE__ */ defineComponent((props, { slots, emit }) => {\n\tconst data = reactive(useOffsetPagination({\n\t\t...props,\n\t\ttotal: toValue(props.total) || void 0,\n\t\tonPageChange(...args) {\n\t\t\tvar _props$onPageChange;\n\t\t\t(_props$onPageChange = props.onPageChange) === null || _props$onPageChange === void 0 || _props$onPageChange.call(props, ...args);\n\t\t\temit(\"page-change\", ...args);\n\t\t},\n\t\tonPageSizeChange(...args) {\n\t\t\tvar _props$onPageSizeChan;\n\t\t\t(_props$onPageSizeChan = props.onPageSizeChange) === null || _props$onPageSizeChan === void 0 || _props$onPageSizeChan.call(props, ...args);\n\t\t\temit(\"page-size-change\", ...args);\n\t\t},\n\t\tonPageCountChange(...args) {\n\t\t\tvar _props$onPageCountCha;\n\t\t\t(_props$onPageCountCha = props.onPageCountChange) === null || _props$onPageCountCha === void 0 || _props$onPageCountCha.call(props, ...args);\n\t\t\temit(\"page-count-change\", ...args);\n\t\t}\n\t}));\n\treturn () => {\n\t\tif (slots.default) return slots.default(data);\n\t};\n}, {\n\tname: \"UseOffsetPagination\",\n\tprops: [\n\t\t\"onPageChange\",\n\t\t\"onPageCountChange\",\n\t\t\"onPageSizeChange\",\n\t\t\"page\",\n\t\t\"pageSize\",\n\t\t\"total\"\n\t]\n});\n//#endregion\n//#region ../core/useOnline/component.ts\nconst UseOnline = /* @__PURE__ */ defineComponent((props, { slots }) => {\n\tconst data = reactive({ isOnline: useOnline(props) });\n\treturn () => {\n\t\tif (slots.default) return slots.default(data);\n\t};\n}, {\n\tname: \"UseOnline\",\n\tprops: [\"window\"]\n});\n//#endregion\n//#region ../core/usePageLeave/component.ts\nconst UsePageLeave = /* @__PURE__ */ defineComponent((props, { slots }) => {\n\tconst data = reactive({ isLeft: usePageLeave(props) });\n\treturn () => {\n\t\tif (slots.default) return slots.default(data);\n\t};\n}, {\n\tname: \"UsePageLeave\",\n\tprops: [\"window\"]\n});\n//#endregion\n//#region ../core/usePointer/component.ts\nconst UsePointer = /* @__PURE__ */ defineComponent((props, { slots }) => {\n\tconst el = shallowRef(null);\n\tconst data = reactive(usePointer({\n\t\t...props,\n\t\ttarget: props.target === \"self\" ? el : defaultWindow\n\t}));\n\treturn () => {\n\t\tif (slots.default) return slots.default(data);\n\t};\n}, {\n\tname: \"UsePointer\",\n\tprops: [\n\t\t\"initialValue\",\n\t\t\"pointerTypes\",\n\t\t\"target\",\n\t\t\"window\"\n\t]\n});\n//#endregion\n//#region ../core/usePointerLock/component.ts\nconst UsePointerLock = /* @__PURE__ */ defineComponent((props, { slots }) => {\n\tconst target = shallowRef();\n\tconst data = reactive(usePointerLock(target));\n\treturn () => {\n\t\tif (slots.default) return h(props.as || \"div\", { ref: target }, slots.default(data));\n\t};\n}, {\n\tname: \"UsePointerLock\",\n\tprops: [\"as\", \"document\"]\n});\n//#endregion\n//#region ../core/usePreferredColorScheme/component.ts\nconst UsePreferredColorScheme = /* @__PURE__ */ defineComponent((props, { slots }) => {\n\tconst data = reactive({ colorScheme: usePreferredColorScheme(props) });\n\treturn () => {\n\t\tif (slots.default) return slots.default(data);\n\t};\n}, {\n\tname: \"UsePreferredColorScheme\",\n\tprops: [\"window\"]\n});\n//#endregion\n//#region ../core/usePreferredContrast/component.ts\nconst UsePreferredContrast = /* @__PURE__ */ defineComponent((props, { slots }) => {\n\tconst data = reactive({ contrast: usePreferredContrast(props) });\n\treturn () => {\n\t\tif (slots.default) return slots.default(data);\n\t};\n}, {\n\tname: \"UsePreferredContrast\",\n\tprops: [\"window\"]\n});\n//#endregion\n//#region ../core/usePreferredDark/component.ts\nconst UsePreferredDark = /* @__PURE__ */ defineComponent((props, { slots }) => {\n\tconst data = reactive({ prefersDark: usePreferredDark(props) });\n\treturn () => {\n\t\tif (slots.default) return slots.default(data);\n\t};\n}, {\n\tname: \"UsePreferredDark\",\n\tprops: [\"window\"]\n});\n//#endregion\n//#region ../core/usePreferredLanguages/component.ts\nconst UsePreferredLanguages = /* @__PURE__ */ defineComponent((props, { slots }) => {\n\tconst data = reactive({ languages: usePreferredLanguages(props) });\n\treturn () => {\n\t\tif (slots.default) return slots.default(data);\n\t};\n}, {\n\tname: \"UsePreferredLanguages\",\n\tprops: [\"window\"]\n});\n//#endregion\n//#region ../core/usePreferredReducedMotion/component.ts\nconst UsePreferredReducedMotion = /* @__PURE__ */ defineComponent((props, { slots }) => {\n\tconst data = reactive({ motion: usePreferredReducedMotion(props) });\n\treturn () => {\n\t\tif (slots.default) return slots.default(data);\n\t};\n}, {\n\tname: \"UsePreferredReducedMotion\",\n\tprops: [\"window\"]\n});\n//#endregion\n//#region ../core/usePreferredReducedTransparency/component.ts\nconst UsePreferredReducedTransparency = /* @__PURE__ */ defineComponent({\n\tname: \"UsePreferredReducedTransparency\",\n\tsetup(props, { slots }) {\n\t\tconst data = reactive({ transparency: usePreferredReducedTransparency() });\n\t\treturn () => {\n\t\t\tif (slots.default) return slots.default(data);\n\t\t};\n\t}\n});\n//#endregion\n//#region ../core/useResizeObserver/directive.ts\nconst vResizeObserver = createDisposableDirective({ mounted(el, binding) {\n\tif (typeof binding.value === \"function\") useResizeObserver(el, binding.value);\n\telse useResizeObserver(el, ...binding.value);\n} });\n//#endregion\n//#region ../core/useScreenSafeArea/component.ts\nconst UseScreenSafeArea = /* @__PURE__ */ defineComponent((props, { slots }) => {\n\tconst data = reactive(useScreenSafeArea());\n\treturn () => {\n\t\tif (slots.default) return h(props.as || \"div\", { style: {\n\t\t\tpaddingTop: props.top ? data.top : \"\",\n\t\t\tpaddingRight: props.right ? data.right : \"\",\n\t\t\tpaddingBottom: props.bottom ? data.bottom : \"\",\n\t\t\tpaddingLeft: props.left ? data.left : \"\",\n\t\t\tboxSizing: \"border-box\",\n\t\t\tmaxHeight: \"100vh\",\n\t\t\tmaxWidth: \"100vw\",\n\t\t\toverflow: \"auto\"\n\t\t} }, slots.default(data));\n\t};\n}, {\n\tname: \"UseScreenSafeArea\",\n\tprops: [\n\t\t\"top\",\n\t\t\"right\",\n\t\t\"bottom\",\n\t\t\"left\"\n\t]\n});\n//#endregion\n//#region ../core/useScroll/directive.ts\nconst vScroll = createDisposableDirective({ mounted(el, binding) {\n\tif (typeof binding.value === \"function\") {\n\t\tconst handler = binding.value;\n\t\tconst state = useScroll(el, {\n\t\t\tonScroll() {\n\t\t\t\thandler(state);\n\t\t\t},\n\t\t\tonStop() {\n\t\t\t\thandler(state);\n\t\t\t}\n\t\t});\n\t} else {\n\t\tconst [handler, options] = binding.value;\n\t\tconst state = useScroll(el, {\n\t\t\t...options,\n\t\t\tonScroll(e) {\n\t\t\t\tvar _options$onScroll;\n\t\t\t\t(_options$onScroll = options.onScroll) === null || _options$onScroll === void 0 || _options$onScroll.call(options, e);\n\t\t\t\thandler(state);\n\t\t\t},\n\t\t\tonStop(e) {\n\t\t\t\tvar _options$onStop;\n\t\t\t\t(_options$onStop = options.onStop) === null || _options$onStop === void 0 || _options$onStop.call(options, e);\n\t\t\t\thandler(state);\n\t\t\t}\n\t\t});\n\t}\n} });\n//#endregion\n//#region ../core/useScrollLock/directive.ts\nfunction onScrollLock() {\n\tlet isMounted = false;\n\tconst state = shallowRef(false);\n\treturn createDisposableDirective((el, binding) => {\n\t\tstate.value = binding.value;\n\t\tif (isMounted) return;\n\t\tisMounted = true;\n\t\tconst isLocked = useScrollLock(el, binding.value);\n\t\twatch(state, (v) => isLocked.value = v);\n\t});\n}\nconst vScrollLock = onScrollLock();\n//#endregion\n//#region ../core/useTimeAgo/component.ts\nconst UseTimeAgo = /* @__PURE__ */ defineComponent((props, { slots }) => {\n\tconst data = reactive(useTimeAgo(() => props.time, {\n\t\t...props,\n\t\tcontrols: true\n\t}));\n\treturn () => {\n\t\tif (slots.default) return slots.default(data);\n\t};\n}, {\n\tname: \"UseTimeAgo\",\n\tprops: [\n\t\t\"fullDateFormatter\",\n\t\t\"max\",\n\t\t\"messages\",\n\t\t\"rounding\",\n\t\t\"showSecond\",\n\t\t\"time\",\n\t\t\"units\",\n\t\t\"updateInterval\"\n\t]\n});\n//#endregion\n//#region ../core/useTimestamp/component.ts\nconst UseTimestamp = /* @__PURE__ */ defineComponent((props, { slots }) => {\n\tconst data = reactive(useTimestamp({\n\t\t...props,\n\t\tcontrols: true\n\t}));\n\treturn () => {\n\t\tif (slots.default) return slots.default(data);\n\t};\n}, {\n\tname: \"UseTimestamp\",\n\tprops: [\n\t\t\"scheduler\",\n\t\t\"callback\",\n\t\t\"immediate\",\n\t\t\"interval\",\n\t\t\"offset\"\n\t]\n});\n//#endregion\n//#region ../core/useVirtualList/component.ts\nconst UseVirtualList = /* @__PURE__ */ defineComponent((props, { slots, expose }) => {\n\tconst { list: listRef } = toRefs(props);\n\tconst { list, containerProps, wrapperProps, scrollTo } = useVirtualList(listRef, props.options);\n\texpose({ scrollTo });\n\tif (containerProps.style && typeof containerProps.style === \"object\" && !Array.isArray(containerProps.style)) containerProps.style.height = props.height || \"300px\";\n\treturn () => h(\"div\", { ...containerProps }, [h(\"div\", { ...wrapperProps.value }, list.value.map((item) => h(\"div\", { style: {\n\t\toverflow: \"hidden\",\n\t\theight: item.height\n\t} }, slots.default ? slots.default(item) : \"Please set content!\")))]);\n}, {\n\tname: \"UseVirtualList\",\n\tprops: [\n\t\t\"height\",\n\t\t\"list\",\n\t\t\"options\"\n\t]\n});\n//#endregion\n//#region ../core/useWindowFocus/component.ts\nconst UseWindowFocus = /* @__PURE__ */ defineComponent((props, { slots }) => {\n\tconst data = reactive({ focused: useWindowFocus(props) });\n\treturn () => {\n\t\tif (slots.default) return slots.default(data);\n\t};\n}, {\n\tname: \"UseWindowFocus\",\n\tprops: [\"window\"]\n});\n//#endregion\n//#region ../core/useWindowSize/component.ts\nconst UseWindowSize = /* @__PURE__ */ defineComponent((props, { slots }) => {\n\tconst data = reactive(useWindowSize(props));\n\treturn () => {\n\t\tif (slots.default) return slots.default(data);\n\t};\n}, {\n\tname: \"UseWindowSize\",\n\tprops: [\n\t\t\"includeScrollbar\",\n\t\t\"initialHeight\",\n\t\t\"initialWidth\",\n\t\t\"listenOrientation\",\n\t\t\"type\",\n\t\t\"window\"\n\t]\n});\n//#endregion\nexport { OnClickOutside, OnLongPress, UseActiveElement, UseBattery, UseBrowserLocation, UseClipboard, UseColorMode, UseDark, UseDeviceMotion, UseDeviceOrientation, UseDevicePixelRatio, UseDevicesList, UseDocumentVisibility, UseDraggable, UseElementBounding, UseElementSize, UseElementVisibility, UseEyeDropper, UseFullscreen, UseGeolocation, UseIdle, UseImage, UseMouse, UseMouseInElement, UseMousePressed, UseNetwork, UseNow, UseObjectUrl, UseOffsetPagination, UseOnline, UsePageLeave, UsePointer, UsePointerLock, UsePreferredColorScheme, UsePreferredContrast, UsePreferredDark, UsePreferredLanguages, UsePreferredReducedMotion, UsePreferredReducedTransparency, UseScreenSafeArea, UseTimeAgo, UseTimestamp, UseVirtualList, UseWindowFocus, UseWindowSize, VOnClickOutside, VOnLongPress, vElementBounding, vElementHover, vElementSize, vElementVisibility, vInfiniteScroll, vIntersectionObserver, vMouseInElement, vOnClickOutside, vOnKeyStroke, vOnLongPress, vResizeObserver, vScroll, vScrollLock };\n","import { l as logger } from \"../../chunks/logger-D3RVzcfQ.mjs\";\nfunction registerContactsMenuAction(action) {\n window._nc_contacts_menu_hooks ??= {};\n if (window._nc_contacts_menu_hooks[action.id]) {\n logger.error(`ContactsMenu action for id ${action.id} has already been registered`, {\n action\n });\n return;\n }\n window._nc_contacts_menu_hooks[action.id] = action;\n}\nfunction getEnabledContactsMenuActions(entry) {\n if (!window._nc_contacts_menu_hooks) {\n return [];\n }\n return Object.values(window._nc_contacts_menu_hooks).filter((action) => action.enabled(entry));\n}\nexport {\n getEnabledContactsMenuActions,\n registerContactsMenuAction\n};\n//# sourceMappingURL=index.mjs.map\n","const c = new Int32Array(4);\nclass h {\n static hashStr(i, a = !1) {\n return this.onePassHasher.start().appendStr(i).end(a);\n }\n static hashAsciiStr(i, a = !1) {\n return this.onePassHasher.start().appendAsciiStr(i).end(a);\n }\n // Private Static Variables\n static stateIdentity = new Int32Array([\n 1732584193,\n -271733879,\n -1732584194,\n 271733878\n ]);\n static buffer32Identity = new Int32Array([\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0\n ]);\n static hexChars = \"0123456789abcdef\";\n static hexOut = [];\n // Permanent instance is to use for one-call hashing\n static onePassHasher = new h();\n static _hex(i) {\n const a = h.hexChars, t = h.hexOut;\n let e, s, r, n;\n for (n = 0; n < 4; n += 1)\n for (s = n * 8, e = i[n], r = 0; r < 8; r += 2)\n t[s + 1 + r] = a.charAt(e & 15), e >>>= 4, t[s + 0 + r] = a.charAt(e & 15), e >>>= 4;\n return t.join(\"\");\n }\n static _md5cycle(i, a) {\n let t = i[0], e = i[1], s = i[2], r = i[3];\n t += (e & s | ~e & r) + a[0] - 680876936 | 0, t = (t << 7 | t >>> 25) + e | 0, r += (t & e | ~t & s) + a[1] - 389564586 | 0, r = (r << 12 | r >>> 20) + t | 0, s += (r & t | ~r & e) + a[2] + 606105819 | 0, s = (s << 17 | s >>> 15) + r | 0, e += (s & r | ~s & t) + a[3] - 1044525330 | 0, e = (e << 22 | e >>> 10) + s | 0, t += (e & s | ~e & r) + a[4] - 176418897 | 0, t = (t << 7 | t >>> 25) + e | 0, r += (t & e | ~t & s) + a[5] + 1200080426 | 0, r = (r << 12 | r >>> 20) + t | 0, s += (r & t | ~r & e) + a[6] - 1473231341 | 0, s = (s << 17 | s >>> 15) + r | 0, e += (s & r | ~s & t) + a[7] - 45705983 | 0, e = (e << 22 | e >>> 10) + s | 0, t += (e & s | ~e & r) + a[8] + 1770035416 | 0, t = (t << 7 | t >>> 25) + e | 0, r += (t & e | ~t & s) + a[9] - 1958414417 | 0, r = (r << 12 | r >>> 20) + t | 0, s += (r & t | ~r & e) + a[10] - 42063 | 0, s = (s << 17 | s >>> 15) + r | 0, e += (s & r | ~s & t) + a[11] - 1990404162 | 0, e = (e << 22 | e >>> 10) + s | 0, t += (e & s | ~e & r) + a[12] + 1804603682 | 0, t = (t << 7 | t >>> 25) + e | 0, r += (t & e | ~t & s) + a[13] - 40341101 | 0, r = (r << 12 | r >>> 20) + t | 0, s += (r & t | ~r & e) + a[14] - 1502002290 | 0, s = (s << 17 | s >>> 15) + r | 0, e += (s & r | ~s & t) + a[15] + 1236535329 | 0, e = (e << 22 | e >>> 10) + s | 0, t += (e & r | s & ~r) + a[1] - 165796510 | 0, t = (t << 5 | t >>> 27) + e | 0, r += (t & s | e & ~s) + a[6] - 1069501632 | 0, r = (r << 9 | r >>> 23) + t | 0, s += (r & e | t & ~e) + a[11] + 643717713 | 0, s = (s << 14 | s >>> 18) + r | 0, e += (s & t | r & ~t) + a[0] - 373897302 | 0, e = (e << 20 | e >>> 12) + s | 0, t += (e & r | s & ~r) + a[5] - 701558691 | 0, t = (t << 5 | t >>> 27) + e | 0, r += (t & s | e & ~s) + a[10] + 38016083 | 0, r = (r << 9 | r >>> 23) + t | 0, s += (r & e | t & ~e) + a[15] - 660478335 | 0, s = (s << 14 | s >>> 18) + r | 0, e += (s & t | r & ~t) + a[4] - 405537848 | 0, e = (e << 20 | e >>> 12) + s | 0, t += (e & r | s & ~r) + a[9] + 568446438 | 0, t = (t << 5 | t >>> 27) + e | 0, r += (t & s | e & ~s) + a[14] - 1019803690 | 0, r = (r << 9 | r >>> 23) + t | 0, s += (r & e | t & ~e) + a[3] - 187363961 | 0, s = (s << 14 | s >>> 18) + r | 0, e += (s & t | r & ~t) + a[8] + 1163531501 | 0, e = (e << 20 | e >>> 12) + s | 0, t += (e & r | s & ~r) + a[13] - 1444681467 | 0, t = (t << 5 | t >>> 27) + e | 0, r += (t & s | e & ~s) + a[2] - 51403784 | 0, r = (r << 9 | r >>> 23) + t | 0, s += (r & e | t & ~e) + a[7] + 1735328473 | 0, s = (s << 14 | s >>> 18) + r | 0, e += (s & t | r & ~t) + a[12] - 1926607734 | 0, e = (e << 20 | e >>> 12) + s | 0, t += (e ^ s ^ r) + a[5] - 378558 | 0, t = (t << 4 | t >>> 28) + e | 0, r += (t ^ e ^ s) + a[8] - 2022574463 | 0, r = (r << 11 | r >>> 21) + t | 0, s += (r ^ t ^ e) + a[11] + 1839030562 | 0, s = (s << 16 | s >>> 16) + r | 0, e += (s ^ r ^ t) + a[14] - 35309556 | 0, e = (e << 23 | e >>> 9) + s | 0, t += (e ^ s ^ r) + a[1] - 1530992060 | 0, t = (t << 4 | t >>> 28) + e | 0, r += (t ^ e ^ s) + a[4] + 1272893353 | 0, r = (r << 11 | r >>> 21) + t | 0, s += (r ^ t ^ e) + a[7] - 155497632 | 0, s = (s << 16 | s >>> 16) + r | 0, e += (s ^ r ^ t) + a[10] - 1094730640 | 0, e = (e << 23 | e >>> 9) + s | 0, t += (e ^ s ^ r) + a[13] + 681279174 | 0, t = (t << 4 | t >>> 28) + e | 0, r += (t ^ e ^ s) + a[0] - 358537222 | 0, r = (r << 11 | r >>> 21) + t | 0, s += (r ^ t ^ e) + a[3] - 722521979 | 0, s = (s << 16 | s >>> 16) + r | 0, e += (s ^ r ^ t) + a[6] + 76029189 | 0, e = (e << 23 | e >>> 9) + s | 0, t += (e ^ s ^ r) + a[9] - 640364487 | 0, t = (t << 4 | t >>> 28) + e | 0, r += (t ^ e ^ s) + a[12] - 421815835 | 0, r = (r << 11 | r >>> 21) + t | 0, s += (r ^ t ^ e) + a[15] + 530742520 | 0, s = (s << 16 | s >>> 16) + r | 0, e += (s ^ r ^ t) + a[2] - 995338651 | 0, e = (e << 23 | e >>> 9) + s | 0, t += (s ^ (e | ~r)) + a[0] - 198630844 | 0, t = (t << 6 | t >>> 26) + e | 0, r += (e ^ (t | ~s)) + a[7] + 1126891415 | 0, r = (r << 10 | r >>> 22) + t | 0, s += (t ^ (r | ~e)) + a[14] - 1416354905 | 0, s = (s << 15 | s >>> 17) + r | 0, e += (r ^ (s | ~t)) + a[5] - 57434055 | 0, e = (e << 21 | e >>> 11) + s | 0, t += (s ^ (e | ~r)) + a[12] + 1700485571 | 0, t = (t << 6 | t >>> 26) + e | 0, r += (e ^ (t | ~s)) + a[3] - 1894986606 | 0, r = (r << 10 | r >>> 22) + t | 0, s += (t ^ (r | ~e)) + a[10] - 1051523 | 0, s = (s << 15 | s >>> 17) + r | 0, e += (r ^ (s | ~t)) + a[1] - 2054922799 | 0, e = (e << 21 | e >>> 11) + s | 0, t += (s ^ (e | ~r)) + a[8] + 1873313359 | 0, t = (t << 6 | t >>> 26) + e | 0, r += (e ^ (t | ~s)) + a[15] - 30611744 | 0, r = (r << 10 | r >>> 22) + t | 0, s += (t ^ (r | ~e)) + a[6] - 1560198380 | 0, s = (s << 15 | s >>> 17) + r | 0, e += (r ^ (s | ~t)) + a[13] + 1309151649 | 0, e = (e << 21 | e >>> 11) + s | 0, t += (s ^ (e | ~r)) + a[4] - 145523070 | 0, t = (t << 6 | t >>> 26) + e | 0, r += (e ^ (t | ~s)) + a[11] - 1120210379 | 0, r = (r << 10 | r >>> 22) + t | 0, s += (t ^ (r | ~e)) + a[2] + 718787259 | 0, s = (s << 15 | s >>> 17) + r | 0, e += (r ^ (s | ~t)) + a[9] - 343485551 | 0, e = (e << 21 | e >>> 11) + s | 0, i[0] = t + i[0] | 0, i[1] = e + i[1] | 0, i[2] = s + i[2] | 0, i[3] = r + i[3] | 0;\n }\n _dataLength = 0;\n _bufferLength = 0;\n _state = new Int32Array(4);\n _buffer = new ArrayBuffer(68);\n _buffer8;\n _buffer32;\n constructor() {\n this._buffer8 = new Uint8Array(this._buffer, 0, 68), this._buffer32 = new Uint32Array(this._buffer, 0, 17), this.start();\n }\n /**\n * Initialise buffer to be hashed\n */\n start() {\n return this._dataLength = 0, this._bufferLength = 0, this._state.set(h.stateIdentity), this;\n }\n // Char to code point to to array conversion:\n // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/charCodeAt\n // #Example.3A_Fixing_charCodeAt_to_handle_non-Basic-Multilingual-Plane_characters_if_their_presence_earlier_in_the_string_is_unknown\n /**\n * Append a UTF-8 string to the hash buffer\n * @param str String to append\n */\n appendStr(i) {\n const a = this._buffer8, t = this._buffer32;\n let e = this._bufferLength, s, r;\n for (r = 0; r < i.length; r += 1) {\n if (s = i.charCodeAt(r), s < 128)\n a[e++] = s;\n else if (s < 2048)\n a[e++] = (s >>> 6) + 192, a[e++] = s & 63 | 128;\n else if (s < 55296 || s > 56319)\n a[e++] = (s >>> 12) + 224, a[e++] = s >>> 6 & 63 | 128, a[e++] = s & 63 | 128;\n else {\n if (s = (s - 55296) * 1024 + (i.charCodeAt(++r) - 56320) + 65536, s > 1114111)\n throw new Error(\n \"Unicode standard supports code points up to U+10FFFF\"\n );\n a[e++] = (s >>> 18) + 240, a[e++] = s >>> 12 & 63 | 128, a[e++] = s >>> 6 & 63 | 128, a[e++] = s & 63 | 128;\n }\n e >= 64 && (this._dataLength += 64, h._md5cycle(this._state, t), e -= 64, t[0] = t[16]);\n }\n return this._bufferLength = e, this;\n }\n /**\n * Append an ASCII string to the hash buffer\n * @param str String to append\n */\n appendAsciiStr(i) {\n const a = this._buffer8, t = this._buffer32;\n let e = this._bufferLength, s, r = 0;\n for (; ; ) {\n for (s = Math.min(i.length - r, 64 - e); s--; )\n a[e++] = i.charCodeAt(r++);\n if (e < 64)\n break;\n this._dataLength += 64, h._md5cycle(this._state, t), e = 0;\n }\n return this._bufferLength = e, this;\n }\n /**\n * Append a byte array to the hash buffer\n * @param input array to append\n */\n appendByteArray(i) {\n const a = this._buffer8, t = this._buffer32;\n let e = this._bufferLength, s, r = 0;\n for (; ; ) {\n for (s = Math.min(i.length - r, 64 - e); s--; )\n a[e++] = i[r++];\n if (e < 64)\n break;\n this._dataLength += 64, h._md5cycle(this._state, t), e = 0;\n }\n return this._bufferLength = e, this;\n }\n /**\n * Get the state of the hash buffer\n */\n getState() {\n const i = this._state;\n return {\n buffer: String.fromCharCode.apply(null, Array.from(this._buffer8)),\n buflen: this._bufferLength,\n length: this._dataLength,\n state: [i[0], i[1], i[2], i[3]]\n };\n }\n /**\n * Override the current state of the hash buffer\n * @param state New hash buffer state\n */\n setState(i) {\n const a = i.buffer, t = i.state, e = this._state;\n let s;\n for (this._dataLength = i.length, this._bufferLength = i.buflen, e[0] = t[0], e[1] = t[1], e[2] = t[2], e[3] = t[3], s = 0; s < a.length; s += 1)\n this._buffer8[s] = a.charCodeAt(s);\n }\n /**\n * Hash the current state of the hash buffer and return the result\n * @param raw Whether to return the value as an `Int32Array`\n */\n end(i = !1) {\n const a = this._bufferLength, t = this._buffer8, e = this._buffer32, s = (a >> 2) + 1;\n this._dataLength += a;\n const r = this._dataLength * 8;\n if (t[a] = 128, t[a + 1] = t[a + 2] = t[a + 3] = 0, e.set(h.buffer32Identity.subarray(s), s), a > 55 && (h._md5cycle(this._state, e), e.set(h.buffer32Identity)), r <= 4294967295)\n e[14] = r;\n else {\n const n = r.toString(16).match(/(.*?)(.{0,8})$/);\n if (n === null) return i ? c : \"\";\n const o = parseInt(n[2], 16), _ = parseInt(n[1], 16) || 0;\n e[14] = o, e[15] = _;\n }\n return h._md5cycle(this._state, e), i ? this._state : h._hex(this._state);\n }\n}\nif (h.hashStr(\"hello\") !== \"5d41402abc4b2a76b9719d911017c592\")\n throw new Error(\"Md5 self test failed.\");\nclass l {\n constructor(i, a = !0, t = 1048576) {\n this._callback = i, this._async = a, this._partSize = t, this._configureReader();\n }\n _reader;\n _md5;\n _part;\n // private _length!: number;\n _blob;\n /**\n * Hash a blob of data in the worker\n * @param blob Data to hash\n */\n hash(i) {\n const a = this;\n a._blob = i, a._part = 0, a._md5 = new h(), a._processPart();\n }\n _fail() {\n this._callback({\n success: !1,\n result: \"data read failed\"\n });\n }\n _hashData(i) {\n let a = this;\n a._md5.appendByteArray(new Uint8Array(i.target.result)), a._part * a._partSize >= a._blob.size ? a._callback({\n success: !0,\n result: a._md5.end()\n }) : a._processPart();\n }\n _processPart() {\n const i = this;\n let a = 0, t;\n i._part += 1, i._blob.size > i._partSize ? (a = i._part * i._partSize, a > i._blob.size && (a = i._blob.size), t = i._blob.slice(\n (i._part - 1) * i._partSize,\n a\n )) : t = i._blob, i._async ? i._reader.readAsArrayBuffer(t) : setTimeout(() => {\n try {\n i._hashData({\n target: {\n result: i._reader.readAsArrayBuffer(\n t\n )\n }\n });\n } catch {\n i._fail();\n }\n }, 0);\n }\n _configureReader() {\n const i = this;\n i._async ? (i._reader = new FileReader(), i._reader.onload = i._hashData.bind(i), i._reader.onerror = i._fail.bind(i), i._reader.onabort = i._fail.bind(i)) : i._reader = new FileReaderSync();\n }\n}\nclass u {\n _queue = [];\n _hashWorker;\n _processing;\n _ready = !0;\n constructor(i, a) {\n const t = this;\n Worker ? (t._hashWorker = new Worker(i, a), t._hashWorker.onmessage = t._recievedMessage.bind(t), t._hashWorker.onerror = (e) => {\n t._ready = !1, console.error(\"Hash worker failure\", e);\n }) : (t._ready = !1, console.error(\"Web Workers are not supported in this browser\"));\n }\n /**\n * Hash a blob of data in the worker\n * @param blob Data to hash\n * @returns Promise of the Hashed result\n */\n hash(i) {\n const a = this;\n let t;\n return t = new Promise((e, s) => {\n a._queue.push({\n blob: i,\n resolve: e,\n reject: s\n }), a._processNext();\n }), t;\n }\n /** Terminate any existing hash requests */\n terminate() {\n this._ready = !1, this._hashWorker.terminate();\n }\n // Processes the next item in the queue\n _processNext() {\n this._ready && !this._processing && this._queue.length > 0 && (this._processing = this._queue.pop(), this._hashWorker.postMessage(this._processing.blob));\n }\n // Hash result is returned from the worker\n _recievedMessage(i) {\n const a = i.data;\n a.success ? this._processing?.resolve(a.result) : this._processing?.reject(a.result), this._processing = void 0, this._processNext();\n }\n}\nexport {\n h as Md5,\n l as Md5FileHasher,\n u as ParallelHasher\n};\n//# sourceMappingURL=index.es.js.map\n","import { Md5 } from \"ts-md5\";\nimport { g as generatePalette } from \"../../chunks/colors-Cv9F-jWS.mjs\";\nfunction hashCode(str) {\n let hash = str;\n if (str.match(/^([0-9a-f]{4}-?){8}$/) === null) {\n hash = Md5.hashStr(str);\n }\n hash = hash.replace(/[^0-9a-f]/g, \"\");\n let finalInt = 0;\n for (let i = 0; i < hash.length; i++) {\n finalInt += parseInt(hash.charAt(i), 16);\n }\n return finalInt;\n}\nfunction usernameToColor(username) {\n const steps = 6;\n const finalPalette = generatePalette(steps);\n const hash = hashCode(username.toLocaleLowerCase());\n return finalPalette[hash % finalPalette.length];\n}\nexport {\n usernameToColor\n};\n//# sourceMappingURL=index.mjs.map\n","'use strict';\n\n(function (global) {\n\n // minimal symbol polyfill for IE11 and others\n if (typeof Symbol !== 'function') {\n var Symbol = function(name) {\n return name;\n }\n\n Symbol.nonNative = true;\n }\n\n const STATE_PLAINTEXT = Symbol('plaintext');\n const STATE_HTML = Symbol('html');\n const STATE_COMMENT = Symbol('comment');\n\n const ALLOWED_TAGS_REGEX = /<(\\w*)>/g;\n const NORMALIZE_TAG_REGEX = /<\\/?([^\\s\\/>]+)/;\n\n function striptags(html, allowable_tags, tag_replacement) {\n html = html || '';\n allowable_tags = allowable_tags || [];\n tag_replacement = tag_replacement || '';\n\n let context = init_context(allowable_tags, tag_replacement);\n\n return striptags_internal(html, context);\n }\n\n function init_striptags_stream(allowable_tags, tag_replacement) {\n allowable_tags = allowable_tags || [];\n tag_replacement = tag_replacement || '';\n\n let context = init_context(allowable_tags, tag_replacement);\n\n return function striptags_stream(html) {\n return striptags_internal(html || '', context);\n };\n }\n\n striptags.init_streaming_mode = init_striptags_stream;\n\n function init_context(allowable_tags, tag_replacement) {\n allowable_tags = parse_allowable_tags(allowable_tags);\n\n return {\n allowable_tags : allowable_tags,\n tag_replacement: tag_replacement,\n\n state : STATE_PLAINTEXT,\n tag_buffer : '',\n depth : 0,\n in_quote_char : ''\n };\n }\n\n function striptags_internal(html, context) {\n if (typeof html != \"string\") {\n throw new TypeError(\"'html' parameter must be a string\");\n }\n\n let allowable_tags = context.allowable_tags;\n let tag_replacement = context.tag_replacement;\n\n let state = context.state;\n let tag_buffer = context.tag_buffer;\n let depth = context.depth;\n let in_quote_char = context.in_quote_char;\n let output = '';\n\n for (let idx = 0, length = html.length; idx < length; idx++) {\n let char = html[idx];\n\n if (state === STATE_PLAINTEXT) {\n switch (char) {\n case '<':\n state = STATE_HTML;\n tag_buffer += char;\n break;\n\n default:\n output += char;\n break;\n }\n }\n\n else if (state === STATE_HTML) {\n switch (char) {\n case '<':\n // ignore '<' if inside a quote\n if (in_quote_char) {\n break;\n }\n\n // we're seeing a nested '<'\n depth++;\n break;\n\n case '>':\n // ignore '>' if inside a quote\n if (in_quote_char) {\n break;\n }\n\n // something like this is happening: '<<>>'\n if (depth) {\n depth--;\n\n break;\n }\n\n // this is closing the tag in tag_buffer\n in_quote_char = '';\n state = STATE_PLAINTEXT;\n tag_buffer += '>';\n\n if (allowable_tags.has(normalize_tag(tag_buffer))) {\n output += tag_buffer;\n } else {\n output += tag_replacement;\n }\n\n tag_buffer = '';\n break;\n\n case '\"':\n case '\\'':\n // catch both single and double quotes\n\n if (char === in_quote_char) {\n in_quote_char = '';\n } else {\n in_quote_char = in_quote_char || char;\n }\n\n tag_buffer += char;\n break;\n\n case '-':\n if (tag_buffer === '':\n if (tag_buffer.slice(-2) == '--') {\n // close the comment\n state = STATE_PLAINTEXT;\n }\n\n tag_buffer = '';\n break;\n\n default:\n tag_buffer += char;\n break;\n }\n }\n }\n\n // save the context for future iterations\n context.state = state;\n context.tag_buffer = tag_buffer;\n context.depth = depth;\n context.in_quote_char = in_quote_char;\n\n return output;\n }\n\n function parse_allowable_tags(allowable_tags) {\n let tag_set = new Set();\n\n if (typeof allowable_tags === 'string') {\n let match;\n\n while ((match = ALLOWED_TAGS_REGEX.exec(allowable_tags))) {\n tag_set.add(match[1]);\n }\n }\n\n else if (!Symbol.nonNative &&\n typeof allowable_tags[Symbol.iterator] === 'function') {\n\n tag_set = new Set(allowable_tags);\n }\n\n else if (typeof allowable_tags.forEach === 'function') {\n // IE11 compatible\n allowable_tags.forEach(tag_set.add, tag_set);\n }\n\n return tag_set;\n }\n\n function normalize_tag(tag_buffer) {\n let match = NORMALIZE_TAG_REGEX.exec(tag_buffer);\n\n return match ? match[1].toLowerCase() : null;\n }\n\n if (typeof define === 'function' && define.amd) {\n // AMD\n define(function module_factory() { return striptags; });\n }\n\n else if (typeof module === 'object' && module.exports) {\n // Node\n module.exports = striptags;\n }\n\n else {\n // Browser\n global.striptags = striptags;\n }\n}(this));\n","import '../assets/NcMentionBubble-BeGb2xGc.css';\nimport { generateUrl } from \"@nextcloud/router\";\nimport { checkIfDarkTheme } from \"../functions/isDarkTheme/index.mjs\";\nfunction getAvatarUrl(user, options) {\n const size = (options?.size || 64) <= 64 ? 64 : 512;\n const guestUrl = options?.isGuest ? \"/guest\" : \"\";\n const themeUrl = options?.isDarkTheme ?? checkIfDarkTheme(document.body) ? \"/dark\" : \"\";\n return generateUrl(`/avatar${guestUrl}/{user}/{size}${themeUrl}?guestFallback=true`, {\n user,\n size\n });\n}\nexport {\n getAvatarUrl as g\n};\n//# sourceMappingURL=NcMentionBubble.vue_vue_type_style_index_0_scoped_3c4a673d_lang-DyqakLm5.mjs.map\n","import '../assets/NcAvatar-Bs7qEhkA.css';\nimport { getCurrentUser } from \"@nextcloud/auth\";\nimport axios from \"@nextcloud/axios\";\nimport { getBuilder } from \"@nextcloud/browser-storage\";\nimport { unsubscribe, subscribe } from \"@nextcloud/event-bus\";\nimport { generateOcsUrl, generateUrl } from \"@nextcloud/router\";\nimport { vOnClickOutside } from \"@vueuse/components\";\nimport { N as NcActions, I as IconDotsHorizontal } from \"./NcActions-C-wDqSrv.mjs\";\nimport { g as getRoute } from \"./autolink-DrIurosL.mjs\";\nimport \"../composables/useFormatDateTime/index.mjs\";\nimport \"../composables/useHotKey/index.mjs\";\nimport { useIsDarkTheme } from \"../composables/useIsDarkTheme/index.mjs\";\nimport \"../composables/useIsFullscreen/index.mjs\";\nimport \"../composables/useIsMobile/index.mjs\";\nimport { getEnabledContactsMenuActions } from \"../functions/contactsMenu/index.mjs\";\nimport { usernameToColor } from \"../functions/usernameToColor/index.mjs\";\nimport { r as register, m as t10, a as t } from \"./_l10n-wdIzZwir.mjs\";\nimport \"escape-html\";\nimport \"striptags\";\nimport { resolveComponent, resolveDirective, withDirectives, openBlock, createElementBlock, normalizeStyle, normalizeClass, renderSlot, createCommentVNode, createBlock, withCtx, createSlots, Fragment, renderList, resolveDynamicComponent, mergeProps, createTextVNode, toDisplayString, createVNode, createElementVNode } from \"vue\";\nimport { g as getAvatarUrl } from \"./NcMentionBubble.vue_vue_type_style_index_0_scoped_3c4a673d_lang-DyqakLm5.mjs\";\nimport { _ as _export_sfc } from \"./_plugin-vue_export-helper-1tPrXgE0.mjs\";\nimport { getCapabilities } from \"@nextcloud/capabilities\";\nimport { l as logger } from \"./logger-D3RVzcfQ.mjs\";\nimport { N as NcUserStatusIcon, g as getUserStatusText } from \"./NcUserStatusIcon-BF5OEQFU.mjs\";\nimport { N as NcActionButton } from \"./NcActionButton-BO5T5ePT.mjs\";\nimport { N as NcActionLink } from \"./NcActionLink-BFiaYt9A.mjs\";\nimport { N as NcActionRouter } from \"./NcActionRouter-vYFtIOzD.mjs\";\nimport { N as NcActionText } from \"./NcActionText-CQ9qwJ0p.mjs\";\nimport { N as NcButton } from \"./NcButton-jvoYS2my.mjs\";\nimport { N as NcIconSvgWrapper } from \"./NcIconSvgWrapper-g8ubWhoz.mjs\";\nimport { N as NcLoadingIcon } from \"./NcLoadingIcon-BOVpFVQz.mjs\";\nregister(t10);\nconst userStatus = {\n data() {\n return {\n hasStatus: false,\n userStatus: {\n status: null,\n message: null,\n icon: null\n }\n };\n },\n methods: {\n /**\n * Fetches the user-status from the server\n *\n * @param {string} userId UserId of the user to fetch the status for\n *\n * @return {Promise}\n */\n async fetchUserStatus(userId) {\n if (!userId) {\n return;\n }\n const capabilities = getCapabilities();\n if (!Object.hasOwn(capabilities, \"user_status\") || !capabilities.user_status.enabled) {\n return;\n }\n if (!getCurrentUser()) {\n return;\n }\n try {\n const { data } = await axios.get(generateOcsUrl(\"apps/user_status/api/v1/statuses/{userId}\", { userId }));\n this.setUserStatus(data.ocs.data);\n } catch (e) {\n if (e.response.status === 404 && e.response.data.ocs?.data?.length === 0) {\n return;\n }\n logger.error(\"Failed to fetch user status\", { error: e });\n }\n },\n /**\n * Sets the user status\n *\n * @param {Record} options - Options for setting the user status\n * @param {string} options.status user's status\n * @param {string} options.message user's message\n * @param {string} options.icon user's icon\n */\n setUserStatus({ status, message, icon }) {\n this.userStatus.status = status || \"\";\n this.userStatus.message = message || \"\";\n this.userStatus.icon = icon || \"\";\n this.hasStatus = !!status;\n }\n }\n};\nconst browserStorage = getBuilder(\"nextcloud\").persist().build();\nfunction getUserHasAvatar(userId) {\n const flag = browserStorage.getItem(\"user-has-avatar.\" + userId);\n if (typeof flag === \"string\") {\n return Boolean(flag);\n }\n return null;\n}\nfunction setUserHasAvatar(userId, flag) {\n if (userId) {\n browserStorage.setItem(\"user-has-avatar.\" + userId, flag);\n }\n}\nconst _sfc_main = {\n name: \"NcAvatar\",\n directives: {\n /** @type {import('vue').ObjectDirective} */\n ClickOutside: vOnClickOutside\n },\n components: {\n IconDotsHorizontal,\n NcActions,\n NcButton,\n NcIconSvgWrapper,\n NcLoadingIcon,\n NcUserStatusIcon\n },\n mixins: [userStatus],\n props: {\n /**\n * Set a custom url to the avatar image\n * either the url, user or displayName property must be defined\n */\n url: {\n type: String,\n default: void 0\n },\n /**\n * Set a css icon-class for an icon to be used instead of the avatar.\n */\n iconClass: {\n type: String,\n default: void 0\n },\n /**\n * Set the user id to fetch the avatar\n * either the url, user or displayName property must be defined\n */\n user: {\n type: String,\n default: void 0\n },\n /**\n * Do not show the user status on the avatar.\n */\n hideStatus: {\n type: Boolean,\n default: false\n },\n /**\n * Show the verbose user status (e.g. \"online\" / \"away\") instead of just the status icon.\n */\n verboseStatus: {\n type: Boolean,\n default: false\n },\n /**\n * When the user status was preloaded via another source it can be handed in with this property to save the request.\n * If this property is not set the status will be fetched automatically.\n * If a preloaded no-status is available provide this object with properties \"status\", \"icon\" and \"message\" set to null.\n */\n preloadedUserStatus: {\n type: Object,\n default: void 0\n },\n /**\n * Is the user a guest user (then we have to user a different endpoint)\n */\n isGuest: {\n type: Boolean,\n default: false\n },\n /**\n * Set a display name that will be rendered as a tooltip\n * either the url, user or displayName property must be defined\n * specify just the displayname to generate a placeholder avatar without\n * trying to fetch the avatar based on the user id\n */\n displayName: {\n type: String,\n default: void 0\n },\n /**\n * Set a size in px for the rendered avatar\n */\n size: {\n type: Number,\n default: 32\n },\n /**\n * Do not automatically generate a placeholder avatars if there is no real avatar is available.\n */\n noPlaceholder: {\n type: Boolean,\n default: false\n },\n /**\n * Disable the tooltip\n */\n disableTooltip: {\n type: Boolean,\n default: false\n },\n /**\n * Disable the menu\n */\n disableMenu: {\n type: Boolean,\n default: false\n },\n /**\n * Declares a custom tooltip when not null\n * Fallback will be the displayName\n *\n * requires disableTooltip not to be set to true\n */\n tooltipMessage: {\n type: String,\n default: null\n },\n /**\n * Declares username is not a user's name, when true.\n * Prevents loading user's avatar from server and forces generating colored initials,\n * i.e. if the user is a group\n */\n isNoUser: {\n type: Boolean,\n default: false\n },\n /**\n * Selector for the popover menu container\n */\n menuContainer: {\n type: [Boolean, String, Object, Element],\n default: \"body\"\n }\n },\n setup() {\n const isDarkTheme = useIsDarkTheme();\n return {\n isDarkTheme\n };\n },\n data() {\n return {\n avatarUrlLoaded: null,\n avatarSrcSetLoaded: null,\n userDoesNotExist: false,\n isAvatarLoaded: false,\n isMenuLoaded: false,\n contactsMenuLoading: false,\n contactsMenuData: {},\n contactsMenuActions: [],\n contactsMenuOpenState: false\n };\n },\n computed: {\n avatarAriaLabel() {\n if (!this.hasMenu) {\n return;\n }\n if (this.canDisplayUserStatus || this.showUserStatusIconOnAvatar) {\n return t(\"Avatar of {displayName}, {status}\", { displayName: this.displayName ?? this.user, status: getUserStatusText(this.userStatus.status) });\n }\n return t(\"Avatar of {displayName}\", { displayName: this.displayName ?? this.user });\n },\n canDisplayUserStatus() {\n return !this.hideStatus && this.hasStatus && [\"online\", \"away\", \"busy\", \"dnd\"].includes(this.userStatus.status);\n },\n showUserStatusIconOnAvatar() {\n return !this.hideStatus && !this.verboseStatus && this.hasStatus && this.userStatus.status !== \"dnd\" && this.userStatus.icon;\n },\n /**\n * The user identifier, either the display name if set or the user property\n * If both properties are not set an empty string is returned\n */\n userIdentifier() {\n if (this.isDisplayNameDefined) {\n return this.displayName;\n }\n if (this.isUserDefined) {\n return this.user;\n }\n return \"\";\n },\n isUserDefined() {\n return typeof this.user !== \"undefined\";\n },\n isDisplayNameDefined() {\n return typeof this.displayName !== \"undefined\";\n },\n isUrlDefined() {\n return typeof this.url !== \"undefined\";\n },\n hasMenu() {\n if (this.disableMenu) {\n return false;\n }\n if (this.isMenuLoaded) {\n return this.menu.length > 0;\n }\n return !(this.user === getCurrentUser()?.uid || this.userDoesNotExist || this.url);\n },\n /**\n * True if initials should be shown as the user icon fallback\n */\n showInitials() {\n return !this.noPlaceholder && this.userDoesNotExist && !(this.iconClass || this.$slots.icon);\n },\n avatarStyle() {\n return {\n \"--avatar-size\": this.size + \"px\",\n lineHeight: this.showInitials ? this.size + \"px\" : 0,\n fontSize: Math.round(this.size * 0.45) + \"px\"\n };\n },\n initialsWrapperStyle() {\n const { r, g, b } = usernameToColor(this.userIdentifier);\n return {\n backgroundColor: `rgba(${r}, ${g}, ${b}, 0.1)`\n };\n },\n initialsStyle() {\n const { r, g, b } = usernameToColor(this.userIdentifier);\n return {\n color: `rgb(${r}, ${g}, ${b})`\n };\n },\n tooltip() {\n if (this.disableTooltip) {\n return null;\n }\n if (this.tooltipMessage) {\n return this.tooltipMessage;\n }\n return this.displayName;\n },\n /**\n * Get the (max. two) initials of the user as uppcase string\n */\n initials() {\n let initials = \"?\";\n if (this.showInitials) {\n const user = this.userIdentifier.trim();\n if (user === \"\") {\n return initials;\n }\n const filteredChars = user.match(/[\\p{L}\\p{N}\\s]/gu);\n if (!filteredChars) {\n return initials;\n }\n const filtered = filteredChars.join(\"\");\n const idx = filtered.lastIndexOf(\" \");\n initials = String.fromCodePoint(filtered.codePointAt(0));\n if (idx !== -1) {\n initials = initials.concat(String.fromCodePoint(filtered.codePointAt(idx + 1)));\n }\n }\n return initials.toLocaleUpperCase();\n },\n menu() {\n const actions = this.contactsMenuActions.map((item) => {\n const route = getRoute(this.$router, item.hyperlink);\n return {\n ncActionComponent: route ? NcActionRouter : NcActionLink,\n ncActionComponentProps: route ? {\n to: route,\n icon: item.icon\n } : {\n href: item.hyperlink,\n icon: item.icon\n },\n text: item.title\n };\n });\n for (const action of getEnabledContactsMenuActions(this.contactsMenuData)) {\n try {\n actions.push({\n ncActionComponent: NcActionButton,\n ncActionComponentProps: {\n onClick: () => action.callback(this.contactsMenuData)\n },\n text: action.displayName(this.contactsMenuData),\n iconSvg: action.iconSvg(this.contactsMenuData)\n });\n } catch (error) {\n logger.error(`Failed to render ContactsMenu action ${action.id}`, {\n error,\n action\n });\n }\n }\n function escape(html) {\n const text = document.createTextNode(html);\n const p = document.createElement(\"p\");\n p.appendChild(text);\n return p.innerHTML;\n }\n if (!this.hideStatus && (this.userStatus.icon || this.userStatus.message)) {\n const emojiIcon = `\n\t\t\t\t\t${escape(this.userStatus.icon)}\n\t\t\t\t`;\n return [{\n ncActionComponent: NcActionText,\n ncActionComponentProps: {},\n iconSvg: this.userStatus.icon ? emojiIcon : void 0,\n text: `${this.userStatus.message}`\n }].concat(actions);\n }\n return actions;\n }\n },\n watch: {\n url() {\n this.userDoesNotExist = false;\n this.loadAvatarUrl();\n },\n user() {\n this.userDoesNotExist = false;\n this.isMenuLoaded = false;\n this.loadAvatarUrl();\n }\n },\n mounted() {\n this.loadAvatarUrl();\n subscribe(\"settings:avatar:updated\", this.loadAvatarUrl);\n subscribe(\"settings:display-name:updated\", this.loadAvatarUrl);\n if (!this.hideStatus && this.user && !this.isNoUser) {\n if (!this.preloadedUserStatus) {\n this.fetchUserStatus(this.user);\n } else {\n this.setUserStatus(this.preloadedUserStatus);\n }\n subscribe(\"user_status:status.updated\", this.handleUserStatusUpdated);\n } else if (!this.hideStatus && this.preloadedUserStatus) {\n this.setUserStatus(this.preloadedUserStatus);\n }\n },\n beforeUnmount() {\n unsubscribe(\"settings:avatar:updated\", this.loadAvatarUrl);\n unsubscribe(\"settings:display-name:updated\", this.loadAvatarUrl);\n unsubscribe(\"user_status:status.updated\", this.handleUserStatusUpdated);\n },\n methods: {\n t,\n handleUserStatusUpdated(state) {\n if (this.user === state.userId) {\n this.userStatus = {\n status: state.status,\n icon: state.icon,\n message: state.message\n };\n this.hasStatus = state.status !== null;\n }\n },\n /**\n * Toggle the popover menu on click or enter\n *\n * @param {KeyboardEvent|MouseEvent} event the UI event\n */\n async toggleMenu(event) {\n if (event.type === \"keydown\" && event.key !== \"Enter\") {\n return;\n }\n if (!this.contactsMenuOpenState) {\n await this.fetchContactsMenu();\n }\n this.contactsMenuOpenState = !this.contactsMenuOpenState;\n },\n closeMenu() {\n this.contactsMenuOpenState = false;\n },\n async fetchContactsMenu() {\n this.contactsMenuLoading = true;\n try {\n const user = encodeURIComponent(this.user);\n const { data } = await axios.post(generateUrl(\"contactsmenu/findOne\"), `shareType=0&shareWith=${user}`);\n this.contactsMenuData = data;\n this.contactsMenuActions = data.topAction ? [data.topAction].concat(data.actions) : data.actions;\n } catch {\n this.contactsMenuOpenState = false;\n }\n this.contactsMenuLoading = false;\n this.isMenuLoaded = true;\n },\n /**\n * Handle avatar loading if user or url defined\n */\n loadAvatarUrl() {\n this.isAvatarLoaded = false;\n if (!this.isUrlDefined && (!this.isUserDefined || this.isNoUser || this.iconClass || this.$slots.icon)) {\n this.isAvatarLoaded = true;\n this.userDoesNotExist = true;\n return;\n }\n if (this.isUrlDefined) {\n this.updateImageIfValid(this.url);\n return;\n }\n if (this.size <= 64) {\n const avatarUrl = this.avatarUrlGenerator(this.user, 64);\n const srcset = [\n avatarUrl + \" 1x\",\n this.avatarUrlGenerator(this.user, 512) + \" 8x\"\n ].join(\", \");\n this.updateImageIfValid(avatarUrl, srcset);\n } else {\n const avatarUrl = this.avatarUrlGenerator(this.user, 512);\n this.updateImageIfValid(avatarUrl);\n }\n },\n /**\n * Generate an avatar url from the server's avatar endpoint\n *\n * @param {string} user the user id\n * @param {number} size the desired size\n * @return {string}\n */\n avatarUrlGenerator(user, size) {\n let avatarUrl = getAvatarUrl(user, {\n size,\n isDarkTheme: this.isDarkTheme,\n isGuest: this.isGuest\n });\n if (user === getCurrentUser()?.uid && typeof oc_userconfig !== \"undefined\") {\n avatarUrl += \"?v=\" + window.oc_userconfig.avatar.version;\n }\n return avatarUrl;\n },\n /**\n * Check if the provided url is valid and update Avatar if so\n *\n * @param {string} url the avatar url\n * @param {Array} srcset the avatar srcset\n */\n updateImageIfValid(url, srcset = null) {\n const userHasAvatar = getUserHasAvatar(this.user);\n if (this.isUserDefined && typeof userHasAvatar === \"boolean\") {\n this.isAvatarLoaded = true;\n this.avatarUrlLoaded = url;\n if (srcset) {\n this.avatarSrcSetLoaded = srcset;\n }\n if (userHasAvatar === false) {\n this.userDoesNotExist = true;\n }\n return;\n }\n const img = new Image();\n img.onload = () => {\n this.avatarUrlLoaded = url;\n if (srcset) {\n this.avatarSrcSetLoaded = srcset;\n }\n this.isAvatarLoaded = true;\n setUserHasAvatar(this.user, true);\n };\n img.onerror = (error) => {\n logger.debug(\"[NcAvatar] Invalid avatar url\", { error, url });\n this.avatarUrlLoaded = null;\n this.avatarSrcSetLoaded = null;\n this.userDoesNotExist = true;\n this.isAvatarLoaded = false;\n setUserHasAvatar(this.user, false);\n };\n if (srcset) {\n img.srcset = srcset;\n }\n img.src = url;\n }\n }\n};\nconst _hoisted_1 = [\"title\"];\nconst _hoisted_2 = [\"src\", \"srcset\"];\nconst _hoisted_3 = {\n key: 2,\n class: \"avatardiv__user-status avatardiv__user-status--icon\"\n};\nfunction _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {\n const _component_NcLoadingIcon = resolveComponent(\"NcLoadingIcon\");\n const _component_IconDotsHorizontal = resolveComponent(\"IconDotsHorizontal\");\n const _component_NcButton = resolveComponent(\"NcButton\");\n const _component_NcIconSvgWrapper = resolveComponent(\"NcIconSvgWrapper\");\n const _component_NcActions = resolveComponent(\"NcActions\");\n const _component_NcUserStatusIcon = resolveComponent(\"NcUserStatusIcon\");\n const _directive_click_outside = resolveDirective(\"click-outside\");\n return withDirectives((openBlock(), createElementBlock(\"span\", {\n class: normalizeClass([\"avatardiv popovermenu-wrapper\", {\n \"avatardiv--unknown\": $data.userDoesNotExist,\n \"avatardiv--with-menu\": $options.hasMenu,\n \"avatardiv--with-menu-loading\": $data.contactsMenuLoading\n }]),\n style: normalizeStyle($options.avatarStyle),\n title: $options.tooltip\n }, [\n renderSlot(_ctx.$slots, \"icon\", {}, () => [\n $props.iconClass ? (openBlock(), createElementBlock(\"span\", {\n key: 0,\n class: normalizeClass([$props.iconClass, \"avatar-class-icon\"])\n }, null, 2)) : $data.isAvatarLoaded && !$data.userDoesNotExist ? (openBlock(), createElementBlock(\"img\", {\n key: 1,\n src: $data.avatarUrlLoaded,\n srcset: $data.avatarSrcSetLoaded,\n alt: \"\"\n }, null, 8, _hoisted_2)) : createCommentVNode(\"\", true)\n ], true),\n $options.hasMenu && $options.menu.length === 0 ? (openBlock(), createBlock(_component_NcButton, {\n key: 0,\n \"aria-label\": $options.avatarAriaLabel,\n class: \"action-item action-item__menutoggle\",\n variant: \"tertiary-no-background\",\n onClick: $options.toggleMenu\n }, {\n icon: withCtx(() => [\n $data.contactsMenuLoading ? (openBlock(), createBlock(_component_NcLoadingIcon, { key: 0 })) : (openBlock(), createBlock(_component_IconDotsHorizontal, {\n key: 1,\n size: 20\n }))\n ]),\n _: 1\n }, 8, [\"aria-label\", \"onClick\"])) : $options.hasMenu ? (openBlock(), createBlock(_component_NcActions, {\n key: 1,\n open: $data.contactsMenuOpenState,\n \"onUpdate:open\": _cache[0] || (_cache[0] = ($event) => $data.contactsMenuOpenState = $event),\n \"aria-label\": $options.avatarAriaLabel,\n container: $props.menuContainer,\n forceMenu: \"\",\n manualOpen: \"\",\n variant: \"tertiary-no-background\",\n onClick: $options.toggleMenu\n }, createSlots({\n default: withCtx(() => [\n (openBlock(true), createElementBlock(Fragment, null, renderList($options.menu, (item, key) => {\n return openBlock(), createBlock(resolveDynamicComponent(item.ncActionComponent), mergeProps({ key }, { ref_for: true }, item.ncActionComponentProps), createSlots({\n default: withCtx(() => [\n createTextVNode(\" \" + toDisplayString(item.text), 1)\n ]),\n _: 2\n }, [\n item.iconSvg ? {\n name: \"icon\",\n fn: withCtx(() => [\n createVNode(_component_NcIconSvgWrapper, {\n svg: item.iconSvg\n }, null, 8, [\"svg\"])\n ]),\n key: \"0\"\n } : void 0\n ]), 1040);\n }), 128))\n ]),\n _: 2\n }, [\n $data.contactsMenuLoading ? {\n name: \"icon\",\n fn: withCtx(() => [\n createVNode(_component_NcLoadingIcon)\n ]),\n key: \"0\"\n } : void 0\n ]), 1032, [\"open\", \"aria-label\", \"container\", \"onClick\"])) : createCommentVNode(\"\", true),\n $options.showUserStatusIconOnAvatar ? (openBlock(), createElementBlock(\"span\", _hoisted_3, toDisplayString(_ctx.userStatus.icon), 1)) : $options.canDisplayUserStatus ? (openBlock(), createBlock(_component_NcUserStatusIcon, {\n key: 3,\n class: \"avatardiv__user-status\",\n status: _ctx.userStatus.status,\n \"aria-hidden\": String($options.hasMenu)\n }, null, 8, [\"status\", \"aria-hidden\"])) : createCommentVNode(\"\", true),\n $options.showInitials ? (openBlock(), createElementBlock(\"span\", {\n key: 4,\n style: normalizeStyle($options.initialsWrapperStyle),\n class: \"avatardiv__initials-wrapper\"\n }, [\n createElementVNode(\"span\", {\n style: normalizeStyle($options.initialsStyle),\n class: \"avatardiv__initials\"\n }, toDisplayString($options.initials), 5)\n ], 4)) : createCommentVNode(\"\", true)\n ], 14, _hoisted_1)), [\n [_directive_click_outside, $options.closeMenu]\n ]);\n}\nconst NcAvatar = /* @__PURE__ */ _export_sfc(_sfc_main, [[\"render\", _sfc_render], [\"__scopeId\", \"data-v-e0ae1174\"]]);\nexport {\n NcAvatar as N,\n userStatus as u\n};\n//# sourceMappingURL=NcAvatar-1KxMUN7V.mjs.map\n"],"names":["_sfc_main","ActionTextMixin","NC_ACTIONS_IS_SEMANTIC_MENU","_hoisted_1","_hoisted_2","_hoisted_3","_hoisted_4","_hoisted_5","_hoisted_6","_sfc_render","_ctx","_cache","$props","$setup","$data","$options","openBlock","createElementBlock","createElementVNode","args","renderSlot","normalizeClass","normalizeStyle","createCommentVNode","toDisplayString","NcActionText","_export_sfc","INJECTION_KEY_THEME","useIsDarkThemeElement","el","element","computed","toValue","isDarkTheme","ref","checkIfDarkTheme","isDarkSystemTheme","usePreferredDark","updateIsDarkTheme","useMutationObserver","watch","readonly","useInternalIsDarkTheme","createSharedComposable","useIsDarkTheme","enforcedTheme","inject","stopClickOutsideMap","vOnClickOutside","binding","capture","stop","onClickOutside","handler","options","vElementVisibility","createDisposableDirective","useElementVisibility","v","state","getEnabledContactsMenuActions","entry","action","c","i","a","t","e","r","n","o","_","hashCode","str","hash","Md5","finalInt","usernameToColor","username","finalPalette","generatePalette","global","Symbol","name","STATE_PLAINTEXT","STATE_HTML","STATE_COMMENT","ALLOWED_TAGS_REGEX","NORMALIZE_TAG_REGEX","striptags","html","allowable_tags","tag_replacement","context","init_context","striptags_internal","init_striptags_stream","parse_allowable_tags","tag_buffer","depth","in_quote_char","output","idx","length","char","normalize_tag","tag_set","match","module","this","getAvatarUrl","user","size","guestUrl","themeUrl","generateUrl","register","t10","userStatus","userId","capabilities","getCapabilities","getCurrentUser","data","axios","generateOcsUrl","logger","status","message","icon","browserStorage","getBuilder","getUserHasAvatar","flag","setUserHasAvatar","IconDotsHorizontal","NcActions","NcButton","NcIconSvgWrapper","NcLoadingIcon","NcUserStatusIcon","getUserStatusText","g","b","initials","filteredChars","filtered","actions","item","route","getRoute","NcActionRouter","NcActionLink","NcActionButton","error","escape","text","p","emojiIcon","subscribe","unsubscribe","event","avatarUrl","srcset","url","userHasAvatar","img","_component_NcLoadingIcon","resolveComponent","_component_IconDotsHorizontal","_component_NcButton","_component_NcIconSvgWrapper","_component_NcActions","_component_NcUserStatusIcon","_directive_click_outside","resolveDirective","withDirectives","createBlock","withCtx","$event","createSlots","Fragment","renderList","key","resolveDynamicComponent","mergeProps","createTextVNode","createVNode","NcAvatar"],"mappings":"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","x_google_ignoreList":[0,1,2,3,4,5,6,7,8,9]} \ No newline at end of file diff --git a/dist/NcAvatar-1KxMUN7V-X_YNB4Fv.chunk.mjs.map.license b/dist/NcAvatar-1KxMUN7V-R6Nmwuvb.chunk.mjs.map.license similarity index 100% rename from dist/NcAvatar-1KxMUN7V-X_YNB4Fv.chunk.mjs.map.license rename to dist/NcAvatar-1KxMUN7V-R6Nmwuvb.chunk.mjs.map.license diff --git a/dist/NcBreadcrumbs-B4eyDS9i-BkuFqTyn.chunk.mjs b/dist/NcBreadcrumbs-B4eyDS9i-bX0dOZmj.chunk.mjs similarity index 96% rename from dist/NcBreadcrumbs-B4eyDS9i-BkuFqTyn.chunk.mjs rename to dist/NcBreadcrumbs-B4eyDS9i-bX0dOZmj.chunk.mjs index 18cb138db1672..084f0eaaff739 100644 --- a/dist/NcBreadcrumbs-B4eyDS9i-BkuFqTyn.chunk.mjs +++ b/dist/NcBreadcrumbs-B4eyDS9i-bX0dOZmj.chunk.mjs @@ -1,3 +1,3 @@ -const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=[window.OC.filePath('', '', 'dist/index-BRPJrOcF.chunk.mjs'),window.OC.filePath('', '', 'dist/Web-DYqXJUev.chunk.mjs'),window.OC.filePath('', '', 'dist/public-C1mLBHT3.chunk.mjs'),window.OC.filePath('', '', 'dist/logger-D3RVzcfQ-Bt9JRPzn.chunk.mjs'),window.OC.filePath('', '', 'dist/createElementId-DhjFt1I9-BmyhoOWk.chunk.mjs'),window.OC.filePath('', '', 'dist/translation-DoG5ZELJ-WOan4U8V.chunk.mjs'),window.OC.filePath('', '', 'dist/index-Cp0kcsps.chunk.mjs'),window.OC.filePath('', '', 'dist/common-createElementId-DhjFt1I9-C_oBIsvc.chunk.css'),window.OC.filePath('', '', 'dist/common-logger-D3RVzcfQ-Ks0gkIDB.chunk.css'),window.OC.filePath('', '', 'dist/colors-Cv9F-jWS-BFJACjQq.chunk.mjs'),window.OC.filePath('', '', 'dist/NcModal-DiDvgcU8-7_SNLMd-.chunk.mjs'),window.OC.filePath('', '', 'dist/common-NcModal-DiDvgcU8-B-yi1OwC.chunk.css'),window.OC.filePath('', '', 'dist/common-index-bfXBK-tQ.chunk.css'),window.OC.filePath('', '', 'dist/index-Cdqy7gO-.chunk.mjs'),window.OC.filePath('', '', 'dist/index-BDlLVKOD.chunk.mjs'),window.OC.filePath('', '', 'dist/TrashCanOutline-BU3aqDG_.chunk.mjs'),window.OC.filePath('', '', 'dist/common-TrashCanOutline-BYHcrfvW.chunk.css'),window.OC.filePath('', '', 'dist/common-index-BWhNCeJl.chunk.css'),window.OC.filePath('', '', 'dist/common-index-BnF98eos.chunk.css')])))=>i.map(i=>d[i]); -import{b as R,n as j,o as b,f as N,g,t as S,y as w,m as T,s as Y,v as I,r as k,i as Z,O as L,L as H,h as D,c as x,k as W,w as G,a as V,_ as P}from"./Web-DYqXJUev.chunk.mjs";import{r as F,o as J,_ as A,b as z,c as C,p as K}from"./createElementId-DhjFt1I9-BmyhoOWk.chunk.mjs";import{a as X}from"./PencilOutline-DhyEf5vr.chunk.mjs";import{N as Q}from"./NcPasswordField-BFyzHTOO-7Y4psNBG.chunk.mjs";import{_ as tt}from"./NcTextField.vue_vue_type_script_setup_true_lang-Bx2esFU2-D61trFet.chunk.mjs";import{t as et}from"./index-Cp0kcsps.chunk.mjs";F(J);const it=["for"],st=["id","type","value","min","max"],nt=R({inheritAttrs:!1,__name:"NcDateTimePickerNative",props:Y({class:{default:void 0},id:{default:()=>C()},inputClass:{default:""},type:{default:"date"},label:{default:()=>z("Please choose a date")},min:{default:null},max:{default:null},hideLabel:{type:Boolean}},{modelValue:{default:null},modelModifiers:{}}),emits:["update:modelValue"],setup(r){const e=j(r,"modelValue"),t=r,a=I(()=>e.value?p(e.value):""),d=I(()=>t.max?p(t.max):void 0),o=I(()=>t.min?p(t.min):void 0);function c(s){const i=s.getFullYear().toString().padStart(4,"0"),h=(s.getMonth()+1).toString().padStart(2,"0"),u=s.getDate().toString().padStart(2,"0"),m=s.getHours().toString().padStart(2,"0"),f=s.getMinutes().toString().padStart(2,"0");return{yyyy:i,MM:h,dd:u,hh:m,mm:f}}function p(s){const{yyyy:i,MM:h,dd:u,hh:m,mm:f}=c(s);if(t.type==="datetime-local")return`${i}-${h}-${u}T${m}:${f}`;if(t.type==="date")return`${i}-${h}-${u}`;if(t.type==="month")return`${i}-${h}`;if(t.type==="time")return`${m}:${f}`;if(t.type==="week"){const l=new Date(Number.parseInt(i),0,1),v=Math.floor((s.getTime()-l.getTime())/(1440*60*1e3)),_=Math.ceil(v/7);return`${i}-W${_}`}return""}function n(s){const i=s.target;if(!i||isNaN(i.valueAsNumber))e.value=null;else if(t.type==="time"){const h=i.value,{yyyy:u,MM:m,dd:f}=c(e.value||new Date);e.value=new Date(`${u}-${m}-${f}T${h}`)}else if(t.type==="month"){const h=(new Date(i.value).getMonth()+1).toString().padStart(2,"0"),{yyyy:u,dd:m,hh:f,mm:l}=c(e.value||new Date);e.value=new Date(`${u}-${h}-${m}T${f}:${l}`)}else{const h=new Date(i.valueAsNumber).getTimezoneOffset()*1e3*60,u=i.valueAsNumber+h;e.value=new Date(u)}}return(s,i)=>(b(),N("div",{class:w(["native-datetime-picker",s.$props.class])},[g("label",{class:w(["native-datetime-picker__label",{"hidden-visually":r.hideLabel}]),for:r.id},S(r.label),11,it),g("input",T({id:r.id,class:["native-datetime-picker__input",r.inputClass],type:r.type,value:a.value,min:o.value,max:d.value},s.$attrs,{onInput:n}),null,16,st)],2))}}),rt=A(nt,[["__scopeId","data-v-b97e1f7a"]]);F(K);const at={name:"NcActionInput",components:{NcDateTimePickerNative:rt,NcPasswordField:Q,NcTextField:tt,NcColorPicker:V(()=>P(()=>import("./index-BRPJrOcF.chunk.mjs"),__vite__mapDeps([0,1,2,3,4,5,6,7,8,9,10,11,12]),import.meta.url)),NcDateTimePicker:V(()=>P(()=>import("./index-Cdqy7gO-.chunk.mjs"),__vite__mapDeps([13,3,1,2,4,5,6,7,8,10,11,14,15,16,17,18]),import.meta.url)),NcSelect:V(()=>P(()=>import("./index-BDlLVKOD.chunk.mjs").then(r=>r.i),__vite__mapDeps([14,1,2,10,3,4,5,6,7,8,11,15,16,17]),import.meta.url))},mixins:[X],inheritAttrs:!1,props:{id:{type:String,default:()=>"action-"+C(),validator:r=>r.trim()!==""},inputId:{type:String,default:()=>"action-input-"+C(),validator:r=>r.trim()!==""},icon:{type:String,default:""},type:{type:String,default:"text",validator(r){return["date","datetime-local","month","multiselect","number","password","search","tel","text","time","url","week","color","email"].includes(r)}},idNativeDateTimePicker:{type:String,default:"date-time-picker_id"},isNativePicker:{type:Boolean,default:!1},label:{type:String,default:null},labelOutside:{type:Boolean,default:!0},modelValue:{type:[String,Date,Number,Array],default:""},disabled:{type:Boolean,default:!1},ariaLabel:{type:String,default:""},showTrailingButton:{type:Boolean,default:!0},trailingButtonLabel:{type:String,default:z("Submit")},class:{type:[String,Array,Object],default:""}},emits:["submit","update:modelValue"],computed:{isIconUrl(){try{return new URL(this.icon)}catch{return!1}},isMultiselectType(){return this.type==="multiselect"},nativeDatePickerType(){switch(this.type){case"date":case"month":case"time":case"week":case"datetime-local":return this.type}return!1},datePickerType(){if(!this.isNativePicker)switch(this.type){case"date":case"month":case"time":return this.type;case"datetime-local":return"datetime"}return!1},isFocusable(){return!this.disabled}},methods:{onLeave(){this.$refs.datetimepicker&&this.$refs.datetimepicker.$refs.datepicker&&this.$refs.datetimepicker.$refs.datepicker.closePopup()},onSubmit(r){if(r.preventDefault(),r.stopPropagation(),!this.disabled)this.$emit("submit",r);else return!1},onUpdateModelValue(r){this.$emit("update:modelValue",r)}}},ot={class:"action-input__icon-wrapper"},lt=["disabled"],ut={class:"action-input__container"},ct=["for"],ht={class:"action-input__input-container"},dt={key:4,class:"action-input__container"},pt=["for"],mt={class:"action-input__input-container"};function ft(r,e,t,a,d,o){const c=k("NcDateTimePicker"),p=k("NcDateTimePickerNative"),n=k("NcSelect"),s=k("NcPasswordField"),i=k("NcColorPicker"),h=k("NcTextField");return b(),N("li",{class:w(["action",[{"action--disabled":t.disabled},r.$props.class]])},[g("span",{class:w(["action-input",{"action-input-picker--disabled":t.disabled,"action-input--visible-label":t.labelOutside&&t.label}]),onMouseleave:e[3]||(e[3]=(...u)=>o.onLeave&&o.onLeave(...u))},[g("span",ot,[Z(r.$slots,"icon",{},()=>[g("span",{"aria-hidden":"true",class:w(["action-input__icon",[o.isIconUrl?"action-input__icon--url":t.icon]]),style:L({backgroundImage:o.isIconUrl?`url(${t.icon})`:null})},null,6)],!0)]),g("form",{ref:"form",class:"action-input__form",disabled:t.disabled,onSubmit:e[2]||(e[2]=H((...u)=>o.onSubmit&&o.onSubmit(...u),["prevent"]))},[g("div",ut,[t.label&&t.labelOutside&&!t.isNativePicker?(b(),N("label",{key:0,class:w(["action-input__text-label",{"action-input__text-label--hidden":!t.labelOutside}]),for:t.inputId},S(t.label),11,ct)):D("",!0),g("div",ht,[o.datePickerType?(b(),x(c,T({key:0,ref:"datetimepicker",modelValue:t.modelValue,style:{"z-index":"99999999999"},placeholder:r.text,disabled:t.disabled,type:o.datePickerType,inputClass:["mx-input",{focusable:o.isFocusable}],class:"action-input__datetimepicker",appendToBody:""},r.$attrs,{"onUpdate:modelValue":o.onUpdateModelValue}),null,16,["modelValue","placeholder","disabled","type","inputClass","onUpdate:modelValue"])):t.isNativePicker?(b(),x(p,T({key:1,id:t.idNativeDateTimePicker,modelValue:t.modelValue,label:t.label,type:o.nativeDatePickerType,inputClass:{focusable:o.isFocusable},class:"action-input__datetimepicker"},r.$attrs,{"onUpdate:modelValue":o.onUpdateModelValue}),null,16,["id","modelValue","label","type","inputClass","onUpdate:modelValue"])):o.isMultiselectType?(b(),x(n,T({key:2,modelValue:t.modelValue,placeholder:r.text,disabled:t.disabled,appendToBody:!1,inputClass:{focusable:o.isFocusable},class:"action-input__multi"},r.$attrs,{"onUpdate:modelValue":o.onUpdateModelValue}),null,16,["modelValue","placeholder","disabled","inputClass","onUpdate:modelValue"])):t.type==="password"?(b(),x(s,T({key:3,id:t.inputId,modelValue:t.modelValue,label:t.label,labelOutside:!t.label||t.labelOutside,placeholder:r.text,disabled:t.disabled,inputClass:{focusable:o.isFocusable},showTrailingButton:t.showTrailingButton&&!t.disabled},r.$attrs,{"onUpdate:modelValue":o.onUpdateModelValue}),null,16,["id","modelValue","label","labelOutside","placeholder","disabled","inputClass","showTrailingButton","onUpdate:modelValue"])):t.type==="color"?(b(),N("div",dt,[t.label&&t.type==="color"?(b(),N("label",{key:0,class:w(["action-input__text-label",{"action-input__text-label--hidden":!t.labelOutside}]),for:t.inputId},S(t.label),11,pt)):D("",!0),g("div",mt,[W(i,T({id:"inputId",modelValue:t.modelValue,class:"colorpicker__trigger"},r.$attrs,{"onUpdate:modelValue":o.onUpdateModelValue,onSubmit:e[0]||(e[0]=u=>r.$refs.form.requestSubmit())}),{default:G(()=>[g("button",{class:w(["colorpicker__preview",{focusable:o.isFocusable}]),style:L({"background-color":t.modelValue})},null,6)]),_:1},16,["modelValue","onUpdate:modelValue"])])])):(b(),x(h,T({key:5,id:t.inputId,modelValue:t.modelValue,label:t.label,labelOutside:!t.label||t.labelOutside,placeholder:r.text,disabled:t.disabled,inputClass:{focusable:o.isFocusable},type:t.type,trailingButtonIcon:"arrowRight",trailingButtonLabel:t.trailingButtonLabel,showTrailingButton:t.showTrailingButton&&!t.disabled},r.$attrs,{onTrailingButtonClick:e[1]||(e[1]=u=>r.$refs.form.requestSubmit()),"onUpdate:modelValue":o.onUpdateModelValue}),null,16,["id","modelValue","label","labelOutside","placeholder","disabled","inputClass","type","trailingButtonLabel","showTrailingButton","onUpdate:modelValue"]))])])],40,lt)],34)],2)}const Vt=A(at,[["render",ft],["__scopeId","data-v-43230e98"]]);var O={exports:{}},M;function yt(){return M||(M=1,(function(r){var e=Object.prototype.hasOwnProperty,t="~";function a(){}Object.create&&(a.prototype=Object.create(null),new a().__proto__||(t=!1));function d(n,s,i){this.fn=n,this.context=s,this.once=i||!1}function o(n,s,i,h,u){if(typeof i!="function")throw new TypeError("The listener must be a function");var m=new d(i,h||n,u),f=t?t+s:s;return n._events[f]?n._events[f].fn?n._events[f]=[n._events[f],m]:n._events[f].push(m):(n._events[f]=m,n._eventsCount++),n}function c(n,s){--n._eventsCount===0?n._events=new a:delete n._events[s]}function p(){this._events=new a,this._eventsCount=0}p.prototype.eventNames=function(){var n=[],s,i;if(this._eventsCount===0)return n;for(i in s=this._events)e.call(s,i)&&n.push(t?i.slice(1):i);return Object.getOwnPropertySymbols?n.concat(Object.getOwnPropertySymbols(s)):n},p.prototype.listeners=function(n){var s=t?t+n:n,i=this._events[s];if(!i)return[];if(i.fn)return[i.fn];for(var h=0,u=i.length,m=new Array(u);hr.reason??new DOMException("This operation was aborted.","AbortError");function gt(r,e){const{milliseconds:t,fallback:a,message:d,customTimers:o={setTimeout,clearTimeout},signal:c}=e;let p,n;const s=new Promise((i,h)=>{if(typeof t!="number"||Math.sign(t)!==1)throw new TypeError(`Expected \`milliseconds\` to be a positive number, got \`${t}\``);if(c?.aborted){h(U(c));return}if(c&&(n=()=>{h(U(c))},c.addEventListener("abort",n,{once:!0})),r.then(i,h),t===Number.POSITIVE_INFINITY)return;const u=new E;p=o.setTimeout.call(void 0,()=>{if(a){try{i(a())}catch(m){h(m)}return}typeof r.cancel=="function"&&r.cancel(),d===!1?i():d instanceof Error?h(d):(u.message=d??`Promise timed out after ${t} milliseconds`,h(u))},t)}).finally(()=>{s.clear(),n&&c&&c.removeEventListener("abort",n)});return s.clear=()=>{o.clearTimeout.call(void 0,p),p=void 0},s}function _t(r,e,t){let a=0,d=r.length;for(;d>0;){const o=Math.trunc(d/2);let c=a+o;t(r[c],e)<=0?(a=++c,d-=o+1):d=o}return a}const wt=100;class B{#e=[];#t=0;enqueue(e,t){const{priority:a=0,id:d}=t??{},{size:o}=this,c={priority:a,id:d,run:e};if(o===0){this.#e.length=0,this.#t=0,this.#e.push(c);return}if(this.#e.at(-1).priority>=a){this.#e.push(c);return}this.#r();const p=_t(this.#e,c,(n,s)=>s.priority-n.priority);this.#e.splice(p,0,c)}setPriority(e,t){const a=this.#e.findIndex((o,c)=>c>=this.#t&&o.id===e);if(a===-1)throw new ReferenceError(`No promise function with the id "${e}" exists in the queue.`);const[d]=this.#e.splice(a,1);this.enqueue(d.run,{priority:t,id:e})}remove(e){const t=this.#e.findIndex((a,d)=>dwt&&this.#t>this.#e.length/2&&this.#r(),e?.run}filter(e){const t=[];for(let a=this.#t;a=1))throw new TypeError(`Expected \`intervalCap\` to be a number from 1 and up, got \`${e.intervalCap?.toString()??""}\` (${typeof e.intervalCap})`);if(e.interval===void 0||!(Number.isFinite(e.interval)&&e.interval>=0))throw new TypeError(`Expected \`interval\` to be a finite number >= 0, got \`${e.interval?.toString()??""}\` (${typeof e.interval})`);if(e.strict&&e.interval===0)throw new TypeError("The `strict` option requires a non-zero `interval`");if(e.strict&&e.intervalCap===Number.POSITIVE_INFINITY)throw new TypeError("The `strict` option requires a finite `intervalCap`");if(this.#e=e.carryoverIntervalCount??e.carryoverConcurrencyCount??!1,this.#t=e.intervalCap===Number.POSITIVE_INFINITY||e.interval===0,this.#p=e.intervalCap,this.#l=e.interval,this.#o=e.strict,this.#i=new e.queueClass,this.#V=e.queueClass,this.concurrency=e.concurrency,e.timeout!==void 0&&!(Number.isFinite(e.timeout)&&e.timeout>0))throw new TypeError(`Expected \`timeout\` to be a positive finite number, got \`${e.timeout}\` (${typeof e.timeout})`);this.timeout=e.timeout,this.#h=e.autoStart===!1,this.#z()}#T(e){for(;this.#n=this.#l)this.#n++;else break}(this.#n>100&&this.#n>this.#a.length/2||this.#n===this.#a.length)&&(this.#a=this.#a.slice(this.#n),this.#n=0)}#D(e){this.#o?this.#a.push(e):this.#r++}#O(){this.#o?this.#a.length>this.#n&&this.#a.pop():this.#r>0&&this.#r--}#k(){return this.#a.length-this.#n}get#M(){return this.#t?!0:this.#o?this.#k()=this.#p){const t=this.#a[this.#n],a=this.#l-(e-t);return this.#$(a),!0}return!1}if(this.#u===void 0){const t=this.#I-e;if(t<0){if(this.#_>0){const a=e-this.#_;if(a{this.#F()},e))}#x(){this.#u&&(clearInterval(this.#u),this.#u=void 0)}#P(){this.#c&&(clearTimeout(this.#c),this.#c=void 0)}#b(){if(this.#i.size===0){if(this.#x(),this.emit("empty"),this.#s===0){if(this.#P(),this.#o&&this.#n>0){const t=Date.now();this.#T(t)}this.emit("idle")}return!1}let e=!1;if(!this.#h){const t=Date.now(),a=!this.#A(t);if(this.#M&&this.#U){const d=this.#i.dequeue();this.#t||(this.#D(t),this.#m()),this.emit("active"),d(),a&&this.#S(),e=!0}}return e}#S(){this.#t||this.#u!==void 0||this.#o||(this.#u=setInterval(()=>{this.#C()},this.#l),this.#I=Date.now()+this.#l)}#C(){this.#o||(this.#r===0&&this.#s===0&&this.#u&&this.#x(),this.#r=this.#e?this.#s:0),this.#N(),this.#m()}#N(){for(;this.#b(););}get concurrency(){return this.#y}set concurrency(e){if(!(typeof e=="number"&&e>=1))throw new TypeError(`Expected \`concurrency\` to be a number from 1 and up, got \`${e}\` (${typeof e})`);this.#y=e,this.#N()}setPriority(e,t){if(typeof t!="number"||!Number.isFinite(t))throw new TypeError(`Expected \`priority\` to be a finite number, got \`${t}\` (${typeof t})`);this.#i.setPriority(e,t)}async add(e,t={}){if(t={timeout:this.timeout,...t,id:t.id??(this.#L++).toString()},t.timeout!==void 0&&!(Number.isFinite(t.timeout)&&t.timeout>0))throw new TypeError(`Expected \`timeout\` to be a positive finite number, got \`${t.timeout}\` (${typeof t.timeout})`);return new Promise((a,d)=>{const o=Symbol(`task-${t.id}`);let c=()=>{};const p=async()=>{c(),this.#s++,this.#v.set(o,{id:t.id,priority:t.priority??0,startTime:Date.now(),timeout:t.timeout});let s;try{try{t.signal?.throwIfAborted()}catch(u){throw this.#q(),this.#v.delete(o),u}this.#_=Date.now();let i=e({signal:t.signal});if(t.timeout!==void 0&&(i=gt(Promise.resolve(i),{milliseconds:t.timeout,message:`Task timed out after ${t.timeout}ms (queue has ${this.#s} running, ${this.#i.size} waiting)`})),t.signal){const{signal:u}=t;i=Promise.race([i,new Promise((m,f)=>{s=()=>{f(u.reason)},u.addEventListener("abort",s,{once:!0})})])}const h=await i;a(h),this.emit("completed",h)}catch(i){d(i),this.emit("error",i)}finally{s&&t.signal?.removeEventListener("abort",s),this.#v.delete(o),queueMicrotask(()=>{this.#B()})}};this.#i.enqueue(p,t);const n=()=>{if(this.#i instanceof B){this.#i.remove(p);return}this.#i.remove?.(t.id)};if(t.signal){const{signal:s}=t,i=()=>{c(),n(),d(s.reason),this.#b(),this.emit("next")};if(c=()=>{s.removeEventListener("abort",i),this.#w.delete(c)},s.aborted){i();return}s.addEventListener("abort",i,{once:!0}),this.#w.add(c)}this.emit("add"),this.#b()})}async addAll(e,t){return Promise.all(e.map(async a=>this.add(a,t)))}start(){return this.#h?(this.#h=!1,this.#N(),this):this}pause(){this.#h=!0}clear(){for(const e of this.#w)e();this.#i=new this.#V,this.#x(),this.#E(),this.emit("empty"),this.#s===0&&(this.#P(),this.emit("idle")),this.emit("next")}async onEmpty(){this.#i.size!==0&&await this.#d("empty")}async onSizeLessThan(e){this.#i.sizethis.#i.size{const a=d=>{this.off("error",a),t(d)};this.on("error",a)})}async#d(e,t){const a=Array.isArray(e)?e:[e];return new Promise(d=>{const o=()=>{if(!(t&&!t())){for(const c of a)this.off(c,o);d()}};for(const c of a)this.on(c,o)})}get size(){return this.#i.size}sizeBy(e){return this.#i.filter(e).length}get pending(){return this.#s}get isPaused(){return this.#h}#z(){this.#t||(this.on("add",()=>{this.#i.size>0&&this.#m()}),this.on("next",()=>{this.#m()}))}#m(){this.#t||this.#g||(this.#g=!0,queueMicrotask(()=>{this.#g=!1,this.#E()}))}#q(){this.#t||(this.#O(),this.#m())}#E(){const e=this.#f;if(this.#t||this.#i.size===0){e&&(this.#f=!1,this.emit("rateLimitCleared"));return}let t;if(this.#o){const d=Date.now();this.#T(d),t=this.#k()}else t=this.#r;const a=t>=this.#p;a!==e&&(this.#f=a,this.emit(a?"rateLimit":"rateLimitCleared"))}get isRateLimited(){return this.#f}get isSaturated(){return this.#s===this.#y&&this.#i.size>0||this.isRateLimited&&this.#i.size>0}get runningTasks(){return[...this.#v.values()].map(e=>({...e,timeoutRemaining:e.timeout?Math.max(0,e.startTime+e.timeout-Date.now()):void 0}))}}export{rt as N,Pt as P,Vt as a}; -//# sourceMappingURL=NcBreadcrumbs-B4eyDS9i-BkuFqTyn.chunk.mjs.map +const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=[window.OC.filePath('', '', 'dist/index-BH07KH9-.chunk.mjs'),window.OC.filePath('', '', 'dist/Web-DYqXJUev.chunk.mjs'),window.OC.filePath('', '', 'dist/public-C1mLBHT3.chunk.mjs'),window.OC.filePath('', '', 'dist/logger-D3RVzcfQ-BrUWOyzd.chunk.mjs'),window.OC.filePath('', '', 'dist/createElementId-DhjFt1I9-BmyhoOWk.chunk.mjs'),window.OC.filePath('', '', 'dist/translation-DoG5ZELJ-WOan4U8V.chunk.mjs'),window.OC.filePath('', '', 'dist/index-Cp0kcsps.chunk.mjs'),window.OC.filePath('', '', 'dist/common-createElementId-DhjFt1I9-C_oBIsvc.chunk.css'),window.OC.filePath('', '', 'dist/common-logger-D3RVzcfQ-Ks0gkIDB.chunk.css'),window.OC.filePath('', '', 'dist/colors-Cv9F-jWS-BFJACjQq.chunk.mjs'),window.OC.filePath('', '', 'dist/NcModal-DiDvgcU8-Cb_C64qI.chunk.mjs'),window.OC.filePath('', '', 'dist/common-NcModal-DiDvgcU8-B-yi1OwC.chunk.css'),window.OC.filePath('', '', 'dist/common-index-bfXBK-tQ.chunk.css'),window.OC.filePath('', '', 'dist/index-C1YcCfSa.chunk.mjs'),window.OC.filePath('', '', 'dist/index-BhwlPNkJ.chunk.mjs'),window.OC.filePath('', '', 'dist/TrashCanOutline-BU3aqDG_.chunk.mjs'),window.OC.filePath('', '', 'dist/common-TrashCanOutline-BYHcrfvW.chunk.css'),window.OC.filePath('', '', 'dist/common-index-BWhNCeJl.chunk.css'),window.OC.filePath('', '', 'dist/common-index-BnF98eos.chunk.css')])))=>i.map(i=>d[i]); +import{b as R,n as j,o as b,f as N,g,t as S,y as w,m as T,s as Y,v as I,r as k,i as Z,O as L,L as H,h as D,c as x,k as W,w as G,a as V,_ as P}from"./Web-DYqXJUev.chunk.mjs";import{r as F,o as J,_ as A,b as z,c as C,p as K}from"./createElementId-DhjFt1I9-BmyhoOWk.chunk.mjs";import{a as X}from"./PencilOutline-CA_ZiZlA.chunk.mjs";import{N as Q}from"./NcPasswordField-BFyzHTOO-BIm5AMSG.chunk.mjs";import{_ as tt}from"./NcTextField.vue_vue_type_script_setup_true_lang-Bx2esFU2-CGsfYqql.chunk.mjs";import{t as et}from"./index-Cp0kcsps.chunk.mjs";F(J);const it=["for"],st=["id","type","value","min","max"],nt=R({inheritAttrs:!1,__name:"NcDateTimePickerNative",props:Y({class:{default:void 0},id:{default:()=>C()},inputClass:{default:""},type:{default:"date"},label:{default:()=>z("Please choose a date")},min:{default:null},max:{default:null},hideLabel:{type:Boolean}},{modelValue:{default:null},modelModifiers:{}}),emits:["update:modelValue"],setup(r){const e=j(r,"modelValue"),t=r,a=I(()=>e.value?p(e.value):""),d=I(()=>t.max?p(t.max):void 0),o=I(()=>t.min?p(t.min):void 0);function c(s){const i=s.getFullYear().toString().padStart(4,"0"),h=(s.getMonth()+1).toString().padStart(2,"0"),u=s.getDate().toString().padStart(2,"0"),m=s.getHours().toString().padStart(2,"0"),f=s.getMinutes().toString().padStart(2,"0");return{yyyy:i,MM:h,dd:u,hh:m,mm:f}}function p(s){const{yyyy:i,MM:h,dd:u,hh:m,mm:f}=c(s);if(t.type==="datetime-local")return`${i}-${h}-${u}T${m}:${f}`;if(t.type==="date")return`${i}-${h}-${u}`;if(t.type==="month")return`${i}-${h}`;if(t.type==="time")return`${m}:${f}`;if(t.type==="week"){const l=new Date(Number.parseInt(i),0,1),v=Math.floor((s.getTime()-l.getTime())/(1440*60*1e3)),_=Math.ceil(v/7);return`${i}-W${_}`}return""}function n(s){const i=s.target;if(!i||isNaN(i.valueAsNumber))e.value=null;else if(t.type==="time"){const h=i.value,{yyyy:u,MM:m,dd:f}=c(e.value||new Date);e.value=new Date(`${u}-${m}-${f}T${h}`)}else if(t.type==="month"){const h=(new Date(i.value).getMonth()+1).toString().padStart(2,"0"),{yyyy:u,dd:m,hh:f,mm:l}=c(e.value||new Date);e.value=new Date(`${u}-${h}-${m}T${f}:${l}`)}else{const h=new Date(i.valueAsNumber).getTimezoneOffset()*1e3*60,u=i.valueAsNumber+h;e.value=new Date(u)}}return(s,i)=>(b(),N("div",{class:w(["native-datetime-picker",s.$props.class])},[g("label",{class:w(["native-datetime-picker__label",{"hidden-visually":r.hideLabel}]),for:r.id},S(r.label),11,it),g("input",T({id:r.id,class:["native-datetime-picker__input",r.inputClass],type:r.type,value:a.value,min:o.value,max:d.value},s.$attrs,{onInput:n}),null,16,st)],2))}}),rt=A(nt,[["__scopeId","data-v-b97e1f7a"]]);F(K);const at={name:"NcActionInput",components:{NcDateTimePickerNative:rt,NcPasswordField:Q,NcTextField:tt,NcColorPicker:V(()=>P(()=>import("./index-BH07KH9-.chunk.mjs"),__vite__mapDeps([0,1,2,3,4,5,6,7,8,9,10,11,12]),import.meta.url)),NcDateTimePicker:V(()=>P(()=>import("./index-C1YcCfSa.chunk.mjs"),__vite__mapDeps([13,3,1,2,4,5,6,7,8,10,11,14,15,16,17,18]),import.meta.url)),NcSelect:V(()=>P(()=>import("./index-BhwlPNkJ.chunk.mjs").then(r=>r.i),__vite__mapDeps([14,1,2,10,3,4,5,6,7,8,11,15,16,17]),import.meta.url))},mixins:[X],inheritAttrs:!1,props:{id:{type:String,default:()=>"action-"+C(),validator:r=>r.trim()!==""},inputId:{type:String,default:()=>"action-input-"+C(),validator:r=>r.trim()!==""},icon:{type:String,default:""},type:{type:String,default:"text",validator(r){return["date","datetime-local","month","multiselect","number","password","search","tel","text","time","url","week","color","email"].includes(r)}},idNativeDateTimePicker:{type:String,default:"date-time-picker_id"},isNativePicker:{type:Boolean,default:!1},label:{type:String,default:null},labelOutside:{type:Boolean,default:!0},modelValue:{type:[String,Date,Number,Array],default:""},disabled:{type:Boolean,default:!1},ariaLabel:{type:String,default:""},showTrailingButton:{type:Boolean,default:!0},trailingButtonLabel:{type:String,default:z("Submit")},class:{type:[String,Array,Object],default:""}},emits:["submit","update:modelValue"],computed:{isIconUrl(){try{return new URL(this.icon)}catch{return!1}},isMultiselectType(){return this.type==="multiselect"},nativeDatePickerType(){switch(this.type){case"date":case"month":case"time":case"week":case"datetime-local":return this.type}return!1},datePickerType(){if(!this.isNativePicker)switch(this.type){case"date":case"month":case"time":return this.type;case"datetime-local":return"datetime"}return!1},isFocusable(){return!this.disabled}},methods:{onLeave(){this.$refs.datetimepicker&&this.$refs.datetimepicker.$refs.datepicker&&this.$refs.datetimepicker.$refs.datepicker.closePopup()},onSubmit(r){if(r.preventDefault(),r.stopPropagation(),!this.disabled)this.$emit("submit",r);else return!1},onUpdateModelValue(r){this.$emit("update:modelValue",r)}}},ot={class:"action-input__icon-wrapper"},lt=["disabled"],ut={class:"action-input__container"},ct=["for"],ht={class:"action-input__input-container"},dt={key:4,class:"action-input__container"},pt=["for"],mt={class:"action-input__input-container"};function ft(r,e,t,a,d,o){const c=k("NcDateTimePicker"),p=k("NcDateTimePickerNative"),n=k("NcSelect"),s=k("NcPasswordField"),i=k("NcColorPicker"),h=k("NcTextField");return b(),N("li",{class:w(["action",[{"action--disabled":t.disabled},r.$props.class]])},[g("span",{class:w(["action-input",{"action-input-picker--disabled":t.disabled,"action-input--visible-label":t.labelOutside&&t.label}]),onMouseleave:e[3]||(e[3]=(...u)=>o.onLeave&&o.onLeave(...u))},[g("span",ot,[Z(r.$slots,"icon",{},()=>[g("span",{"aria-hidden":"true",class:w(["action-input__icon",[o.isIconUrl?"action-input__icon--url":t.icon]]),style:L({backgroundImage:o.isIconUrl?`url(${t.icon})`:null})},null,6)],!0)]),g("form",{ref:"form",class:"action-input__form",disabled:t.disabled,onSubmit:e[2]||(e[2]=H((...u)=>o.onSubmit&&o.onSubmit(...u),["prevent"]))},[g("div",ut,[t.label&&t.labelOutside&&!t.isNativePicker?(b(),N("label",{key:0,class:w(["action-input__text-label",{"action-input__text-label--hidden":!t.labelOutside}]),for:t.inputId},S(t.label),11,ct)):D("",!0),g("div",ht,[o.datePickerType?(b(),x(c,T({key:0,ref:"datetimepicker",modelValue:t.modelValue,style:{"z-index":"99999999999"},placeholder:r.text,disabled:t.disabled,type:o.datePickerType,inputClass:["mx-input",{focusable:o.isFocusable}],class:"action-input__datetimepicker",appendToBody:""},r.$attrs,{"onUpdate:modelValue":o.onUpdateModelValue}),null,16,["modelValue","placeholder","disabled","type","inputClass","onUpdate:modelValue"])):t.isNativePicker?(b(),x(p,T({key:1,id:t.idNativeDateTimePicker,modelValue:t.modelValue,label:t.label,type:o.nativeDatePickerType,inputClass:{focusable:o.isFocusable},class:"action-input__datetimepicker"},r.$attrs,{"onUpdate:modelValue":o.onUpdateModelValue}),null,16,["id","modelValue","label","type","inputClass","onUpdate:modelValue"])):o.isMultiselectType?(b(),x(n,T({key:2,modelValue:t.modelValue,placeholder:r.text,disabled:t.disabled,appendToBody:!1,inputClass:{focusable:o.isFocusable},class:"action-input__multi"},r.$attrs,{"onUpdate:modelValue":o.onUpdateModelValue}),null,16,["modelValue","placeholder","disabled","inputClass","onUpdate:modelValue"])):t.type==="password"?(b(),x(s,T({key:3,id:t.inputId,modelValue:t.modelValue,label:t.label,labelOutside:!t.label||t.labelOutside,placeholder:r.text,disabled:t.disabled,inputClass:{focusable:o.isFocusable},showTrailingButton:t.showTrailingButton&&!t.disabled},r.$attrs,{"onUpdate:modelValue":o.onUpdateModelValue}),null,16,["id","modelValue","label","labelOutside","placeholder","disabled","inputClass","showTrailingButton","onUpdate:modelValue"])):t.type==="color"?(b(),N("div",dt,[t.label&&t.type==="color"?(b(),N("label",{key:0,class:w(["action-input__text-label",{"action-input__text-label--hidden":!t.labelOutside}]),for:t.inputId},S(t.label),11,pt)):D("",!0),g("div",mt,[W(i,T({id:"inputId",modelValue:t.modelValue,class:"colorpicker__trigger"},r.$attrs,{"onUpdate:modelValue":o.onUpdateModelValue,onSubmit:e[0]||(e[0]=u=>r.$refs.form.requestSubmit())}),{default:G(()=>[g("button",{class:w(["colorpicker__preview",{focusable:o.isFocusable}]),style:L({"background-color":t.modelValue})},null,6)]),_:1},16,["modelValue","onUpdate:modelValue"])])])):(b(),x(h,T({key:5,id:t.inputId,modelValue:t.modelValue,label:t.label,labelOutside:!t.label||t.labelOutside,placeholder:r.text,disabled:t.disabled,inputClass:{focusable:o.isFocusable},type:t.type,trailingButtonIcon:"arrowRight",trailingButtonLabel:t.trailingButtonLabel,showTrailingButton:t.showTrailingButton&&!t.disabled},r.$attrs,{onTrailingButtonClick:e[1]||(e[1]=u=>r.$refs.form.requestSubmit()),"onUpdate:modelValue":o.onUpdateModelValue}),null,16,["id","modelValue","label","labelOutside","placeholder","disabled","inputClass","type","trailingButtonLabel","showTrailingButton","onUpdate:modelValue"]))])])],40,lt)],34)],2)}const Vt=A(at,[["render",ft],["__scopeId","data-v-43230e98"]]);var O={exports:{}},M;function yt(){return M||(M=1,(function(r){var e=Object.prototype.hasOwnProperty,t="~";function a(){}Object.create&&(a.prototype=Object.create(null),new a().__proto__||(t=!1));function d(n,s,i){this.fn=n,this.context=s,this.once=i||!1}function o(n,s,i,h,u){if(typeof i!="function")throw new TypeError("The listener must be a function");var m=new d(i,h||n,u),f=t?t+s:s;return n._events[f]?n._events[f].fn?n._events[f]=[n._events[f],m]:n._events[f].push(m):(n._events[f]=m,n._eventsCount++),n}function c(n,s){--n._eventsCount===0?n._events=new a:delete n._events[s]}function p(){this._events=new a,this._eventsCount=0}p.prototype.eventNames=function(){var n=[],s,i;if(this._eventsCount===0)return n;for(i in s=this._events)e.call(s,i)&&n.push(t?i.slice(1):i);return Object.getOwnPropertySymbols?n.concat(Object.getOwnPropertySymbols(s)):n},p.prototype.listeners=function(n){var s=t?t+n:n,i=this._events[s];if(!i)return[];if(i.fn)return[i.fn];for(var h=0,u=i.length,m=new Array(u);hr.reason??new DOMException("This operation was aborted.","AbortError");function gt(r,e){const{milliseconds:t,fallback:a,message:d,customTimers:o={setTimeout,clearTimeout},signal:c}=e;let p,n;const s=new Promise((i,h)=>{if(typeof t!="number"||Math.sign(t)!==1)throw new TypeError(`Expected \`milliseconds\` to be a positive number, got \`${t}\``);if(c?.aborted){h(U(c));return}if(c&&(n=()=>{h(U(c))},c.addEventListener("abort",n,{once:!0})),r.then(i,h),t===Number.POSITIVE_INFINITY)return;const u=new E;p=o.setTimeout.call(void 0,()=>{if(a){try{i(a())}catch(m){h(m)}return}typeof r.cancel=="function"&&r.cancel(),d===!1?i():d instanceof Error?h(d):(u.message=d??`Promise timed out after ${t} milliseconds`,h(u))},t)}).finally(()=>{s.clear(),n&&c&&c.removeEventListener("abort",n)});return s.clear=()=>{o.clearTimeout.call(void 0,p),p=void 0},s}function _t(r,e,t){let a=0,d=r.length;for(;d>0;){const o=Math.trunc(d/2);let c=a+o;t(r[c],e)<=0?(a=++c,d-=o+1):d=o}return a}const wt=100;class B{#e=[];#t=0;enqueue(e,t){const{priority:a=0,id:d}=t??{},{size:o}=this,c={priority:a,id:d,run:e};if(o===0){this.#e.length=0,this.#t=0,this.#e.push(c);return}if(this.#e.at(-1).priority>=a){this.#e.push(c);return}this.#r();const p=_t(this.#e,c,(n,s)=>s.priority-n.priority);this.#e.splice(p,0,c)}setPriority(e,t){const a=this.#e.findIndex((o,c)=>c>=this.#t&&o.id===e);if(a===-1)throw new ReferenceError(`No promise function with the id "${e}" exists in the queue.`);const[d]=this.#e.splice(a,1);this.enqueue(d.run,{priority:t,id:e})}remove(e){const t=this.#e.findIndex((a,d)=>dwt&&this.#t>this.#e.length/2&&this.#r(),e?.run}filter(e){const t=[];for(let a=this.#t;a=1))throw new TypeError(`Expected \`intervalCap\` to be a number from 1 and up, got \`${e.intervalCap?.toString()??""}\` (${typeof e.intervalCap})`);if(e.interval===void 0||!(Number.isFinite(e.interval)&&e.interval>=0))throw new TypeError(`Expected \`interval\` to be a finite number >= 0, got \`${e.interval?.toString()??""}\` (${typeof e.interval})`);if(e.strict&&e.interval===0)throw new TypeError("The `strict` option requires a non-zero `interval`");if(e.strict&&e.intervalCap===Number.POSITIVE_INFINITY)throw new TypeError("The `strict` option requires a finite `intervalCap`");if(this.#e=e.carryoverIntervalCount??e.carryoverConcurrencyCount??!1,this.#t=e.intervalCap===Number.POSITIVE_INFINITY||e.interval===0,this.#p=e.intervalCap,this.#l=e.interval,this.#o=e.strict,this.#i=new e.queueClass,this.#V=e.queueClass,this.concurrency=e.concurrency,e.timeout!==void 0&&!(Number.isFinite(e.timeout)&&e.timeout>0))throw new TypeError(`Expected \`timeout\` to be a positive finite number, got \`${e.timeout}\` (${typeof e.timeout})`);this.timeout=e.timeout,this.#h=e.autoStart===!1,this.#z()}#T(e){for(;this.#n=this.#l)this.#n++;else break}(this.#n>100&&this.#n>this.#a.length/2||this.#n===this.#a.length)&&(this.#a=this.#a.slice(this.#n),this.#n=0)}#D(e){this.#o?this.#a.push(e):this.#r++}#O(){this.#o?this.#a.length>this.#n&&this.#a.pop():this.#r>0&&this.#r--}#k(){return this.#a.length-this.#n}get#M(){return this.#t?!0:this.#o?this.#k()=this.#p){const t=this.#a[this.#n],a=this.#l-(e-t);return this.#$(a),!0}return!1}if(this.#u===void 0){const t=this.#I-e;if(t<0){if(this.#_>0){const a=e-this.#_;if(a{this.#F()},e))}#x(){this.#u&&(clearInterval(this.#u),this.#u=void 0)}#P(){this.#c&&(clearTimeout(this.#c),this.#c=void 0)}#b(){if(this.#i.size===0){if(this.#x(),this.emit("empty"),this.#s===0){if(this.#P(),this.#o&&this.#n>0){const t=Date.now();this.#T(t)}this.emit("idle")}return!1}let e=!1;if(!this.#h){const t=Date.now(),a=!this.#A(t);if(this.#M&&this.#U){const d=this.#i.dequeue();this.#t||(this.#D(t),this.#m()),this.emit("active"),d(),a&&this.#S(),e=!0}}return e}#S(){this.#t||this.#u!==void 0||this.#o||(this.#u=setInterval(()=>{this.#C()},this.#l),this.#I=Date.now()+this.#l)}#C(){this.#o||(this.#r===0&&this.#s===0&&this.#u&&this.#x(),this.#r=this.#e?this.#s:0),this.#N(),this.#m()}#N(){for(;this.#b(););}get concurrency(){return this.#y}set concurrency(e){if(!(typeof e=="number"&&e>=1))throw new TypeError(`Expected \`concurrency\` to be a number from 1 and up, got \`${e}\` (${typeof e})`);this.#y=e,this.#N()}setPriority(e,t){if(typeof t!="number"||!Number.isFinite(t))throw new TypeError(`Expected \`priority\` to be a finite number, got \`${t}\` (${typeof t})`);this.#i.setPriority(e,t)}async add(e,t={}){if(t={timeout:this.timeout,...t,id:t.id??(this.#L++).toString()},t.timeout!==void 0&&!(Number.isFinite(t.timeout)&&t.timeout>0))throw new TypeError(`Expected \`timeout\` to be a positive finite number, got \`${t.timeout}\` (${typeof t.timeout})`);return new Promise((a,d)=>{const o=Symbol(`task-${t.id}`);let c=()=>{};const p=async()=>{c(),this.#s++,this.#v.set(o,{id:t.id,priority:t.priority??0,startTime:Date.now(),timeout:t.timeout});let s;try{try{t.signal?.throwIfAborted()}catch(u){throw this.#q(),this.#v.delete(o),u}this.#_=Date.now();let i=e({signal:t.signal});if(t.timeout!==void 0&&(i=gt(Promise.resolve(i),{milliseconds:t.timeout,message:`Task timed out after ${t.timeout}ms (queue has ${this.#s} running, ${this.#i.size} waiting)`})),t.signal){const{signal:u}=t;i=Promise.race([i,new Promise((m,f)=>{s=()=>{f(u.reason)},u.addEventListener("abort",s,{once:!0})})])}const h=await i;a(h),this.emit("completed",h)}catch(i){d(i),this.emit("error",i)}finally{s&&t.signal?.removeEventListener("abort",s),this.#v.delete(o),queueMicrotask(()=>{this.#B()})}};this.#i.enqueue(p,t);const n=()=>{if(this.#i instanceof B){this.#i.remove(p);return}this.#i.remove?.(t.id)};if(t.signal){const{signal:s}=t,i=()=>{c(),n(),d(s.reason),this.#b(),this.emit("next")};if(c=()=>{s.removeEventListener("abort",i),this.#w.delete(c)},s.aborted){i();return}s.addEventListener("abort",i,{once:!0}),this.#w.add(c)}this.emit("add"),this.#b()})}async addAll(e,t){return Promise.all(e.map(async a=>this.add(a,t)))}start(){return this.#h?(this.#h=!1,this.#N(),this):this}pause(){this.#h=!0}clear(){for(const e of this.#w)e();this.#i=new this.#V,this.#x(),this.#E(),this.emit("empty"),this.#s===0&&(this.#P(),this.emit("idle")),this.emit("next")}async onEmpty(){this.#i.size!==0&&await this.#d("empty")}async onSizeLessThan(e){this.#i.sizethis.#i.size{const a=d=>{this.off("error",a),t(d)};this.on("error",a)})}async#d(e,t){const a=Array.isArray(e)?e:[e];return new Promise(d=>{const o=()=>{if(!(t&&!t())){for(const c of a)this.off(c,o);d()}};for(const c of a)this.on(c,o)})}get size(){return this.#i.size}sizeBy(e){return this.#i.filter(e).length}get pending(){return this.#s}get isPaused(){return this.#h}#z(){this.#t||(this.on("add",()=>{this.#i.size>0&&this.#m()}),this.on("next",()=>{this.#m()}))}#m(){this.#t||this.#g||(this.#g=!0,queueMicrotask(()=>{this.#g=!1,this.#E()}))}#q(){this.#t||(this.#O(),this.#m())}#E(){const e=this.#f;if(this.#t||this.#i.size===0){e&&(this.#f=!1,this.emit("rateLimitCleared"));return}let t;if(this.#o){const d=Date.now();this.#T(d),t=this.#k()}else t=this.#r;const a=t>=this.#p;a!==e&&(this.#f=a,this.emit(a?"rateLimit":"rateLimitCleared"))}get isRateLimited(){return this.#f}get isSaturated(){return this.#s===this.#y&&this.#i.size>0||this.isRateLimited&&this.#i.size>0}get runningTasks(){return[...this.#v.values()].map(e=>({...e,timeoutRemaining:e.timeout?Math.max(0,e.startTime+e.timeout-Date.now()):void 0}))}}export{rt as N,Pt as P,Vt as a}; +//# sourceMappingURL=NcBreadcrumbs-B4eyDS9i-bX0dOZmj.chunk.mjs.map diff --git a/dist/NcBreadcrumbs-B4eyDS9i-BkuFqTyn.chunk.mjs.license b/dist/NcBreadcrumbs-B4eyDS9i-bX0dOZmj.chunk.mjs.license similarity index 100% rename from dist/NcBreadcrumbs-B4eyDS9i-BkuFqTyn.chunk.mjs.license rename to dist/NcBreadcrumbs-B4eyDS9i-bX0dOZmj.chunk.mjs.license diff --git a/dist/NcBreadcrumbs-B4eyDS9i-BkuFqTyn.chunk.mjs.map b/dist/NcBreadcrumbs-B4eyDS9i-bX0dOZmj.chunk.mjs.map similarity index 99% rename from dist/NcBreadcrumbs-B4eyDS9i-BkuFqTyn.chunk.mjs.map rename to dist/NcBreadcrumbs-B4eyDS9i-bX0dOZmj.chunk.mjs.map index 57c51342711c3..43333b1a81f1c 100644 --- a/dist/NcBreadcrumbs-B4eyDS9i-BkuFqTyn.chunk.mjs.map +++ b/dist/NcBreadcrumbs-B4eyDS9i-bX0dOZmj.chunk.mjs.map @@ -1 +1 @@ -{"version":3,"mappings":"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","names":["register","t40","_hoisted_1","_hoisted_2","_sfc_main","defineComponent","mergeModels","createElementId","t","__props","modelValue","useModel","props","formattedValue","computed","formatValue","formattedMax","formattedMin","getReadableDate","value","yyyy","MM","dd","hh","mm","startDate","daysSinceBeginningOfYear","weekNumber","onInput","event","input","time","timezoneOffsetSeconds","inputDateWithTimezone","_ctx","_cache","openBlock","createElementBlock","normalizeClass","createElementVNode","toDisplayString","mergeProps","NcDateTimePickerNative","_export_sfc","t49","NcPasswordField","_sfc_main$1","defineAsyncComponent","__vitePreload","n","ActionGlobalMixin","id","type","_hoisted_3","_hoisted_4","_hoisted_5","_hoisted_6","_hoisted_7","_hoisted_8","_sfc_render","$props","$setup","$data","$options","_component_NcDateTimePicker","resolveComponent","_component_NcDateTimePickerNative","_component_NcSelect","_component_NcPasswordField","_component_NcColorPicker","_component_NcTextField","args","renderSlot","normalizeStyle","withModifiers","createCommentVNode","createBlock","createVNode","$event","withCtx","NcActionInput","has","prefix","Events","EE","fn","context","once","addListener","emitter","listener","evt","clearEvent","EventEmitter","names","events","name","handlers","i","l","ee","listeners","a1","a2","a3","a4","a5","len","length","j","module","TimeoutError","message","options","getAbortedReason","signal","pTimeout","promise","milliseconds","fallback","customTimers","timer","abortHandler","cancelablePromise","resolve","reject","timeoutError","error","lowerBound","array","comparator","first","count","step","it","compactionThreshold","PriorityQueue","#queue","#head","run","priority","size","element","#compact","index","a","b","item","idOrRun","result","PQueue","#carryoverIntervalCount","#isIntervalIgnored","#intervalCount","#intervalCap","#rateLimitedInInterval","#rateLimitFlushScheduled","#interval","#intervalEnd","#lastExecutionTime","#intervalId","#timeoutId","#strict","#strictTicks","#strictTicksStartIndex","#queueClass","#pending","#concurrency","#isPaused","#idAssigner","#runningTasks","#queueAbortListenerCleanupFunctions","#setupRateLimitTracking","#cleanupStrictTicks","now","oldestTick","#consumeIntervalSlot","#rollbackIntervalSlot","#getActiveTicksCount","#doesIntervalAllowAnother","#doesConcurrentAllowAnother","#next","#tryToStartAnother","#onResumeInterval","#onInterval","#initializeIntervalIfNeeded","#isIntervalPausedAt","delay","#createIntervalTimeout","timeSinceLastExecution","#clearIntervalTimer","#clearTimeoutTimer","taskStarted","canInitializeInterval","job","#scheduleRateLimitUpdate","#processQueue","newConcurrency","function_","taskSymbol","cleanupQueueAbortHandler","eventListener","#rollbackIntervalConsumption","operation","_resolve","removeQueuedTask","queueAbortHandler","functions","#updateRateLimitState","#onEvent","limit","handleError","filter","eventList","previous","shouldBeRateLimited","task"],"ignoreList":[0,1,2,3,4,5,6],"sources":["../node_modules/@nextcloud/vue/dist/chunks/NcDateTimePickerNative-B8CMOUnH.mjs","../node_modules/@nextcloud/vue/dist/chunks/NcActionInput-Dr8Yrafu.mjs","../node_modules/eventemitter3/index.js","../node_modules/p-timeout/index.js","../node_modules/p-queue/dist/lower-bound.js","../node_modules/p-queue/dist/priority-queue.js","../node_modules/p-queue/dist/index.js"],"sourcesContent":["import '../assets/NcDateTimePickerNative-BP6eg8aU.css';\nimport { defineComponent, useModel, computed, openBlock, createElementBlock, normalizeClass, createElementVNode, toDisplayString, mergeProps, mergeModels } from \"vue\";\nimport { r as register, x as t40, a as t } from \"./_l10n-wdIzZwir.mjs\";\nimport { c as createElementId } from \"./createElementId-DhjFt1I9.mjs\";\nimport { _ as _export_sfc } from \"./_plugin-vue_export-helper-1tPrXgE0.mjs\";\nregister(t40);\nconst _hoisted_1 = [\"for\"];\nconst _hoisted_2 = [\"id\", \"type\", \"value\", \"min\", \"max\"];\nconst _sfc_main = /* @__PURE__ */ defineComponent({\n ...{ inheritAttrs: false },\n __name: \"NcDateTimePickerNative\",\n props: /* @__PURE__ */ mergeModels({\n class: { default: void 0 },\n id: { default: () => createElementId() },\n inputClass: { default: \"\" },\n type: { default: \"date\" },\n label: { default: () => t(\"Please choose a date\") },\n min: { default: null },\n max: { default: null },\n hideLabel: { type: Boolean }\n }, {\n \"modelValue\": { default: null },\n \"modelModifiers\": {}\n }),\n emits: [\"update:modelValue\"],\n setup(__props) {\n const modelValue = useModel(__props, \"modelValue\");\n const props = __props;\n const formattedValue = computed(() => modelValue.value ? formatValue(modelValue.value) : \"\");\n const formattedMax = computed(() => props.max ? formatValue(props.max) : void 0);\n const formattedMin = computed(() => props.min ? formatValue(props.min) : void 0);\n function getReadableDate(value) {\n const yyyy = value.getFullYear().toString().padStart(4, \"0\");\n const MM = (value.getMonth() + 1).toString().padStart(2, \"0\");\n const dd = value.getDate().toString().padStart(2, \"0\");\n const hh = value.getHours().toString().padStart(2, \"0\");\n const mm = value.getMinutes().toString().padStart(2, \"0\");\n return { yyyy, MM, dd, hh, mm };\n }\n function formatValue(value) {\n const { yyyy, MM, dd, hh, mm } = getReadableDate(value);\n if (props.type === \"datetime-local\") {\n return `${yyyy}-${MM}-${dd}T${hh}:${mm}`;\n } else if (props.type === \"date\") {\n return `${yyyy}-${MM}-${dd}`;\n } else if (props.type === \"month\") {\n return `${yyyy}-${MM}`;\n } else if (props.type === \"time\") {\n return `${hh}:${mm}`;\n } else if (props.type === \"week\") {\n const startDate = new Date(Number.parseInt(yyyy), 0, 1);\n const daysSinceBeginningOfYear = Math.floor((value.getTime() - startDate.getTime()) / (24 * 60 * 60 * 1e3));\n const weekNumber = Math.ceil(daysSinceBeginningOfYear / 7);\n return `${yyyy}-W${weekNumber}`;\n }\n return \"\";\n }\n function onInput(event) {\n const input = event.target;\n if (!input || isNaN(input.valueAsNumber)) {\n modelValue.value = null;\n } else if (props.type === \"time\") {\n const time = input.value;\n const { yyyy, MM, dd } = getReadableDate(modelValue.value || /* @__PURE__ */ new Date());\n modelValue.value = /* @__PURE__ */ new Date(`${yyyy}-${MM}-${dd}T${time}`);\n } else if (props.type === \"month\") {\n const MM = (new Date(input.value).getMonth() + 1).toString().padStart(2, \"0\");\n const { yyyy, dd, hh, mm } = getReadableDate(modelValue.value || /* @__PURE__ */ new Date());\n modelValue.value = /* @__PURE__ */ new Date(`${yyyy}-${MM}-${dd}T${hh}:${mm}`);\n } else {\n const timezoneOffsetSeconds = new Date(input.valueAsNumber).getTimezoneOffset() * 1e3 * 60;\n const inputDateWithTimezone = input.valueAsNumber + timezoneOffsetSeconds;\n modelValue.value = new Date(inputDateWithTimezone);\n }\n }\n return (_ctx, _cache) => {\n return openBlock(), createElementBlock(\"div\", {\n class: normalizeClass([\"native-datetime-picker\", _ctx.$props.class])\n }, [\n createElementVNode(\"label\", {\n class: normalizeClass([\"native-datetime-picker__label\", { \"hidden-visually\": __props.hideLabel }]),\n for: __props.id\n }, toDisplayString(__props.label), 11, _hoisted_1),\n createElementVNode(\"input\", mergeProps({\n id: __props.id,\n class: [\"native-datetime-picker__input\", __props.inputClass],\n type: __props.type,\n value: formattedValue.value,\n min: formattedMin.value,\n max: formattedMax.value\n }, _ctx.$attrs, { onInput }), null, 16, _hoisted_2)\n ], 2);\n };\n }\n});\nconst NcDateTimePickerNative = /* @__PURE__ */ _export_sfc(_sfc_main, [[\"__scopeId\", \"data-v-b97e1f7a\"]]);\nexport {\n NcDateTimePickerNative as N\n};\n//# sourceMappingURL=NcDateTimePickerNative-B8CMOUnH.mjs.map\n","import '../assets/NcActionInput-t9WvlgV0.css';\nimport { defineAsyncComponent, resolveComponent, openBlock, createElementBlock, normalizeClass, createElementVNode, renderSlot, normalizeStyle, withModifiers, toDisplayString, createCommentVNode, createBlock, mergeProps, createVNode, withCtx } from \"vue\";\nimport { r as register, l as t49, a as t } from \"./_l10n-wdIzZwir.mjs\";\nimport { A as ActionGlobalMixin } from \"./actionGlobal-BZFdtdJL.mjs\";\nimport { c as createElementId } from \"./createElementId-DhjFt1I9.mjs\";\nimport { N as NcDateTimePickerNative } from \"./NcDateTimePickerNative-B8CMOUnH.mjs\";\nimport { N as NcPasswordField } from \"./NcPasswordField-BFyzHTOO.mjs\";\nimport { _ as _sfc_main$1 } from \"./NcTextField.vue_vue_type_script_setup_true_lang-Bx2esFU2.mjs\";\nimport { _ as _export_sfc } from \"./_plugin-vue_export-helper-1tPrXgE0.mjs\";\nregister(t49);\nconst _sfc_main = {\n name: \"NcActionInput\",\n components: {\n NcDateTimePickerNative,\n NcPasswordField,\n NcTextField: _sfc_main$1,\n // Lazy load components with more than 50kB bundle size impact\n NcColorPicker: defineAsyncComponent(() => import(\"../components/NcColorPicker/index.mjs\")),\n NcDateTimePicker: defineAsyncComponent(() => import(\"../components/NcDateTimePicker/index.mjs\")),\n NcSelect: defineAsyncComponent(() => import(\"../components/NcSelect/index.mjs\"))\n },\n mixins: [ActionGlobalMixin],\n inheritAttrs: false,\n props: {\n /**\n * id attribute of the checkbox element\n */\n id: {\n type: String,\n default: () => \"action-\" + createElementId(),\n validator: (id) => id.trim() !== \"\"\n },\n /**\n * id attribute of the text input element\n */\n inputId: {\n type: String,\n default: () => \"action-input-\" + createElementId(),\n validator: (id) => id.trim() !== \"\"\n },\n /**\n * Icon to show with the action, can be either a CSS class or an URL\n */\n icon: {\n type: String,\n default: \"\"\n },\n /**\n * type attribute of the input field\n */\n type: {\n type: String,\n default: \"text\",\n validator(type) {\n return [\n \"date\",\n \"datetime-local\",\n \"month\",\n \"multiselect\",\n \"number\",\n \"password\",\n \"search\",\n \"tel\",\n \"text\",\n \"time\",\n \"url\",\n \"week\",\n \"color\",\n \"email\"\n ].includes(type);\n }\n },\n /**\n * id attribute for the native date time picker\n */\n idNativeDateTimePicker: {\n type: String,\n default: \"date-time-picker_id\"\n },\n /**\n * Flag to use a native date time picker\n */\n isNativePicker: {\n type: Boolean,\n default: false\n },\n /**\n * The visible input label for accessibility purposes.\n */\n label: {\n type: String,\n default: null\n },\n /**\n * If you want to show the label just above the\n * input field, pass in `true` to this prop.\n */\n labelOutside: {\n type: Boolean,\n default: true\n },\n /**\n * value attribute of the input field\n */\n modelValue: {\n type: [String, Date, Number, Array],\n default: \"\"\n },\n /**\n * disabled state of the input field\n */\n disabled: {\n type: Boolean,\n default: false\n },\n /**\n * aria-label attribute of the input field\n */\n ariaLabel: {\n type: String,\n default: \"\"\n },\n /**\n * Attribute forwarded to the underlying NcPasswordField and NcTextField\n */\n showTrailingButton: {\n type: Boolean,\n default: true\n },\n /**\n * Trailing button label forwarded to the underlying NcTextField\n */\n trailingButtonLabel: {\n type: String,\n default: t(\"Submit\")\n },\n /**\n * CSS class to apply to the root element.\n */\n class: {\n type: [String, Array, Object],\n default: \"\"\n }\n },\n emits: [\n \"submit\",\n \"update:modelValue\"\n ],\n computed: {\n isIconUrl() {\n try {\n return new URL(this.icon);\n } catch {\n return false;\n }\n },\n isMultiselectType() {\n return this.type === \"multiselect\";\n },\n nativeDatePickerType() {\n switch (this.type) {\n case \"date\":\n case \"month\":\n case \"time\":\n case \"week\":\n case \"datetime-local\":\n return this.type;\n }\n return false;\n },\n datePickerType() {\n if (!this.isNativePicker) {\n switch (this.type) {\n case \"date\":\n case \"month\":\n case \"time\":\n return this.type;\n case \"datetime-local\":\n return \"datetime\";\n }\n }\n return false;\n },\n /**\n * determines if the action is focusable\n *\n * @return {boolean} is the action focusable ?\n */\n isFocusable() {\n return !this.disabled;\n }\n },\n methods: {\n // closing datepicker popup on mouseleave = unfocus\n onLeave() {\n if (this.$refs.datetimepicker && this.$refs.datetimepicker.$refs.datepicker) {\n this.$refs.datetimepicker.$refs.datepicker.closePopup();\n }\n },\n onSubmit(event) {\n event.preventDefault();\n event.stopPropagation();\n if (!this.disabled) {\n this.$emit(\"submit\", event);\n } else {\n return false;\n }\n },\n onUpdateModelValue(event) {\n this.$emit(\"update:modelValue\", event);\n }\n }\n};\nconst _hoisted_1 = { class: \"action-input__icon-wrapper\" };\nconst _hoisted_2 = [\"disabled\"];\nconst _hoisted_3 = { class: \"action-input__container\" };\nconst _hoisted_4 = [\"for\"];\nconst _hoisted_5 = { class: \"action-input__input-container\" };\nconst _hoisted_6 = {\n key: 4,\n class: \"action-input__container\"\n};\nconst _hoisted_7 = [\"for\"];\nconst _hoisted_8 = { class: \"action-input__input-container\" };\nfunction _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {\n const _component_NcDateTimePicker = resolveComponent(\"NcDateTimePicker\");\n const _component_NcDateTimePickerNative = resolveComponent(\"NcDateTimePickerNative\");\n const _component_NcSelect = resolveComponent(\"NcSelect\");\n const _component_NcPasswordField = resolveComponent(\"NcPasswordField\");\n const _component_NcColorPicker = resolveComponent(\"NcColorPicker\");\n const _component_NcTextField = resolveComponent(\"NcTextField\");\n return openBlock(), createElementBlock(\"li\", {\n class: normalizeClass([\"action\", [{ \"action--disabled\": $props.disabled }, _ctx.$props.class]])\n }, [\n createElementVNode(\"span\", {\n class: normalizeClass([\"action-input\", {\n \"action-input-picker--disabled\": $props.disabled,\n \"action-input--visible-label\": $props.labelOutside && $props.label\n }]),\n onMouseleave: _cache[3] || (_cache[3] = (...args) => $options.onLeave && $options.onLeave(...args))\n }, [\n createElementVNode(\"span\", _hoisted_1, [\n renderSlot(_ctx.$slots, \"icon\", {}, () => [\n createElementVNode(\"span\", {\n \"aria-hidden\": \"true\",\n class: normalizeClass([\"action-input__icon\", [$options.isIconUrl ? \"action-input__icon--url\" : $props.icon]]),\n style: normalizeStyle({ backgroundImage: $options.isIconUrl ? `url(${$props.icon})` : null })\n }, null, 6)\n ], true)\n ]),\n createElementVNode(\"form\", {\n ref: \"form\",\n class: \"action-input__form\",\n disabled: $props.disabled,\n onSubmit: _cache[2] || (_cache[2] = withModifiers((...args) => $options.onSubmit && $options.onSubmit(...args), [\"prevent\"]))\n }, [\n createElementVNode(\"div\", _hoisted_3, [\n $props.label && $props.labelOutside && !$props.isNativePicker ? (openBlock(), createElementBlock(\"label\", {\n key: 0,\n class: normalizeClass([\"action-input__text-label\", { \"action-input__text-label--hidden\": !$props.labelOutside }]),\n for: $props.inputId\n }, toDisplayString($props.label), 11, _hoisted_4)) : createCommentVNode(\"\", true),\n createElementVNode(\"div\", _hoisted_5, [\n $options.datePickerType ? (openBlock(), createBlock(_component_NcDateTimePicker, mergeProps({\n key: 0,\n ref: \"datetimepicker\",\n modelValue: $props.modelValue,\n style: { \"z-index\": \"99999999999\" },\n placeholder: _ctx.text,\n disabled: $props.disabled,\n type: $options.datePickerType,\n inputClass: [\"mx-input\", { focusable: $options.isFocusable }],\n class: \"action-input__datetimepicker\",\n appendToBody: \"\"\n }, _ctx.$attrs, { \"onUpdate:modelValue\": $options.onUpdateModelValue }), null, 16, [\"modelValue\", \"placeholder\", \"disabled\", \"type\", \"inputClass\", \"onUpdate:modelValue\"])) : $props.isNativePicker ? (openBlock(), createBlock(_component_NcDateTimePickerNative, mergeProps({\n key: 1,\n id: $props.idNativeDateTimePicker,\n modelValue: $props.modelValue,\n label: $props.label,\n type: $options.nativeDatePickerType,\n inputClass: { focusable: $options.isFocusable },\n class: \"action-input__datetimepicker\"\n }, _ctx.$attrs, { \"onUpdate:modelValue\": $options.onUpdateModelValue }), null, 16, [\"id\", \"modelValue\", \"label\", \"type\", \"inputClass\", \"onUpdate:modelValue\"])) : $options.isMultiselectType ? (openBlock(), createBlock(_component_NcSelect, mergeProps({\n key: 2,\n modelValue: $props.modelValue,\n placeholder: _ctx.text,\n disabled: $props.disabled,\n appendToBody: false,\n inputClass: { focusable: $options.isFocusable },\n class: \"action-input__multi\"\n }, _ctx.$attrs, { \"onUpdate:modelValue\": $options.onUpdateModelValue }), null, 16, [\"modelValue\", \"placeholder\", \"disabled\", \"inputClass\", \"onUpdate:modelValue\"])) : $props.type === \"password\" ? (openBlock(), createBlock(_component_NcPasswordField, mergeProps({\n key: 3,\n id: $props.inputId,\n modelValue: $props.modelValue,\n label: $props.label,\n labelOutside: !$props.label || $props.labelOutside,\n placeholder: _ctx.text,\n disabled: $props.disabled,\n inputClass: { focusable: $options.isFocusable },\n showTrailingButton: $props.showTrailingButton && !$props.disabled\n }, _ctx.$attrs, { \"onUpdate:modelValue\": $options.onUpdateModelValue }), null, 16, [\"id\", \"modelValue\", \"label\", \"labelOutside\", \"placeholder\", \"disabled\", \"inputClass\", \"showTrailingButton\", \"onUpdate:modelValue\"])) : $props.type === \"color\" ? (openBlock(), createElementBlock(\"div\", _hoisted_6, [\n $props.label && $props.type === \"color\" ? (openBlock(), createElementBlock(\"label\", {\n key: 0,\n class: normalizeClass([\"action-input__text-label\", { \"action-input__text-label--hidden\": !$props.labelOutside }]),\n for: $props.inputId\n }, toDisplayString($props.label), 11, _hoisted_7)) : createCommentVNode(\"\", true),\n createElementVNode(\"div\", _hoisted_8, [\n createVNode(_component_NcColorPicker, mergeProps({\n id: \"inputId\",\n modelValue: $props.modelValue,\n class: \"colorpicker__trigger\"\n }, _ctx.$attrs, {\n \"onUpdate:modelValue\": $options.onUpdateModelValue,\n onSubmit: _cache[0] || (_cache[0] = ($event) => _ctx.$refs.form.requestSubmit())\n }), {\n default: withCtx(() => [\n createElementVNode(\"button\", {\n class: normalizeClass([\"colorpicker__preview\", { focusable: $options.isFocusable }]),\n style: normalizeStyle({ \"background-color\": $props.modelValue })\n }, null, 6)\n ]),\n _: 1\n }, 16, [\"modelValue\", \"onUpdate:modelValue\"])\n ])\n ])) : (openBlock(), createBlock(_component_NcTextField, mergeProps({\n key: 5,\n id: $props.inputId,\n modelValue: $props.modelValue,\n label: $props.label,\n labelOutside: !$props.label || $props.labelOutside,\n placeholder: _ctx.text,\n disabled: $props.disabled,\n inputClass: { focusable: $options.isFocusable },\n type: $props.type,\n trailingButtonIcon: \"arrowRight\",\n trailingButtonLabel: $props.trailingButtonLabel,\n showTrailingButton: $props.showTrailingButton && !$props.disabled\n }, _ctx.$attrs, {\n onTrailingButtonClick: _cache[1] || (_cache[1] = ($event) => _ctx.$refs.form.requestSubmit()),\n \"onUpdate:modelValue\": $options.onUpdateModelValue\n }), null, 16, [\"id\", \"modelValue\", \"label\", \"labelOutside\", \"placeholder\", \"disabled\", \"inputClass\", \"type\", \"trailingButtonLabel\", \"showTrailingButton\", \"onUpdate:modelValue\"]))\n ])\n ])\n ], 40, _hoisted_2)\n ], 34)\n ], 2);\n}\nconst NcActionInput = /* @__PURE__ */ _export_sfc(_sfc_main, [[\"render\", _sfc_render], [\"__scopeId\", \"data-v-43230e98\"]]);\nexport {\n NcActionInput as N\n};\n//# sourceMappingURL=NcActionInput-Dr8Yrafu.mjs.map\n","'use strict';\n\nvar has = Object.prototype.hasOwnProperty\n , prefix = '~';\n\n/**\n * Constructor to create a storage for our `EE` objects.\n * An `Events` instance is a plain object whose properties are event names.\n *\n * @constructor\n * @private\n */\nfunction Events() {}\n\n//\n// We try to not inherit from `Object.prototype`. In some engines creating an\n// instance in this way is faster than calling `Object.create(null)` directly.\n// If `Object.create(null)` is not supported we prefix the event names with a\n// character to make sure that the built-in object properties are not\n// overridden or used as an attack vector.\n//\nif (Object.create) {\n Events.prototype = Object.create(null);\n\n //\n // This hack is needed because the `__proto__` property is still inherited in\n // some old browsers like Android 4, iPhone 5.1, Opera 11 and Safari 5.\n //\n if (!new Events().__proto__) prefix = false;\n}\n\n/**\n * Representation of a single event listener.\n *\n * @param {Function} fn The listener function.\n * @param {*} context The context to invoke the listener with.\n * @param {Boolean} [once=false] Specify if the listener is a one-time listener.\n * @constructor\n * @private\n */\nfunction EE(fn, context, once) {\n this.fn = fn;\n this.context = context;\n this.once = once || false;\n}\n\n/**\n * Add a listener for a given event.\n *\n * @param {EventEmitter} emitter Reference to the `EventEmitter` instance.\n * @param {(String|Symbol)} event The event name.\n * @param {Function} fn The listener function.\n * @param {*} context The context to invoke the listener with.\n * @param {Boolean} once Specify if the listener is a one-time listener.\n * @returns {EventEmitter}\n * @private\n */\nfunction addListener(emitter, event, fn, context, once) {\n if (typeof fn !== 'function') {\n throw new TypeError('The listener must be a function');\n }\n\n var listener = new EE(fn, context || emitter, once)\n , evt = prefix ? prefix + event : event;\n\n if (!emitter._events[evt]) emitter._events[evt] = listener, emitter._eventsCount++;\n else if (!emitter._events[evt].fn) emitter._events[evt].push(listener);\n else emitter._events[evt] = [emitter._events[evt], listener];\n\n return emitter;\n}\n\n/**\n * Clear event by name.\n *\n * @param {EventEmitter} emitter Reference to the `EventEmitter` instance.\n * @param {(String|Symbol)} evt The Event name.\n * @private\n */\nfunction clearEvent(emitter, evt) {\n if (--emitter._eventsCount === 0) emitter._events = new Events();\n else delete emitter._events[evt];\n}\n\n/**\n * Minimal `EventEmitter` interface that is molded against the Node.js\n * `EventEmitter` interface.\n *\n * @constructor\n * @public\n */\nfunction EventEmitter() {\n this._events = new Events();\n this._eventsCount = 0;\n}\n\n/**\n * Return an array listing the events for which the emitter has registered\n * listeners.\n *\n * @returns {Array}\n * @public\n */\nEventEmitter.prototype.eventNames = function eventNames() {\n var names = []\n , events\n , name;\n\n if (this._eventsCount === 0) return names;\n\n for (name in (events = this._events)) {\n if (has.call(events, name)) names.push(prefix ? name.slice(1) : name);\n }\n\n if (Object.getOwnPropertySymbols) {\n return names.concat(Object.getOwnPropertySymbols(events));\n }\n\n return names;\n};\n\n/**\n * Return the listeners registered for a given event.\n *\n * @param {(String|Symbol)} event The event name.\n * @returns {Array} The registered listeners.\n * @public\n */\nEventEmitter.prototype.listeners = function listeners(event) {\n var evt = prefix ? prefix + event : event\n , handlers = this._events[evt];\n\n if (!handlers) return [];\n if (handlers.fn) return [handlers.fn];\n\n for (var i = 0, l = handlers.length, ee = new Array(l); i < l; i++) {\n ee[i] = handlers[i].fn;\n }\n\n return ee;\n};\n\n/**\n * Return the number of listeners listening to a given event.\n *\n * @param {(String|Symbol)} event The event name.\n * @returns {Number} The number of listeners.\n * @public\n */\nEventEmitter.prototype.listenerCount = function listenerCount(event) {\n var evt = prefix ? prefix + event : event\n , listeners = this._events[evt];\n\n if (!listeners) return 0;\n if (listeners.fn) return 1;\n return listeners.length;\n};\n\n/**\n * Calls each of the listeners registered for a given event.\n *\n * @param {(String|Symbol)} event The event name.\n * @returns {Boolean} `true` if the event had listeners, else `false`.\n * @public\n */\nEventEmitter.prototype.emit = function emit(event, a1, a2, a3, a4, a5) {\n var evt = prefix ? prefix + event : event;\n\n if (!this._events[evt]) return false;\n\n var listeners = this._events[evt]\n , len = arguments.length\n , args\n , i;\n\n if (listeners.fn) {\n if (listeners.once) this.removeListener(event, listeners.fn, undefined, true);\n\n switch (len) {\n case 1: return listeners.fn.call(listeners.context), true;\n case 2: return listeners.fn.call(listeners.context, a1), true;\n case 3: return listeners.fn.call(listeners.context, a1, a2), true;\n case 4: return listeners.fn.call(listeners.context, a1, a2, a3), true;\n case 5: return listeners.fn.call(listeners.context, a1, a2, a3, a4), true;\n case 6: return listeners.fn.call(listeners.context, a1, a2, a3, a4, a5), true;\n }\n\n for (i = 1, args = new Array(len -1); i < len; i++) {\n args[i - 1] = arguments[i];\n }\n\n listeners.fn.apply(listeners.context, args);\n } else {\n var length = listeners.length\n , j;\n\n for (i = 0; i < length; i++) {\n if (listeners[i].once) this.removeListener(event, listeners[i].fn, undefined, true);\n\n switch (len) {\n case 1: listeners[i].fn.call(listeners[i].context); break;\n case 2: listeners[i].fn.call(listeners[i].context, a1); break;\n case 3: listeners[i].fn.call(listeners[i].context, a1, a2); break;\n case 4: listeners[i].fn.call(listeners[i].context, a1, a2, a3); break;\n default:\n if (!args) for (j = 1, args = new Array(len -1); j < len; j++) {\n args[j - 1] = arguments[j];\n }\n\n listeners[i].fn.apply(listeners[i].context, args);\n }\n }\n }\n\n return true;\n};\n\n/**\n * Add a listener for a given event.\n *\n * @param {(String|Symbol)} event The event name.\n * @param {Function} fn The listener function.\n * @param {*} [context=this] The context to invoke the listener with.\n * @returns {EventEmitter} `this`.\n * @public\n */\nEventEmitter.prototype.on = function on(event, fn, context) {\n return addListener(this, event, fn, context, false);\n};\n\n/**\n * Add a one-time listener for a given event.\n *\n * @param {(String|Symbol)} event The event name.\n * @param {Function} fn The listener function.\n * @param {*} [context=this] The context to invoke the listener with.\n * @returns {EventEmitter} `this`.\n * @public\n */\nEventEmitter.prototype.once = function once(event, fn, context) {\n return addListener(this, event, fn, context, true);\n};\n\n/**\n * Remove the listeners of a given event.\n *\n * @param {(String|Symbol)} event The event name.\n * @param {Function} fn Only remove the listeners that match this function.\n * @param {*} context Only remove the listeners that have this context.\n * @param {Boolean} once Only remove one-time listeners.\n * @returns {EventEmitter} `this`.\n * @public\n */\nEventEmitter.prototype.removeListener = function removeListener(event, fn, context, once) {\n var evt = prefix ? prefix + event : event;\n\n if (!this._events[evt]) return this;\n if (!fn) {\n clearEvent(this, evt);\n return this;\n }\n\n var listeners = this._events[evt];\n\n if (listeners.fn) {\n if (\n listeners.fn === fn &&\n (!once || listeners.once) &&\n (!context || listeners.context === context)\n ) {\n clearEvent(this, evt);\n }\n } else {\n for (var i = 0, events = [], length = listeners.length; i < length; i++) {\n if (\n listeners[i].fn !== fn ||\n (once && !listeners[i].once) ||\n (context && listeners[i].context !== context)\n ) {\n events.push(listeners[i]);\n }\n }\n\n //\n // Reset the array, or remove it completely if we have no more listeners.\n //\n if (events.length) this._events[evt] = events.length === 1 ? events[0] : events;\n else clearEvent(this, evt);\n }\n\n return this;\n};\n\n/**\n * Remove all listeners, or those of the specified event.\n *\n * @param {(String|Symbol)} [event] The event name.\n * @returns {EventEmitter} `this`.\n * @public\n */\nEventEmitter.prototype.removeAllListeners = function removeAllListeners(event) {\n var evt;\n\n if (event) {\n evt = prefix ? prefix + event : event;\n if (this._events[evt]) clearEvent(this, evt);\n } else {\n this._events = new Events();\n this._eventsCount = 0;\n }\n\n return this;\n};\n\n//\n// Alias methods names because people roll like that.\n//\nEventEmitter.prototype.off = EventEmitter.prototype.removeListener;\nEventEmitter.prototype.addListener = EventEmitter.prototype.on;\n\n//\n// Expose the prefix.\n//\nEventEmitter.prefixed = prefix;\n\n//\n// Allow `EventEmitter` to be imported as module namespace.\n//\nEventEmitter.EventEmitter = EventEmitter;\n\n//\n// Expose the module.\n//\nif ('undefined' !== typeof module) {\n module.exports = EventEmitter;\n}\n","export class TimeoutError extends Error {\n\tname = 'TimeoutError';\n\n\tconstructor(message, options) {\n\t\tsuper(message, options);\n\t\tError.captureStackTrace?.(this, TimeoutError);\n\t}\n}\n\nconst getAbortedReason = signal => signal.reason ?? new DOMException('This operation was aborted.', 'AbortError');\n\nexport default function pTimeout(promise, options) {\n\tconst {\n\t\tmilliseconds,\n\t\tfallback,\n\t\tmessage,\n\t\tcustomTimers = {setTimeout, clearTimeout},\n\t\tsignal,\n\t} = options;\n\n\tlet timer;\n\tlet abortHandler;\n\n\tconst wrappedPromise = new Promise((resolve, reject) => {\n\t\tif (typeof milliseconds !== 'number' || Math.sign(milliseconds) !== 1) {\n\t\t\tthrow new TypeError(`Expected \\`milliseconds\\` to be a positive number, got \\`${milliseconds}\\``);\n\t\t}\n\n\t\tif (signal?.aborted) {\n\t\t\treject(getAbortedReason(signal));\n\t\t\treturn;\n\t\t}\n\n\t\tif (signal) {\n\t\t\tabortHandler = () => {\n\t\t\t\treject(getAbortedReason(signal));\n\t\t\t};\n\n\t\t\tsignal.addEventListener('abort', abortHandler, {once: true});\n\t\t}\n\n\t\t// Use .then() instead of async IIFE to preserve stack traces\n\t\t// eslint-disable-next-line promise/prefer-await-to-then, promise/prefer-catch\n\t\tpromise.then(resolve, reject);\n\n\t\tif (milliseconds === Number.POSITIVE_INFINITY) {\n\t\t\treturn;\n\t\t}\n\n\t\t// We create the error outside of `setTimeout` to preserve the stack trace.\n\t\tconst timeoutError = new TimeoutError();\n\n\t\t// `.call(undefined, ...)` is needed for custom timers to avoid context issues\n\t\ttimer = customTimers.setTimeout.call(undefined, () => {\n\t\t\tif (fallback) {\n\t\t\t\ttry {\n\t\t\t\t\tresolve(fallback());\n\t\t\t\t} catch (error) {\n\t\t\t\t\treject(error);\n\t\t\t\t}\n\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (typeof promise.cancel === 'function') {\n\t\t\t\tpromise.cancel();\n\t\t\t}\n\n\t\t\tif (message === false) {\n\t\t\t\tresolve();\n\t\t\t} else if (message instanceof Error) {\n\t\t\t\treject(message);\n\t\t\t} else {\n\t\t\t\ttimeoutError.message = message ?? `Promise timed out after ${milliseconds} milliseconds`;\n\t\t\t\treject(timeoutError);\n\t\t\t}\n\t\t}, milliseconds);\n\t});\n\n\t// eslint-disable-next-line promise/prefer-await-to-then\n\tconst cancelablePromise = wrappedPromise.finally(() => {\n\t\tcancelablePromise.clear();\n\t\tif (abortHandler && signal) {\n\t\t\tsignal.removeEventListener('abort', abortHandler);\n\t\t}\n\t});\n\n\tcancelablePromise.clear = () => {\n\t\t// `.call(undefined, ...)` is needed for custom timers to avoid context issues\n\t\tcustomTimers.clearTimeout.call(undefined, timer);\n\t\ttimer = undefined;\n\t};\n\n\treturn cancelablePromise;\n}\n","// Port of lower_bound from https://en.cppreference.com/w/cpp/algorithm/lower_bound\n// Used to compute insertion index to keep queue sorted after insertion\nexport default function lowerBound(array, value, comparator) {\n let first = 0;\n let count = array.length;\n while (count > 0) {\n const step = Math.trunc(count / 2);\n let it = first + step;\n if (comparator(array[it], value) <= 0) {\n first = ++it;\n count -= step + 1;\n }\n else {\n count = step;\n }\n }\n return first;\n}\n","import lowerBound from './lower-bound.js';\nconst compactionThreshold = 100;\nexport default class PriorityQueue {\n #queue = [];\n // The queue is stored as a sorted array, but dequeued items are left before `#head` until compaction. Only items from `#head` onward are live, which keeps repeated dequeues amortized O(1).\n #head = 0;\n enqueue(run, options) {\n const { priority = 0, id, } = options ?? {};\n const { size } = this;\n const element = {\n priority,\n id,\n run,\n };\n if (size === 0) {\n // When the queue is logically empty, discard any consumed prefix before accepting new work.\n this.#queue.length = 0;\n this.#head = 0;\n this.#queue.push(element);\n return;\n }\n if (this.#queue.at(-1).priority >= priority) {\n // Same-priority and lower-priority items belong after the current tail. Appending preserves FIFO order for equal priorities.\n this.#queue.push(element);\n return;\n }\n // Binary insertion must run on the live sorted range only.\n this.#compact();\n const index = lowerBound(this.#queue, element, (a, b) => b.priority - a.priority);\n this.#queue.splice(index, 0, element);\n }\n setPriority(id, priority) {\n // A dequeued item with the same id is no longer part of the queue.\n const index = this.#queue.findIndex((element, index) => index >= this.#head && element.id === id);\n if (index === -1) {\n throw new ReferenceError(`No promise function with the id \"${id}\" exists in the queue.`);\n }\n const [item] = this.#queue.splice(index, 1);\n this.enqueue(item.run, { priority, id });\n }\n remove(idOrRun) {\n const index = this.#queue.findIndex((element, index) => {\n // The consumed prefix may still contain references that should not be removable.\n if (index < this.#head) {\n return false;\n }\n if (typeof idOrRun === 'string') {\n return element.id === idOrRun;\n }\n return element.run === idOrRun;\n });\n if (index !== -1) {\n this.#queue.splice(index, 1);\n }\n }\n dequeue() {\n if (this.#head === this.#queue.length) {\n return undefined;\n }\n const item = this.#queue[this.#head];\n this.#head++;\n if (this.#head === this.#queue.length) {\n // Fully drained queues are reset immediately so the next enqueue starts from a clean array.\n this.#queue.length = 0;\n this.#head = 0;\n }\n else if (this.#head > compactionThreshold && this.#head > this.#queue.length / 2) {\n // Keep repeated dequeues cheap, but stop the consumed prefix from growing without bound.\n this.#compact();\n }\n return item?.run;\n }\n filter(options) {\n const result = [];\n for (let index = this.#head; index < this.#queue.length; index++) {\n const element = this.#queue[index];\n if (element.priority === options.priority) {\n result.push(element.run);\n }\n }\n return result;\n }\n get size() {\n return this.#queue.length - this.#head;\n }\n #compact() {\n // Compaction restores the invariant that the whole array is the live sorted range.\n if (this.#head === 0) {\n return;\n }\n this.#queue.splice(0, this.#head);\n this.#head = 0;\n }\n}\n","import { EventEmitter } from 'eventemitter3';\nimport pTimeout from 'p-timeout';\nimport PriorityQueue from './priority-queue.js';\n/**\nPromise queue with concurrency control.\n*/\nexport default class PQueue extends EventEmitter {\n #carryoverIntervalCount;\n #isIntervalIgnored;\n #intervalCount = 0;\n #intervalCap;\n #rateLimitedInInterval = false;\n #rateLimitFlushScheduled = false;\n #interval;\n #intervalEnd = 0;\n #lastExecutionTime = 0;\n #intervalId;\n #timeoutId;\n #strict;\n // Circular buffer implementation for better performance\n #strictTicks = [];\n #strictTicksStartIndex = 0;\n #queue;\n #queueClass;\n #pending = 0;\n // The `!` is needed because of https://github.com/microsoft/TypeScript/issues/32194\n #concurrency;\n #isPaused;\n // Use to assign a unique identifier to a promise function, if not explicitly specified\n #idAssigner = 1n;\n // Track currently running tasks for debugging\n #runningTasks = new Map();\n #queueAbortListenerCleanupFunctions = new Set();\n /**\n Get or set the default timeout for all tasks. Can be changed at runtime.\n\n Operations will throw a `TimeoutError` if they don't complete within the specified time.\n\n The timeout begins when the operation is dequeued and starts execution, not while it's waiting in the queue.\n\n @example\n ```\n const queue = new PQueue({timeout: 5000});\n\n // Change timeout for all future tasks\n queue.timeout = 10000;\n ```\n */\n timeout;\n constructor(options) {\n super();\n // eslint-disable-next-line @typescript-eslint/consistent-type-assertions\n options = {\n carryoverIntervalCount: false,\n intervalCap: Number.POSITIVE_INFINITY,\n interval: 0,\n concurrency: Number.POSITIVE_INFINITY,\n autoStart: true,\n queueClass: PriorityQueue,\n strict: false,\n ...options,\n };\n if (!(typeof options.intervalCap === 'number' && options.intervalCap >= 1)) {\n throw new TypeError(`Expected \\`intervalCap\\` to be a number from 1 and up, got \\`${options.intervalCap?.toString() ?? ''}\\` (${typeof options.intervalCap})`);\n }\n if (options.interval === undefined || !(Number.isFinite(options.interval) && options.interval >= 0)) {\n throw new TypeError(`Expected \\`interval\\` to be a finite number >= 0, got \\`${options.interval?.toString() ?? ''}\\` (${typeof options.interval})`);\n }\n if (options.strict && options.interval === 0) {\n throw new TypeError('The `strict` option requires a non-zero `interval`');\n }\n if (options.strict && options.intervalCap === Number.POSITIVE_INFINITY) {\n throw new TypeError('The `strict` option requires a finite `intervalCap`');\n }\n // TODO: Remove this fallback in the next major version\n // eslint-disable-next-line @typescript-eslint/no-deprecated\n this.#carryoverIntervalCount = options.carryoverIntervalCount ?? options.carryoverConcurrencyCount ?? false;\n this.#isIntervalIgnored = options.intervalCap === Number.POSITIVE_INFINITY || options.interval === 0;\n this.#intervalCap = options.intervalCap;\n this.#interval = options.interval;\n this.#strict = options.strict;\n this.#queue = new options.queueClass();\n this.#queueClass = options.queueClass;\n this.concurrency = options.concurrency;\n if (options.timeout !== undefined && !(Number.isFinite(options.timeout) && options.timeout > 0)) {\n throw new TypeError(`Expected \\`timeout\\` to be a positive finite number, got \\`${options.timeout}\\` (${typeof options.timeout})`);\n }\n this.timeout = options.timeout;\n this.#isPaused = options.autoStart === false;\n this.#setupRateLimitTracking();\n }\n #cleanupStrictTicks(now) {\n // Remove ticks outside the current interval window using circular buffer approach\n while (this.#strictTicksStartIndex < this.#strictTicks.length) {\n const oldestTick = this.#strictTicks[this.#strictTicksStartIndex];\n if (oldestTick !== undefined && now - oldestTick >= this.#interval) {\n this.#strictTicksStartIndex++;\n }\n else {\n break;\n }\n }\n // Compact the array when it becomes inefficient or fully consumed\n // Compact when: (start index is large AND more than half wasted) OR all ticks expired\n const shouldCompact = (this.#strictTicksStartIndex > 100 && this.#strictTicksStartIndex > this.#strictTicks.length / 2)\n || this.#strictTicksStartIndex === this.#strictTicks.length;\n if (shouldCompact) {\n this.#strictTicks = this.#strictTicks.slice(this.#strictTicksStartIndex);\n this.#strictTicksStartIndex = 0;\n }\n }\n // Helper methods for interval consumption\n #consumeIntervalSlot(now) {\n if (this.#strict) {\n this.#strictTicks.push(now);\n }\n else {\n this.#intervalCount++;\n }\n }\n #rollbackIntervalSlot() {\n if (this.#strict) {\n // Pop from the end of the actual data (not from start index)\n if (this.#strictTicks.length > this.#strictTicksStartIndex) {\n this.#strictTicks.pop();\n }\n }\n else if (this.#intervalCount > 0) {\n this.#intervalCount--;\n }\n }\n #getActiveTicksCount() {\n return this.#strictTicks.length - this.#strictTicksStartIndex;\n }\n get #doesIntervalAllowAnother() {\n if (this.#isIntervalIgnored) {\n return true;\n }\n if (this.#strict) {\n // Cleanup already done by #isIntervalPausedAt before this is called\n return this.#getActiveTicksCount() < this.#intervalCap;\n }\n return this.#intervalCount < this.#intervalCap;\n }\n get #doesConcurrentAllowAnother() {\n return this.#pending < this.#concurrency;\n }\n #next() {\n this.#pending--;\n if (this.#pending === 0) {\n this.emit('pendingZero');\n }\n this.#tryToStartAnother();\n this.emit('next');\n }\n #onResumeInterval() {\n // Clear timeout ID before processing to prevent race condition\n // Must clear before #onInterval to allow new timeouts to be scheduled\n this.#timeoutId = undefined;\n this.#onInterval();\n this.#initializeIntervalIfNeeded();\n }\n #isIntervalPausedAt(now) {\n // Strict mode: check if we need to wait for oldest tick to age out\n if (this.#strict) {\n this.#cleanupStrictTicks(now);\n // If at capacity, need to wait for oldest tick to age out\n const activeTicksCount = this.#getActiveTicksCount();\n if (activeTicksCount >= this.#intervalCap) {\n const oldestTick = this.#strictTicks[this.#strictTicksStartIndex];\n // After cleanup, remaining ticks are within interval, so delay is always > 0\n const delay = this.#interval - (now - oldestTick);\n this.#createIntervalTimeout(delay);\n return true;\n }\n return false;\n }\n // Fixed window mode (original logic)\n if (this.#intervalId === undefined) {\n const delay = this.#intervalEnd - now;\n if (delay < 0) {\n // If the interval has expired while idle, check if we should enforce the interval\n // from the last task execution. This ensures proper spacing between tasks even\n // when the queue becomes empty and then new tasks are added.\n if (this.#lastExecutionTime > 0) {\n const timeSinceLastExecution = now - this.#lastExecutionTime;\n if (timeSinceLastExecution < this.#interval) {\n // Not enough time has passed since the last task execution\n this.#createIntervalTimeout(this.#interval - timeSinceLastExecution);\n return true;\n }\n }\n // Enough time has passed or no previous execution, allow execution\n this.#intervalCount = (this.#carryoverIntervalCount) ? this.#pending : 0;\n }\n else {\n // Act as the interval is pending\n this.#createIntervalTimeout(delay);\n return true;\n }\n }\n return false;\n }\n #createIntervalTimeout(delay) {\n if (this.#timeoutId !== undefined) {\n return;\n }\n this.#timeoutId = setTimeout(() => {\n this.#onResumeInterval();\n }, delay);\n }\n #clearIntervalTimer() {\n if (this.#intervalId) {\n clearInterval(this.#intervalId);\n this.#intervalId = undefined;\n }\n }\n #clearTimeoutTimer() {\n if (this.#timeoutId) {\n clearTimeout(this.#timeoutId);\n this.#timeoutId = undefined;\n }\n }\n #tryToStartAnother() {\n if (this.#queue.size === 0) {\n // We can clear the interval (\"pause\")\n // Because we can redo it later (\"resume\")\n this.#clearIntervalTimer();\n this.emit('empty');\n if (this.#pending === 0) {\n // Clear timeout as well when completely idle\n this.#clearTimeoutTimer();\n // Compact strict ticks when idle to free memory\n if (this.#strict && this.#strictTicksStartIndex > 0) {\n const now = Date.now();\n this.#cleanupStrictTicks(now);\n }\n this.emit('idle');\n }\n return false;\n }\n let taskStarted = false;\n if (!this.#isPaused) {\n const now = Date.now();\n const canInitializeInterval = !this.#isIntervalPausedAt(now);\n if (this.#doesIntervalAllowAnother && this.#doesConcurrentAllowAnother) {\n const job = this.#queue.dequeue();\n if (!this.#isIntervalIgnored) {\n this.#consumeIntervalSlot(now);\n this.#scheduleRateLimitUpdate();\n }\n this.emit('active');\n job();\n if (canInitializeInterval) {\n this.#initializeIntervalIfNeeded();\n }\n taskStarted = true;\n }\n }\n return taskStarted;\n }\n #initializeIntervalIfNeeded() {\n if (this.#isIntervalIgnored || this.#intervalId !== undefined) {\n return;\n }\n // Strict mode uses timeouts instead of interval timers\n if (this.#strict) {\n return;\n }\n this.#intervalId = setInterval(() => {\n this.#onInterval();\n }, this.#interval);\n this.#intervalEnd = Date.now() + this.#interval;\n }\n #onInterval() {\n // Non-strict mode uses interval timers and intervalCount\n if (!this.#strict) {\n if (this.#intervalCount === 0 && this.#pending === 0 && this.#intervalId) {\n this.#clearIntervalTimer();\n }\n this.#intervalCount = this.#carryoverIntervalCount ? this.#pending : 0;\n }\n this.#processQueue();\n this.#scheduleRateLimitUpdate();\n }\n /**\n Executes all queued functions until it reaches the limit.\n */\n #processQueue() {\n // eslint-disable-next-line no-empty\n while (this.#tryToStartAnother()) { }\n }\n get concurrency() {\n return this.#concurrency;\n }\n set concurrency(newConcurrency) {\n if (!(typeof newConcurrency === 'number' && newConcurrency >= 1)) {\n throw new TypeError(`Expected \\`concurrency\\` to be a number from 1 and up, got \\`${newConcurrency}\\` (${typeof newConcurrency})`);\n }\n this.#concurrency = newConcurrency;\n this.#processQueue();\n }\n /**\n Updates the priority of a promise function by its id, affecting its execution order. Requires a defined concurrency limit to take effect.\n\n For example, this can be used to prioritize a promise function to run earlier.\n\n ```js\n import PQueue from 'p-queue';\n\n const queue = new PQueue({concurrency: 1});\n\n queue.add(async () => '🦄', {priority: 1});\n queue.add(async () => '🦀', {priority: 0, id: '🦀'});\n queue.add(async () => '🦄', {priority: 1});\n queue.add(async () => '🦄', {priority: 1});\n\n queue.setPriority('🦀', 2);\n ```\n\n In this case, the promise function with `id: '🦀'` runs second.\n\n You can also deprioritize a promise function to delay its execution:\n\n ```js\n import PQueue from 'p-queue';\n\n const queue = new PQueue({concurrency: 1});\n\n queue.add(async () => '🦄', {priority: 1});\n queue.add(async () => '🦀', {priority: 1, id: '🦀'});\n queue.add(async () => '🦄');\n queue.add(async () => '🦄', {priority: 0});\n\n queue.setPriority('🦀', -1);\n ```\n Here, the promise function with `id: '🦀'` executes last.\n */\n setPriority(id, priority) {\n if (typeof priority !== 'number' || !Number.isFinite(priority)) {\n throw new TypeError(`Expected \\`priority\\` to be a finite number, got \\`${priority}\\` (${typeof priority})`);\n }\n this.#queue.setPriority(id, priority);\n }\n async add(function_, options = {}) {\n // Create a copy to avoid mutating the original options object\n options = {\n timeout: this.timeout,\n ...options,\n // Assign unique ID if not provided\n id: options.id ?? (this.#idAssigner++).toString(),\n };\n if (options.timeout !== undefined && !(Number.isFinite(options.timeout) && options.timeout > 0)) {\n throw new TypeError(`Expected \\`timeout\\` to be a positive finite number, got \\`${options.timeout}\\` (${typeof options.timeout})`);\n }\n return new Promise((resolve, reject) => {\n // Create a unique symbol for tracking this task\n const taskSymbol = Symbol(`task-${options.id}`);\n let cleanupQueueAbortHandler = () => undefined;\n const run = async () => {\n // Task is now running — remove the queued-state abort listener\n cleanupQueueAbortHandler();\n this.#pending++;\n // Track this running task\n this.#runningTasks.set(taskSymbol, {\n id: options.id,\n priority: options.priority ?? 0, // Match priority-queue default\n startTime: Date.now(),\n timeout: options.timeout,\n });\n let eventListener;\n try {\n // Check abort signal - if aborted, need to decrement the counter\n // that was incremented in tryToStartAnother\n try {\n options.signal?.throwIfAborted();\n }\n catch (error) {\n this.#rollbackIntervalConsumption();\n // Clean up tracking before throwing\n this.#runningTasks.delete(taskSymbol);\n throw error;\n }\n this.#lastExecutionTime = Date.now();\n let operation = function_({ signal: options.signal });\n if (options.timeout !== undefined) {\n operation = pTimeout(Promise.resolve(operation), {\n milliseconds: options.timeout,\n message: `Task timed out after ${options.timeout}ms (queue has ${this.#pending} running, ${this.#queue.size} waiting)`,\n });\n }\n if (options.signal) {\n const { signal } = options;\n operation = Promise.race([operation, new Promise((_resolve, reject) => {\n eventListener = () => {\n reject(signal.reason);\n };\n signal.addEventListener('abort', eventListener, { once: true });\n })]);\n }\n const result = await operation;\n resolve(result);\n this.emit('completed', result);\n }\n catch (error) {\n reject(error);\n this.emit('error', error);\n }\n finally {\n // Clean up abort event listener\n if (eventListener) {\n options.signal?.removeEventListener('abort', eventListener);\n }\n // Remove from running tasks\n this.#runningTasks.delete(taskSymbol);\n // Use queueMicrotask to prevent deep recursion while maintaining timing\n queueMicrotask(() => {\n this.#next();\n });\n }\n };\n this.#queue.enqueue(run, options);\n const removeQueuedTask = () => {\n if (this.#queue instanceof PriorityQueue) {\n this.#queue.remove(run);\n return;\n }\n this.#queue.remove?.(options.id); // Intentionally best-effort: queued abort removal is only supported for queue classes that implement `.remove()`.\n };\n // Handle abort while task is waiting in the queue\n if (options.signal) {\n const { signal } = options;\n const queueAbortHandler = () => {\n cleanupQueueAbortHandler();\n removeQueuedTask();\n reject(signal.reason);\n this.#tryToStartAnother();\n this.emit('next');\n };\n cleanupQueueAbortHandler = () => {\n signal.removeEventListener('abort', queueAbortHandler);\n this.#queueAbortListenerCleanupFunctions.delete(cleanupQueueAbortHandler);\n };\n if (signal.aborted) {\n queueAbortHandler();\n return;\n }\n signal.addEventListener('abort', queueAbortHandler, { once: true });\n this.#queueAbortListenerCleanupFunctions.add(cleanupQueueAbortHandler);\n }\n this.emit('add');\n this.#tryToStartAnother();\n });\n }\n async addAll(functions, options) {\n return Promise.all(functions.map(async (function_) => this.add(function_, options)));\n }\n /**\n Start (or resume) executing enqueued tasks within concurrency limit. No need to call this if queue is not paused (via `options.autoStart = false` or by `.pause()` method.)\n */\n start() {\n if (!this.#isPaused) {\n return this;\n }\n this.#isPaused = false;\n this.#processQueue();\n return this;\n }\n /**\n Put queue execution on hold.\n */\n pause() {\n this.#isPaused = true;\n }\n /**\n Clear the queue.\n */\n clear() {\n for (const cleanupQueueAbortHandler of this.#queueAbortListenerCleanupFunctions) {\n cleanupQueueAbortHandler();\n }\n this.#queue = new this.#queueClass();\n // Clear interval timer since queue is now empty (consistent with #tryToStartAnother)\n this.#clearIntervalTimer();\n // Note: We preserve strict mode rate-limiting state (ticks and timeout)\n // because clear() only clears queued tasks, not rate limit history.\n // This ensures that rate limits are still enforced after clearing the queue.\n // Note: We don't clear #runningTasks as those tasks are still running\n // They will be removed when they complete in the finally block\n // Force synchronous update since clear() should have immediate effect\n this.#updateRateLimitState();\n // Emit events so waiters (onEmpty, onIdle, onSizeLessThan) can resolve\n this.emit('empty');\n if (this.#pending === 0) {\n this.#clearTimeoutTimer();\n this.emit('idle');\n }\n this.emit('next');\n }\n /**\n Can be called multiple times. Useful if you for example add additional items at a later time.\n\n @returns A promise that settles when the queue becomes empty.\n */\n async onEmpty() {\n // Instantly resolve if the queue is empty\n if (this.#queue.size === 0) {\n return;\n }\n await this.#onEvent('empty');\n }\n /**\n @returns A promise that settles when the queue size is less than the given limit: `queue.size < limit`.\n\n If you want to avoid having the queue grow beyond a certain size you can `await queue.onSizeLessThan()` before adding a new item.\n\n Note that this only limits the number of items waiting to start. There could still be up to `concurrency` jobs already running that this call does not include in its calculation.\n */\n async onSizeLessThan(limit) {\n // Instantly resolve if the size is already below the limit.\n if (this.#queue.size < limit) {\n return;\n }\n // Listen on both `'next'` (task completion, queued abort, `clear()`) and `'active'` (every dequeue),\n // so waiters wake even when the queue drains without a completion (`start()`, a runtime `concurrency`\n // increase, or an interval tick).\n await this.#onEvent(['next', 'active'], () => this.#queue.size < limit);\n }\n /**\n The difference with `.onEmpty` is that `.onIdle` guarantees that all work from the queue has finished. `.onEmpty` merely signals that the queue is empty, but it could mean that some promises haven't completed yet.\n\n @returns A promise that settles when the queue becomes empty, and all promises have completed; `queue.size === 0 && queue.pending === 0`.\n */\n async onIdle() {\n // Instantly resolve if none pending and if nothing else is queued\n if (this.#pending === 0 && this.#queue.size === 0) {\n return;\n }\n await this.#onEvent('idle');\n }\n /**\n The difference with `.onIdle` is that `.onPendingZero` only waits for currently running tasks to finish, ignoring queued tasks.\n\n @returns A promise that settles when all currently running tasks have completed; `queue.pending === 0`.\n */\n async onPendingZero() {\n if (this.#pending === 0) {\n return;\n }\n await this.#onEvent('pendingZero');\n }\n /**\n @returns A promise that settles when the queue becomes rate-limited due to intervalCap.\n */\n async onRateLimit() {\n if (this.isRateLimited) {\n return;\n }\n await this.#onEvent('rateLimit');\n }\n /**\n @returns A promise that settles when the queue is no longer rate-limited.\n */\n async onRateLimitCleared() {\n if (!this.isRateLimited) {\n return;\n }\n await this.#onEvent('rateLimitCleared');\n }\n /**\n @returns A promise that rejects when any task in the queue errors.\n\n Use with `Promise.race([queue.onError(), queue.onIdle()])` to fail fast on the first error while still resolving normally when the queue goes idle.\n\n Important: The promise returned by `add()` still rejects. You must handle each `add()` promise (for example, `.catch(() => {})`) to avoid unhandled rejections.\n\n @example\n ```\n import PQueue from 'p-queue';\n\n const queue = new PQueue({concurrency: 2});\n\n queue.add(() => fetchData(1)).catch(() => {});\n queue.add(() => fetchData(2)).catch(() => {});\n queue.add(() => fetchData(3)).catch(() => {});\n\n // Stop processing on first error\n try {\n await Promise.race([\n queue.onError(),\n queue.onIdle()\n ]);\n } catch (error) {\n queue.pause(); // Stop processing remaining tasks\n console.error('Queue failed:', error);\n }\n ```\n */\n // eslint-disable-next-line @typescript-eslint/promise-function-async\n onError() {\n return new Promise((_resolve, reject) => {\n const handleError = (error) => {\n this.off('error', handleError);\n reject(error);\n };\n this.on('error', handleError);\n });\n }\n async #onEvent(events, filter) {\n const eventList = Array.isArray(events) ? events : [events];\n return new Promise(resolve => {\n const listener = () => {\n if (filter && !filter()) {\n return;\n }\n for (const event of eventList) {\n this.off(event, listener);\n }\n resolve();\n };\n for (const event of eventList) {\n this.on(event, listener);\n }\n });\n }\n /**\n Size of the queue, the number of queued items waiting to run.\n */\n get size() {\n return this.#queue.size;\n }\n /**\n Size of the queue, filtered by the given options.\n\n For example, this can be used to find the number of items remaining in the queue with a specific priority level.\n */\n sizeBy(options) {\n // eslint-disable-next-line unicorn/no-array-callback-reference\n return this.#queue.filter(options).length;\n }\n /**\n Number of running items (no longer in the queue).\n */\n get pending() {\n return this.#pending;\n }\n /**\n Whether the queue is currently paused.\n */\n get isPaused() {\n return this.#isPaused;\n }\n #setupRateLimitTracking() {\n // Only schedule updates when rate limiting is enabled\n if (this.#isIntervalIgnored) {\n return;\n }\n // Wire up to lifecycle events that affect rate limit state\n // Only 'add' and 'next' can actually change rate limit state\n this.on('add', () => {\n if (this.#queue.size > 0) {\n this.#scheduleRateLimitUpdate();\n }\n });\n this.on('next', () => {\n this.#scheduleRateLimitUpdate();\n });\n }\n #scheduleRateLimitUpdate() {\n // Skip if rate limiting is not enabled or already scheduled\n if (this.#isIntervalIgnored || this.#rateLimitFlushScheduled) {\n return;\n }\n this.#rateLimitFlushScheduled = true;\n queueMicrotask(() => {\n this.#rateLimitFlushScheduled = false;\n this.#updateRateLimitState();\n });\n }\n #rollbackIntervalConsumption() {\n if (this.#isIntervalIgnored) {\n return;\n }\n this.#rollbackIntervalSlot();\n this.#scheduleRateLimitUpdate();\n }\n #updateRateLimitState() {\n const previous = this.#rateLimitedInInterval;\n // Early exit if rate limiting is disabled or queue is empty\n if (this.#isIntervalIgnored || this.#queue.size === 0) {\n if (previous) {\n this.#rateLimitedInInterval = false;\n this.emit('rateLimitCleared');\n }\n return;\n }\n // Get the current count based on mode\n let count;\n if (this.#strict) {\n const now = Date.now();\n this.#cleanupStrictTicks(now);\n count = this.#getActiveTicksCount();\n }\n else {\n count = this.#intervalCount;\n }\n const shouldBeRateLimited = count >= this.#intervalCap;\n if (shouldBeRateLimited !== previous) {\n this.#rateLimitedInInterval = shouldBeRateLimited;\n this.emit(shouldBeRateLimited ? 'rateLimit' : 'rateLimitCleared');\n }\n }\n /**\n Whether the queue is currently rate-limited due to intervalCap.\n */\n get isRateLimited() {\n return this.#rateLimitedInInterval;\n }\n /**\n Whether the queue is saturated. Returns `true` when:\n - All concurrency slots are occupied and tasks are waiting, OR\n - The queue is rate-limited and tasks are waiting\n\n Useful for detecting backpressure and potential hanging tasks.\n\n ```js\n import PQueue from 'p-queue';\n\n const queue = new PQueue({concurrency: 2});\n\n // Backpressure handling\n if (queue.isSaturated) {\n console.log('Queue is saturated, waiting for capacity...');\n await queue.onSizeLessThan(queue.concurrency);\n }\n\n // Monitoring for stuck tasks\n setInterval(() => {\n if (queue.isSaturated) {\n console.warn(`Queue saturated: ${queue.pending} running, ${queue.size} waiting`);\n }\n }, 60000);\n ```\n */\n get isSaturated() {\n return (this.#pending === this.#concurrency && this.#queue.size > 0)\n || (this.isRateLimited && this.#queue.size > 0);\n }\n /**\n The tasks currently being executed. Each task includes its `id`, `priority`, `startTime`, `timeout` (if set), and `timeoutRemaining` (milliseconds until the task times out, or `undefined` if no timeout is set).\n\n Returns an array of task info objects.\n\n ```js\n import PQueue from 'p-queue';\n\n const queue = new PQueue({concurrency: 2, timeout: 10000});\n\n // Add tasks with IDs for better debugging\n queue.add(() => fetchUser(123), {id: 'user-123'});\n queue.add(() => fetchPosts(456), {id: 'posts-456', priority: 1});\n\n // Check what's running\n console.log(queue.runningTasks);\n // => [{\n // id: 'user-123',\n // priority: 0,\n // startTime: 1759253001716,\n // timeout: 10000,\n // timeoutRemaining: 9700\n // }, {\n // id: 'posts-456',\n // priority: 1,\n // startTime: 1759253001916,\n // timeout: 10000,\n // timeoutRemaining: 9900\n // }]\n ```\n */\n get runningTasks() {\n // Return fresh array with fresh objects to prevent mutations\n return [...this.#runningTasks.values()].map(task => ({\n ...task,\n timeoutRemaining: task.timeout ? Math.max(0, task.startTime + task.timeout - Date.now()) : undefined,\n }));\n }\n}\nexport { default as PriorityQueue } from './priority-queue.js';\n/**\nError thrown when a task times out.\n\n@example\n```\nimport PQueue, {TimeoutError} from 'p-queue';\n\nconst queue = new PQueue({timeout: 1000});\n\ntry {\n await queue.add(() => someTask());\n} catch (error) {\n if (error instanceof TimeoutError) {\n console.log('Task timed out');\n }\n}\n```\n*/\nexport { TimeoutError } from 'p-timeout';\n"],"file":"NcBreadcrumbs-B4eyDS9i-BkuFqTyn.chunk.mjs"} \ No newline at end of file +{"version":3,"mappings":"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","names":["register","t40","_hoisted_1","_hoisted_2","_sfc_main","defineComponent","mergeModels","createElementId","t","__props","modelValue","useModel","props","formattedValue","computed","formatValue","formattedMax","formattedMin","getReadableDate","value","yyyy","MM","dd","hh","mm","startDate","daysSinceBeginningOfYear","weekNumber","onInput","event","input","time","timezoneOffsetSeconds","inputDateWithTimezone","_ctx","_cache","openBlock","createElementBlock","normalizeClass","createElementVNode","toDisplayString","mergeProps","NcDateTimePickerNative","_export_sfc","t49","NcPasswordField","_sfc_main$1","defineAsyncComponent","__vitePreload","n","ActionGlobalMixin","id","type","_hoisted_3","_hoisted_4","_hoisted_5","_hoisted_6","_hoisted_7","_hoisted_8","_sfc_render","$props","$setup","$data","$options","_component_NcDateTimePicker","resolveComponent","_component_NcDateTimePickerNative","_component_NcSelect","_component_NcPasswordField","_component_NcColorPicker","_component_NcTextField","args","renderSlot","normalizeStyle","withModifiers","createCommentVNode","createBlock","createVNode","$event","withCtx","NcActionInput","has","prefix","Events","EE","fn","context","once","addListener","emitter","listener","evt","clearEvent","EventEmitter","names","events","name","handlers","i","l","ee","listeners","a1","a2","a3","a4","a5","len","length","j","module","TimeoutError","message","options","getAbortedReason","signal","pTimeout","promise","milliseconds","fallback","customTimers","timer","abortHandler","cancelablePromise","resolve","reject","timeoutError","error","lowerBound","array","comparator","first","count","step","it","compactionThreshold","PriorityQueue","#queue","#head","run","priority","size","element","#compact","index","a","b","item","idOrRun","result","PQueue","#carryoverIntervalCount","#isIntervalIgnored","#intervalCount","#intervalCap","#rateLimitedInInterval","#rateLimitFlushScheduled","#interval","#intervalEnd","#lastExecutionTime","#intervalId","#timeoutId","#strict","#strictTicks","#strictTicksStartIndex","#queueClass","#pending","#concurrency","#isPaused","#idAssigner","#runningTasks","#queueAbortListenerCleanupFunctions","#setupRateLimitTracking","#cleanupStrictTicks","now","oldestTick","#consumeIntervalSlot","#rollbackIntervalSlot","#getActiveTicksCount","#doesIntervalAllowAnother","#doesConcurrentAllowAnother","#next","#tryToStartAnother","#onResumeInterval","#onInterval","#initializeIntervalIfNeeded","#isIntervalPausedAt","delay","#createIntervalTimeout","timeSinceLastExecution","#clearIntervalTimer","#clearTimeoutTimer","taskStarted","canInitializeInterval","job","#scheduleRateLimitUpdate","#processQueue","newConcurrency","function_","taskSymbol","cleanupQueueAbortHandler","eventListener","#rollbackIntervalConsumption","operation","_resolve","removeQueuedTask","queueAbortHandler","functions","#updateRateLimitState","#onEvent","limit","handleError","filter","eventList","previous","shouldBeRateLimited","task"],"ignoreList":[0,1,2,3,4,5,6],"sources":["../node_modules/@nextcloud/vue/dist/chunks/NcDateTimePickerNative-B8CMOUnH.mjs","../node_modules/@nextcloud/vue/dist/chunks/NcActionInput-Dr8Yrafu.mjs","../node_modules/eventemitter3/index.js","../node_modules/p-timeout/index.js","../node_modules/p-queue/dist/lower-bound.js","../node_modules/p-queue/dist/priority-queue.js","../node_modules/p-queue/dist/index.js"],"sourcesContent":["import '../assets/NcDateTimePickerNative-BP6eg8aU.css';\nimport { defineComponent, useModel, computed, openBlock, createElementBlock, normalizeClass, createElementVNode, toDisplayString, mergeProps, mergeModels } from \"vue\";\nimport { r as register, x as t40, a as t } from \"./_l10n-wdIzZwir.mjs\";\nimport { c as createElementId } from \"./createElementId-DhjFt1I9.mjs\";\nimport { _ as _export_sfc } from \"./_plugin-vue_export-helper-1tPrXgE0.mjs\";\nregister(t40);\nconst _hoisted_1 = [\"for\"];\nconst _hoisted_2 = [\"id\", \"type\", \"value\", \"min\", \"max\"];\nconst _sfc_main = /* @__PURE__ */ defineComponent({\n ...{ inheritAttrs: false },\n __name: \"NcDateTimePickerNative\",\n props: /* @__PURE__ */ mergeModels({\n class: { default: void 0 },\n id: { default: () => createElementId() },\n inputClass: { default: \"\" },\n type: { default: \"date\" },\n label: { default: () => t(\"Please choose a date\") },\n min: { default: null },\n max: { default: null },\n hideLabel: { type: Boolean }\n }, {\n \"modelValue\": { default: null },\n \"modelModifiers\": {}\n }),\n emits: [\"update:modelValue\"],\n setup(__props) {\n const modelValue = useModel(__props, \"modelValue\");\n const props = __props;\n const formattedValue = computed(() => modelValue.value ? formatValue(modelValue.value) : \"\");\n const formattedMax = computed(() => props.max ? formatValue(props.max) : void 0);\n const formattedMin = computed(() => props.min ? formatValue(props.min) : void 0);\n function getReadableDate(value) {\n const yyyy = value.getFullYear().toString().padStart(4, \"0\");\n const MM = (value.getMonth() + 1).toString().padStart(2, \"0\");\n const dd = value.getDate().toString().padStart(2, \"0\");\n const hh = value.getHours().toString().padStart(2, \"0\");\n const mm = value.getMinutes().toString().padStart(2, \"0\");\n return { yyyy, MM, dd, hh, mm };\n }\n function formatValue(value) {\n const { yyyy, MM, dd, hh, mm } = getReadableDate(value);\n if (props.type === \"datetime-local\") {\n return `${yyyy}-${MM}-${dd}T${hh}:${mm}`;\n } else if (props.type === \"date\") {\n return `${yyyy}-${MM}-${dd}`;\n } else if (props.type === \"month\") {\n return `${yyyy}-${MM}`;\n } else if (props.type === \"time\") {\n return `${hh}:${mm}`;\n } else if (props.type === \"week\") {\n const startDate = new Date(Number.parseInt(yyyy), 0, 1);\n const daysSinceBeginningOfYear = Math.floor((value.getTime() - startDate.getTime()) / (24 * 60 * 60 * 1e3));\n const weekNumber = Math.ceil(daysSinceBeginningOfYear / 7);\n return `${yyyy}-W${weekNumber}`;\n }\n return \"\";\n }\n function onInput(event) {\n const input = event.target;\n if (!input || isNaN(input.valueAsNumber)) {\n modelValue.value = null;\n } else if (props.type === \"time\") {\n const time = input.value;\n const { yyyy, MM, dd } = getReadableDate(modelValue.value || /* @__PURE__ */ new Date());\n modelValue.value = /* @__PURE__ */ new Date(`${yyyy}-${MM}-${dd}T${time}`);\n } else if (props.type === \"month\") {\n const MM = (new Date(input.value).getMonth() + 1).toString().padStart(2, \"0\");\n const { yyyy, dd, hh, mm } = getReadableDate(modelValue.value || /* @__PURE__ */ new Date());\n modelValue.value = /* @__PURE__ */ new Date(`${yyyy}-${MM}-${dd}T${hh}:${mm}`);\n } else {\n const timezoneOffsetSeconds = new Date(input.valueAsNumber).getTimezoneOffset() * 1e3 * 60;\n const inputDateWithTimezone = input.valueAsNumber + timezoneOffsetSeconds;\n modelValue.value = new Date(inputDateWithTimezone);\n }\n }\n return (_ctx, _cache) => {\n return openBlock(), createElementBlock(\"div\", {\n class: normalizeClass([\"native-datetime-picker\", _ctx.$props.class])\n }, [\n createElementVNode(\"label\", {\n class: normalizeClass([\"native-datetime-picker__label\", { \"hidden-visually\": __props.hideLabel }]),\n for: __props.id\n }, toDisplayString(__props.label), 11, _hoisted_1),\n createElementVNode(\"input\", mergeProps({\n id: __props.id,\n class: [\"native-datetime-picker__input\", __props.inputClass],\n type: __props.type,\n value: formattedValue.value,\n min: formattedMin.value,\n max: formattedMax.value\n }, _ctx.$attrs, { onInput }), null, 16, _hoisted_2)\n ], 2);\n };\n }\n});\nconst NcDateTimePickerNative = /* @__PURE__ */ _export_sfc(_sfc_main, [[\"__scopeId\", \"data-v-b97e1f7a\"]]);\nexport {\n NcDateTimePickerNative as N\n};\n//# sourceMappingURL=NcDateTimePickerNative-B8CMOUnH.mjs.map\n","import '../assets/NcActionInput-t9WvlgV0.css';\nimport { defineAsyncComponent, resolveComponent, openBlock, createElementBlock, normalizeClass, createElementVNode, renderSlot, normalizeStyle, withModifiers, toDisplayString, createCommentVNode, createBlock, mergeProps, createVNode, withCtx } from \"vue\";\nimport { r as register, l as t49, a as t } from \"./_l10n-wdIzZwir.mjs\";\nimport { A as ActionGlobalMixin } from \"./actionGlobal-BZFdtdJL.mjs\";\nimport { c as createElementId } from \"./createElementId-DhjFt1I9.mjs\";\nimport { N as NcDateTimePickerNative } from \"./NcDateTimePickerNative-B8CMOUnH.mjs\";\nimport { N as NcPasswordField } from \"./NcPasswordField-BFyzHTOO.mjs\";\nimport { _ as _sfc_main$1 } from \"./NcTextField.vue_vue_type_script_setup_true_lang-Bx2esFU2.mjs\";\nimport { _ as _export_sfc } from \"./_plugin-vue_export-helper-1tPrXgE0.mjs\";\nregister(t49);\nconst _sfc_main = {\n name: \"NcActionInput\",\n components: {\n NcDateTimePickerNative,\n NcPasswordField,\n NcTextField: _sfc_main$1,\n // Lazy load components with more than 50kB bundle size impact\n NcColorPicker: defineAsyncComponent(() => import(\"../components/NcColorPicker/index.mjs\")),\n NcDateTimePicker: defineAsyncComponent(() => import(\"../components/NcDateTimePicker/index.mjs\")),\n NcSelect: defineAsyncComponent(() => import(\"../components/NcSelect/index.mjs\"))\n },\n mixins: [ActionGlobalMixin],\n inheritAttrs: false,\n props: {\n /**\n * id attribute of the checkbox element\n */\n id: {\n type: String,\n default: () => \"action-\" + createElementId(),\n validator: (id) => id.trim() !== \"\"\n },\n /**\n * id attribute of the text input element\n */\n inputId: {\n type: String,\n default: () => \"action-input-\" + createElementId(),\n validator: (id) => id.trim() !== \"\"\n },\n /**\n * Icon to show with the action, can be either a CSS class or an URL\n */\n icon: {\n type: String,\n default: \"\"\n },\n /**\n * type attribute of the input field\n */\n type: {\n type: String,\n default: \"text\",\n validator(type) {\n return [\n \"date\",\n \"datetime-local\",\n \"month\",\n \"multiselect\",\n \"number\",\n \"password\",\n \"search\",\n \"tel\",\n \"text\",\n \"time\",\n \"url\",\n \"week\",\n \"color\",\n \"email\"\n ].includes(type);\n }\n },\n /**\n * id attribute for the native date time picker\n */\n idNativeDateTimePicker: {\n type: String,\n default: \"date-time-picker_id\"\n },\n /**\n * Flag to use a native date time picker\n */\n isNativePicker: {\n type: Boolean,\n default: false\n },\n /**\n * The visible input label for accessibility purposes.\n */\n label: {\n type: String,\n default: null\n },\n /**\n * If you want to show the label just above the\n * input field, pass in `true` to this prop.\n */\n labelOutside: {\n type: Boolean,\n default: true\n },\n /**\n * value attribute of the input field\n */\n modelValue: {\n type: [String, Date, Number, Array],\n default: \"\"\n },\n /**\n * disabled state of the input field\n */\n disabled: {\n type: Boolean,\n default: false\n },\n /**\n * aria-label attribute of the input field\n */\n ariaLabel: {\n type: String,\n default: \"\"\n },\n /**\n * Attribute forwarded to the underlying NcPasswordField and NcTextField\n */\n showTrailingButton: {\n type: Boolean,\n default: true\n },\n /**\n * Trailing button label forwarded to the underlying NcTextField\n */\n trailingButtonLabel: {\n type: String,\n default: t(\"Submit\")\n },\n /**\n * CSS class to apply to the root element.\n */\n class: {\n type: [String, Array, Object],\n default: \"\"\n }\n },\n emits: [\n \"submit\",\n \"update:modelValue\"\n ],\n computed: {\n isIconUrl() {\n try {\n return new URL(this.icon);\n } catch {\n return false;\n }\n },\n isMultiselectType() {\n return this.type === \"multiselect\";\n },\n nativeDatePickerType() {\n switch (this.type) {\n case \"date\":\n case \"month\":\n case \"time\":\n case \"week\":\n case \"datetime-local\":\n return this.type;\n }\n return false;\n },\n datePickerType() {\n if (!this.isNativePicker) {\n switch (this.type) {\n case \"date\":\n case \"month\":\n case \"time\":\n return this.type;\n case \"datetime-local\":\n return \"datetime\";\n }\n }\n return false;\n },\n /**\n * determines if the action is focusable\n *\n * @return {boolean} is the action focusable ?\n */\n isFocusable() {\n return !this.disabled;\n }\n },\n methods: {\n // closing datepicker popup on mouseleave = unfocus\n onLeave() {\n if (this.$refs.datetimepicker && this.$refs.datetimepicker.$refs.datepicker) {\n this.$refs.datetimepicker.$refs.datepicker.closePopup();\n }\n },\n onSubmit(event) {\n event.preventDefault();\n event.stopPropagation();\n if (!this.disabled) {\n this.$emit(\"submit\", event);\n } else {\n return false;\n }\n },\n onUpdateModelValue(event) {\n this.$emit(\"update:modelValue\", event);\n }\n }\n};\nconst _hoisted_1 = { class: \"action-input__icon-wrapper\" };\nconst _hoisted_2 = [\"disabled\"];\nconst _hoisted_3 = { class: \"action-input__container\" };\nconst _hoisted_4 = [\"for\"];\nconst _hoisted_5 = { class: \"action-input__input-container\" };\nconst _hoisted_6 = {\n key: 4,\n class: \"action-input__container\"\n};\nconst _hoisted_7 = [\"for\"];\nconst _hoisted_8 = { class: \"action-input__input-container\" };\nfunction _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {\n const _component_NcDateTimePicker = resolveComponent(\"NcDateTimePicker\");\n const _component_NcDateTimePickerNative = resolveComponent(\"NcDateTimePickerNative\");\n const _component_NcSelect = resolveComponent(\"NcSelect\");\n const _component_NcPasswordField = resolveComponent(\"NcPasswordField\");\n const _component_NcColorPicker = resolveComponent(\"NcColorPicker\");\n const _component_NcTextField = resolveComponent(\"NcTextField\");\n return openBlock(), createElementBlock(\"li\", {\n class: normalizeClass([\"action\", [{ \"action--disabled\": $props.disabled }, _ctx.$props.class]])\n }, [\n createElementVNode(\"span\", {\n class: normalizeClass([\"action-input\", {\n \"action-input-picker--disabled\": $props.disabled,\n \"action-input--visible-label\": $props.labelOutside && $props.label\n }]),\n onMouseleave: _cache[3] || (_cache[3] = (...args) => $options.onLeave && $options.onLeave(...args))\n }, [\n createElementVNode(\"span\", _hoisted_1, [\n renderSlot(_ctx.$slots, \"icon\", {}, () => [\n createElementVNode(\"span\", {\n \"aria-hidden\": \"true\",\n class: normalizeClass([\"action-input__icon\", [$options.isIconUrl ? \"action-input__icon--url\" : $props.icon]]),\n style: normalizeStyle({ backgroundImage: $options.isIconUrl ? `url(${$props.icon})` : null })\n }, null, 6)\n ], true)\n ]),\n createElementVNode(\"form\", {\n ref: \"form\",\n class: \"action-input__form\",\n disabled: $props.disabled,\n onSubmit: _cache[2] || (_cache[2] = withModifiers((...args) => $options.onSubmit && $options.onSubmit(...args), [\"prevent\"]))\n }, [\n createElementVNode(\"div\", _hoisted_3, [\n $props.label && $props.labelOutside && !$props.isNativePicker ? (openBlock(), createElementBlock(\"label\", {\n key: 0,\n class: normalizeClass([\"action-input__text-label\", { \"action-input__text-label--hidden\": !$props.labelOutside }]),\n for: $props.inputId\n }, toDisplayString($props.label), 11, _hoisted_4)) : createCommentVNode(\"\", true),\n createElementVNode(\"div\", _hoisted_5, [\n $options.datePickerType ? (openBlock(), createBlock(_component_NcDateTimePicker, mergeProps({\n key: 0,\n ref: \"datetimepicker\",\n modelValue: $props.modelValue,\n style: { \"z-index\": \"99999999999\" },\n placeholder: _ctx.text,\n disabled: $props.disabled,\n type: $options.datePickerType,\n inputClass: [\"mx-input\", { focusable: $options.isFocusable }],\n class: \"action-input__datetimepicker\",\n appendToBody: \"\"\n }, _ctx.$attrs, { \"onUpdate:modelValue\": $options.onUpdateModelValue }), null, 16, [\"modelValue\", \"placeholder\", \"disabled\", \"type\", \"inputClass\", \"onUpdate:modelValue\"])) : $props.isNativePicker ? (openBlock(), createBlock(_component_NcDateTimePickerNative, mergeProps({\n key: 1,\n id: $props.idNativeDateTimePicker,\n modelValue: $props.modelValue,\n label: $props.label,\n type: $options.nativeDatePickerType,\n inputClass: { focusable: $options.isFocusable },\n class: \"action-input__datetimepicker\"\n }, _ctx.$attrs, { \"onUpdate:modelValue\": $options.onUpdateModelValue }), null, 16, [\"id\", \"modelValue\", \"label\", \"type\", \"inputClass\", \"onUpdate:modelValue\"])) : $options.isMultiselectType ? (openBlock(), createBlock(_component_NcSelect, mergeProps({\n key: 2,\n modelValue: $props.modelValue,\n placeholder: _ctx.text,\n disabled: $props.disabled,\n appendToBody: false,\n inputClass: { focusable: $options.isFocusable },\n class: \"action-input__multi\"\n }, _ctx.$attrs, { \"onUpdate:modelValue\": $options.onUpdateModelValue }), null, 16, [\"modelValue\", \"placeholder\", \"disabled\", \"inputClass\", \"onUpdate:modelValue\"])) : $props.type === \"password\" ? (openBlock(), createBlock(_component_NcPasswordField, mergeProps({\n key: 3,\n id: $props.inputId,\n modelValue: $props.modelValue,\n label: $props.label,\n labelOutside: !$props.label || $props.labelOutside,\n placeholder: _ctx.text,\n disabled: $props.disabled,\n inputClass: { focusable: $options.isFocusable },\n showTrailingButton: $props.showTrailingButton && !$props.disabled\n }, _ctx.$attrs, { \"onUpdate:modelValue\": $options.onUpdateModelValue }), null, 16, [\"id\", \"modelValue\", \"label\", \"labelOutside\", \"placeholder\", \"disabled\", \"inputClass\", \"showTrailingButton\", \"onUpdate:modelValue\"])) : $props.type === \"color\" ? (openBlock(), createElementBlock(\"div\", _hoisted_6, [\n $props.label && $props.type === \"color\" ? (openBlock(), createElementBlock(\"label\", {\n key: 0,\n class: normalizeClass([\"action-input__text-label\", { \"action-input__text-label--hidden\": !$props.labelOutside }]),\n for: $props.inputId\n }, toDisplayString($props.label), 11, _hoisted_7)) : createCommentVNode(\"\", true),\n createElementVNode(\"div\", _hoisted_8, [\n createVNode(_component_NcColorPicker, mergeProps({\n id: \"inputId\",\n modelValue: $props.modelValue,\n class: \"colorpicker__trigger\"\n }, _ctx.$attrs, {\n \"onUpdate:modelValue\": $options.onUpdateModelValue,\n onSubmit: _cache[0] || (_cache[0] = ($event) => _ctx.$refs.form.requestSubmit())\n }), {\n default: withCtx(() => [\n createElementVNode(\"button\", {\n class: normalizeClass([\"colorpicker__preview\", { focusable: $options.isFocusable }]),\n style: normalizeStyle({ \"background-color\": $props.modelValue })\n }, null, 6)\n ]),\n _: 1\n }, 16, [\"modelValue\", \"onUpdate:modelValue\"])\n ])\n ])) : (openBlock(), createBlock(_component_NcTextField, mergeProps({\n key: 5,\n id: $props.inputId,\n modelValue: $props.modelValue,\n label: $props.label,\n labelOutside: !$props.label || $props.labelOutside,\n placeholder: _ctx.text,\n disabled: $props.disabled,\n inputClass: { focusable: $options.isFocusable },\n type: $props.type,\n trailingButtonIcon: \"arrowRight\",\n trailingButtonLabel: $props.trailingButtonLabel,\n showTrailingButton: $props.showTrailingButton && !$props.disabled\n }, _ctx.$attrs, {\n onTrailingButtonClick: _cache[1] || (_cache[1] = ($event) => _ctx.$refs.form.requestSubmit()),\n \"onUpdate:modelValue\": $options.onUpdateModelValue\n }), null, 16, [\"id\", \"modelValue\", \"label\", \"labelOutside\", \"placeholder\", \"disabled\", \"inputClass\", \"type\", \"trailingButtonLabel\", \"showTrailingButton\", \"onUpdate:modelValue\"]))\n ])\n ])\n ], 40, _hoisted_2)\n ], 34)\n ], 2);\n}\nconst NcActionInput = /* @__PURE__ */ _export_sfc(_sfc_main, [[\"render\", _sfc_render], [\"__scopeId\", \"data-v-43230e98\"]]);\nexport {\n NcActionInput as N\n};\n//# sourceMappingURL=NcActionInput-Dr8Yrafu.mjs.map\n","'use strict';\n\nvar has = Object.prototype.hasOwnProperty\n , prefix = '~';\n\n/**\n * Constructor to create a storage for our `EE` objects.\n * An `Events` instance is a plain object whose properties are event names.\n *\n * @constructor\n * @private\n */\nfunction Events() {}\n\n//\n// We try to not inherit from `Object.prototype`. In some engines creating an\n// instance in this way is faster than calling `Object.create(null)` directly.\n// If `Object.create(null)` is not supported we prefix the event names with a\n// character to make sure that the built-in object properties are not\n// overridden or used as an attack vector.\n//\nif (Object.create) {\n Events.prototype = Object.create(null);\n\n //\n // This hack is needed because the `__proto__` property is still inherited in\n // some old browsers like Android 4, iPhone 5.1, Opera 11 and Safari 5.\n //\n if (!new Events().__proto__) prefix = false;\n}\n\n/**\n * Representation of a single event listener.\n *\n * @param {Function} fn The listener function.\n * @param {*} context The context to invoke the listener with.\n * @param {Boolean} [once=false] Specify if the listener is a one-time listener.\n * @constructor\n * @private\n */\nfunction EE(fn, context, once) {\n this.fn = fn;\n this.context = context;\n this.once = once || false;\n}\n\n/**\n * Add a listener for a given event.\n *\n * @param {EventEmitter} emitter Reference to the `EventEmitter` instance.\n * @param {(String|Symbol)} event The event name.\n * @param {Function} fn The listener function.\n * @param {*} context The context to invoke the listener with.\n * @param {Boolean} once Specify if the listener is a one-time listener.\n * @returns {EventEmitter}\n * @private\n */\nfunction addListener(emitter, event, fn, context, once) {\n if (typeof fn !== 'function') {\n throw new TypeError('The listener must be a function');\n }\n\n var listener = new EE(fn, context || emitter, once)\n , evt = prefix ? prefix + event : event;\n\n if (!emitter._events[evt]) emitter._events[evt] = listener, emitter._eventsCount++;\n else if (!emitter._events[evt].fn) emitter._events[evt].push(listener);\n else emitter._events[evt] = [emitter._events[evt], listener];\n\n return emitter;\n}\n\n/**\n * Clear event by name.\n *\n * @param {EventEmitter} emitter Reference to the `EventEmitter` instance.\n * @param {(String|Symbol)} evt The Event name.\n * @private\n */\nfunction clearEvent(emitter, evt) {\n if (--emitter._eventsCount === 0) emitter._events = new Events();\n else delete emitter._events[evt];\n}\n\n/**\n * Minimal `EventEmitter` interface that is molded against the Node.js\n * `EventEmitter` interface.\n *\n * @constructor\n * @public\n */\nfunction EventEmitter() {\n this._events = new Events();\n this._eventsCount = 0;\n}\n\n/**\n * Return an array listing the events for which the emitter has registered\n * listeners.\n *\n * @returns {Array}\n * @public\n */\nEventEmitter.prototype.eventNames = function eventNames() {\n var names = []\n , events\n , name;\n\n if (this._eventsCount === 0) return names;\n\n for (name in (events = this._events)) {\n if (has.call(events, name)) names.push(prefix ? name.slice(1) : name);\n }\n\n if (Object.getOwnPropertySymbols) {\n return names.concat(Object.getOwnPropertySymbols(events));\n }\n\n return names;\n};\n\n/**\n * Return the listeners registered for a given event.\n *\n * @param {(String|Symbol)} event The event name.\n * @returns {Array} The registered listeners.\n * @public\n */\nEventEmitter.prototype.listeners = function listeners(event) {\n var evt = prefix ? prefix + event : event\n , handlers = this._events[evt];\n\n if (!handlers) return [];\n if (handlers.fn) return [handlers.fn];\n\n for (var i = 0, l = handlers.length, ee = new Array(l); i < l; i++) {\n ee[i] = handlers[i].fn;\n }\n\n return ee;\n};\n\n/**\n * Return the number of listeners listening to a given event.\n *\n * @param {(String|Symbol)} event The event name.\n * @returns {Number} The number of listeners.\n * @public\n */\nEventEmitter.prototype.listenerCount = function listenerCount(event) {\n var evt = prefix ? prefix + event : event\n , listeners = this._events[evt];\n\n if (!listeners) return 0;\n if (listeners.fn) return 1;\n return listeners.length;\n};\n\n/**\n * Calls each of the listeners registered for a given event.\n *\n * @param {(String|Symbol)} event The event name.\n * @returns {Boolean} `true` if the event had listeners, else `false`.\n * @public\n */\nEventEmitter.prototype.emit = function emit(event, a1, a2, a3, a4, a5) {\n var evt = prefix ? prefix + event : event;\n\n if (!this._events[evt]) return false;\n\n var listeners = this._events[evt]\n , len = arguments.length\n , args\n , i;\n\n if (listeners.fn) {\n if (listeners.once) this.removeListener(event, listeners.fn, undefined, true);\n\n switch (len) {\n case 1: return listeners.fn.call(listeners.context), true;\n case 2: return listeners.fn.call(listeners.context, a1), true;\n case 3: return listeners.fn.call(listeners.context, a1, a2), true;\n case 4: return listeners.fn.call(listeners.context, a1, a2, a3), true;\n case 5: return listeners.fn.call(listeners.context, a1, a2, a3, a4), true;\n case 6: return listeners.fn.call(listeners.context, a1, a2, a3, a4, a5), true;\n }\n\n for (i = 1, args = new Array(len -1); i < len; i++) {\n args[i - 1] = arguments[i];\n }\n\n listeners.fn.apply(listeners.context, args);\n } else {\n var length = listeners.length\n , j;\n\n for (i = 0; i < length; i++) {\n if (listeners[i].once) this.removeListener(event, listeners[i].fn, undefined, true);\n\n switch (len) {\n case 1: listeners[i].fn.call(listeners[i].context); break;\n case 2: listeners[i].fn.call(listeners[i].context, a1); break;\n case 3: listeners[i].fn.call(listeners[i].context, a1, a2); break;\n case 4: listeners[i].fn.call(listeners[i].context, a1, a2, a3); break;\n default:\n if (!args) for (j = 1, args = new Array(len -1); j < len; j++) {\n args[j - 1] = arguments[j];\n }\n\n listeners[i].fn.apply(listeners[i].context, args);\n }\n }\n }\n\n return true;\n};\n\n/**\n * Add a listener for a given event.\n *\n * @param {(String|Symbol)} event The event name.\n * @param {Function} fn The listener function.\n * @param {*} [context=this] The context to invoke the listener with.\n * @returns {EventEmitter} `this`.\n * @public\n */\nEventEmitter.prototype.on = function on(event, fn, context) {\n return addListener(this, event, fn, context, false);\n};\n\n/**\n * Add a one-time listener for a given event.\n *\n * @param {(String|Symbol)} event The event name.\n * @param {Function} fn The listener function.\n * @param {*} [context=this] The context to invoke the listener with.\n * @returns {EventEmitter} `this`.\n * @public\n */\nEventEmitter.prototype.once = function once(event, fn, context) {\n return addListener(this, event, fn, context, true);\n};\n\n/**\n * Remove the listeners of a given event.\n *\n * @param {(String|Symbol)} event The event name.\n * @param {Function} fn Only remove the listeners that match this function.\n * @param {*} context Only remove the listeners that have this context.\n * @param {Boolean} once Only remove one-time listeners.\n * @returns {EventEmitter} `this`.\n * @public\n */\nEventEmitter.prototype.removeListener = function removeListener(event, fn, context, once) {\n var evt = prefix ? prefix + event : event;\n\n if (!this._events[evt]) return this;\n if (!fn) {\n clearEvent(this, evt);\n return this;\n }\n\n var listeners = this._events[evt];\n\n if (listeners.fn) {\n if (\n listeners.fn === fn &&\n (!once || listeners.once) &&\n (!context || listeners.context === context)\n ) {\n clearEvent(this, evt);\n }\n } else {\n for (var i = 0, events = [], length = listeners.length; i < length; i++) {\n if (\n listeners[i].fn !== fn ||\n (once && !listeners[i].once) ||\n (context && listeners[i].context !== context)\n ) {\n events.push(listeners[i]);\n }\n }\n\n //\n // Reset the array, or remove it completely if we have no more listeners.\n //\n if (events.length) this._events[evt] = events.length === 1 ? events[0] : events;\n else clearEvent(this, evt);\n }\n\n return this;\n};\n\n/**\n * Remove all listeners, or those of the specified event.\n *\n * @param {(String|Symbol)} [event] The event name.\n * @returns {EventEmitter} `this`.\n * @public\n */\nEventEmitter.prototype.removeAllListeners = function removeAllListeners(event) {\n var evt;\n\n if (event) {\n evt = prefix ? prefix + event : event;\n if (this._events[evt]) clearEvent(this, evt);\n } else {\n this._events = new Events();\n this._eventsCount = 0;\n }\n\n return this;\n};\n\n//\n// Alias methods names because people roll like that.\n//\nEventEmitter.prototype.off = EventEmitter.prototype.removeListener;\nEventEmitter.prototype.addListener = EventEmitter.prototype.on;\n\n//\n// Expose the prefix.\n//\nEventEmitter.prefixed = prefix;\n\n//\n// Allow `EventEmitter` to be imported as module namespace.\n//\nEventEmitter.EventEmitter = EventEmitter;\n\n//\n// Expose the module.\n//\nif ('undefined' !== typeof module) {\n module.exports = EventEmitter;\n}\n","export class TimeoutError extends Error {\n\tname = 'TimeoutError';\n\n\tconstructor(message, options) {\n\t\tsuper(message, options);\n\t\tError.captureStackTrace?.(this, TimeoutError);\n\t}\n}\n\nconst getAbortedReason = signal => signal.reason ?? new DOMException('This operation was aborted.', 'AbortError');\n\nexport default function pTimeout(promise, options) {\n\tconst {\n\t\tmilliseconds,\n\t\tfallback,\n\t\tmessage,\n\t\tcustomTimers = {setTimeout, clearTimeout},\n\t\tsignal,\n\t} = options;\n\n\tlet timer;\n\tlet abortHandler;\n\n\tconst wrappedPromise = new Promise((resolve, reject) => {\n\t\tif (typeof milliseconds !== 'number' || Math.sign(milliseconds) !== 1) {\n\t\t\tthrow new TypeError(`Expected \\`milliseconds\\` to be a positive number, got \\`${milliseconds}\\``);\n\t\t}\n\n\t\tif (signal?.aborted) {\n\t\t\treject(getAbortedReason(signal));\n\t\t\treturn;\n\t\t}\n\n\t\tif (signal) {\n\t\t\tabortHandler = () => {\n\t\t\t\treject(getAbortedReason(signal));\n\t\t\t};\n\n\t\t\tsignal.addEventListener('abort', abortHandler, {once: true});\n\t\t}\n\n\t\t// Use .then() instead of async IIFE to preserve stack traces\n\t\t// eslint-disable-next-line promise/prefer-await-to-then, promise/prefer-catch\n\t\tpromise.then(resolve, reject);\n\n\t\tif (milliseconds === Number.POSITIVE_INFINITY) {\n\t\t\treturn;\n\t\t}\n\n\t\t// We create the error outside of `setTimeout` to preserve the stack trace.\n\t\tconst timeoutError = new TimeoutError();\n\n\t\t// `.call(undefined, ...)` is needed for custom timers to avoid context issues\n\t\ttimer = customTimers.setTimeout.call(undefined, () => {\n\t\t\tif (fallback) {\n\t\t\t\ttry {\n\t\t\t\t\tresolve(fallback());\n\t\t\t\t} catch (error) {\n\t\t\t\t\treject(error);\n\t\t\t\t}\n\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (typeof promise.cancel === 'function') {\n\t\t\t\tpromise.cancel();\n\t\t\t}\n\n\t\t\tif (message === false) {\n\t\t\t\tresolve();\n\t\t\t} else if (message instanceof Error) {\n\t\t\t\treject(message);\n\t\t\t} else {\n\t\t\t\ttimeoutError.message = message ?? `Promise timed out after ${milliseconds} milliseconds`;\n\t\t\t\treject(timeoutError);\n\t\t\t}\n\t\t}, milliseconds);\n\t});\n\n\t// eslint-disable-next-line promise/prefer-await-to-then\n\tconst cancelablePromise = wrappedPromise.finally(() => {\n\t\tcancelablePromise.clear();\n\t\tif (abortHandler && signal) {\n\t\t\tsignal.removeEventListener('abort', abortHandler);\n\t\t}\n\t});\n\n\tcancelablePromise.clear = () => {\n\t\t// `.call(undefined, ...)` is needed for custom timers to avoid context issues\n\t\tcustomTimers.clearTimeout.call(undefined, timer);\n\t\ttimer = undefined;\n\t};\n\n\treturn cancelablePromise;\n}\n","// Port of lower_bound from https://en.cppreference.com/w/cpp/algorithm/lower_bound\n// Used to compute insertion index to keep queue sorted after insertion\nexport default function lowerBound(array, value, comparator) {\n let first = 0;\n let count = array.length;\n while (count > 0) {\n const step = Math.trunc(count / 2);\n let it = first + step;\n if (comparator(array[it], value) <= 0) {\n first = ++it;\n count -= step + 1;\n }\n else {\n count = step;\n }\n }\n return first;\n}\n","import lowerBound from './lower-bound.js';\nconst compactionThreshold = 100;\nexport default class PriorityQueue {\n #queue = [];\n // The queue is stored as a sorted array, but dequeued items are left before `#head` until compaction. Only items from `#head` onward are live, which keeps repeated dequeues amortized O(1).\n #head = 0;\n enqueue(run, options) {\n const { priority = 0, id, } = options ?? {};\n const { size } = this;\n const element = {\n priority,\n id,\n run,\n };\n if (size === 0) {\n // When the queue is logically empty, discard any consumed prefix before accepting new work.\n this.#queue.length = 0;\n this.#head = 0;\n this.#queue.push(element);\n return;\n }\n if (this.#queue.at(-1).priority >= priority) {\n // Same-priority and lower-priority items belong after the current tail. Appending preserves FIFO order for equal priorities.\n this.#queue.push(element);\n return;\n }\n // Binary insertion must run on the live sorted range only.\n this.#compact();\n const index = lowerBound(this.#queue, element, (a, b) => b.priority - a.priority);\n this.#queue.splice(index, 0, element);\n }\n setPriority(id, priority) {\n // A dequeued item with the same id is no longer part of the queue.\n const index = this.#queue.findIndex((element, index) => index >= this.#head && element.id === id);\n if (index === -1) {\n throw new ReferenceError(`No promise function with the id \"${id}\" exists in the queue.`);\n }\n const [item] = this.#queue.splice(index, 1);\n this.enqueue(item.run, { priority, id });\n }\n remove(idOrRun) {\n const index = this.#queue.findIndex((element, index) => {\n // The consumed prefix may still contain references that should not be removable.\n if (index < this.#head) {\n return false;\n }\n if (typeof idOrRun === 'string') {\n return element.id === idOrRun;\n }\n return element.run === idOrRun;\n });\n if (index !== -1) {\n this.#queue.splice(index, 1);\n }\n }\n dequeue() {\n if (this.#head === this.#queue.length) {\n return undefined;\n }\n const item = this.#queue[this.#head];\n this.#head++;\n if (this.#head === this.#queue.length) {\n // Fully drained queues are reset immediately so the next enqueue starts from a clean array.\n this.#queue.length = 0;\n this.#head = 0;\n }\n else if (this.#head > compactionThreshold && this.#head > this.#queue.length / 2) {\n // Keep repeated dequeues cheap, but stop the consumed prefix from growing without bound.\n this.#compact();\n }\n return item?.run;\n }\n filter(options) {\n const result = [];\n for (let index = this.#head; index < this.#queue.length; index++) {\n const element = this.#queue[index];\n if (element.priority === options.priority) {\n result.push(element.run);\n }\n }\n return result;\n }\n get size() {\n return this.#queue.length - this.#head;\n }\n #compact() {\n // Compaction restores the invariant that the whole array is the live sorted range.\n if (this.#head === 0) {\n return;\n }\n this.#queue.splice(0, this.#head);\n this.#head = 0;\n }\n}\n","import { EventEmitter } from 'eventemitter3';\nimport pTimeout from 'p-timeout';\nimport PriorityQueue from './priority-queue.js';\n/**\nPromise queue with concurrency control.\n*/\nexport default class PQueue extends EventEmitter {\n #carryoverIntervalCount;\n #isIntervalIgnored;\n #intervalCount = 0;\n #intervalCap;\n #rateLimitedInInterval = false;\n #rateLimitFlushScheduled = false;\n #interval;\n #intervalEnd = 0;\n #lastExecutionTime = 0;\n #intervalId;\n #timeoutId;\n #strict;\n // Circular buffer implementation for better performance\n #strictTicks = [];\n #strictTicksStartIndex = 0;\n #queue;\n #queueClass;\n #pending = 0;\n // The `!` is needed because of https://github.com/microsoft/TypeScript/issues/32194\n #concurrency;\n #isPaused;\n // Use to assign a unique identifier to a promise function, if not explicitly specified\n #idAssigner = 1n;\n // Track currently running tasks for debugging\n #runningTasks = new Map();\n #queueAbortListenerCleanupFunctions = new Set();\n /**\n Get or set the default timeout for all tasks. Can be changed at runtime.\n\n Operations will throw a `TimeoutError` if they don't complete within the specified time.\n\n The timeout begins when the operation is dequeued and starts execution, not while it's waiting in the queue.\n\n @example\n ```\n const queue = new PQueue({timeout: 5000});\n\n // Change timeout for all future tasks\n queue.timeout = 10000;\n ```\n */\n timeout;\n constructor(options) {\n super();\n // eslint-disable-next-line @typescript-eslint/consistent-type-assertions\n options = {\n carryoverIntervalCount: false,\n intervalCap: Number.POSITIVE_INFINITY,\n interval: 0,\n concurrency: Number.POSITIVE_INFINITY,\n autoStart: true,\n queueClass: PriorityQueue,\n strict: false,\n ...options,\n };\n if (!(typeof options.intervalCap === 'number' && options.intervalCap >= 1)) {\n throw new TypeError(`Expected \\`intervalCap\\` to be a number from 1 and up, got \\`${options.intervalCap?.toString() ?? ''}\\` (${typeof options.intervalCap})`);\n }\n if (options.interval === undefined || !(Number.isFinite(options.interval) && options.interval >= 0)) {\n throw new TypeError(`Expected \\`interval\\` to be a finite number >= 0, got \\`${options.interval?.toString() ?? ''}\\` (${typeof options.interval})`);\n }\n if (options.strict && options.interval === 0) {\n throw new TypeError('The `strict` option requires a non-zero `interval`');\n }\n if (options.strict && options.intervalCap === Number.POSITIVE_INFINITY) {\n throw new TypeError('The `strict` option requires a finite `intervalCap`');\n }\n // TODO: Remove this fallback in the next major version\n // eslint-disable-next-line @typescript-eslint/no-deprecated\n this.#carryoverIntervalCount = options.carryoverIntervalCount ?? options.carryoverConcurrencyCount ?? false;\n this.#isIntervalIgnored = options.intervalCap === Number.POSITIVE_INFINITY || options.interval === 0;\n this.#intervalCap = options.intervalCap;\n this.#interval = options.interval;\n this.#strict = options.strict;\n this.#queue = new options.queueClass();\n this.#queueClass = options.queueClass;\n this.concurrency = options.concurrency;\n if (options.timeout !== undefined && !(Number.isFinite(options.timeout) && options.timeout > 0)) {\n throw new TypeError(`Expected \\`timeout\\` to be a positive finite number, got \\`${options.timeout}\\` (${typeof options.timeout})`);\n }\n this.timeout = options.timeout;\n this.#isPaused = options.autoStart === false;\n this.#setupRateLimitTracking();\n }\n #cleanupStrictTicks(now) {\n // Remove ticks outside the current interval window using circular buffer approach\n while (this.#strictTicksStartIndex < this.#strictTicks.length) {\n const oldestTick = this.#strictTicks[this.#strictTicksStartIndex];\n if (oldestTick !== undefined && now - oldestTick >= this.#interval) {\n this.#strictTicksStartIndex++;\n }\n else {\n break;\n }\n }\n // Compact the array when it becomes inefficient or fully consumed\n // Compact when: (start index is large AND more than half wasted) OR all ticks expired\n const shouldCompact = (this.#strictTicksStartIndex > 100 && this.#strictTicksStartIndex > this.#strictTicks.length / 2)\n || this.#strictTicksStartIndex === this.#strictTicks.length;\n if (shouldCompact) {\n this.#strictTicks = this.#strictTicks.slice(this.#strictTicksStartIndex);\n this.#strictTicksStartIndex = 0;\n }\n }\n // Helper methods for interval consumption\n #consumeIntervalSlot(now) {\n if (this.#strict) {\n this.#strictTicks.push(now);\n }\n else {\n this.#intervalCount++;\n }\n }\n #rollbackIntervalSlot() {\n if (this.#strict) {\n // Pop from the end of the actual data (not from start index)\n if (this.#strictTicks.length > this.#strictTicksStartIndex) {\n this.#strictTicks.pop();\n }\n }\n else if (this.#intervalCount > 0) {\n this.#intervalCount--;\n }\n }\n #getActiveTicksCount() {\n return this.#strictTicks.length - this.#strictTicksStartIndex;\n }\n get #doesIntervalAllowAnother() {\n if (this.#isIntervalIgnored) {\n return true;\n }\n if (this.#strict) {\n // Cleanup already done by #isIntervalPausedAt before this is called\n return this.#getActiveTicksCount() < this.#intervalCap;\n }\n return this.#intervalCount < this.#intervalCap;\n }\n get #doesConcurrentAllowAnother() {\n return this.#pending < this.#concurrency;\n }\n #next() {\n this.#pending--;\n if (this.#pending === 0) {\n this.emit('pendingZero');\n }\n this.#tryToStartAnother();\n this.emit('next');\n }\n #onResumeInterval() {\n // Clear timeout ID before processing to prevent race condition\n // Must clear before #onInterval to allow new timeouts to be scheduled\n this.#timeoutId = undefined;\n this.#onInterval();\n this.#initializeIntervalIfNeeded();\n }\n #isIntervalPausedAt(now) {\n // Strict mode: check if we need to wait for oldest tick to age out\n if (this.#strict) {\n this.#cleanupStrictTicks(now);\n // If at capacity, need to wait for oldest tick to age out\n const activeTicksCount = this.#getActiveTicksCount();\n if (activeTicksCount >= this.#intervalCap) {\n const oldestTick = this.#strictTicks[this.#strictTicksStartIndex];\n // After cleanup, remaining ticks are within interval, so delay is always > 0\n const delay = this.#interval - (now - oldestTick);\n this.#createIntervalTimeout(delay);\n return true;\n }\n return false;\n }\n // Fixed window mode (original logic)\n if (this.#intervalId === undefined) {\n const delay = this.#intervalEnd - now;\n if (delay < 0) {\n // If the interval has expired while idle, check if we should enforce the interval\n // from the last task execution. This ensures proper spacing between tasks even\n // when the queue becomes empty and then new tasks are added.\n if (this.#lastExecutionTime > 0) {\n const timeSinceLastExecution = now - this.#lastExecutionTime;\n if (timeSinceLastExecution < this.#interval) {\n // Not enough time has passed since the last task execution\n this.#createIntervalTimeout(this.#interval - timeSinceLastExecution);\n return true;\n }\n }\n // Enough time has passed or no previous execution, allow execution\n this.#intervalCount = (this.#carryoverIntervalCount) ? this.#pending : 0;\n }\n else {\n // Act as the interval is pending\n this.#createIntervalTimeout(delay);\n return true;\n }\n }\n return false;\n }\n #createIntervalTimeout(delay) {\n if (this.#timeoutId !== undefined) {\n return;\n }\n this.#timeoutId = setTimeout(() => {\n this.#onResumeInterval();\n }, delay);\n }\n #clearIntervalTimer() {\n if (this.#intervalId) {\n clearInterval(this.#intervalId);\n this.#intervalId = undefined;\n }\n }\n #clearTimeoutTimer() {\n if (this.#timeoutId) {\n clearTimeout(this.#timeoutId);\n this.#timeoutId = undefined;\n }\n }\n #tryToStartAnother() {\n if (this.#queue.size === 0) {\n // We can clear the interval (\"pause\")\n // Because we can redo it later (\"resume\")\n this.#clearIntervalTimer();\n this.emit('empty');\n if (this.#pending === 0) {\n // Clear timeout as well when completely idle\n this.#clearTimeoutTimer();\n // Compact strict ticks when idle to free memory\n if (this.#strict && this.#strictTicksStartIndex > 0) {\n const now = Date.now();\n this.#cleanupStrictTicks(now);\n }\n this.emit('idle');\n }\n return false;\n }\n let taskStarted = false;\n if (!this.#isPaused) {\n const now = Date.now();\n const canInitializeInterval = !this.#isIntervalPausedAt(now);\n if (this.#doesIntervalAllowAnother && this.#doesConcurrentAllowAnother) {\n const job = this.#queue.dequeue();\n if (!this.#isIntervalIgnored) {\n this.#consumeIntervalSlot(now);\n this.#scheduleRateLimitUpdate();\n }\n this.emit('active');\n job();\n if (canInitializeInterval) {\n this.#initializeIntervalIfNeeded();\n }\n taskStarted = true;\n }\n }\n return taskStarted;\n }\n #initializeIntervalIfNeeded() {\n if (this.#isIntervalIgnored || this.#intervalId !== undefined) {\n return;\n }\n // Strict mode uses timeouts instead of interval timers\n if (this.#strict) {\n return;\n }\n this.#intervalId = setInterval(() => {\n this.#onInterval();\n }, this.#interval);\n this.#intervalEnd = Date.now() + this.#interval;\n }\n #onInterval() {\n // Non-strict mode uses interval timers and intervalCount\n if (!this.#strict) {\n if (this.#intervalCount === 0 && this.#pending === 0 && this.#intervalId) {\n this.#clearIntervalTimer();\n }\n this.#intervalCount = this.#carryoverIntervalCount ? this.#pending : 0;\n }\n this.#processQueue();\n this.#scheduleRateLimitUpdate();\n }\n /**\n Executes all queued functions until it reaches the limit.\n */\n #processQueue() {\n // eslint-disable-next-line no-empty\n while (this.#tryToStartAnother()) { }\n }\n get concurrency() {\n return this.#concurrency;\n }\n set concurrency(newConcurrency) {\n if (!(typeof newConcurrency === 'number' && newConcurrency >= 1)) {\n throw new TypeError(`Expected \\`concurrency\\` to be a number from 1 and up, got \\`${newConcurrency}\\` (${typeof newConcurrency})`);\n }\n this.#concurrency = newConcurrency;\n this.#processQueue();\n }\n /**\n Updates the priority of a promise function by its id, affecting its execution order. Requires a defined concurrency limit to take effect.\n\n For example, this can be used to prioritize a promise function to run earlier.\n\n ```js\n import PQueue from 'p-queue';\n\n const queue = new PQueue({concurrency: 1});\n\n queue.add(async () => '🦄', {priority: 1});\n queue.add(async () => '🦀', {priority: 0, id: '🦀'});\n queue.add(async () => '🦄', {priority: 1});\n queue.add(async () => '🦄', {priority: 1});\n\n queue.setPriority('🦀', 2);\n ```\n\n In this case, the promise function with `id: '🦀'` runs second.\n\n You can also deprioritize a promise function to delay its execution:\n\n ```js\n import PQueue from 'p-queue';\n\n const queue = new PQueue({concurrency: 1});\n\n queue.add(async () => '🦄', {priority: 1});\n queue.add(async () => '🦀', {priority: 1, id: '🦀'});\n queue.add(async () => '🦄');\n queue.add(async () => '🦄', {priority: 0});\n\n queue.setPriority('🦀', -1);\n ```\n Here, the promise function with `id: '🦀'` executes last.\n */\n setPriority(id, priority) {\n if (typeof priority !== 'number' || !Number.isFinite(priority)) {\n throw new TypeError(`Expected \\`priority\\` to be a finite number, got \\`${priority}\\` (${typeof priority})`);\n }\n this.#queue.setPriority(id, priority);\n }\n async add(function_, options = {}) {\n // Create a copy to avoid mutating the original options object\n options = {\n timeout: this.timeout,\n ...options,\n // Assign unique ID if not provided\n id: options.id ?? (this.#idAssigner++).toString(),\n };\n if (options.timeout !== undefined && !(Number.isFinite(options.timeout) && options.timeout > 0)) {\n throw new TypeError(`Expected \\`timeout\\` to be a positive finite number, got \\`${options.timeout}\\` (${typeof options.timeout})`);\n }\n return new Promise((resolve, reject) => {\n // Create a unique symbol for tracking this task\n const taskSymbol = Symbol(`task-${options.id}`);\n let cleanupQueueAbortHandler = () => undefined;\n const run = async () => {\n // Task is now running — remove the queued-state abort listener\n cleanupQueueAbortHandler();\n this.#pending++;\n // Track this running task\n this.#runningTasks.set(taskSymbol, {\n id: options.id,\n priority: options.priority ?? 0, // Match priority-queue default\n startTime: Date.now(),\n timeout: options.timeout,\n });\n let eventListener;\n try {\n // Check abort signal - if aborted, need to decrement the counter\n // that was incremented in tryToStartAnother\n try {\n options.signal?.throwIfAborted();\n }\n catch (error) {\n this.#rollbackIntervalConsumption();\n // Clean up tracking before throwing\n this.#runningTasks.delete(taskSymbol);\n throw error;\n }\n this.#lastExecutionTime = Date.now();\n let operation = function_({ signal: options.signal });\n if (options.timeout !== undefined) {\n operation = pTimeout(Promise.resolve(operation), {\n milliseconds: options.timeout,\n message: `Task timed out after ${options.timeout}ms (queue has ${this.#pending} running, ${this.#queue.size} waiting)`,\n });\n }\n if (options.signal) {\n const { signal } = options;\n operation = Promise.race([operation, new Promise((_resolve, reject) => {\n eventListener = () => {\n reject(signal.reason);\n };\n signal.addEventListener('abort', eventListener, { once: true });\n })]);\n }\n const result = await operation;\n resolve(result);\n this.emit('completed', result);\n }\n catch (error) {\n reject(error);\n this.emit('error', error);\n }\n finally {\n // Clean up abort event listener\n if (eventListener) {\n options.signal?.removeEventListener('abort', eventListener);\n }\n // Remove from running tasks\n this.#runningTasks.delete(taskSymbol);\n // Use queueMicrotask to prevent deep recursion while maintaining timing\n queueMicrotask(() => {\n this.#next();\n });\n }\n };\n this.#queue.enqueue(run, options);\n const removeQueuedTask = () => {\n if (this.#queue instanceof PriorityQueue) {\n this.#queue.remove(run);\n return;\n }\n this.#queue.remove?.(options.id); // Intentionally best-effort: queued abort removal is only supported for queue classes that implement `.remove()`.\n };\n // Handle abort while task is waiting in the queue\n if (options.signal) {\n const { signal } = options;\n const queueAbortHandler = () => {\n cleanupQueueAbortHandler();\n removeQueuedTask();\n reject(signal.reason);\n this.#tryToStartAnother();\n this.emit('next');\n };\n cleanupQueueAbortHandler = () => {\n signal.removeEventListener('abort', queueAbortHandler);\n this.#queueAbortListenerCleanupFunctions.delete(cleanupQueueAbortHandler);\n };\n if (signal.aborted) {\n queueAbortHandler();\n return;\n }\n signal.addEventListener('abort', queueAbortHandler, { once: true });\n this.#queueAbortListenerCleanupFunctions.add(cleanupQueueAbortHandler);\n }\n this.emit('add');\n this.#tryToStartAnother();\n });\n }\n async addAll(functions, options) {\n return Promise.all(functions.map(async (function_) => this.add(function_, options)));\n }\n /**\n Start (or resume) executing enqueued tasks within concurrency limit. No need to call this if queue is not paused (via `options.autoStart = false` or by `.pause()` method.)\n */\n start() {\n if (!this.#isPaused) {\n return this;\n }\n this.#isPaused = false;\n this.#processQueue();\n return this;\n }\n /**\n Put queue execution on hold.\n */\n pause() {\n this.#isPaused = true;\n }\n /**\n Clear the queue.\n */\n clear() {\n for (const cleanupQueueAbortHandler of this.#queueAbortListenerCleanupFunctions) {\n cleanupQueueAbortHandler();\n }\n this.#queue = new this.#queueClass();\n // Clear interval timer since queue is now empty (consistent with #tryToStartAnother)\n this.#clearIntervalTimer();\n // Note: We preserve strict mode rate-limiting state (ticks and timeout)\n // because clear() only clears queued tasks, not rate limit history.\n // This ensures that rate limits are still enforced after clearing the queue.\n // Note: We don't clear #runningTasks as those tasks are still running\n // They will be removed when they complete in the finally block\n // Force synchronous update since clear() should have immediate effect\n this.#updateRateLimitState();\n // Emit events so waiters (onEmpty, onIdle, onSizeLessThan) can resolve\n this.emit('empty');\n if (this.#pending === 0) {\n this.#clearTimeoutTimer();\n this.emit('idle');\n }\n this.emit('next');\n }\n /**\n Can be called multiple times. Useful if you for example add additional items at a later time.\n\n @returns A promise that settles when the queue becomes empty.\n */\n async onEmpty() {\n // Instantly resolve if the queue is empty\n if (this.#queue.size === 0) {\n return;\n }\n await this.#onEvent('empty');\n }\n /**\n @returns A promise that settles when the queue size is less than the given limit: `queue.size < limit`.\n\n If you want to avoid having the queue grow beyond a certain size you can `await queue.onSizeLessThan()` before adding a new item.\n\n Note that this only limits the number of items waiting to start. There could still be up to `concurrency` jobs already running that this call does not include in its calculation.\n */\n async onSizeLessThan(limit) {\n // Instantly resolve if the size is already below the limit.\n if (this.#queue.size < limit) {\n return;\n }\n // Listen on both `'next'` (task completion, queued abort, `clear()`) and `'active'` (every dequeue),\n // so waiters wake even when the queue drains without a completion (`start()`, a runtime `concurrency`\n // increase, or an interval tick).\n await this.#onEvent(['next', 'active'], () => this.#queue.size < limit);\n }\n /**\n The difference with `.onEmpty` is that `.onIdle` guarantees that all work from the queue has finished. `.onEmpty` merely signals that the queue is empty, but it could mean that some promises haven't completed yet.\n\n @returns A promise that settles when the queue becomes empty, and all promises have completed; `queue.size === 0 && queue.pending === 0`.\n */\n async onIdle() {\n // Instantly resolve if none pending and if nothing else is queued\n if (this.#pending === 0 && this.#queue.size === 0) {\n return;\n }\n await this.#onEvent('idle');\n }\n /**\n The difference with `.onIdle` is that `.onPendingZero` only waits for currently running tasks to finish, ignoring queued tasks.\n\n @returns A promise that settles when all currently running tasks have completed; `queue.pending === 0`.\n */\n async onPendingZero() {\n if (this.#pending === 0) {\n return;\n }\n await this.#onEvent('pendingZero');\n }\n /**\n @returns A promise that settles when the queue becomes rate-limited due to intervalCap.\n */\n async onRateLimit() {\n if (this.isRateLimited) {\n return;\n }\n await this.#onEvent('rateLimit');\n }\n /**\n @returns A promise that settles when the queue is no longer rate-limited.\n */\n async onRateLimitCleared() {\n if (!this.isRateLimited) {\n return;\n }\n await this.#onEvent('rateLimitCleared');\n }\n /**\n @returns A promise that rejects when any task in the queue errors.\n\n Use with `Promise.race([queue.onError(), queue.onIdle()])` to fail fast on the first error while still resolving normally when the queue goes idle.\n\n Important: The promise returned by `add()` still rejects. You must handle each `add()` promise (for example, `.catch(() => {})`) to avoid unhandled rejections.\n\n @example\n ```\n import PQueue from 'p-queue';\n\n const queue = new PQueue({concurrency: 2});\n\n queue.add(() => fetchData(1)).catch(() => {});\n queue.add(() => fetchData(2)).catch(() => {});\n queue.add(() => fetchData(3)).catch(() => {});\n\n // Stop processing on first error\n try {\n await Promise.race([\n queue.onError(),\n queue.onIdle()\n ]);\n } catch (error) {\n queue.pause(); // Stop processing remaining tasks\n console.error('Queue failed:', error);\n }\n ```\n */\n // eslint-disable-next-line @typescript-eslint/promise-function-async\n onError() {\n return new Promise((_resolve, reject) => {\n const handleError = (error) => {\n this.off('error', handleError);\n reject(error);\n };\n this.on('error', handleError);\n });\n }\n async #onEvent(events, filter) {\n const eventList = Array.isArray(events) ? events : [events];\n return new Promise(resolve => {\n const listener = () => {\n if (filter && !filter()) {\n return;\n }\n for (const event of eventList) {\n this.off(event, listener);\n }\n resolve();\n };\n for (const event of eventList) {\n this.on(event, listener);\n }\n });\n }\n /**\n Size of the queue, the number of queued items waiting to run.\n */\n get size() {\n return this.#queue.size;\n }\n /**\n Size of the queue, filtered by the given options.\n\n For example, this can be used to find the number of items remaining in the queue with a specific priority level.\n */\n sizeBy(options) {\n // eslint-disable-next-line unicorn/no-array-callback-reference\n return this.#queue.filter(options).length;\n }\n /**\n Number of running items (no longer in the queue).\n */\n get pending() {\n return this.#pending;\n }\n /**\n Whether the queue is currently paused.\n */\n get isPaused() {\n return this.#isPaused;\n }\n #setupRateLimitTracking() {\n // Only schedule updates when rate limiting is enabled\n if (this.#isIntervalIgnored) {\n return;\n }\n // Wire up to lifecycle events that affect rate limit state\n // Only 'add' and 'next' can actually change rate limit state\n this.on('add', () => {\n if (this.#queue.size > 0) {\n this.#scheduleRateLimitUpdate();\n }\n });\n this.on('next', () => {\n this.#scheduleRateLimitUpdate();\n });\n }\n #scheduleRateLimitUpdate() {\n // Skip if rate limiting is not enabled or already scheduled\n if (this.#isIntervalIgnored || this.#rateLimitFlushScheduled) {\n return;\n }\n this.#rateLimitFlushScheduled = true;\n queueMicrotask(() => {\n this.#rateLimitFlushScheduled = false;\n this.#updateRateLimitState();\n });\n }\n #rollbackIntervalConsumption() {\n if (this.#isIntervalIgnored) {\n return;\n }\n this.#rollbackIntervalSlot();\n this.#scheduleRateLimitUpdate();\n }\n #updateRateLimitState() {\n const previous = this.#rateLimitedInInterval;\n // Early exit if rate limiting is disabled or queue is empty\n if (this.#isIntervalIgnored || this.#queue.size === 0) {\n if (previous) {\n this.#rateLimitedInInterval = false;\n this.emit('rateLimitCleared');\n }\n return;\n }\n // Get the current count based on mode\n let count;\n if (this.#strict) {\n const now = Date.now();\n this.#cleanupStrictTicks(now);\n count = this.#getActiveTicksCount();\n }\n else {\n count = this.#intervalCount;\n }\n const shouldBeRateLimited = count >= this.#intervalCap;\n if (shouldBeRateLimited !== previous) {\n this.#rateLimitedInInterval = shouldBeRateLimited;\n this.emit(shouldBeRateLimited ? 'rateLimit' : 'rateLimitCleared');\n }\n }\n /**\n Whether the queue is currently rate-limited due to intervalCap.\n */\n get isRateLimited() {\n return this.#rateLimitedInInterval;\n }\n /**\n Whether the queue is saturated. Returns `true` when:\n - All concurrency slots are occupied and tasks are waiting, OR\n - The queue is rate-limited and tasks are waiting\n\n Useful for detecting backpressure and potential hanging tasks.\n\n ```js\n import PQueue from 'p-queue';\n\n const queue = new PQueue({concurrency: 2});\n\n // Backpressure handling\n if (queue.isSaturated) {\n console.log('Queue is saturated, waiting for capacity...');\n await queue.onSizeLessThan(queue.concurrency);\n }\n\n // Monitoring for stuck tasks\n setInterval(() => {\n if (queue.isSaturated) {\n console.warn(`Queue saturated: ${queue.pending} running, ${queue.size} waiting`);\n }\n }, 60000);\n ```\n */\n get isSaturated() {\n return (this.#pending === this.#concurrency && this.#queue.size > 0)\n || (this.isRateLimited && this.#queue.size > 0);\n }\n /**\n The tasks currently being executed. Each task includes its `id`, `priority`, `startTime`, `timeout` (if set), and `timeoutRemaining` (milliseconds until the task times out, or `undefined` if no timeout is set).\n\n Returns an array of task info objects.\n\n ```js\n import PQueue from 'p-queue';\n\n const queue = new PQueue({concurrency: 2, timeout: 10000});\n\n // Add tasks with IDs for better debugging\n queue.add(() => fetchUser(123), {id: 'user-123'});\n queue.add(() => fetchPosts(456), {id: 'posts-456', priority: 1});\n\n // Check what's running\n console.log(queue.runningTasks);\n // => [{\n // id: 'user-123',\n // priority: 0,\n // startTime: 1759253001716,\n // timeout: 10000,\n // timeoutRemaining: 9700\n // }, {\n // id: 'posts-456',\n // priority: 1,\n // startTime: 1759253001916,\n // timeout: 10000,\n // timeoutRemaining: 9900\n // }]\n ```\n */\n get runningTasks() {\n // Return fresh array with fresh objects to prevent mutations\n return [...this.#runningTasks.values()].map(task => ({\n ...task,\n timeoutRemaining: task.timeout ? Math.max(0, task.startTime + task.timeout - Date.now()) : undefined,\n }));\n }\n}\nexport { default as PriorityQueue } from './priority-queue.js';\n/**\nError thrown when a task times out.\n\n@example\n```\nimport PQueue, {TimeoutError} from 'p-queue';\n\nconst queue = new PQueue({timeout: 1000});\n\ntry {\n await queue.add(() => someTask());\n} catch (error) {\n if (error instanceof TimeoutError) {\n console.log('Task timed out');\n }\n}\n```\n*/\nexport { TimeoutError } from 'p-timeout';\n"],"file":"NcBreadcrumbs-B4eyDS9i-bX0dOZmj.chunk.mjs"} \ No newline at end of file diff --git a/dist/NcBreadcrumbs-B4eyDS9i-BkuFqTyn.chunk.mjs.map.license b/dist/NcBreadcrumbs-B4eyDS9i-bX0dOZmj.chunk.mjs.map.license similarity index 100% rename from dist/NcBreadcrumbs-B4eyDS9i-BkuFqTyn.chunk.mjs.map.license rename to dist/NcBreadcrumbs-B4eyDS9i-bX0dOZmj.chunk.mjs.map.license diff --git a/dist/NcContent-BYh5hWDN-BPQwUlVv.chunk.mjs b/dist/NcContent-BYh5hWDN-C1_miOvl.chunk.mjs similarity index 99% rename from dist/NcContent-BYh5hWDN-BPQwUlVv.chunk.mjs rename to dist/NcContent-BYh5hWDN-C1_miOvl.chunk.mjs index 695e215bd52c4..cdbc559eb7d3a 100644 --- a/dist/NcContent-BYh5hWDN-BPQwUlVv.chunk.mjs +++ b/dist/NcContent-BYh5hWDN-C1_miOvl.chunk.mjs @@ -1,4 +1,4 @@ -import{p as Ve,f as j}from"./index-Cp0kcsps.chunk.mjs";import{l as Ze,g as Be}from"./public-C1mLBHT3.chunk.mjs";import{c as Oe,i as Fe,d as ae}from"./NcModal-DiDvgcU8-7_SNLMd-.chunk.mjs";import{x as Ke,z as V,S as ne,U as le,o as y,c as q,C as We,V as N,ab as Xe,f as b,i as k,O as Ge,u as z,l as M,ac as je,v as D,D as W,ad as P,r as Q,t as X,h as R,F as qe,y as Z,L as ve,J as ee,K as te,g as G,k as H,w as L,b as me,A as Ue,j as ce,ae as Je}from"./Web-DYqXJUev.chunk.mjs";import{l as B,m as Ye,N as ie,g as Qe}from"./logger-D3RVzcfQ-Bt9JRPzn.chunk.mjs";import{r as ge,_ as se,N as fe,b as O,j as et,k as tt}from"./createElementId-DhjFt1I9-BmyhoOWk.chunk.mjs";const Ie="nextcloud-ui",$e="1.0.0",it={__name:"splitpanes",props:{horizontal:{type:Boolean,default:!1},pushOtherPanes:{type:Boolean,default:!0},maximizePanes:{type:Boolean,default:!0},rtl:{type:Boolean,default:!1},firstSplitter:{type:Boolean,default:!1}},emits:["ready","resize","resized","pane-click","pane-maximize","pane-add","pane-remove","splitter-click","splitter-dblclick"],setup(o,{emit:d}){const p=d,r=o,m=Ke(),l=M([]),S=D(()=>l.value.reduce((e,t)=>(e[~~t.id]=t)&&e,{})),x=D(()=>l.value.length),h=M(null),g=M(!1),v=M({mouseDown:!1,dragging:!1,activeSplitter:null,cursorOffset:0}),E=M({splitter:null,timeoutId:null}),T=D(()=>({[`splitpanes splitpanes--${r.horizontal?"horizontal":"vertical"}`]:!0,"splitpanes--dragging":v.value.dragging})),A=()=>{document.addEventListener("mousemove",c,{passive:!1}),document.addEventListener("mouseup",_),"ontouchstart"in window&&(document.addEventListener("touchmove",c,{passive:!1}),document.addEventListener("touchend",_))},I=()=>{document.removeEventListener("mousemove",c,{passive:!1}),document.removeEventListener("mouseup",_),"ontouchstart"in window&&(document.removeEventListener("touchmove",c,{passive:!1}),document.removeEventListener("touchend",_))},F=(e,t)=>{const n=e.target.closest(".splitpanes__splitter");if(n){const{left:i,top:a}=n.getBoundingClientRect(),{clientX:s,clientY:u}="ontouchstart"in window&&e.touches?e.touches[0]:e;v.value.cursorOffset=r.horizontal?u-a:s-i}A(),v.value.mouseDown=!0,v.value.activeSplitter=t},c=e=>{v.value.mouseDown&&(e.preventDefault(),v.value.dragging=!0,requestAnimationFrame(()=>{De(Ce(e)),w("resize",{event:e},!0)}))},_=e=>{v.value.dragging&&(window.getSelection().removeAllRanges(),w("resized",{event:e},!0)),v.value.mouseDown=!1,v.value.activeSplitter=null,setTimeout(()=>{v.value.dragging=!1,I()},100)},U=(e,t)=>{"ontouchstart"in window&&(e.preventDefault(),E.value.splitter===t?(clearTimeout(E.value.timeoutId),E.value.timeoutId=null,oe(e,t),E.value.splitter=null):(E.value.splitter=t,E.value.timeoutId=setTimeout(()=>E.value.splitter=null,500))),v.value.dragging||w("splitter-click",{event:e,index:t},!0)},oe=(e,t)=>{if(w("splitter-dblclick",{event:e,index:t},!0),r.maximizePanes){let n=0;l.value=l.value.map((i,a)=>(i.size=a===t?i.max:i.min,a!==t&&(n+=i.min),i)),l.value[t].size-=n,w("pane-maximize",{event:e,index:t,pane:l.value[t]}),w("resized",{event:e,index:t},!0)}},we=(e,t)=>{w("pane-click",{event:e,index:S.value[t].index,pane:S.value[t]})},Ce=e=>{const t=h.value.getBoundingClientRect(),{clientX:n,clientY:i}="ontouchstart"in window&&e.touches?e.touches[0]:e;return{x:n-(r.horizontal?0:v.value.cursorOffset)-t.left,y:i-(r.horizontal?v.value.cursorOffset:0)-t.top}},ye=e=>{e=e[r.horizontal?"y":"x"];const t=h.value[r.horizontal?"clientHeight":"clientWidth"];return r.rtl&&!r.horizontal&&(e=t-e),e*100/t},De=e=>{const t=v.value.activeSplitter;let n={prevPanesSize:re(t),nextPanesSize:$(t),prevReachedMinPanes:0,nextReachedMinPanes:0};const i=0+(r.pushOtherPanes?0:n.prevPanesSize),a=100-(r.pushOtherPanes?0:n.nextPanesSize),s=Math.max(Math.min(ye(e),a),i);let u=[t,t+1],f=l.value[u[0]]||null,C=l.value[u[1]]||null;const ue=f.max<100&&s>=f.max+n.prevPanesSize,Ae=C.max<100&&s<=100-(C.max+$(t+1));if(ue||Ae){ue?(f.size=f.max,C.size=Math.max(100-f.max-n.prevPanesSize-n.nextPanesSize,0)):(f.size=Math.max(100-C.max-n.prevPanesSize-$(t+1),0),C.size=C.max);return}if(r.pushOtherPanes){const de=Se(n,s);if(!de)return;({sums:n,panesToResize:u}=de),f=l.value[u[0]]||null,C=l.value[u[1]]||null}f!==null&&(f.size=Math.min(Math.max(s-n.prevPanesSize-n.prevReachedMinPanes,f.min),f.max)),C!==null&&(C.size=Math.min(Math.max(100-s-n.nextPanesSize-n.nextReachedMinPanes,C.min),C.max))},Se=(e,t)=>{const n=v.value.activeSplitter,i=[n,n+1];return t{s>i[0]&&s<=n&&(a.size=a.min,e.prevReachedMinPanes+=a.min)}),e.prevPanesSize=re(i[0]),i[0]===void 0)?(e.prevReachedMinPanes=0,l.value[0].size=l.value[0].min,l.value.forEach((a,s)=>{s>0&&s<=n&&(a.size=a.min,e.prevReachedMinPanes+=a.min)}),l.value[i[1]].size=100-e.prevReachedMinPanes-l.value[0].min-e.prevPanesSize-e.nextPanesSize,null):t>100-e.nextPanesSize-l.value[i[1]].min&&(i[1]=Pe(n).index,e.nextReachedMinPanes=0,i[1]>n+1&&l.value.forEach((a,s)=>{s>n&&s{s=n+1&&(a.size=a.min,e.nextReachedMinPanes+=a.min)}),l.value[i[0]].size=100-e.prevPanesSize-$(i[0]-1),null):{sums:e,panesToResize:i}},re=e=>l.value.reduce((t,n,i)=>t+(il.value.reduce((t,n,i)=>t+(i>e+1?n.size:0),0),Ee=e=>[...l.value].reverse().find(t=>t.indext.min)||{},Pe=e=>l.value.find(t=>t.index>e+1&&t.size>t.min)||{},Me=()=>{var e;const t=Array.from(((e=h.value)==null?void 0:e.children)||[]);for(const n of t){const i=n.classList.contains("splitpanes__pane"),a=n.classList.contains("splitpanes__splitter");!i&&!a&&(n.remove(),console.warn("Splitpanes: Only elements are allowed at the root of . One of your DOM nodes was removed."))}},pe=(e,t,n=!1)=>{const i=e-1,a=document.createElement("div");a.classList.add("splitpanes__splitter"),n||(a.onmousedown=s=>F(s,i),typeof window<"u"&&"ontouchstart"in window&&(a.ontouchstart=s=>F(s,i)),a.onclick=s=>U(s,i+1)),a.ondblclick=s=>oe(s,i+1),t.parentNode.insertBefore(a,t)},_e=e=>{e.onmousedown=void 0,e.onclick=void 0,e.ondblclick=void 0,e.remove()},K=()=>{var e;const t=Array.from(((e=h.value)==null?void 0:e.children)||[]);for(const i of t)i.className.includes("splitpanes__splitter")&&_e(i);let n=0;for(const i of t)i.className.includes("splitpanes__pane")&&(!n&&r.firstSplitter?pe(n,i,!0):n&&pe(n,i),n++)},Ne=({uid:e,...t})=>{const n=S.value[e];for(const[i,a]of Object.entries(t))n[i]=a},be=e=>{var t;let n=-1;Array.from(((t=h.value)==null?void 0:t.children)||[]).some(i=>(i.className.includes("splitpanes__pane")&&n++,i.isSameNode(e.el))),l.value.splice(n,0,{...e,index:n}),l.value.forEach((i,a)=>i.index=a),g.value&&W(()=>{K(),J({addedPane:l.value[n]}),w("pane-add",{pane:l.value[n]})})},ke=e=>{const t=l.value.findIndex(i=>i.id===e);l.value[t].el=null;const n=l.value.splice(t,1)[0];l.value.forEach((i,a)=>i.index=a),W(()=>{K(),w("pane-remove",{pane:n}),J({removedPane:{...n}})})},J=(e={})=>{!e.addedPane&&!e.removedPane?Re():l.value.some(t=>t.givenSize!==null||t.min||t.max<100)?Le(e):He(),g.value&&w("resized")},He=()=>{const e=100/x.value;let t=0;const n=[],i=[];for(const a of l.value)a.size=Math.max(Math.min(e,a.max),a.min),t-=a.size,a.size>=a.max&&n.push(a.id),a.size<=a.min&&i.push(a.id);t>.1&&Y(t,n,i)},Re=()=>{let e=100;const t=[],n=[];let i=0;for(const s of l.value)e-=s.size,s.givenSize!==null&&i++,s.size>=s.max&&t.push(s.id),s.size<=s.min&&n.push(s.id);let a=100;if(e>.1){for(const s of l.value)s.givenSize===null&&(s.size=Math.max(Math.min(e/(x.value-i),s.max),s.min)),a-=s.size;a>.1&&Y(a,t,n)}},Le=({addedPane:e,removedPane:t}={})=>{let n=100/x.value,i=0;const a=[],s=[];(e?.givenSize??null)!==null&&(n=(100-e.givenSize)/(x.value-1));for(const u of l.value)i-=u.size,u.size>=u.max&&a.push(u.id),u.size<=u.min&&s.push(u.id);if(!(Math.abs(i)<.1)){for(const u of l.value)e?.givenSize!==null&&e?.id===u.id||(u.size=Math.max(Math.min(n,u.max),u.min)),i-=u.size,u.size>=u.max&&a.push(u.id),u.size<=u.min&&s.push(u.id);i>.1&&Y(i,a,s)}},Y=(e,t,n)=>{let i;e>0?i=e/(x.value-t.length):i=e/(x.value-n.length),l.value.forEach((a,s)=>{if(e>0&&!t.includes(a.id)){const u=Math.max(Math.min(a.size+i,a.max),a.min),f=u-a.size;e-=f,a.size=u}else if(!n.includes(a.id)){const u=Math.max(Math.min(a.size+i,a.max),a.min),f=u-a.size;e-=f,a.size=u}}),Math.abs(e)>.1&&W(()=>{g.value&&console.warn("Splitpanes: Could not resize panes correctly due to their constraints.")})},w=(e,t=void 0,n=!1)=>{const i=t?.index??v.value.activeSplitter??null;p(e,{...t,...i!==null&&{index:i},...n&&i!==null&&{prevPane:l.value[i-(r.firstSplitter?1:0)],nextPane:l.value[i+(r.firstSplitter?0:1)]},panes:l.value.map(a=>({min:a.min,max:a.max,size:a.size}))})};V(()=>r.firstSplitter,()=>K()),ne(()=>{Me(),K(),J(),w("ready"),g.value=!0}),le(()=>g.value=!1);const Te=()=>{var e;return je("div",{ref:h,class:T.value},(e=m.default)==null?void 0:e.call(m))};return P("panes",l),P("indexedPanes",S),P("horizontal",D(()=>r.horizontal)),P("requestUpdate",Ne),P("onPaneAdd",be),P("onPaneRemove",ke),P("onPaneClick",we),(e,t)=>(y(),q(We(Te)))}},at={__name:"pane",props:{size:{type:[Number,String]},minSize:{type:[Number,String],default:0},maxSize:{type:[Number,String],default:100}},setup(o){var d;const p=o,r=N("requestUpdate"),m=N("onPaneAdd"),l=N("horizontal"),S=N("onPaneRemove"),x=N("onPaneClick"),h=(d=Xe())==null?void 0:d.uid,g=N("indexedPanes"),v=D(()=>g.value[h]),E=M(null),T=D(()=>{const c=isNaN(p.size)||p.size===void 0?0:parseFloat(p.size);return Math.max(Math.min(c,I.value),A.value)}),A=D(()=>{const c=parseFloat(p.minSize);return isNaN(c)?0:c}),I=D(()=>{const c=parseFloat(p.maxSize);return isNaN(c)?100:c}),F=D(()=>{var c;return`${l.value?"height":"width"}: ${(c=v.value)==null?void 0:c.size}%`});return V(()=>T.value,c=>r({uid:h,size:c})),V(()=>A.value,c=>r({uid:h,min:c})),V(()=>I.value,c=>r({uid:h,max:c})),ne(()=>{m({id:h,el:E.value,min:A.value,max:I.value,givenSize:p.size===void 0?null:T.value,size:T.value})}),le(()=>S(h)),(c,_)=>(y(),b("div",{ref_key:"paneEl",ref:E,class:"splitpanes__pane",onClick:_[0]||(_[0]=U=>z(x)(U,c._.uid)),style:Ge(F.value)},[k(c.$slots,"default")],4))}};function nt(o){let d=!1,p;return(...r)=>(d||(d=!0,p=o(...r)),p)}let xe="missing-app-name";try{xe=Ie}catch{B.error("The `@nextcloud/vue` library was used without setting / replacing the `appName`.")}const lt=xe;let st="";try{st=$e}catch{B.error("The `@nextcloud/vue` library was used without setting / replacing the `appVersion`.")}function ze(){return N("appName",lt)}const ot=nt(()=>{const o=Ze("core","apps",[]),d=ze();return o.find(({id:p})=>p===d)?.name??d});ge(et);const rt=me({__name:"NcAppContentDetailsToggle",setup(o){const d=ae();V(d,p),ne(()=>{p(d.value)}),le(()=>{d.value&&p(!1)});function p(r=!0){const m=document.querySelector(".app-navigation .app-navigation-toggle");m&&(m.style.display=r?"none":"",r===!0&&j("toggle-navigation",{open:!1}))}return(r,m)=>(y(),q(z(ie),{"aria-label":z(O)("Go back to the list"),class:Z(["app-details-toggle",{"app-details-toggle--mobile":z(d)}]),title:z(O)("Go back to the list"),variant:"tertiary"},{icon:L(()=>[H(z(fe),{directional:"",path:z(Ye)},null,8,["path"])]),_:1},8,["aria-label","class","title"]))}}),pt=se(rt,[["__scopeId","data-v-a28923a1"]]),he=Ve("nextcloud").persist().build(),ut=Be().theming?.name??"Nextcloud",dt={name:"NcAppContent",components:{NcAppContentDetailsToggle:pt,Pane:at,Splitpanes:it},props:{disableSwipe:{type:Boolean,default:!1},listSize:{type:Number,default:20},listMinWidth:{type:Number,default:15},listMaxWidth:{type:Number,default:40},paneConfigKey:{type:String,default:""},showDetails:{type:Boolean,default:!0},layout:{type:String,default:"vertical-split",validator(o){return["no-split","vertical-split","horizontal-split"].includes(o)}},pageHeading:{type:String,default:null},pageTitle:{type:String,default:null}},emits:["update:showDetails","resizeList"],setup(){return{appName:ze(),localizedAppName:ot(),isMobile:ae(),isRtl:Fe}},data(){return{contentHeight:0,swiping:{},listPaneSize:this.restorePaneConfig()}},computed:{paneConfigID(){if(this.paneConfigKey!=="")return`pane-list-size-${this.paneConfigKey}`;try{return`pane-list-size-${this.appName}`}catch{return B.info("[NcAppContent]: falling back to global nextcloud pane config"),"pane-list-size-nextcloud"}},detailsPaneSize(){return this.listPaneSize?100-this.listPaneSize:this.paneDefaults.details.size},paneDefaults(){return{list:{size:this.listSize,min:this.listMinWidth,max:this.listMaxWidth},details:{size:100-this.listSize,min:100-this.listMaxWidth,max:100-this.listMinWidth}}},realPageTitle(){const o=new Set;if(this.pageTitle)for(const d of this.pageTitle.split(" - "))o.add(d);else if(this.pageHeading){for(const d of this.pageHeading.split(" - "))o.add(d);o.size>0&&o.add(this.localizedAppName)}else return null;return o.add(ut),[...o.values()].join(" - ")}},watch:{realPageTitle:{immediate:!0,handler(){this.realPageTitle!==null&&(document.title=this.realPageTitle)}},paneConfigKey:{immediate:!0,handler(){this.restorePaneConfig()}}},mounted(){this.disableSwipe||(this.swiping=Oe(this.$el,{onSwipeEnd:this.handleSwipe})),this.restorePaneConfig()},methods:{handleSwipe(o,d){Math.abs(this.swiping.lengthX)>70&&(this.swiping.coordsStart.x<300/2&&d==="right"?j("toggle-navigation",{open:!0}):this.swiping.coordsStart.x<300*1.5&&d==="left"&&j("toggle-navigation",{open:!1}))},handlePaneResize(o){const d=parseInt(o.panes[0].size,10);he.setItem(this.paneConfigID,JSON.stringify(d)),this.listPaneSize=d,this.$emit("resizeList",{size:d}),B.debug("[NcAppContent] pane config",{listPaneSize:d})},restorePaneConfig(){const o=parseInt(he.getItem(this.paneConfigID),10);if(!isNaN(o)&&o!==this.listPaneSize)return B.debug("[NcAppContent] pane config",{listPaneSize:o}),this.listPaneSize=o,o},hideDetails(){this.$emit("update:showDetails",!1)}}},ct={key:0,class:"hidden-visually"},ht={class:"app-content-wrapper__list"},vt={key:1,class:"app-content-wrapper"};function mt(o,d,p,r,m,l){const S=Q("NcAppContentDetailsToggle"),x=Q("Pane"),h=Q("Splitpanes");return y(),b("main",{id:"app-content-vue",class:Z(["app-content no-snapper",{"app-content--has-list":!!o.$slots.list}])},[p.pageHeading?(y(),b("h1",ct,X(p.pageHeading),1)):R("",!0),o.$slots.list?(y(),b(qe,{key:1},[r.isMobile||p.layout==="no-split"?(y(),b("div",{key:0,class:Z(["app-content-wrapper app-content-wrapper--no-split",{"app-content-wrapper--show-details":p.showDetails,"app-content-wrapper--show-list":!p.showDetails,"app-content-wrapper--mobile":r.isMobile}])},[p.showDetails?(y(),q(S,{key:0,onClick:ve(l.hideDetails,["stop","prevent"])},null,8,["onClick"])):R("",!0),ee(G("div",ht,[k(o.$slots,"list",{},void 0,!0)],512),[[te,!p.showDetails]]),p.showDetails?k(o.$slots,"default",{key:1},void 0,!0):R("",!0)],2)):p.layout==="vertical-split"||p.layout==="horizontal-split"?(y(),b("div",vt,[H(h,{horizontal:p.layout==="horizontal-split",class:Z(["default-theme",{"splitpanes--horizontal":p.layout==="horizontal-split","splitpanes--vertical":p.layout==="vertical-split"}]),rtl:r.isRtl,onResized:l.handlePaneResize},{default:L(()=>[H(x,{class:"splitpanes__pane-list",size:m.listPaneSize||l.paneDefaults.list.size,minSize:l.paneDefaults.list.min,maxSize:l.paneDefaults.list.max},{default:L(()=>[k(o.$slots,"list",{},void 0,!0)]),_:3},8,["size","minSize","maxSize"]),H(x,{class:"splitpanes__pane-details",size:l.detailsPaneSize,minSize:l.paneDefaults.details.min,maxSize:l.paneDefaults.details.max},{default:L(()=>[k(o.$slots,"default",{},void 0,!0)]),_:3},8,["size","minSize","maxSize"])]),_:3},8,["horizontal","class","rtl","onResized"])])):R("",!0)],64)):R("",!0),o.$slots.list?R("",!0):k(o.$slots,"default",{key:2},void 0,!0)],2)}const bt=se(dt,[["render",mt],["__scopeId","data-v-51427d61"]]),gt=Symbol.for("NcContent:setHasAppNavigation"),ft=Symbol.for("NcContent:selector");ge(tt);const xt=` @@ -51,4 +51,4 @@ import{p as Ve,f as j}from"./index-Cp0kcsps.chunk.mjs";import{l as Ze,g as Be}fr `,wt={class:"vue-skip-actions__container"},Ct={class:"vue-skip-actions__headline"},yt={class:"vue-skip-actions__buttons"},Dt=me({__name:"NcContent",props:{appName:{}},setup(o){const d=o;P(gt,x),P(ft,"#content-vue"),P("appName",D(()=>d.appName));const p=ae(),r=M(!1),m=M(),l=D(()=>m.value==="navigation"?zt:xt);Ue(()=>{const h=document.getElementById("skip-actions");h&&(h.innerHTML="",h.classList.add("vue-skip-actions"))});function S(){j("toggle-navigation",{open:!0}),W(()=>{window.location.hash="app-navigation-vue",document.getElementById("app-navigation-vue").focus()})}function x(h){r.value=h,m.value||(m.value="navigation")}return(h,g)=>(y(),b("div",{id:"content-vue",class:Z(["content",[`app-${o.appName.toLowerCase()}`,{"content--legacy":z(Qe)}]])},[(y(),q(Je,{to:"#skip-actions"},[G("div",wt,[G("div",Ct,X(z(O)("Keyboard navigation help")),1),G("div",yt,[ee(H(ie,{href:"#app-navigation-vue",variant:"tertiary",onClick:ve(S,["prevent"]),onFocusin:g[0]||(g[0]=v=>m.value="navigation"),onMouseover:g[1]||(g[1]=v=>m.value="navigation")},{default:L(()=>[ce(X(z(O)("Skip to app navigation")),1)]),_:1},512),[[te,r.value]]),H(ie,{href:"#app-content-vue",variant:"tertiary",onFocusin:g[2]||(g[2]=v=>m.value="content"),onMouseover:g[3]||(g[3]=v=>m.value="content")},{default:L(()=>[ce(X(z(O)("Skip to main content")),1)]),_:1})]),ee(H(fe,{class:"vue-skip-actions__image",svg:l.value,size:"auto"},null,8,["svg"]),[[te,!z(p)]])])])),k(h.$slots,"default",{},void 0,!0)],2))}}),kt=se(Dt,[["__scopeId","data-v-d13dcb98"]]);export{ft as C,gt as H,bt as N,kt as a}; -//# sourceMappingURL=NcContent-BYh5hWDN-BPQwUlVv.chunk.mjs.map +//# sourceMappingURL=NcContent-BYh5hWDN-C1_miOvl.chunk.mjs.map diff --git a/dist/NcContent-BYh5hWDN-BPQwUlVv.chunk.mjs.license b/dist/NcContent-BYh5hWDN-C1_miOvl.chunk.mjs.license similarity index 100% rename from dist/NcContent-BYh5hWDN-BPQwUlVv.chunk.mjs.license rename to dist/NcContent-BYh5hWDN-C1_miOvl.chunk.mjs.license diff --git a/dist/NcContent-BYh5hWDN-BPQwUlVv.chunk.mjs.map b/dist/NcContent-BYh5hWDN-C1_miOvl.chunk.mjs.map similarity index 99% rename from dist/NcContent-BYh5hWDN-BPQwUlVv.chunk.mjs.map rename to dist/NcContent-BYh5hWDN-C1_miOvl.chunk.mjs.map index efe0dd3b4b794..714eaa5198f62 100644 --- a/dist/NcContent-BYh5hWDN-BPQwUlVv.chunk.mjs.map +++ b/dist/NcContent-BYh5hWDN-C1_miOvl.chunk.mjs.map @@ -1 +1 @@ -{"version":3,"file":"NcContent-BYh5hWDN-BPQwUlVv.chunk.mjs","sources":["../node_modules/splitpanes/dist/splitpanes.es.js","../node_modules/@nextcloud/vue/dist/chunks/appName-DyNMVZpX.mjs","../node_modules/@nextcloud/vue/dist/chunks/NcAppContent-DavgjaFX.mjs","../node_modules/@nextcloud/vue/dist/chunks/constants-Ciwvl5xb.mjs","../node_modules/@nextcloud/vue/dist/chunks/NcContent-BYh5hWDN.mjs"],"sourcesContent":["import { useSlots as ce, ref as k, computed as z, watch as B, onMounted as G, onBeforeUnmount as X, provide as g, createBlock as ve, openBlock as Y, resolveDynamicComponent as me, nextTick as T, h as fe, inject as w, getCurrentInstance as de, createElementBlock as pe, normalizeStyle as ze, unref as he, renderSlot as xe } from \"vue\";\nconst Pe = {\n __name: \"splitpanes\",\n props: {\n horizontal: { type: Boolean, default: !1 },\n pushOtherPanes: { type: Boolean, default: !0 },\n maximizePanes: { type: Boolean, default: !0 },\n // Maximize pane on splitter double click/tap.\n rtl: { type: Boolean, default: !1 },\n // Right to left direction.\n firstSplitter: { type: Boolean, default: !1 }\n },\n emits: [\n \"ready\",\n \"resize\",\n \"resized\",\n \"pane-click\",\n \"pane-maximize\",\n \"pane-add\",\n \"pane-remove\",\n \"splitter-click\",\n \"splitter-dblclick\"\n ],\n setup(D, { emit: h }) {\n const y = h, u = D, E = ce(), l = k([]), M = z(() => l.value.reduce((e, n) => (e[~~n.id] = n) && e, {})), m = z(() => l.value.length), x = k(null), S = k(!1), c = k({\n mouseDown: !1,\n dragging: !1,\n activeSplitter: null,\n cursorOffset: 0\n // Cursor offset within the splitter.\n }), f = k({\n // Used to detect double click on touch devices.\n splitter: null,\n timeoutId: null\n }), _ = z(() => ({\n [`splitpanes splitpanes--${u.horizontal ? \"horizontal\" : \"vertical\"}`]: !0,\n \"splitpanes--dragging\": c.value.dragging\n })), R = () => {\n document.addEventListener(\"mousemove\", r, { passive: !1 }), document.addEventListener(\"mouseup\", P), \"ontouchstart\" in window && (document.addEventListener(\"touchmove\", r, { passive: !1 }), document.addEventListener(\"touchend\", P));\n }, O = () => {\n document.removeEventListener(\"mousemove\", r, { passive: !1 }), document.removeEventListener(\"mouseup\", P), \"ontouchstart\" in window && (document.removeEventListener(\"touchmove\", r, { passive: !1 }), document.removeEventListener(\"touchend\", P));\n }, b = (e, n) => {\n const t = e.target.closest(\".splitpanes__splitter\");\n if (t) {\n const { left: i, top: a } = t.getBoundingClientRect(), { clientX: s, clientY: o } = \"ontouchstart\" in window && e.touches ? e.touches[0] : e;\n c.value.cursorOffset = u.horizontal ? o - a : s - i;\n }\n R(), c.value.mouseDown = !0, c.value.activeSplitter = n;\n }, r = (e) => {\n c.value.mouseDown && (e.preventDefault(), c.value.dragging = !0, requestAnimationFrame(() => {\n K(I(e)), d(\"resize\", { event: e }, !0);\n }));\n }, P = (e) => {\n c.value.dragging && (window.getSelection().removeAllRanges(), d(\"resized\", { event: e }, !0)), c.value.mouseDown = !1, c.value.activeSplitter = null, setTimeout(() => {\n c.value.dragging = !1, O();\n }, 100);\n }, A = (e, n) => {\n \"ontouchstart\" in window && (e.preventDefault(), f.value.splitter === n ? (clearTimeout(f.value.timeoutId), f.value.timeoutId = null, U(e, n), f.value.splitter = null) : (f.value.splitter = n, f.value.timeoutId = setTimeout(() => f.value.splitter = null, 500))), c.value.dragging || d(\"splitter-click\", { event: e, index: n }, !0);\n }, U = (e, n) => {\n if (d(\"splitter-dblclick\", { event: e, index: n }, !0), u.maximizePanes) {\n let t = 0;\n l.value = l.value.map((i, a) => (i.size = a === n ? i.max : i.min, a !== n && (t += i.min), i)), l.value[n].size -= t, d(\"pane-maximize\", { event: e, index: n, pane: l.value[n] }), d(\"resized\", { event: e, index: n }, !0);\n }\n }, W = (e, n) => {\n d(\"pane-click\", {\n event: e,\n index: M.value[n].index,\n pane: M.value[n]\n });\n }, I = (e) => {\n const n = x.value.getBoundingClientRect(), { clientX: t, clientY: i } = \"ontouchstart\" in window && e.touches ? e.touches[0] : e;\n return {\n x: t - (u.horizontal ? 0 : c.value.cursorOffset) - n.left,\n y: i - (u.horizontal ? c.value.cursorOffset : 0) - n.top\n };\n }, J = (e) => {\n e = e[u.horizontal ? \"y\" : \"x\"];\n const n = x.value[u.horizontal ? \"clientHeight\" : \"clientWidth\"];\n return u.rtl && !u.horizontal && (e = n - e), e * 100 / n;\n }, K = (e) => {\n const n = c.value.activeSplitter;\n let t = {\n prevPanesSize: $(n),\n nextPanesSize: N(n),\n prevReachedMinPanes: 0,\n nextReachedMinPanes: 0\n };\n const i = 0 + (u.pushOtherPanes ? 0 : t.prevPanesSize), a = 100 - (u.pushOtherPanes ? 0 : t.nextPanesSize), s = Math.max(Math.min(J(e), a), i);\n let o = [n, n + 1], v = l.value[o[0]] || null, p = l.value[o[1]] || null;\n const H = v.max < 100 && s >= v.max + t.prevPanesSize, ue = p.max < 100 && s <= 100 - (p.max + N(n + 1));\n if (H || ue) {\n H ? (v.size = v.max, p.size = Math.max(100 - v.max - t.prevPanesSize - t.nextPanesSize, 0)) : (v.size = Math.max(100 - p.max - t.prevPanesSize - N(n + 1), 0), p.size = p.max);\n return;\n }\n if (u.pushOtherPanes) {\n const j = Q(t, s);\n if (!j) return;\n ({ sums: t, panesToResize: o } = j), v = l.value[o[0]] || null, p = l.value[o[1]] || null;\n }\n v !== null && (v.size = Math.min(Math.max(s - t.prevPanesSize - t.prevReachedMinPanes, v.min), v.max)), p !== null && (p.size = Math.min(Math.max(100 - s - t.nextPanesSize - t.nextReachedMinPanes, p.min), p.max));\n }, Q = (e, n) => {\n const t = c.value.activeSplitter, i = [t, t + 1];\n return n < e.prevPanesSize + l.value[i[0]].min && (i[0] = V(t).index, e.prevReachedMinPanes = 0, i[0] < t && l.value.forEach((a, s) => {\n s > i[0] && s <= t && (a.size = a.min, e.prevReachedMinPanes += a.min);\n }), e.prevPanesSize = $(i[0]), i[0] === void 0) ? (e.prevReachedMinPanes = 0, l.value[0].size = l.value[0].min, l.value.forEach((a, s) => {\n s > 0 && s <= t && (a.size = a.min, e.prevReachedMinPanes += a.min);\n }), l.value[i[1]].size = 100 - e.prevReachedMinPanes - l.value[0].min - e.prevPanesSize - e.nextPanesSize, null) : n > 100 - e.nextPanesSize - l.value[i[1]].min && (i[1] = Z(t).index, e.nextReachedMinPanes = 0, i[1] > t + 1 && l.value.forEach((a, s) => {\n s > t && s < i[1] && (a.size = a.min, e.nextReachedMinPanes += a.min);\n }), e.nextPanesSize = N(i[1] - 1), i[1] === void 0) ? (e.nextReachedMinPanes = 0, l.value.forEach((a, s) => {\n s < m.value - 1 && s >= t + 1 && (a.size = a.min, e.nextReachedMinPanes += a.min);\n }), l.value[i[0]].size = 100 - e.prevPanesSize - N(i[0] - 1), null) : { sums: e, panesToResize: i };\n }, $ = (e) => l.value.reduce((n, t, i) => n + (i < e ? t.size : 0), 0), N = (e) => l.value.reduce((n, t, i) => n + (i > e + 1 ? t.size : 0), 0), V = (e) => [...l.value].reverse().find((t) => t.index < e && t.size > t.min) || {}, Z = (e) => l.value.find((t) => t.index > e + 1 && t.size > t.min) || {}, ee = () => {\n var n;\n const e = Array.from(((n = x.value) == null ? void 0 : n.children) || []);\n for (const t of e) {\n const i = t.classList.contains(\"splitpanes__pane\"), a = t.classList.contains(\"splitpanes__splitter\");\n !i && !a && (t.remove(), console.warn(\"Splitpanes: Only elements are allowed at the root of . One of your DOM nodes was removed.\"));\n }\n }, F = (e, n, t = !1) => {\n const i = e - 1, a = document.createElement(\"div\");\n a.classList.add(\"splitpanes__splitter\"), t || (a.onmousedown = (s) => b(s, i), typeof window < \"u\" && \"ontouchstart\" in window && (a.ontouchstart = (s) => b(s, i)), a.onclick = (s) => A(s, i + 1)), a.ondblclick = (s) => U(s, i + 1), n.parentNode.insertBefore(a, n);\n }, ne = (e) => {\n e.onmousedown = void 0, e.onclick = void 0, e.ondblclick = void 0, e.remove();\n }, C = () => {\n var t;\n const e = Array.from(((t = x.value) == null ? void 0 : t.children) || []);\n for (const i of e)\n i.className.includes(\"splitpanes__splitter\") && ne(i);\n let n = 0;\n for (const i of e)\n i.className.includes(\"splitpanes__pane\") && (!n && u.firstSplitter ? F(n, i, !0) : n && F(n, i), n++);\n }, ie = ({ uid: e, ...n }) => {\n const t = M.value[e];\n for (const [i, a] of Object.entries(n)) t[i] = a;\n }, te = (e) => {\n var t;\n let n = -1;\n Array.from(((t = x.value) == null ? void 0 : t.children) || []).some((i) => (i.className.includes(\"splitpanes__pane\") && n++, i.isSameNode(e.el))), l.value.splice(n, 0, { ...e, index: n }), l.value.forEach((i, a) => i.index = a), S.value && T(() => {\n C(), L({ addedPane: l.value[n] }), d(\"pane-add\", { pane: l.value[n] });\n });\n }, ae = (e) => {\n const n = l.value.findIndex((i) => i.id === e);\n l.value[n].el = null;\n const t = l.value.splice(n, 1)[0];\n l.value.forEach((i, a) => i.index = a), T(() => {\n C(), d(\"pane-remove\", { pane: t }), L({ removedPane: { ...t } });\n });\n }, L = (e = {}) => {\n !e.addedPane && !e.removedPane ? le() : l.value.some((n) => n.givenSize !== null || n.min || n.max < 100) ? oe(e) : se(), S.value && d(\"resized\");\n }, se = () => {\n const e = 100 / m.value;\n let n = 0;\n const t = [], i = [];\n for (const a of l.value)\n a.size = Math.max(Math.min(e, a.max), a.min), n -= a.size, a.size >= a.max && t.push(a.id), a.size <= a.min && i.push(a.id);\n n > 0.1 && q(n, t, i);\n }, le = () => {\n let e = 100;\n const n = [], t = [];\n let i = 0;\n for (const s of l.value)\n e -= s.size, s.givenSize !== null && i++, s.size >= s.max && n.push(s.id), s.size <= s.min && t.push(s.id);\n let a = 100;\n if (e > 0.1) {\n for (const s of l.value)\n s.givenSize === null && (s.size = Math.max(Math.min(e / (m.value - i), s.max), s.min)), a -= s.size;\n a > 0.1 && q(a, n, t);\n }\n }, oe = ({ addedPane: e, removedPane: n } = {}) => {\n let t = 100 / m.value, i = 0;\n const a = [], s = [];\n ((e == null ? void 0 : e.givenSize) ?? null) !== null && (t = (100 - e.givenSize) / (m.value - 1));\n for (const o of l.value)\n i -= o.size, o.size >= o.max && a.push(o.id), o.size <= o.min && s.push(o.id);\n if (!(Math.abs(i) < 0.1)) {\n for (const o of l.value)\n (e == null ? void 0 : e.givenSize) !== null && (e == null ? void 0 : e.id) === o.id || (o.size = Math.max(Math.min(t, o.max), o.min)), i -= o.size, o.size >= o.max && a.push(o.id), o.size <= o.min && s.push(o.id);\n i > 0.1 && q(i, a, s);\n }\n }, q = (e, n, t) => {\n let i;\n e > 0 ? i = e / (m.value - n.length) : i = e / (m.value - t.length), l.value.forEach((a, s) => {\n if (e > 0 && !n.includes(a.id)) {\n const o = Math.max(Math.min(a.size + i, a.max), a.min), v = o - a.size;\n e -= v, a.size = o;\n } else if (!t.includes(a.id)) {\n const o = Math.max(Math.min(a.size + i, a.max), a.min), v = o - a.size;\n e -= v, a.size = o;\n }\n }), Math.abs(e) > 0.1 && T(() => {\n S.value && console.warn(\"Splitpanes: Could not resize panes correctly due to their constraints.\");\n });\n }, d = (e, n = void 0, t = !1) => {\n const i = (n == null ? void 0 : n.index) ?? c.value.activeSplitter ?? null;\n y(e, {\n ...n,\n ...i !== null && { index: i },\n ...t && i !== null && {\n prevPane: l.value[i - (u.firstSplitter ? 1 : 0)],\n nextPane: l.value[i + (u.firstSplitter ? 0 : 1)]\n },\n panes: l.value.map((a) => ({ min: a.min, max: a.max, size: a.size }))\n });\n };\n B(() => u.firstSplitter, () => C()), G(() => {\n ee(), C(), L(), d(\"ready\"), S.value = !0;\n }), X(() => S.value = !1);\n const re = () => {\n var e;\n return fe(\n \"div\",\n { ref: x, class: _.value },\n (e = E.default) == null ? void 0 : e.call(E)\n );\n };\n return g(\"panes\", l), g(\"indexedPanes\", M), g(\"horizontal\", z(() => u.horizontal)), g(\"requestUpdate\", ie), g(\"onPaneAdd\", te), g(\"onPaneRemove\", ae), g(\"onPaneClick\", W), (e, n) => (Y(), ve(me(re)));\n }\n}, ge = {\n __name: \"pane\",\n props: {\n size: { type: [Number, String] },\n minSize: { type: [Number, String], default: 0 },\n maxSize: { type: [Number, String], default: 100 }\n },\n setup(D) {\n var b;\n const h = D, y = w(\"requestUpdate\"), u = w(\"onPaneAdd\"), E = w(\"horizontal\"), l = w(\"onPaneRemove\"), M = w(\"onPaneClick\"), m = (b = de()) == null ? void 0 : b.uid, x = w(\"indexedPanes\"), S = z(() => x.value[m]), c = k(null), f = z(() => {\n const r = isNaN(h.size) || h.size === void 0 ? 0 : parseFloat(h.size);\n return Math.max(Math.min(r, R.value), _.value);\n }), _ = z(() => {\n const r = parseFloat(h.minSize);\n return isNaN(r) ? 0 : r;\n }), R = z(() => {\n const r = parseFloat(h.maxSize);\n return isNaN(r) ? 100 : r;\n }), O = z(() => {\n var r;\n return `${E.value ? \"height\" : \"width\"}: ${(r = S.value) == null ? void 0 : r.size}%`;\n });\n return B(() => f.value, (r) => y({ uid: m, size: r })), B(() => _.value, (r) => y({ uid: m, min: r })), B(() => R.value, (r) => y({ uid: m, max: r })), G(() => {\n u({\n id: m,\n el: c.value,\n min: _.value,\n max: R.value,\n // The given size (useful to know the user intention).\n givenSize: h.size === void 0 ? null : f.value,\n size: f.value\n // The computed current size at any time.\n });\n }), X(() => l(m)), (r, P) => (Y(), pe(\"div\", {\n ref_key: \"paneEl\",\n ref: c,\n class: \"splitpanes__pane\",\n onClick: P[0] || (P[0] = (A) => he(M)(A, r._.uid)),\n style: ze(O.value)\n }, [\n xe(r.$slots, \"default\")\n ], 4));\n }\n};\nexport {\n ge as Pane,\n Pe as Splitpanes\n};\n","import { loadState } from \"@nextcloud/initial-state\";\nimport { inject } from \"vue\";\nimport { l as logger } from \"./logger-D3RVzcfQ.mjs\";\n/*!\n * SPDX-FileCopyrightText: 2025 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\nfunction once(func) {\n let wasCalled = false;\n let result;\n return (...args) => {\n if (!wasCalled) {\n wasCalled = true;\n result = func(...args);\n }\n return result;\n };\n}\nlet realAppName = \"missing-app-name\";\ntry {\n realAppName = appName;\n} catch {\n logger.error(\"The `@nextcloud/vue` library was used without setting / replacing the `appName`.\");\n}\nconst APP_NAME = realAppName;\nlet realAppVersion = \"\";\ntry {\n realAppVersion = appVersion;\n} catch {\n logger.error(\"The `@nextcloud/vue` library was used without setting / replacing the `appVersion`.\");\n}\nconst APP_VERSION = realAppVersion;\nfunction useAppName() {\n return inject(\"appName\", APP_NAME);\n}\nconst useLocalizedAppName = once(() => {\n const apps = loadState(\"core\", \"apps\", []);\n const realAppName2 = useAppName();\n return apps.find(({ id }) => id === realAppName2)?.name ?? realAppName2;\n});\nexport {\n APP_VERSION as A,\n useAppName as a,\n useLocalizedAppName as u\n};\n//# sourceMappingURL=appName-DyNMVZpX.mjs.map\n","import '../assets/NcAppContent-TgcZd4AI.css';\nimport { getBuilder } from \"@nextcloud/browser-storage\";\nimport { getCapabilities } from \"@nextcloud/capabilities\";\nimport { emit } from \"@nextcloud/event-bus\";\nimport { useSwipe } from \"@vueuse/core\";\nimport { Splitpanes, Pane } from \"splitpanes\";\nimport { defineComponent, watch, onMounted, onBeforeUnmount, openBlock, createBlock, unref, normalizeClass, withCtx, createVNode, resolveComponent, createElementBlock, toDisplayString, createCommentVNode, Fragment, withModifiers, withDirectives, createElementVNode, renderSlot, vShow } from \"vue\";\nimport { m as mdiArrowRight } from \"./mdi-CpchYUUV.mjs\";\nimport { useIsMobile } from \"../composables/useIsMobile/index.mjs\";\nimport { r as register, G as t27, a as t } from \"./_l10n-wdIzZwir.mjs\";\nimport { N as NcButton } from \"./NcButton-jvoYS2my.mjs\";\nimport { N as NcIconSvgWrapper } from \"./NcIconSvgWrapper-g8ubWhoz.mjs\";\nimport { _ as _export_sfc } from \"./_plugin-vue_export-helper-1tPrXgE0.mjs\";\nimport { u as useLocalizedAppName, a as useAppName } from \"./appName-DyNMVZpX.mjs\";\nimport { l as logger } from \"./logger-D3RVzcfQ.mjs\";\nimport { i as isRtl } from \"./rtl-v0UOPAM7.mjs\";\nimport \"splitpanes/dist/splitpanes.css\";\nregister(t27);\nconst _sfc_main$1 = /* @__PURE__ */ defineComponent({\n __name: \"NcAppContentDetailsToggle\",\n setup(__props) {\n const isMobile = useIsMobile();\n watch(isMobile, toggleAppNavigationButton);\n onMounted(() => {\n toggleAppNavigationButton(isMobile.value);\n });\n onBeforeUnmount(() => {\n if (isMobile.value) {\n toggleAppNavigationButton(false);\n }\n });\n function toggleAppNavigationButton(hide = true) {\n const appNavigationToggle = document.querySelector(\".app-navigation .app-navigation-toggle\");\n if (appNavigationToggle) {\n appNavigationToggle.style.display = hide ? \"none\" : \"\";\n if (hide === true) {\n emit(\"toggle-navigation\", { open: false });\n }\n }\n }\n return (_ctx, _cache) => {\n return openBlock(), createBlock(unref(NcButton), {\n \"aria-label\": unref(t)(\"Go back to the list\"),\n class: normalizeClass([\"app-details-toggle\", { \"app-details-toggle--mobile\": unref(isMobile) }]),\n title: unref(t)(\"Go back to the list\"),\n variant: \"tertiary\"\n }, {\n icon: withCtx(() => [\n createVNode(unref(NcIconSvgWrapper), {\n directional: \"\",\n path: unref(mdiArrowRight)\n }, null, 8, [\"path\"])\n ]),\n _: 1\n }, 8, [\"aria-label\", \"class\", \"title\"]);\n };\n }\n});\nconst NcAppContentDetailsToggle = /* @__PURE__ */ _export_sfc(_sfc_main$1, [[\"__scopeId\", \"data-v-a28923a1\"]]);\nconst browserStorage = getBuilder(\"nextcloud\").persist().build();\nconst instanceName = getCapabilities().theming?.name ?? \"Nextcloud\";\nconst _sfc_main = {\n name: \"NcAppContent\",\n components: {\n NcAppContentDetailsToggle,\n Pane,\n Splitpanes\n },\n props: {\n /**\n * Allows to disable the control by swipe of the app navigation open state.\n */\n disableSwipe: {\n type: Boolean,\n default: false\n },\n /**\n * Allows you to set the default width of the resizable list in % on vertical-split\n * or respectively the default height on horizontal-split.\n *\n * Must be between `listMinWidth` and `listMaxWidth`.\n */\n listSize: {\n type: Number,\n default: 20\n },\n /**\n * Allows you to set the minimum width of the list column in % on vertical-split\n * or respectively the minimum height on horizontal-split.\n */\n listMinWidth: {\n type: Number,\n default: 15\n },\n /**\n * Allows you to set the maximum width of the list column in % on vertical-split\n * or respectively the maximum height on horizontal-split.\n */\n listMaxWidth: {\n type: Number,\n default: 40\n },\n /**\n * Specify the config key for the pane config sizes\n * Default is the global var appName if you use the webpack-vue-config\n */\n paneConfigKey: {\n type: String,\n default: \"\"\n },\n /**\n * When in mobile view, only the list or the details are shown.\n *\n * If you provide a list, you need to provide a variable\n * that will be set to true by the user when an element of\n * the list gets selected. The details will then show a back\n * arrow to return to the list that will update this prop to false.\n */\n showDetails: {\n type: Boolean,\n default: true\n },\n /**\n * Content layout used when there is a list together with content:\n * - `vertical-split` - a 2-column layout with list and default content separated vertically\n * - `no-split` - a single column layout; List is shown when `showDetails` is `false`, otherwise the default slot content is shown with a back button to return to the list.\n * - 'horizontal-split' - a 2-column layout with list and default content separated horizontally\n * On mobile screen `no-split` layout is forced.\n */\n layout: {\n type: String,\n default: \"vertical-split\",\n validator(value) {\n return [\"no-split\", \"vertical-split\", \"horizontal-split\"].includes(value);\n }\n },\n /**\n * Specify the `

` page heading\n */\n pageHeading: {\n type: String,\n default: null\n },\n /**\n * Allow setting the page's ``\n *\n * If a page heading is set it defaults to `{pageHeading} - {appName} - {instanceName}` e.g. `Favorites - Files - MyPersonalCloud`.\n * When the page heading and the app name is the same only one is used, e.g. `Files - Files - MyPersonalCloud` is shown as `Files - MyPersonalCloud`.\n * When setting the prop then the following format will be used: `{pageTitle} - {instanceName}`\n */\n pageTitle: {\n type: String,\n default: null\n }\n },\n emits: [\n \"update:showDetails\",\n \"resizeList\"\n ],\n setup() {\n return {\n appName: useAppName(),\n localizedAppName: useLocalizedAppName(),\n isMobile: useIsMobile(),\n isRtl\n };\n },\n data() {\n return {\n contentHeight: 0,\n swiping: {},\n listPaneSize: this.restorePaneConfig()\n };\n },\n computed: {\n paneConfigID() {\n if (this.paneConfigKey !== \"\") {\n return `pane-list-size-${this.paneConfigKey}`;\n }\n try {\n return `pane-list-size-${this.appName}`;\n } catch {\n logger.info(\"[NcAppContent]: falling back to global nextcloud pane config\");\n return \"pane-list-size-nextcloud\";\n }\n },\n detailsPaneSize() {\n if (this.listPaneSize) {\n return 100 - this.listPaneSize;\n }\n return this.paneDefaults.details.size;\n },\n paneDefaults() {\n return {\n list: {\n size: this.listSize,\n min: this.listMinWidth,\n max: this.listMaxWidth\n },\n // set the inverse values of the details column\n // based on the provided (or default) values of the list column\n details: {\n size: 100 - this.listSize,\n min: 100 - this.listMaxWidth,\n max: 100 - this.listMinWidth\n }\n };\n },\n realPageTitle() {\n const entries = /* @__PURE__ */ new Set();\n if (this.pageTitle) {\n for (const part of this.pageTitle.split(\" - \")) {\n entries.add(part);\n }\n } else if (this.pageHeading) {\n for (const part of this.pageHeading.split(\" - \")) {\n entries.add(part);\n }\n if (entries.size > 0) {\n entries.add(this.localizedAppName);\n }\n } else {\n return null;\n }\n entries.add(instanceName);\n return [...entries.values()].join(\" - \");\n }\n },\n watch: {\n realPageTitle: {\n immediate: true,\n handler() {\n if (this.realPageTitle !== null) {\n document.title = this.realPageTitle;\n }\n }\n },\n paneConfigKey: {\n immediate: true,\n handler() {\n this.restorePaneConfig();\n }\n }\n },\n mounted() {\n if (!this.disableSwipe) {\n this.swiping = useSwipe(this.$el, {\n onSwipeEnd: this.handleSwipe\n });\n }\n this.restorePaneConfig();\n },\n methods: {\n /**\n * handle the swipe event\n *\n * @param {TouchEvent} e The touch event\n * @param {import('@vueuse/core').SwipeDirection} direction The swipe direction of the event\n */\n handleSwipe(e, direction) {\n const minSwipeX = 70;\n const touchZone = 300;\n if (Math.abs(this.swiping.lengthX) > minSwipeX) {\n if (this.swiping.coordsStart.x < touchZone / 2 && direction === \"right\") {\n emit(\"toggle-navigation\", {\n open: true\n });\n } else if (this.swiping.coordsStart.x < touchZone * 1.5 && direction === \"left\") {\n emit(\"toggle-navigation\", {\n open: false\n });\n }\n }\n },\n handlePaneResize(event) {\n const listPaneSize = parseInt(event.panes[0].size, 10);\n browserStorage.setItem(this.paneConfigID, JSON.stringify(listPaneSize));\n this.listPaneSize = listPaneSize;\n this.$emit(\"resizeList\", { size: listPaneSize });\n logger.debug(\"[NcAppContent] pane config\", { listPaneSize });\n },\n // browserStorage is not reactive, we need to update this manually\n restorePaneConfig() {\n const listPaneSize = parseInt(browserStorage.getItem(this.paneConfigID), 10);\n if (!isNaN(listPaneSize) && listPaneSize !== this.listPaneSize) {\n logger.debug(\"[NcAppContent] pane config\", { listPaneSize });\n this.listPaneSize = listPaneSize;\n return listPaneSize;\n }\n },\n /**\n * The user clicked the back arrow from the details view\n */\n hideDetails() {\n this.$emit(\"update:showDetails\", false);\n }\n }\n};\nconst _hoisted_1 = {\n key: 0,\n class: \"hidden-visually\"\n};\nconst _hoisted_2 = { class: \"app-content-wrapper__list\" };\nconst _hoisted_3 = {\n key: 1,\n class: \"app-content-wrapper\"\n};\nfunction _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {\n const _component_NcAppContentDetailsToggle = resolveComponent(\"NcAppContentDetailsToggle\");\n const _component_Pane = resolveComponent(\"Pane\");\n const _component_Splitpanes = resolveComponent(\"Splitpanes\");\n return openBlock(), createElementBlock(\"main\", {\n id: \"app-content-vue\",\n class: normalizeClass([\"app-content no-snapper\", { \"app-content--has-list\": !!_ctx.$slots.list }])\n }, [\n $props.pageHeading ? (openBlock(), createElementBlock(\"h1\", _hoisted_1, toDisplayString($props.pageHeading), 1)) : createCommentVNode(\"\", true),\n !!_ctx.$slots.list ? (openBlock(), createElementBlock(Fragment, { key: 1 }, [\n $setup.isMobile || $props.layout === \"no-split\" ? (openBlock(), createElementBlock(\"div\", {\n key: 0,\n class: normalizeClass([\"app-content-wrapper app-content-wrapper--no-split\", {\n \"app-content-wrapper--show-details\": $props.showDetails,\n \"app-content-wrapper--show-list\": !$props.showDetails,\n \"app-content-wrapper--mobile\": $setup.isMobile\n }])\n }, [\n $props.showDetails ? (openBlock(), createBlock(_component_NcAppContentDetailsToggle, {\n key: 0,\n onClick: withModifiers($options.hideDetails, [\"stop\", \"prevent\"])\n }, null, 8, [\"onClick\"])) : createCommentVNode(\"\", true),\n withDirectives(createElementVNode(\"div\", _hoisted_2, [\n renderSlot(_ctx.$slots, \"list\", {}, void 0, true)\n ], 512), [\n [vShow, !$props.showDetails]\n ]),\n $props.showDetails ? renderSlot(_ctx.$slots, \"default\", { key: 1 }, void 0, true) : createCommentVNode(\"\", true)\n ], 2)) : $props.layout === \"vertical-split\" || $props.layout === \"horizontal-split\" ? (openBlock(), createElementBlock(\"div\", _hoisted_3, [\n createVNode(_component_Splitpanes, {\n horizontal: $props.layout === \"horizontal-split\",\n class: normalizeClass([\"default-theme\", {\n \"splitpanes--horizontal\": $props.layout === \"horizontal-split\",\n \"splitpanes--vertical\": $props.layout === \"vertical-split\"\n }]),\n rtl: $setup.isRtl,\n onResized: $options.handlePaneResize\n }, {\n default: withCtx(() => [\n createVNode(_component_Pane, {\n class: \"splitpanes__pane-list\",\n size: $data.listPaneSize || $options.paneDefaults.list.size,\n minSize: $options.paneDefaults.list.min,\n maxSize: $options.paneDefaults.list.max\n }, {\n default: withCtx(() => [\n renderSlot(_ctx.$slots, \"list\", {}, void 0, true)\n ]),\n _: 3\n }, 8, [\"size\", \"minSize\", \"maxSize\"]),\n createVNode(_component_Pane, {\n class: \"splitpanes__pane-details\",\n size: $options.detailsPaneSize,\n minSize: $options.paneDefaults.details.min,\n maxSize: $options.paneDefaults.details.max\n }, {\n default: withCtx(() => [\n renderSlot(_ctx.$slots, \"default\", {}, void 0, true)\n ]),\n _: 3\n }, 8, [\"size\", \"minSize\", \"maxSize\"])\n ]),\n _: 3\n }, 8, [\"horizontal\", \"class\", \"rtl\", \"onResized\"])\n ])) : createCommentVNode(\"\", true)\n ], 64)) : createCommentVNode(\"\", true),\n !_ctx.$slots.list ? renderSlot(_ctx.$slots, \"default\", { key: 2 }, void 0, true) : createCommentVNode(\"\", true)\n ], 2);\n}\nconst NcAppContent = /* @__PURE__ */ _export_sfc(_sfc_main, [[\"render\", _sfc_render], [\"__scopeId\", \"data-v-51427d61\"]]);\nexport {\n NcAppContent as N\n};\n//# sourceMappingURL=NcAppContent-DavgjaFX.mjs.map\n","/*!\n * SPDX-FileCopyrightText: 2025 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\nconst HAS_APP_NAVIGATION_KEY = /* @__PURE__ */ Symbol.for(\"NcContent:setHasAppNavigation\");\nconst CONTENT_SELECTOR_KEY = /* @__PURE__ */ Symbol.for(\"NcContent:selector\");\nexport {\n CONTENT_SELECTOR_KEY as C,\n HAS_APP_NAVIGATION_KEY as H\n};\n//# sourceMappingURL=constants-Ciwvl5xb.mjs.map\n","import '../assets/NcContent-DX4Rs6Pc.css';\nimport { defineComponent, provide, computed, ref, onBeforeMount, openBlock, createElementBlock, normalizeClass, unref, createBlock, Teleport, createElementVNode, toDisplayString, withDirectives, createVNode, withModifiers, withCtx, createTextVNode, vShow, renderSlot, nextTick } from \"vue\";\nimport { emit } from \"@nextcloud/event-bus\";\nimport { N as NcButton } from \"./NcButton-jvoYS2my.mjs\";\nimport { N as NcIconSvgWrapper } from \"./NcIconSvgWrapper-g8ubWhoz.mjs\";\nimport { useIsMobile } from \"../composables/useIsMobile/index.mjs\";\nimport { r as register, H as t30, a as t } from \"./_l10n-wdIzZwir.mjs\";\nimport { i as isLegacy34 } from \"./legacy-BoqDmOCa.mjs\";\nimport { H as HAS_APP_NAVIGATION_KEY, C as CONTENT_SELECTOR_KEY } from \"./constants-Ciwvl5xb.mjs\";\nimport { _ as _export_sfc } from \"./_plugin-vue_export-helper-1tPrXgE0.mjs\";\nregister(t30);\nconst contentSvg = '<!--\\n - SPDX-FileCopyrightText: 2023 Nextcloud GmbH and Nextcloud contributors\\n - SPDX-License-Identifier: AGPL-3.0-or-later\\n-->\\n<svg width=\"395\" height=\"314\" viewBox=\"0 0 395 314\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\\n<rect width=\"395\" height=\"314\" rx=\"11\" fill=\"#439DCD\"/>\\n<rect x=\"13\" y=\"51\" width=\"366\" height=\"248\" rx=\"8\" fill=\"white\"/>\\n<rect x=\"22\" y=\"111\" width=\"92\" height=\"12\" rx=\"6\" fill=\"#DEDEDE\"/>\\n<rect x=\"22\" y=\"127\" width=\"92\" height=\"12\" rx=\"6\" fill=\"#DEDEDE\"/>\\n<rect x=\"22\" y=\"63\" width=\"92\" height=\"12\" rx=\"6\" fill=\"#DEDEDE\"/>\\n<rect x=\"22\" y=\"191\" width=\"92\" height=\"12\" rx=\"6\" fill=\"#DEDEDE\"/>\\n<rect x=\"22\" y=\"143\" width=\"92\" height=\"12\" rx=\"6\" fill=\"#DEDEDE\"/>\\n<rect x=\"22\" y=\"79\" width=\"92\" height=\"12\" rx=\"6\" fill=\"#DEDEDE\"/>\\n<rect x=\"22\" y=\"159\" width=\"92\" height=\"12\" rx=\"6\" fill=\"#DEDEDE\"/>\\n<rect x=\"22\" y=\"95\" width=\"92\" height=\"12\" rx=\"6\" fill=\"#DEDEDE\"/>\\n<rect x=\"22\" y=\"175\" width=\"92\" height=\"12\" rx=\"6\" fill=\"#DEDEDE\"/>\\n<path d=\"M288 145C277.56 147.8 265.32 149 254 149C242.68 149 230.44 147.8 220 145L218 153C225.44 155 234 156.32 242 157V209H250V185H258V209H266V157C274 156.32 282.56 155 290 153L288 145ZM254 145C258.4 145 262 141.4 262 137C262 132.6 258.4 129 254 129C249.6 129 246 132.6 246 137C246 141.4 249.6 145 254 145Z\" fill=\"#DEDEDE\"/>\\n<path d=\"M43.5358 13C38.6641 13 34.535 16.2415 33.2552 20.6333C32.143 18.3038 29.7327 16.6718 26.9564 16.6718C23.1385 16.6718 20 19.7521 20 23.4993C20 27.2465 23.1385 30.3282 26.9564 30.3282C29.7327 30.3282 32.1429 28.6952 33.2552 26.3653C34.535 30.7575 38.6641 34 43.5358 34C48.3715 34 52.4796 30.8064 53.7921 26.4637C54.9249 28.7407 57.3053 30.3282 60.0421 30.3282C63.8601 30.3282 67 27.2465 67 23.4993C67 19.7521 63.8601 16.6718 60.0421 16.6718C57.3053 16.6718 54.9249 18.2583 53.7921 20.5349C52.4796 16.1926 48.3715 13 43.5358 13ZM43.5358 17.0079C47.2134 17.0079 50.1512 19.8899 50.1512 23.4993C50.1512 27.1087 47.2134 29.9921 43.5358 29.9921C39.8583 29.9921 36.9218 27.1087 36.9218 23.4993C36.9218 19.8899 39.8583 17.0079 43.5358 17.0079ZM26.9564 20.6797C28.5677 20.6797 29.8307 21.9179 29.8307 23.4993C29.8307 25.0807 28.5677 26.3203 26.9564 26.3203C25.3452 26.3203 24.0836 25.0807 24.0836 23.4993C24.0836 21.9179 25.3452 20.6797 26.9564 20.6797ZM60.0421 20.6797C61.6534 20.6797 62.9164 21.9179 62.9164 23.4993C62.9164 25.0807 61.6534 26.3203 60.0421 26.3203C58.4309 26.3203 57.1693 25.0807 57.1693 23.4993C57.1693 21.9179 58.4309 20.6797 60.0421 20.6797Z\" fill=\"white\"/>\\n<rect x=\"79\" y=\"20\" width=\"8\" height=\"8\" rx=\"4\" fill=\"white\"/>\\n<rect x=\"99\" y=\"20\" width=\"8\" height=\"8\" rx=\"4\" fill=\"white\"/>\\n<rect x=\"119\" y=\"20\" width=\"8\" height=\"8\" rx=\"4\" fill=\"white\"/>\\n<rect x=\"139\" y=\"20\" width=\"8\" height=\"8\" rx=\"4\" fill=\"white\"/>\\n<rect x=\"159\" y=\"20\" width=\"8\" height=\"8\" rx=\"4\" fill=\"white\"/>\\n<rect x=\"179\" y=\"20\" width=\"8\" height=\"8\" rx=\"4\" fill=\"white\"/>\\n<path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M12 0C5.37258 0 0 5.37259 0 12V302C0 308.627 5.37259 314 12 314H383C389.627 314 395 308.627 395 302V12C395 5.37258 389.627 0 383 0H12ZM140 44C132.268 44 126 50.268 126 58V292C126 299.732 132.268 306 140 306H372C379.732 306 386 299.732 386 292V58C386 50.268 379.732 44 372 44H140Z\" fill=\"black\" fill-opacity=\"0.35\"/>\\n</svg>\\n';\nconst navigationSvg = '<!--\\n - SPDX-FileCopyrightText: 2023 Nextcloud GmbH and Nextcloud contributors\\n - SPDX-License-Identifier: AGPL-3.0-or-later\\n-->\\n<svg width=\"395\" height=\"314\" viewBox=\"0 0 395 314\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\\n<rect width=\"395\" height=\"314\" rx=\"11\" fill=\"#439DCD\"/>\\n<rect x=\"13\" y=\"51\" width=\"366\" height=\"248\" rx=\"8\" fill=\"white\"/>\\n<rect x=\"22\" y=\"111\" width=\"92\" height=\"12\" rx=\"6\" fill=\"#DEDEDE\"/>\\n<rect x=\"22\" y=\"127\" width=\"92\" height=\"12\" rx=\"6\" fill=\"#DEDEDE\"/>\\n<rect x=\"22\" y=\"63\" width=\"92\" height=\"12\" rx=\"6\" fill=\"#DEDEDE\"/>\\n<rect x=\"22\" y=\"191\" width=\"92\" height=\"12\" rx=\"6\" fill=\"#DEDEDE\"/>\\n<rect x=\"22\" y=\"143\" width=\"92\" height=\"12\" rx=\"6\" fill=\"#DEDEDE\"/>\\n<rect x=\"22\" y=\"79\" width=\"92\" height=\"12\" rx=\"6\" fill=\"#DEDEDE\"/>\\n<rect x=\"22\" y=\"159\" width=\"92\" height=\"12\" rx=\"6\" fill=\"#DEDEDE\"/>\\n<rect x=\"22\" y=\"95\" width=\"92\" height=\"12\" rx=\"6\" fill=\"#DEDEDE\"/>\\n<rect x=\"22\" y=\"175\" width=\"92\" height=\"12\" rx=\"6\" fill=\"#DEDEDE\"/>\\n<path d=\"M288 145C277.56 147.8 265.32 149 254 149C242.68 149 230.44 147.8 220 145L218 153C225.44 155 234 156.32 242 157V209H250V185H258V209H266V157C274 156.32 282.56 155 290 153L288 145ZM254 145C258.4 145 262 141.4 262 137C262 132.6 258.4 129 254 129C249.6 129 246 132.6 246 137C246 141.4 249.6 145 254 145Z\" fill=\"#DEDEDE\"/>\\n<path d=\"M43.5358 13C38.6641 13 34.535 16.2415 33.2552 20.6333C32.143 18.3038 29.7327 16.6718 26.9564 16.6718C23.1385 16.6718 20 19.7521 20 23.4993C20 27.2465 23.1385 30.3282 26.9564 30.3282C29.7327 30.3282 32.1429 28.6952 33.2552 26.3653C34.535 30.7575 38.6641 34 43.5358 34C48.3715 34 52.4796 30.8064 53.7921 26.4637C54.9249 28.7407 57.3053 30.3282 60.0421 30.3282C63.8601 30.3282 67 27.2465 67 23.4993C67 19.7521 63.8601 16.6718 60.0421 16.6718C57.3053 16.6718 54.9249 18.2583 53.7921 20.5349C52.4796 16.1926 48.3715 13 43.5358 13ZM43.5358 17.0079C47.2134 17.0079 50.1512 19.8899 50.1512 23.4993C50.1512 27.1087 47.2134 29.9921 43.5358 29.9921C39.8583 29.9921 36.9218 27.1087 36.9218 23.4993C36.9218 19.8899 39.8583 17.0079 43.5358 17.0079ZM26.9564 20.6797C28.5677 20.6797 29.8307 21.9179 29.8307 23.4993C29.8307 25.0807 28.5677 26.3203 26.9564 26.3203C25.3452 26.3203 24.0836 25.0807 24.0836 23.4993C24.0836 21.9179 25.3452 20.6797 26.9564 20.6797ZM60.0421 20.6797C61.6534 20.6797 62.9164 21.9179 62.9164 23.4993C62.9164 25.0807 61.6534 26.3203 60.0421 26.3203C58.4309 26.3203 57.1693 25.0807 57.1693 23.4993C57.1693 21.9179 58.4309 20.6797 60.0421 20.6797Z\" fill=\"white\"/>\\n<rect x=\"79\" y=\"20\" width=\"8\" height=\"8\" rx=\"4\" fill=\"white\"/>\\n<rect x=\"99\" y=\"20\" width=\"8\" height=\"8\" rx=\"4\" fill=\"white\"/>\\n<rect x=\"119\" y=\"20\" width=\"8\" height=\"8\" rx=\"4\" fill=\"white\"/>\\n<rect x=\"139\" y=\"20\" width=\"8\" height=\"8\" rx=\"4\" fill=\"white\"/>\\n<rect x=\"159\" y=\"20\" width=\"8\" height=\"8\" rx=\"4\" fill=\"white\"/>\\n<rect x=\"179\" y=\"20\" width=\"8\" height=\"8\" rx=\"4\" fill=\"white\"/>\\n<path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M12 0C5.37258 0 0 5.37259 0 12V302C0 308.627 5.37259 314 12 314H383C389.627 314 395 308.627 395 302V12C395 5.37258 389.627 0 383 0H12ZM112 44C119.732 44 126 50.268 126 58V292C126 299.732 119.732 306 112 306H20C12.268 306 6 299.732 6 292V58C6 50.268 12.268 44 20 44H112Z\" fill=\"black\" fill-opacity=\"0.35\"/>\\n</svg>\\n';\nconst _hoisted_1 = { class: \"vue-skip-actions__container\" };\nconst _hoisted_2 = { class: \"vue-skip-actions__headline\" };\nconst _hoisted_3 = { class: \"vue-skip-actions__buttons\" };\nconst _sfc_main = /* @__PURE__ */ defineComponent({\n __name: \"NcContent\",\n props: {\n appName: {}\n },\n setup(__props) {\n const props = __props;\n provide(HAS_APP_NAVIGATION_KEY, setAppNavigation);\n provide(CONTENT_SELECTOR_KEY, \"#content-vue\");\n provide(\"appName\", computed(() => props.appName));\n const isMobile = useIsMobile();\n const hasAppNavigation = ref(false);\n const currentFocus = ref();\n const currentImage = computed(() => currentFocus.value === \"navigation\" ? navigationSvg : contentSvg);\n onBeforeMount(() => {\n const container = document.getElementById(\"skip-actions\");\n if (container) {\n container.innerHTML = \"\";\n container.classList.add(\"vue-skip-actions\");\n }\n });\n function openAppNavigation() {\n emit(\"toggle-navigation\", { open: true });\n nextTick(() => {\n window.location.hash = \"app-navigation-vue\";\n document.getElementById(\"app-navigation-vue\").focus();\n });\n }\n function setAppNavigation(value) {\n hasAppNavigation.value = value;\n if (!currentFocus.value) {\n currentFocus.value = \"navigation\";\n }\n }\n return (_ctx, _cache) => {\n return openBlock(), createElementBlock(\"div\", {\n id: \"content-vue\",\n class: normalizeClass([\"content\", [`app-${__props.appName.toLowerCase()}`, { \"content--legacy\": unref(isLegacy34) }]])\n }, [\n (openBlock(), createBlock(Teleport, { to: \"#skip-actions\" }, [\n createElementVNode(\"div\", _hoisted_1, [\n createElementVNode(\"div\", _hoisted_2, toDisplayString(unref(t)(\"Keyboard navigation help\")), 1),\n createElementVNode(\"div\", _hoisted_3, [\n withDirectives(createVNode(NcButton, {\n href: \"#app-navigation-vue\",\n variant: \"tertiary\",\n onClick: withModifiers(openAppNavigation, [\"prevent\"]),\n onFocusin: _cache[0] || (_cache[0] = ($event) => currentFocus.value = \"navigation\"),\n onMouseover: _cache[1] || (_cache[1] = ($event) => currentFocus.value = \"navigation\")\n }, {\n default: withCtx(() => [\n createTextVNode(toDisplayString(unref(t)(\"Skip to app navigation\")), 1)\n ]),\n _: 1\n }, 512), [\n [vShow, hasAppNavigation.value]\n ]),\n createVNode(NcButton, {\n href: \"#app-content-vue\",\n variant: \"tertiary\",\n onFocusin: _cache[2] || (_cache[2] = ($event) => currentFocus.value = \"content\"),\n onMouseover: _cache[3] || (_cache[3] = ($event) => currentFocus.value = \"content\")\n }, {\n default: withCtx(() => [\n createTextVNode(toDisplayString(unref(t)(\"Skip to main content\")), 1)\n ]),\n _: 1\n })\n ]),\n withDirectives(createVNode(NcIconSvgWrapper, {\n class: \"vue-skip-actions__image\",\n svg: currentImage.value,\n size: \"auto\"\n }, null, 8, [\"svg\"]), [\n [vShow, !unref(isMobile)]\n ])\n ])\n ])),\n renderSlot(_ctx.$slots, \"default\", {}, void 0, true)\n ], 2);\n };\n }\n});\nconst NcContent = /* @__PURE__ */ _export_sfc(_sfc_main, [[\"__scopeId\", \"data-v-d13dcb98\"]]);\nexport {\n NcContent as N\n};\n//# sourceMappingURL=NcContent-BYh5hWDN.mjs.map\n"],"names":["Pe","D","h","y","u","E","ce","k","M","z","n","m","x","S","c","f","_","R","r","P","O","b","t","a","o","K","I","d","A","U","W","J","$","N","v","p","H","ue","j","Q","V","Z","ee","e","F","ne","C","ie","te","T","L","ae","le","oe","se","q","B","G","X","re","fe","g","Y","ve","me","ge","w","l","de","pe","he","ze","xe","once","func","wasCalled","result","args","realAppName","appName","logger","APP_NAME","realAppVersion","appVersion","useAppName","inject","useLocalizedAppName","apps","loadState","realAppName2","id","register","t27","_sfc_main$1","defineComponent","__props","isMobile","useIsMobile","watch","toggleAppNavigationButton","onMounted","onBeforeUnmount","hide","appNavigationToggle","emit","_ctx","_cache","openBlock","createBlock","unref","NcButton","normalizeClass","withCtx","createVNode","NcIconSvgWrapper","mdiArrowRight","NcAppContentDetailsToggle","_export_sfc","browserStorage","getBuilder","instanceName","getCapabilities","_sfc_main","Pane","Splitpanes","value","isRtl","entries","part","useSwipe","direction","event","listPaneSize","_hoisted_1","_hoisted_2","_hoisted_3","_sfc_render","$props","$setup","$data","$options","_component_NcAppContentDetailsToggle","resolveComponent","_component_Pane","_component_Splitpanes","createElementBlock","toDisplayString","createCommentVNode","Fragment","withModifiers","withDirectives","createElementVNode","renderSlot","vShow","NcAppContent","HAS_APP_NAVIGATION_KEY","CONTENT_SELECTOR_KEY","t30","contentSvg","navigationSvg","props","provide","setAppNavigation","computed","hasAppNavigation","ref","currentFocus","currentImage","onBeforeMount","container","openAppNavigation","nextTick","isLegacy34","Teleport","$event","createTextVNode","NcContent"],"mappings":"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","x_google_ignoreList":[0,1,2,3,4]} \ No newline at end of file +{"version":3,"file":"NcContent-BYh5hWDN-C1_miOvl.chunk.mjs","sources":["../node_modules/splitpanes/dist/splitpanes.es.js","../node_modules/@nextcloud/vue/dist/chunks/appName-DyNMVZpX.mjs","../node_modules/@nextcloud/vue/dist/chunks/NcAppContent-DavgjaFX.mjs","../node_modules/@nextcloud/vue/dist/chunks/constants-Ciwvl5xb.mjs","../node_modules/@nextcloud/vue/dist/chunks/NcContent-BYh5hWDN.mjs"],"sourcesContent":["import { useSlots as ce, ref as k, computed as z, watch as B, onMounted as G, onBeforeUnmount as X, provide as g, createBlock as ve, openBlock as Y, resolveDynamicComponent as me, nextTick as T, h as fe, inject as w, getCurrentInstance as de, createElementBlock as pe, normalizeStyle as ze, unref as he, renderSlot as xe } from \"vue\";\nconst Pe = {\n __name: \"splitpanes\",\n props: {\n horizontal: { type: Boolean, default: !1 },\n pushOtherPanes: { type: Boolean, default: !0 },\n maximizePanes: { type: Boolean, default: !0 },\n // Maximize pane on splitter double click/tap.\n rtl: { type: Boolean, default: !1 },\n // Right to left direction.\n firstSplitter: { type: Boolean, default: !1 }\n },\n emits: [\n \"ready\",\n \"resize\",\n \"resized\",\n \"pane-click\",\n \"pane-maximize\",\n \"pane-add\",\n \"pane-remove\",\n \"splitter-click\",\n \"splitter-dblclick\"\n ],\n setup(D, { emit: h }) {\n const y = h, u = D, E = ce(), l = k([]), M = z(() => l.value.reduce((e, n) => (e[~~n.id] = n) && e, {})), m = z(() => l.value.length), x = k(null), S = k(!1), c = k({\n mouseDown: !1,\n dragging: !1,\n activeSplitter: null,\n cursorOffset: 0\n // Cursor offset within the splitter.\n }), f = k({\n // Used to detect double click on touch devices.\n splitter: null,\n timeoutId: null\n }), _ = z(() => ({\n [`splitpanes splitpanes--${u.horizontal ? \"horizontal\" : \"vertical\"}`]: !0,\n \"splitpanes--dragging\": c.value.dragging\n })), R = () => {\n document.addEventListener(\"mousemove\", r, { passive: !1 }), document.addEventListener(\"mouseup\", P), \"ontouchstart\" in window && (document.addEventListener(\"touchmove\", r, { passive: !1 }), document.addEventListener(\"touchend\", P));\n }, O = () => {\n document.removeEventListener(\"mousemove\", r, { passive: !1 }), document.removeEventListener(\"mouseup\", P), \"ontouchstart\" in window && (document.removeEventListener(\"touchmove\", r, { passive: !1 }), document.removeEventListener(\"touchend\", P));\n }, b = (e, n) => {\n const t = e.target.closest(\".splitpanes__splitter\");\n if (t) {\n const { left: i, top: a } = t.getBoundingClientRect(), { clientX: s, clientY: o } = \"ontouchstart\" in window && e.touches ? e.touches[0] : e;\n c.value.cursorOffset = u.horizontal ? o - a : s - i;\n }\n R(), c.value.mouseDown = !0, c.value.activeSplitter = n;\n }, r = (e) => {\n c.value.mouseDown && (e.preventDefault(), c.value.dragging = !0, requestAnimationFrame(() => {\n K(I(e)), d(\"resize\", { event: e }, !0);\n }));\n }, P = (e) => {\n c.value.dragging && (window.getSelection().removeAllRanges(), d(\"resized\", { event: e }, !0)), c.value.mouseDown = !1, c.value.activeSplitter = null, setTimeout(() => {\n c.value.dragging = !1, O();\n }, 100);\n }, A = (e, n) => {\n \"ontouchstart\" in window && (e.preventDefault(), f.value.splitter === n ? (clearTimeout(f.value.timeoutId), f.value.timeoutId = null, U(e, n), f.value.splitter = null) : (f.value.splitter = n, f.value.timeoutId = setTimeout(() => f.value.splitter = null, 500))), c.value.dragging || d(\"splitter-click\", { event: e, index: n }, !0);\n }, U = (e, n) => {\n if (d(\"splitter-dblclick\", { event: e, index: n }, !0), u.maximizePanes) {\n let t = 0;\n l.value = l.value.map((i, a) => (i.size = a === n ? i.max : i.min, a !== n && (t += i.min), i)), l.value[n].size -= t, d(\"pane-maximize\", { event: e, index: n, pane: l.value[n] }), d(\"resized\", { event: e, index: n }, !0);\n }\n }, W = (e, n) => {\n d(\"pane-click\", {\n event: e,\n index: M.value[n].index,\n pane: M.value[n]\n });\n }, I = (e) => {\n const n = x.value.getBoundingClientRect(), { clientX: t, clientY: i } = \"ontouchstart\" in window && e.touches ? e.touches[0] : e;\n return {\n x: t - (u.horizontal ? 0 : c.value.cursorOffset) - n.left,\n y: i - (u.horizontal ? c.value.cursorOffset : 0) - n.top\n };\n }, J = (e) => {\n e = e[u.horizontal ? \"y\" : \"x\"];\n const n = x.value[u.horizontal ? \"clientHeight\" : \"clientWidth\"];\n return u.rtl && !u.horizontal && (e = n - e), e * 100 / n;\n }, K = (e) => {\n const n = c.value.activeSplitter;\n let t = {\n prevPanesSize: $(n),\n nextPanesSize: N(n),\n prevReachedMinPanes: 0,\n nextReachedMinPanes: 0\n };\n const i = 0 + (u.pushOtherPanes ? 0 : t.prevPanesSize), a = 100 - (u.pushOtherPanes ? 0 : t.nextPanesSize), s = Math.max(Math.min(J(e), a), i);\n let o = [n, n + 1], v = l.value[o[0]] || null, p = l.value[o[1]] || null;\n const H = v.max < 100 && s >= v.max + t.prevPanesSize, ue = p.max < 100 && s <= 100 - (p.max + N(n + 1));\n if (H || ue) {\n H ? (v.size = v.max, p.size = Math.max(100 - v.max - t.prevPanesSize - t.nextPanesSize, 0)) : (v.size = Math.max(100 - p.max - t.prevPanesSize - N(n + 1), 0), p.size = p.max);\n return;\n }\n if (u.pushOtherPanes) {\n const j = Q(t, s);\n if (!j) return;\n ({ sums: t, panesToResize: o } = j), v = l.value[o[0]] || null, p = l.value[o[1]] || null;\n }\n v !== null && (v.size = Math.min(Math.max(s - t.prevPanesSize - t.prevReachedMinPanes, v.min), v.max)), p !== null && (p.size = Math.min(Math.max(100 - s - t.nextPanesSize - t.nextReachedMinPanes, p.min), p.max));\n }, Q = (e, n) => {\n const t = c.value.activeSplitter, i = [t, t + 1];\n return n < e.prevPanesSize + l.value[i[0]].min && (i[0] = V(t).index, e.prevReachedMinPanes = 0, i[0] < t && l.value.forEach((a, s) => {\n s > i[0] && s <= t && (a.size = a.min, e.prevReachedMinPanes += a.min);\n }), e.prevPanesSize = $(i[0]), i[0] === void 0) ? (e.prevReachedMinPanes = 0, l.value[0].size = l.value[0].min, l.value.forEach((a, s) => {\n s > 0 && s <= t && (a.size = a.min, e.prevReachedMinPanes += a.min);\n }), l.value[i[1]].size = 100 - e.prevReachedMinPanes - l.value[0].min - e.prevPanesSize - e.nextPanesSize, null) : n > 100 - e.nextPanesSize - l.value[i[1]].min && (i[1] = Z(t).index, e.nextReachedMinPanes = 0, i[1] > t + 1 && l.value.forEach((a, s) => {\n s > t && s < i[1] && (a.size = a.min, e.nextReachedMinPanes += a.min);\n }), e.nextPanesSize = N(i[1] - 1), i[1] === void 0) ? (e.nextReachedMinPanes = 0, l.value.forEach((a, s) => {\n s < m.value - 1 && s >= t + 1 && (a.size = a.min, e.nextReachedMinPanes += a.min);\n }), l.value[i[0]].size = 100 - e.prevPanesSize - N(i[0] - 1), null) : { sums: e, panesToResize: i };\n }, $ = (e) => l.value.reduce((n, t, i) => n + (i < e ? t.size : 0), 0), N = (e) => l.value.reduce((n, t, i) => n + (i > e + 1 ? t.size : 0), 0), V = (e) => [...l.value].reverse().find((t) => t.index < e && t.size > t.min) || {}, Z = (e) => l.value.find((t) => t.index > e + 1 && t.size > t.min) || {}, ee = () => {\n var n;\n const e = Array.from(((n = x.value) == null ? void 0 : n.children) || []);\n for (const t of e) {\n const i = t.classList.contains(\"splitpanes__pane\"), a = t.classList.contains(\"splitpanes__splitter\");\n !i && !a && (t.remove(), console.warn(\"Splitpanes: Only <pane> elements are allowed at the root of <splitpanes>. One of your DOM nodes was removed.\"));\n }\n }, F = (e, n, t = !1) => {\n const i = e - 1, a = document.createElement(\"div\");\n a.classList.add(\"splitpanes__splitter\"), t || (a.onmousedown = (s) => b(s, i), typeof window < \"u\" && \"ontouchstart\" in window && (a.ontouchstart = (s) => b(s, i)), a.onclick = (s) => A(s, i + 1)), a.ondblclick = (s) => U(s, i + 1), n.parentNode.insertBefore(a, n);\n }, ne = (e) => {\n e.onmousedown = void 0, e.onclick = void 0, e.ondblclick = void 0, e.remove();\n }, C = () => {\n var t;\n const e = Array.from(((t = x.value) == null ? void 0 : t.children) || []);\n for (const i of e)\n i.className.includes(\"splitpanes__splitter\") && ne(i);\n let n = 0;\n for (const i of e)\n i.className.includes(\"splitpanes__pane\") && (!n && u.firstSplitter ? F(n, i, !0) : n && F(n, i), n++);\n }, ie = ({ uid: e, ...n }) => {\n const t = M.value[e];\n for (const [i, a] of Object.entries(n)) t[i] = a;\n }, te = (e) => {\n var t;\n let n = -1;\n Array.from(((t = x.value) == null ? void 0 : t.children) || []).some((i) => (i.className.includes(\"splitpanes__pane\") && n++, i.isSameNode(e.el))), l.value.splice(n, 0, { ...e, index: n }), l.value.forEach((i, a) => i.index = a), S.value && T(() => {\n C(), L({ addedPane: l.value[n] }), d(\"pane-add\", { pane: l.value[n] });\n });\n }, ae = (e) => {\n const n = l.value.findIndex((i) => i.id === e);\n l.value[n].el = null;\n const t = l.value.splice(n, 1)[0];\n l.value.forEach((i, a) => i.index = a), T(() => {\n C(), d(\"pane-remove\", { pane: t }), L({ removedPane: { ...t } });\n });\n }, L = (e = {}) => {\n !e.addedPane && !e.removedPane ? le() : l.value.some((n) => n.givenSize !== null || n.min || n.max < 100) ? oe(e) : se(), S.value && d(\"resized\");\n }, se = () => {\n const e = 100 / m.value;\n let n = 0;\n const t = [], i = [];\n for (const a of l.value)\n a.size = Math.max(Math.min(e, a.max), a.min), n -= a.size, a.size >= a.max && t.push(a.id), a.size <= a.min && i.push(a.id);\n n > 0.1 && q(n, t, i);\n }, le = () => {\n let e = 100;\n const n = [], t = [];\n let i = 0;\n for (const s of l.value)\n e -= s.size, s.givenSize !== null && i++, s.size >= s.max && n.push(s.id), s.size <= s.min && t.push(s.id);\n let a = 100;\n if (e > 0.1) {\n for (const s of l.value)\n s.givenSize === null && (s.size = Math.max(Math.min(e / (m.value - i), s.max), s.min)), a -= s.size;\n a > 0.1 && q(a, n, t);\n }\n }, oe = ({ addedPane: e, removedPane: n } = {}) => {\n let t = 100 / m.value, i = 0;\n const a = [], s = [];\n ((e == null ? void 0 : e.givenSize) ?? null) !== null && (t = (100 - e.givenSize) / (m.value - 1));\n for (const o of l.value)\n i -= o.size, o.size >= o.max && a.push(o.id), o.size <= o.min && s.push(o.id);\n if (!(Math.abs(i) < 0.1)) {\n for (const o of l.value)\n (e == null ? void 0 : e.givenSize) !== null && (e == null ? void 0 : e.id) === o.id || (o.size = Math.max(Math.min(t, o.max), o.min)), i -= o.size, o.size >= o.max && a.push(o.id), o.size <= o.min && s.push(o.id);\n i > 0.1 && q(i, a, s);\n }\n }, q = (e, n, t) => {\n let i;\n e > 0 ? i = e / (m.value - n.length) : i = e / (m.value - t.length), l.value.forEach((a, s) => {\n if (e > 0 && !n.includes(a.id)) {\n const o = Math.max(Math.min(a.size + i, a.max), a.min), v = o - a.size;\n e -= v, a.size = o;\n } else if (!t.includes(a.id)) {\n const o = Math.max(Math.min(a.size + i, a.max), a.min), v = o - a.size;\n e -= v, a.size = o;\n }\n }), Math.abs(e) > 0.1 && T(() => {\n S.value && console.warn(\"Splitpanes: Could not resize panes correctly due to their constraints.\");\n });\n }, d = (e, n = void 0, t = !1) => {\n const i = (n == null ? void 0 : n.index) ?? c.value.activeSplitter ?? null;\n y(e, {\n ...n,\n ...i !== null && { index: i },\n ...t && i !== null && {\n prevPane: l.value[i - (u.firstSplitter ? 1 : 0)],\n nextPane: l.value[i + (u.firstSplitter ? 0 : 1)]\n },\n panes: l.value.map((a) => ({ min: a.min, max: a.max, size: a.size }))\n });\n };\n B(() => u.firstSplitter, () => C()), G(() => {\n ee(), C(), L(), d(\"ready\"), S.value = !0;\n }), X(() => S.value = !1);\n const re = () => {\n var e;\n return fe(\n \"div\",\n { ref: x, class: _.value },\n (e = E.default) == null ? void 0 : e.call(E)\n );\n };\n return g(\"panes\", l), g(\"indexedPanes\", M), g(\"horizontal\", z(() => u.horizontal)), g(\"requestUpdate\", ie), g(\"onPaneAdd\", te), g(\"onPaneRemove\", ae), g(\"onPaneClick\", W), (e, n) => (Y(), ve(me(re)));\n }\n}, ge = {\n __name: \"pane\",\n props: {\n size: { type: [Number, String] },\n minSize: { type: [Number, String], default: 0 },\n maxSize: { type: [Number, String], default: 100 }\n },\n setup(D) {\n var b;\n const h = D, y = w(\"requestUpdate\"), u = w(\"onPaneAdd\"), E = w(\"horizontal\"), l = w(\"onPaneRemove\"), M = w(\"onPaneClick\"), m = (b = de()) == null ? void 0 : b.uid, x = w(\"indexedPanes\"), S = z(() => x.value[m]), c = k(null), f = z(() => {\n const r = isNaN(h.size) || h.size === void 0 ? 0 : parseFloat(h.size);\n return Math.max(Math.min(r, R.value), _.value);\n }), _ = z(() => {\n const r = parseFloat(h.minSize);\n return isNaN(r) ? 0 : r;\n }), R = z(() => {\n const r = parseFloat(h.maxSize);\n return isNaN(r) ? 100 : r;\n }), O = z(() => {\n var r;\n return `${E.value ? \"height\" : \"width\"}: ${(r = S.value) == null ? void 0 : r.size}%`;\n });\n return B(() => f.value, (r) => y({ uid: m, size: r })), B(() => _.value, (r) => y({ uid: m, min: r })), B(() => R.value, (r) => y({ uid: m, max: r })), G(() => {\n u({\n id: m,\n el: c.value,\n min: _.value,\n max: R.value,\n // The given size (useful to know the user intention).\n givenSize: h.size === void 0 ? null : f.value,\n size: f.value\n // The computed current size at any time.\n });\n }), X(() => l(m)), (r, P) => (Y(), pe(\"div\", {\n ref_key: \"paneEl\",\n ref: c,\n class: \"splitpanes__pane\",\n onClick: P[0] || (P[0] = (A) => he(M)(A, r._.uid)),\n style: ze(O.value)\n }, [\n xe(r.$slots, \"default\")\n ], 4));\n }\n};\nexport {\n ge as Pane,\n Pe as Splitpanes\n};\n","import { loadState } from \"@nextcloud/initial-state\";\nimport { inject } from \"vue\";\nimport { l as logger } from \"./logger-D3RVzcfQ.mjs\";\n/*!\n * SPDX-FileCopyrightText: 2025 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\nfunction once(func) {\n let wasCalled = false;\n let result;\n return (...args) => {\n if (!wasCalled) {\n wasCalled = true;\n result = func(...args);\n }\n return result;\n };\n}\nlet realAppName = \"missing-app-name\";\ntry {\n realAppName = appName;\n} catch {\n logger.error(\"The `@nextcloud/vue` library was used without setting / replacing the `appName`.\");\n}\nconst APP_NAME = realAppName;\nlet realAppVersion = \"\";\ntry {\n realAppVersion = appVersion;\n} catch {\n logger.error(\"The `@nextcloud/vue` library was used without setting / replacing the `appVersion`.\");\n}\nconst APP_VERSION = realAppVersion;\nfunction useAppName() {\n return inject(\"appName\", APP_NAME);\n}\nconst useLocalizedAppName = once(() => {\n const apps = loadState(\"core\", \"apps\", []);\n const realAppName2 = useAppName();\n return apps.find(({ id }) => id === realAppName2)?.name ?? realAppName2;\n});\nexport {\n APP_VERSION as A,\n useAppName as a,\n useLocalizedAppName as u\n};\n//# sourceMappingURL=appName-DyNMVZpX.mjs.map\n","import '../assets/NcAppContent-TgcZd4AI.css';\nimport { getBuilder } from \"@nextcloud/browser-storage\";\nimport { getCapabilities } from \"@nextcloud/capabilities\";\nimport { emit } from \"@nextcloud/event-bus\";\nimport { useSwipe } from \"@vueuse/core\";\nimport { Splitpanes, Pane } from \"splitpanes\";\nimport { defineComponent, watch, onMounted, onBeforeUnmount, openBlock, createBlock, unref, normalizeClass, withCtx, createVNode, resolveComponent, createElementBlock, toDisplayString, createCommentVNode, Fragment, withModifiers, withDirectives, createElementVNode, renderSlot, vShow } from \"vue\";\nimport { m as mdiArrowRight } from \"./mdi-CpchYUUV.mjs\";\nimport { useIsMobile } from \"../composables/useIsMobile/index.mjs\";\nimport { r as register, G as t27, a as t } from \"./_l10n-wdIzZwir.mjs\";\nimport { N as NcButton } from \"./NcButton-jvoYS2my.mjs\";\nimport { N as NcIconSvgWrapper } from \"./NcIconSvgWrapper-g8ubWhoz.mjs\";\nimport { _ as _export_sfc } from \"./_plugin-vue_export-helper-1tPrXgE0.mjs\";\nimport { u as useLocalizedAppName, a as useAppName } from \"./appName-DyNMVZpX.mjs\";\nimport { l as logger } from \"./logger-D3RVzcfQ.mjs\";\nimport { i as isRtl } from \"./rtl-v0UOPAM7.mjs\";\nimport \"splitpanes/dist/splitpanes.css\";\nregister(t27);\nconst _sfc_main$1 = /* @__PURE__ */ defineComponent({\n __name: \"NcAppContentDetailsToggle\",\n setup(__props) {\n const isMobile = useIsMobile();\n watch(isMobile, toggleAppNavigationButton);\n onMounted(() => {\n toggleAppNavigationButton(isMobile.value);\n });\n onBeforeUnmount(() => {\n if (isMobile.value) {\n toggleAppNavigationButton(false);\n }\n });\n function toggleAppNavigationButton(hide = true) {\n const appNavigationToggle = document.querySelector(\".app-navigation .app-navigation-toggle\");\n if (appNavigationToggle) {\n appNavigationToggle.style.display = hide ? \"none\" : \"\";\n if (hide === true) {\n emit(\"toggle-navigation\", { open: false });\n }\n }\n }\n return (_ctx, _cache) => {\n return openBlock(), createBlock(unref(NcButton), {\n \"aria-label\": unref(t)(\"Go back to the list\"),\n class: normalizeClass([\"app-details-toggle\", { \"app-details-toggle--mobile\": unref(isMobile) }]),\n title: unref(t)(\"Go back to the list\"),\n variant: \"tertiary\"\n }, {\n icon: withCtx(() => [\n createVNode(unref(NcIconSvgWrapper), {\n directional: \"\",\n path: unref(mdiArrowRight)\n }, null, 8, [\"path\"])\n ]),\n _: 1\n }, 8, [\"aria-label\", \"class\", \"title\"]);\n };\n }\n});\nconst NcAppContentDetailsToggle = /* @__PURE__ */ _export_sfc(_sfc_main$1, [[\"__scopeId\", \"data-v-a28923a1\"]]);\nconst browserStorage = getBuilder(\"nextcloud\").persist().build();\nconst instanceName = getCapabilities().theming?.name ?? \"Nextcloud\";\nconst _sfc_main = {\n name: \"NcAppContent\",\n components: {\n NcAppContentDetailsToggle,\n Pane,\n Splitpanes\n },\n props: {\n /**\n * Allows to disable the control by swipe of the app navigation open state.\n */\n disableSwipe: {\n type: Boolean,\n default: false\n },\n /**\n * Allows you to set the default width of the resizable list in % on vertical-split\n * or respectively the default height on horizontal-split.\n *\n * Must be between `listMinWidth` and `listMaxWidth`.\n */\n listSize: {\n type: Number,\n default: 20\n },\n /**\n * Allows you to set the minimum width of the list column in % on vertical-split\n * or respectively the minimum height on horizontal-split.\n */\n listMinWidth: {\n type: Number,\n default: 15\n },\n /**\n * Allows you to set the maximum width of the list column in % on vertical-split\n * or respectively the maximum height on horizontal-split.\n */\n listMaxWidth: {\n type: Number,\n default: 40\n },\n /**\n * Specify the config key for the pane config sizes\n * Default is the global var appName if you use the webpack-vue-config\n */\n paneConfigKey: {\n type: String,\n default: \"\"\n },\n /**\n * When in mobile view, only the list or the details are shown.\n *\n * If you provide a list, you need to provide a variable\n * that will be set to true by the user when an element of\n * the list gets selected. The details will then show a back\n * arrow to return to the list that will update this prop to false.\n */\n showDetails: {\n type: Boolean,\n default: true\n },\n /**\n * Content layout used when there is a list together with content:\n * - `vertical-split` - a 2-column layout with list and default content separated vertically\n * - `no-split` - a single column layout; List is shown when `showDetails` is `false`, otherwise the default slot content is shown with a back button to return to the list.\n * - 'horizontal-split' - a 2-column layout with list and default content separated horizontally\n * On mobile screen `no-split` layout is forced.\n */\n layout: {\n type: String,\n default: \"vertical-split\",\n validator(value) {\n return [\"no-split\", \"vertical-split\", \"horizontal-split\"].includes(value);\n }\n },\n /**\n * Specify the `<h1>` page heading\n */\n pageHeading: {\n type: String,\n default: null\n },\n /**\n * Allow setting the page's `<title>`\n *\n * If a page heading is set it defaults to `{pageHeading} - {appName} - {instanceName}` e.g. `Favorites - Files - MyPersonalCloud`.\n * When the page heading and the app name is the same only one is used, e.g. `Files - Files - MyPersonalCloud` is shown as `Files - MyPersonalCloud`.\n * When setting the prop then the following format will be used: `{pageTitle} - {instanceName}`\n */\n pageTitle: {\n type: String,\n default: null\n }\n },\n emits: [\n \"update:showDetails\",\n \"resizeList\"\n ],\n setup() {\n return {\n appName: useAppName(),\n localizedAppName: useLocalizedAppName(),\n isMobile: useIsMobile(),\n isRtl\n };\n },\n data() {\n return {\n contentHeight: 0,\n swiping: {},\n listPaneSize: this.restorePaneConfig()\n };\n },\n computed: {\n paneConfigID() {\n if (this.paneConfigKey !== \"\") {\n return `pane-list-size-${this.paneConfigKey}`;\n }\n try {\n return `pane-list-size-${this.appName}`;\n } catch {\n logger.info(\"[NcAppContent]: falling back to global nextcloud pane config\");\n return \"pane-list-size-nextcloud\";\n }\n },\n detailsPaneSize() {\n if (this.listPaneSize) {\n return 100 - this.listPaneSize;\n }\n return this.paneDefaults.details.size;\n },\n paneDefaults() {\n return {\n list: {\n size: this.listSize,\n min: this.listMinWidth,\n max: this.listMaxWidth\n },\n // set the inverse values of the details column\n // based on the provided (or default) values of the list column\n details: {\n size: 100 - this.listSize,\n min: 100 - this.listMaxWidth,\n max: 100 - this.listMinWidth\n }\n };\n },\n realPageTitle() {\n const entries = /* @__PURE__ */ new Set();\n if (this.pageTitle) {\n for (const part of this.pageTitle.split(\" - \")) {\n entries.add(part);\n }\n } else if (this.pageHeading) {\n for (const part of this.pageHeading.split(\" - \")) {\n entries.add(part);\n }\n if (entries.size > 0) {\n entries.add(this.localizedAppName);\n }\n } else {\n return null;\n }\n entries.add(instanceName);\n return [...entries.values()].join(\" - \");\n }\n },\n watch: {\n realPageTitle: {\n immediate: true,\n handler() {\n if (this.realPageTitle !== null) {\n document.title = this.realPageTitle;\n }\n }\n },\n paneConfigKey: {\n immediate: true,\n handler() {\n this.restorePaneConfig();\n }\n }\n },\n mounted() {\n if (!this.disableSwipe) {\n this.swiping = useSwipe(this.$el, {\n onSwipeEnd: this.handleSwipe\n });\n }\n this.restorePaneConfig();\n },\n methods: {\n /**\n * handle the swipe event\n *\n * @param {TouchEvent} e The touch event\n * @param {import('@vueuse/core').SwipeDirection} direction The swipe direction of the event\n */\n handleSwipe(e, direction) {\n const minSwipeX = 70;\n const touchZone = 300;\n if (Math.abs(this.swiping.lengthX) > minSwipeX) {\n if (this.swiping.coordsStart.x < touchZone / 2 && direction === \"right\") {\n emit(\"toggle-navigation\", {\n open: true\n });\n } else if (this.swiping.coordsStart.x < touchZone * 1.5 && direction === \"left\") {\n emit(\"toggle-navigation\", {\n open: false\n });\n }\n }\n },\n handlePaneResize(event) {\n const listPaneSize = parseInt(event.panes[0].size, 10);\n browserStorage.setItem(this.paneConfigID, JSON.stringify(listPaneSize));\n this.listPaneSize = listPaneSize;\n this.$emit(\"resizeList\", { size: listPaneSize });\n logger.debug(\"[NcAppContent] pane config\", { listPaneSize });\n },\n // browserStorage is not reactive, we need to update this manually\n restorePaneConfig() {\n const listPaneSize = parseInt(browserStorage.getItem(this.paneConfigID), 10);\n if (!isNaN(listPaneSize) && listPaneSize !== this.listPaneSize) {\n logger.debug(\"[NcAppContent] pane config\", { listPaneSize });\n this.listPaneSize = listPaneSize;\n return listPaneSize;\n }\n },\n /**\n * The user clicked the back arrow from the details view\n */\n hideDetails() {\n this.$emit(\"update:showDetails\", false);\n }\n }\n};\nconst _hoisted_1 = {\n key: 0,\n class: \"hidden-visually\"\n};\nconst _hoisted_2 = { class: \"app-content-wrapper__list\" };\nconst _hoisted_3 = {\n key: 1,\n class: \"app-content-wrapper\"\n};\nfunction _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {\n const _component_NcAppContentDetailsToggle = resolveComponent(\"NcAppContentDetailsToggle\");\n const _component_Pane = resolveComponent(\"Pane\");\n const _component_Splitpanes = resolveComponent(\"Splitpanes\");\n return openBlock(), createElementBlock(\"main\", {\n id: \"app-content-vue\",\n class: normalizeClass([\"app-content no-snapper\", { \"app-content--has-list\": !!_ctx.$slots.list }])\n }, [\n $props.pageHeading ? (openBlock(), createElementBlock(\"h1\", _hoisted_1, toDisplayString($props.pageHeading), 1)) : createCommentVNode(\"\", true),\n !!_ctx.$slots.list ? (openBlock(), createElementBlock(Fragment, { key: 1 }, [\n $setup.isMobile || $props.layout === \"no-split\" ? (openBlock(), createElementBlock(\"div\", {\n key: 0,\n class: normalizeClass([\"app-content-wrapper app-content-wrapper--no-split\", {\n \"app-content-wrapper--show-details\": $props.showDetails,\n \"app-content-wrapper--show-list\": !$props.showDetails,\n \"app-content-wrapper--mobile\": $setup.isMobile\n }])\n }, [\n $props.showDetails ? (openBlock(), createBlock(_component_NcAppContentDetailsToggle, {\n key: 0,\n onClick: withModifiers($options.hideDetails, [\"stop\", \"prevent\"])\n }, null, 8, [\"onClick\"])) : createCommentVNode(\"\", true),\n withDirectives(createElementVNode(\"div\", _hoisted_2, [\n renderSlot(_ctx.$slots, \"list\", {}, void 0, true)\n ], 512), [\n [vShow, !$props.showDetails]\n ]),\n $props.showDetails ? renderSlot(_ctx.$slots, \"default\", { key: 1 }, void 0, true) : createCommentVNode(\"\", true)\n ], 2)) : $props.layout === \"vertical-split\" || $props.layout === \"horizontal-split\" ? (openBlock(), createElementBlock(\"div\", _hoisted_3, [\n createVNode(_component_Splitpanes, {\n horizontal: $props.layout === \"horizontal-split\",\n class: normalizeClass([\"default-theme\", {\n \"splitpanes--horizontal\": $props.layout === \"horizontal-split\",\n \"splitpanes--vertical\": $props.layout === \"vertical-split\"\n }]),\n rtl: $setup.isRtl,\n onResized: $options.handlePaneResize\n }, {\n default: withCtx(() => [\n createVNode(_component_Pane, {\n class: \"splitpanes__pane-list\",\n size: $data.listPaneSize || $options.paneDefaults.list.size,\n minSize: $options.paneDefaults.list.min,\n maxSize: $options.paneDefaults.list.max\n }, {\n default: withCtx(() => [\n renderSlot(_ctx.$slots, \"list\", {}, void 0, true)\n ]),\n _: 3\n }, 8, [\"size\", \"minSize\", \"maxSize\"]),\n createVNode(_component_Pane, {\n class: \"splitpanes__pane-details\",\n size: $options.detailsPaneSize,\n minSize: $options.paneDefaults.details.min,\n maxSize: $options.paneDefaults.details.max\n }, {\n default: withCtx(() => [\n renderSlot(_ctx.$slots, \"default\", {}, void 0, true)\n ]),\n _: 3\n }, 8, [\"size\", \"minSize\", \"maxSize\"])\n ]),\n _: 3\n }, 8, [\"horizontal\", \"class\", \"rtl\", \"onResized\"])\n ])) : createCommentVNode(\"\", true)\n ], 64)) : createCommentVNode(\"\", true),\n !_ctx.$slots.list ? renderSlot(_ctx.$slots, \"default\", { key: 2 }, void 0, true) : createCommentVNode(\"\", true)\n ], 2);\n}\nconst NcAppContent = /* @__PURE__ */ _export_sfc(_sfc_main, [[\"render\", _sfc_render], [\"__scopeId\", \"data-v-51427d61\"]]);\nexport {\n NcAppContent as N\n};\n//# sourceMappingURL=NcAppContent-DavgjaFX.mjs.map\n","/*!\n * SPDX-FileCopyrightText: 2025 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\nconst HAS_APP_NAVIGATION_KEY = /* @__PURE__ */ Symbol.for(\"NcContent:setHasAppNavigation\");\nconst CONTENT_SELECTOR_KEY = /* @__PURE__ */ Symbol.for(\"NcContent:selector\");\nexport {\n CONTENT_SELECTOR_KEY as C,\n HAS_APP_NAVIGATION_KEY as H\n};\n//# sourceMappingURL=constants-Ciwvl5xb.mjs.map\n","import '../assets/NcContent-DX4Rs6Pc.css';\nimport { defineComponent, provide, computed, ref, onBeforeMount, openBlock, createElementBlock, normalizeClass, unref, createBlock, Teleport, createElementVNode, toDisplayString, withDirectives, createVNode, withModifiers, withCtx, createTextVNode, vShow, renderSlot, nextTick } from \"vue\";\nimport { emit } from \"@nextcloud/event-bus\";\nimport { N as NcButton } from \"./NcButton-jvoYS2my.mjs\";\nimport { N as NcIconSvgWrapper } from \"./NcIconSvgWrapper-g8ubWhoz.mjs\";\nimport { useIsMobile } from \"../composables/useIsMobile/index.mjs\";\nimport { r as register, H as t30, a as t } from \"./_l10n-wdIzZwir.mjs\";\nimport { i as isLegacy34 } from \"./legacy-BoqDmOCa.mjs\";\nimport { H as HAS_APP_NAVIGATION_KEY, C as CONTENT_SELECTOR_KEY } from \"./constants-Ciwvl5xb.mjs\";\nimport { _ as _export_sfc } from \"./_plugin-vue_export-helper-1tPrXgE0.mjs\";\nregister(t30);\nconst contentSvg = '<!--\\n - SPDX-FileCopyrightText: 2023 Nextcloud GmbH and Nextcloud contributors\\n - SPDX-License-Identifier: AGPL-3.0-or-later\\n-->\\n<svg width=\"395\" height=\"314\" viewBox=\"0 0 395 314\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\\n<rect width=\"395\" height=\"314\" rx=\"11\" fill=\"#439DCD\"/>\\n<rect x=\"13\" y=\"51\" width=\"366\" height=\"248\" rx=\"8\" fill=\"white\"/>\\n<rect x=\"22\" y=\"111\" width=\"92\" height=\"12\" rx=\"6\" fill=\"#DEDEDE\"/>\\n<rect x=\"22\" y=\"127\" width=\"92\" height=\"12\" rx=\"6\" fill=\"#DEDEDE\"/>\\n<rect x=\"22\" y=\"63\" width=\"92\" height=\"12\" rx=\"6\" fill=\"#DEDEDE\"/>\\n<rect x=\"22\" y=\"191\" width=\"92\" height=\"12\" rx=\"6\" fill=\"#DEDEDE\"/>\\n<rect x=\"22\" y=\"143\" width=\"92\" height=\"12\" rx=\"6\" fill=\"#DEDEDE\"/>\\n<rect x=\"22\" y=\"79\" width=\"92\" height=\"12\" rx=\"6\" fill=\"#DEDEDE\"/>\\n<rect x=\"22\" y=\"159\" width=\"92\" height=\"12\" rx=\"6\" fill=\"#DEDEDE\"/>\\n<rect x=\"22\" y=\"95\" width=\"92\" height=\"12\" rx=\"6\" fill=\"#DEDEDE\"/>\\n<rect x=\"22\" y=\"175\" width=\"92\" height=\"12\" rx=\"6\" fill=\"#DEDEDE\"/>\\n<path d=\"M288 145C277.56 147.8 265.32 149 254 149C242.68 149 230.44 147.8 220 145L218 153C225.44 155 234 156.32 242 157V209H250V185H258V209H266V157C274 156.32 282.56 155 290 153L288 145ZM254 145C258.4 145 262 141.4 262 137C262 132.6 258.4 129 254 129C249.6 129 246 132.6 246 137C246 141.4 249.6 145 254 145Z\" fill=\"#DEDEDE\"/>\\n<path d=\"M43.5358 13C38.6641 13 34.535 16.2415 33.2552 20.6333C32.143 18.3038 29.7327 16.6718 26.9564 16.6718C23.1385 16.6718 20 19.7521 20 23.4993C20 27.2465 23.1385 30.3282 26.9564 30.3282C29.7327 30.3282 32.1429 28.6952 33.2552 26.3653C34.535 30.7575 38.6641 34 43.5358 34C48.3715 34 52.4796 30.8064 53.7921 26.4637C54.9249 28.7407 57.3053 30.3282 60.0421 30.3282C63.8601 30.3282 67 27.2465 67 23.4993C67 19.7521 63.8601 16.6718 60.0421 16.6718C57.3053 16.6718 54.9249 18.2583 53.7921 20.5349C52.4796 16.1926 48.3715 13 43.5358 13ZM43.5358 17.0079C47.2134 17.0079 50.1512 19.8899 50.1512 23.4993C50.1512 27.1087 47.2134 29.9921 43.5358 29.9921C39.8583 29.9921 36.9218 27.1087 36.9218 23.4993C36.9218 19.8899 39.8583 17.0079 43.5358 17.0079ZM26.9564 20.6797C28.5677 20.6797 29.8307 21.9179 29.8307 23.4993C29.8307 25.0807 28.5677 26.3203 26.9564 26.3203C25.3452 26.3203 24.0836 25.0807 24.0836 23.4993C24.0836 21.9179 25.3452 20.6797 26.9564 20.6797ZM60.0421 20.6797C61.6534 20.6797 62.9164 21.9179 62.9164 23.4993C62.9164 25.0807 61.6534 26.3203 60.0421 26.3203C58.4309 26.3203 57.1693 25.0807 57.1693 23.4993C57.1693 21.9179 58.4309 20.6797 60.0421 20.6797Z\" fill=\"white\"/>\\n<rect x=\"79\" y=\"20\" width=\"8\" height=\"8\" rx=\"4\" fill=\"white\"/>\\n<rect x=\"99\" y=\"20\" width=\"8\" height=\"8\" rx=\"4\" fill=\"white\"/>\\n<rect x=\"119\" y=\"20\" width=\"8\" height=\"8\" rx=\"4\" fill=\"white\"/>\\n<rect x=\"139\" y=\"20\" width=\"8\" height=\"8\" rx=\"4\" fill=\"white\"/>\\n<rect x=\"159\" y=\"20\" width=\"8\" height=\"8\" rx=\"4\" fill=\"white\"/>\\n<rect x=\"179\" y=\"20\" width=\"8\" height=\"8\" rx=\"4\" fill=\"white\"/>\\n<path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M12 0C5.37258 0 0 5.37259 0 12V302C0 308.627 5.37259 314 12 314H383C389.627 314 395 308.627 395 302V12C395 5.37258 389.627 0 383 0H12ZM140 44C132.268 44 126 50.268 126 58V292C126 299.732 132.268 306 140 306H372C379.732 306 386 299.732 386 292V58C386 50.268 379.732 44 372 44H140Z\" fill=\"black\" fill-opacity=\"0.35\"/>\\n</svg>\\n';\nconst navigationSvg = '<!--\\n - SPDX-FileCopyrightText: 2023 Nextcloud GmbH and Nextcloud contributors\\n - SPDX-License-Identifier: AGPL-3.0-or-later\\n-->\\n<svg width=\"395\" height=\"314\" viewBox=\"0 0 395 314\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\\n<rect width=\"395\" height=\"314\" rx=\"11\" fill=\"#439DCD\"/>\\n<rect x=\"13\" y=\"51\" width=\"366\" height=\"248\" rx=\"8\" fill=\"white\"/>\\n<rect x=\"22\" y=\"111\" width=\"92\" height=\"12\" rx=\"6\" fill=\"#DEDEDE\"/>\\n<rect x=\"22\" y=\"127\" width=\"92\" height=\"12\" rx=\"6\" fill=\"#DEDEDE\"/>\\n<rect x=\"22\" y=\"63\" width=\"92\" height=\"12\" rx=\"6\" fill=\"#DEDEDE\"/>\\n<rect x=\"22\" y=\"191\" width=\"92\" height=\"12\" rx=\"6\" fill=\"#DEDEDE\"/>\\n<rect x=\"22\" y=\"143\" width=\"92\" height=\"12\" rx=\"6\" fill=\"#DEDEDE\"/>\\n<rect x=\"22\" y=\"79\" width=\"92\" height=\"12\" rx=\"6\" fill=\"#DEDEDE\"/>\\n<rect x=\"22\" y=\"159\" width=\"92\" height=\"12\" rx=\"6\" fill=\"#DEDEDE\"/>\\n<rect x=\"22\" y=\"95\" width=\"92\" height=\"12\" rx=\"6\" fill=\"#DEDEDE\"/>\\n<rect x=\"22\" y=\"175\" width=\"92\" height=\"12\" rx=\"6\" fill=\"#DEDEDE\"/>\\n<path d=\"M288 145C277.56 147.8 265.32 149 254 149C242.68 149 230.44 147.8 220 145L218 153C225.44 155 234 156.32 242 157V209H250V185H258V209H266V157C274 156.32 282.56 155 290 153L288 145ZM254 145C258.4 145 262 141.4 262 137C262 132.6 258.4 129 254 129C249.6 129 246 132.6 246 137C246 141.4 249.6 145 254 145Z\" fill=\"#DEDEDE\"/>\\n<path d=\"M43.5358 13C38.6641 13 34.535 16.2415 33.2552 20.6333C32.143 18.3038 29.7327 16.6718 26.9564 16.6718C23.1385 16.6718 20 19.7521 20 23.4993C20 27.2465 23.1385 30.3282 26.9564 30.3282C29.7327 30.3282 32.1429 28.6952 33.2552 26.3653C34.535 30.7575 38.6641 34 43.5358 34C48.3715 34 52.4796 30.8064 53.7921 26.4637C54.9249 28.7407 57.3053 30.3282 60.0421 30.3282C63.8601 30.3282 67 27.2465 67 23.4993C67 19.7521 63.8601 16.6718 60.0421 16.6718C57.3053 16.6718 54.9249 18.2583 53.7921 20.5349C52.4796 16.1926 48.3715 13 43.5358 13ZM43.5358 17.0079C47.2134 17.0079 50.1512 19.8899 50.1512 23.4993C50.1512 27.1087 47.2134 29.9921 43.5358 29.9921C39.8583 29.9921 36.9218 27.1087 36.9218 23.4993C36.9218 19.8899 39.8583 17.0079 43.5358 17.0079ZM26.9564 20.6797C28.5677 20.6797 29.8307 21.9179 29.8307 23.4993C29.8307 25.0807 28.5677 26.3203 26.9564 26.3203C25.3452 26.3203 24.0836 25.0807 24.0836 23.4993C24.0836 21.9179 25.3452 20.6797 26.9564 20.6797ZM60.0421 20.6797C61.6534 20.6797 62.9164 21.9179 62.9164 23.4993C62.9164 25.0807 61.6534 26.3203 60.0421 26.3203C58.4309 26.3203 57.1693 25.0807 57.1693 23.4993C57.1693 21.9179 58.4309 20.6797 60.0421 20.6797Z\" fill=\"white\"/>\\n<rect x=\"79\" y=\"20\" width=\"8\" height=\"8\" rx=\"4\" fill=\"white\"/>\\n<rect x=\"99\" y=\"20\" width=\"8\" height=\"8\" rx=\"4\" fill=\"white\"/>\\n<rect x=\"119\" y=\"20\" width=\"8\" height=\"8\" rx=\"4\" fill=\"white\"/>\\n<rect x=\"139\" y=\"20\" width=\"8\" height=\"8\" rx=\"4\" fill=\"white\"/>\\n<rect x=\"159\" y=\"20\" width=\"8\" height=\"8\" rx=\"4\" fill=\"white\"/>\\n<rect x=\"179\" y=\"20\" width=\"8\" height=\"8\" rx=\"4\" fill=\"white\"/>\\n<path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M12 0C5.37258 0 0 5.37259 0 12V302C0 308.627 5.37259 314 12 314H383C389.627 314 395 308.627 395 302V12C395 5.37258 389.627 0 383 0H12ZM112 44C119.732 44 126 50.268 126 58V292C126 299.732 119.732 306 112 306H20C12.268 306 6 299.732 6 292V58C6 50.268 12.268 44 20 44H112Z\" fill=\"black\" fill-opacity=\"0.35\"/>\\n</svg>\\n';\nconst _hoisted_1 = { class: \"vue-skip-actions__container\" };\nconst _hoisted_2 = { class: \"vue-skip-actions__headline\" };\nconst _hoisted_3 = { class: \"vue-skip-actions__buttons\" };\nconst _sfc_main = /* @__PURE__ */ defineComponent({\n __name: \"NcContent\",\n props: {\n appName: {}\n },\n setup(__props) {\n const props = __props;\n provide(HAS_APP_NAVIGATION_KEY, setAppNavigation);\n provide(CONTENT_SELECTOR_KEY, \"#content-vue\");\n provide(\"appName\", computed(() => props.appName));\n const isMobile = useIsMobile();\n const hasAppNavigation = ref(false);\n const currentFocus = ref();\n const currentImage = computed(() => currentFocus.value === \"navigation\" ? navigationSvg : contentSvg);\n onBeforeMount(() => {\n const container = document.getElementById(\"skip-actions\");\n if (container) {\n container.innerHTML = \"\";\n container.classList.add(\"vue-skip-actions\");\n }\n });\n function openAppNavigation() {\n emit(\"toggle-navigation\", { open: true });\n nextTick(() => {\n window.location.hash = \"app-navigation-vue\";\n document.getElementById(\"app-navigation-vue\").focus();\n });\n }\n function setAppNavigation(value) {\n hasAppNavigation.value = value;\n if (!currentFocus.value) {\n currentFocus.value = \"navigation\";\n }\n }\n return (_ctx, _cache) => {\n return openBlock(), createElementBlock(\"div\", {\n id: \"content-vue\",\n class: normalizeClass([\"content\", [`app-${__props.appName.toLowerCase()}`, { \"content--legacy\": unref(isLegacy34) }]])\n }, [\n (openBlock(), createBlock(Teleport, { to: \"#skip-actions\" }, [\n createElementVNode(\"div\", _hoisted_1, [\n createElementVNode(\"div\", _hoisted_2, toDisplayString(unref(t)(\"Keyboard navigation help\")), 1),\n createElementVNode(\"div\", _hoisted_3, [\n withDirectives(createVNode(NcButton, {\n href: \"#app-navigation-vue\",\n variant: \"tertiary\",\n onClick: withModifiers(openAppNavigation, [\"prevent\"]),\n onFocusin: _cache[0] || (_cache[0] = ($event) => currentFocus.value = \"navigation\"),\n onMouseover: _cache[1] || (_cache[1] = ($event) => currentFocus.value = \"navigation\")\n }, {\n default: withCtx(() => [\n createTextVNode(toDisplayString(unref(t)(\"Skip to app navigation\")), 1)\n ]),\n _: 1\n }, 512), [\n [vShow, hasAppNavigation.value]\n ]),\n createVNode(NcButton, {\n href: \"#app-content-vue\",\n variant: \"tertiary\",\n onFocusin: _cache[2] || (_cache[2] = ($event) => currentFocus.value = \"content\"),\n onMouseover: _cache[3] || (_cache[3] = ($event) => currentFocus.value = \"content\")\n }, {\n default: withCtx(() => [\n createTextVNode(toDisplayString(unref(t)(\"Skip to main content\")), 1)\n ]),\n _: 1\n })\n ]),\n withDirectives(createVNode(NcIconSvgWrapper, {\n class: \"vue-skip-actions__image\",\n svg: currentImage.value,\n size: \"auto\"\n }, null, 8, [\"svg\"]), [\n [vShow, !unref(isMobile)]\n ])\n ])\n ])),\n renderSlot(_ctx.$slots, \"default\", {}, void 0, true)\n ], 2);\n };\n }\n});\nconst NcContent = /* @__PURE__ */ _export_sfc(_sfc_main, [[\"__scopeId\", \"data-v-d13dcb98\"]]);\nexport {\n NcContent as N\n};\n//# sourceMappingURL=NcContent-BYh5hWDN.mjs.map\n"],"names":["Pe","D","h","y","u","E","ce","k","M","z","n","m","x","S","c","f","_","R","r","P","O","b","t","a","o","K","I","d","A","U","W","J","$","N","v","p","H","ue","j","Q","V","Z","ee","e","F","ne","C","ie","te","T","L","ae","le","oe","se","q","B","G","X","re","fe","g","Y","ve","me","ge","w","l","de","pe","he","ze","xe","once","func","wasCalled","result","args","realAppName","appName","logger","APP_NAME","realAppVersion","appVersion","useAppName","inject","useLocalizedAppName","apps","loadState","realAppName2","id","register","t27","_sfc_main$1","defineComponent","__props","isMobile","useIsMobile","watch","toggleAppNavigationButton","onMounted","onBeforeUnmount","hide","appNavigationToggle","emit","_ctx","_cache","openBlock","createBlock","unref","NcButton","normalizeClass","withCtx","createVNode","NcIconSvgWrapper","mdiArrowRight","NcAppContentDetailsToggle","_export_sfc","browserStorage","getBuilder","instanceName","getCapabilities","_sfc_main","Pane","Splitpanes","value","isRtl","entries","part","useSwipe","direction","event","listPaneSize","_hoisted_1","_hoisted_2","_hoisted_3","_sfc_render","$props","$setup","$data","$options","_component_NcAppContentDetailsToggle","resolveComponent","_component_Pane","_component_Splitpanes","createElementBlock","toDisplayString","createCommentVNode","Fragment","withModifiers","withDirectives","createElementVNode","renderSlot","vShow","NcAppContent","HAS_APP_NAVIGATION_KEY","CONTENT_SELECTOR_KEY","t30","contentSvg","navigationSvg","props","provide","setAppNavigation","computed","hasAppNavigation","ref","currentFocus","currentImage","onBeforeMount","container","openAppNavigation","nextTick","isLegacy34","Teleport","$event","createTextVNode","NcContent"],"mappings":"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","x_google_ignoreList":[0,1,2,3,4]} \ No newline at end of file diff --git a/dist/NcContent-BYh5hWDN-BPQwUlVv.chunk.mjs.map.license b/dist/NcContent-BYh5hWDN-C1_miOvl.chunk.mjs.map.license similarity index 100% rename from dist/NcContent-BYh5hWDN-BPQwUlVv.chunk.mjs.map.license rename to dist/NcContent-BYh5hWDN-C1_miOvl.chunk.mjs.map.license diff --git a/dist/NcDateTime.vue_vue_type_script_setup_true_lang-BJuPH7S7-DKsF6FS9.chunk.mjs b/dist/NcDateTime.vue_vue_type_script_setup_true_lang-BJuPH7S7-BThMWOZt.chunk.mjs similarity index 95% rename from dist/NcDateTime.vue_vue_type_script_setup_true_lang-BJuPH7S7-DKsF6FS9.chunk.mjs rename to dist/NcDateTime.vue_vue_type_script_setup_true_lang-BJuPH7S7-BThMWOZt.chunk.mjs index c5048fdbff8b0..7dad6d5137275 100644 --- a/dist/NcDateTime.vue_vue_type_script_setup_true_lang-BJuPH7S7-DKsF6FS9.chunk.mjs +++ b/dist/NcDateTime.vue_vue_type_script_setup_true_lang-BJuPH7S7-BThMWOZt.chunk.mjs @@ -1,2 +1,2 @@ -import{A as d}from"./PencilOutline-DhyEf5vr.chunk.mjs";import{e as _,t as S,v as b}from"./NcModal-DiDvgcU8-7_SNLMd-.chunk.mjs";import{_ as f}from"./createElementId-DhjFt1I9-BmyhoOWk.chunk.mjs";import{o as a,f as o,g as n,i as x,O as g,y as k,t as l,h as y,r as C,k as v,w as I,b as h,u as w,v as m,a5 as p}from"./Web-DYqXJUev.chunk.mjs";const T={name:"NcActionLink",mixins:[d],inject:{isInSemanticMenu:{from:_,default:!1}},props:{href:{type:String,required:!0,validator:e=>{try{return new URL(e)}catch{return e.startsWith("#")||e.startsWith("/")}}},download:{type:String,default:null},target:{type:String,default:"_self",validator:e=>e&&(!e.startsWith("_")||["_blank","_self","_parent","_top"].indexOf(e)>-1)},title:{type:String,default:null}}},L=["role"],M=["download","href","aria-label","target","title","role"],U={key:0,class:"action-link__longtext-wrapper"},N={class:"action-link__name"},$=["textContent"],j=["textContent"],A={key:2,class:"action-link__text"};function O(e,t,i,u,c,r){return a(),o("li",{class:"action",role:r.isInSemanticMenu&&"presentation"},[n("a",{download:i.download,href:i.href,"aria-label":e.ariaLabel,target:i.target,title:i.title,class:"action-link focusable",rel:"nofollow noreferrer noopener",role:r.isInSemanticMenu&&"menuitem",onClick:t[0]||(t[0]=(...s)=>e.onClick&&e.onClick(...s))},[x(e.$slots,"icon",{},()=>[n("span",{"aria-hidden":"true",class:k(["action-link__icon",[e.isIconUrl?"action-link__icon--url":e.icon]]),style:g({backgroundImage:e.isIconUrl?`url(${e.icon})`:null})},null,6)],!0),e.name?(a(),o("span",U,[n("strong",N,l(e.name),1),t[1]||(t[1]=n("br",null,null,-1)),n("span",{class:"action-link__longtext",textContent:l(e.text)},null,8,$)])):e.isLongText?(a(),o("span",{key:1,class:"action-link__longtext",textContent:l(e.text)},null,8,j)):(a(),o("span",A,l(e.text),1)),y("",!0)],8,M)],8,L)}const X=f(T,[["render",O],["__scopeId","data-v-32f01b7a"]]),R={name:"NcActionRouter",mixins:[d],inject:{isInSemanticMenu:{from:_,default:!1}},props:{to:{type:[String,Object],required:!0}}},W=["role"],q={key:0,class:"action-router__longtext-wrapper"},B={class:"action-router__name"},D=["textContent"],z=["textContent"],E={key:2,class:"action-router__text"};function F(e,t,i,u,c,r){const s=C("RouterLink");return a(),o("li",{class:"action",role:r.isInSemanticMenu&&"presentation"},[v(s,{"aria-label":e.ariaLabel,class:"action-router focusable",rel:"nofollow noreferrer noopener",role:r.isInSemanticMenu&&"menuitem",title:e.title,to:i.to,onClick:e.onClick},{default:I(()=>[x(e.$slots,"icon",{},()=>[n("span",{"aria-hidden":"true",class:k(["action-router__icon",[e.isIconUrl?"action-router__icon--url":e.icon]]),style:g({backgroundImage:e.isIconUrl?`url(${e.icon})`:null})},null,6)],!0),e.name?(a(),o("span",q,[n("strong",B,l(e.name),1),t[0]||(t[0]=n("br",null,null,-1)),n("span",{class:"action-router__longtext",textContent:l(e.text)},null,8,D)])):e.isLongText?(a(),o("span",{key:1,class:"action-router__longtext",textContent:l(e.text)},null,8,z)):(a(),o("span",E,l(e.text),1)),y("",!0)]),_:3},8,["aria-label","role","title","to","onClick"])],8,W)}const Y=f(R,[["render",F],["__scopeId","data-v-87267750"]]),G=["data-timestamp","title","textContent"],Z=h({__name:"NcDateTime",props:{timestamp:{},format:{default:()=>({timeStyle:"medium",dateStyle:"short"})},relativeTime:{type:[Boolean,String],default:"long"},ignoreSeconds:{type:Boolean}},setup(e){const t=e,i=m(()=>({format:t.format})),u=m(()=>({ignoreSeconds:t.ignoreSeconds,relativeTime:t.relativeTime||"long",update:t.relativeTime!==!1})),c=b(p(()=>t.timestamp),i),r=S(p(()=>t.timestamp),u),s=m(()=>t.relativeTime?r.value:c.value);return(H,J)=>(a(),o("span",{class:"nc-datetime",dir:"auto","data-timestamp":e.timestamp,title:w(c),textContent:l(s.value)},null,8,G))}});export{X as N,Z as _,Y as a}; -//# sourceMappingURL=NcDateTime.vue_vue_type_script_setup_true_lang-BJuPH7S7-DKsF6FS9.chunk.mjs.map +import{A as d}from"./PencilOutline-CA_ZiZlA.chunk.mjs";import{e as _,t as S,v as b}from"./NcModal-DiDvgcU8-Cb_C64qI.chunk.mjs";import{_ as f}from"./createElementId-DhjFt1I9-BmyhoOWk.chunk.mjs";import{o as a,f as o,g as n,i as x,O as g,y as k,t as l,h as y,r as C,k as v,w as I,b as h,u as w,v as m,a5 as p}from"./Web-DYqXJUev.chunk.mjs";const T={name:"NcActionLink",mixins:[d],inject:{isInSemanticMenu:{from:_,default:!1}},props:{href:{type:String,required:!0,validator:e=>{try{return new URL(e)}catch{return e.startsWith("#")||e.startsWith("/")}}},download:{type:String,default:null},target:{type:String,default:"_self",validator:e=>e&&(!e.startsWith("_")||["_blank","_self","_parent","_top"].indexOf(e)>-1)},title:{type:String,default:null}}},L=["role"],M=["download","href","aria-label","target","title","role"],U={key:0,class:"action-link__longtext-wrapper"},N={class:"action-link__name"},$=["textContent"],j=["textContent"],A={key:2,class:"action-link__text"};function O(e,t,i,u,c,r){return a(),o("li",{class:"action",role:r.isInSemanticMenu&&"presentation"},[n("a",{download:i.download,href:i.href,"aria-label":e.ariaLabel,target:i.target,title:i.title,class:"action-link focusable",rel:"nofollow noreferrer noopener",role:r.isInSemanticMenu&&"menuitem",onClick:t[0]||(t[0]=(...s)=>e.onClick&&e.onClick(...s))},[x(e.$slots,"icon",{},()=>[n("span",{"aria-hidden":"true",class:k(["action-link__icon",[e.isIconUrl?"action-link__icon--url":e.icon]]),style:g({backgroundImage:e.isIconUrl?`url(${e.icon})`:null})},null,6)],!0),e.name?(a(),o("span",U,[n("strong",N,l(e.name),1),t[1]||(t[1]=n("br",null,null,-1)),n("span",{class:"action-link__longtext",textContent:l(e.text)},null,8,$)])):e.isLongText?(a(),o("span",{key:1,class:"action-link__longtext",textContent:l(e.text)},null,8,j)):(a(),o("span",A,l(e.text),1)),y("",!0)],8,M)],8,L)}const X=f(T,[["render",O],["__scopeId","data-v-32f01b7a"]]),R={name:"NcActionRouter",mixins:[d],inject:{isInSemanticMenu:{from:_,default:!1}},props:{to:{type:[String,Object],required:!0}}},W=["role"],q={key:0,class:"action-router__longtext-wrapper"},B={class:"action-router__name"},D=["textContent"],z=["textContent"],E={key:2,class:"action-router__text"};function F(e,t,i,u,c,r){const s=C("RouterLink");return a(),o("li",{class:"action",role:r.isInSemanticMenu&&"presentation"},[v(s,{"aria-label":e.ariaLabel,class:"action-router focusable",rel:"nofollow noreferrer noopener",role:r.isInSemanticMenu&&"menuitem",title:e.title,to:i.to,onClick:e.onClick},{default:I(()=>[x(e.$slots,"icon",{},()=>[n("span",{"aria-hidden":"true",class:k(["action-router__icon",[e.isIconUrl?"action-router__icon--url":e.icon]]),style:g({backgroundImage:e.isIconUrl?`url(${e.icon})`:null})},null,6)],!0),e.name?(a(),o("span",q,[n("strong",B,l(e.name),1),t[0]||(t[0]=n("br",null,null,-1)),n("span",{class:"action-router__longtext",textContent:l(e.text)},null,8,D)])):e.isLongText?(a(),o("span",{key:1,class:"action-router__longtext",textContent:l(e.text)},null,8,z)):(a(),o("span",E,l(e.text),1)),y("",!0)]),_:3},8,["aria-label","role","title","to","onClick"])],8,W)}const Y=f(R,[["render",F],["__scopeId","data-v-87267750"]]),G=["data-timestamp","title","textContent"],Z=h({__name:"NcDateTime",props:{timestamp:{},format:{default:()=>({timeStyle:"medium",dateStyle:"short"})},relativeTime:{type:[Boolean,String],default:"long"},ignoreSeconds:{type:Boolean}},setup(e){const t=e,i=m(()=>({format:t.format})),u=m(()=>({ignoreSeconds:t.ignoreSeconds,relativeTime:t.relativeTime||"long",update:t.relativeTime!==!1})),c=b(p(()=>t.timestamp),i),r=S(p(()=>t.timestamp),u),s=m(()=>t.relativeTime?r.value:c.value);return(H,J)=>(a(),o("span",{class:"nc-datetime",dir:"auto","data-timestamp":e.timestamp,title:w(c),textContent:l(s.value)},null,8,G))}});export{X as N,Z as _,Y as a}; +//# sourceMappingURL=NcDateTime.vue_vue_type_script_setup_true_lang-BJuPH7S7-BThMWOZt.chunk.mjs.map diff --git a/dist/NcDateTime.vue_vue_type_script_setup_true_lang-BJuPH7S7-DKsF6FS9.chunk.mjs.license b/dist/NcDateTime.vue_vue_type_script_setup_true_lang-BJuPH7S7-BThMWOZt.chunk.mjs.license similarity index 100% rename from dist/NcDateTime.vue_vue_type_script_setup_true_lang-BJuPH7S7-DKsF6FS9.chunk.mjs.license rename to dist/NcDateTime.vue_vue_type_script_setup_true_lang-BJuPH7S7-BThMWOZt.chunk.mjs.license diff --git a/dist/NcDateTime.vue_vue_type_script_setup_true_lang-BJuPH7S7-DKsF6FS9.chunk.mjs.map b/dist/NcDateTime.vue_vue_type_script_setup_true_lang-BJuPH7S7-BThMWOZt.chunk.mjs.map similarity index 99% rename from dist/NcDateTime.vue_vue_type_script_setup_true_lang-BJuPH7S7-DKsF6FS9.chunk.mjs.map rename to dist/NcDateTime.vue_vue_type_script_setup_true_lang-BJuPH7S7-BThMWOZt.chunk.mjs.map index fa629eefb2de9..adececeb76a9d 100644 --- a/dist/NcDateTime.vue_vue_type_script_setup_true_lang-BJuPH7S7-DKsF6FS9.chunk.mjs.map +++ b/dist/NcDateTime.vue_vue_type_script_setup_true_lang-BJuPH7S7-BThMWOZt.chunk.mjs.map @@ -1 +1 @@ -{"version":3,"file":"NcDateTime.vue_vue_type_script_setup_true_lang-BJuPH7S7-DKsF6FS9.chunk.mjs","sources":["../node_modules/@nextcloud/vue/dist/chunks/NcActionLink-BFiaYt9A.mjs","../node_modules/@nextcloud/vue/dist/chunks/NcActionRouter-vYFtIOzD.mjs","../node_modules/@nextcloud/vue/dist/chunks/NcDateTime.vue_vue_type_script_setup_true_lang-BJuPH7S7.mjs"],"sourcesContent":["import '../assets/NcActionLink-b4Ph5q10.css';\nimport { A as ActionTextMixin } from \"./actionText-BXR0sWNu.mjs\";\nimport { a as NC_ACTIONS_IS_SEMANTIC_MENU } from \"./useNcActions-BzPO2c4h.mjs\";\nimport { openBlock, createElementBlock, createElementVNode, renderSlot, normalizeStyle, normalizeClass, toDisplayString, createCommentVNode } from \"vue\";\nimport { _ as _export_sfc } from \"./_plugin-vue_export-helper-1tPrXgE0.mjs\";\nconst _sfc_main = {\n name: \"NcActionLink\",\n mixins: [ActionTextMixin],\n inject: {\n isInSemanticMenu: {\n from: NC_ACTIONS_IS_SEMANTIC_MENU,\n default: false\n }\n },\n props: {\n /**\n * destionation to link to\n */\n href: {\n type: String,\n required: true,\n validator: (value) => {\n try {\n return new URL(value);\n } catch {\n return value.startsWith(\"#\") || value.startsWith(\"/\");\n }\n }\n },\n /**\n * download the link instead of opening\n */\n download: {\n type: String,\n default: null\n },\n /**\n * target to open the link\n */\n target: {\n type: String,\n default: \"_self\",\n validator: (value) => {\n return value && (!value.startsWith(\"_\") || [\"_blank\", \"_self\", \"_parent\", \"_top\"].indexOf(value) > -1);\n }\n },\n /**\n * Declares a native tooltip when not null\n */\n title: {\n type: String,\n default: null\n }\n }\n};\nconst _hoisted_1 = [\"role\"];\nconst _hoisted_2 = [\"download\", \"href\", \"aria-label\", \"target\", \"title\", \"role\"];\nconst _hoisted_3 = {\n key: 0,\n class: \"action-link__longtext-wrapper\"\n};\nconst _hoisted_4 = { class: \"action-link__name\" };\nconst _hoisted_5 = [\"textContent\"];\nconst _hoisted_6 = [\"textContent\"];\nconst _hoisted_7 = {\n key: 2,\n class: \"action-link__text\"\n};\nfunction _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {\n return openBlock(), createElementBlock(\"li\", {\n class: \"action\",\n role: $options.isInSemanticMenu && \"presentation\"\n }, [\n createElementVNode(\"a\", {\n download: $props.download,\n href: $props.href,\n \"aria-label\": _ctx.ariaLabel,\n target: $props.target,\n title: $props.title,\n class: \"action-link focusable\",\n rel: \"nofollow noreferrer noopener\",\n role: $options.isInSemanticMenu && \"menuitem\",\n onClick: _cache[0] || (_cache[0] = (...args) => _ctx.onClick && _ctx.onClick(...args))\n }, [\n renderSlot(_ctx.$slots, \"icon\", {}, () => [\n createElementVNode(\"span\", {\n \"aria-hidden\": \"true\",\n class: normalizeClass([\"action-link__icon\", [_ctx.isIconUrl ? \"action-link__icon--url\" : _ctx.icon]]),\n style: normalizeStyle({ backgroundImage: _ctx.isIconUrl ? `url(${_ctx.icon})` : null })\n }, null, 6)\n ], true),\n _ctx.name ? (openBlock(), createElementBlock(\"span\", _hoisted_3, [\n createElementVNode(\"strong\", _hoisted_4, toDisplayString(_ctx.name), 1),\n _cache[1] || (_cache[1] = createElementVNode(\"br\", null, null, -1)),\n createElementVNode(\"span\", {\n class: \"action-link__longtext\",\n textContent: toDisplayString(_ctx.text)\n }, null, 8, _hoisted_5)\n ])) : _ctx.isLongText ? (openBlock(), createElementBlock(\"span\", {\n key: 1,\n class: \"action-link__longtext\",\n textContent: toDisplayString(_ctx.text)\n }, null, 8, _hoisted_6)) : (openBlock(), createElementBlock(\"span\", _hoisted_7, toDisplayString(_ctx.text), 1)),\n createCommentVNode(\"\", true)\n ], 8, _hoisted_2)\n ], 8, _hoisted_1);\n}\nconst NcActionLink = /* @__PURE__ */ _export_sfc(_sfc_main, [[\"render\", _sfc_render], [\"__scopeId\", \"data-v-32f01b7a\"]]);\nexport {\n NcActionLink as N\n};\n//# sourceMappingURL=NcActionLink-BFiaYt9A.mjs.map\n","import '../assets/NcActionRouter-BWXfCfxM.css';\nimport { A as ActionTextMixin } from \"./actionText-BXR0sWNu.mjs\";\nimport { a as NC_ACTIONS_IS_SEMANTIC_MENU } from \"./useNcActions-BzPO2c4h.mjs\";\nimport { resolveComponent, openBlock, createElementBlock, createVNode, withCtx, renderSlot, createElementVNode, normalizeStyle, normalizeClass, toDisplayString, createCommentVNode } from \"vue\";\nimport { _ as _export_sfc } from \"./_plugin-vue_export-helper-1tPrXgE0.mjs\";\nconst _sfc_main = {\n name: \"NcActionRouter\",\n mixins: [ActionTextMixin],\n inject: {\n isInSemanticMenu: {\n from: NC_ACTIONS_IS_SEMANTIC_MENU,\n default: false\n }\n },\n props: {\n /**\n * router-link to prop [https://router.vuejs.org/api/#to](https://router.vuejs.org/api/#to)\n */\n to: {\n type: [String, Object],\n required: true\n }\n }\n};\nconst _hoisted_1 = [\"role\"];\nconst _hoisted_2 = {\n key: 0,\n class: \"action-router__longtext-wrapper\"\n};\nconst _hoisted_3 = { class: \"action-router__name\" };\nconst _hoisted_4 = [\"textContent\"];\nconst _hoisted_5 = [\"textContent\"];\nconst _hoisted_6 = {\n key: 2,\n class: \"action-router__text\"\n};\nfunction _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {\n const _component_RouterLink = resolveComponent(\"RouterLink\");\n return openBlock(), createElementBlock(\"li\", {\n class: \"action\",\n role: $options.isInSemanticMenu && \"presentation\"\n }, [\n createVNode(_component_RouterLink, {\n \"aria-label\": _ctx.ariaLabel,\n class: \"action-router focusable\",\n rel: \"nofollow noreferrer noopener\",\n role: $options.isInSemanticMenu && \"menuitem\",\n title: _ctx.title,\n to: $props.to,\n onClick: _ctx.onClick\n }, {\n default: withCtx(() => [\n renderSlot(_ctx.$slots, \"icon\", {}, () => [\n createElementVNode(\"span\", {\n \"aria-hidden\": \"true\",\n class: normalizeClass([\"action-router__icon\", [_ctx.isIconUrl ? \"action-router__icon--url\" : _ctx.icon]]),\n style: normalizeStyle({ backgroundImage: _ctx.isIconUrl ? `url(${_ctx.icon})` : null })\n }, null, 6)\n ], true),\n _ctx.name ? (openBlock(), createElementBlock(\"span\", _hoisted_2, [\n createElementVNode(\"strong\", _hoisted_3, toDisplayString(_ctx.name), 1),\n _cache[0] || (_cache[0] = createElementVNode(\"br\", null, null, -1)),\n createElementVNode(\"span\", {\n class: \"action-router__longtext\",\n textContent: toDisplayString(_ctx.text)\n }, null, 8, _hoisted_4)\n ])) : _ctx.isLongText ? (openBlock(), createElementBlock(\"span\", {\n key: 1,\n class: \"action-router__longtext\",\n textContent: toDisplayString(_ctx.text)\n }, null, 8, _hoisted_5)) : (openBlock(), createElementBlock(\"span\", _hoisted_6, toDisplayString(_ctx.text), 1)),\n createCommentVNode(\"\", true)\n ]),\n _: 3\n }, 8, [\"aria-label\", \"role\", \"title\", \"to\", \"onClick\"])\n ], 8, _hoisted_1);\n}\nconst NcActionRouter = /* @__PURE__ */ _export_sfc(_sfc_main, [[\"render\", _sfc_render], [\"__scopeId\", \"data-v-87267750\"]]);\nexport {\n NcActionRouter as N\n};\n//# sourceMappingURL=NcActionRouter-vYFtIOzD.mjs.map\n","import { defineComponent, computed, toRef, openBlock, createElementBlock, toDisplayString, unref } from \"vue\";\nimport { useFormatTime, useFormatRelativeTime } from \"../composables/useFormatDateTime/index.mjs\";\nconst _hoisted_1 = [\"data-timestamp\", \"title\", \"textContent\"];\nconst _sfc_main = /* @__PURE__ */ defineComponent({\n __name: \"NcDateTime\",\n props: {\n timestamp: {},\n format: { default: () => ({ timeStyle: \"medium\", dateStyle: \"short\" }) },\n relativeTime: { type: [Boolean, String], default: \"long\" },\n ignoreSeconds: { type: Boolean }\n },\n setup(__props) {\n const props = __props;\n const timeOptions = computed(() => ({ format: props.format }));\n const relativeTimeOptions = computed(() => ({\n ignoreSeconds: props.ignoreSeconds,\n relativeTime: props.relativeTime || \"long\",\n update: props.relativeTime !== false\n }));\n const title = useFormatTime(toRef(() => props.timestamp), timeOptions);\n const relativeTime = useFormatRelativeTime(toRef(() => props.timestamp), relativeTimeOptions);\n const formattedTime = computed(() => props.relativeTime ? relativeTime.value : title.value);\n return (_ctx, _cache) => {\n return openBlock(), createElementBlock(\"span\", {\n class: \"nc-datetime\",\n dir: \"auto\",\n \"data-timestamp\": __props.timestamp,\n title: unref(title),\n textContent: toDisplayString(formattedTime.value)\n }, null, 8, _hoisted_1);\n };\n }\n});\nexport {\n _sfc_main as _\n};\n//# sourceMappingURL=NcDateTime.vue_vue_type_script_setup_true_lang-BJuPH7S7.mjs.map\n"],"names":["_sfc_main","ActionTextMixin","NC_ACTIONS_IS_SEMANTIC_MENU","value","_hoisted_1","_hoisted_2","_hoisted_3","_hoisted_4","_hoisted_5","_hoisted_6","_hoisted_7","_sfc_render","_ctx","_cache","$props","$setup","$data","$options","openBlock","createElementBlock","createElementVNode","args","renderSlot","normalizeClass","normalizeStyle","toDisplayString","createCommentVNode","NcActionLink","_export_sfc","_component_RouterLink","resolveComponent","createVNode","withCtx","NcActionRouter","defineComponent","__props","props","timeOptions","computed","relativeTimeOptions","title","useFormatTime","toRef","relativeTime","useFormatRelativeTime","formattedTime","unref"],"mappings":"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","x_google_ignoreList":[0,1,2]} \ No newline at end of file +{"version":3,"file":"NcDateTime.vue_vue_type_script_setup_true_lang-BJuPH7S7-BThMWOZt.chunk.mjs","sources":["../node_modules/@nextcloud/vue/dist/chunks/NcActionLink-BFiaYt9A.mjs","../node_modules/@nextcloud/vue/dist/chunks/NcActionRouter-vYFtIOzD.mjs","../node_modules/@nextcloud/vue/dist/chunks/NcDateTime.vue_vue_type_script_setup_true_lang-BJuPH7S7.mjs"],"sourcesContent":["import '../assets/NcActionLink-b4Ph5q10.css';\nimport { A as ActionTextMixin } from \"./actionText-BXR0sWNu.mjs\";\nimport { a as NC_ACTIONS_IS_SEMANTIC_MENU } from \"./useNcActions-BzPO2c4h.mjs\";\nimport { openBlock, createElementBlock, createElementVNode, renderSlot, normalizeStyle, normalizeClass, toDisplayString, createCommentVNode } from \"vue\";\nimport { _ as _export_sfc } from \"./_plugin-vue_export-helper-1tPrXgE0.mjs\";\nconst _sfc_main = {\n name: \"NcActionLink\",\n mixins: [ActionTextMixin],\n inject: {\n isInSemanticMenu: {\n from: NC_ACTIONS_IS_SEMANTIC_MENU,\n default: false\n }\n },\n props: {\n /**\n * destionation to link to\n */\n href: {\n type: String,\n required: true,\n validator: (value) => {\n try {\n return new URL(value);\n } catch {\n return value.startsWith(\"#\") || value.startsWith(\"/\");\n }\n }\n },\n /**\n * download the link instead of opening\n */\n download: {\n type: String,\n default: null\n },\n /**\n * target to open the link\n */\n target: {\n type: String,\n default: \"_self\",\n validator: (value) => {\n return value && (!value.startsWith(\"_\") || [\"_blank\", \"_self\", \"_parent\", \"_top\"].indexOf(value) > -1);\n }\n },\n /**\n * Declares a native tooltip when not null\n */\n title: {\n type: String,\n default: null\n }\n }\n};\nconst _hoisted_1 = [\"role\"];\nconst _hoisted_2 = [\"download\", \"href\", \"aria-label\", \"target\", \"title\", \"role\"];\nconst _hoisted_3 = {\n key: 0,\n class: \"action-link__longtext-wrapper\"\n};\nconst _hoisted_4 = { class: \"action-link__name\" };\nconst _hoisted_5 = [\"textContent\"];\nconst _hoisted_6 = [\"textContent\"];\nconst _hoisted_7 = {\n key: 2,\n class: \"action-link__text\"\n};\nfunction _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {\n return openBlock(), createElementBlock(\"li\", {\n class: \"action\",\n role: $options.isInSemanticMenu && \"presentation\"\n }, [\n createElementVNode(\"a\", {\n download: $props.download,\n href: $props.href,\n \"aria-label\": _ctx.ariaLabel,\n target: $props.target,\n title: $props.title,\n class: \"action-link focusable\",\n rel: \"nofollow noreferrer noopener\",\n role: $options.isInSemanticMenu && \"menuitem\",\n onClick: _cache[0] || (_cache[0] = (...args) => _ctx.onClick && _ctx.onClick(...args))\n }, [\n renderSlot(_ctx.$slots, \"icon\", {}, () => [\n createElementVNode(\"span\", {\n \"aria-hidden\": \"true\",\n class: normalizeClass([\"action-link__icon\", [_ctx.isIconUrl ? \"action-link__icon--url\" : _ctx.icon]]),\n style: normalizeStyle({ backgroundImage: _ctx.isIconUrl ? `url(${_ctx.icon})` : null })\n }, null, 6)\n ], true),\n _ctx.name ? (openBlock(), createElementBlock(\"span\", _hoisted_3, [\n createElementVNode(\"strong\", _hoisted_4, toDisplayString(_ctx.name), 1),\n _cache[1] || (_cache[1] = createElementVNode(\"br\", null, null, -1)),\n createElementVNode(\"span\", {\n class: \"action-link__longtext\",\n textContent: toDisplayString(_ctx.text)\n }, null, 8, _hoisted_5)\n ])) : _ctx.isLongText ? (openBlock(), createElementBlock(\"span\", {\n key: 1,\n class: \"action-link__longtext\",\n textContent: toDisplayString(_ctx.text)\n }, null, 8, _hoisted_6)) : (openBlock(), createElementBlock(\"span\", _hoisted_7, toDisplayString(_ctx.text), 1)),\n createCommentVNode(\"\", true)\n ], 8, _hoisted_2)\n ], 8, _hoisted_1);\n}\nconst NcActionLink = /* @__PURE__ */ _export_sfc(_sfc_main, [[\"render\", _sfc_render], [\"__scopeId\", \"data-v-32f01b7a\"]]);\nexport {\n NcActionLink as N\n};\n//# sourceMappingURL=NcActionLink-BFiaYt9A.mjs.map\n","import '../assets/NcActionRouter-BWXfCfxM.css';\nimport { A as ActionTextMixin } from \"./actionText-BXR0sWNu.mjs\";\nimport { a as NC_ACTIONS_IS_SEMANTIC_MENU } from \"./useNcActions-BzPO2c4h.mjs\";\nimport { resolveComponent, openBlock, createElementBlock, createVNode, withCtx, renderSlot, createElementVNode, normalizeStyle, normalizeClass, toDisplayString, createCommentVNode } from \"vue\";\nimport { _ as _export_sfc } from \"./_plugin-vue_export-helper-1tPrXgE0.mjs\";\nconst _sfc_main = {\n name: \"NcActionRouter\",\n mixins: [ActionTextMixin],\n inject: {\n isInSemanticMenu: {\n from: NC_ACTIONS_IS_SEMANTIC_MENU,\n default: false\n }\n },\n props: {\n /**\n * router-link to prop [https://router.vuejs.org/api/#to](https://router.vuejs.org/api/#to)\n */\n to: {\n type: [String, Object],\n required: true\n }\n }\n};\nconst _hoisted_1 = [\"role\"];\nconst _hoisted_2 = {\n key: 0,\n class: \"action-router__longtext-wrapper\"\n};\nconst _hoisted_3 = { class: \"action-router__name\" };\nconst _hoisted_4 = [\"textContent\"];\nconst _hoisted_5 = [\"textContent\"];\nconst _hoisted_6 = {\n key: 2,\n class: \"action-router__text\"\n};\nfunction _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {\n const _component_RouterLink = resolveComponent(\"RouterLink\");\n return openBlock(), createElementBlock(\"li\", {\n class: \"action\",\n role: $options.isInSemanticMenu && \"presentation\"\n }, [\n createVNode(_component_RouterLink, {\n \"aria-label\": _ctx.ariaLabel,\n class: \"action-router focusable\",\n rel: \"nofollow noreferrer noopener\",\n role: $options.isInSemanticMenu && \"menuitem\",\n title: _ctx.title,\n to: $props.to,\n onClick: _ctx.onClick\n }, {\n default: withCtx(() => [\n renderSlot(_ctx.$slots, \"icon\", {}, () => [\n createElementVNode(\"span\", {\n \"aria-hidden\": \"true\",\n class: normalizeClass([\"action-router__icon\", [_ctx.isIconUrl ? \"action-router__icon--url\" : _ctx.icon]]),\n style: normalizeStyle({ backgroundImage: _ctx.isIconUrl ? `url(${_ctx.icon})` : null })\n }, null, 6)\n ], true),\n _ctx.name ? (openBlock(), createElementBlock(\"span\", _hoisted_2, [\n createElementVNode(\"strong\", _hoisted_3, toDisplayString(_ctx.name), 1),\n _cache[0] || (_cache[0] = createElementVNode(\"br\", null, null, -1)),\n createElementVNode(\"span\", {\n class: \"action-router__longtext\",\n textContent: toDisplayString(_ctx.text)\n }, null, 8, _hoisted_4)\n ])) : _ctx.isLongText ? (openBlock(), createElementBlock(\"span\", {\n key: 1,\n class: \"action-router__longtext\",\n textContent: toDisplayString(_ctx.text)\n }, null, 8, _hoisted_5)) : (openBlock(), createElementBlock(\"span\", _hoisted_6, toDisplayString(_ctx.text), 1)),\n createCommentVNode(\"\", true)\n ]),\n _: 3\n }, 8, [\"aria-label\", \"role\", \"title\", \"to\", \"onClick\"])\n ], 8, _hoisted_1);\n}\nconst NcActionRouter = /* @__PURE__ */ _export_sfc(_sfc_main, [[\"render\", _sfc_render], [\"__scopeId\", \"data-v-87267750\"]]);\nexport {\n NcActionRouter as N\n};\n//# sourceMappingURL=NcActionRouter-vYFtIOzD.mjs.map\n","import { defineComponent, computed, toRef, openBlock, createElementBlock, toDisplayString, unref } from \"vue\";\nimport { useFormatTime, useFormatRelativeTime } from \"../composables/useFormatDateTime/index.mjs\";\nconst _hoisted_1 = [\"data-timestamp\", \"title\", \"textContent\"];\nconst _sfc_main = /* @__PURE__ */ defineComponent({\n __name: \"NcDateTime\",\n props: {\n timestamp: {},\n format: { default: () => ({ timeStyle: \"medium\", dateStyle: \"short\" }) },\n relativeTime: { type: [Boolean, String], default: \"long\" },\n ignoreSeconds: { type: Boolean }\n },\n setup(__props) {\n const props = __props;\n const timeOptions = computed(() => ({ format: props.format }));\n const relativeTimeOptions = computed(() => ({\n ignoreSeconds: props.ignoreSeconds,\n relativeTime: props.relativeTime || \"long\",\n update: props.relativeTime !== false\n }));\n const title = useFormatTime(toRef(() => props.timestamp), timeOptions);\n const relativeTime = useFormatRelativeTime(toRef(() => props.timestamp), relativeTimeOptions);\n const formattedTime = computed(() => props.relativeTime ? relativeTime.value : title.value);\n return (_ctx, _cache) => {\n return openBlock(), createElementBlock(\"span\", {\n class: \"nc-datetime\",\n dir: \"auto\",\n \"data-timestamp\": __props.timestamp,\n title: unref(title),\n textContent: toDisplayString(formattedTime.value)\n }, null, 8, _hoisted_1);\n };\n }\n});\nexport {\n _sfc_main as _\n};\n//# sourceMappingURL=NcDateTime.vue_vue_type_script_setup_true_lang-BJuPH7S7.mjs.map\n"],"names":["_sfc_main","ActionTextMixin","NC_ACTIONS_IS_SEMANTIC_MENU","value","_hoisted_1","_hoisted_2","_hoisted_3","_hoisted_4","_hoisted_5","_hoisted_6","_hoisted_7","_sfc_render","_ctx","_cache","$props","$setup","$data","$options","openBlock","createElementBlock","createElementVNode","args","renderSlot","normalizeClass","normalizeStyle","toDisplayString","createCommentVNode","NcActionLink","_export_sfc","_component_RouterLink","resolveComponent","createVNode","withCtx","NcActionRouter","defineComponent","__props","props","timeOptions","computed","relativeTimeOptions","title","useFormatTime","toRef","relativeTime","useFormatRelativeTime","formattedTime","unref"],"mappings":"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","x_google_ignoreList":[0,1,2]} \ No newline at end of file diff --git a/dist/NcDateTime.vue_vue_type_script_setup_true_lang-BJuPH7S7-DKsF6FS9.chunk.mjs.map.license b/dist/NcDateTime.vue_vue_type_script_setup_true_lang-BJuPH7S7-BThMWOZt.chunk.mjs.map.license similarity index 100% rename from dist/NcDateTime.vue_vue_type_script_setup_true_lang-BJuPH7S7-DKsF6FS9.chunk.mjs.map.license rename to dist/NcDateTime.vue_vue_type_script_setup_true_lang-BJuPH7S7-BThMWOZt.chunk.mjs.map.license diff --git a/dist/NcEmojiPicker-UTxgju3f-HSbVMwrx.chunk.mjs b/dist/NcEmojiPicker-UTxgju3f-D4QbKSIV.chunk.mjs similarity index 99% rename from dist/NcEmojiPicker-UTxgju3f-HSbVMwrx.chunk.mjs rename to dist/NcEmojiPicker-UTxgju3f-D4QbKSIV.chunk.mjs index b4f186920f9ac..3cb00709720ef 100644 --- a/dist/NcEmojiPicker-UTxgju3f-HSbVMwrx.chunk.mjs +++ b/dist/NcEmojiPicker-UTxgju3f-D4QbKSIV.chunk.mjs @@ -1,2 +1,2 @@ -import{s as ce,g as he,d as me}from"./emoji-C8k9NUlo-BQiX-d8c.chunk.mjs";import{o as c,f as h,F as k,B as A,O,y as E,g as m,c as L,w as b,t as _,C as de,h as C,r as j,k as v,J as Y,aj as ue,a6 as y,i as T,K as pe,m as ee,L as je,q as ge,G as we,M as ve}from"./Web-DYqXJUev.chunk.mjs";import{_ as x}from"./public-C1mLBHT3.chunk.mjs";import{q as fe,r as ye,s as _e}from"./NcModal-DiDvgcU8-7_SNLMd-.chunk.mjs";import{r as ke,q as Ce,s as Ee,u as Se,v as be,b as d,_ as te}from"./createElementId-DhjFt1I9-BmyhoOWk.chunk.mjs";import xe from"./index-BRPJrOcF.chunk.mjs";import{C as P}from"./colors-Cv9F-jWS-BFJACjQq.chunk.mjs";import{N as Pe}from"./logger-D3RVzcfQ-Bt9JRPzn.chunk.mjs";import{_ as Ae}from"./NcTextField.vue_vue_type_script_setup_true_lang-Bx2esFU2-D61trFet.chunk.mjs";var V="emoji-mart";const Oe=JSON;var ie=typeof window<"u"&&"localStorage"in window;let H,R;function Fe(i){i||(i={}),H=i.getter,R=i.setter}function Me(i){V=i}function Ie(i){for(let e in i){let t=i[e];oe(e,t)}}function oe(i,e){if(R)R(i,e);else{if(!ie)return;try{window.localStorage[`${V}.${i}`]=Oe.stringify(e)}catch{}}}function Te(i){if(H)return H(i);if(ie){try{var e=window.localStorage[`${V}.${i}`]}catch{return}if(e)return JSON.parse(e)}}const F={update:Ie,set:oe,get:Te,setNamespace:Me,setHandlers:Fe},$={name:"a",unified:"b",non_qualified:"c",has_img_apple:"d",has_img_google:"e",has_img_twitter:"f",has_img_facebook:"h",keywords:"j",sheet:"k",emoticons:"l",text:"m",short_names:"n",added_in:"o"},se=i=>{const e=[];var t=(s,r)=>{s&&(Array.isArray(s)?s:[s]).forEach(o=>{(r?o.split(/[-|_|\s]+/):[o]).forEach(n=>{n=n.toLowerCase(),e.indexOf(n)==-1&&e.push(n)})})};return t(i.short_names,!0),t(i.name,!0),t(i.keywords,!1),t(i.emoticons,!1),e.join(",")};function re(i){var e=Object.getOwnPropertyNames(i);for(let t of e){let s=i[t];i[t]=s&&typeof s=="object"?re(s):s}return Object.freeze(i)}const Le=i=>{if(!i.compressed)return i;i.compressed=!1;for(let e in i.emojis){let t=i.emojis[e];for(let s in $)t[s]=t[$[s]],delete t[$[s]];t.short_names||(t.short_names=[]),t.short_names.unshift(e),t.sheet_x=t.sheet[0],t.sheet_y=t.sheet[1],delete t.sheet,t.text||(t.text=""),t.added_in||(t.added_in=6),t.added_in=t.added_in.toFixed(1),t.search=se(t)}return i=re(i),i},q=["+1","grinning","kissing_heart","heart_eyes","laughing","stuck_out_tongue_winking_eye","sweat_smile","joy","scream","disappointed","unamused","weary","sob","sunglasses","heart","hankey"];let f,W,D={};function ne(){W=!0,f=F.get("frequently")}function ze(i){W||ne();var{id:e}=i;f||(f=D),f[e]||(f[e]=0),f[e]+=1,F.set("last",e),F.set("frequently",f)}function Ne(i){if(W||ne(),!f){D={};const o=[];let n=Math.min(i,q.length);for(let a=0;a<n;a++)D[q[a]]=parseInt((n-a)/4,10)+1,o.push(q[a]);return o}const e=i,t=[];for(let o in f)f.hasOwnProperty(o)&&t.push(o);const s=t.sort((o,n)=>f[o]-f[n]).reverse().slice(0,e),r=F.get("last");return r&&s.indexOf(r)==-1&&(s.pop(),s.push(r)),s}const U={add:ze,get:Ne},$e={activity:'<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="24" height="24"><path d="M12 0C5.373 0 0 5.372 0 12c0 6.627 5.373 12 12 12 6.628 0 12-5.373 12-12 0-6.628-5.372-12-12-12m9.949 11H17.05c.224-2.527 1.232-4.773 1.968-6.113A9.966 9.966 0 0 1 21.949 11M13 11V2.051a9.945 9.945 0 0 1 4.432 1.564c-.858 1.491-2.156 4.22-2.392 7.385H13zm-2 0H8.961c-.238-3.165-1.536-5.894-2.393-7.385A9.95 9.95 0 0 1 11 2.051V11zm0 2v8.949a9.937 9.937 0 0 1-4.432-1.564c.857-1.492 2.155-4.221 2.393-7.385H11zm4.04 0c.236 3.164 1.534 5.893 2.392 7.385A9.92 9.92 0 0 1 13 21.949V13h2.04zM4.982 4.887C5.718 6.227 6.726 8.473 6.951 11h-4.9a9.977 9.977 0 0 1 2.931-6.113M2.051 13h4.9c-.226 2.527-1.233 4.771-1.969 6.113A9.972 9.972 0 0 1 2.051 13m16.967 6.113c-.735-1.342-1.744-3.586-1.968-6.113h4.899a9.961 9.961 0 0 1-2.931 6.113"/></svg>',custom:'<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="24" height="24"><g transform="translate(2.000000, 1.000000)"><rect id="Rectangle" x="8" y="0" width="3" height="21" rx="1.5"></rect><rect id="Rectangle" transform="translate(9.843, 10.549) rotate(60) translate(-9.843, -10.549) " x="8.343" y="0.049" width="3" height="21" rx="1.5"></rect><rect id="Rectangle" transform="translate(9.843, 10.549) rotate(-60) translate(-9.843, -10.549) " x="8.343" y="0.049" width="3" height="21" rx="1.5"></rect></g></svg>',flags:'<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="24" height="24"><path d="M0 0l6.084 24H8L1.916 0zM21 5h-4l-1-4H4l3 12h3l1 4h13L21 5zM6.563 3h7.875l2 8H8.563l-2-8zm8.832 10l-2.856 1.904L12.063 13h3.332zM19 13l-1.5-6h1.938l2 8H16l3-2z"/></svg>',foods:'<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="24" height="24"><path d="M17 4.978c-1.838 0-2.876.396-3.68.934.513-1.172 1.768-2.934 4.68-2.934a1 1 0 0 0 0-2c-2.921 0-4.629 1.365-5.547 2.512-.064.078-.119.162-.18.244C11.73 1.838 10.798.023 9.207.023 8.579.022 7.85.306 7 .978 5.027 2.54 5.329 3.902 6.492 4.999 3.609 5.222 0 7.352 0 12.969c0 4.582 4.961 11.009 9 11.009 1.975 0 2.371-.486 3-1 .629.514 1.025 1 3 1 4.039 0 9-6.418 9-11 0-5.953-4.055-8-7-8M8.242 2.546c.641-.508.943-.523.965-.523.426.169.975 1.405 1.357 3.055-1.527-.629-2.741-1.352-2.98-1.846.059-.112.241-.356.658-.686M15 21.978c-1.08 0-1.21-.109-1.559-.402l-.176-.146c-.367-.302-.816-.452-1.266-.452s-.898.15-1.266.452l-.176.146c-.347.292-.477.402-1.557.402-2.813 0-7-5.389-7-9.009 0-5.823 4.488-5.991 5-5.991 1.939 0 2.484.471 3.387 1.251l.323.276a1.995 1.995 0 0 0 2.58 0l.323-.276c.902-.78 1.447-1.251 3.387-1.251.512 0 5 .168 5 6 0 3.617-4.187 9-7 9"/></svg>',nature:'<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="24" height="24"><path d="M15.5 8a1.5 1.5 0 1 0 .001 3.001A1.5 1.5 0 0 0 15.5 8M8.5 8a1.5 1.5 0 1 0 .001 3.001A1.5 1.5 0 0 0 8.5 8"/><path d="M18.933 0h-.027c-.97 0-2.138.787-3.018 1.497-1.274-.374-2.612-.51-3.887-.51-1.285 0-2.616.133-3.874.517C7.245.79 6.069 0 5.093 0h-.027C3.352 0 .07 2.67.002 7.026c-.039 2.479.276 4.238 1.04 5.013.254.258.882.677 1.295.882.191 3.177.922 5.238 2.536 6.38.897.637 2.187.949 3.2 1.102C8.04 20.6 8 20.795 8 21c0 1.773 2.35 3 4 3 1.648 0 4-1.227 4-3 0-.201-.038-.393-.072-.586 2.573-.385 5.435-1.877 5.925-7.587.396-.22.887-.568 1.104-.788.763-.774 1.079-2.534 1.04-5.013C23.929 2.67 20.646 0 18.933 0M3.223 9.135c-.237.281-.837 1.155-.884 1.238-.15-.41-.368-1.349-.337-3.291.051-3.281 2.478-4.972 3.091-5.031.256.015.731.27 1.265.646-1.11 1.171-2.275 2.915-2.352 5.125-.133.546-.398.858-.783 1.313M12 22c-.901 0-1.954-.693-2-1 0-.654.475-1.236 1-1.602V20a1 1 0 1 0 2 0v-.602c.524.365 1 .947 1 1.602-.046.307-1.099 1-2 1m3-3.48v.02a4.752 4.752 0 0 0-1.262-1.02c1.092-.516 2.239-1.334 2.239-2.217 0-1.842-1.781-2.195-3.977-2.195-2.196 0-3.978.354-3.978 2.195 0 .883 1.148 1.701 2.238 2.217A4.8 4.8 0 0 0 9 18.539v-.025c-1-.076-2.182-.281-2.973-.842-1.301-.92-1.838-3.045-1.853-6.478l.023-.041c.496-.826 1.49-1.45 1.804-3.102 0-2.047 1.357-3.631 2.362-4.522C9.37 3.178 10.555 3 11.948 3c1.447 0 2.685.192 3.733.57 1 .9 2.316 2.465 2.316 4.48.313 1.651 1.307 2.275 1.803 3.102.035.058.068.117.102.178-.059 5.967-1.949 7.01-4.902 7.19m6.628-8.202c-.037-.065-.074-.13-.113-.195a7.587 7.587 0 0 0-.739-.987c-.385-.455-.648-.768-.782-1.313-.076-2.209-1.241-3.954-2.353-5.124.531-.376 1.004-.63 1.261-.647.636.071 3.044 1.764 3.096 5.031.027 1.81-.347 3.218-.37 3.235"/></svg>',objects:'<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="24" height="24"><path d="M12 0a9 9 0 0 0-5 16.482V21s2.035 3 5 3 5-3 5-3v-4.518A9 9 0 0 0 12 0zm0 2c3.86 0 7 3.141 7 7s-3.14 7-7 7-7-3.141-7-7 3.14-7 7-7zM9 17.477c.94.332 1.946.523 3 .523s2.06-.19 3-.523v.834c-.91.436-1.925.689-3 .689a6.924 6.924 0 0 1-3-.69v-.833zm.236 3.07A8.854 8.854 0 0 0 12 21c.965 0 1.888-.167 2.758-.451C14.155 21.173 13.153 22 12 22c-1.102 0-2.117-.789-2.764-1.453z"/><path d="M14.745 12.449h-.004c-.852-.024-1.188-.858-1.577-1.824-.421-1.061-.703-1.561-1.182-1.566h-.009c-.481 0-.783.497-1.235 1.537-.436.982-.801 1.811-1.636 1.791l-.276-.043c-.565-.171-.853-.691-1.284-1.794-.125-.313-.202-.632-.27-.913-.051-.213-.127-.53-.195-.634C7.067 9.004 7.039 9 6.99 9A1 1 0 0 1 7 7h.01c1.662.017 2.015 1.373 2.198 2.134.486-.981 1.304-2.058 2.797-2.075 1.531.018 2.28 1.153 2.731 2.141l.002-.008C14.944 8.424 15.327 7 16.979 7h.032A1 1 0 1 1 17 9h-.011c-.149.076-.256.474-.319.709a6.484 6.484 0 0 1-.311.951c-.429.973-.79 1.789-1.614 1.789"/></svg>',smileys:'<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="24" height="24"><path d="M12 0C5.373 0 0 5.373 0 12s5.373 12 12 12 12-5.373 12-12S18.627 0 12 0m0 22C6.486 22 2 17.514 2 12S6.486 2 12 2s10 4.486 10 10-4.486 10-10 10"/><path d="M8 7a2 2 0 1 0-.001 3.999A2 2 0 0 0 8 7M16 7a2 2 0 1 0-.001 3.999A2 2 0 0 0 16 7M15.232 15c-.693 1.195-1.87 2-3.349 2-1.477 0-2.655-.805-3.347-2H15m3-2H6a6 6 0 1 0 12 0"/></svg>',people:'<svg xmlns:svg="http://www.w3.org/2000/svg" height="24" width="24" viewBox="0 0 24 24"> <path id="path3814" d="m 3.3591089,21.17726 c 0.172036,0.09385 4.265994,2.29837 8.8144451,2.29837 4.927767,0 8.670894,-2.211883 8.82782,-2.306019 0.113079,-0.06785 0.182268,-0.190051 0.182267,-0.321923 0,-3.03119 -0.929494,-5.804936 -2.617196,-7.810712 -1.180603,-1.403134 -2.661918,-2.359516 -4.295699,-2.799791 4.699118,-2.236258 3.102306,-9.28617162 -2.097191,-9.28617162 -5.1994978,0 -6.7963103,7.04991362 -2.097192,9.28617162 -1.6337821,0.440275 -3.1150971,1.396798 -4.2956991,2.799791 -1.687703,2.005776 -2.617196,4.779522 -2.617196,7.810712 1.2e-6,0.137378 0.075039,0.263785 0.195641,0.329572 z M 8.0439319,5.8308783 C 8.0439309,2.151521 12.492107,0.30955811 15.093491,2.9109411 17.694874,5.5123241 15.852911,9.9605006 12.173554,9.9605 9.8938991,9.9579135 8.0465186,8.1105332 8.0439319,5.8308783 Z m -1.688782,7.6894977 c 1.524535,-1.811449 3.5906601,-2.809035 5.8184041,-2.809035 2.227744,0 4.293869,0.997586 5.818404,2.809035 1.533639,1.822571 2.395932,4.339858 2.439152,7.108301 -0.803352,0.434877 -4.141636,2.096112 -8.257556,2.096112 -3.8062921,0 -7.3910861,-1.671043 -8.2573681,-2.104981 0.04505,-2.765017 0.906968,-5.278785 2.438964,-7.099432 z" /> <path id="path3816" d="M 12.173828 0.38867188 C 9.3198513 0.38867187 7.3770988 2.3672285 6.8652344 4.6308594 C 6.4218608 6.5916015 7.1153562 8.7676117 8.9648438 10.126953 C 7.6141249 10.677376 6.3550511 11.480944 5.3496094 12.675781 C 3.5629317 14.799185 2.6015625 17.701475 2.6015625 20.847656 C 2.6015654 21.189861 2.7894276 21.508002 3.0898438 21.671875 C 3.3044068 21.788925 7.4436239 24.039062 12.173828 24.039062 C 17.269918 24.039062 21.083568 21.776786 21.291016 21.652344 C 21.57281 21.483266 21.746097 21.176282 21.746094 20.847656 C 21.746094 17.701475 20.78277 14.799185 18.996094 12.675781 C 17.990455 11.480591 16.733818 10.675362 15.382812 10.125 C 17.231132 8.7655552 17.925675 6.5910701 17.482422 4.6308594 C 16.970557 2.3672285 15.027805 0.38867188 12.173828 0.38867188 z M 12.792969 2.3007812 C 13.466253 2.4161792 14.125113 2.7383941 14.695312 3.3085938 C 15.835712 4.4489931 15.985604 5.9473549 15.46875 7.1953125 C 14.951896 8.4432701 13.786828 9.3984378 12.173828 9.3984375 C 10.197719 9.3961954 8.607711 7.806187 8.6054688 5.8300781 C 8.6054683 4.2170785 9.5606362 3.0520102 10.808594 2.5351562 C 11.432573 2.2767293 12.119685 2.1853833 12.792969 2.3007812 z M 12.173828 11.273438 C 14.233647 11.273438 16.133674 12.185084 17.5625 13.882812 C 18.93069 15.508765 19.698347 17.776969 19.808594 20.283203 C 18.807395 20.800235 15.886157 22.162109 12.173828 22.162109 C 8.7614632 22.162109 5.6245754 20.787069 4.5390625 20.265625 C 4.6525896 17.766717 5.4203315 15.504791 6.7851562 13.882812 C 8.2139827 12.185084 10.11401 11.273438 12.173828 11.273438 z " /> </svg>',places:'<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="24" height="24"><path d="M6.5 12C5.122 12 4 13.121 4 14.5S5.122 17 6.5 17 9 15.879 9 14.5 7.878 12 6.5 12m0 3c-.275 0-.5-.225-.5-.5s.225-.5.5-.5.5.225.5.5-.225.5-.5.5M17.5 12c-1.378 0-2.5 1.121-2.5 2.5s1.122 2.5 2.5 2.5 2.5-1.121 2.5-2.5-1.122-2.5-2.5-2.5m0 3c-.275 0-.5-.225-.5-.5s.225-.5.5-.5.5.225.5.5-.225.5-.5.5"/><path d="M22.482 9.494l-1.039-.346L21.4 9h.6c.552 0 1-.439 1-.992 0-.006-.003-.008-.003-.008H23c0-1-.889-2-1.984-2h-.642l-.731-1.717C19.262 3.012 18.091 2 16.764 2H7.236C5.909 2 4.738 3.012 4.357 4.283L3.626 6h-.642C1.889 6 1 7 1 8h.003S1 8.002 1 8.008C1 8.561 1.448 9 2 9h.6l-.043.148-1.039.346a2.001 2.001 0 0 0-1.359 2.097l.751 7.508a1 1 0 0 0 .994.901H3v1c0 1.103.896 2 2 2h2c1.104 0 2-.897 2-2v-1h6v1c0 1.103.896 2 2 2h2c1.104 0 2-.897 2-2v-1h1.096a.999.999 0 0 0 .994-.901l.751-7.508a2.001 2.001 0 0 0-1.359-2.097M6.273 4.857C6.402 4.43 6.788 4 7.236 4h9.527c.448 0 .834.43.963.857L19.313 9H4.688l1.585-4.143zM7 21H5v-1h2v1zm12 0h-2v-1h2v1zm2.189-3H2.811l-.662-6.607L3 11h18l.852.393L21.189 18z"/></svg>',recent:'<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="24" height="24"><path d="M13 4h-2l-.001 7H9v2h2v2h2v-2h4v-2h-4z"/><path d="M12 0C5.373 0 0 5.373 0 12s5.373 12 12 12 12-5.373 12-12S18.627 0 12 0m0 22C6.486 22 2 17.514 2 12S6.486 2 12 2s10 4.486 10 10-4.486 10-10 10"/></svg>',symbols:'<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="24" height="24"><path d="M0 0h11v2H0zM4 11h3V6h4V4H0v2h4zM15.5 17c1.381 0 2.5-1.116 2.5-2.493s-1.119-2.493-2.5-2.493S13 13.13 13 14.507 14.119 17 15.5 17m0-2.986c.276 0 .5.222.5.493 0 .272-.224.493-.5.493s-.5-.221-.5-.493.224-.493.5-.493M21.5 19.014c-1.381 0-2.5 1.116-2.5 2.493S20.119 24 21.5 24s2.5-1.116 2.5-2.493-1.119-2.493-2.5-2.493m0 2.986a.497.497 0 0 1-.5-.493c0-.271.224-.493.5-.493s.5.222.5.493a.497.497 0 0 1-.5.493M22 13l-9 9 1.513 1.5 8.99-9.009zM17 11c2.209 0 4-1.119 4-2.5V2s.985-.161 1.498.949C23.01 4.055 23 6 23 6s1-1.119 1-3.135C24-.02 21 0 21 0h-2v6.347A5.853 5.853 0 0 0 17 6c-2.209 0-4 1.119-4 2.5s1.791 2.5 4 2.5M10.297 20.482l-1.475-1.585a47.54 47.54 0 0 1-1.442 1.129c-.307-.288-.989-1.016-2.045-2.183.902-.836 1.479-1.466 1.729-1.892s.376-.871.376-1.336c0-.592-.273-1.178-.818-1.759-.546-.581-1.329-.871-2.349-.871-1.008 0-1.79.293-2.344.879-.556.587-.832 1.181-.832 1.784 0 .813.419 1.748 1.256 2.805-.847.614-1.444 1.208-1.794 1.784a3.465 3.465 0 0 0-.523 1.833c0 .857.308 1.56.924 2.107.616.549 1.423.823 2.42.823 1.173 0 2.444-.379 3.813-1.137L8.235 24h2.819l-2.09-2.383 1.333-1.135zm-6.736-6.389a1.02 1.02 0 0 1 .73-.286c.31 0 .559.085.747.254a.849.849 0 0 1 .283.659c0 .518-.419 1.112-1.257 1.784-.536-.651-.805-1.231-.805-1.742a.901.901 0 0 1 .302-.669M3.74 22c-.427 0-.778-.116-1.057-.349-.279-.232-.418-.487-.418-.766 0-.594.509-1.288 1.527-2.083.968 1.134 1.717 1.946 2.248 2.438-.921.507-1.686.76-2.3.76"/></svg>'},qe={props:{i18n:{type:Object,required:!0},color:{type:String},categories:{type:Array,required:!0},activeCategory:{type:Object,default(){return{}}}},emits:["click"],created(){this.svgs=$e}},Be={role:"tablist",class:"emoji-mart-anchors"},He=["aria-label","aria-selected","data-title","onClick"],Re=["innerHTML"];function De(i,e,t,s,r,o){return c(),h("div",Be,[(c(!0),h(k,null,A(t.categories,n=>(c(),h("button",{role:"tab",type:"button","aria-label":n.name,"aria-selected":n.id==t.activeCategory.id,key:n.id,class:E({"emoji-mart-anchor":!0,"emoji-mart-anchor-selected":n.id==t.activeCategory.id}),style:O({color:n.id==t.activeCategory.id?t.color:""}),"data-title":t.i18n.categories[n.id],onClick:a=>i.$emit("click",n)},[m("div",{"aria-hidden":"true",innerHTML:i.svgs[n.id]},null,8,Re),m("span",{"aria-hidden":"true",class:"emoji-mart-anchor-bar",style:O({backgroundColor:t.color})},null,4)],14,He))),128))])}const Ue=x(qe,[["render",De]]),Ve=String,We=Ve.fromCodePoint||function(){var i=16384,e=[],t,s,r=-1,o=arguments.length;if(!o)return"";for(var n="";++r<o;){var a=Number(arguments[r]);if(!isFinite(a)||a<0||a>1114111||Math.floor(a)!=a)throw RangeError("Invalid code point: "+a);a<=65535?e.push(a):(a-=65536,t=(a>>10)+55296,s=a%1024+56320,e.push(t,s)),(r+1===o||e.length>i)&&(n+=String.fromCharCode.apply(null,e),e.length=0)}return n};function Ke(i){var e=i.split("-"),t=e.map(s=>`0x${s}`);return We.apply(null,t)}function Z(i){return i.reduce((e,t)=>(e.indexOf(t)===-1&&e.push(t),e),[])}function Ge(i,e){const t=Z(i),s=Z(e);return t.filter(r=>s.indexOf(r)>=0)}function ae(i,e){var t={};for(let s in i){let r=i[s],o=r;Object.prototype.hasOwnProperty.call(e,s)&&(o=e[s]),typeof o=="object"&&(o=ae(r,o)),t[s]=o}return t}function Je(){if(typeof document>"u")return 0;const i=document.createElement("div");i.style.width="100px",i.style.height="100px",i.style.overflow="scroll",i.style.position="absolute",i.style.top="-9999px",document.body.appendChild(i);const e=i.offsetWidth-i.clientWidth;return document.body.removeChild(i),e}const Ze=61,Qe=/^(?:\:([^\:]+)\:)(?:\:skin-tone-(\d)\:)?$/,Q=["1F3FA","1F3FB","1F3FC","1F3FD","1F3FE","1F3FF"];class Xe{constructor(e,{emojisToShowFilter:t,include:s,exclude:r,custom:o,recent:n,recentLength:a=20}={}){this._data=Le(e),this._emojisFilter=t||null,this._include=s||null,this._exclude=r||null,this._custom=o||[],this._recent=n||U.get(a),this._emojis={},this._nativeEmojis={},this._emoticons={},this._categories=[],this._recentCategory={id:"recent",name:"Recent",emojis:[]},this._customCategory={id:"custom",name:"Custom",emojis:[]},this._searchIndex={},this.buildIndex(),Object.freeze(this)}buildIndex(){let e=this._data.categories;if(this._include&&(e=e.filter(t=>this._include.includes(t.id)),e=e.sort((t,s)=>{const r=this._include.indexOf(t.id),o=this._include.indexOf(s.id);return r<o?-1:r>o?1:0})),e.forEach(t=>{if(!this.isCategoryNeeded(t.id))return;let s={id:t.id,name:t.name,emojis:[]};t.emojis.forEach(r=>{let o=this.addEmoji(r);o&&s.emojis.push(o)}),s.emojis.length&&this._categories.push(s)}),this.isCategoryNeeded("custom")){if(this._custom.length>0)for(let t of this._custom)this.addCustomEmoji(t);this._customCategory.emojis.length&&this._categories.push(this._customCategory)}this.isCategoryNeeded("recent")&&(this._recent.length&&this._recent.map(t=>{for(let s of this._customCategory.emojis)if(s.id===t){this._recentCategory.emojis.push(s);return}this.hasEmoji(t)&&this._recentCategory.emojis.push(this.emoji(t))}),this._recentCategory.emojis.length&&this._categories.unshift(this._recentCategory))}findEmoji(e,t){let s=e.match(Qe);if(s&&(e=s[1],s[2]&&(t=parseInt(s[2],10))),this._data.aliases.hasOwnProperty(e)&&(e=this._data.aliases[e]),this._emojis.hasOwnProperty(e)){let r=this._emojis[e];return t?r.getSkin(t):r}return this._nativeEmojis.hasOwnProperty(e)?this._nativeEmojis[e]:null}categories(){return this._categories}emoji(e){this._data.aliases.hasOwnProperty(e)&&(e=this._data.aliases[e]);let t=this._emojis[e];if(!t)throw new Error("Can not find emoji by id: "+e);return t}firstEmoji(){let e=this._emojis[Object.keys(this._emojis)[0]];if(!e)throw new Error("Can not get first emoji");return e}hasEmoji(e){return this._data.aliases.hasOwnProperty(e)&&(e=this._data.aliases[e]),!!this._emojis[e]}nativeEmoji(e){return this._nativeEmojis.hasOwnProperty(e)?this._nativeEmojis[e]:null}search(e,t){if(t||(t=75),!e.length)return null;if(e=="-"||e=="-1")return[this.emoji("-1")];let s=e.toLowerCase().split(/[\s|,|\-|_]+/),r=[];s.length>2&&(s=[s[0],s[1]]),r=s.map(n=>{let a=this._emojis,l=this._searchIndex,g=0;for(let p=0;p<n.length;p++){const S=n[p];if(g++,l[S]||(l[S]={}),l=l[S],!l.results){let M={};l.results=[],l.emojis={};for(let w in a){let u=a[w],N=u._data.search,I=n.substr(0,g),G=N.indexOf(I);if(G!=-1){let J=G+1;I==w&&(J=0),l.results.push(u),l.emojis[w]=u,M[w]=J}}l.results.sort((w,u)=>{var N=M[w.id],I=M[u.id];return N-I})}a=l.emojis}return l.results}).filter(n=>n);var o=null;return r.length>1?o=Ge.apply(null,r):r.length?o=r[0]:o=[],o&&o.length>t&&(o=o.slice(0,t)),o}addCustomEmoji(e){let t=Object.assign({},e,{id:e.short_names[0],custom:!0});t.search||(t.search=se(t));let s=new z(t);return this._emojis[s.id]=s,this._customCategory.emojis.push(s),s}addEmoji(e){let t=this._data.emojis[e];if(!this.isEmojiNeeded(t))return!1;let s=new z(t);if(this._emojis[e]=s,s.native&&(this._nativeEmojis[s.native]=s),s._skins)for(let r in s._skins){let o=s._skins[r];o.native&&(this._nativeEmojis[o.native]=o)}return s.emoticons&&s.emoticons.forEach(r=>{this._emoticons[r]||(this._emoticons[r]=e)}),s}isCategoryNeeded(e){let t=this._include&&this._include.length?this._include.indexOf(e)>-1:!0,s=this._exclude&&this._exclude.length?this._exclude.indexOf(e)>-1:!1;return!(!t||s)}isEmojiNeeded(e){return this._emojisFilter?this._emojisFilter(e):!0}}class z{constructor(e){if(this._data=Object.assign({},e),this._skins=null,this._data.skin_variations){this._skins=[];for(var t in Q){let s=Q[t],r=this._data.skin_variations[s],o=Object.assign({},e);for(let n in r)o[n]=r[n];delete o.skin_variations,o.skin_tone=parseInt(t)+1,this._skins.push(new z(o))}}this._sanitized=Ye(this._data);for(let s in this._sanitized)this[s]=this._sanitized[s];this.short_names=this._data.short_names,this.short_name=this._data.short_names[0],Object.freeze(this)}getSkin(e){return e&&e!="native"&&this._skins?this._skins[e-1]:this}getPosition(){let e=Ze-1,t=+(100/e*this._data.sheet_x).toFixed(2),s=+(100/e*this._data.sheet_y).toFixed(2);return`${t}% ${s}%`}ariaLabel(){return[this.native].concat(this.short_names).filter(Boolean).join(", ")}}class le{constructor(e,t,s,r,o,n,a){this._emoji=e,this._native=r,this._skin=t,this._set=s,this._fallback=o,this.canRender=this._canRender(),this.cssClass=this._cssClass(),this.cssStyle=this._cssStyle(a),this.content=this._content(),this.title=n===!0?e.short_name:null,this.ariaLabel=e.ariaLabel(),Object.freeze(this)}getEmoji(){return this._emoji.getSkin(this._skin)}_canRender(){return this._isCustom()||this._isNative()||this._hasEmoji()||this._fallback}_cssClass(){return["emoji-set-"+this._set,"emoji-type-"+this._emojiType()]}_cssStyle(e){let t={};return this._isCustom()?t={backgroundImage:"url("+this.getEmoji()._data.imageUrl+")",backgroundSize:"100%",width:e+"px",height:e+"px"}:this._hasEmoji()&&!this._isNative()&&(t={backgroundPosition:this.getEmoji().getPosition()}),e&&(this._isNative()?t=Object.assign(t,{fontSize:Math.round(e*.95*10)/10+"px"}):t=Object.assign(t,{width:e+"px",height:e+"px"})),t}_content(){return this._isCustom()?"":this._isNative()?this.getEmoji().native:this._hasEmoji()?"":this._fallback?this._fallback(this.getEmoji()):null}_isNative(){return this._native}_isCustom(){return this.getEmoji().custom}_hasEmoji(){if(!this.getEmoji()._data)return!1;const e=this.getEmoji()._data["has_img_"+this._set];return e===void 0?!0:e}_emojiType(){return this._isCustom()?"custom":this._isNative()?"native":this._hasEmoji()?"image":"fallback"}}function Ye(i){var{name:e,short_names:t,skin_tone:s,skin_variations:r,emoticons:o,unified:n,custom:a,imageUrl:l}=i,g=i.id||t[0],p=`:${g}:`;return a?{id:g,name:e,colons:p,emoticons:o,custom:a,imageUrl:l}:(s&&(p+=`:skin-tone-${s}:`),{id:g,name:e,colons:p,emoticons:o,unified:n.toLowerCase(),skin:s||(r?1:null),native:Ke(n)})}const et={native:{type:Boolean,default:!1},tooltip:{type:Boolean,default:!1},fallback:{type:Function},skin:{type:Number,default:1},set:{type:String,default:"apple"},emoji:{type:[String,Object],required:!0},size:{type:Number,default:null},tag:{type:String,default:"span"}},tt={perLine:{type:Number,default:9},maxSearchResults:{type:Number,default:75},emojiSize:{type:Number,default:24},title:{type:String,default:"Emoji Mart™"},emoji:{type:String,default:"department_store"},color:{type:String,default:"#ae65c5"},set:{type:String,default:"apple"},skin:{type:Number,default:null},defaultSkin:{type:Number,default:1},native:{type:Boolean,default:!1},emojiTooltip:{type:Boolean,default:!1},autoFocus:{type:Boolean,default:!1},i18n:{type:Object,default(){return{}}},showPreview:{type:Boolean,default:!0},showSearch:{type:Boolean,default:!0},showCategories:{type:Boolean,default:!0},showSkinTones:{type:Boolean,default:!0},infiniteScroll:{type:Boolean,default:!0},pickerStyles:{type:Object,default(){return{}}}},it={props:{...et,data:{type:Object,required:!0}},emits:["click","mouseenter","mouseleave"],computed:{view(){return new le(this.emojiObject,this.skin,this.set,this.native,this.fallback,this.tooltip,this.size)},sanitizedData(){return this.emojiObject._sanitized},title(){return this.tooltip?this.emojiObject.short_name:null},emojiObject(){return typeof this.emoji=="string"?this.data.findEmoji(this.emoji):this.emoji}},created(){},methods:{onClick(){this.$emit("click",this.emojiObject)},onMouseEnter(){this.$emit("mouseenter",this.emojiObject)},onMouseLeave(){this.$emit("mouseleave",this.emojiObject)}}};function ot(i,e,t,s,r,o){return o.view.canRender?(c(),L(de(i.tag),{key:0,title:o.view.title,"aria-label":o.view.ariaLabel,"data-title":o.title,class:"emoji-mart-emoji",onMouseenter:o.onMouseEnter,onMouseleave:o.onMouseLeave,onClick:o.onClick},{default:b(()=>[m("span",{class:E(o.view.cssClass),style:O(o.view.cssStyle)},_(o.view.content),7)]),_:1},40,["title","aria-label","data-title","onMouseenter","onMouseleave","onClick"])):C("",!0)}const K=x(it,[["render",ot]]),st={props:{data:{type:Object,required:!0},i18n:{type:Object,required:!0},id:{type:String,required:!0},name:{type:String,required:!0},emojis:{type:Array},emojiProps:{type:Object,required:!0}},methods:{activeClass:function(i){return!this.emojiProps.selectedEmoji||!this.emojiProps.selectedEmojiCategory?"":this.emojiProps.selectedEmoji.id==i.id&&this.emojiProps.selectedEmojiCategory.id==this.id?"emoji-mart-emoji-selected":""}},computed:{isVisible(){return!!this.emojis},isSearch(){return this.name=="Search"},hasResults(){return this.emojis.length>0},emojiObjects(){return this.emojis.map(i=>{let e=i,t=new le(i,this.emojiProps.skin,this.emojiProps.set,this.emojiProps.native,this.emojiProps.fallback,this.emojiProps.emojiTooltip,this.emojiProps.emojiSize);return{emojiObject:e,emojiView:t}})}},components:{Emoji:K}},rt=["aria-label"],nt={class:"emoji-mart-category-label"},at={class:"emoji-mart-category-label"},lt=["aria-label","data-title","title","onMouseenter","onMouseleave","onClick"],ct={key:0},ht={class:"emoji-mart-no-results-label"};function mt(i,e,t,s,r,o){const n=j("emoji");return o.isVisible&&(o.isSearch||o.hasResults)?(c(),h("section",{key:0,class:E({"emoji-mart-category":!0,"emoji-mart-no-results":!o.hasResults}),"aria-label":t.i18n.categories[t.id]},[m("div",nt,[m("h3",at,_(t.i18n.categories[t.id]),1)]),(c(!0),h(k,null,A(o.emojiObjects,({emojiObject:a,emojiView:l})=>(c(),h(k,null,[l.canRender?(c(),h("button",{"aria-label":l.ariaLabel,role:"option","aria-selected":"false","aria-posinset":"1","aria-setsize":"1812",type:"button","data-title":a.short_name,key:a.id,title:l.title,class:E(["emoji-mart-emoji",o.activeClass(a)]),onMouseenter:g=>t.emojiProps.onEnter(l.getEmoji()),onMouseleave:g=>t.emojiProps.onLeave(l.getEmoji()),onClick:g=>t.emojiProps.onClick(l.getEmoji())},[m("span",{class:E(l.cssClass),style:O(l.cssStyle)},_(l.content),7)],42,lt)):C("",!0)],64))),256)),o.hasResults?C("",!0):(c(),h("div",ct,[v(n,{data:t.data,emoji:"sleuth_or_spy",native:t.emojiProps.native,skin:t.emojiProps.skin,set:t.emojiProps.set},null,8,["data","native","skin","set"]),m("div",ht,_(t.i18n.notfound),1)]))],10,rt)):C("",!0)}const dt=x(st,[["render",mt]]),ut={props:{skin:{type:Number,required:!0}},emits:["change"],data(){return{opened:!1}},methods:{onClick(i){this.opened&&i!=this.skin&&this.$emit("change",i),this.opened=!this.opened}}},pt=["onClick"];function jt(i,e,t,s,r,o){return c(),h("div",{class:E({"emoji-mart-skin-swatches":!0,"emoji-mart-skin-swatches-opened":r.opened})},[(c(),h(k,null,A(6,n=>m("span",{key:n,class:E({"emoji-mart-skin-swatch":!0,"emoji-mart-skin-swatch-selected":t.skin==n})},[m("span",{class:E("emoji-mart-skin emoji-mart-skin-tone-"+n),onClick:a=>o.onClick(n)},null,10,pt)],2)),64))],2)}const gt=x(ut,[["render",jt]]),wt={props:{data:{type:Object,required:!0},title:{type:String,required:!0},emoji:{type:[String,Object]},idleEmoji:{type:[String,Object],required:!0},showSkinTones:{type:Boolean,default:!0},emojiProps:{type:Object,required:!0},skinProps:{type:Object,required:!0},onSkinChange:{type:Function,required:!0}},computed:{emojiData(){return this.emoji?this.emoji:{}},emojiShortNames(){return this.emojiData.short_names},emojiEmoticons(){return this.emojiData.emoticons}},components:{Emoji:K,Skins:gt}},vt={class:"emoji-mart-preview"},ft={class:"emoji-mart-preview-emoji"},yt={class:"emoji-mart-preview-data"},_t={class:"emoji-mart-preview-name"},kt={class:"emoji-mart-preview-shortnames"},Ct={class:"emoji-mart-preview-emoticons"},Et={class:"emoji-mart-preview-emoji"},St={class:"emoji-mart-preview-data"},bt={class:"emoji-mart-title-label"},xt={key:0,class:"emoji-mart-preview-skins"};function Pt(i,e,t,s,r,o){const n=j("emoji"),a=j("skins");return c(),h("div",vt,[t.emoji?(c(),h(k,{key:0},[m("div",ft,[v(n,{data:t.data,emoji:t.emoji,native:t.emojiProps.native,skin:t.emojiProps.skin,set:t.emojiProps.set},null,8,["data","emoji","native","skin","set"])]),m("div",yt,[m("div",_t,_(t.emoji.name),1),m("div",kt,[(c(!0),h(k,null,A(o.emojiShortNames,l=>(c(),h("span",{key:l,class:"emoji-mart-preview-shortname"},":"+_(l)+":",1))),128))]),m("div",Ct,[(c(!0),h(k,null,A(o.emojiEmoticons,l=>(c(),h("span",{key:l,class:"emoji-mart-preview-emoticon"},_(l),1))),128))])])],64)):(c(),h(k,{key:1},[m("div",Et,[v(n,{data:t.data,emoji:t.idleEmoji,native:t.emojiProps.native,skin:t.emojiProps.skin,set:t.emojiProps.set},null,8,["data","emoji","native","skin","set"])]),m("div",St,[m("span",bt,_(t.title),1)]),t.showSkinTones?(c(),h("div",xt,[v(a,{skin:t.skinProps.skin,onChange:e[0]||(e[0]=l=>t.onSkinChange(l))},null,8,["skin"])])):C("",!0)],64))])}const At=x(wt,[["render",Pt]]),Ot={props:{data:{type:Object,required:!0},i18n:{type:Object,required:!0},autoFocus:{type:Boolean,default:!1},onSearch:{type:Function,required:!0},onArrowLeft:{type:Function,required:!1},onArrowRight:{type:Function,required:!1},onArrowDown:{type:Function,required:!1},onArrowUp:{type:Function,required:!1},onEnter:{type:Function,required:!1}},emits:["search","enter","arrowUp","arrowDown","arrowRight","arrowLeft"],data(){return{value:""}},computed:{emojiIndex(){return this.data}},watch:{value(){this.$emit("search",this.value)}},methods:{clear(){this.value=""}},mounted(){let i=this.$el.querySelector("input");this.autoFocus&&i.focus()}},Ft={class:"emoji-mart-search"},Mt=["placeholder"];function It(i,e,t,s,r,o){return c(),h("div",Ft,[Y(m("input",{type:"text",placeholder:t.i18n.search,role:"textbox","aria-autocomplete":"list","aria-owns":"emoji-mart-list","aria-label":"Search for an emoji","aria-describedby":"emoji-mart-search-description",onKeydown:[e[0]||(e[0]=y(n=>i.$emit("arrowLeft",n),["left"])),e[1]||(e[1]=y(()=>i.$emit("arrowRight"),["right"])),e[2]||(e[2]=y(()=>i.$emit("arrowDown"),["down"])),e[3]||(e[3]=y(n=>i.$emit("arrowUp",n),["up"])),e[4]||(e[4]=y(()=>i.$emit("enter"),["enter"]))],"onUpdate:modelValue":e[5]||(e[5]=n=>r.value=n)},null,40,Mt),[[ue,r.value]]),e[6]||(e[6]=m("span",{class:"hidden",id:"emoji-picker-search-description"},"Use the left, right, up and down arrow keys to navigate the emoji search results.",-1))])}const Tt=x(Ot,[["render",It]]);var Lt=typeof window<"u";Lt&&(function(){for(var i=0,e=["ms","moz","webkit","o"],t=0;t<e.length&&!window.requestAnimationFrame;++t)window.requestAnimationFrame=window[e[t]+"RequestAnimationFrame"],window.cancelAnimationFrame=window[e[t]+"CancelAnimationFrame"]||window[e[t]+"CancelRequestAnimationFrame"];window.requestAnimationFrame||(window.requestAnimationFrame=function(s,r){var o=new Date().getTime(),n=Math.max(0,16-(o-i)),a=window.setTimeout(function(){s(o+n)},n);return i=o+n,a}),window.cancelAnimationFrame||(window.cancelAnimationFrame=function(s){clearTimeout(s)})})();class zt{constructor(e){this._vm=e,this._data=e.data,this._perLine=e.perLine,this._categories=[],this._categories.push(...this._data.categories()),this._categories=this._categories.filter(t=>t.emojis.length>0),this._categories[0].first=!0,Object.freeze(this._categories),this.activeCategory=this._categories[0],this.searchEmojis=null,this.previewEmoji=null,this.previewEmojiCategoryIdx=0,this.previewEmojiIdx=-1}onScroll(){const e=this._vm.$refs.scroll;if(!e)return;const t=e.scrollTop;let s=this.filteredCategories[0];for(let r=0,o=this.filteredCategories.length;r<o;r++){let n=this.filteredCategories[r],a=this._vm.getCategoryComponent(r);if(a&&a.$el.offsetTop-50>t)break;s=n}this.activeCategory=s}get allCategories(){return this._categories}get filteredCategories(){return this.searchEmojis?[{id:"search",name:"Search",emojis:this.searchEmojis}]:this._categories.filter(e=>e.emojis.length>0)}get previewEmojiCategory(){return this.previewEmojiCategoryIdx>=0?this.filteredCategories[this.previewEmojiCategoryIdx]:null}onAnchorClick(e){if(this.searchEmojis)return;let t=this.filteredCategories.indexOf(e),s=this._vm.getCategoryComponent(t),r=()=>{if(s){let o=s.$el.offsetTop;e.first&&(o=0),this._vm.$refs.scroll.scrollTop=o}};this._vm.infiniteScroll?r():this.activeCategory=this.filteredCategories[t]}onSearch(e){let t=this._data.search(e,this.maxSearchResults);this.searchEmojis=t,this.previewEmojiCategoryIdx=0,this.previewEmojiIdx=0,this.updatePreviewEmoji()}onEmojiEnter(e){this.previewEmoji=e,this.previewEmojiIdx=-1,this.previewEmojiCategoryIdx=-1}onEmojiLeave(e){this.previewEmoji=null}onArrowLeft(){this.previewEmojiIdx>0?this.previewEmojiIdx-=1:(this.previewEmojiCategoryIdx-=1,this.previewEmojiCategoryIdx<0?this.previewEmojiCategoryIdx=0:this.previewEmojiIdx=this.filteredCategories[this.previewEmojiCategoryIdx].emojis.length-1),this.updatePreviewEmoji()}onArrowRight(){this.previewEmojiIdx<this.emojisLength(this.previewEmojiCategoryIdx)-1?this.previewEmojiIdx+=1:(this.previewEmojiCategoryIdx+=1,this.previewEmojiCategoryIdx>=this.filteredCategories.length?this.previewEmojiCategoryIdx=this.filteredCategories.length-1:this.previewEmojiIdx=0),this.updatePreviewEmoji()}onArrowDown(){if(this.previewEmojiIdx==-1)return this.onArrowRight();const e=this.filteredCategories[this.previewEmojiCategoryIdx].emojis.length;let t=this._perLine;this.previewEmojiIdx+t>e&&(t=e%this._perLine);for(let s=0;s<t;s++)this.onArrowRight();this.updatePreviewEmoji()}onArrowUp(){let e=this._perLine;this.previewEmojiIdx-e<0&&(this.previewEmojiCategoryIdx>0?e=this.filteredCategories[this.previewEmojiCategoryIdx-1].emojis.length%this._perLine:e=0);for(let t=0;t<e;t++)this.onArrowLeft();this.updatePreviewEmoji()}updatePreviewEmoji(){this.previewEmoji=this.filteredCategories[this.previewEmojiCategoryIdx].emojis[this.previewEmojiIdx],this._vm.$nextTick(()=>{const e=this._vm.$refs.scroll,t=e.querySelector(".emoji-mart-emoji-selected"),s=e.offsetTop-e.offsetHeight;t&&t.offsetTop+t.offsetHeight>s+e.scrollTop&&(e.scrollTop+=t.offsetHeight),t&&t.offsetTop<e.scrollTop&&(e.scrollTop-=t.offsetHeight)})}emojisLength(e){return e==-1?0:this.filteredCategories[e].emojis.length}}const Nt={search:"Search",notfound:"No Emoji Found",categories:{search:"Search Results",recent:"Frequently Used",smileys:"Smileys & Emotion",people:"People & Body",nature:"Animals & Nature",foods:"Food & Drink",activity:"Activity",places:"Travel & Places",objects:"Objects",symbols:"Symbols",flags:"Flags",custom:"Custom"}},$t={props:{...tt,data:{type:Object,required:!0}},emits:["select","skin-change"],data(){return{activeSkin:this.skin||F.get("skin")||this.defaultSkin,view:new zt(this)}},computed:{customStyles(){return{width:this.calculateWidth+"px",...this.pickerStyles}},emojiProps(){return{native:this.native,skin:this.activeSkin,set:this.set,emojiTooltip:this.emojiTooltip,emojiSize:this.emojiSize,selectedEmoji:this.view.previewEmoji,selectedEmojiCategory:this.view.previewEmojiCategory,onEnter:this.onEmojiEnter.bind(this),onLeave:this.onEmojiLeave.bind(this),onClick:this.onEmojiClick.bind(this)}},skinProps(){return{skin:this.activeSkin}},calculateWidth(){return this.perLine*(this.emojiSize+12)+12+2+Je()},filteredCategories(){return this.view.filteredCategories},mergedI18n(){return Object.freeze(ae(Nt,this.i18n))},idleEmoji(){try{return this.data.emoji(this.emoji)}catch(i){return console.error("Default preview emoji `"+this.emoji+"` is not available, check the Picker `emoji` property"),console.error(i),this.data.firstEmoji()}},isSearching(){return this.view.searchEmojis!=null}},watch:{skin(){this.onSkinChange(this.skin)}},methods:{onScroll(){this.infiniteScroll&&!this.waitingForPaint&&(this.waitingForPaint=!0,window.requestAnimationFrame(this.onScrollPaint.bind(this)))},onScrollPaint(){this.waitingForPaint=!1,this.view.onScroll()},onAnchorClick(i){this.view.onAnchorClick(i)},onSearch(i){this.view.onSearch(i)},onEmojiEnter(i){this.view.onEmojiEnter(i)},onEmojiLeave(i){this.view.onEmojiLeave(i)},onArrowLeft(i){const e=this.view.previewEmojiIdx;this.view.onArrowLeft(),i&&this.view.previewEmojiIdx!==e&&i.preventDefault()},onArrowRight(){this.view.onArrowRight()},onArrowDown(){this.view.onArrowDown()},onArrowUp(i){this.view.onArrowUp(),i.preventDefault()},onEnter(){this.view.previewEmoji&&(this.$emit("select",this.view.previewEmoji),U.add(this.view.previewEmoji))},onEmojiClick(i){this.$emit("select",i),U.add(i)},onTextSelect(i){i.stopPropagation()},onSkinChange(i){this.activeSkin=i,F.update({skin:i}),this.$emit("skin-change",i)},getCategoryComponent(i){let e=this.$refs["categories_"+i];return e&&"0"in e?e[0]:e}},components:{Anchors:Ue,Category:dt,Preview:At,Search:Tt}},qt={key:0,class:"emoji-mart-bar emoji-mart-bar-anchors"},Bt={id:"emoji-mart-list",ref:"scrollContent",role:"listbox","aria-expanded":"true"},Ht={key:0,class:"emoji-mart-bar emoji-mart-bar-preview"};function Rt(i,e,t,s,r,o){const n=j("anchors"),a=j("search"),l=j("category"),g=j("preview");return c(),h("section",{class:"emoji-mart emoji-mart-static",style:O(o.customStyles)},[i.showCategories?(c(),h("div",qt,[v(n,{data:t.data,i18n:o.mergedI18n,color:i.color,categories:r.view.allCategories,"active-category":r.view.activeCategory,onClick:o.onAnchorClick},null,8,["data","i18n","color","categories","active-category","onClick"])])):C("",!0),T(i.$slots,"searchTemplate",{data:t.data,i18n:i.i18n,autoFocus:i.autoFocus,onSearch:o.onSearch},()=>[i.showSearch?(c(),L(a,{key:0,ref:"search",data:t.data,i18n:o.mergedI18n,"auto-focus":i.autoFocus,"on-search":o.onSearch,onSearch:o.onSearch,onArrowLeft:o.onArrowLeft,onArrowRight:o.onArrowRight,onArrowDown:o.onArrowDown,onArrowUp:o.onArrowUp,onEnter:o.onEnter,onSelect:o.onTextSelect},null,8,["data","i18n","auto-focus","on-search","onSearch","onArrowLeft","onArrowRight","onArrowDown","onArrowUp","onEnter","onSelect"])):C("",!0)]),m("div",{role:"tabpanel",class:"emoji-mart-scroll",ref:"scroll",onScroll:e[0]||(e[0]=(...p)=>o.onScroll&&o.onScroll(...p))},[m("div",Bt,[T(i.$slots,"customCategory"),(c(!0),h(k,null,A(r.view.filteredCategories,(p,S)=>Y((c(),L(l,{ref_for:!0,ref:"categories_"+S,key:p.id,data:t.data,i18n:o.mergedI18n,id:p.id,name:p.name,emojis:p.emojis,"emoji-props":o.emojiProps},null,8,["data","i18n","id","name","emojis","emoji-props"])),[[pe,i.infiniteScroll||p==r.view.activeCategory||o.isSearching]])),128))],512)],544),T(i.$slots,"previewTemplate",{data:t.data,title:i.title,emoji:r.view.previewEmoji,idleEmoji:o.idleEmoji,showSkinTones:i.showSkinTones,emojiProps:o.emojiProps,skinProps:o.skinProps,onSkinChange:o.onSkinChange},()=>[i.showPreview?(c(),h("div",Ht,[v(g,{data:t.data,title:i.title,emoji:r.view.previewEmoji,"idle-emoji":o.idleEmoji,"show-skin-tones":i.showSkinTones,"emoji-props":o.emojiProps,"skin-props":o.skinProps,"on-skin-change":o.onSkinChange},null,8,["data","title","emoji","idle-emoji","show-skin-tones","emoji-props","skin-props","on-skin-change"])])):C("",!0)])],4)}const Dt=x($t,[["render",Rt]]),Ut={name:"CircleIcon",emits:["click"],props:{title:{type:String},fillColor:{type:String,default:"currentColor"},size:{type:Number,default:24}}},Vt=["aria-hidden","aria-label"],Wt=["fill","width","height"],Kt={d:"M12,2A10,10 0 0,0 2,12A10,10 0 0,0 12,22A10,10 0 0,0 22,12A10,10 0 0,0 12,2Z"},Gt={key:0};function Jt(i,e,t,s,r,o){return c(),h("span",ee(i.$attrs,{"aria-hidden":t.title?null:"true","aria-label":t.title,class:"material-design-icon circle-icon",role:"img",onClick:e[0]||(e[0]=n=>i.$emit("click",n))}),[(c(),h("svg",{fill:t.fillColor,class:"material-design-icon__svg",width:t.size,height:t.size,viewBox:"0 0 24 24"},[m("path",Kt,[t.title?(c(),h("title",Gt,_(t.title),1)):C("",!0)])],8,Wt))],16,Vt)}const Zt=te(Ut,[["render",Jt]]);ke(be,Se,Ee,Ce);let B;const Qt={search:d("Search emoji"),notfound:d("No emoji found"),categories:{search:d("Search results"),recent:d("Frequently used"),smileys:d("Smileys & Emotion"),people:d("People & Body"),nature:d("Animals & Nature"),foods:d("Food & Drink"),activity:d("Activities"),places:d("Travel & Places"),objects:d("Objects"),symbols:d("Symbols"),flags:d("Flags"),custom:d("Custom")}},X=[new P(255,222,52,d("Neutral skin color")),new P(228,205,166,d("Light skin tone")),new P(250,221,192,d("Medium light skin tone")),new P(174,129,87,d("Medium skin tone")),new P(158,113,88,d("Medium dark skin tone")),new P(96,79,69,d("Dark skin tone"))],Xt={name:"NcEmojiPicker",components:{IconCircle:Zt,NcButton:Pe,NcColorPicker:xe,NcPopover:fe,NcTextField:Ae,Emoji:K,Picker:Dt},props:{activeSet:{type:String,default:"native"},showPreview:{type:Boolean,default:!1},allowUnselect:{type:Boolean,default:!1},selectedEmoji:{type:String,default:""},previewFallbackEmoji:{type:String,default:"grinning"},previewFallbackName:{type:String,default:d("Pick an emoji")},closeOnSelect:{type:Boolean,default:!0},container:{type:[Boolean,String,Object,Element],default:"body"}},emits:["select","selectData","unselect"],setup(){return B||(B=new Xe(me)),{emojiIndex:B,skinTonePalette:X,i18n:Qt}},data(){const i=he();return{currentColor:X[i-1],currentSkinTone:i,search:"",open:!1}},computed:{native(){return this.activeSet==="native"}},created(){_e(()=>this.open)},methods:{t:d,clearSearch(){this.search="",this.$refs.search.focus()},onChangeSkinTone(i){const e=this.skinTonePalette.findIndex(t=>t.color.toLowerCase()===i.toLowerCase());e>-1&&(this.currentSkinTone=e+1,this.currentColor=this.skinTonePalette[e],ce(this.currentSkinTone))},select(i){this.$emit("select",i.native),this.$emit("selectData",i),this.closeOnSelect&&(this.open=!1)},unselect(){this.$emit("unselect")},afterShow(){this.$refs.search.focus()},afterHide(){(!document.activeElement||this.$refs.picker.$el.contains(document.activeElement)||!ye(document.activeElement))&&this.$refs.popover.$el.querySelector('button, [role="button"]')?.focus()},handleTabNavigationSkippingEmojis(i){const e=i.target,t=Array.from(this.$refs.picker.$el.querySelectorAll("button:not(.emoji-mart-emoji), input"));i.shiftKey?(t.findLast(s=>e.compareDocumentPosition(s)&Node.DOCUMENT_POSITION_PRECEDING)||t.at(-1)).focus():(t.find(s=>e.compareDocumentPosition(s)&Node.DOCUMENT_POSITION_FOLLOWING)||t[0]).focus()},async callPickerArrowHandlerWithScrollFix(i,e){this.$refs.picker[i](e),await this.$nextTick(),this.$refs.picker.$el.querySelector(".emoji-mart-emoji-selected")?.scrollIntoView({block:"center",inline:"center"})}}},Yt={class:"nc-emoji-picker-container"},ei={class:"search__wrapper"},ti={class:"emoji-mart-category-label"},ii={class:"emoji-mart-category-label"};function oi(i,e,t,s,r,o){const n=j("NcTextField"),a=j("IconCircle"),l=j("NcButton"),g=j("NcColorPicker"),p=j("Emoji"),S=j("Picker"),M=j("NcPopover");return c(),L(M,{ref:"popover",shown:r.open,"onUpdate:shown":e[6]||(e[6]=w=>r.open=w),container:t.container,popupRole:"dialog",noFocusTrap:!0,onAfterShow:o.afterShow,onAfterHide:o.afterHide},{trigger:b(w=>[T(i.$slots,"default",we(ve(w)),void 0,!0)]),default:b(()=>[m("div",Yt,[v(S,ee({ref:"picker",color:"var(--color-primary-element)",data:s.emojiIndex,emoji:t.previewFallbackEmoji,i18n:s.i18n,native:o.native,emojiSize:20,perLine:8,pickerStyles:{width:"320px"},showPreview:t.showPreview,skin:r.currentSkinTone,showSkinTones:!1,title:t.previewFallbackName,role:"dialog","aria-modal":"true","aria-label":o.t("Emoji picker")},i.$attrs,{onKeydown:y(je(o.handleTabNavigationSkippingEmojis,["prevent"]),["tab"]),onSelect:o.select}),ge({searchTemplate:b(({onSearch:w})=>[m("div",ei,[v(n,{ref:"search",modelValue:r.search,"onUpdate:modelValue":[e[0]||(e[0]=u=>r.search=u),u=>w(r.search)],class:"search",label:o.t("Search"),labelVisible:!0,placeholder:s.i18n.search,trailingButtonIcon:"close",trailingButtonLabel:o.t("Clear search"),showTrailingButton:r.search!=="",onKeydown:[e[1]||(e[1]=y(u=>o.callPickerArrowHandlerWithScrollFix("onArrowLeft",u),["left"])),e[2]||(e[2]=y(u=>o.callPickerArrowHandlerWithScrollFix("onArrowRight",u),["right"])),e[3]||(e[3]=y(u=>o.callPickerArrowHandlerWithScrollFix("onArrowDown",u),["down"])),e[4]||(e[4]=y(u=>o.callPickerArrowHandlerWithScrollFix("onArrowUp",u),["up"])),e[5]||(e[5]=y(u=>i.$refs.picker.onEnter(u),["enter"]))],onTrailingButtonClick:u=>{o.clearSearch(),w("")}},null,8,["modelValue","label","placeholder","trailingButtonLabel","showTrailingButton","onTrailingButtonClick","onUpdate:modelValue"]),v(g,{paletteOnly:"",container:t.container,palette:s.skinTonePalette,modelValue:r.currentColor.color,"onUpdate:modelValue":o.onChangeSkinTone},{default:b(()=>[v(l,{"aria-label":o.t("Skin tone"),variant:"tertiary-no-background"},{icon:b(()=>[v(a,{style:O({color:r.currentColor.color}),title:r.currentColor.name,size:20},null,8,["style","title"])]),_:1},8,["aria-label"])]),_:1},8,["container","palette","modelValue","onUpdate:modelValue"])])]),_:2},[t.allowUnselect&&t.selectedEmoji?{name:"customCategory",fn:b(()=>[m("div",ti,[m("h3",ii,_(o.t("Selected")),1)]),v(p,{class:"emoji-selected",data:s.emojiIndex,emoji:t.selectedEmoji,native:"",size:32,onClick:o.unselect},null,8,["data","emoji","onClick"]),v(p,{class:"emoji-delete",data:s.emojiIndex,emoji:":x:",native:"",size:10,onClick:o.unselect},null,8,["data","onClick"])]),key:"0"}:void 0]),1040,["data","emoji","i18n","native","showPreview","skin","title","aria-label","onKeydown","onSelect"])])]),_:3},8,["shown","container","onAfterShow","onAfterHide"])}const ui=te(Xt,[["render",oi],["__scopeId","data-v-11acdb77"]]);export{ui as N}; -//# sourceMappingURL=NcEmojiPicker-UTxgju3f-HSbVMwrx.chunk.mjs.map +import{s as ce,g as he,d as me}from"./emoji-C8k9NUlo-BQiX-d8c.chunk.mjs";import{o as c,f as h,F as k,B as A,O,y as E,g as m,c as L,w as b,t as _,C as de,h as C,r as j,k as v,J as Y,aj as ue,a6 as y,i as T,K as pe,m as ee,L as je,q as ge,G as we,M as ve}from"./Web-DYqXJUev.chunk.mjs";import{_ as x}from"./public-C1mLBHT3.chunk.mjs";import{q as fe,r as ye,s as _e}from"./NcModal-DiDvgcU8-Cb_C64qI.chunk.mjs";import{r as ke,q as Ce,s as Ee,u as Se,v as be,b as d,_ as te}from"./createElementId-DhjFt1I9-BmyhoOWk.chunk.mjs";import xe from"./index-BH07KH9-.chunk.mjs";import{C as P}from"./colors-Cv9F-jWS-BFJACjQq.chunk.mjs";import{N as Pe}from"./logger-D3RVzcfQ-BrUWOyzd.chunk.mjs";import{_ as Ae}from"./NcTextField.vue_vue_type_script_setup_true_lang-Bx2esFU2-CGsfYqql.chunk.mjs";var V="emoji-mart";const Oe=JSON;var ie=typeof window<"u"&&"localStorage"in window;let H,R;function Fe(i){i||(i={}),H=i.getter,R=i.setter}function Me(i){V=i}function Ie(i){for(let e in i){let t=i[e];oe(e,t)}}function oe(i,e){if(R)R(i,e);else{if(!ie)return;try{window.localStorage[`${V}.${i}`]=Oe.stringify(e)}catch{}}}function Te(i){if(H)return H(i);if(ie){try{var e=window.localStorage[`${V}.${i}`]}catch{return}if(e)return JSON.parse(e)}}const F={update:Ie,set:oe,get:Te,setNamespace:Me,setHandlers:Fe},$={name:"a",unified:"b",non_qualified:"c",has_img_apple:"d",has_img_google:"e",has_img_twitter:"f",has_img_facebook:"h",keywords:"j",sheet:"k",emoticons:"l",text:"m",short_names:"n",added_in:"o"},se=i=>{const e=[];var t=(s,r)=>{s&&(Array.isArray(s)?s:[s]).forEach(o=>{(r?o.split(/[-|_|\s]+/):[o]).forEach(n=>{n=n.toLowerCase(),e.indexOf(n)==-1&&e.push(n)})})};return t(i.short_names,!0),t(i.name,!0),t(i.keywords,!1),t(i.emoticons,!1),e.join(",")};function re(i){var e=Object.getOwnPropertyNames(i);for(let t of e){let s=i[t];i[t]=s&&typeof s=="object"?re(s):s}return Object.freeze(i)}const Le=i=>{if(!i.compressed)return i;i.compressed=!1;for(let e in i.emojis){let t=i.emojis[e];for(let s in $)t[s]=t[$[s]],delete t[$[s]];t.short_names||(t.short_names=[]),t.short_names.unshift(e),t.sheet_x=t.sheet[0],t.sheet_y=t.sheet[1],delete t.sheet,t.text||(t.text=""),t.added_in||(t.added_in=6),t.added_in=t.added_in.toFixed(1),t.search=se(t)}return i=re(i),i},q=["+1","grinning","kissing_heart","heart_eyes","laughing","stuck_out_tongue_winking_eye","sweat_smile","joy","scream","disappointed","unamused","weary","sob","sunglasses","heart","hankey"];let f,W,D={};function ne(){W=!0,f=F.get("frequently")}function ze(i){W||ne();var{id:e}=i;f||(f=D),f[e]||(f[e]=0),f[e]+=1,F.set("last",e),F.set("frequently",f)}function Ne(i){if(W||ne(),!f){D={};const o=[];let n=Math.min(i,q.length);for(let a=0;a<n;a++)D[q[a]]=parseInt((n-a)/4,10)+1,o.push(q[a]);return o}const e=i,t=[];for(let o in f)f.hasOwnProperty(o)&&t.push(o);const s=t.sort((o,n)=>f[o]-f[n]).reverse().slice(0,e),r=F.get("last");return r&&s.indexOf(r)==-1&&(s.pop(),s.push(r)),s}const U={add:ze,get:Ne},$e={activity:'<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="24" height="24"><path d="M12 0C5.373 0 0 5.372 0 12c0 6.627 5.373 12 12 12 6.628 0 12-5.373 12-12 0-6.628-5.372-12-12-12m9.949 11H17.05c.224-2.527 1.232-4.773 1.968-6.113A9.966 9.966 0 0 1 21.949 11M13 11V2.051a9.945 9.945 0 0 1 4.432 1.564c-.858 1.491-2.156 4.22-2.392 7.385H13zm-2 0H8.961c-.238-3.165-1.536-5.894-2.393-7.385A9.95 9.95 0 0 1 11 2.051V11zm0 2v8.949a9.937 9.937 0 0 1-4.432-1.564c.857-1.492 2.155-4.221 2.393-7.385H11zm4.04 0c.236 3.164 1.534 5.893 2.392 7.385A9.92 9.92 0 0 1 13 21.949V13h2.04zM4.982 4.887C5.718 6.227 6.726 8.473 6.951 11h-4.9a9.977 9.977 0 0 1 2.931-6.113M2.051 13h4.9c-.226 2.527-1.233 4.771-1.969 6.113A9.972 9.972 0 0 1 2.051 13m16.967 6.113c-.735-1.342-1.744-3.586-1.968-6.113h4.899a9.961 9.961 0 0 1-2.931 6.113"/></svg>',custom:'<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="24" height="24"><g transform="translate(2.000000, 1.000000)"><rect id="Rectangle" x="8" y="0" width="3" height="21" rx="1.5"></rect><rect id="Rectangle" transform="translate(9.843, 10.549) rotate(60) translate(-9.843, -10.549) " x="8.343" y="0.049" width="3" height="21" rx="1.5"></rect><rect id="Rectangle" transform="translate(9.843, 10.549) rotate(-60) translate(-9.843, -10.549) " x="8.343" y="0.049" width="3" height="21" rx="1.5"></rect></g></svg>',flags:'<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="24" height="24"><path d="M0 0l6.084 24H8L1.916 0zM21 5h-4l-1-4H4l3 12h3l1 4h13L21 5zM6.563 3h7.875l2 8H8.563l-2-8zm8.832 10l-2.856 1.904L12.063 13h3.332zM19 13l-1.5-6h1.938l2 8H16l3-2z"/></svg>',foods:'<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="24" height="24"><path d="M17 4.978c-1.838 0-2.876.396-3.68.934.513-1.172 1.768-2.934 4.68-2.934a1 1 0 0 0 0-2c-2.921 0-4.629 1.365-5.547 2.512-.064.078-.119.162-.18.244C11.73 1.838 10.798.023 9.207.023 8.579.022 7.85.306 7 .978 5.027 2.54 5.329 3.902 6.492 4.999 3.609 5.222 0 7.352 0 12.969c0 4.582 4.961 11.009 9 11.009 1.975 0 2.371-.486 3-1 .629.514 1.025 1 3 1 4.039 0 9-6.418 9-11 0-5.953-4.055-8-7-8M8.242 2.546c.641-.508.943-.523.965-.523.426.169.975 1.405 1.357 3.055-1.527-.629-2.741-1.352-2.98-1.846.059-.112.241-.356.658-.686M15 21.978c-1.08 0-1.21-.109-1.559-.402l-.176-.146c-.367-.302-.816-.452-1.266-.452s-.898.15-1.266.452l-.176.146c-.347.292-.477.402-1.557.402-2.813 0-7-5.389-7-9.009 0-5.823 4.488-5.991 5-5.991 1.939 0 2.484.471 3.387 1.251l.323.276a1.995 1.995 0 0 0 2.58 0l.323-.276c.902-.78 1.447-1.251 3.387-1.251.512 0 5 .168 5 6 0 3.617-4.187 9-7 9"/></svg>',nature:'<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="24" height="24"><path d="M15.5 8a1.5 1.5 0 1 0 .001 3.001A1.5 1.5 0 0 0 15.5 8M8.5 8a1.5 1.5 0 1 0 .001 3.001A1.5 1.5 0 0 0 8.5 8"/><path d="M18.933 0h-.027c-.97 0-2.138.787-3.018 1.497-1.274-.374-2.612-.51-3.887-.51-1.285 0-2.616.133-3.874.517C7.245.79 6.069 0 5.093 0h-.027C3.352 0 .07 2.67.002 7.026c-.039 2.479.276 4.238 1.04 5.013.254.258.882.677 1.295.882.191 3.177.922 5.238 2.536 6.38.897.637 2.187.949 3.2 1.102C8.04 20.6 8 20.795 8 21c0 1.773 2.35 3 4 3 1.648 0 4-1.227 4-3 0-.201-.038-.393-.072-.586 2.573-.385 5.435-1.877 5.925-7.587.396-.22.887-.568 1.104-.788.763-.774 1.079-2.534 1.04-5.013C23.929 2.67 20.646 0 18.933 0M3.223 9.135c-.237.281-.837 1.155-.884 1.238-.15-.41-.368-1.349-.337-3.291.051-3.281 2.478-4.972 3.091-5.031.256.015.731.27 1.265.646-1.11 1.171-2.275 2.915-2.352 5.125-.133.546-.398.858-.783 1.313M12 22c-.901 0-1.954-.693-2-1 0-.654.475-1.236 1-1.602V20a1 1 0 1 0 2 0v-.602c.524.365 1 .947 1 1.602-.046.307-1.099 1-2 1m3-3.48v.02a4.752 4.752 0 0 0-1.262-1.02c1.092-.516 2.239-1.334 2.239-2.217 0-1.842-1.781-2.195-3.977-2.195-2.196 0-3.978.354-3.978 2.195 0 .883 1.148 1.701 2.238 2.217A4.8 4.8 0 0 0 9 18.539v-.025c-1-.076-2.182-.281-2.973-.842-1.301-.92-1.838-3.045-1.853-6.478l.023-.041c.496-.826 1.49-1.45 1.804-3.102 0-2.047 1.357-3.631 2.362-4.522C9.37 3.178 10.555 3 11.948 3c1.447 0 2.685.192 3.733.57 1 .9 2.316 2.465 2.316 4.48.313 1.651 1.307 2.275 1.803 3.102.035.058.068.117.102.178-.059 5.967-1.949 7.01-4.902 7.19m6.628-8.202c-.037-.065-.074-.13-.113-.195a7.587 7.587 0 0 0-.739-.987c-.385-.455-.648-.768-.782-1.313-.076-2.209-1.241-3.954-2.353-5.124.531-.376 1.004-.63 1.261-.647.636.071 3.044 1.764 3.096 5.031.027 1.81-.347 3.218-.37 3.235"/></svg>',objects:'<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="24" height="24"><path d="M12 0a9 9 0 0 0-5 16.482V21s2.035 3 5 3 5-3 5-3v-4.518A9 9 0 0 0 12 0zm0 2c3.86 0 7 3.141 7 7s-3.14 7-7 7-7-3.141-7-7 3.14-7 7-7zM9 17.477c.94.332 1.946.523 3 .523s2.06-.19 3-.523v.834c-.91.436-1.925.689-3 .689a6.924 6.924 0 0 1-3-.69v-.833zm.236 3.07A8.854 8.854 0 0 0 12 21c.965 0 1.888-.167 2.758-.451C14.155 21.173 13.153 22 12 22c-1.102 0-2.117-.789-2.764-1.453z"/><path d="M14.745 12.449h-.004c-.852-.024-1.188-.858-1.577-1.824-.421-1.061-.703-1.561-1.182-1.566h-.009c-.481 0-.783.497-1.235 1.537-.436.982-.801 1.811-1.636 1.791l-.276-.043c-.565-.171-.853-.691-1.284-1.794-.125-.313-.202-.632-.27-.913-.051-.213-.127-.53-.195-.634C7.067 9.004 7.039 9 6.99 9A1 1 0 0 1 7 7h.01c1.662.017 2.015 1.373 2.198 2.134.486-.981 1.304-2.058 2.797-2.075 1.531.018 2.28 1.153 2.731 2.141l.002-.008C14.944 8.424 15.327 7 16.979 7h.032A1 1 0 1 1 17 9h-.011c-.149.076-.256.474-.319.709a6.484 6.484 0 0 1-.311.951c-.429.973-.79 1.789-1.614 1.789"/></svg>',smileys:'<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="24" height="24"><path d="M12 0C5.373 0 0 5.373 0 12s5.373 12 12 12 12-5.373 12-12S18.627 0 12 0m0 22C6.486 22 2 17.514 2 12S6.486 2 12 2s10 4.486 10 10-4.486 10-10 10"/><path d="M8 7a2 2 0 1 0-.001 3.999A2 2 0 0 0 8 7M16 7a2 2 0 1 0-.001 3.999A2 2 0 0 0 16 7M15.232 15c-.693 1.195-1.87 2-3.349 2-1.477 0-2.655-.805-3.347-2H15m3-2H6a6 6 0 1 0 12 0"/></svg>',people:'<svg xmlns:svg="http://www.w3.org/2000/svg" height="24" width="24" viewBox="0 0 24 24"> <path id="path3814" d="m 3.3591089,21.17726 c 0.172036,0.09385 4.265994,2.29837 8.8144451,2.29837 4.927767,0 8.670894,-2.211883 8.82782,-2.306019 0.113079,-0.06785 0.182268,-0.190051 0.182267,-0.321923 0,-3.03119 -0.929494,-5.804936 -2.617196,-7.810712 -1.180603,-1.403134 -2.661918,-2.359516 -4.295699,-2.799791 4.699118,-2.236258 3.102306,-9.28617162 -2.097191,-9.28617162 -5.1994978,0 -6.7963103,7.04991362 -2.097192,9.28617162 -1.6337821,0.440275 -3.1150971,1.396798 -4.2956991,2.799791 -1.687703,2.005776 -2.617196,4.779522 -2.617196,7.810712 1.2e-6,0.137378 0.075039,0.263785 0.195641,0.329572 z M 8.0439319,5.8308783 C 8.0439309,2.151521 12.492107,0.30955811 15.093491,2.9109411 17.694874,5.5123241 15.852911,9.9605006 12.173554,9.9605 9.8938991,9.9579135 8.0465186,8.1105332 8.0439319,5.8308783 Z m -1.688782,7.6894977 c 1.524535,-1.811449 3.5906601,-2.809035 5.8184041,-2.809035 2.227744,0 4.293869,0.997586 5.818404,2.809035 1.533639,1.822571 2.395932,4.339858 2.439152,7.108301 -0.803352,0.434877 -4.141636,2.096112 -8.257556,2.096112 -3.8062921,0 -7.3910861,-1.671043 -8.2573681,-2.104981 0.04505,-2.765017 0.906968,-5.278785 2.438964,-7.099432 z" /> <path id="path3816" d="M 12.173828 0.38867188 C 9.3198513 0.38867187 7.3770988 2.3672285 6.8652344 4.6308594 C 6.4218608 6.5916015 7.1153562 8.7676117 8.9648438 10.126953 C 7.6141249 10.677376 6.3550511 11.480944 5.3496094 12.675781 C 3.5629317 14.799185 2.6015625 17.701475 2.6015625 20.847656 C 2.6015654 21.189861 2.7894276 21.508002 3.0898438 21.671875 C 3.3044068 21.788925 7.4436239 24.039062 12.173828 24.039062 C 17.269918 24.039062 21.083568 21.776786 21.291016 21.652344 C 21.57281 21.483266 21.746097 21.176282 21.746094 20.847656 C 21.746094 17.701475 20.78277 14.799185 18.996094 12.675781 C 17.990455 11.480591 16.733818 10.675362 15.382812 10.125 C 17.231132 8.7655552 17.925675 6.5910701 17.482422 4.6308594 C 16.970557 2.3672285 15.027805 0.38867188 12.173828 0.38867188 z M 12.792969 2.3007812 C 13.466253 2.4161792 14.125113 2.7383941 14.695312 3.3085938 C 15.835712 4.4489931 15.985604 5.9473549 15.46875 7.1953125 C 14.951896 8.4432701 13.786828 9.3984378 12.173828 9.3984375 C 10.197719 9.3961954 8.607711 7.806187 8.6054688 5.8300781 C 8.6054683 4.2170785 9.5606362 3.0520102 10.808594 2.5351562 C 11.432573 2.2767293 12.119685 2.1853833 12.792969 2.3007812 z M 12.173828 11.273438 C 14.233647 11.273438 16.133674 12.185084 17.5625 13.882812 C 18.93069 15.508765 19.698347 17.776969 19.808594 20.283203 C 18.807395 20.800235 15.886157 22.162109 12.173828 22.162109 C 8.7614632 22.162109 5.6245754 20.787069 4.5390625 20.265625 C 4.6525896 17.766717 5.4203315 15.504791 6.7851562 13.882812 C 8.2139827 12.185084 10.11401 11.273438 12.173828 11.273438 z " /> </svg>',places:'<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="24" height="24"><path d="M6.5 12C5.122 12 4 13.121 4 14.5S5.122 17 6.5 17 9 15.879 9 14.5 7.878 12 6.5 12m0 3c-.275 0-.5-.225-.5-.5s.225-.5.5-.5.5.225.5.5-.225.5-.5.5M17.5 12c-1.378 0-2.5 1.121-2.5 2.5s1.122 2.5 2.5 2.5 2.5-1.121 2.5-2.5-1.122-2.5-2.5-2.5m0 3c-.275 0-.5-.225-.5-.5s.225-.5.5-.5.5.225.5.5-.225.5-.5.5"/><path d="M22.482 9.494l-1.039-.346L21.4 9h.6c.552 0 1-.439 1-.992 0-.006-.003-.008-.003-.008H23c0-1-.889-2-1.984-2h-.642l-.731-1.717C19.262 3.012 18.091 2 16.764 2H7.236C5.909 2 4.738 3.012 4.357 4.283L3.626 6h-.642C1.889 6 1 7 1 8h.003S1 8.002 1 8.008C1 8.561 1.448 9 2 9h.6l-.043.148-1.039.346a2.001 2.001 0 0 0-1.359 2.097l.751 7.508a1 1 0 0 0 .994.901H3v1c0 1.103.896 2 2 2h2c1.104 0 2-.897 2-2v-1h6v1c0 1.103.896 2 2 2h2c1.104 0 2-.897 2-2v-1h1.096a.999.999 0 0 0 .994-.901l.751-7.508a2.001 2.001 0 0 0-1.359-2.097M6.273 4.857C6.402 4.43 6.788 4 7.236 4h9.527c.448 0 .834.43.963.857L19.313 9H4.688l1.585-4.143zM7 21H5v-1h2v1zm12 0h-2v-1h2v1zm2.189-3H2.811l-.662-6.607L3 11h18l.852.393L21.189 18z"/></svg>',recent:'<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="24" height="24"><path d="M13 4h-2l-.001 7H9v2h2v2h2v-2h4v-2h-4z"/><path d="M12 0C5.373 0 0 5.373 0 12s5.373 12 12 12 12-5.373 12-12S18.627 0 12 0m0 22C6.486 22 2 17.514 2 12S6.486 2 12 2s10 4.486 10 10-4.486 10-10 10"/></svg>',symbols:'<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="24" height="24"><path d="M0 0h11v2H0zM4 11h3V6h4V4H0v2h4zM15.5 17c1.381 0 2.5-1.116 2.5-2.493s-1.119-2.493-2.5-2.493S13 13.13 13 14.507 14.119 17 15.5 17m0-2.986c.276 0 .5.222.5.493 0 .272-.224.493-.5.493s-.5-.221-.5-.493.224-.493.5-.493M21.5 19.014c-1.381 0-2.5 1.116-2.5 2.493S20.119 24 21.5 24s2.5-1.116 2.5-2.493-1.119-2.493-2.5-2.493m0 2.986a.497.497 0 0 1-.5-.493c0-.271.224-.493.5-.493s.5.222.5.493a.497.497 0 0 1-.5.493M22 13l-9 9 1.513 1.5 8.99-9.009zM17 11c2.209 0 4-1.119 4-2.5V2s.985-.161 1.498.949C23.01 4.055 23 6 23 6s1-1.119 1-3.135C24-.02 21 0 21 0h-2v6.347A5.853 5.853 0 0 0 17 6c-2.209 0-4 1.119-4 2.5s1.791 2.5 4 2.5M10.297 20.482l-1.475-1.585a47.54 47.54 0 0 1-1.442 1.129c-.307-.288-.989-1.016-2.045-2.183.902-.836 1.479-1.466 1.729-1.892s.376-.871.376-1.336c0-.592-.273-1.178-.818-1.759-.546-.581-1.329-.871-2.349-.871-1.008 0-1.79.293-2.344.879-.556.587-.832 1.181-.832 1.784 0 .813.419 1.748 1.256 2.805-.847.614-1.444 1.208-1.794 1.784a3.465 3.465 0 0 0-.523 1.833c0 .857.308 1.56.924 2.107.616.549 1.423.823 2.42.823 1.173 0 2.444-.379 3.813-1.137L8.235 24h2.819l-2.09-2.383 1.333-1.135zm-6.736-6.389a1.02 1.02 0 0 1 .73-.286c.31 0 .559.085.747.254a.849.849 0 0 1 .283.659c0 .518-.419 1.112-1.257 1.784-.536-.651-.805-1.231-.805-1.742a.901.901 0 0 1 .302-.669M3.74 22c-.427 0-.778-.116-1.057-.349-.279-.232-.418-.487-.418-.766 0-.594.509-1.288 1.527-2.083.968 1.134 1.717 1.946 2.248 2.438-.921.507-1.686.76-2.3.76"/></svg>'},qe={props:{i18n:{type:Object,required:!0},color:{type:String},categories:{type:Array,required:!0},activeCategory:{type:Object,default(){return{}}}},emits:["click"],created(){this.svgs=$e}},Be={role:"tablist",class:"emoji-mart-anchors"},He=["aria-label","aria-selected","data-title","onClick"],Re=["innerHTML"];function De(i,e,t,s,r,o){return c(),h("div",Be,[(c(!0),h(k,null,A(t.categories,n=>(c(),h("button",{role:"tab",type:"button","aria-label":n.name,"aria-selected":n.id==t.activeCategory.id,key:n.id,class:E({"emoji-mart-anchor":!0,"emoji-mart-anchor-selected":n.id==t.activeCategory.id}),style:O({color:n.id==t.activeCategory.id?t.color:""}),"data-title":t.i18n.categories[n.id],onClick:a=>i.$emit("click",n)},[m("div",{"aria-hidden":"true",innerHTML:i.svgs[n.id]},null,8,Re),m("span",{"aria-hidden":"true",class:"emoji-mart-anchor-bar",style:O({backgroundColor:t.color})},null,4)],14,He))),128))])}const Ue=x(qe,[["render",De]]),Ve=String,We=Ve.fromCodePoint||function(){var i=16384,e=[],t,s,r=-1,o=arguments.length;if(!o)return"";for(var n="";++r<o;){var a=Number(arguments[r]);if(!isFinite(a)||a<0||a>1114111||Math.floor(a)!=a)throw RangeError("Invalid code point: "+a);a<=65535?e.push(a):(a-=65536,t=(a>>10)+55296,s=a%1024+56320,e.push(t,s)),(r+1===o||e.length>i)&&(n+=String.fromCharCode.apply(null,e),e.length=0)}return n};function Ke(i){var e=i.split("-"),t=e.map(s=>`0x${s}`);return We.apply(null,t)}function Z(i){return i.reduce((e,t)=>(e.indexOf(t)===-1&&e.push(t),e),[])}function Ge(i,e){const t=Z(i),s=Z(e);return t.filter(r=>s.indexOf(r)>=0)}function ae(i,e){var t={};for(let s in i){let r=i[s],o=r;Object.prototype.hasOwnProperty.call(e,s)&&(o=e[s]),typeof o=="object"&&(o=ae(r,o)),t[s]=o}return t}function Je(){if(typeof document>"u")return 0;const i=document.createElement("div");i.style.width="100px",i.style.height="100px",i.style.overflow="scroll",i.style.position="absolute",i.style.top="-9999px",document.body.appendChild(i);const e=i.offsetWidth-i.clientWidth;return document.body.removeChild(i),e}const Ze=61,Qe=/^(?:\:([^\:]+)\:)(?:\:skin-tone-(\d)\:)?$/,Q=["1F3FA","1F3FB","1F3FC","1F3FD","1F3FE","1F3FF"];class Xe{constructor(e,{emojisToShowFilter:t,include:s,exclude:r,custom:o,recent:n,recentLength:a=20}={}){this._data=Le(e),this._emojisFilter=t||null,this._include=s||null,this._exclude=r||null,this._custom=o||[],this._recent=n||U.get(a),this._emojis={},this._nativeEmojis={},this._emoticons={},this._categories=[],this._recentCategory={id:"recent",name:"Recent",emojis:[]},this._customCategory={id:"custom",name:"Custom",emojis:[]},this._searchIndex={},this.buildIndex(),Object.freeze(this)}buildIndex(){let e=this._data.categories;if(this._include&&(e=e.filter(t=>this._include.includes(t.id)),e=e.sort((t,s)=>{const r=this._include.indexOf(t.id),o=this._include.indexOf(s.id);return r<o?-1:r>o?1:0})),e.forEach(t=>{if(!this.isCategoryNeeded(t.id))return;let s={id:t.id,name:t.name,emojis:[]};t.emojis.forEach(r=>{let o=this.addEmoji(r);o&&s.emojis.push(o)}),s.emojis.length&&this._categories.push(s)}),this.isCategoryNeeded("custom")){if(this._custom.length>0)for(let t of this._custom)this.addCustomEmoji(t);this._customCategory.emojis.length&&this._categories.push(this._customCategory)}this.isCategoryNeeded("recent")&&(this._recent.length&&this._recent.map(t=>{for(let s of this._customCategory.emojis)if(s.id===t){this._recentCategory.emojis.push(s);return}this.hasEmoji(t)&&this._recentCategory.emojis.push(this.emoji(t))}),this._recentCategory.emojis.length&&this._categories.unshift(this._recentCategory))}findEmoji(e,t){let s=e.match(Qe);if(s&&(e=s[1],s[2]&&(t=parseInt(s[2],10))),this._data.aliases.hasOwnProperty(e)&&(e=this._data.aliases[e]),this._emojis.hasOwnProperty(e)){let r=this._emojis[e];return t?r.getSkin(t):r}return this._nativeEmojis.hasOwnProperty(e)?this._nativeEmojis[e]:null}categories(){return this._categories}emoji(e){this._data.aliases.hasOwnProperty(e)&&(e=this._data.aliases[e]);let t=this._emojis[e];if(!t)throw new Error("Can not find emoji by id: "+e);return t}firstEmoji(){let e=this._emojis[Object.keys(this._emojis)[0]];if(!e)throw new Error("Can not get first emoji");return e}hasEmoji(e){return this._data.aliases.hasOwnProperty(e)&&(e=this._data.aliases[e]),!!this._emojis[e]}nativeEmoji(e){return this._nativeEmojis.hasOwnProperty(e)?this._nativeEmojis[e]:null}search(e,t){if(t||(t=75),!e.length)return null;if(e=="-"||e=="-1")return[this.emoji("-1")];let s=e.toLowerCase().split(/[\s|,|\-|_]+/),r=[];s.length>2&&(s=[s[0],s[1]]),r=s.map(n=>{let a=this._emojis,l=this._searchIndex,g=0;for(let p=0;p<n.length;p++){const S=n[p];if(g++,l[S]||(l[S]={}),l=l[S],!l.results){let M={};l.results=[],l.emojis={};for(let w in a){let u=a[w],N=u._data.search,I=n.substr(0,g),G=N.indexOf(I);if(G!=-1){let J=G+1;I==w&&(J=0),l.results.push(u),l.emojis[w]=u,M[w]=J}}l.results.sort((w,u)=>{var N=M[w.id],I=M[u.id];return N-I})}a=l.emojis}return l.results}).filter(n=>n);var o=null;return r.length>1?o=Ge.apply(null,r):r.length?o=r[0]:o=[],o&&o.length>t&&(o=o.slice(0,t)),o}addCustomEmoji(e){let t=Object.assign({},e,{id:e.short_names[0],custom:!0});t.search||(t.search=se(t));let s=new z(t);return this._emojis[s.id]=s,this._customCategory.emojis.push(s),s}addEmoji(e){let t=this._data.emojis[e];if(!this.isEmojiNeeded(t))return!1;let s=new z(t);if(this._emojis[e]=s,s.native&&(this._nativeEmojis[s.native]=s),s._skins)for(let r in s._skins){let o=s._skins[r];o.native&&(this._nativeEmojis[o.native]=o)}return s.emoticons&&s.emoticons.forEach(r=>{this._emoticons[r]||(this._emoticons[r]=e)}),s}isCategoryNeeded(e){let t=this._include&&this._include.length?this._include.indexOf(e)>-1:!0,s=this._exclude&&this._exclude.length?this._exclude.indexOf(e)>-1:!1;return!(!t||s)}isEmojiNeeded(e){return this._emojisFilter?this._emojisFilter(e):!0}}class z{constructor(e){if(this._data=Object.assign({},e),this._skins=null,this._data.skin_variations){this._skins=[];for(var t in Q){let s=Q[t],r=this._data.skin_variations[s],o=Object.assign({},e);for(let n in r)o[n]=r[n];delete o.skin_variations,o.skin_tone=parseInt(t)+1,this._skins.push(new z(o))}}this._sanitized=Ye(this._data);for(let s in this._sanitized)this[s]=this._sanitized[s];this.short_names=this._data.short_names,this.short_name=this._data.short_names[0],Object.freeze(this)}getSkin(e){return e&&e!="native"&&this._skins?this._skins[e-1]:this}getPosition(){let e=Ze-1,t=+(100/e*this._data.sheet_x).toFixed(2),s=+(100/e*this._data.sheet_y).toFixed(2);return`${t}% ${s}%`}ariaLabel(){return[this.native].concat(this.short_names).filter(Boolean).join(", ")}}class le{constructor(e,t,s,r,o,n,a){this._emoji=e,this._native=r,this._skin=t,this._set=s,this._fallback=o,this.canRender=this._canRender(),this.cssClass=this._cssClass(),this.cssStyle=this._cssStyle(a),this.content=this._content(),this.title=n===!0?e.short_name:null,this.ariaLabel=e.ariaLabel(),Object.freeze(this)}getEmoji(){return this._emoji.getSkin(this._skin)}_canRender(){return this._isCustom()||this._isNative()||this._hasEmoji()||this._fallback}_cssClass(){return["emoji-set-"+this._set,"emoji-type-"+this._emojiType()]}_cssStyle(e){let t={};return this._isCustom()?t={backgroundImage:"url("+this.getEmoji()._data.imageUrl+")",backgroundSize:"100%",width:e+"px",height:e+"px"}:this._hasEmoji()&&!this._isNative()&&(t={backgroundPosition:this.getEmoji().getPosition()}),e&&(this._isNative()?t=Object.assign(t,{fontSize:Math.round(e*.95*10)/10+"px"}):t=Object.assign(t,{width:e+"px",height:e+"px"})),t}_content(){return this._isCustom()?"":this._isNative()?this.getEmoji().native:this._hasEmoji()?"":this._fallback?this._fallback(this.getEmoji()):null}_isNative(){return this._native}_isCustom(){return this.getEmoji().custom}_hasEmoji(){if(!this.getEmoji()._data)return!1;const e=this.getEmoji()._data["has_img_"+this._set];return e===void 0?!0:e}_emojiType(){return this._isCustom()?"custom":this._isNative()?"native":this._hasEmoji()?"image":"fallback"}}function Ye(i){var{name:e,short_names:t,skin_tone:s,skin_variations:r,emoticons:o,unified:n,custom:a,imageUrl:l}=i,g=i.id||t[0],p=`:${g}:`;return a?{id:g,name:e,colons:p,emoticons:o,custom:a,imageUrl:l}:(s&&(p+=`:skin-tone-${s}:`),{id:g,name:e,colons:p,emoticons:o,unified:n.toLowerCase(),skin:s||(r?1:null),native:Ke(n)})}const et={native:{type:Boolean,default:!1},tooltip:{type:Boolean,default:!1},fallback:{type:Function},skin:{type:Number,default:1},set:{type:String,default:"apple"},emoji:{type:[String,Object],required:!0},size:{type:Number,default:null},tag:{type:String,default:"span"}},tt={perLine:{type:Number,default:9},maxSearchResults:{type:Number,default:75},emojiSize:{type:Number,default:24},title:{type:String,default:"Emoji Mart™"},emoji:{type:String,default:"department_store"},color:{type:String,default:"#ae65c5"},set:{type:String,default:"apple"},skin:{type:Number,default:null},defaultSkin:{type:Number,default:1},native:{type:Boolean,default:!1},emojiTooltip:{type:Boolean,default:!1},autoFocus:{type:Boolean,default:!1},i18n:{type:Object,default(){return{}}},showPreview:{type:Boolean,default:!0},showSearch:{type:Boolean,default:!0},showCategories:{type:Boolean,default:!0},showSkinTones:{type:Boolean,default:!0},infiniteScroll:{type:Boolean,default:!0},pickerStyles:{type:Object,default(){return{}}}},it={props:{...et,data:{type:Object,required:!0}},emits:["click","mouseenter","mouseleave"],computed:{view(){return new le(this.emojiObject,this.skin,this.set,this.native,this.fallback,this.tooltip,this.size)},sanitizedData(){return this.emojiObject._sanitized},title(){return this.tooltip?this.emojiObject.short_name:null},emojiObject(){return typeof this.emoji=="string"?this.data.findEmoji(this.emoji):this.emoji}},created(){},methods:{onClick(){this.$emit("click",this.emojiObject)},onMouseEnter(){this.$emit("mouseenter",this.emojiObject)},onMouseLeave(){this.$emit("mouseleave",this.emojiObject)}}};function ot(i,e,t,s,r,o){return o.view.canRender?(c(),L(de(i.tag),{key:0,title:o.view.title,"aria-label":o.view.ariaLabel,"data-title":o.title,class:"emoji-mart-emoji",onMouseenter:o.onMouseEnter,onMouseleave:o.onMouseLeave,onClick:o.onClick},{default:b(()=>[m("span",{class:E(o.view.cssClass),style:O(o.view.cssStyle)},_(o.view.content),7)]),_:1},40,["title","aria-label","data-title","onMouseenter","onMouseleave","onClick"])):C("",!0)}const K=x(it,[["render",ot]]),st={props:{data:{type:Object,required:!0},i18n:{type:Object,required:!0},id:{type:String,required:!0},name:{type:String,required:!0},emojis:{type:Array},emojiProps:{type:Object,required:!0}},methods:{activeClass:function(i){return!this.emojiProps.selectedEmoji||!this.emojiProps.selectedEmojiCategory?"":this.emojiProps.selectedEmoji.id==i.id&&this.emojiProps.selectedEmojiCategory.id==this.id?"emoji-mart-emoji-selected":""}},computed:{isVisible(){return!!this.emojis},isSearch(){return this.name=="Search"},hasResults(){return this.emojis.length>0},emojiObjects(){return this.emojis.map(i=>{let e=i,t=new le(i,this.emojiProps.skin,this.emojiProps.set,this.emojiProps.native,this.emojiProps.fallback,this.emojiProps.emojiTooltip,this.emojiProps.emojiSize);return{emojiObject:e,emojiView:t}})}},components:{Emoji:K}},rt=["aria-label"],nt={class:"emoji-mart-category-label"},at={class:"emoji-mart-category-label"},lt=["aria-label","data-title","title","onMouseenter","onMouseleave","onClick"],ct={key:0},ht={class:"emoji-mart-no-results-label"};function mt(i,e,t,s,r,o){const n=j("emoji");return o.isVisible&&(o.isSearch||o.hasResults)?(c(),h("section",{key:0,class:E({"emoji-mart-category":!0,"emoji-mart-no-results":!o.hasResults}),"aria-label":t.i18n.categories[t.id]},[m("div",nt,[m("h3",at,_(t.i18n.categories[t.id]),1)]),(c(!0),h(k,null,A(o.emojiObjects,({emojiObject:a,emojiView:l})=>(c(),h(k,null,[l.canRender?(c(),h("button",{"aria-label":l.ariaLabel,role:"option","aria-selected":"false","aria-posinset":"1","aria-setsize":"1812",type:"button","data-title":a.short_name,key:a.id,title:l.title,class:E(["emoji-mart-emoji",o.activeClass(a)]),onMouseenter:g=>t.emojiProps.onEnter(l.getEmoji()),onMouseleave:g=>t.emojiProps.onLeave(l.getEmoji()),onClick:g=>t.emojiProps.onClick(l.getEmoji())},[m("span",{class:E(l.cssClass),style:O(l.cssStyle)},_(l.content),7)],42,lt)):C("",!0)],64))),256)),o.hasResults?C("",!0):(c(),h("div",ct,[v(n,{data:t.data,emoji:"sleuth_or_spy",native:t.emojiProps.native,skin:t.emojiProps.skin,set:t.emojiProps.set},null,8,["data","native","skin","set"]),m("div",ht,_(t.i18n.notfound),1)]))],10,rt)):C("",!0)}const dt=x(st,[["render",mt]]),ut={props:{skin:{type:Number,required:!0}},emits:["change"],data(){return{opened:!1}},methods:{onClick(i){this.opened&&i!=this.skin&&this.$emit("change",i),this.opened=!this.opened}}},pt=["onClick"];function jt(i,e,t,s,r,o){return c(),h("div",{class:E({"emoji-mart-skin-swatches":!0,"emoji-mart-skin-swatches-opened":r.opened})},[(c(),h(k,null,A(6,n=>m("span",{key:n,class:E({"emoji-mart-skin-swatch":!0,"emoji-mart-skin-swatch-selected":t.skin==n})},[m("span",{class:E("emoji-mart-skin emoji-mart-skin-tone-"+n),onClick:a=>o.onClick(n)},null,10,pt)],2)),64))],2)}const gt=x(ut,[["render",jt]]),wt={props:{data:{type:Object,required:!0},title:{type:String,required:!0},emoji:{type:[String,Object]},idleEmoji:{type:[String,Object],required:!0},showSkinTones:{type:Boolean,default:!0},emojiProps:{type:Object,required:!0},skinProps:{type:Object,required:!0},onSkinChange:{type:Function,required:!0}},computed:{emojiData(){return this.emoji?this.emoji:{}},emojiShortNames(){return this.emojiData.short_names},emojiEmoticons(){return this.emojiData.emoticons}},components:{Emoji:K,Skins:gt}},vt={class:"emoji-mart-preview"},ft={class:"emoji-mart-preview-emoji"},yt={class:"emoji-mart-preview-data"},_t={class:"emoji-mart-preview-name"},kt={class:"emoji-mart-preview-shortnames"},Ct={class:"emoji-mart-preview-emoticons"},Et={class:"emoji-mart-preview-emoji"},St={class:"emoji-mart-preview-data"},bt={class:"emoji-mart-title-label"},xt={key:0,class:"emoji-mart-preview-skins"};function Pt(i,e,t,s,r,o){const n=j("emoji"),a=j("skins");return c(),h("div",vt,[t.emoji?(c(),h(k,{key:0},[m("div",ft,[v(n,{data:t.data,emoji:t.emoji,native:t.emojiProps.native,skin:t.emojiProps.skin,set:t.emojiProps.set},null,8,["data","emoji","native","skin","set"])]),m("div",yt,[m("div",_t,_(t.emoji.name),1),m("div",kt,[(c(!0),h(k,null,A(o.emojiShortNames,l=>(c(),h("span",{key:l,class:"emoji-mart-preview-shortname"},":"+_(l)+":",1))),128))]),m("div",Ct,[(c(!0),h(k,null,A(o.emojiEmoticons,l=>(c(),h("span",{key:l,class:"emoji-mart-preview-emoticon"},_(l),1))),128))])])],64)):(c(),h(k,{key:1},[m("div",Et,[v(n,{data:t.data,emoji:t.idleEmoji,native:t.emojiProps.native,skin:t.emojiProps.skin,set:t.emojiProps.set},null,8,["data","emoji","native","skin","set"])]),m("div",St,[m("span",bt,_(t.title),1)]),t.showSkinTones?(c(),h("div",xt,[v(a,{skin:t.skinProps.skin,onChange:e[0]||(e[0]=l=>t.onSkinChange(l))},null,8,["skin"])])):C("",!0)],64))])}const At=x(wt,[["render",Pt]]),Ot={props:{data:{type:Object,required:!0},i18n:{type:Object,required:!0},autoFocus:{type:Boolean,default:!1},onSearch:{type:Function,required:!0},onArrowLeft:{type:Function,required:!1},onArrowRight:{type:Function,required:!1},onArrowDown:{type:Function,required:!1},onArrowUp:{type:Function,required:!1},onEnter:{type:Function,required:!1}},emits:["search","enter","arrowUp","arrowDown","arrowRight","arrowLeft"],data(){return{value:""}},computed:{emojiIndex(){return this.data}},watch:{value(){this.$emit("search",this.value)}},methods:{clear(){this.value=""}},mounted(){let i=this.$el.querySelector("input");this.autoFocus&&i.focus()}},Ft={class:"emoji-mart-search"},Mt=["placeholder"];function It(i,e,t,s,r,o){return c(),h("div",Ft,[Y(m("input",{type:"text",placeholder:t.i18n.search,role:"textbox","aria-autocomplete":"list","aria-owns":"emoji-mart-list","aria-label":"Search for an emoji","aria-describedby":"emoji-mart-search-description",onKeydown:[e[0]||(e[0]=y(n=>i.$emit("arrowLeft",n),["left"])),e[1]||(e[1]=y(()=>i.$emit("arrowRight"),["right"])),e[2]||(e[2]=y(()=>i.$emit("arrowDown"),["down"])),e[3]||(e[3]=y(n=>i.$emit("arrowUp",n),["up"])),e[4]||(e[4]=y(()=>i.$emit("enter"),["enter"]))],"onUpdate:modelValue":e[5]||(e[5]=n=>r.value=n)},null,40,Mt),[[ue,r.value]]),e[6]||(e[6]=m("span",{class:"hidden",id:"emoji-picker-search-description"},"Use the left, right, up and down arrow keys to navigate the emoji search results.",-1))])}const Tt=x(Ot,[["render",It]]);var Lt=typeof window<"u";Lt&&(function(){for(var i=0,e=["ms","moz","webkit","o"],t=0;t<e.length&&!window.requestAnimationFrame;++t)window.requestAnimationFrame=window[e[t]+"RequestAnimationFrame"],window.cancelAnimationFrame=window[e[t]+"CancelAnimationFrame"]||window[e[t]+"CancelRequestAnimationFrame"];window.requestAnimationFrame||(window.requestAnimationFrame=function(s,r){var o=new Date().getTime(),n=Math.max(0,16-(o-i)),a=window.setTimeout(function(){s(o+n)},n);return i=o+n,a}),window.cancelAnimationFrame||(window.cancelAnimationFrame=function(s){clearTimeout(s)})})();class zt{constructor(e){this._vm=e,this._data=e.data,this._perLine=e.perLine,this._categories=[],this._categories.push(...this._data.categories()),this._categories=this._categories.filter(t=>t.emojis.length>0),this._categories[0].first=!0,Object.freeze(this._categories),this.activeCategory=this._categories[0],this.searchEmojis=null,this.previewEmoji=null,this.previewEmojiCategoryIdx=0,this.previewEmojiIdx=-1}onScroll(){const e=this._vm.$refs.scroll;if(!e)return;const t=e.scrollTop;let s=this.filteredCategories[0];for(let r=0,o=this.filteredCategories.length;r<o;r++){let n=this.filteredCategories[r],a=this._vm.getCategoryComponent(r);if(a&&a.$el.offsetTop-50>t)break;s=n}this.activeCategory=s}get allCategories(){return this._categories}get filteredCategories(){return this.searchEmojis?[{id:"search",name:"Search",emojis:this.searchEmojis}]:this._categories.filter(e=>e.emojis.length>0)}get previewEmojiCategory(){return this.previewEmojiCategoryIdx>=0?this.filteredCategories[this.previewEmojiCategoryIdx]:null}onAnchorClick(e){if(this.searchEmojis)return;let t=this.filteredCategories.indexOf(e),s=this._vm.getCategoryComponent(t),r=()=>{if(s){let o=s.$el.offsetTop;e.first&&(o=0),this._vm.$refs.scroll.scrollTop=o}};this._vm.infiniteScroll?r():this.activeCategory=this.filteredCategories[t]}onSearch(e){let t=this._data.search(e,this.maxSearchResults);this.searchEmojis=t,this.previewEmojiCategoryIdx=0,this.previewEmojiIdx=0,this.updatePreviewEmoji()}onEmojiEnter(e){this.previewEmoji=e,this.previewEmojiIdx=-1,this.previewEmojiCategoryIdx=-1}onEmojiLeave(e){this.previewEmoji=null}onArrowLeft(){this.previewEmojiIdx>0?this.previewEmojiIdx-=1:(this.previewEmojiCategoryIdx-=1,this.previewEmojiCategoryIdx<0?this.previewEmojiCategoryIdx=0:this.previewEmojiIdx=this.filteredCategories[this.previewEmojiCategoryIdx].emojis.length-1),this.updatePreviewEmoji()}onArrowRight(){this.previewEmojiIdx<this.emojisLength(this.previewEmojiCategoryIdx)-1?this.previewEmojiIdx+=1:(this.previewEmojiCategoryIdx+=1,this.previewEmojiCategoryIdx>=this.filteredCategories.length?this.previewEmojiCategoryIdx=this.filteredCategories.length-1:this.previewEmojiIdx=0),this.updatePreviewEmoji()}onArrowDown(){if(this.previewEmojiIdx==-1)return this.onArrowRight();const e=this.filteredCategories[this.previewEmojiCategoryIdx].emojis.length;let t=this._perLine;this.previewEmojiIdx+t>e&&(t=e%this._perLine);for(let s=0;s<t;s++)this.onArrowRight();this.updatePreviewEmoji()}onArrowUp(){let e=this._perLine;this.previewEmojiIdx-e<0&&(this.previewEmojiCategoryIdx>0?e=this.filteredCategories[this.previewEmojiCategoryIdx-1].emojis.length%this._perLine:e=0);for(let t=0;t<e;t++)this.onArrowLeft();this.updatePreviewEmoji()}updatePreviewEmoji(){this.previewEmoji=this.filteredCategories[this.previewEmojiCategoryIdx].emojis[this.previewEmojiIdx],this._vm.$nextTick(()=>{const e=this._vm.$refs.scroll,t=e.querySelector(".emoji-mart-emoji-selected"),s=e.offsetTop-e.offsetHeight;t&&t.offsetTop+t.offsetHeight>s+e.scrollTop&&(e.scrollTop+=t.offsetHeight),t&&t.offsetTop<e.scrollTop&&(e.scrollTop-=t.offsetHeight)})}emojisLength(e){return e==-1?0:this.filteredCategories[e].emojis.length}}const Nt={search:"Search",notfound:"No Emoji Found",categories:{search:"Search Results",recent:"Frequently Used",smileys:"Smileys & Emotion",people:"People & Body",nature:"Animals & Nature",foods:"Food & Drink",activity:"Activity",places:"Travel & Places",objects:"Objects",symbols:"Symbols",flags:"Flags",custom:"Custom"}},$t={props:{...tt,data:{type:Object,required:!0}},emits:["select","skin-change"],data(){return{activeSkin:this.skin||F.get("skin")||this.defaultSkin,view:new zt(this)}},computed:{customStyles(){return{width:this.calculateWidth+"px",...this.pickerStyles}},emojiProps(){return{native:this.native,skin:this.activeSkin,set:this.set,emojiTooltip:this.emojiTooltip,emojiSize:this.emojiSize,selectedEmoji:this.view.previewEmoji,selectedEmojiCategory:this.view.previewEmojiCategory,onEnter:this.onEmojiEnter.bind(this),onLeave:this.onEmojiLeave.bind(this),onClick:this.onEmojiClick.bind(this)}},skinProps(){return{skin:this.activeSkin}},calculateWidth(){return this.perLine*(this.emojiSize+12)+12+2+Je()},filteredCategories(){return this.view.filteredCategories},mergedI18n(){return Object.freeze(ae(Nt,this.i18n))},idleEmoji(){try{return this.data.emoji(this.emoji)}catch(i){return console.error("Default preview emoji `"+this.emoji+"` is not available, check the Picker `emoji` property"),console.error(i),this.data.firstEmoji()}},isSearching(){return this.view.searchEmojis!=null}},watch:{skin(){this.onSkinChange(this.skin)}},methods:{onScroll(){this.infiniteScroll&&!this.waitingForPaint&&(this.waitingForPaint=!0,window.requestAnimationFrame(this.onScrollPaint.bind(this)))},onScrollPaint(){this.waitingForPaint=!1,this.view.onScroll()},onAnchorClick(i){this.view.onAnchorClick(i)},onSearch(i){this.view.onSearch(i)},onEmojiEnter(i){this.view.onEmojiEnter(i)},onEmojiLeave(i){this.view.onEmojiLeave(i)},onArrowLeft(i){const e=this.view.previewEmojiIdx;this.view.onArrowLeft(),i&&this.view.previewEmojiIdx!==e&&i.preventDefault()},onArrowRight(){this.view.onArrowRight()},onArrowDown(){this.view.onArrowDown()},onArrowUp(i){this.view.onArrowUp(),i.preventDefault()},onEnter(){this.view.previewEmoji&&(this.$emit("select",this.view.previewEmoji),U.add(this.view.previewEmoji))},onEmojiClick(i){this.$emit("select",i),U.add(i)},onTextSelect(i){i.stopPropagation()},onSkinChange(i){this.activeSkin=i,F.update({skin:i}),this.$emit("skin-change",i)},getCategoryComponent(i){let e=this.$refs["categories_"+i];return e&&"0"in e?e[0]:e}},components:{Anchors:Ue,Category:dt,Preview:At,Search:Tt}},qt={key:0,class:"emoji-mart-bar emoji-mart-bar-anchors"},Bt={id:"emoji-mart-list",ref:"scrollContent",role:"listbox","aria-expanded":"true"},Ht={key:0,class:"emoji-mart-bar emoji-mart-bar-preview"};function Rt(i,e,t,s,r,o){const n=j("anchors"),a=j("search"),l=j("category"),g=j("preview");return c(),h("section",{class:"emoji-mart emoji-mart-static",style:O(o.customStyles)},[i.showCategories?(c(),h("div",qt,[v(n,{data:t.data,i18n:o.mergedI18n,color:i.color,categories:r.view.allCategories,"active-category":r.view.activeCategory,onClick:o.onAnchorClick},null,8,["data","i18n","color","categories","active-category","onClick"])])):C("",!0),T(i.$slots,"searchTemplate",{data:t.data,i18n:i.i18n,autoFocus:i.autoFocus,onSearch:o.onSearch},()=>[i.showSearch?(c(),L(a,{key:0,ref:"search",data:t.data,i18n:o.mergedI18n,"auto-focus":i.autoFocus,"on-search":o.onSearch,onSearch:o.onSearch,onArrowLeft:o.onArrowLeft,onArrowRight:o.onArrowRight,onArrowDown:o.onArrowDown,onArrowUp:o.onArrowUp,onEnter:o.onEnter,onSelect:o.onTextSelect},null,8,["data","i18n","auto-focus","on-search","onSearch","onArrowLeft","onArrowRight","onArrowDown","onArrowUp","onEnter","onSelect"])):C("",!0)]),m("div",{role:"tabpanel",class:"emoji-mart-scroll",ref:"scroll",onScroll:e[0]||(e[0]=(...p)=>o.onScroll&&o.onScroll(...p))},[m("div",Bt,[T(i.$slots,"customCategory"),(c(!0),h(k,null,A(r.view.filteredCategories,(p,S)=>Y((c(),L(l,{ref_for:!0,ref:"categories_"+S,key:p.id,data:t.data,i18n:o.mergedI18n,id:p.id,name:p.name,emojis:p.emojis,"emoji-props":o.emojiProps},null,8,["data","i18n","id","name","emojis","emoji-props"])),[[pe,i.infiniteScroll||p==r.view.activeCategory||o.isSearching]])),128))],512)],544),T(i.$slots,"previewTemplate",{data:t.data,title:i.title,emoji:r.view.previewEmoji,idleEmoji:o.idleEmoji,showSkinTones:i.showSkinTones,emojiProps:o.emojiProps,skinProps:o.skinProps,onSkinChange:o.onSkinChange},()=>[i.showPreview?(c(),h("div",Ht,[v(g,{data:t.data,title:i.title,emoji:r.view.previewEmoji,"idle-emoji":o.idleEmoji,"show-skin-tones":i.showSkinTones,"emoji-props":o.emojiProps,"skin-props":o.skinProps,"on-skin-change":o.onSkinChange},null,8,["data","title","emoji","idle-emoji","show-skin-tones","emoji-props","skin-props","on-skin-change"])])):C("",!0)])],4)}const Dt=x($t,[["render",Rt]]),Ut={name:"CircleIcon",emits:["click"],props:{title:{type:String},fillColor:{type:String,default:"currentColor"},size:{type:Number,default:24}}},Vt=["aria-hidden","aria-label"],Wt=["fill","width","height"],Kt={d:"M12,2A10,10 0 0,0 2,12A10,10 0 0,0 12,22A10,10 0 0,0 22,12A10,10 0 0,0 12,2Z"},Gt={key:0};function Jt(i,e,t,s,r,o){return c(),h("span",ee(i.$attrs,{"aria-hidden":t.title?null:"true","aria-label":t.title,class:"material-design-icon circle-icon",role:"img",onClick:e[0]||(e[0]=n=>i.$emit("click",n))}),[(c(),h("svg",{fill:t.fillColor,class:"material-design-icon__svg",width:t.size,height:t.size,viewBox:"0 0 24 24"},[m("path",Kt,[t.title?(c(),h("title",Gt,_(t.title),1)):C("",!0)])],8,Wt))],16,Vt)}const Zt=te(Ut,[["render",Jt]]);ke(be,Se,Ee,Ce);let B;const Qt={search:d("Search emoji"),notfound:d("No emoji found"),categories:{search:d("Search results"),recent:d("Frequently used"),smileys:d("Smileys & Emotion"),people:d("People & Body"),nature:d("Animals & Nature"),foods:d("Food & Drink"),activity:d("Activities"),places:d("Travel & Places"),objects:d("Objects"),symbols:d("Symbols"),flags:d("Flags"),custom:d("Custom")}},X=[new P(255,222,52,d("Neutral skin color")),new P(228,205,166,d("Light skin tone")),new P(250,221,192,d("Medium light skin tone")),new P(174,129,87,d("Medium skin tone")),new P(158,113,88,d("Medium dark skin tone")),new P(96,79,69,d("Dark skin tone"))],Xt={name:"NcEmojiPicker",components:{IconCircle:Zt,NcButton:Pe,NcColorPicker:xe,NcPopover:fe,NcTextField:Ae,Emoji:K,Picker:Dt},props:{activeSet:{type:String,default:"native"},showPreview:{type:Boolean,default:!1},allowUnselect:{type:Boolean,default:!1},selectedEmoji:{type:String,default:""},previewFallbackEmoji:{type:String,default:"grinning"},previewFallbackName:{type:String,default:d("Pick an emoji")},closeOnSelect:{type:Boolean,default:!0},container:{type:[Boolean,String,Object,Element],default:"body"}},emits:["select","selectData","unselect"],setup(){return B||(B=new Xe(me)),{emojiIndex:B,skinTonePalette:X,i18n:Qt}},data(){const i=he();return{currentColor:X[i-1],currentSkinTone:i,search:"",open:!1}},computed:{native(){return this.activeSet==="native"}},created(){_e(()=>this.open)},methods:{t:d,clearSearch(){this.search="",this.$refs.search.focus()},onChangeSkinTone(i){const e=this.skinTonePalette.findIndex(t=>t.color.toLowerCase()===i.toLowerCase());e>-1&&(this.currentSkinTone=e+1,this.currentColor=this.skinTonePalette[e],ce(this.currentSkinTone))},select(i){this.$emit("select",i.native),this.$emit("selectData",i),this.closeOnSelect&&(this.open=!1)},unselect(){this.$emit("unselect")},afterShow(){this.$refs.search.focus()},afterHide(){(!document.activeElement||this.$refs.picker.$el.contains(document.activeElement)||!ye(document.activeElement))&&this.$refs.popover.$el.querySelector('button, [role="button"]')?.focus()},handleTabNavigationSkippingEmojis(i){const e=i.target,t=Array.from(this.$refs.picker.$el.querySelectorAll("button:not(.emoji-mart-emoji), input"));i.shiftKey?(t.findLast(s=>e.compareDocumentPosition(s)&Node.DOCUMENT_POSITION_PRECEDING)||t.at(-1)).focus():(t.find(s=>e.compareDocumentPosition(s)&Node.DOCUMENT_POSITION_FOLLOWING)||t[0]).focus()},async callPickerArrowHandlerWithScrollFix(i,e){this.$refs.picker[i](e),await this.$nextTick(),this.$refs.picker.$el.querySelector(".emoji-mart-emoji-selected")?.scrollIntoView({block:"center",inline:"center"})}}},Yt={class:"nc-emoji-picker-container"},ei={class:"search__wrapper"},ti={class:"emoji-mart-category-label"},ii={class:"emoji-mart-category-label"};function oi(i,e,t,s,r,o){const n=j("NcTextField"),a=j("IconCircle"),l=j("NcButton"),g=j("NcColorPicker"),p=j("Emoji"),S=j("Picker"),M=j("NcPopover");return c(),L(M,{ref:"popover",shown:r.open,"onUpdate:shown":e[6]||(e[6]=w=>r.open=w),container:t.container,popupRole:"dialog",noFocusTrap:!0,onAfterShow:o.afterShow,onAfterHide:o.afterHide},{trigger:b(w=>[T(i.$slots,"default",we(ve(w)),void 0,!0)]),default:b(()=>[m("div",Yt,[v(S,ee({ref:"picker",color:"var(--color-primary-element)",data:s.emojiIndex,emoji:t.previewFallbackEmoji,i18n:s.i18n,native:o.native,emojiSize:20,perLine:8,pickerStyles:{width:"320px"},showPreview:t.showPreview,skin:r.currentSkinTone,showSkinTones:!1,title:t.previewFallbackName,role:"dialog","aria-modal":"true","aria-label":o.t("Emoji picker")},i.$attrs,{onKeydown:y(je(o.handleTabNavigationSkippingEmojis,["prevent"]),["tab"]),onSelect:o.select}),ge({searchTemplate:b(({onSearch:w})=>[m("div",ei,[v(n,{ref:"search",modelValue:r.search,"onUpdate:modelValue":[e[0]||(e[0]=u=>r.search=u),u=>w(r.search)],class:"search",label:o.t("Search"),labelVisible:!0,placeholder:s.i18n.search,trailingButtonIcon:"close",trailingButtonLabel:o.t("Clear search"),showTrailingButton:r.search!=="",onKeydown:[e[1]||(e[1]=y(u=>o.callPickerArrowHandlerWithScrollFix("onArrowLeft",u),["left"])),e[2]||(e[2]=y(u=>o.callPickerArrowHandlerWithScrollFix("onArrowRight",u),["right"])),e[3]||(e[3]=y(u=>o.callPickerArrowHandlerWithScrollFix("onArrowDown",u),["down"])),e[4]||(e[4]=y(u=>o.callPickerArrowHandlerWithScrollFix("onArrowUp",u),["up"])),e[5]||(e[5]=y(u=>i.$refs.picker.onEnter(u),["enter"]))],onTrailingButtonClick:u=>{o.clearSearch(),w("")}},null,8,["modelValue","label","placeholder","trailingButtonLabel","showTrailingButton","onTrailingButtonClick","onUpdate:modelValue"]),v(g,{paletteOnly:"",container:t.container,palette:s.skinTonePalette,modelValue:r.currentColor.color,"onUpdate:modelValue":o.onChangeSkinTone},{default:b(()=>[v(l,{"aria-label":o.t("Skin tone"),variant:"tertiary-no-background"},{icon:b(()=>[v(a,{style:O({color:r.currentColor.color}),title:r.currentColor.name,size:20},null,8,["style","title"])]),_:1},8,["aria-label"])]),_:1},8,["container","palette","modelValue","onUpdate:modelValue"])])]),_:2},[t.allowUnselect&&t.selectedEmoji?{name:"customCategory",fn:b(()=>[m("div",ti,[m("h3",ii,_(o.t("Selected")),1)]),v(p,{class:"emoji-selected",data:s.emojiIndex,emoji:t.selectedEmoji,native:"",size:32,onClick:o.unselect},null,8,["data","emoji","onClick"]),v(p,{class:"emoji-delete",data:s.emojiIndex,emoji:":x:",native:"",size:10,onClick:o.unselect},null,8,["data","onClick"])]),key:"0"}:void 0]),1040,["data","emoji","i18n","native","showPreview","skin","title","aria-label","onKeydown","onSelect"])])]),_:3},8,["shown","container","onAfterShow","onAfterHide"])}const ui=te(Xt,[["render",oi],["__scopeId","data-v-11acdb77"]]);export{ui as N}; +//# sourceMappingURL=NcEmojiPicker-UTxgju3f-D4QbKSIV.chunk.mjs.map diff --git a/dist/NcEmojiPicker-UTxgju3f-HSbVMwrx.chunk.mjs.license b/dist/NcEmojiPicker-UTxgju3f-D4QbKSIV.chunk.mjs.license similarity index 100% rename from dist/NcEmojiPicker-UTxgju3f-HSbVMwrx.chunk.mjs.license rename to dist/NcEmojiPicker-UTxgju3f-D4QbKSIV.chunk.mjs.license diff --git a/dist/NcEmojiPicker-UTxgju3f-HSbVMwrx.chunk.mjs.map b/dist/NcEmojiPicker-UTxgju3f-D4QbKSIV.chunk.mjs.map similarity index 99% rename from dist/NcEmojiPicker-UTxgju3f-HSbVMwrx.chunk.mjs.map rename to dist/NcEmojiPicker-UTxgju3f-D4QbKSIV.chunk.mjs.map index e2c80515f9f60..5822adc2cce2a 100644 --- a/dist/NcEmojiPicker-UTxgju3f-HSbVMwrx.chunk.mjs.map +++ b/dist/NcEmojiPicker-UTxgju3f-D4QbKSIV.chunk.mjs.map @@ -1 +1 @@ -{"version":3,"file":"NcEmojiPicker-UTxgju3f-HSbVMwrx.chunk.mjs","sources":["../node_modules/emoji-mart-vue-fast/src/utils/store.js","../node_modules/emoji-mart-vue-fast/src/utils/data.js","../node_modules/emoji-mart-vue-fast/src/utils/frequently.js","../node_modules/emoji-mart-vue-fast/src/svgs/index.js","../node_modules/emoji-mart-vue-fast/src/components/anchors.vue","../node_modules/emoji-mart-vue-fast/src/polyfills/stringFromCodePoint.js","../node_modules/emoji-mart-vue-fast/src/utils/index.js","../node_modules/emoji-mart-vue-fast/src/utils/emoji-data.js","../node_modules/emoji-mart-vue-fast/src/utils/shared-props.js","../node_modules/emoji-mart-vue-fast/src/components/Emoji.vue","../node_modules/emoji-mart-vue-fast/src/components/category.vue","../node_modules/emoji-mart-vue-fast/src/components/skins.vue","../node_modules/emoji-mart-vue-fast/src/components/preview.vue","../node_modules/emoji-mart-vue-fast/src/components/search.vue","../node_modules/emoji-mart-vue-fast/src/vendor/raf-polyfill.js","../node_modules/emoji-mart-vue-fast/src/utils/picker.js","../node_modules/emoji-mart-vue-fast/src/components/Picker.vue","../node_modules/@nextcloud/vue/dist/chunks/NcEmojiPicker-UTxgju3f.mjs"],"sourcesContent":["var NAMESPACE = 'emoji-mart'\n\nconst _JSON = JSON\n\nvar isLocalStorageSupported =\n typeof window !== 'undefined' && 'localStorage' in window\n\nlet getter\nlet setter\n\nfunction setHandlers(handlers) {\n handlers || (handlers = {})\n\n getter = handlers.getter\n setter = handlers.setter\n}\n\nfunction setNamespace(namespace) {\n NAMESPACE = namespace\n}\n\nfunction update(state) {\n for (let key in state) {\n let value = state[key]\n set(key, value)\n }\n}\n\nfunction set(key, value) {\n if (setter) {\n setter(key, value)\n } else {\n if (!isLocalStorageSupported) return\n try {\n window.localStorage[`${NAMESPACE}.${key}`] = _JSON.stringify(value)\n } catch (e) {}\n }\n}\n\nfunction get(key) {\n if (getter) {\n return getter(key)\n } else {\n if (!isLocalStorageSupported) return\n try {\n var value = window.localStorage[`${NAMESPACE}.${key}`]\n } catch (e) {\n return\n }\n\n if (value) {\n return JSON.parse(value)\n }\n }\n}\n\nexport default { update, set, get, setNamespace, setHandlers }\n","const mapping = {\n name: 'a',\n unified: 'b',\n non_qualified: 'c',\n has_img_apple: 'd',\n has_img_google: 'e',\n has_img_twitter: 'f',\n has_img_facebook: 'h',\n keywords: 'j',\n sheet: 'k',\n emoticons: 'l',\n text: 'm',\n short_names: 'n',\n added_in: 'o',\n}\n\nconst buildSearch = (emoji) => {\n const search = []\n\n var addToSearch = (strings, split) => {\n if (!strings) {\n return\n }\n\n ;(Array.isArray(strings) ? strings : [strings]).forEach((string) => {\n ;(split ? string.split(/[-|_|\\s]+/) : [string]).forEach((s) => {\n s = s.toLowerCase()\n\n if (search.indexOf(s) == -1) {\n search.push(s)\n }\n })\n })\n }\n\n addToSearch(emoji.short_names, true)\n addToSearch(emoji.name, true)\n addToSearch(emoji.keywords, false)\n addToSearch(emoji.emoticons, false)\n\n return search.join(',')\n}\n\nfunction deepFreeze(object) {\n // Retrieve the property names defined on object\n var propNames = Object.getOwnPropertyNames(object)\n\n // Freeze properties before freezing self\n for (let name of propNames) {\n let value = object[name]\n object[name] =\n value && typeof value === 'object' ? deepFreeze(value) : value\n }\n return Object.freeze(object)\n}\n\nconst uncompress = (data) => {\n if (!data.compressed) {\n return data\n }\n data.compressed = false\n\n for (let id in data.emojis) {\n let emoji = data.emojis[id]\n\n for (let key in mapping) {\n emoji[key] = emoji[mapping[key]]\n delete emoji[mapping[key]]\n }\n\n if (!emoji.short_names) emoji.short_names = []\n emoji.short_names.unshift(id)\n\n emoji.sheet_x = emoji.sheet[0]\n emoji.sheet_y = emoji.sheet[1]\n delete emoji.sheet\n\n if (!emoji.text) emoji.text = ''\n\n if (!emoji.added_in) emoji.added_in = 6\n emoji.added_in = emoji.added_in.toFixed(1)\n\n emoji.search = buildSearch(emoji)\n }\n data = deepFreeze(data)\n return data\n}\n\nexport { buildSearch, uncompress }\n","import store from './store'\n\nconst DEFAULTS = [\n '+1',\n 'grinning',\n 'kissing_heart',\n 'heart_eyes',\n 'laughing',\n 'stuck_out_tongue_winking_eye',\n 'sweat_smile',\n 'joy',\n 'scream',\n 'disappointed',\n 'unamused',\n 'weary',\n 'sob',\n 'sunglasses',\n 'heart',\n 'hankey',\n]\n\nlet frequently, initialized\nlet defaults = {}\n\nfunction init() {\n initialized = true\n frequently = store.get('frequently')\n}\n\nfunction add(emoji) {\n if (!initialized) init()\n var { id } = emoji\n\n frequently || (frequently = defaults)\n frequently[id] || (frequently[id] = 0)\n frequently[id] += 1\n\n store.set('last', id)\n store.set('frequently', frequently)\n}\n\nfunction get(maxNumber) {\n if (!initialized) init()\n if (!frequently) {\n defaults = {}\n\n const result = []\n\n let defaultLength = Math.min(maxNumber, DEFAULTS.length)\n for (let i = 0; i < defaultLength; i++) {\n defaults[DEFAULTS[i]] = parseInt((defaultLength - i) / 4, 10) + 1\n result.push(DEFAULTS[i])\n }\n\n return result\n }\n\n const quantity = maxNumber\n const frequentlyKeys = []\n\n for (let key in frequently) {\n if (frequently.hasOwnProperty(key)) {\n frequentlyKeys.push(key)\n }\n }\n\n const sorted = frequentlyKeys\n .sort((a, b) => frequently[a] - frequently[b])\n .reverse()\n const sliced = sorted.slice(0, quantity)\n\n const last = store.get('last')\n\n if (last && sliced.indexOf(last) == -1) {\n sliced.pop()\n sliced.push(last)\n }\n\n return sliced\n}\n\nexport default { add, get }\n","const SVGs = {\n activity: `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" width=\"24\" height=\"24\"><path d=\"M12 0C5.373 0 0 5.372 0 12c0 6.627 5.373 12 12 12 6.628 0 12-5.373 12-12 0-6.628-5.372-12-12-12m9.949 11H17.05c.224-2.527 1.232-4.773 1.968-6.113A9.966 9.966 0 0 1 21.949 11M13 11V2.051a9.945 9.945 0 0 1 4.432 1.564c-.858 1.491-2.156 4.22-2.392 7.385H13zm-2 0H8.961c-.238-3.165-1.536-5.894-2.393-7.385A9.95 9.95 0 0 1 11 2.051V11zm0 2v8.949a9.937 9.937 0 0 1-4.432-1.564c.857-1.492 2.155-4.221 2.393-7.385H11zm4.04 0c.236 3.164 1.534 5.893 2.392 7.385A9.92 9.92 0 0 1 13 21.949V13h2.04zM4.982 4.887C5.718 6.227 6.726 8.473 6.951 11h-4.9a9.977 9.977 0 0 1 2.931-6.113M2.051 13h4.9c-.226 2.527-1.233 4.771-1.969 6.113A9.972 9.972 0 0 1 2.051 13m16.967 6.113c-.735-1.342-1.744-3.586-1.968-6.113h4.899a9.961 9.961 0 0 1-2.931 6.113\"/></svg>`,\n\n custom: `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" width=\"24\" height=\"24\"><g transform=\"translate(2.000000, 1.000000)\"><rect id=\"Rectangle\" x=\"8\" y=\"0\" width=\"3\" height=\"21\" rx=\"1.5\"></rect><rect id=\"Rectangle\" transform=\"translate(9.843, 10.549) rotate(60) translate(-9.843, -10.549) \" x=\"8.343\" y=\"0.049\" width=\"3\" height=\"21\" rx=\"1.5\"></rect><rect id=\"Rectangle\" transform=\"translate(9.843, 10.549) rotate(-60) translate(-9.843, -10.549) \" x=\"8.343\" y=\"0.049\" width=\"3\" height=\"21\" rx=\"1.5\"></rect></g></svg>`,\n\n flags: `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" width=\"24\" height=\"24\"><path d=\"M0 0l6.084 24H8L1.916 0zM21 5h-4l-1-4H4l3 12h3l1 4h13L21 5zM6.563 3h7.875l2 8H8.563l-2-8zm8.832 10l-2.856 1.904L12.063 13h3.332zM19 13l-1.5-6h1.938l2 8H16l3-2z\"/></svg>`,\n\n foods: `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" width=\"24\" height=\"24\"><path d=\"M17 4.978c-1.838 0-2.876.396-3.68.934.513-1.172 1.768-2.934 4.68-2.934a1 1 0 0 0 0-2c-2.921 0-4.629 1.365-5.547 2.512-.064.078-.119.162-.18.244C11.73 1.838 10.798.023 9.207.023 8.579.022 7.85.306 7 .978 5.027 2.54 5.329 3.902 6.492 4.999 3.609 5.222 0 7.352 0 12.969c0 4.582 4.961 11.009 9 11.009 1.975 0 2.371-.486 3-1 .629.514 1.025 1 3 1 4.039 0 9-6.418 9-11 0-5.953-4.055-8-7-8M8.242 2.546c.641-.508.943-.523.965-.523.426.169.975 1.405 1.357 3.055-1.527-.629-2.741-1.352-2.98-1.846.059-.112.241-.356.658-.686M15 21.978c-1.08 0-1.21-.109-1.559-.402l-.176-.146c-.367-.302-.816-.452-1.266-.452s-.898.15-1.266.452l-.176.146c-.347.292-.477.402-1.557.402-2.813 0-7-5.389-7-9.009 0-5.823 4.488-5.991 5-5.991 1.939 0 2.484.471 3.387 1.251l.323.276a1.995 1.995 0 0 0 2.58 0l.323-.276c.902-.78 1.447-1.251 3.387-1.251.512 0 5 .168 5 6 0 3.617-4.187 9-7 9\"/></svg>`,\n\n nature: `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" width=\"24\" height=\"24\"><path d=\"M15.5 8a1.5 1.5 0 1 0 .001 3.001A1.5 1.5 0 0 0 15.5 8M8.5 8a1.5 1.5 0 1 0 .001 3.001A1.5 1.5 0 0 0 8.5 8\"/><path d=\"M18.933 0h-.027c-.97 0-2.138.787-3.018 1.497-1.274-.374-2.612-.51-3.887-.51-1.285 0-2.616.133-3.874.517C7.245.79 6.069 0 5.093 0h-.027C3.352 0 .07 2.67.002 7.026c-.039 2.479.276 4.238 1.04 5.013.254.258.882.677 1.295.882.191 3.177.922 5.238 2.536 6.38.897.637 2.187.949 3.2 1.102C8.04 20.6 8 20.795 8 21c0 1.773 2.35 3 4 3 1.648 0 4-1.227 4-3 0-.201-.038-.393-.072-.586 2.573-.385 5.435-1.877 5.925-7.587.396-.22.887-.568 1.104-.788.763-.774 1.079-2.534 1.04-5.013C23.929 2.67 20.646 0 18.933 0M3.223 9.135c-.237.281-.837 1.155-.884 1.238-.15-.41-.368-1.349-.337-3.291.051-3.281 2.478-4.972 3.091-5.031.256.015.731.27 1.265.646-1.11 1.171-2.275 2.915-2.352 5.125-.133.546-.398.858-.783 1.313M12 22c-.901 0-1.954-.693-2-1 0-.654.475-1.236 1-1.602V20a1 1 0 1 0 2 0v-.602c.524.365 1 .947 1 1.602-.046.307-1.099 1-2 1m3-3.48v.02a4.752 4.752 0 0 0-1.262-1.02c1.092-.516 2.239-1.334 2.239-2.217 0-1.842-1.781-2.195-3.977-2.195-2.196 0-3.978.354-3.978 2.195 0 .883 1.148 1.701 2.238 2.217A4.8 4.8 0 0 0 9 18.539v-.025c-1-.076-2.182-.281-2.973-.842-1.301-.92-1.838-3.045-1.853-6.478l.023-.041c.496-.826 1.49-1.45 1.804-3.102 0-2.047 1.357-3.631 2.362-4.522C9.37 3.178 10.555 3 11.948 3c1.447 0 2.685.192 3.733.57 1 .9 2.316 2.465 2.316 4.48.313 1.651 1.307 2.275 1.803 3.102.035.058.068.117.102.178-.059 5.967-1.949 7.01-4.902 7.19m6.628-8.202c-.037-.065-.074-.13-.113-.195a7.587 7.587 0 0 0-.739-.987c-.385-.455-.648-.768-.782-1.313-.076-2.209-1.241-3.954-2.353-5.124.531-.376 1.004-.63 1.261-.647.636.071 3.044 1.764 3.096 5.031.027 1.81-.347 3.218-.37 3.235\"/></svg>`,\n\n objects: `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" width=\"24\" height=\"24\"><path d=\"M12 0a9 9 0 0 0-5 16.482V21s2.035 3 5 3 5-3 5-3v-4.518A9 9 0 0 0 12 0zm0 2c3.86 0 7 3.141 7 7s-3.14 7-7 7-7-3.141-7-7 3.14-7 7-7zM9 17.477c.94.332 1.946.523 3 .523s2.06-.19 3-.523v.834c-.91.436-1.925.689-3 .689a6.924 6.924 0 0 1-3-.69v-.833zm.236 3.07A8.854 8.854 0 0 0 12 21c.965 0 1.888-.167 2.758-.451C14.155 21.173 13.153 22 12 22c-1.102 0-2.117-.789-2.764-1.453z\"/><path d=\"M14.745 12.449h-.004c-.852-.024-1.188-.858-1.577-1.824-.421-1.061-.703-1.561-1.182-1.566h-.009c-.481 0-.783.497-1.235 1.537-.436.982-.801 1.811-1.636 1.791l-.276-.043c-.565-.171-.853-.691-1.284-1.794-.125-.313-.202-.632-.27-.913-.051-.213-.127-.53-.195-.634C7.067 9.004 7.039 9 6.99 9A1 1 0 0 1 7 7h.01c1.662.017 2.015 1.373 2.198 2.134.486-.981 1.304-2.058 2.797-2.075 1.531.018 2.28 1.153 2.731 2.141l.002-.008C14.944 8.424 15.327 7 16.979 7h.032A1 1 0 1 1 17 9h-.011c-.149.076-.256.474-.319.709a6.484 6.484 0 0 1-.311.951c-.429.973-.79 1.789-1.614 1.789\"/></svg>`,\n\n smileys: `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" width=\"24\" height=\"24\"><path d=\"M12 0C5.373 0 0 5.373 0 12s5.373 12 12 12 12-5.373 12-12S18.627 0 12 0m0 22C6.486 22 2 17.514 2 12S6.486 2 12 2s10 4.486 10 10-4.486 10-10 10\"/><path d=\"M8 7a2 2 0 1 0-.001 3.999A2 2 0 0 0 8 7M16 7a2 2 0 1 0-.001 3.999A2 2 0 0 0 16 7M15.232 15c-.693 1.195-1.87 2-3.349 2-1.477 0-2.655-.805-3.347-2H15m3-2H6a6 6 0 1 0 12 0\"/></svg>`,\n\n people: `<svg xmlns:svg=\"http://www.w3.org/2000/svg\" height=\"24\" width=\"24\" viewBox=\"0 0 24 24\"> <path id=\"path3814\" d=\"m 3.3591089,21.17726 c 0.172036,0.09385 4.265994,2.29837 8.8144451,2.29837 4.927767,0 8.670894,-2.211883 8.82782,-2.306019 0.113079,-0.06785 0.182268,-0.190051 0.182267,-0.321923 0,-3.03119 -0.929494,-5.804936 -2.617196,-7.810712 -1.180603,-1.403134 -2.661918,-2.359516 -4.295699,-2.799791 4.699118,-2.236258 3.102306,-9.28617162 -2.097191,-9.28617162 -5.1994978,0 -6.7963103,7.04991362 -2.097192,9.28617162 -1.6337821,0.440275 -3.1150971,1.396798 -4.2956991,2.799791 -1.687703,2.005776 -2.617196,4.779522 -2.617196,7.810712 1.2e-6,0.137378 0.075039,0.263785 0.195641,0.329572 z M 8.0439319,5.8308783 C 8.0439309,2.151521 12.492107,0.30955811 15.093491,2.9109411 17.694874,5.5123241 15.852911,9.9605006 12.173554,9.9605 9.8938991,9.9579135 8.0465186,8.1105332 8.0439319,5.8308783 Z m -1.688782,7.6894977 c 1.524535,-1.811449 3.5906601,-2.809035 5.8184041,-2.809035 2.227744,0 4.293869,0.997586 5.818404,2.809035 1.533639,1.822571 2.395932,4.339858 2.439152,7.108301 -0.803352,0.434877 -4.141636,2.096112 -8.257556,2.096112 -3.8062921,0 -7.3910861,-1.671043 -8.2573681,-2.104981 0.04505,-2.765017 0.906968,-5.278785 2.438964,-7.099432 z\" /> <path id=\"path3816\" d=\"M 12.173828 0.38867188 C 9.3198513 0.38867187 7.3770988 2.3672285 6.8652344 4.6308594 C 6.4218608 6.5916015 7.1153562 8.7676117 8.9648438 10.126953 C 7.6141249 10.677376 6.3550511 11.480944 5.3496094 12.675781 C 3.5629317 14.799185 2.6015625 17.701475 2.6015625 20.847656 C 2.6015654 21.189861 2.7894276 21.508002 3.0898438 21.671875 C 3.3044068 21.788925 7.4436239 24.039062 12.173828 24.039062 C 17.269918 24.039062 21.083568 21.776786 21.291016 21.652344 C 21.57281 21.483266 21.746097 21.176282 21.746094 20.847656 C 21.746094 17.701475 20.78277 14.799185 18.996094 12.675781 C 17.990455 11.480591 16.733818 10.675362 15.382812 10.125 C 17.231132 8.7655552 17.925675 6.5910701 17.482422 4.6308594 C 16.970557 2.3672285 15.027805 0.38867188 12.173828 0.38867188 z M 12.792969 2.3007812 C 13.466253 2.4161792 14.125113 2.7383941 14.695312 3.3085938 C 15.835712 4.4489931 15.985604 5.9473549 15.46875 7.1953125 C 14.951896 8.4432701 13.786828 9.3984378 12.173828 9.3984375 C 10.197719 9.3961954 8.607711 7.806187 8.6054688 5.8300781 C 8.6054683 4.2170785 9.5606362 3.0520102 10.808594 2.5351562 C 11.432573 2.2767293 12.119685 2.1853833 12.792969 2.3007812 z M 12.173828 11.273438 C 14.233647 11.273438 16.133674 12.185084 17.5625 13.882812 C 18.93069 15.508765 19.698347 17.776969 19.808594 20.283203 C 18.807395 20.800235 15.886157 22.162109 12.173828 22.162109 C 8.7614632 22.162109 5.6245754 20.787069 4.5390625 20.265625 C 4.6525896 17.766717 5.4203315 15.504791 6.7851562 13.882812 C 8.2139827 12.185084 10.11401 11.273438 12.173828 11.273438 z \" /> </svg>`,\n\n places: `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" width=\"24\" height=\"24\"><path d=\"M6.5 12C5.122 12 4 13.121 4 14.5S5.122 17 6.5 17 9 15.879 9 14.5 7.878 12 6.5 12m0 3c-.275 0-.5-.225-.5-.5s.225-.5.5-.5.5.225.5.5-.225.5-.5.5M17.5 12c-1.378 0-2.5 1.121-2.5 2.5s1.122 2.5 2.5 2.5 2.5-1.121 2.5-2.5-1.122-2.5-2.5-2.5m0 3c-.275 0-.5-.225-.5-.5s.225-.5.5-.5.5.225.5.5-.225.5-.5.5\"/><path d=\"M22.482 9.494l-1.039-.346L21.4 9h.6c.552 0 1-.439 1-.992 0-.006-.003-.008-.003-.008H23c0-1-.889-2-1.984-2h-.642l-.731-1.717C19.262 3.012 18.091 2 16.764 2H7.236C5.909 2 4.738 3.012 4.357 4.283L3.626 6h-.642C1.889 6 1 7 1 8h.003S1 8.002 1 8.008C1 8.561 1.448 9 2 9h.6l-.043.148-1.039.346a2.001 2.001 0 0 0-1.359 2.097l.751 7.508a1 1 0 0 0 .994.901H3v1c0 1.103.896 2 2 2h2c1.104 0 2-.897 2-2v-1h6v1c0 1.103.896 2 2 2h2c1.104 0 2-.897 2-2v-1h1.096a.999.999 0 0 0 .994-.901l.751-7.508a2.001 2.001 0 0 0-1.359-2.097M6.273 4.857C6.402 4.43 6.788 4 7.236 4h9.527c.448 0 .834.43.963.857L19.313 9H4.688l1.585-4.143zM7 21H5v-1h2v1zm12 0h-2v-1h2v1zm2.189-3H2.811l-.662-6.607L3 11h18l.852.393L21.189 18z\"/></svg>`,\n\n recent: `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" width=\"24\" height=\"24\"><path d=\"M13 4h-2l-.001 7H9v2h2v2h2v-2h4v-2h-4z\"/><path d=\"M12 0C5.373 0 0 5.373 0 12s5.373 12 12 12 12-5.373 12-12S18.627 0 12 0m0 22C6.486 22 2 17.514 2 12S6.486 2 12 2s10 4.486 10 10-4.486 10-10 10\"/></svg>`,\n\n symbols: `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" width=\"24\" height=\"24\"><path d=\"M0 0h11v2H0zM4 11h3V6h4V4H0v2h4zM15.5 17c1.381 0 2.5-1.116 2.5-2.493s-1.119-2.493-2.5-2.493S13 13.13 13 14.507 14.119 17 15.5 17m0-2.986c.276 0 .5.222.5.493 0 .272-.224.493-.5.493s-.5-.221-.5-.493.224-.493.5-.493M21.5 19.014c-1.381 0-2.5 1.116-2.5 2.493S20.119 24 21.5 24s2.5-1.116 2.5-2.493-1.119-2.493-2.5-2.493m0 2.986a.497.497 0 0 1-.5-.493c0-.271.224-.493.5-.493s.5.222.5.493a.497.497 0 0 1-.5.493M22 13l-9 9 1.513 1.5 8.99-9.009zM17 11c2.209 0 4-1.119 4-2.5V2s.985-.161 1.498.949C23.01 4.055 23 6 23 6s1-1.119 1-3.135C24-.02 21 0 21 0h-2v6.347A5.853 5.853 0 0 0 17 6c-2.209 0-4 1.119-4 2.5s1.791 2.5 4 2.5M10.297 20.482l-1.475-1.585a47.54 47.54 0 0 1-1.442 1.129c-.307-.288-.989-1.016-2.045-2.183.902-.836 1.479-1.466 1.729-1.892s.376-.871.376-1.336c0-.592-.273-1.178-.818-1.759-.546-.581-1.329-.871-2.349-.871-1.008 0-1.79.293-2.344.879-.556.587-.832 1.181-.832 1.784 0 .813.419 1.748 1.256 2.805-.847.614-1.444 1.208-1.794 1.784a3.465 3.465 0 0 0-.523 1.833c0 .857.308 1.56.924 2.107.616.549 1.423.823 2.42.823 1.173 0 2.444-.379 3.813-1.137L8.235 24h2.819l-2.09-2.383 1.333-1.135zm-6.736-6.389a1.02 1.02 0 0 1 .73-.286c.31 0 .559.085.747.254a.849.849 0 0 1 .283.659c0 .518-.419 1.112-1.257 1.784-.536-.651-.805-1.231-.805-1.742a.901.901 0 0 1 .302-.669M3.74 22c-.427 0-.778-.116-1.057-.349-.279-.232-.418-.487-.418-.766 0-.594.509-1.288 1.527-2.083.968 1.134 1.717 1.946 2.248 2.438-.921.507-1.686.76-2.3.76\"/></svg>`,\n}\n\nexport default SVGs\n","<template>\n <div role=\"tablist\" class=\"emoji-mart-anchors\">\n <button\n v-for=\"category in categories\"\n role=\"tab\"\n type=\"button\"\n :aria-label=\"category.name\"\n :aria-selected=\"category.id == activeCategory.id\"\n :key=\"category.id\"\n :class=\"{\n 'emoji-mart-anchor': true,\n 'emoji-mart-anchor-selected': category.id == activeCategory.id,\n }\"\n :style=\"{ color: category.id == activeCategory.id ? color : '' }\"\n :data-title=\"i18n.categories[category.id]\"\n @click=\"$emit('click', category)\"\n >\n <div aria-hidden=\"true\" v-html=\"svgs[category.id]\" />\n <span\n aria-hidden=\"true\"\n class=\"emoji-mart-anchor-bar\"\n :style=\"{ backgroundColor: color }\"\n ></span>\n </button>\n </div>\n</template>\n\n<script>\nimport svgs from '../svgs'\n\nexport default {\n props: {\n i18n: {\n type: Object,\n required: true,\n },\n color: {\n type: String,\n },\n categories: {\n type: Array,\n required: true,\n },\n activeCategory: {\n type: Object,\n default() {\n return {}\n },\n },\n },\n emits: ['click'],\n created() {\n this.svgs = svgs\n },\n}\n</script>\n","const _String = String\n\nexport default _String.fromCodePoint ||\n function stringFromCodePoint() {\n var MAX_SIZE = 0x4000\n var codeUnits = []\n var highSurrogate\n var lowSurrogate\n var index = -1\n var length = arguments.length\n if (!length) {\n return ''\n }\n var result = ''\n while (++index < length) {\n var codePoint = Number(arguments[index])\n if (\n !isFinite(codePoint) || // `NaN`, `+Infinity`, or `-Infinity`\n codePoint < 0 || // not a valid Unicode code point\n codePoint > 0x10ffff || // not a valid Unicode code point\n Math.floor(codePoint) != codePoint // not an integer\n ) {\n throw RangeError('Invalid code point: ' + codePoint)\n }\n if (codePoint <= 0xffff) {\n // BMP code point\n codeUnits.push(codePoint)\n } else {\n // Astral code point; split in surrogate halves\n // http://mathiasbynens.be/notes/javascript-encoding#surrogate-formulae\n codePoint -= 0x10000\n highSurrogate = (codePoint >> 10) + 0xd800\n lowSurrogate = (codePoint % 0x400) + 0xdc00\n codeUnits.push(highSurrogate, lowSurrogate)\n }\n if (index + 1 === length || codeUnits.length > MAX_SIZE) {\n result += String.fromCharCode.apply(null, codeUnits)\n codeUnits.length = 0\n }\n }\n return result\n }\n","import stringFromCodePoint from '../polyfills/stringFromCodePoint'\n\nfunction unifiedToNative(unified) {\n var unicodes = unified.split('-'),\n codePoints = unicodes.map((u) => `0x${u}`)\n\n return stringFromCodePoint.apply(null, codePoints)\n}\n\nfunction uniq(arr) {\n return arr.reduce((acc, item) => {\n if (acc.indexOf(item) === -1) {\n acc.push(item)\n }\n return acc\n }, [])\n}\n\nfunction intersect(a, b) {\n const uniqA = uniq(a)\n const uniqB = uniq(b)\n\n return uniqA.filter((item) => uniqB.indexOf(item) >= 0)\n}\n\nfunction deepMerge(a, b) {\n var o = {}\n\n for (let key in a) {\n let originalValue = a[key],\n value = originalValue\n\n if (Object.prototype.hasOwnProperty.call(b, key)) {\n value = b[key]\n }\n\n if (typeof value === 'object') {\n value = deepMerge(originalValue, value)\n }\n\n o[key] = value\n }\n\n return o\n}\n\n// https://github.com/sonicdoe/measure-scrollbar\nfunction measureScrollbar() {\n if (typeof document == 'undefined') return 0\n const div = document.createElement('div')\n\n div.style.width = '100px'\n div.style.height = '100px'\n div.style.overflow = 'scroll'\n div.style.position = 'absolute'\n div.style.top = '-9999px'\n\n document.body.appendChild(div)\n const scrollbarWidth = div.offsetWidth - div.clientWidth\n document.body.removeChild(div)\n\n return scrollbarWidth\n}\n\nexport { uniq, intersect, deepMerge, unifiedToNative, measureScrollbar }\n","import { intersect, unifiedToNative } from './index'\nimport { uncompress, buildSearch } from './data'\nimport frequently from './frequently'\n\nconst SHEET_COLUMNS = 61\nconst COLONS_REGEX = /^(?:\\:([^\\:]+)\\:)(?:\\:skin-tone-(\\d)\\:)?$/\n// Skin tones\nconst SKINS = ['1F3FA', '1F3FB', '1F3FC', '1F3FD', '1F3FE', '1F3FF']\n\n/**\n * Emoji data structure:\n * {\n * \"compressed\": false,\n * \"aliases\": {\n * collision: \"boom\"\n * cooking: \"fried_egg\"\n * envelope: \"email\"\n * face_with_finger_covering_closed_lips: \"shushing_face\"\n * ...\n * },\n * \"categories\": [ {\n * id: \"people\",\n * name: \"Smileys & Emotion\",\n * emojis: [ \"grinning\", \"grin\", \"joy\", ... ]\n * }, {\n * id: \"nature\",\n * name: \"Animals & Nature\",\n * emojis: [ \"monkey_face\", \"money\", \"gorilla\", ... ]\n * },\n * ...\n * ],\n * \"emojis\": [\n * smiley: {\n * added_in: \"6.0\",\n * emoticons: [\"=)\", \"=-)\"],\n * has_img_apple: true,\n * has_img_facebook: true,\n * has_img_google: true,\n * has_img_twitter: true,\n * keywords: [\"face\", \"happy\", \"joy\", \"haha\", \":D\", \":)\", \"smile\", \"funny\"],\n * name: \"Smiling Face with Open Mouth\",\n * non_qualified: undefined,\n * search: \"smiley,smiling,face,with,open,mouth,happy,joy,haha,:d,:),smile,funny,=),=-)\",\n * sheet_x: 30,\n * sheet_y: 27,\n * short_names: [\"smiley\"],\n * text: \":)\",\n * unified: \"1F603\",\n * }, {\n * +1: { // emoji with skin_variations\n * ..., // all the regular fields are present\n * name: \"Thumbs Up Sign\",\n * short_names: (2) [\"+1\", \"thumbsup\"],\n * skin_variations: {\n * 1F3FB: // each variation has additional set of fields:\n * added_in: \"8.0\",\n * has_img_apple: true,\n * has_img_facebook: true,\n * has_img_google: true,\n * has_img_twitter: true,\n * image: \"1f44d-1f3fb.png\",\n * non_qualified: null,\n * sheet_x: 14,\n * sheet_y: 50,\n * unified: \"1F44D-1F3FB\",\n * 1F3FB: {…},\n * 1F3FC: {…},\n * 1F3FD: {…},\n * 1F3FE: {…},\n * 1F3FF: {…}\n * },\n * ...\n * },\n * a: { // emoji with non_qualified field set\n * added_in: \"6.0\",\n * emoticons: undefined,\n * has_img_apple: true,\n * ...\n * non_qualified: \"1F170\",\n * unified: \"1F170-FE0F\",\n * },\n * ...\n * ]\n * }\n */\n\n/**\n * Wraps raw jason emoji data, serves as data source for\n * emoji picker components.\n *\n * Usage:\n *\n * import data from '../data/all.json'\n * let index = new EmojiIndex(data)\n *\n */\nexport class EmojiIndex {\n /**\n * Constructor.\n *\n * @param {object} data - Raw json data, see the structure above.\n * @param {object} options - additional options, as an object:\n * @param {Function} emojisToShowFilter - optional, function to filter out\n * some emojis, function(emoji) { return true|false }\n * where `emoji` is an raw emoji object, see data.emojis above.\n * @param {Array} include - optional, a list of category ids to include.\n * @param {Array} exclude - optional, a list of category ids to exclude.\n * @param {Array} custom - optional, a list custom emojis, each emoji is\n * an object, see data.emojis above for examples.\n */\n constructor(\n data,\n {\n emojisToShowFilter,\n include,\n exclude,\n custom,\n recent,\n recentLength = 20,\n } = {},\n ) {\n this._data = uncompress(data)\n // Callback to exclude specific emojis\n this._emojisFilter = emojisToShowFilter || null\n // Categories to include / exclude\n this._include = include || null\n this._exclude = exclude || null\n // Custom emojis\n this._custom = custom || []\n // Recent emojis\n // TODO: make parameter configurable\n this._recent = recent || frequently.get(recentLength)\n\n this._emojis = {}\n this._nativeEmojis = {}\n this._emoticons = {}\n\n this._categories = []\n this._recentCategory = { id: 'recent', name: 'Recent', emojis: [] }\n this._customCategory = { id: 'custom', name: 'Custom', emojis: [] }\n this._searchIndex = {}\n this.buildIndex()\n Object.freeze(this)\n }\n\n buildIndex() {\n let allCategories = this._data.categories\n\n if (this._include) {\n // Remove categories that are not in the include list.\n allCategories = allCategories.filter((item) => {\n return this._include.includes(item.id)\n })\n // Sort categories according to the include list.\n allCategories = allCategories.sort((a, b) => {\n const indexA = this._include.indexOf(a.id)\n const indexB = this._include.indexOf(b.id)\n if (indexA < indexB) {\n return -1\n }\n if (indexA > indexB) {\n return 1\n }\n return 0\n })\n }\n\n allCategories.forEach((categoryData) => {\n if (!this.isCategoryNeeded(categoryData.id)) {\n return\n }\n let category = {\n id: categoryData.id,\n name: categoryData.name,\n emojis: [],\n }\n categoryData.emojis.forEach((emojiId) => {\n let emoji = this.addEmoji(emojiId)\n if (emoji) {\n category.emojis.push(emoji)\n }\n })\n if (category.emojis.length) {\n this._categories.push(category)\n }\n })\n\n if (this.isCategoryNeeded('custom')) {\n if (this._custom.length > 0) {\n for (let customEmoji of this._custom) {\n this.addCustomEmoji(customEmoji)\n }\n }\n if (this._customCategory.emojis.length) {\n this._categories.push(this._customCategory)\n }\n }\n\n if (this.isCategoryNeeded('recent')) {\n if (this._recent.length) {\n this._recent.map((id) => {\n for (let customEmoji of this._customCategory.emojis) {\n if (customEmoji.id === id) {\n this._recentCategory.emojis.push(customEmoji)\n return\n }\n }\n if (this.hasEmoji(id)) {\n this._recentCategory.emojis.push(this.emoji(id))\n }\n return\n })\n }\n // Add recent category to the top\n if (this._recentCategory.emojis.length) {\n this._categories.unshift(this._recentCategory)\n }\n }\n }\n\n /**\n * Find the emoji from the string\n */\n findEmoji(emoji, skin) {\n // 1. Parse as :emoji_name:skin-tone-xx:\n let matches = emoji.match(COLONS_REGEX)\n\n if (matches) {\n emoji = matches[1]\n if (matches[2]) {\n skin = parseInt(matches[2], 10)\n }\n }\n\n // 2. Check if the specified emoji is an alias\n if (this._data.aliases.hasOwnProperty(emoji)) {\n emoji = this._data.aliases[emoji]\n }\n\n // 3. Check if we have the specified emoji\n if (this._emojis.hasOwnProperty(emoji)) {\n let emojiObject = this._emojis[emoji]\n if (skin) {\n return emojiObject.getSkin(skin)\n }\n return emojiObject\n }\n\n // 4. Check if we have the specified native emoji\n if (this._nativeEmojis.hasOwnProperty(emoji)) {\n return this._nativeEmojis[emoji]\n }\n return null\n }\n\n categories() {\n return this._categories\n }\n\n emoji(emojiId) {\n if (this._data.aliases.hasOwnProperty(emojiId)) {\n emojiId = this._data.aliases[emojiId]\n }\n let emoji = this._emojis[emojiId]\n if (!emoji) {\n throw new Error('Can not find emoji by id: ' + emojiId)\n }\n return emoji\n }\n\n firstEmoji() {\n let emoji = this._emojis[Object.keys(this._emojis)[0]]\n if (!emoji) {\n throw new Error('Can not get first emoji')\n }\n return emoji\n }\n\n hasEmoji(emojiId) {\n if (this._data.aliases.hasOwnProperty(emojiId)) {\n emojiId = this._data.aliases[emojiId]\n }\n if (this._emojis[emojiId]) {\n return true\n }\n return false\n }\n\n nativeEmoji(unicodeEmoji) {\n if (this._nativeEmojis.hasOwnProperty(unicodeEmoji)) {\n return this._nativeEmojis[unicodeEmoji]\n }\n return null\n }\n\n search(value, maxResults) {\n maxResults || (maxResults = 75)\n if (!value.length) {\n return null\n }\n if (value == '-' || value == '-1') {\n return [this.emoji('-1')]\n }\n\n let values = value.toLowerCase().split(/[\\s|,|\\-|_]+/)\n let allResults = []\n\n if (values.length > 2) {\n values = [values[0], values[1]]\n }\n\n allResults = values\n .map((value) => {\n // Start searchin in the global list of emojis\n let emojis = this._emojis\n let currentIndex = this._searchIndex\n let length = 0\n\n for (let charIndex = 0; charIndex < value.length; charIndex++) {\n const char = value[charIndex]\n length++\n\n currentIndex[char] || (currentIndex[char] = {})\n currentIndex = currentIndex[char]\n\n if (!currentIndex.results) {\n let scores = {}\n currentIndex.results = []\n currentIndex.emojis = {}\n\n for (let emojiId in emojis) {\n let emoji = emojis[emojiId]\n // search is a comma-separated string with words, related\n // to the emoji, for example:\n // search: \"smiley,smiling,face,joy,haha,:d,:),smile,funny,=),=-)\",\n let search = emoji._data.search\n let sub = value.substr(0, length)\n let subIndex = search.indexOf(sub)\n if (subIndex != -1) {\n let score = subIndex + 1\n if (sub == emojiId) score = 0\n\n currentIndex.results.push(emoji)\n currentIndex.emojis[emojiId] = emoji\n\n scores[emojiId] = score\n }\n }\n currentIndex.results.sort((a, b) => {\n var aScore = scores[a.id],\n bScore = scores[b.id]\n return aScore - bScore\n })\n }\n\n // continue search in the reduced set of emojis\n emojis = currentIndex.emojis\n }\n return currentIndex.results\n // The \"filter\" call removes undefined values from allResults\n // array, for example, if we have \"test \" (with trailing space),\n // we will get \"[Array, undefined]\" for allResults and after\n // the \"filter\" call it will turn into \"[Array]\"\n })\n .filter((a) => a)\n\n var results = null\n if (allResults.length > 1) {\n results = intersect.apply(null, allResults)\n } else if (allResults.length) {\n results = allResults[0]\n } else {\n results = []\n }\n if (results && results.length > maxResults) {\n results = results.slice(0, maxResults)\n }\n return results\n }\n\n addCustomEmoji(customEmoji) {\n let emojiData = Object.assign({}, customEmoji, {\n id: customEmoji.short_names[0],\n custom: true,\n })\n if (!emojiData.search) {\n emojiData.search = buildSearch(emojiData)\n }\n let emoji = new EmojiData(emojiData)\n this._emojis[emoji.id] = emoji\n this._customCategory.emojis.push(emoji)\n return emoji\n }\n\n addEmoji(emojiId) {\n // We expect the correct emoji id that is present in the emojis data.\n let data = this._data.emojis[emojiId]\n\n if (!this.isEmojiNeeded(data)) {\n return false\n }\n\n let emoji = new EmojiData(data)\n this._emojis[emojiId] = emoji\n if (emoji.native) {\n this._nativeEmojis[emoji.native] = emoji\n }\n if (emoji._skins) {\n for (let idx in emoji._skins) {\n let skin = emoji._skins[idx]\n if (skin.native) {\n this._nativeEmojis[skin.native] = skin\n }\n }\n }\n\n if (emoji.emoticons) {\n emoji.emoticons.forEach((emoticon) => {\n if (this._emoticons[emoticon]) {\n return\n }\n this._emoticons[emoticon] = emojiId\n })\n }\n return emoji\n }\n\n /**\n * Check if we need to include given category.\n *\n * @param {string} category_id - The category id.\n * @return {boolean} - Whether to include the emoji.\n */\n isCategoryNeeded(category_id) {\n let isIncluded =\n this._include && this._include.length\n ? this._include.indexOf(category_id) > -1\n : true\n let isExcluded =\n this._exclude && this._exclude.length\n ? this._exclude.indexOf(category_id) > -1\n : false\n if (!isIncluded || isExcluded) {\n return false\n }\n return true\n }\n\n /**\n * Check if we need to include given emoji.\n *\n * @param {object} emoji - The raw emoji object.\n * @return {boolean} - Whether to include the emoji.\n */\n isEmojiNeeded(emoji) {\n if (this._emojisFilter) {\n return this._emojisFilter(emoji)\n }\n return true\n }\n}\n\nexport class EmojiData {\n constructor(data) {\n this._data = Object.assign({}, data)\n this._skins = null\n if (this._data.skin_variations) {\n this._skins = []\n for (var skinIdx in SKINS) {\n let skinKey = SKINS[skinIdx]\n let variationData = this._data.skin_variations[skinKey]\n let skinData = Object.assign({}, data)\n for (let k in variationData) {\n skinData[k] = variationData[k]\n }\n delete skinData.skin_variations\n skinData['skin_tone'] = parseInt(skinIdx) + 1\n this._skins.push(new EmojiData(skinData))\n }\n }\n this._sanitized = sanitize(this._data)\n for (let key in this._sanitized) {\n this[key] = this._sanitized[key]\n }\n this.short_names = this._data.short_names\n this.short_name = this._data.short_names[0]\n Object.freeze(this)\n }\n\n getSkin(skinIdx) {\n if (skinIdx && skinIdx != 'native' && this._skins) {\n return this._skins[skinIdx - 1]\n }\n return this\n }\n\n getPosition() {\n let adjustedColumns = SHEET_COLUMNS - 1,\n x = +((100 / adjustedColumns) * this._data.sheet_x).toFixed(2),\n y = +((100 / adjustedColumns) * this._data.sheet_y).toFixed(2)\n return `${x}% ${y}%`\n }\n\n ariaLabel() {\n return [this.native].concat(this.short_names).filter(Boolean).join(', ')\n }\n}\n\nexport class EmojiView {\n /**\n * emoji - Emoji to display\n * set - string, emoji set name\n * native - boolean, whether to render native emoji\n * fallback - fallback function to render missing emoji, optional\n * emojiTooltip - wether we need to show the emoji tooltip, optional\n * emojiSize - emoji size in pixels, optional\n */\n constructor(emoji, skin, set, native, fallback, emojiTooltip, emojiSize) {\n this._emoji = emoji\n this._native = native\n this._skin = skin\n this._set = set\n this._fallback = fallback\n\n this.canRender = this._canRender()\n this.cssClass = this._cssClass()\n this.cssStyle = this._cssStyle(emojiSize)\n this.content = this._content()\n this.title = emojiTooltip === true ? emoji.short_name : null\n this.ariaLabel = emoji.ariaLabel()\n\n Object.freeze(this)\n }\n\n getEmoji() {\n return this._emoji.getSkin(this._skin)\n }\n\n _canRender() {\n return (\n this._isCustom() || this._isNative() || this._hasEmoji() || this._fallback\n )\n }\n\n _cssClass() {\n return ['emoji-set-' + this._set, 'emoji-type-' + this._emojiType()]\n }\n\n _cssStyle(emojiSize) {\n let cssStyle = {}\n if (this._isCustom()) {\n cssStyle = {\n backgroundImage: 'url(' + this.getEmoji()._data.imageUrl + ')',\n backgroundSize: '100%',\n width: emojiSize + 'px',\n height: emojiSize + 'px',\n }\n } else if (this._hasEmoji() && !this._isNative()) {\n cssStyle = {\n backgroundPosition: this.getEmoji().getPosition(),\n }\n }\n if (emojiSize) {\n if (this._isNative()) {\n // Set font-size for native emoji.\n cssStyle = Object.assign(cssStyle, {\n // font-size is used for native emoji which we need\n // to scale with 0.95 factor to have them look approximately\n // the same size as image-based emoji.\n fontSize: Math.round(emojiSize * 0.95 * 10) / 10 + 'px',\n })\n } else {\n // Set width/height for image emoji.\n cssStyle = Object.assign(cssStyle, {\n width: emojiSize + 'px',\n height: emojiSize + 'px',\n })\n }\n }\n return cssStyle\n }\n\n _content() {\n if (this._isCustom()) {\n return ''\n }\n if (this._isNative()) {\n return this.getEmoji().native\n }\n if (this._hasEmoji()) {\n return ''\n }\n return this._fallback ? this._fallback(this.getEmoji()) : null\n }\n\n _isNative() {\n return this._native\n }\n\n _isCustom() {\n return this.getEmoji().custom\n }\n\n _hasEmoji() {\n if (!this.getEmoji()._data) {\n // Return false if we have no data.\n return false\n }\n const hasImage = this.getEmoji()._data['has_img_' + this._set]\n if (hasImage === undefined) {\n // If there is no has_img_xxx in the data, we are working with\n // specific data file, like facebook.json, so we assume all\n // emojis are available (the :set setting for picker should\n // match the data file).\n return true\n }\n // Otherwise, we are using all.json and can switch between different\n // sets - in this case the `has_img_{set_name}` is a boolean that\n // indicates if there is such image or not for a given set.\n return hasImage\n }\n\n _emojiType() {\n if (this._isCustom()) {\n return 'custom'\n }\n if (this._isNative()) {\n return 'native'\n }\n if (this._hasEmoji()) {\n return 'image'\n }\n return 'fallback'\n }\n}\n\nexport function sanitize(emoji) {\n var {\n name,\n short_names,\n skin_tone,\n skin_variations,\n emoticons,\n unified,\n custom,\n imageUrl,\n } = emoji,\n id = emoji.id || short_names[0],\n colons = `:${id}:`\n\n if (custom) {\n return {\n id,\n name,\n colons,\n emoticons,\n custom,\n imageUrl,\n }\n }\n\n if (skin_tone) {\n colons += `:skin-tone-${skin_tone}:`\n }\n\n return {\n id,\n name,\n colons,\n emoticons,\n unified: unified.toLowerCase(),\n skin: skin_tone || (skin_variations ? 1 : null),\n native: unifiedToNative(unified),\n }\n}\n","const EmojiProps = {\n native: {\n type: Boolean,\n default: false,\n },\n tooltip: {\n type: Boolean,\n default: false,\n },\n fallback: {\n type: Function,\n },\n skin: {\n type: Number,\n default: 1,\n },\n set: {\n type: String,\n default: 'apple',\n },\n emoji: {\n type: [String, Object],\n required: true,\n },\n size: {\n type: Number,\n default: null,\n },\n tag: {\n type: String,\n default: 'span',\n },\n}\n\nconst PickerProps = {\n perLine: {\n type: Number,\n default: 9,\n },\n maxSearchResults: {\n type: Number,\n default: 75,\n },\n emojiSize: {\n type: Number,\n default: 24,\n },\n title: {\n type: String,\n default: 'Emoji Mart™',\n },\n emoji: {\n type: String,\n default: 'department_store',\n },\n color: {\n type: String,\n default: '#ae65c5',\n },\n set: {\n type: String,\n default: 'apple',\n },\n skin: {\n type: Number,\n default: null,\n },\n defaultSkin: {\n type: Number,\n default: 1,\n },\n native: {\n type: Boolean,\n default: false,\n },\n emojiTooltip: {\n type: Boolean,\n default: false,\n },\n autoFocus: {\n type: Boolean,\n default: false,\n },\n i18n: {\n type: Object,\n default() {\n return {}\n },\n },\n showPreview: {\n type: Boolean,\n default: true,\n },\n showSearch: {\n type: Boolean,\n default: true,\n },\n showCategories: {\n type: Boolean,\n default: true,\n },\n showSkinTones: {\n type: Boolean,\n default: true,\n },\n infiniteScroll: {\n type: Boolean,\n default: true,\n },\n pickerStyles: {\n type: Object,\n default() {\n return {}\n },\n },\n}\n\nexport { EmojiProps, PickerProps }\n","<template>\n <component\n :is=\"tag\"\n v-if=\"view.canRender\"\n :title=\"view.title\"\n :aria-label=\"view.ariaLabel\"\n :data-title=\"title\"\n class=\"emoji-mart-emoji\"\n @mouseenter=\"onMouseEnter\"\n @mouseleave=\"onMouseLeave\"\n @click=\"onClick\"\n >\n <span :class=\"view.cssClass\" :style=\"view.cssStyle\">{{\n view.content\n }}</span>\n </component>\n</template>\n\n<script>\nimport { EmojiProps } from '../utils/shared-props'\nimport { EmojiView } from '../utils/emoji-data'\n\nexport default {\n props: {\n ...EmojiProps,\n data: {\n type: Object,\n required: true,\n },\n },\n emits: [\"click\", \"mouseenter\", \"mouseleave\"],\n computed: {\n view() {\n return new EmojiView(\n this.emojiObject,\n this.skin,\n this.set,\n this.native,\n this.fallback,\n this.tooltip,\n this.size,\n )\n },\n sanitizedData() {\n return this.emojiObject._sanitized\n },\n title() {\n return this.tooltip ? this.emojiObject.short_name : null\n },\n emojiObject() {\n if (typeof this.emoji == 'string') {\n return this.data.findEmoji(this.emoji)\n } else {\n return this.emoji\n }\n },\n },\n created() {},\n methods: {\n onClick() {\n this.$emit('click', this.emojiObject)\n },\n onMouseEnter() {\n this.$emit('mouseenter', this.emojiObject)\n },\n onMouseLeave() {\n this.$emit('mouseleave', this.emojiObject)\n },\n },\n}\n</script>\n","<template>\n <section\n :class=\"{\n 'emoji-mart-category': true,\n 'emoji-mart-no-results': !hasResults,\n }\"\n :aria-label=\"i18n.categories[id]\"\n v-if=\"isVisible && (isSearch || hasResults)\"\n >\n <div class=\"emoji-mart-category-label\">\n <h3 class=\"emoji-mart-category-label\">{{ i18n.categories[id] }}</h3>\n </div>\n\n <template v-for=\"{ emojiObject, emojiView } in emojiObjects\">\n <button\n v-if=\"emojiView.canRender\"\n :aria-label=\"emojiView.ariaLabel\"\n role=\"option\"\n aria-selected=\"false\"\n aria-posinset=\"1\"\n aria-setsize=\"1812\"\n type=\"button\"\n :data-title=\"emojiObject.short_name\"\n :key=\"emojiObject.id\"\n :title=\"emojiView.title\"\n class=\"emoji-mart-emoji\"\n :class=\"activeClass(emojiObject)\"\n @mouseenter=\"emojiProps.onEnter(emojiView.getEmoji())\"\n @mouseleave=\"emojiProps.onLeave(emojiView.getEmoji())\"\n @click=\"emojiProps.onClick(emojiView.getEmoji())\"\n >\n <span :class=\"emojiView.cssClass\" :style=\"emojiView.cssStyle\">{{\n emojiView.content\n }}</span>\n </button>\n </template>\n\n <div v-if=\"!hasResults\">\n <emoji\n :data=\"data\"\n emoji=\"sleuth_or_spy\"\n :native=\"emojiProps.native\"\n :skin=\"emojiProps.skin\"\n :set=\"emojiProps.set\"\n />\n <div class=\"emoji-mart-no-results-label\">{{ i18n.notfound }}</div>\n </div>\n </section>\n</template>\n\n<script>\nimport { EmojiView } from '../utils/emoji-data'\nimport Emoji from './Emoji.vue'\n\nexport default {\n props: {\n data: {\n type: Object,\n required: true,\n },\n i18n: {\n type: Object,\n required: true,\n },\n id: {\n type: String,\n required: true,\n },\n name: {\n type: String,\n required: true,\n },\n emojis: {\n type: Array,\n },\n emojiProps: {\n type: Object,\n required: true,\n },\n },\n methods: {\n activeClass: function(emojiObject) {\n if (!this.emojiProps.selectedEmoji) {\n return ''\n }\n if (!this.emojiProps.selectedEmojiCategory) {\n return ''\n }\n if (\n this.emojiProps.selectedEmoji.id == emojiObject.id &&\n this.emojiProps.selectedEmojiCategory.id == this.id\n ) {\n return 'emoji-mart-emoji-selected'\n }\n return ''\n },\n },\n computed: {\n isVisible() {\n return !!this.emojis\n },\n isSearch() {\n return this.name == 'Search'\n },\n hasResults() {\n return this.emojis.length > 0\n },\n emojiObjects() {\n return this.emojis.map((emoji) => {\n let emojiObject = emoji\n let emojiView = new EmojiView(\n emoji,\n this.emojiProps.skin,\n this.emojiProps.set,\n this.emojiProps.native,\n this.emojiProps.fallback,\n this.emojiProps.emojiTooltip,\n this.emojiProps.emojiSize,\n )\n return { emojiObject, emojiView }\n })\n },\n },\n components: {\n Emoji,\n },\n}\n</script>\n","<template>\n\n<div :class=\"{ 'emoji-mart-skin-swatches': true, 'emoji-mart-skin-swatches-opened': opened }\">\n <span v-for=\"skinTone in 6\" :key=\"skinTone\" :class=\"{ 'emoji-mart-skin-swatch': true, 'emoji-mart-skin-swatch-selected': skin == skinTone }\">\n <span :class=\"'emoji-mart-skin emoji-mart-skin-tone-' + skinTone\" @click=\"onClick(skinTone)\"></span>\n </span>\n</div>\n\n</template>\n\n<script>\n\nexport default {\n props: {\n skin: {\n type: Number,\n required: true\n }\n },\n emits: ['change'],\n data() {\n return {\n opened: false\n }\n },\n methods: {\n onClick(skinTone) {\n if (this.opened) {\n if (skinTone != this.skin) {\n this.$emit('change', skinTone)\n }\n }\n\n this.opened = !this.opened\n }\n }\n}\n\n</script>\n","<template>\n\n<div class=\"emoji-mart-preview\">\n <template v-if=\"emoji\">\n <div class=\"emoji-mart-preview-emoji\">\n <emoji\n :data=\"data\"\n :emoji=\"emoji\"\n :native=\"emojiProps.native\"\n :skin=\"emojiProps.skin\"\n :set=\"emojiProps.set\"\n />\n </div>\n\n <div class=\"emoji-mart-preview-data\">\n <div class=\"emoji-mart-preview-name\">{{ emoji.name }}</div>\n <div class=\"emoji-mart-preview-shortnames\">\n <span v-for=\"shortName in emojiShortNames\" :key=\"shortName\" class=\"emoji-mart-preview-shortname\">:{{ shortName }}:</span>\n </div>\n <div class=\"emoji-mart-preview-emoticons\">\n <span v-for=\"emoticon in emojiEmoticons\" :key=\"emoticon\" class=\"emoji-mart-preview-emoticon\">{{ emoticon }}</span>\n </div>\n </div>\n </template>\n\n <template v-else>\n <div class=\"emoji-mart-preview-emoji\">\n <emoji\n :data=\"data\"\n :emoji=\"idleEmoji\"\n :native=\"emojiProps.native\"\n :skin=\"emojiProps.skin\"\n :set=\"emojiProps.set\"\n />\n </div>\n\n <div class=\"emoji-mart-preview-data\">\n <span class=\"emoji-mart-title-label\">{{ title }}</span>\n </div>\n\n <div v-if=\"showSkinTones\" class=\"emoji-mart-preview-skins\">\n <skins :skin=\"skinProps.skin\" @change=\"onSkinChange($event)\" />\n </div>\n </template>\n</div>\n\n</template>\n\n<script>\n\nimport Emoji from './Emoji.vue'\nimport Skins from './skins.vue'\n\nexport default {\n props: {\n data: {\n type: Object,\n required: true\n },\n title: {\n type: String,\n required: true\n },\n emoji: {\n type: [String, Object]\n },\n idleEmoji: {\n type: [String, Object],\n required: true\n },\n showSkinTones: {\n type: Boolean,\n default: true\n },\n emojiProps: {\n type: Object,\n required: true\n },\n skinProps: {\n type: Object,\n required: true\n },\n onSkinChange: {\n type: Function,\n required: true\n }\n },\n computed: {\n emojiData() {\n if (this.emoji) {\n return this.emoji\n } else {\n return {}\n }\n },\n emojiShortNames() {\n return this.emojiData.short_names\n },\n emojiEmoticons() {\n return this.emojiData.emoticons\n }\n },\n components: {\n Emoji,\n Skins\n }\n}\n\n</script>\n","<template>\n <div class=\"emoji-mart-search\">\n <input\n type=\"text\"\n :placeholder=\"i18n.search\"\n role=\"textbox\"\n aria-autocomplete=\"list\"\n aria-owns=\"emoji-mart-list\"\n aria-label=\"Search for an emoji\"\n aria-describedby=\"emoji-mart-search-description\"\n @keydown.left=\"($event) => $emit('arrowLeft', $event)\"\n @keydown.right=\"() => $emit('arrowRight')\"\n @keydown.down=\"() => $emit('arrowDown')\"\n @keydown.up=\"($event) => $emit('arrowUp', $event)\"\n @keydown.enter=\"() => $emit('enter')\"\n v-model=\"value\"\n />\n <span class=\"hidden\" id=\"emoji-picker-search-description\"\n >Use the left, right, up and down arrow keys to navigate the emoji search\n results.</span\n >\n </div>\n</template>\n\n<script>\nexport default {\n props: {\n data: {\n type: Object,\n required: true,\n },\n i18n: {\n type: Object,\n required: true,\n },\n autoFocus: {\n type: Boolean,\n default: false,\n },\n onSearch: {\n type: Function,\n required: true,\n },\n onArrowLeft: {\n type: Function,\n required: false,\n },\n onArrowRight: {\n type: Function,\n required: false,\n },\n onArrowDown: {\n type: Function,\n required: false,\n },\n onArrowUp: {\n type: Function,\n required: false,\n },\n onEnter: {\n type: Function,\n required: false,\n },\n },\n emits: ['search', 'enter', 'arrowUp', 'arrowDown', 'arrowRight', 'arrowLeft'],\n data() {\n return {\n value: '',\n }\n },\n computed: {\n emojiIndex() {\n return this.data\n },\n },\n watch: {\n value() {\n this.$emit('search', this.value)\n },\n },\n methods: {\n clear() {\n this.value = ''\n },\n },\n mounted() {\n let $input = this.$el.querySelector('input')\n\n if (this.autoFocus) {\n $input.focus()\n }\n },\n}\n</script>\n","// http://paulirish.com/2011/requestanimationframe-for-smart-animating/\n// http://my.opera.com/emoller/blog/2011/12/20/requestanimationframe-for-smart-er-animating\n\n// requestAnimationFrame polyfill by Erik Möller. fixes from Paul Irish and Tino Zijdel\n\n// MIT license\n\nvar isWindowAvailable = typeof window !== 'undefined'\n\nisWindowAvailable &&\n (function () {\n var lastTime = 0\n var vendors = ['ms', 'moz', 'webkit', 'o']\n\n for (var x = 0; x < vendors.length && !window.requestAnimationFrame; ++x) {\n window.requestAnimationFrame =\n window[vendors[x] + 'RequestAnimationFrame']\n window.cancelAnimationFrame =\n window[vendors[x] + 'CancelAnimationFrame'] ||\n window[vendors[x] + 'CancelRequestAnimationFrame']\n }\n\n if (!window.requestAnimationFrame)\n window.requestAnimationFrame = function (callback, element) {\n var currTime = new Date().getTime()\n var timeToCall = Math.max(0, 16 - (currTime - lastTime))\n var id = window.setTimeout(function () {\n callback(currTime + timeToCall)\n }, timeToCall)\n\n lastTime = currTime + timeToCall\n return id\n }\n\n if (!window.cancelAnimationFrame)\n window.cancelAnimationFrame = function (id) {\n clearTimeout(id)\n }\n })()\n","export class PickerView {\n constructor(pickerComponent) {\n this._vm = pickerComponent\n this._data = pickerComponent.data\n this._perLine = pickerComponent.perLine\n\n this._categories = []\n this._categories.push(...this._data.categories())\n this._categories = this._categories.filter((category) => {\n return category.emojis.length > 0\n })\n\n this._categories[0].first = true\n Object.freeze(this._categories)\n\n this.activeCategory = this._categories[0]\n this.searchEmojis = null\n\n // Preview emoji, shown on mouse over or when we move\n // with arrow keys.\n this.previewEmoji = null\n // Indexes are used to keep the position when moving\n // with arrows: current category and current emoji\n // inside the category.\n this.previewEmojiCategoryIdx = 0\n this.previewEmojiIdx = -1\n }\n\n onScroll() {\n const scrollElement = this._vm.$refs.scroll\n\n if (!scrollElement) {\n // Reported in https://github.com/serebrov/emoji-mart-vue/issues/305\n // Would be good to understand how it can happen, but at least\n // exiting early we prevent the error.\n return\n }\n\n const scrollTop = scrollElement.scrollTop\n\n let activeCategory = this.filteredCategories[0]\n for (let i = 0, l = this.filteredCategories.length; i < l; i++) {\n let category = this.filteredCategories[i]\n let component = this._vm.getCategoryComponent(i)\n // The `-50` offset switches active category (selected in the\n // anchors bar) a bit eariler, before it actually reaches the top.\n if (component && component.$el.offsetTop - 50 > scrollTop) {\n break\n }\n activeCategory = category\n }\n this.activeCategory = activeCategory\n }\n\n get allCategories() {\n return this._categories\n }\n\n get filteredCategories() {\n if (this.searchEmojis) {\n return [\n {\n id: 'search',\n name: 'Search',\n emojis: this.searchEmojis,\n },\n ]\n }\n return this._categories.filter((category) => {\n let hasEmojis = category.emojis.length > 0\n return hasEmojis\n })\n }\n\n get previewEmojiCategory() {\n if (this.previewEmojiCategoryIdx >= 0) {\n return this.filteredCategories[this.previewEmojiCategoryIdx]\n }\n return null\n }\n\n onAnchorClick(category) {\n if (this.searchEmojis) {\n // No categories are shown when search is active.\n return\n }\n let i = this.filteredCategories.indexOf(category)\n let component = this._vm.getCategoryComponent(i)\n let scrollToComponent = () => {\n if (component) {\n let top = component.$el.offsetTop\n if (category.first) {\n top = 0\n }\n this._vm.$refs.scroll.scrollTop = top\n }\n }\n if (this._vm.infiniteScroll) {\n scrollToComponent()\n } else {\n this.activeCategory = this.filteredCategories[i]\n }\n }\n\n onSearch(value) {\n let emojis = this._data.search(value, this.maxSearchResults)\n this.searchEmojis = emojis\n\n this.previewEmojiCategoryIdx = 0\n this.previewEmojiIdx = 0\n this.updatePreviewEmoji()\n }\n\n onEmojiEnter(emoji) {\n this.previewEmoji = emoji\n this.previewEmojiIdx = -1\n this.previewEmojiCategoryIdx = -1\n }\n\n onEmojiLeave(emoji) {\n this.previewEmoji = null\n }\n\n onArrowLeft() {\n // Moving left, decrease emoji index.\n if (this.previewEmojiIdx > 0) {\n this.previewEmojiIdx -= 1\n } else {\n // If emoji index is zero, go to the previous category.\n this.previewEmojiCategoryIdx -= 1\n if (this.previewEmojiCategoryIdx < 0) {\n // If we reached first category, keep it.\n this.previewEmojiCategoryIdx = 0\n } else {\n // Update emoji index - we moved to the previous category,\n // get the last emoji in it.\n this.previewEmojiIdx =\n this.filteredCategories[this.previewEmojiCategoryIdx].emojis.length -\n 1\n }\n }\n this.updatePreviewEmoji()\n }\n\n onArrowRight() {\n if (\n this.previewEmojiIdx <\n this.emojisLength(this.previewEmojiCategoryIdx) - 1\n ) {\n // Moving right within category, increase emoji index.\n this.previewEmojiIdx += 1\n } else {\n // Go to the next category.\n this.previewEmojiCategoryIdx += 1\n if (this.previewEmojiCategoryIdx >= this.filteredCategories.length) {\n // If we reached the last category - keep it.\n this.previewEmojiCategoryIdx = this.filteredCategories.length - 1\n } else {\n // If we moved to the next category, update emoji index to the\n // first emoji in the new category.\n this.previewEmojiIdx = 0\n }\n }\n this.updatePreviewEmoji()\n }\n\n onArrowDown() {\n // If we are out of the emoji control (index is -1), select the first\n // emoji in the first category by calling `onArrowRight`.\n if (this.previewEmojiIdx == -1) {\n return this.onArrowRight()\n }\n\n const categoryLength =\n this.filteredCategories[this.previewEmojiCategoryIdx].emojis.length\n\n // When moving down, we can move `_perLine` icons right to\n // jump to the same position in the next row.\n let diff = this._perLine\n\n // TODO: previewCategory should match activeCategory\n // (so it would be both highlighted in UI and used\n // when we start moving with arrows after clicking\n // the category).\n\n // Note: probably we can alwasy take current row length\n // as a `diff` - it will fit both case of any row and\n // special case of the last row.\n // Note: it can be also easier to update indexes\n // directly here instead of calling onArrowRight.\n // Same is true for `onArrowUp`.\n\n // Unless if we are on the last row of the category and\n // there are less then `_perLine` emojis in it.\n // In this case we use the last row length as diff\n // so we go straight down, for example:\n //\n // 1 2 3 4 5 6\n // 7 8 9\n // A B C D E F\n //\n // If we go down from `8`, we need to move 3 emojis right\n // to lend at `B` (and 3 is the length of the last row of\n // this category).\n // And if we used 6 instead (row length, `_perLine`), we would\n // lend up at `E`.\n if (this.previewEmojiIdx + diff > categoryLength) {\n // Calculate the last row length.\n diff = categoryLength % this._perLine\n }\n for (let i = 0; i < diff; i++) {\n this.onArrowRight()\n }\n this.updatePreviewEmoji()\n }\n\n onArrowUp() {\n // Similar to `onArrowDown`, to move up we can move left\n // by `_perLine` number of emojis.\n let diff = this._perLine\n\n if (this.previewEmojiIdx - diff < 0) {\n if (this.previewEmojiCategoryIdx > 0) {\n // Unless if we are on the first line of the category and\n // the last line in the previous category is shorter than\n // `_perLine`.\n // In this case we use the last row length as diff, so\n // we go straight up, for example:\n //\n // 1 2 3 4 5\n // 6 7 8\n // 9 A B C D\n //\n // If we go up from `A`, we need to move 3 emojis left to get\n // to `7` (and 3 is the length of the last row of the previous\n // category).\n const prevCategoryLastRowLength =\n this.filteredCategories[this.previewEmojiCategoryIdx - 1].emojis\n .length % this._perLine\n // diff = this.previewEmojiIdx + prevCategoryLastRowLength\n diff = prevCategoryLastRowLength\n } else {\n diff = 0\n }\n }\n for (let i = 0; i < diff; i++) {\n this.onArrowLeft()\n }\n this.updatePreviewEmoji()\n }\n\n updatePreviewEmoji() {\n this.previewEmoji =\n this.filteredCategories[this.previewEmojiCategoryIdx].emojis[\n this.previewEmojiIdx\n ]\n\n this._vm.$nextTick(() => {\n // Scroll the view if the `previewEmoji` goes out of the visible area.\n const scrollEl = this._vm.$refs.scroll\n\n // Note: it would be more Vue-ish to mark all emojis with `ref`s\n // and then do something similar here to what we do in the\n // `getCategories` instead of using `querySelector` directly,\n // but I am not sure if having many refs would affect the performance\n // (it might, so I use `querySelector` for now).\n const emojiEl = scrollEl.querySelector('.emoji-mart-emoji-selected')\n\n const scrollHeight = scrollEl.offsetTop - scrollEl.offsetHeight\n if (\n emojiEl &&\n emojiEl.offsetTop + emojiEl.offsetHeight >\n scrollHeight + scrollEl.scrollTop\n ) {\n scrollEl.scrollTop += emojiEl.offsetHeight\n }\n if (emojiEl && emojiEl.offsetTop < scrollEl.scrollTop) {\n scrollEl.scrollTop -= emojiEl.offsetHeight\n }\n })\n }\n\n emojisLength(categoryIdx) {\n if (categoryIdx == -1) {\n return 0\n }\n return this.filteredCategories[categoryIdx].emojis.length\n }\n}\n","<template>\n <section class=\"emoji-mart emoji-mart-static\" :style=\"customStyles\">\n <div class=\"emoji-mart-bar emoji-mart-bar-anchors\" v-if=\"showCategories\">\n <anchors\n :data=\"data\"\n :i18n=\"mergedI18n\"\n :color=\"color\"\n :categories=\"view.allCategories\"\n :active-category=\"view.activeCategory\"\n @click=\"onAnchorClick\"\n />\n </div>\n\n <slot\n name=\"searchTemplate\"\n :data=\"data\"\n :i18n=\"i18n\"\n :auto-focus=\"autoFocus\"\n :on-search=\"onSearch\"\n >\n <search\n v-if=\"showSearch\"\n ref=\"search\"\n :data=\"data\"\n :i18n=\"mergedI18n\"\n :auto-focus=\"autoFocus\"\n :on-search=\"onSearch\"\n @search=\"onSearch\"\n @arrowLeft=\"onArrowLeft\"\n @arrowRight=\"onArrowRight\"\n @arrowDown=\"onArrowDown\"\n @arrowUp=\"onArrowUp\"\n @enter=\"onEnter\"\n @select=\"onTextSelect\"\n />\n </slot>\n\n <div\n role=\"tabpanel\"\n class=\"emoji-mart-scroll\"\n ref=\"scroll\"\n @scroll=\"onScroll\"\n >\n <div\n id=\"emoji-mart-list\"\n ref=\"scrollContent\"\n role=\"listbox\"\n aria-expanded=\"true\"\n >\n <slot name=\"customCategory\"> </slot>\n\n <category\n v-for=\"(category, idx) in view.filteredCategories\"\n v-show=\"infiniteScroll || category == view.activeCategory || isSearching\"\n :ref=\"'categories_' + idx\"\n :key=\"category.id\"\n :data=\"data\"\n :i18n=\"mergedI18n\"\n :id=\"category.id\"\n :name=\"category.name\"\n :emojis=\"category.emojis\"\n :emoji-props=\"emojiProps\"\n />\n </div>\n </div>\n\n <slot\n name=\"previewTemplate\"\n :data=\"data\"\n :title=\"title\"\n :emoji=\"view.previewEmoji\"\n :idle-emoji=\"idleEmoji\"\n :show-skin-tones=\"showSkinTones\"\n :emoji-props=\"emojiProps\"\n :skin-props=\"skinProps\"\n :on-skin-change=\"onSkinChange\"\n >\n <div class=\"emoji-mart-bar emoji-mart-bar-preview\" v-if=\"showPreview\">\n <preview\n :data=\"data\"\n :title=\"title\"\n :emoji=\"view.previewEmoji\"\n :idle-emoji=\"idleEmoji\"\n :show-skin-tones=\"showSkinTones\"\n :emoji-props=\"emojiProps\"\n :skin-props=\"skinProps\"\n :on-skin-change=\"onSkinChange\"\n />\n </div>\n </slot>\n </section>\n</template>\n\n<script>\nimport '../vendor/raf-polyfill'\nimport store from '../utils/store'\nimport frequently from '../utils/frequently'\nimport { deepMerge, measureScrollbar } from '../utils'\nimport { PickerProps } from '../utils/shared-props'\nimport { PickerView } from '../utils/picker'\nimport Anchors from './anchors.vue'\nimport Category from './category.vue'\nimport Preview from './preview.vue'\nimport Search from './search.vue'\n\nconst I18N = {\n search: 'Search',\n notfound: 'No Emoji Found',\n categories: {\n search: 'Search Results',\n recent: 'Frequently Used',\n smileys: 'Smileys & Emotion',\n people: 'People & Body',\n nature: 'Animals & Nature',\n foods: 'Food & Drink',\n activity: 'Activity',\n places: 'Travel & Places',\n objects: 'Objects',\n symbols: 'Symbols',\n flags: 'Flags',\n custom: 'Custom',\n },\n}\n\nexport default {\n props: {\n ...PickerProps,\n data: {\n type: Object,\n required: true,\n },\n },\n emits: ['select', 'skin-change'],\n data() {\n return {\n activeSkin: this.skin || store.get('skin') || this.defaultSkin,\n view: new PickerView(this),\n }\n },\n computed: {\n customStyles() {\n return {\n width: this.calculateWidth + 'px',\n ...this.pickerStyles,\n }\n },\n emojiProps() {\n return {\n native: this.native,\n skin: this.activeSkin,\n set: this.set,\n emojiTooltip: this.emojiTooltip,\n emojiSize: this.emojiSize,\n selectedEmoji: this.view.previewEmoji,\n selectedEmojiCategory: this.view.previewEmojiCategory,\n onEnter: this.onEmojiEnter.bind(this),\n onLeave: this.onEmojiLeave.bind(this),\n onClick: this.onEmojiClick.bind(this),\n }\n },\n skinProps() {\n return {\n skin: this.activeSkin,\n }\n },\n calculateWidth() {\n return this.perLine * (this.emojiSize + 12) + 12 + 2 + measureScrollbar()\n },\n // emojisPerRow() {\n // const listEl = this.$refs.scrollContent\n // const emojiEl = listEl.querySelector('.emoji-mart-emoji')\n // return Math.floor(listEl.offsetWidth / emojiEl.offsetWidth)\n // },\n filteredCategories() {\n return this.view.filteredCategories\n },\n mergedI18n() {\n return Object.freeze(deepMerge(I18N, this.i18n))\n },\n idleEmoji() {\n try {\n return this.data.emoji(this.emoji)\n } catch (e) {\n console.error(\n 'Default preview emoji `' +\n this.emoji +\n '` is not available, check the Picker `emoji` property',\n )\n console.error(e)\n return this.data.firstEmoji()\n }\n },\n isSearching() {\n return this.view.searchEmojis != null;\n },\n },\n watch: {\n skin() {\n this.onSkinChange(this.skin)\n },\n },\n methods: {\n onScroll() {\n if (this.infiniteScroll && !this.waitingForPaint) {\n this.waitingForPaint = true\n window.requestAnimationFrame(this.onScrollPaint.bind(this))\n }\n },\n onScrollPaint() {\n this.waitingForPaint = false\n this.view.onScroll()\n },\n onAnchorClick(category) {\n this.view.onAnchorClick(category)\n },\n onSearch(value) {\n this.view.onSearch(value)\n },\n onEmojiEnter(emoji) {\n this.view.onEmojiEnter(emoji)\n },\n onEmojiLeave(emoji) {\n this.view.onEmojiLeave(emoji)\n },\n onArrowLeft($event) {\n const oldIdx = this.view.previewEmojiIdx\n this.view.onArrowLeft()\n if ($event && this.view.previewEmojiIdx !== oldIdx) {\n // Prevent cursor movement inside the input\n $event.preventDefault()\n }\n },\n onArrowRight() {\n this.view.onArrowRight()\n },\n onArrowDown() {\n this.view.onArrowDown()\n },\n onArrowUp($event) {\n this.view.onArrowUp()\n // Prevent cursor movement inside the input\n $event.preventDefault()\n },\n onEnter() {\n if (!this.view.previewEmoji) {\n // We may press \"Enter\" when nothing is selected,\n // for example, if we search for \"asdf\".\n return\n }\n this.$emit('select', this.view.previewEmoji)\n frequently.add(this.view.previewEmoji)\n },\n onEmojiClick(emoji) {\n this.$emit('select', emoji)\n frequently.add(emoji)\n },\n onTextSelect($event) {\n // Prevent default text select event.\n // In Vue 3 it goes through the component and triggers the `select`\n // event that is supposed to be emmited only with emoji.\n // (there is no such problem in Vue 2).\n $event.stopPropagation()\n },\n onSkinChange(skin) {\n this.activeSkin = skin\n store.update({ skin })\n\n this.$emit('skin-change', skin)\n },\n getCategoryComponent(index) {\n let component = this.$refs['categories_' + index]\n if (component && '0' in component) {\n // Vue 2 has $refs under v-for as an array.\n return component['0']\n }\n // Vue 3 does not support $refs as array.\n return component\n },\n },\n components: {\n Anchors,\n Category,\n Preview,\n Search,\n },\n}\n</script>\n","import '../assets/NcEmojiPicker-vNKR9S87.css';\nimport data from \"emoji-mart-vue-fast/data/all.json\";\nimport { Picker, Emoji, EmojiIndex } from \"emoji-mart-vue-fast/src/index.js\";\nimport { isFocusable } from \"tabbable\";\nimport { openBlock, createElementBlock, mergeProps, createElementVNode, toDisplayString, createCommentVNode, resolveComponent, createBlock, withCtx, createVNode, withKeys, withModifiers, createSlots, normalizeStyle, renderSlot, normalizeProps, guardReactiveProps } from \"vue\";\nimport { _ as _export_sfc } from \"./_plugin-vue_export-helper-1tPrXgE0.mjs\";\nimport { N as NcColorPicker } from \"./NcColorPicker-BCkasLwT.mjs\";\nimport { u as useTrapStackControl } from \"./useTrapStackControl-B6cEicto.mjs\";\nimport { s as setCurrentSkinTone, g as getCurrentSkinTone } from \"./emoji-C8k9NUlo.mjs\";\nimport { r as register, q as t43, s as t37, u as t16, v as t5, a as t } from \"./_l10n-wdIzZwir.mjs\";\nimport { C as Color } from \"./colors-Cv9F-jWS.mjs\";\nimport { N as NcButton } from \"./NcButton-jvoYS2my.mjs\";\nimport { N as NcPopover } from \"./NcPopover-B87bEPLq.mjs\";\nimport { _ as _sfc_main$2 } from \"./NcTextField.vue_vue_type_script_setup_true_lang-Bx2esFU2.mjs\";\nconst _sfc_main$1 = {\n name: \"CircleIcon\",\n emits: [\"click\"],\n props: {\n title: {\n type: String\n },\n fillColor: {\n type: String,\n default: \"currentColor\"\n },\n size: {\n type: Number,\n default: 24\n }\n }\n};\nconst _hoisted_1$1 = [\"aria-hidden\", \"aria-label\"];\nconst _hoisted_2$1 = [\"fill\", \"width\", \"height\"];\nconst _hoisted_3$1 = { d: \"M12,2A10,10 0 0,0 2,12A10,10 0 0,0 12,22A10,10 0 0,0 22,12A10,10 0 0,0 12,2Z\" };\nconst _hoisted_4$1 = { key: 0 };\nfunction _sfc_render$1(_ctx, _cache, $props, $setup, $data, $options) {\n return openBlock(), createElementBlock(\"span\", mergeProps(_ctx.$attrs, {\n \"aria-hidden\": $props.title ? null : \"true\",\n \"aria-label\": $props.title,\n class: \"material-design-icon circle-icon\",\n role: \"img\",\n onClick: _cache[0] || (_cache[0] = ($event) => _ctx.$emit(\"click\", $event))\n }), [\n (openBlock(), createElementBlock(\"svg\", {\n fill: $props.fillColor,\n class: \"material-design-icon__svg\",\n width: $props.size,\n height: $props.size,\n viewBox: \"0 0 24 24\"\n }, [\n createElementVNode(\"path\", _hoisted_3$1, [\n $props.title ? (openBlock(), createElementBlock(\"title\", _hoisted_4$1, toDisplayString($props.title), 1)) : createCommentVNode(\"\", true)\n ])\n ], 8, _hoisted_2$1))\n ], 16, _hoisted_1$1);\n}\nconst IconCircle = /* @__PURE__ */ _export_sfc(_sfc_main$1, [[\"render\", _sfc_render$1]]);\nregister(t5, t16, t37, t43);\nlet emojiIndex;\nconst i18n = {\n search: t(\"Search emoji\"),\n notfound: t(\"No emoji found\"),\n categories: {\n search: t(\"Search results\"),\n recent: t(\"Frequently used\"),\n smileys: t(\"Smileys & Emotion\"),\n people: t(\"People & Body\"),\n nature: t(\"Animals & Nature\"),\n foods: t(\"Food & Drink\"),\n activity: t(\"Activities\"),\n places: t(\"Travel & Places\"),\n objects: t(\"Objects\"),\n symbols: t(\"Symbols\"),\n flags: t(\"Flags\"),\n custom: t(\"Custom\")\n }\n};\nconst skinTonePalette = [\n new Color(255, 222, 52, t(\"Neutral skin color\")),\n new Color(228, 205, 166, t(\"Light skin tone\")),\n new Color(250, 221, 192, t(\"Medium light skin tone\")),\n new Color(174, 129, 87, t(\"Medium skin tone\")),\n new Color(158, 113, 88, t(\"Medium dark skin tone\")),\n new Color(96, 79, 69, t(\"Dark skin tone\"))\n];\nconst _sfc_main = {\n name: \"NcEmojiPicker\",\n components: {\n IconCircle,\n NcButton,\n NcColorPicker,\n NcPopover,\n NcTextField: _sfc_main$2,\n Emoji,\n Picker\n },\n props: {\n /**\n * The emoji-set\n */\n activeSet: {\n type: String,\n default: \"native\"\n },\n /**\n * Show preview section when hovering emoji\n */\n showPreview: {\n type: Boolean,\n default: false\n },\n /**\n * Allow unselecting the selected emoji\n */\n allowUnselect: {\n type: Boolean,\n default: false\n },\n /**\n * Selected emoji to allow unselecting\n */\n selectedEmoji: {\n type: String,\n default: \"\"\n },\n /**\n * The fallback emoji in the preview section\n */\n previewFallbackEmoji: {\n type: String,\n default: \"grinning\"\n },\n /**\n * The fallback text in the preview section\n */\n previewFallbackName: {\n type: String,\n default: t(\"Pick an emoji\")\n },\n /**\n * Whether to close the emoji picker after picking one\n */\n closeOnSelect: {\n type: Boolean,\n default: true\n },\n /**\n * Selector for the popover container\n */\n container: {\n type: [Boolean, String, Object, Element],\n default: \"body\"\n }\n },\n emits: [\n \"select\",\n \"selectData\",\n \"unselect\"\n ],\n setup() {\n if (!emojiIndex) {\n emojiIndex = new EmojiIndex(data);\n }\n return {\n // Non-reactive constants\n emojiIndex,\n skinTonePalette,\n i18n\n };\n },\n data() {\n const currentSkinTone = getCurrentSkinTone();\n return {\n /**\n * The current active color from the skin tone palette\n */\n currentColor: skinTonePalette[currentSkinTone - 1],\n /**\n * The current active skin tone\n *\n * @type {1|2|3|4|5|6}\n */\n currentSkinTone,\n search: \"\",\n open: false\n };\n },\n computed: {\n native() {\n return this.activeSet === \"native\";\n }\n },\n created() {\n useTrapStackControl(() => this.open);\n },\n methods: {\n t,\n clearSearch() {\n this.search = \"\";\n this.$refs.search.focus();\n },\n /**\n * Update the current skin tone by the result of the color picker\n *\n * @param {string} color Color set\n */\n onChangeSkinTone(color) {\n const index = this.skinTonePalette.findIndex((tone) => tone.color.toLowerCase() === color.toLowerCase());\n if (index > -1) {\n this.currentSkinTone = index + 1;\n this.currentColor = this.skinTonePalette[index];\n setCurrentSkinTone(this.currentSkinTone);\n }\n },\n select(emojiObject) {\n this.$emit(\"select\", emojiObject.native);\n this.$emit(\"selectData\", emojiObject);\n if (this.closeOnSelect) {\n this.open = false;\n }\n },\n unselect() {\n this.$emit(\"unselect\");\n },\n afterShow() {\n this.$refs.search.focus();\n },\n afterHide() {\n if (!document.activeElement || this.$refs.picker.$el.contains(document.activeElement) || !isFocusable(document.activeElement)) {\n this.$refs.popover.$el.querySelector('button, [role=\"button\"]')?.focus();\n }\n },\n /**\n * Manually handle Tab navigation skipping emoji buttons.\n * Navigation over emojis is handled by Arrow keys.\n *\n * @param {KeyboardEvent} event - Keyboard event\n */\n handleTabNavigationSkippingEmojis(event) {\n const current = event.target;\n const focusable = Array.from(this.$refs.picker.$el.querySelectorAll(\"button:not(.emoji-mart-emoji), input\"));\n if (!event.shiftKey) {\n const nextNode = focusable.find((node) => current.compareDocumentPosition(node) & Node.DOCUMENT_POSITION_FOLLOWING) || focusable[0];\n nextNode.focus();\n } else {\n const prevNode = focusable.findLast((node) => current.compareDocumentPosition(node) & Node.DOCUMENT_POSITION_PRECEDING) || focusable.at(-1);\n prevNode.focus();\n }\n },\n /**\n * Handle arrow navigation via <Picker>'s handlers with scroll bug fix\n *\n * @param {'onArrowLeft' | 'onArrowRight' | 'onArrowDown' | 'onArrowUp'} originalHandlerName - Picker's arrow keydown handler name\n * @param {KeyboardEvent} event - Keyboard event\n */\n async callPickerArrowHandlerWithScrollFix(originalHandlerName, event) {\n this.$refs.picker[originalHandlerName](event);\n await this.$nextTick();\n const selectedEmoji = this.$refs.picker.$el.querySelector(\".emoji-mart-emoji-selected\");\n selectedEmoji?.scrollIntoView({\n block: \"center\",\n inline: \"center\"\n });\n }\n }\n};\nconst _hoisted_1 = { class: \"nc-emoji-picker-container\" };\nconst _hoisted_2 = { class: \"search__wrapper\" };\nconst _hoisted_3 = { class: \"emoji-mart-category-label\" };\nconst _hoisted_4 = { class: \"emoji-mart-category-label\" };\nfunction _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {\n const _component_NcTextField = resolveComponent(\"NcTextField\");\n const _component_IconCircle = resolveComponent(\"IconCircle\");\n const _component_NcButton = resolveComponent(\"NcButton\");\n const _component_NcColorPicker = resolveComponent(\"NcColorPicker\");\n const _component_Emoji = resolveComponent(\"Emoji\");\n const _component_Picker = resolveComponent(\"Picker\");\n const _component_NcPopover = resolveComponent(\"NcPopover\");\n return openBlock(), createBlock(_component_NcPopover, {\n ref: \"popover\",\n shown: $data.open,\n \"onUpdate:shown\": _cache[6] || (_cache[6] = ($event) => $data.open = $event),\n container: $props.container,\n popupRole: \"dialog\",\n noFocusTrap: true,\n onAfterShow: $options.afterShow,\n onAfterHide: $options.afterHide\n }, {\n trigger: withCtx((slotProps) => [\n renderSlot(_ctx.$slots, \"default\", normalizeProps(guardReactiveProps(slotProps)), void 0, true)\n ]),\n default: withCtx(() => [\n createElementVNode(\"div\", _hoisted_1, [\n createVNode(_component_Picker, mergeProps({\n ref: \"picker\",\n color: \"var(--color-primary-element)\",\n data: $setup.emojiIndex,\n emoji: $props.previewFallbackEmoji,\n i18n: $setup.i18n,\n native: $options.native,\n emojiSize: 20,\n perLine: 8,\n pickerStyles: { width: \"320px\" },\n showPreview: $props.showPreview,\n skin: $data.currentSkinTone,\n showSkinTones: false,\n title: $props.previewFallbackName,\n role: \"dialog\",\n \"aria-modal\": \"true\",\n \"aria-label\": $options.t(\"Emoji picker\")\n }, _ctx.$attrs, {\n onKeydown: withKeys(withModifiers($options.handleTabNavigationSkippingEmojis, [\"prevent\"]), [\"tab\"]),\n onSelect: $options.select\n }), createSlots({\n searchTemplate: withCtx(({ onSearch }) => [\n createElementVNode(\"div\", _hoisted_2, [\n createVNode(_component_NcTextField, {\n ref: \"search\",\n modelValue: $data.search,\n \"onUpdate:modelValue\": [\n _cache[0] || (_cache[0] = ($event) => $data.search = $event),\n ($event) => onSearch($data.search)\n ],\n class: \"search\",\n label: $options.t(\"Search\"),\n labelVisible: true,\n placeholder: $setup.i18n.search,\n trailingButtonIcon: \"close\",\n trailingButtonLabel: $options.t(\"Clear search\"),\n showTrailingButton: $data.search !== \"\",\n onKeydown: [\n _cache[1] || (_cache[1] = withKeys(($event) => $options.callPickerArrowHandlerWithScrollFix(\"onArrowLeft\", $event), [\"left\"])),\n _cache[2] || (_cache[2] = withKeys(($event) => $options.callPickerArrowHandlerWithScrollFix(\"onArrowRight\", $event), [\"right\"])),\n _cache[3] || (_cache[3] = withKeys(($event) => $options.callPickerArrowHandlerWithScrollFix(\"onArrowDown\", $event), [\"down\"])),\n _cache[4] || (_cache[4] = withKeys(($event) => $options.callPickerArrowHandlerWithScrollFix(\"onArrowUp\", $event), [\"up\"])),\n _cache[5] || (_cache[5] = withKeys(($event) => _ctx.$refs.picker.onEnter($event), [\"enter\"]))\n ],\n onTrailingButtonClick: ($event) => {\n $options.clearSearch();\n onSearch(\"\");\n }\n }, null, 8, [\"modelValue\", \"label\", \"placeholder\", \"trailingButtonLabel\", \"showTrailingButton\", \"onTrailingButtonClick\", \"onUpdate:modelValue\"]),\n createVNode(_component_NcColorPicker, {\n paletteOnly: \"\",\n container: $props.container,\n palette: $setup.skinTonePalette,\n modelValue: $data.currentColor.color,\n \"onUpdate:modelValue\": $options.onChangeSkinTone\n }, {\n default: withCtx(() => [\n createVNode(_component_NcButton, {\n \"aria-label\": $options.t(\"Skin tone\"),\n variant: \"tertiary-no-background\"\n }, {\n icon: withCtx(() => [\n createVNode(_component_IconCircle, {\n style: normalizeStyle({ color: $data.currentColor.color }),\n title: $data.currentColor.name,\n size: 20\n }, null, 8, [\"style\", \"title\"])\n ]),\n _: 1\n }, 8, [\"aria-label\"])\n ]),\n _: 1\n }, 8, [\"container\", \"palette\", \"modelValue\", \"onUpdate:modelValue\"])\n ])\n ]),\n _: 2\n }, [\n $props.allowUnselect && $props.selectedEmoji ? {\n name: \"customCategory\",\n fn: withCtx(() => [\n createElementVNode(\"div\", _hoisted_3, [\n createElementVNode(\"h3\", _hoisted_4, toDisplayString($options.t(\"Selected\")), 1)\n ]),\n createVNode(_component_Emoji, {\n class: \"emoji-selected\",\n data: $setup.emojiIndex,\n emoji: $props.selectedEmoji,\n native: \"\",\n size: 32,\n onClick: $options.unselect\n }, null, 8, [\"data\", \"emoji\", \"onClick\"]),\n createVNode(_component_Emoji, {\n class: \"emoji-delete\",\n data: $setup.emojiIndex,\n emoji: \":x:\",\n native: \"\",\n size: 10,\n onClick: $options.unselect\n }, null, 8, [\"data\", \"onClick\"])\n ]),\n key: \"0\"\n } : void 0\n ]), 1040, [\"data\", \"emoji\", \"i18n\", \"native\", \"showPreview\", \"skin\", \"title\", \"aria-label\", \"onKeydown\", \"onSelect\"])\n ])\n ]),\n _: 3\n }, 8, [\"shown\", \"container\", \"onAfterShow\", \"onAfterHide\"]);\n}\nconst NcEmojiPicker = /* @__PURE__ */ _export_sfc(_sfc_main, [[\"render\", _sfc_render], [\"__scopeId\", \"data-v-11acdb77\"]]);\nexport {\n NcEmojiPicker as N\n};\n//# sourceMappingURL=NcEmojiPicker-UTxgju3f.mjs.map\n"],"names":["NAMESPACE","_JSON","isLocalStorageSupported","getter","setter","setHandlers","handlers","setNamespace","namespace","update","state","key","value","set","get","store","mapping","buildSearch","emoji","search","addToSearch","strings","split","string","s","deepFreeze","object","propNames","name","uncompress","data","id","DEFAULTS","frequently","initialized","defaults","init","add","maxNumber","result","defaultLength","i","quantity","frequentlyKeys","sliced","a","b","last","frequently$1","SVGs","_sfc_main","svgs","_openBlock","_createElementBlock","_hoisted_1","_Fragment","_renderList","$props","category","_normalizeClass","_normalizeStyle","$event","_ctx","_createElementVNode","_String","stringFromCodePoint","MAX_SIZE","codeUnits","highSurrogate","lowSurrogate","index","length","codePoint","unifiedToNative","unified","unicodes","codePoints","u","uniq","arr","acc","item","intersect","uniqA","uniqB","deepMerge","o","originalValue","measureScrollbar","div","scrollbarWidth","SHEET_COLUMNS","COLONS_REGEX","SKINS","EmojiIndex","emojisToShowFilter","include","exclude","custom","recent","recentLength","allCategories","indexA","indexB","categoryData","emojiId","customEmoji","skin","matches","emojiObject","unicodeEmoji","maxResults","values","allResults","emojis","currentIndex","charIndex","char","scores","sub","subIndex","score","aScore","bScore","results","emojiData","EmojiData","idx","emoticon","category_id","isIncluded","isExcluded","skinIdx","skinKey","variationData","skinData","k","sanitize","adjustedColumns","x","y","EmojiView","native","fallback","emojiTooltip","emojiSize","cssStyle","hasImage","short_names","skin_tone","skin_variations","emoticons","imageUrl","colons","EmojiProps","PickerProps","$options","_createBlock","_resolveDynamicComponent","_toDisplayString","emojiView","Emoji","_hoisted_2","_hoisted_3","_hoisted_6","_hoisted_5","_createVNode","_component_emoji","skinTone","$data","Skins","_hoisted_4","_hoisted_7","_hoisted_8","_hoisted_9","shortName","_hoisted_10","_component_skins","_cache","$input","isWindowAvailable","lastTime","vendors","callback","element","currTime","timeToCall","PickerView","pickerComponent","scrollElement","scrollTop","activeCategory","l","component","scrollToComponent","top","categoryLength","diff","scrollEl","emojiEl","scrollHeight","categoryIdx","I18N","e","oldIdx","Anchors","Category","Preview","Search","_component_anchors","_renderSlot","_component_search","args","_component_category","_vShow","_component_preview","_sfc_main$1","_hoisted_1$1","_hoisted_2$1","_hoisted_3$1","_hoisted_4$1","_sfc_render$1","$setup","openBlock","createElementBlock","mergeProps","createElementVNode","toDisplayString","createCommentVNode","IconCircle","_export_sfc","register","t5","t16","t37","t43","emojiIndex","i18n","t","skinTonePalette","Color","NcButton","NcColorPicker","NcPopover","_sfc_main$2","Picker","currentSkinTone","getCurrentSkinTone","useTrapStackControl","color","tone","setCurrentSkinTone","isFocusable","event","current","focusable","node","originalHandlerName","_sfc_render","_component_NcTextField","resolveComponent","_component_IconCircle","_component_NcButton","_component_NcColorPicker","_component_Emoji","_component_Picker","_component_NcPopover","createBlock","withCtx","slotProps","renderSlot","normalizeProps","guardReactiveProps","createVNode","withKeys","withModifiers","createSlots","onSearch","normalizeStyle","NcEmojiPicker"],"mappings":"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","x_google_ignoreList":[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17]} \ No newline at end of file +{"version":3,"file":"NcEmojiPicker-UTxgju3f-D4QbKSIV.chunk.mjs","sources":["../node_modules/emoji-mart-vue-fast/src/utils/store.js","../node_modules/emoji-mart-vue-fast/src/utils/data.js","../node_modules/emoji-mart-vue-fast/src/utils/frequently.js","../node_modules/emoji-mart-vue-fast/src/svgs/index.js","../node_modules/emoji-mart-vue-fast/src/components/anchors.vue","../node_modules/emoji-mart-vue-fast/src/polyfills/stringFromCodePoint.js","../node_modules/emoji-mart-vue-fast/src/utils/index.js","../node_modules/emoji-mart-vue-fast/src/utils/emoji-data.js","../node_modules/emoji-mart-vue-fast/src/utils/shared-props.js","../node_modules/emoji-mart-vue-fast/src/components/Emoji.vue","../node_modules/emoji-mart-vue-fast/src/components/category.vue","../node_modules/emoji-mart-vue-fast/src/components/skins.vue","../node_modules/emoji-mart-vue-fast/src/components/preview.vue","../node_modules/emoji-mart-vue-fast/src/components/search.vue","../node_modules/emoji-mart-vue-fast/src/vendor/raf-polyfill.js","../node_modules/emoji-mart-vue-fast/src/utils/picker.js","../node_modules/emoji-mart-vue-fast/src/components/Picker.vue","../node_modules/@nextcloud/vue/dist/chunks/NcEmojiPicker-UTxgju3f.mjs"],"sourcesContent":["var NAMESPACE = 'emoji-mart'\n\nconst _JSON = JSON\n\nvar isLocalStorageSupported =\n typeof window !== 'undefined' && 'localStorage' in window\n\nlet getter\nlet setter\n\nfunction setHandlers(handlers) {\n handlers || (handlers = {})\n\n getter = handlers.getter\n setter = handlers.setter\n}\n\nfunction setNamespace(namespace) {\n NAMESPACE = namespace\n}\n\nfunction update(state) {\n for (let key in state) {\n let value = state[key]\n set(key, value)\n }\n}\n\nfunction set(key, value) {\n if (setter) {\n setter(key, value)\n } else {\n if (!isLocalStorageSupported) return\n try {\n window.localStorage[`${NAMESPACE}.${key}`] = _JSON.stringify(value)\n } catch (e) {}\n }\n}\n\nfunction get(key) {\n if (getter) {\n return getter(key)\n } else {\n if (!isLocalStorageSupported) return\n try {\n var value = window.localStorage[`${NAMESPACE}.${key}`]\n } catch (e) {\n return\n }\n\n if (value) {\n return JSON.parse(value)\n }\n }\n}\n\nexport default { update, set, get, setNamespace, setHandlers }\n","const mapping = {\n name: 'a',\n unified: 'b',\n non_qualified: 'c',\n has_img_apple: 'd',\n has_img_google: 'e',\n has_img_twitter: 'f',\n has_img_facebook: 'h',\n keywords: 'j',\n sheet: 'k',\n emoticons: 'l',\n text: 'm',\n short_names: 'n',\n added_in: 'o',\n}\n\nconst buildSearch = (emoji) => {\n const search = []\n\n var addToSearch = (strings, split) => {\n if (!strings) {\n return\n }\n\n ;(Array.isArray(strings) ? strings : [strings]).forEach((string) => {\n ;(split ? string.split(/[-|_|\\s]+/) : [string]).forEach((s) => {\n s = s.toLowerCase()\n\n if (search.indexOf(s) == -1) {\n search.push(s)\n }\n })\n })\n }\n\n addToSearch(emoji.short_names, true)\n addToSearch(emoji.name, true)\n addToSearch(emoji.keywords, false)\n addToSearch(emoji.emoticons, false)\n\n return search.join(',')\n}\n\nfunction deepFreeze(object) {\n // Retrieve the property names defined on object\n var propNames = Object.getOwnPropertyNames(object)\n\n // Freeze properties before freezing self\n for (let name of propNames) {\n let value = object[name]\n object[name] =\n value && typeof value === 'object' ? deepFreeze(value) : value\n }\n return Object.freeze(object)\n}\n\nconst uncompress = (data) => {\n if (!data.compressed) {\n return data\n }\n data.compressed = false\n\n for (let id in data.emojis) {\n let emoji = data.emojis[id]\n\n for (let key in mapping) {\n emoji[key] = emoji[mapping[key]]\n delete emoji[mapping[key]]\n }\n\n if (!emoji.short_names) emoji.short_names = []\n emoji.short_names.unshift(id)\n\n emoji.sheet_x = emoji.sheet[0]\n emoji.sheet_y = emoji.sheet[1]\n delete emoji.sheet\n\n if (!emoji.text) emoji.text = ''\n\n if (!emoji.added_in) emoji.added_in = 6\n emoji.added_in = emoji.added_in.toFixed(1)\n\n emoji.search = buildSearch(emoji)\n }\n data = deepFreeze(data)\n return data\n}\n\nexport { buildSearch, uncompress }\n","import store from './store'\n\nconst DEFAULTS = [\n '+1',\n 'grinning',\n 'kissing_heart',\n 'heart_eyes',\n 'laughing',\n 'stuck_out_tongue_winking_eye',\n 'sweat_smile',\n 'joy',\n 'scream',\n 'disappointed',\n 'unamused',\n 'weary',\n 'sob',\n 'sunglasses',\n 'heart',\n 'hankey',\n]\n\nlet frequently, initialized\nlet defaults = {}\n\nfunction init() {\n initialized = true\n frequently = store.get('frequently')\n}\n\nfunction add(emoji) {\n if (!initialized) init()\n var { id } = emoji\n\n frequently || (frequently = defaults)\n frequently[id] || (frequently[id] = 0)\n frequently[id] += 1\n\n store.set('last', id)\n store.set('frequently', frequently)\n}\n\nfunction get(maxNumber) {\n if (!initialized) init()\n if (!frequently) {\n defaults = {}\n\n const result = []\n\n let defaultLength = Math.min(maxNumber, DEFAULTS.length)\n for (let i = 0; i < defaultLength; i++) {\n defaults[DEFAULTS[i]] = parseInt((defaultLength - i) / 4, 10) + 1\n result.push(DEFAULTS[i])\n }\n\n return result\n }\n\n const quantity = maxNumber\n const frequentlyKeys = []\n\n for (let key in frequently) {\n if (frequently.hasOwnProperty(key)) {\n frequentlyKeys.push(key)\n }\n }\n\n const sorted = frequentlyKeys\n .sort((a, b) => frequently[a] - frequently[b])\n .reverse()\n const sliced = sorted.slice(0, quantity)\n\n const last = store.get('last')\n\n if (last && sliced.indexOf(last) == -1) {\n sliced.pop()\n sliced.push(last)\n }\n\n return sliced\n}\n\nexport default { add, get }\n","const SVGs = {\n activity: `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" width=\"24\" height=\"24\"><path d=\"M12 0C5.373 0 0 5.372 0 12c0 6.627 5.373 12 12 12 6.628 0 12-5.373 12-12 0-6.628-5.372-12-12-12m9.949 11H17.05c.224-2.527 1.232-4.773 1.968-6.113A9.966 9.966 0 0 1 21.949 11M13 11V2.051a9.945 9.945 0 0 1 4.432 1.564c-.858 1.491-2.156 4.22-2.392 7.385H13zm-2 0H8.961c-.238-3.165-1.536-5.894-2.393-7.385A9.95 9.95 0 0 1 11 2.051V11zm0 2v8.949a9.937 9.937 0 0 1-4.432-1.564c.857-1.492 2.155-4.221 2.393-7.385H11zm4.04 0c.236 3.164 1.534 5.893 2.392 7.385A9.92 9.92 0 0 1 13 21.949V13h2.04zM4.982 4.887C5.718 6.227 6.726 8.473 6.951 11h-4.9a9.977 9.977 0 0 1 2.931-6.113M2.051 13h4.9c-.226 2.527-1.233 4.771-1.969 6.113A9.972 9.972 0 0 1 2.051 13m16.967 6.113c-.735-1.342-1.744-3.586-1.968-6.113h4.899a9.961 9.961 0 0 1-2.931 6.113\"/></svg>`,\n\n custom: `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" width=\"24\" height=\"24\"><g transform=\"translate(2.000000, 1.000000)\"><rect id=\"Rectangle\" x=\"8\" y=\"0\" width=\"3\" height=\"21\" rx=\"1.5\"></rect><rect id=\"Rectangle\" transform=\"translate(9.843, 10.549) rotate(60) translate(-9.843, -10.549) \" x=\"8.343\" y=\"0.049\" width=\"3\" height=\"21\" rx=\"1.5\"></rect><rect id=\"Rectangle\" transform=\"translate(9.843, 10.549) rotate(-60) translate(-9.843, -10.549) \" x=\"8.343\" y=\"0.049\" width=\"3\" height=\"21\" rx=\"1.5\"></rect></g></svg>`,\n\n flags: `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" width=\"24\" height=\"24\"><path d=\"M0 0l6.084 24H8L1.916 0zM21 5h-4l-1-4H4l3 12h3l1 4h13L21 5zM6.563 3h7.875l2 8H8.563l-2-8zm8.832 10l-2.856 1.904L12.063 13h3.332zM19 13l-1.5-6h1.938l2 8H16l3-2z\"/></svg>`,\n\n foods: `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" width=\"24\" height=\"24\"><path d=\"M17 4.978c-1.838 0-2.876.396-3.68.934.513-1.172 1.768-2.934 4.68-2.934a1 1 0 0 0 0-2c-2.921 0-4.629 1.365-5.547 2.512-.064.078-.119.162-.18.244C11.73 1.838 10.798.023 9.207.023 8.579.022 7.85.306 7 .978 5.027 2.54 5.329 3.902 6.492 4.999 3.609 5.222 0 7.352 0 12.969c0 4.582 4.961 11.009 9 11.009 1.975 0 2.371-.486 3-1 .629.514 1.025 1 3 1 4.039 0 9-6.418 9-11 0-5.953-4.055-8-7-8M8.242 2.546c.641-.508.943-.523.965-.523.426.169.975 1.405 1.357 3.055-1.527-.629-2.741-1.352-2.98-1.846.059-.112.241-.356.658-.686M15 21.978c-1.08 0-1.21-.109-1.559-.402l-.176-.146c-.367-.302-.816-.452-1.266-.452s-.898.15-1.266.452l-.176.146c-.347.292-.477.402-1.557.402-2.813 0-7-5.389-7-9.009 0-5.823 4.488-5.991 5-5.991 1.939 0 2.484.471 3.387 1.251l.323.276a1.995 1.995 0 0 0 2.58 0l.323-.276c.902-.78 1.447-1.251 3.387-1.251.512 0 5 .168 5 6 0 3.617-4.187 9-7 9\"/></svg>`,\n\n nature: `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" width=\"24\" height=\"24\"><path d=\"M15.5 8a1.5 1.5 0 1 0 .001 3.001A1.5 1.5 0 0 0 15.5 8M8.5 8a1.5 1.5 0 1 0 .001 3.001A1.5 1.5 0 0 0 8.5 8\"/><path d=\"M18.933 0h-.027c-.97 0-2.138.787-3.018 1.497-1.274-.374-2.612-.51-3.887-.51-1.285 0-2.616.133-3.874.517C7.245.79 6.069 0 5.093 0h-.027C3.352 0 .07 2.67.002 7.026c-.039 2.479.276 4.238 1.04 5.013.254.258.882.677 1.295.882.191 3.177.922 5.238 2.536 6.38.897.637 2.187.949 3.2 1.102C8.04 20.6 8 20.795 8 21c0 1.773 2.35 3 4 3 1.648 0 4-1.227 4-3 0-.201-.038-.393-.072-.586 2.573-.385 5.435-1.877 5.925-7.587.396-.22.887-.568 1.104-.788.763-.774 1.079-2.534 1.04-5.013C23.929 2.67 20.646 0 18.933 0M3.223 9.135c-.237.281-.837 1.155-.884 1.238-.15-.41-.368-1.349-.337-3.291.051-3.281 2.478-4.972 3.091-5.031.256.015.731.27 1.265.646-1.11 1.171-2.275 2.915-2.352 5.125-.133.546-.398.858-.783 1.313M12 22c-.901 0-1.954-.693-2-1 0-.654.475-1.236 1-1.602V20a1 1 0 1 0 2 0v-.602c.524.365 1 .947 1 1.602-.046.307-1.099 1-2 1m3-3.48v.02a4.752 4.752 0 0 0-1.262-1.02c1.092-.516 2.239-1.334 2.239-2.217 0-1.842-1.781-2.195-3.977-2.195-2.196 0-3.978.354-3.978 2.195 0 .883 1.148 1.701 2.238 2.217A4.8 4.8 0 0 0 9 18.539v-.025c-1-.076-2.182-.281-2.973-.842-1.301-.92-1.838-3.045-1.853-6.478l.023-.041c.496-.826 1.49-1.45 1.804-3.102 0-2.047 1.357-3.631 2.362-4.522C9.37 3.178 10.555 3 11.948 3c1.447 0 2.685.192 3.733.57 1 .9 2.316 2.465 2.316 4.48.313 1.651 1.307 2.275 1.803 3.102.035.058.068.117.102.178-.059 5.967-1.949 7.01-4.902 7.19m6.628-8.202c-.037-.065-.074-.13-.113-.195a7.587 7.587 0 0 0-.739-.987c-.385-.455-.648-.768-.782-1.313-.076-2.209-1.241-3.954-2.353-5.124.531-.376 1.004-.63 1.261-.647.636.071 3.044 1.764 3.096 5.031.027 1.81-.347 3.218-.37 3.235\"/></svg>`,\n\n objects: `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" width=\"24\" height=\"24\"><path d=\"M12 0a9 9 0 0 0-5 16.482V21s2.035 3 5 3 5-3 5-3v-4.518A9 9 0 0 0 12 0zm0 2c3.86 0 7 3.141 7 7s-3.14 7-7 7-7-3.141-7-7 3.14-7 7-7zM9 17.477c.94.332 1.946.523 3 .523s2.06-.19 3-.523v.834c-.91.436-1.925.689-3 .689a6.924 6.924 0 0 1-3-.69v-.833zm.236 3.07A8.854 8.854 0 0 0 12 21c.965 0 1.888-.167 2.758-.451C14.155 21.173 13.153 22 12 22c-1.102 0-2.117-.789-2.764-1.453z\"/><path d=\"M14.745 12.449h-.004c-.852-.024-1.188-.858-1.577-1.824-.421-1.061-.703-1.561-1.182-1.566h-.009c-.481 0-.783.497-1.235 1.537-.436.982-.801 1.811-1.636 1.791l-.276-.043c-.565-.171-.853-.691-1.284-1.794-.125-.313-.202-.632-.27-.913-.051-.213-.127-.53-.195-.634C7.067 9.004 7.039 9 6.99 9A1 1 0 0 1 7 7h.01c1.662.017 2.015 1.373 2.198 2.134.486-.981 1.304-2.058 2.797-2.075 1.531.018 2.28 1.153 2.731 2.141l.002-.008C14.944 8.424 15.327 7 16.979 7h.032A1 1 0 1 1 17 9h-.011c-.149.076-.256.474-.319.709a6.484 6.484 0 0 1-.311.951c-.429.973-.79 1.789-1.614 1.789\"/></svg>`,\n\n smileys: `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" width=\"24\" height=\"24\"><path d=\"M12 0C5.373 0 0 5.373 0 12s5.373 12 12 12 12-5.373 12-12S18.627 0 12 0m0 22C6.486 22 2 17.514 2 12S6.486 2 12 2s10 4.486 10 10-4.486 10-10 10\"/><path d=\"M8 7a2 2 0 1 0-.001 3.999A2 2 0 0 0 8 7M16 7a2 2 0 1 0-.001 3.999A2 2 0 0 0 16 7M15.232 15c-.693 1.195-1.87 2-3.349 2-1.477 0-2.655-.805-3.347-2H15m3-2H6a6 6 0 1 0 12 0\"/></svg>`,\n\n people: `<svg xmlns:svg=\"http://www.w3.org/2000/svg\" height=\"24\" width=\"24\" viewBox=\"0 0 24 24\"> <path id=\"path3814\" d=\"m 3.3591089,21.17726 c 0.172036,0.09385 4.265994,2.29837 8.8144451,2.29837 4.927767,0 8.670894,-2.211883 8.82782,-2.306019 0.113079,-0.06785 0.182268,-0.190051 0.182267,-0.321923 0,-3.03119 -0.929494,-5.804936 -2.617196,-7.810712 -1.180603,-1.403134 -2.661918,-2.359516 -4.295699,-2.799791 4.699118,-2.236258 3.102306,-9.28617162 -2.097191,-9.28617162 -5.1994978,0 -6.7963103,7.04991362 -2.097192,9.28617162 -1.6337821,0.440275 -3.1150971,1.396798 -4.2956991,2.799791 -1.687703,2.005776 -2.617196,4.779522 -2.617196,7.810712 1.2e-6,0.137378 0.075039,0.263785 0.195641,0.329572 z M 8.0439319,5.8308783 C 8.0439309,2.151521 12.492107,0.30955811 15.093491,2.9109411 17.694874,5.5123241 15.852911,9.9605006 12.173554,9.9605 9.8938991,9.9579135 8.0465186,8.1105332 8.0439319,5.8308783 Z m -1.688782,7.6894977 c 1.524535,-1.811449 3.5906601,-2.809035 5.8184041,-2.809035 2.227744,0 4.293869,0.997586 5.818404,2.809035 1.533639,1.822571 2.395932,4.339858 2.439152,7.108301 -0.803352,0.434877 -4.141636,2.096112 -8.257556,2.096112 -3.8062921,0 -7.3910861,-1.671043 -8.2573681,-2.104981 0.04505,-2.765017 0.906968,-5.278785 2.438964,-7.099432 z\" /> <path id=\"path3816\" d=\"M 12.173828 0.38867188 C 9.3198513 0.38867187 7.3770988 2.3672285 6.8652344 4.6308594 C 6.4218608 6.5916015 7.1153562 8.7676117 8.9648438 10.126953 C 7.6141249 10.677376 6.3550511 11.480944 5.3496094 12.675781 C 3.5629317 14.799185 2.6015625 17.701475 2.6015625 20.847656 C 2.6015654 21.189861 2.7894276 21.508002 3.0898438 21.671875 C 3.3044068 21.788925 7.4436239 24.039062 12.173828 24.039062 C 17.269918 24.039062 21.083568 21.776786 21.291016 21.652344 C 21.57281 21.483266 21.746097 21.176282 21.746094 20.847656 C 21.746094 17.701475 20.78277 14.799185 18.996094 12.675781 C 17.990455 11.480591 16.733818 10.675362 15.382812 10.125 C 17.231132 8.7655552 17.925675 6.5910701 17.482422 4.6308594 C 16.970557 2.3672285 15.027805 0.38867188 12.173828 0.38867188 z M 12.792969 2.3007812 C 13.466253 2.4161792 14.125113 2.7383941 14.695312 3.3085938 C 15.835712 4.4489931 15.985604 5.9473549 15.46875 7.1953125 C 14.951896 8.4432701 13.786828 9.3984378 12.173828 9.3984375 C 10.197719 9.3961954 8.607711 7.806187 8.6054688 5.8300781 C 8.6054683 4.2170785 9.5606362 3.0520102 10.808594 2.5351562 C 11.432573 2.2767293 12.119685 2.1853833 12.792969 2.3007812 z M 12.173828 11.273438 C 14.233647 11.273438 16.133674 12.185084 17.5625 13.882812 C 18.93069 15.508765 19.698347 17.776969 19.808594 20.283203 C 18.807395 20.800235 15.886157 22.162109 12.173828 22.162109 C 8.7614632 22.162109 5.6245754 20.787069 4.5390625 20.265625 C 4.6525896 17.766717 5.4203315 15.504791 6.7851562 13.882812 C 8.2139827 12.185084 10.11401 11.273438 12.173828 11.273438 z \" /> </svg>`,\n\n places: `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" width=\"24\" height=\"24\"><path d=\"M6.5 12C5.122 12 4 13.121 4 14.5S5.122 17 6.5 17 9 15.879 9 14.5 7.878 12 6.5 12m0 3c-.275 0-.5-.225-.5-.5s.225-.5.5-.5.5.225.5.5-.225.5-.5.5M17.5 12c-1.378 0-2.5 1.121-2.5 2.5s1.122 2.5 2.5 2.5 2.5-1.121 2.5-2.5-1.122-2.5-2.5-2.5m0 3c-.275 0-.5-.225-.5-.5s.225-.5.5-.5.5.225.5.5-.225.5-.5.5\"/><path d=\"M22.482 9.494l-1.039-.346L21.4 9h.6c.552 0 1-.439 1-.992 0-.006-.003-.008-.003-.008H23c0-1-.889-2-1.984-2h-.642l-.731-1.717C19.262 3.012 18.091 2 16.764 2H7.236C5.909 2 4.738 3.012 4.357 4.283L3.626 6h-.642C1.889 6 1 7 1 8h.003S1 8.002 1 8.008C1 8.561 1.448 9 2 9h.6l-.043.148-1.039.346a2.001 2.001 0 0 0-1.359 2.097l.751 7.508a1 1 0 0 0 .994.901H3v1c0 1.103.896 2 2 2h2c1.104 0 2-.897 2-2v-1h6v1c0 1.103.896 2 2 2h2c1.104 0 2-.897 2-2v-1h1.096a.999.999 0 0 0 .994-.901l.751-7.508a2.001 2.001 0 0 0-1.359-2.097M6.273 4.857C6.402 4.43 6.788 4 7.236 4h9.527c.448 0 .834.43.963.857L19.313 9H4.688l1.585-4.143zM7 21H5v-1h2v1zm12 0h-2v-1h2v1zm2.189-3H2.811l-.662-6.607L3 11h18l.852.393L21.189 18z\"/></svg>`,\n\n recent: `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" width=\"24\" height=\"24\"><path d=\"M13 4h-2l-.001 7H9v2h2v2h2v-2h4v-2h-4z\"/><path d=\"M12 0C5.373 0 0 5.373 0 12s5.373 12 12 12 12-5.373 12-12S18.627 0 12 0m0 22C6.486 22 2 17.514 2 12S6.486 2 12 2s10 4.486 10 10-4.486 10-10 10\"/></svg>`,\n\n symbols: `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" width=\"24\" height=\"24\"><path d=\"M0 0h11v2H0zM4 11h3V6h4V4H0v2h4zM15.5 17c1.381 0 2.5-1.116 2.5-2.493s-1.119-2.493-2.5-2.493S13 13.13 13 14.507 14.119 17 15.5 17m0-2.986c.276 0 .5.222.5.493 0 .272-.224.493-.5.493s-.5-.221-.5-.493.224-.493.5-.493M21.5 19.014c-1.381 0-2.5 1.116-2.5 2.493S20.119 24 21.5 24s2.5-1.116 2.5-2.493-1.119-2.493-2.5-2.493m0 2.986a.497.497 0 0 1-.5-.493c0-.271.224-.493.5-.493s.5.222.5.493a.497.497 0 0 1-.5.493M22 13l-9 9 1.513 1.5 8.99-9.009zM17 11c2.209 0 4-1.119 4-2.5V2s.985-.161 1.498.949C23.01 4.055 23 6 23 6s1-1.119 1-3.135C24-.02 21 0 21 0h-2v6.347A5.853 5.853 0 0 0 17 6c-2.209 0-4 1.119-4 2.5s1.791 2.5 4 2.5M10.297 20.482l-1.475-1.585a47.54 47.54 0 0 1-1.442 1.129c-.307-.288-.989-1.016-2.045-2.183.902-.836 1.479-1.466 1.729-1.892s.376-.871.376-1.336c0-.592-.273-1.178-.818-1.759-.546-.581-1.329-.871-2.349-.871-1.008 0-1.79.293-2.344.879-.556.587-.832 1.181-.832 1.784 0 .813.419 1.748 1.256 2.805-.847.614-1.444 1.208-1.794 1.784a3.465 3.465 0 0 0-.523 1.833c0 .857.308 1.56.924 2.107.616.549 1.423.823 2.42.823 1.173 0 2.444-.379 3.813-1.137L8.235 24h2.819l-2.09-2.383 1.333-1.135zm-6.736-6.389a1.02 1.02 0 0 1 .73-.286c.31 0 .559.085.747.254a.849.849 0 0 1 .283.659c0 .518-.419 1.112-1.257 1.784-.536-.651-.805-1.231-.805-1.742a.901.901 0 0 1 .302-.669M3.74 22c-.427 0-.778-.116-1.057-.349-.279-.232-.418-.487-.418-.766 0-.594.509-1.288 1.527-2.083.968 1.134 1.717 1.946 2.248 2.438-.921.507-1.686.76-2.3.76\"/></svg>`,\n}\n\nexport default SVGs\n","<template>\n <div role=\"tablist\" class=\"emoji-mart-anchors\">\n <button\n v-for=\"category in categories\"\n role=\"tab\"\n type=\"button\"\n :aria-label=\"category.name\"\n :aria-selected=\"category.id == activeCategory.id\"\n :key=\"category.id\"\n :class=\"{\n 'emoji-mart-anchor': true,\n 'emoji-mart-anchor-selected': category.id == activeCategory.id,\n }\"\n :style=\"{ color: category.id == activeCategory.id ? color : '' }\"\n :data-title=\"i18n.categories[category.id]\"\n @click=\"$emit('click', category)\"\n >\n <div aria-hidden=\"true\" v-html=\"svgs[category.id]\" />\n <span\n aria-hidden=\"true\"\n class=\"emoji-mart-anchor-bar\"\n :style=\"{ backgroundColor: color }\"\n ></span>\n </button>\n </div>\n</template>\n\n<script>\nimport svgs from '../svgs'\n\nexport default {\n props: {\n i18n: {\n type: Object,\n required: true,\n },\n color: {\n type: String,\n },\n categories: {\n type: Array,\n required: true,\n },\n activeCategory: {\n type: Object,\n default() {\n return {}\n },\n },\n },\n emits: ['click'],\n created() {\n this.svgs = svgs\n },\n}\n</script>\n","const _String = String\n\nexport default _String.fromCodePoint ||\n function stringFromCodePoint() {\n var MAX_SIZE = 0x4000\n var codeUnits = []\n var highSurrogate\n var lowSurrogate\n var index = -1\n var length = arguments.length\n if (!length) {\n return ''\n }\n var result = ''\n while (++index < length) {\n var codePoint = Number(arguments[index])\n if (\n !isFinite(codePoint) || // `NaN`, `+Infinity`, or `-Infinity`\n codePoint < 0 || // not a valid Unicode code point\n codePoint > 0x10ffff || // not a valid Unicode code point\n Math.floor(codePoint) != codePoint // not an integer\n ) {\n throw RangeError('Invalid code point: ' + codePoint)\n }\n if (codePoint <= 0xffff) {\n // BMP code point\n codeUnits.push(codePoint)\n } else {\n // Astral code point; split in surrogate halves\n // http://mathiasbynens.be/notes/javascript-encoding#surrogate-formulae\n codePoint -= 0x10000\n highSurrogate = (codePoint >> 10) + 0xd800\n lowSurrogate = (codePoint % 0x400) + 0xdc00\n codeUnits.push(highSurrogate, lowSurrogate)\n }\n if (index + 1 === length || codeUnits.length > MAX_SIZE) {\n result += String.fromCharCode.apply(null, codeUnits)\n codeUnits.length = 0\n }\n }\n return result\n }\n","import stringFromCodePoint from '../polyfills/stringFromCodePoint'\n\nfunction unifiedToNative(unified) {\n var unicodes = unified.split('-'),\n codePoints = unicodes.map((u) => `0x${u}`)\n\n return stringFromCodePoint.apply(null, codePoints)\n}\n\nfunction uniq(arr) {\n return arr.reduce((acc, item) => {\n if (acc.indexOf(item) === -1) {\n acc.push(item)\n }\n return acc\n }, [])\n}\n\nfunction intersect(a, b) {\n const uniqA = uniq(a)\n const uniqB = uniq(b)\n\n return uniqA.filter((item) => uniqB.indexOf(item) >= 0)\n}\n\nfunction deepMerge(a, b) {\n var o = {}\n\n for (let key in a) {\n let originalValue = a[key],\n value = originalValue\n\n if (Object.prototype.hasOwnProperty.call(b, key)) {\n value = b[key]\n }\n\n if (typeof value === 'object') {\n value = deepMerge(originalValue, value)\n }\n\n o[key] = value\n }\n\n return o\n}\n\n// https://github.com/sonicdoe/measure-scrollbar\nfunction measureScrollbar() {\n if (typeof document == 'undefined') return 0\n const div = document.createElement('div')\n\n div.style.width = '100px'\n div.style.height = '100px'\n div.style.overflow = 'scroll'\n div.style.position = 'absolute'\n div.style.top = '-9999px'\n\n document.body.appendChild(div)\n const scrollbarWidth = div.offsetWidth - div.clientWidth\n document.body.removeChild(div)\n\n return scrollbarWidth\n}\n\nexport { uniq, intersect, deepMerge, unifiedToNative, measureScrollbar }\n","import { intersect, unifiedToNative } from './index'\nimport { uncompress, buildSearch } from './data'\nimport frequently from './frequently'\n\nconst SHEET_COLUMNS = 61\nconst COLONS_REGEX = /^(?:\\:([^\\:]+)\\:)(?:\\:skin-tone-(\\d)\\:)?$/\n// Skin tones\nconst SKINS = ['1F3FA', '1F3FB', '1F3FC', '1F3FD', '1F3FE', '1F3FF']\n\n/**\n * Emoji data structure:\n * {\n * \"compressed\": false,\n * \"aliases\": {\n * collision: \"boom\"\n * cooking: \"fried_egg\"\n * envelope: \"email\"\n * face_with_finger_covering_closed_lips: \"shushing_face\"\n * ...\n * },\n * \"categories\": [ {\n * id: \"people\",\n * name: \"Smileys & Emotion\",\n * emojis: [ \"grinning\", \"grin\", \"joy\", ... ]\n * }, {\n * id: \"nature\",\n * name: \"Animals & Nature\",\n * emojis: [ \"monkey_face\", \"money\", \"gorilla\", ... ]\n * },\n * ...\n * ],\n * \"emojis\": [\n * smiley: {\n * added_in: \"6.0\",\n * emoticons: [\"=)\", \"=-)\"],\n * has_img_apple: true,\n * has_img_facebook: true,\n * has_img_google: true,\n * has_img_twitter: true,\n * keywords: [\"face\", \"happy\", \"joy\", \"haha\", \":D\", \":)\", \"smile\", \"funny\"],\n * name: \"Smiling Face with Open Mouth\",\n * non_qualified: undefined,\n * search: \"smiley,smiling,face,with,open,mouth,happy,joy,haha,:d,:),smile,funny,=),=-)\",\n * sheet_x: 30,\n * sheet_y: 27,\n * short_names: [\"smiley\"],\n * text: \":)\",\n * unified: \"1F603\",\n * }, {\n * +1: { // emoji with skin_variations\n * ..., // all the regular fields are present\n * name: \"Thumbs Up Sign\",\n * short_names: (2) [\"+1\", \"thumbsup\"],\n * skin_variations: {\n * 1F3FB: // each variation has additional set of fields:\n * added_in: \"8.0\",\n * has_img_apple: true,\n * has_img_facebook: true,\n * has_img_google: true,\n * has_img_twitter: true,\n * image: \"1f44d-1f3fb.png\",\n * non_qualified: null,\n * sheet_x: 14,\n * sheet_y: 50,\n * unified: \"1F44D-1F3FB\",\n * 1F3FB: {…},\n * 1F3FC: {…},\n * 1F3FD: {…},\n * 1F3FE: {…},\n * 1F3FF: {…}\n * },\n * ...\n * },\n * a: { // emoji with non_qualified field set\n * added_in: \"6.0\",\n * emoticons: undefined,\n * has_img_apple: true,\n * ...\n * non_qualified: \"1F170\",\n * unified: \"1F170-FE0F\",\n * },\n * ...\n * ]\n * }\n */\n\n/**\n * Wraps raw jason emoji data, serves as data source for\n * emoji picker components.\n *\n * Usage:\n *\n * import data from '../data/all.json'\n * let index = new EmojiIndex(data)\n *\n */\nexport class EmojiIndex {\n /**\n * Constructor.\n *\n * @param {object} data - Raw json data, see the structure above.\n * @param {object} options - additional options, as an object:\n * @param {Function} emojisToShowFilter - optional, function to filter out\n * some emojis, function(emoji) { return true|false }\n * where `emoji` is an raw emoji object, see data.emojis above.\n * @param {Array} include - optional, a list of category ids to include.\n * @param {Array} exclude - optional, a list of category ids to exclude.\n * @param {Array} custom - optional, a list custom emojis, each emoji is\n * an object, see data.emojis above for examples.\n */\n constructor(\n data,\n {\n emojisToShowFilter,\n include,\n exclude,\n custom,\n recent,\n recentLength = 20,\n } = {},\n ) {\n this._data = uncompress(data)\n // Callback to exclude specific emojis\n this._emojisFilter = emojisToShowFilter || null\n // Categories to include / exclude\n this._include = include || null\n this._exclude = exclude || null\n // Custom emojis\n this._custom = custom || []\n // Recent emojis\n // TODO: make parameter configurable\n this._recent = recent || frequently.get(recentLength)\n\n this._emojis = {}\n this._nativeEmojis = {}\n this._emoticons = {}\n\n this._categories = []\n this._recentCategory = { id: 'recent', name: 'Recent', emojis: [] }\n this._customCategory = { id: 'custom', name: 'Custom', emojis: [] }\n this._searchIndex = {}\n this.buildIndex()\n Object.freeze(this)\n }\n\n buildIndex() {\n let allCategories = this._data.categories\n\n if (this._include) {\n // Remove categories that are not in the include list.\n allCategories = allCategories.filter((item) => {\n return this._include.includes(item.id)\n })\n // Sort categories according to the include list.\n allCategories = allCategories.sort((a, b) => {\n const indexA = this._include.indexOf(a.id)\n const indexB = this._include.indexOf(b.id)\n if (indexA < indexB) {\n return -1\n }\n if (indexA > indexB) {\n return 1\n }\n return 0\n })\n }\n\n allCategories.forEach((categoryData) => {\n if (!this.isCategoryNeeded(categoryData.id)) {\n return\n }\n let category = {\n id: categoryData.id,\n name: categoryData.name,\n emojis: [],\n }\n categoryData.emojis.forEach((emojiId) => {\n let emoji = this.addEmoji(emojiId)\n if (emoji) {\n category.emojis.push(emoji)\n }\n })\n if (category.emojis.length) {\n this._categories.push(category)\n }\n })\n\n if (this.isCategoryNeeded('custom')) {\n if (this._custom.length > 0) {\n for (let customEmoji of this._custom) {\n this.addCustomEmoji(customEmoji)\n }\n }\n if (this._customCategory.emojis.length) {\n this._categories.push(this._customCategory)\n }\n }\n\n if (this.isCategoryNeeded('recent')) {\n if (this._recent.length) {\n this._recent.map((id) => {\n for (let customEmoji of this._customCategory.emojis) {\n if (customEmoji.id === id) {\n this._recentCategory.emojis.push(customEmoji)\n return\n }\n }\n if (this.hasEmoji(id)) {\n this._recentCategory.emojis.push(this.emoji(id))\n }\n return\n })\n }\n // Add recent category to the top\n if (this._recentCategory.emojis.length) {\n this._categories.unshift(this._recentCategory)\n }\n }\n }\n\n /**\n * Find the emoji from the string\n */\n findEmoji(emoji, skin) {\n // 1. Parse as :emoji_name:skin-tone-xx:\n let matches = emoji.match(COLONS_REGEX)\n\n if (matches) {\n emoji = matches[1]\n if (matches[2]) {\n skin = parseInt(matches[2], 10)\n }\n }\n\n // 2. Check if the specified emoji is an alias\n if (this._data.aliases.hasOwnProperty(emoji)) {\n emoji = this._data.aliases[emoji]\n }\n\n // 3. Check if we have the specified emoji\n if (this._emojis.hasOwnProperty(emoji)) {\n let emojiObject = this._emojis[emoji]\n if (skin) {\n return emojiObject.getSkin(skin)\n }\n return emojiObject\n }\n\n // 4. Check if we have the specified native emoji\n if (this._nativeEmojis.hasOwnProperty(emoji)) {\n return this._nativeEmojis[emoji]\n }\n return null\n }\n\n categories() {\n return this._categories\n }\n\n emoji(emojiId) {\n if (this._data.aliases.hasOwnProperty(emojiId)) {\n emojiId = this._data.aliases[emojiId]\n }\n let emoji = this._emojis[emojiId]\n if (!emoji) {\n throw new Error('Can not find emoji by id: ' + emojiId)\n }\n return emoji\n }\n\n firstEmoji() {\n let emoji = this._emojis[Object.keys(this._emojis)[0]]\n if (!emoji) {\n throw new Error('Can not get first emoji')\n }\n return emoji\n }\n\n hasEmoji(emojiId) {\n if (this._data.aliases.hasOwnProperty(emojiId)) {\n emojiId = this._data.aliases[emojiId]\n }\n if (this._emojis[emojiId]) {\n return true\n }\n return false\n }\n\n nativeEmoji(unicodeEmoji) {\n if (this._nativeEmojis.hasOwnProperty(unicodeEmoji)) {\n return this._nativeEmojis[unicodeEmoji]\n }\n return null\n }\n\n search(value, maxResults) {\n maxResults || (maxResults = 75)\n if (!value.length) {\n return null\n }\n if (value == '-' || value == '-1') {\n return [this.emoji('-1')]\n }\n\n let values = value.toLowerCase().split(/[\\s|,|\\-|_]+/)\n let allResults = []\n\n if (values.length > 2) {\n values = [values[0], values[1]]\n }\n\n allResults = values\n .map((value) => {\n // Start searchin in the global list of emojis\n let emojis = this._emojis\n let currentIndex = this._searchIndex\n let length = 0\n\n for (let charIndex = 0; charIndex < value.length; charIndex++) {\n const char = value[charIndex]\n length++\n\n currentIndex[char] || (currentIndex[char] = {})\n currentIndex = currentIndex[char]\n\n if (!currentIndex.results) {\n let scores = {}\n currentIndex.results = []\n currentIndex.emojis = {}\n\n for (let emojiId in emojis) {\n let emoji = emojis[emojiId]\n // search is a comma-separated string with words, related\n // to the emoji, for example:\n // search: \"smiley,smiling,face,joy,haha,:d,:),smile,funny,=),=-)\",\n let search = emoji._data.search\n let sub = value.substr(0, length)\n let subIndex = search.indexOf(sub)\n if (subIndex != -1) {\n let score = subIndex + 1\n if (sub == emojiId) score = 0\n\n currentIndex.results.push(emoji)\n currentIndex.emojis[emojiId] = emoji\n\n scores[emojiId] = score\n }\n }\n currentIndex.results.sort((a, b) => {\n var aScore = scores[a.id],\n bScore = scores[b.id]\n return aScore - bScore\n })\n }\n\n // continue search in the reduced set of emojis\n emojis = currentIndex.emojis\n }\n return currentIndex.results\n // The \"filter\" call removes undefined values from allResults\n // array, for example, if we have \"test \" (with trailing space),\n // we will get \"[Array, undefined]\" for allResults and after\n // the \"filter\" call it will turn into \"[Array]\"\n })\n .filter((a) => a)\n\n var results = null\n if (allResults.length > 1) {\n results = intersect.apply(null, allResults)\n } else if (allResults.length) {\n results = allResults[0]\n } else {\n results = []\n }\n if (results && results.length > maxResults) {\n results = results.slice(0, maxResults)\n }\n return results\n }\n\n addCustomEmoji(customEmoji) {\n let emojiData = Object.assign({}, customEmoji, {\n id: customEmoji.short_names[0],\n custom: true,\n })\n if (!emojiData.search) {\n emojiData.search = buildSearch(emojiData)\n }\n let emoji = new EmojiData(emojiData)\n this._emojis[emoji.id] = emoji\n this._customCategory.emojis.push(emoji)\n return emoji\n }\n\n addEmoji(emojiId) {\n // We expect the correct emoji id that is present in the emojis data.\n let data = this._data.emojis[emojiId]\n\n if (!this.isEmojiNeeded(data)) {\n return false\n }\n\n let emoji = new EmojiData(data)\n this._emojis[emojiId] = emoji\n if (emoji.native) {\n this._nativeEmojis[emoji.native] = emoji\n }\n if (emoji._skins) {\n for (let idx in emoji._skins) {\n let skin = emoji._skins[idx]\n if (skin.native) {\n this._nativeEmojis[skin.native] = skin\n }\n }\n }\n\n if (emoji.emoticons) {\n emoji.emoticons.forEach((emoticon) => {\n if (this._emoticons[emoticon]) {\n return\n }\n this._emoticons[emoticon] = emojiId\n })\n }\n return emoji\n }\n\n /**\n * Check if we need to include given category.\n *\n * @param {string} category_id - The category id.\n * @return {boolean} - Whether to include the emoji.\n */\n isCategoryNeeded(category_id) {\n let isIncluded =\n this._include && this._include.length\n ? this._include.indexOf(category_id) > -1\n : true\n let isExcluded =\n this._exclude && this._exclude.length\n ? this._exclude.indexOf(category_id) > -1\n : false\n if (!isIncluded || isExcluded) {\n return false\n }\n return true\n }\n\n /**\n * Check if we need to include given emoji.\n *\n * @param {object} emoji - The raw emoji object.\n * @return {boolean} - Whether to include the emoji.\n */\n isEmojiNeeded(emoji) {\n if (this._emojisFilter) {\n return this._emojisFilter(emoji)\n }\n return true\n }\n}\n\nexport class EmojiData {\n constructor(data) {\n this._data = Object.assign({}, data)\n this._skins = null\n if (this._data.skin_variations) {\n this._skins = []\n for (var skinIdx in SKINS) {\n let skinKey = SKINS[skinIdx]\n let variationData = this._data.skin_variations[skinKey]\n let skinData = Object.assign({}, data)\n for (let k in variationData) {\n skinData[k] = variationData[k]\n }\n delete skinData.skin_variations\n skinData['skin_tone'] = parseInt(skinIdx) + 1\n this._skins.push(new EmojiData(skinData))\n }\n }\n this._sanitized = sanitize(this._data)\n for (let key in this._sanitized) {\n this[key] = this._sanitized[key]\n }\n this.short_names = this._data.short_names\n this.short_name = this._data.short_names[0]\n Object.freeze(this)\n }\n\n getSkin(skinIdx) {\n if (skinIdx && skinIdx != 'native' && this._skins) {\n return this._skins[skinIdx - 1]\n }\n return this\n }\n\n getPosition() {\n let adjustedColumns = SHEET_COLUMNS - 1,\n x = +((100 / adjustedColumns) * this._data.sheet_x).toFixed(2),\n y = +((100 / adjustedColumns) * this._data.sheet_y).toFixed(2)\n return `${x}% ${y}%`\n }\n\n ariaLabel() {\n return [this.native].concat(this.short_names).filter(Boolean).join(', ')\n }\n}\n\nexport class EmojiView {\n /**\n * emoji - Emoji to display\n * set - string, emoji set name\n * native - boolean, whether to render native emoji\n * fallback - fallback function to render missing emoji, optional\n * emojiTooltip - wether we need to show the emoji tooltip, optional\n * emojiSize - emoji size in pixels, optional\n */\n constructor(emoji, skin, set, native, fallback, emojiTooltip, emojiSize) {\n this._emoji = emoji\n this._native = native\n this._skin = skin\n this._set = set\n this._fallback = fallback\n\n this.canRender = this._canRender()\n this.cssClass = this._cssClass()\n this.cssStyle = this._cssStyle(emojiSize)\n this.content = this._content()\n this.title = emojiTooltip === true ? emoji.short_name : null\n this.ariaLabel = emoji.ariaLabel()\n\n Object.freeze(this)\n }\n\n getEmoji() {\n return this._emoji.getSkin(this._skin)\n }\n\n _canRender() {\n return (\n this._isCustom() || this._isNative() || this._hasEmoji() || this._fallback\n )\n }\n\n _cssClass() {\n return ['emoji-set-' + this._set, 'emoji-type-' + this._emojiType()]\n }\n\n _cssStyle(emojiSize) {\n let cssStyle = {}\n if (this._isCustom()) {\n cssStyle = {\n backgroundImage: 'url(' + this.getEmoji()._data.imageUrl + ')',\n backgroundSize: '100%',\n width: emojiSize + 'px',\n height: emojiSize + 'px',\n }\n } else if (this._hasEmoji() && !this._isNative()) {\n cssStyle = {\n backgroundPosition: this.getEmoji().getPosition(),\n }\n }\n if (emojiSize) {\n if (this._isNative()) {\n // Set font-size for native emoji.\n cssStyle = Object.assign(cssStyle, {\n // font-size is used for native emoji which we need\n // to scale with 0.95 factor to have them look approximately\n // the same size as image-based emoji.\n fontSize: Math.round(emojiSize * 0.95 * 10) / 10 + 'px',\n })\n } else {\n // Set width/height for image emoji.\n cssStyle = Object.assign(cssStyle, {\n width: emojiSize + 'px',\n height: emojiSize + 'px',\n })\n }\n }\n return cssStyle\n }\n\n _content() {\n if (this._isCustom()) {\n return ''\n }\n if (this._isNative()) {\n return this.getEmoji().native\n }\n if (this._hasEmoji()) {\n return ''\n }\n return this._fallback ? this._fallback(this.getEmoji()) : null\n }\n\n _isNative() {\n return this._native\n }\n\n _isCustom() {\n return this.getEmoji().custom\n }\n\n _hasEmoji() {\n if (!this.getEmoji()._data) {\n // Return false if we have no data.\n return false\n }\n const hasImage = this.getEmoji()._data['has_img_' + this._set]\n if (hasImage === undefined) {\n // If there is no has_img_xxx in the data, we are working with\n // specific data file, like facebook.json, so we assume all\n // emojis are available (the :set setting for picker should\n // match the data file).\n return true\n }\n // Otherwise, we are using all.json and can switch between different\n // sets - in this case the `has_img_{set_name}` is a boolean that\n // indicates if there is such image or not for a given set.\n return hasImage\n }\n\n _emojiType() {\n if (this._isCustom()) {\n return 'custom'\n }\n if (this._isNative()) {\n return 'native'\n }\n if (this._hasEmoji()) {\n return 'image'\n }\n return 'fallback'\n }\n}\n\nexport function sanitize(emoji) {\n var {\n name,\n short_names,\n skin_tone,\n skin_variations,\n emoticons,\n unified,\n custom,\n imageUrl,\n } = emoji,\n id = emoji.id || short_names[0],\n colons = `:${id}:`\n\n if (custom) {\n return {\n id,\n name,\n colons,\n emoticons,\n custom,\n imageUrl,\n }\n }\n\n if (skin_tone) {\n colons += `:skin-tone-${skin_tone}:`\n }\n\n return {\n id,\n name,\n colons,\n emoticons,\n unified: unified.toLowerCase(),\n skin: skin_tone || (skin_variations ? 1 : null),\n native: unifiedToNative(unified),\n }\n}\n","const EmojiProps = {\n native: {\n type: Boolean,\n default: false,\n },\n tooltip: {\n type: Boolean,\n default: false,\n },\n fallback: {\n type: Function,\n },\n skin: {\n type: Number,\n default: 1,\n },\n set: {\n type: String,\n default: 'apple',\n },\n emoji: {\n type: [String, Object],\n required: true,\n },\n size: {\n type: Number,\n default: null,\n },\n tag: {\n type: String,\n default: 'span',\n },\n}\n\nconst PickerProps = {\n perLine: {\n type: Number,\n default: 9,\n },\n maxSearchResults: {\n type: Number,\n default: 75,\n },\n emojiSize: {\n type: Number,\n default: 24,\n },\n title: {\n type: String,\n default: 'Emoji Mart™',\n },\n emoji: {\n type: String,\n default: 'department_store',\n },\n color: {\n type: String,\n default: '#ae65c5',\n },\n set: {\n type: String,\n default: 'apple',\n },\n skin: {\n type: Number,\n default: null,\n },\n defaultSkin: {\n type: Number,\n default: 1,\n },\n native: {\n type: Boolean,\n default: false,\n },\n emojiTooltip: {\n type: Boolean,\n default: false,\n },\n autoFocus: {\n type: Boolean,\n default: false,\n },\n i18n: {\n type: Object,\n default() {\n return {}\n },\n },\n showPreview: {\n type: Boolean,\n default: true,\n },\n showSearch: {\n type: Boolean,\n default: true,\n },\n showCategories: {\n type: Boolean,\n default: true,\n },\n showSkinTones: {\n type: Boolean,\n default: true,\n },\n infiniteScroll: {\n type: Boolean,\n default: true,\n },\n pickerStyles: {\n type: Object,\n default() {\n return {}\n },\n },\n}\n\nexport { EmojiProps, PickerProps }\n","<template>\n <component\n :is=\"tag\"\n v-if=\"view.canRender\"\n :title=\"view.title\"\n :aria-label=\"view.ariaLabel\"\n :data-title=\"title\"\n class=\"emoji-mart-emoji\"\n @mouseenter=\"onMouseEnter\"\n @mouseleave=\"onMouseLeave\"\n @click=\"onClick\"\n >\n <span :class=\"view.cssClass\" :style=\"view.cssStyle\">{{\n view.content\n }}</span>\n </component>\n</template>\n\n<script>\nimport { EmojiProps } from '../utils/shared-props'\nimport { EmojiView } from '../utils/emoji-data'\n\nexport default {\n props: {\n ...EmojiProps,\n data: {\n type: Object,\n required: true,\n },\n },\n emits: [\"click\", \"mouseenter\", \"mouseleave\"],\n computed: {\n view() {\n return new EmojiView(\n this.emojiObject,\n this.skin,\n this.set,\n this.native,\n this.fallback,\n this.tooltip,\n this.size,\n )\n },\n sanitizedData() {\n return this.emojiObject._sanitized\n },\n title() {\n return this.tooltip ? this.emojiObject.short_name : null\n },\n emojiObject() {\n if (typeof this.emoji == 'string') {\n return this.data.findEmoji(this.emoji)\n } else {\n return this.emoji\n }\n },\n },\n created() {},\n methods: {\n onClick() {\n this.$emit('click', this.emojiObject)\n },\n onMouseEnter() {\n this.$emit('mouseenter', this.emojiObject)\n },\n onMouseLeave() {\n this.$emit('mouseleave', this.emojiObject)\n },\n },\n}\n</script>\n","<template>\n <section\n :class=\"{\n 'emoji-mart-category': true,\n 'emoji-mart-no-results': !hasResults,\n }\"\n :aria-label=\"i18n.categories[id]\"\n v-if=\"isVisible && (isSearch || hasResults)\"\n >\n <div class=\"emoji-mart-category-label\">\n <h3 class=\"emoji-mart-category-label\">{{ i18n.categories[id] }}</h3>\n </div>\n\n <template v-for=\"{ emojiObject, emojiView } in emojiObjects\">\n <button\n v-if=\"emojiView.canRender\"\n :aria-label=\"emojiView.ariaLabel\"\n role=\"option\"\n aria-selected=\"false\"\n aria-posinset=\"1\"\n aria-setsize=\"1812\"\n type=\"button\"\n :data-title=\"emojiObject.short_name\"\n :key=\"emojiObject.id\"\n :title=\"emojiView.title\"\n class=\"emoji-mart-emoji\"\n :class=\"activeClass(emojiObject)\"\n @mouseenter=\"emojiProps.onEnter(emojiView.getEmoji())\"\n @mouseleave=\"emojiProps.onLeave(emojiView.getEmoji())\"\n @click=\"emojiProps.onClick(emojiView.getEmoji())\"\n >\n <span :class=\"emojiView.cssClass\" :style=\"emojiView.cssStyle\">{{\n emojiView.content\n }}</span>\n </button>\n </template>\n\n <div v-if=\"!hasResults\">\n <emoji\n :data=\"data\"\n emoji=\"sleuth_or_spy\"\n :native=\"emojiProps.native\"\n :skin=\"emojiProps.skin\"\n :set=\"emojiProps.set\"\n />\n <div class=\"emoji-mart-no-results-label\">{{ i18n.notfound }}</div>\n </div>\n </section>\n</template>\n\n<script>\nimport { EmojiView } from '../utils/emoji-data'\nimport Emoji from './Emoji.vue'\n\nexport default {\n props: {\n data: {\n type: Object,\n required: true,\n },\n i18n: {\n type: Object,\n required: true,\n },\n id: {\n type: String,\n required: true,\n },\n name: {\n type: String,\n required: true,\n },\n emojis: {\n type: Array,\n },\n emojiProps: {\n type: Object,\n required: true,\n },\n },\n methods: {\n activeClass: function(emojiObject) {\n if (!this.emojiProps.selectedEmoji) {\n return ''\n }\n if (!this.emojiProps.selectedEmojiCategory) {\n return ''\n }\n if (\n this.emojiProps.selectedEmoji.id == emojiObject.id &&\n this.emojiProps.selectedEmojiCategory.id == this.id\n ) {\n return 'emoji-mart-emoji-selected'\n }\n return ''\n },\n },\n computed: {\n isVisible() {\n return !!this.emojis\n },\n isSearch() {\n return this.name == 'Search'\n },\n hasResults() {\n return this.emojis.length > 0\n },\n emojiObjects() {\n return this.emojis.map((emoji) => {\n let emojiObject = emoji\n let emojiView = new EmojiView(\n emoji,\n this.emojiProps.skin,\n this.emojiProps.set,\n this.emojiProps.native,\n this.emojiProps.fallback,\n this.emojiProps.emojiTooltip,\n this.emojiProps.emojiSize,\n )\n return { emojiObject, emojiView }\n })\n },\n },\n components: {\n Emoji,\n },\n}\n</script>\n","<template>\n\n<div :class=\"{ 'emoji-mart-skin-swatches': true, 'emoji-mart-skin-swatches-opened': opened }\">\n <span v-for=\"skinTone in 6\" :key=\"skinTone\" :class=\"{ 'emoji-mart-skin-swatch': true, 'emoji-mart-skin-swatch-selected': skin == skinTone }\">\n <span :class=\"'emoji-mart-skin emoji-mart-skin-tone-' + skinTone\" @click=\"onClick(skinTone)\"></span>\n </span>\n</div>\n\n</template>\n\n<script>\n\nexport default {\n props: {\n skin: {\n type: Number,\n required: true\n }\n },\n emits: ['change'],\n data() {\n return {\n opened: false\n }\n },\n methods: {\n onClick(skinTone) {\n if (this.opened) {\n if (skinTone != this.skin) {\n this.$emit('change', skinTone)\n }\n }\n\n this.opened = !this.opened\n }\n }\n}\n\n</script>\n","<template>\n\n<div class=\"emoji-mart-preview\">\n <template v-if=\"emoji\">\n <div class=\"emoji-mart-preview-emoji\">\n <emoji\n :data=\"data\"\n :emoji=\"emoji\"\n :native=\"emojiProps.native\"\n :skin=\"emojiProps.skin\"\n :set=\"emojiProps.set\"\n />\n </div>\n\n <div class=\"emoji-mart-preview-data\">\n <div class=\"emoji-mart-preview-name\">{{ emoji.name }}</div>\n <div class=\"emoji-mart-preview-shortnames\">\n <span v-for=\"shortName in emojiShortNames\" :key=\"shortName\" class=\"emoji-mart-preview-shortname\">:{{ shortName }}:</span>\n </div>\n <div class=\"emoji-mart-preview-emoticons\">\n <span v-for=\"emoticon in emojiEmoticons\" :key=\"emoticon\" class=\"emoji-mart-preview-emoticon\">{{ emoticon }}</span>\n </div>\n </div>\n </template>\n\n <template v-else>\n <div class=\"emoji-mart-preview-emoji\">\n <emoji\n :data=\"data\"\n :emoji=\"idleEmoji\"\n :native=\"emojiProps.native\"\n :skin=\"emojiProps.skin\"\n :set=\"emojiProps.set\"\n />\n </div>\n\n <div class=\"emoji-mart-preview-data\">\n <span class=\"emoji-mart-title-label\">{{ title }}</span>\n </div>\n\n <div v-if=\"showSkinTones\" class=\"emoji-mart-preview-skins\">\n <skins :skin=\"skinProps.skin\" @change=\"onSkinChange($event)\" />\n </div>\n </template>\n</div>\n\n</template>\n\n<script>\n\nimport Emoji from './Emoji.vue'\nimport Skins from './skins.vue'\n\nexport default {\n props: {\n data: {\n type: Object,\n required: true\n },\n title: {\n type: String,\n required: true\n },\n emoji: {\n type: [String, Object]\n },\n idleEmoji: {\n type: [String, Object],\n required: true\n },\n showSkinTones: {\n type: Boolean,\n default: true\n },\n emojiProps: {\n type: Object,\n required: true\n },\n skinProps: {\n type: Object,\n required: true\n },\n onSkinChange: {\n type: Function,\n required: true\n }\n },\n computed: {\n emojiData() {\n if (this.emoji) {\n return this.emoji\n } else {\n return {}\n }\n },\n emojiShortNames() {\n return this.emojiData.short_names\n },\n emojiEmoticons() {\n return this.emojiData.emoticons\n }\n },\n components: {\n Emoji,\n Skins\n }\n}\n\n</script>\n","<template>\n <div class=\"emoji-mart-search\">\n <input\n type=\"text\"\n :placeholder=\"i18n.search\"\n role=\"textbox\"\n aria-autocomplete=\"list\"\n aria-owns=\"emoji-mart-list\"\n aria-label=\"Search for an emoji\"\n aria-describedby=\"emoji-mart-search-description\"\n @keydown.left=\"($event) => $emit('arrowLeft', $event)\"\n @keydown.right=\"() => $emit('arrowRight')\"\n @keydown.down=\"() => $emit('arrowDown')\"\n @keydown.up=\"($event) => $emit('arrowUp', $event)\"\n @keydown.enter=\"() => $emit('enter')\"\n v-model=\"value\"\n />\n <span class=\"hidden\" id=\"emoji-picker-search-description\"\n >Use the left, right, up and down arrow keys to navigate the emoji search\n results.</span\n >\n </div>\n</template>\n\n<script>\nexport default {\n props: {\n data: {\n type: Object,\n required: true,\n },\n i18n: {\n type: Object,\n required: true,\n },\n autoFocus: {\n type: Boolean,\n default: false,\n },\n onSearch: {\n type: Function,\n required: true,\n },\n onArrowLeft: {\n type: Function,\n required: false,\n },\n onArrowRight: {\n type: Function,\n required: false,\n },\n onArrowDown: {\n type: Function,\n required: false,\n },\n onArrowUp: {\n type: Function,\n required: false,\n },\n onEnter: {\n type: Function,\n required: false,\n },\n },\n emits: ['search', 'enter', 'arrowUp', 'arrowDown', 'arrowRight', 'arrowLeft'],\n data() {\n return {\n value: '',\n }\n },\n computed: {\n emojiIndex() {\n return this.data\n },\n },\n watch: {\n value() {\n this.$emit('search', this.value)\n },\n },\n methods: {\n clear() {\n this.value = ''\n },\n },\n mounted() {\n let $input = this.$el.querySelector('input')\n\n if (this.autoFocus) {\n $input.focus()\n }\n },\n}\n</script>\n","// http://paulirish.com/2011/requestanimationframe-for-smart-animating/\n// http://my.opera.com/emoller/blog/2011/12/20/requestanimationframe-for-smart-er-animating\n\n// requestAnimationFrame polyfill by Erik Möller. fixes from Paul Irish and Tino Zijdel\n\n// MIT license\n\nvar isWindowAvailable = typeof window !== 'undefined'\n\nisWindowAvailable &&\n (function () {\n var lastTime = 0\n var vendors = ['ms', 'moz', 'webkit', 'o']\n\n for (var x = 0; x < vendors.length && !window.requestAnimationFrame; ++x) {\n window.requestAnimationFrame =\n window[vendors[x] + 'RequestAnimationFrame']\n window.cancelAnimationFrame =\n window[vendors[x] + 'CancelAnimationFrame'] ||\n window[vendors[x] + 'CancelRequestAnimationFrame']\n }\n\n if (!window.requestAnimationFrame)\n window.requestAnimationFrame = function (callback, element) {\n var currTime = new Date().getTime()\n var timeToCall = Math.max(0, 16 - (currTime - lastTime))\n var id = window.setTimeout(function () {\n callback(currTime + timeToCall)\n }, timeToCall)\n\n lastTime = currTime + timeToCall\n return id\n }\n\n if (!window.cancelAnimationFrame)\n window.cancelAnimationFrame = function (id) {\n clearTimeout(id)\n }\n })()\n","export class PickerView {\n constructor(pickerComponent) {\n this._vm = pickerComponent\n this._data = pickerComponent.data\n this._perLine = pickerComponent.perLine\n\n this._categories = []\n this._categories.push(...this._data.categories())\n this._categories = this._categories.filter((category) => {\n return category.emojis.length > 0\n })\n\n this._categories[0].first = true\n Object.freeze(this._categories)\n\n this.activeCategory = this._categories[0]\n this.searchEmojis = null\n\n // Preview emoji, shown on mouse over or when we move\n // with arrow keys.\n this.previewEmoji = null\n // Indexes are used to keep the position when moving\n // with arrows: current category and current emoji\n // inside the category.\n this.previewEmojiCategoryIdx = 0\n this.previewEmojiIdx = -1\n }\n\n onScroll() {\n const scrollElement = this._vm.$refs.scroll\n\n if (!scrollElement) {\n // Reported in https://github.com/serebrov/emoji-mart-vue/issues/305\n // Would be good to understand how it can happen, but at least\n // exiting early we prevent the error.\n return\n }\n\n const scrollTop = scrollElement.scrollTop\n\n let activeCategory = this.filteredCategories[0]\n for (let i = 0, l = this.filteredCategories.length; i < l; i++) {\n let category = this.filteredCategories[i]\n let component = this._vm.getCategoryComponent(i)\n // The `-50` offset switches active category (selected in the\n // anchors bar) a bit eariler, before it actually reaches the top.\n if (component && component.$el.offsetTop - 50 > scrollTop) {\n break\n }\n activeCategory = category\n }\n this.activeCategory = activeCategory\n }\n\n get allCategories() {\n return this._categories\n }\n\n get filteredCategories() {\n if (this.searchEmojis) {\n return [\n {\n id: 'search',\n name: 'Search',\n emojis: this.searchEmojis,\n },\n ]\n }\n return this._categories.filter((category) => {\n let hasEmojis = category.emojis.length > 0\n return hasEmojis\n })\n }\n\n get previewEmojiCategory() {\n if (this.previewEmojiCategoryIdx >= 0) {\n return this.filteredCategories[this.previewEmojiCategoryIdx]\n }\n return null\n }\n\n onAnchorClick(category) {\n if (this.searchEmojis) {\n // No categories are shown when search is active.\n return\n }\n let i = this.filteredCategories.indexOf(category)\n let component = this._vm.getCategoryComponent(i)\n let scrollToComponent = () => {\n if (component) {\n let top = component.$el.offsetTop\n if (category.first) {\n top = 0\n }\n this._vm.$refs.scroll.scrollTop = top\n }\n }\n if (this._vm.infiniteScroll) {\n scrollToComponent()\n } else {\n this.activeCategory = this.filteredCategories[i]\n }\n }\n\n onSearch(value) {\n let emojis = this._data.search(value, this.maxSearchResults)\n this.searchEmojis = emojis\n\n this.previewEmojiCategoryIdx = 0\n this.previewEmojiIdx = 0\n this.updatePreviewEmoji()\n }\n\n onEmojiEnter(emoji) {\n this.previewEmoji = emoji\n this.previewEmojiIdx = -1\n this.previewEmojiCategoryIdx = -1\n }\n\n onEmojiLeave(emoji) {\n this.previewEmoji = null\n }\n\n onArrowLeft() {\n // Moving left, decrease emoji index.\n if (this.previewEmojiIdx > 0) {\n this.previewEmojiIdx -= 1\n } else {\n // If emoji index is zero, go to the previous category.\n this.previewEmojiCategoryIdx -= 1\n if (this.previewEmojiCategoryIdx < 0) {\n // If we reached first category, keep it.\n this.previewEmojiCategoryIdx = 0\n } else {\n // Update emoji index - we moved to the previous category,\n // get the last emoji in it.\n this.previewEmojiIdx =\n this.filteredCategories[this.previewEmojiCategoryIdx].emojis.length -\n 1\n }\n }\n this.updatePreviewEmoji()\n }\n\n onArrowRight() {\n if (\n this.previewEmojiIdx <\n this.emojisLength(this.previewEmojiCategoryIdx) - 1\n ) {\n // Moving right within category, increase emoji index.\n this.previewEmojiIdx += 1\n } else {\n // Go to the next category.\n this.previewEmojiCategoryIdx += 1\n if (this.previewEmojiCategoryIdx >= this.filteredCategories.length) {\n // If we reached the last category - keep it.\n this.previewEmojiCategoryIdx = this.filteredCategories.length - 1\n } else {\n // If we moved to the next category, update emoji index to the\n // first emoji in the new category.\n this.previewEmojiIdx = 0\n }\n }\n this.updatePreviewEmoji()\n }\n\n onArrowDown() {\n // If we are out of the emoji control (index is -1), select the first\n // emoji in the first category by calling `onArrowRight`.\n if (this.previewEmojiIdx == -1) {\n return this.onArrowRight()\n }\n\n const categoryLength =\n this.filteredCategories[this.previewEmojiCategoryIdx].emojis.length\n\n // When moving down, we can move `_perLine` icons right to\n // jump to the same position in the next row.\n let diff = this._perLine\n\n // TODO: previewCategory should match activeCategory\n // (so it would be both highlighted in UI and used\n // when we start moving with arrows after clicking\n // the category).\n\n // Note: probably we can alwasy take current row length\n // as a `diff` - it will fit both case of any row and\n // special case of the last row.\n // Note: it can be also easier to update indexes\n // directly here instead of calling onArrowRight.\n // Same is true for `onArrowUp`.\n\n // Unless if we are on the last row of the category and\n // there are less then `_perLine` emojis in it.\n // In this case we use the last row length as diff\n // so we go straight down, for example:\n //\n // 1 2 3 4 5 6\n // 7 8 9\n // A B C D E F\n //\n // If we go down from `8`, we need to move 3 emojis right\n // to lend at `B` (and 3 is the length of the last row of\n // this category).\n // And if we used 6 instead (row length, `_perLine`), we would\n // lend up at `E`.\n if (this.previewEmojiIdx + diff > categoryLength) {\n // Calculate the last row length.\n diff = categoryLength % this._perLine\n }\n for (let i = 0; i < diff; i++) {\n this.onArrowRight()\n }\n this.updatePreviewEmoji()\n }\n\n onArrowUp() {\n // Similar to `onArrowDown`, to move up we can move left\n // by `_perLine` number of emojis.\n let diff = this._perLine\n\n if (this.previewEmojiIdx - diff < 0) {\n if (this.previewEmojiCategoryIdx > 0) {\n // Unless if we are on the first line of the category and\n // the last line in the previous category is shorter than\n // `_perLine`.\n // In this case we use the last row length as diff, so\n // we go straight up, for example:\n //\n // 1 2 3 4 5\n // 6 7 8\n // 9 A B C D\n //\n // If we go up from `A`, we need to move 3 emojis left to get\n // to `7` (and 3 is the length of the last row of the previous\n // category).\n const prevCategoryLastRowLength =\n this.filteredCategories[this.previewEmojiCategoryIdx - 1].emojis\n .length % this._perLine\n // diff = this.previewEmojiIdx + prevCategoryLastRowLength\n diff = prevCategoryLastRowLength\n } else {\n diff = 0\n }\n }\n for (let i = 0; i < diff; i++) {\n this.onArrowLeft()\n }\n this.updatePreviewEmoji()\n }\n\n updatePreviewEmoji() {\n this.previewEmoji =\n this.filteredCategories[this.previewEmojiCategoryIdx].emojis[\n this.previewEmojiIdx\n ]\n\n this._vm.$nextTick(() => {\n // Scroll the view if the `previewEmoji` goes out of the visible area.\n const scrollEl = this._vm.$refs.scroll\n\n // Note: it would be more Vue-ish to mark all emojis with `ref`s\n // and then do something similar here to what we do in the\n // `getCategories` instead of using `querySelector` directly,\n // but I am not sure if having many refs would affect the performance\n // (it might, so I use `querySelector` for now).\n const emojiEl = scrollEl.querySelector('.emoji-mart-emoji-selected')\n\n const scrollHeight = scrollEl.offsetTop - scrollEl.offsetHeight\n if (\n emojiEl &&\n emojiEl.offsetTop + emojiEl.offsetHeight >\n scrollHeight + scrollEl.scrollTop\n ) {\n scrollEl.scrollTop += emojiEl.offsetHeight\n }\n if (emojiEl && emojiEl.offsetTop < scrollEl.scrollTop) {\n scrollEl.scrollTop -= emojiEl.offsetHeight\n }\n })\n }\n\n emojisLength(categoryIdx) {\n if (categoryIdx == -1) {\n return 0\n }\n return this.filteredCategories[categoryIdx].emojis.length\n }\n}\n","<template>\n <section class=\"emoji-mart emoji-mart-static\" :style=\"customStyles\">\n <div class=\"emoji-mart-bar emoji-mart-bar-anchors\" v-if=\"showCategories\">\n <anchors\n :data=\"data\"\n :i18n=\"mergedI18n\"\n :color=\"color\"\n :categories=\"view.allCategories\"\n :active-category=\"view.activeCategory\"\n @click=\"onAnchorClick\"\n />\n </div>\n\n <slot\n name=\"searchTemplate\"\n :data=\"data\"\n :i18n=\"i18n\"\n :auto-focus=\"autoFocus\"\n :on-search=\"onSearch\"\n >\n <search\n v-if=\"showSearch\"\n ref=\"search\"\n :data=\"data\"\n :i18n=\"mergedI18n\"\n :auto-focus=\"autoFocus\"\n :on-search=\"onSearch\"\n @search=\"onSearch\"\n @arrowLeft=\"onArrowLeft\"\n @arrowRight=\"onArrowRight\"\n @arrowDown=\"onArrowDown\"\n @arrowUp=\"onArrowUp\"\n @enter=\"onEnter\"\n @select=\"onTextSelect\"\n />\n </slot>\n\n <div\n role=\"tabpanel\"\n class=\"emoji-mart-scroll\"\n ref=\"scroll\"\n @scroll=\"onScroll\"\n >\n <div\n id=\"emoji-mart-list\"\n ref=\"scrollContent\"\n role=\"listbox\"\n aria-expanded=\"true\"\n >\n <slot name=\"customCategory\"> </slot>\n\n <category\n v-for=\"(category, idx) in view.filteredCategories\"\n v-show=\"infiniteScroll || category == view.activeCategory || isSearching\"\n :ref=\"'categories_' + idx\"\n :key=\"category.id\"\n :data=\"data\"\n :i18n=\"mergedI18n\"\n :id=\"category.id\"\n :name=\"category.name\"\n :emojis=\"category.emojis\"\n :emoji-props=\"emojiProps\"\n />\n </div>\n </div>\n\n <slot\n name=\"previewTemplate\"\n :data=\"data\"\n :title=\"title\"\n :emoji=\"view.previewEmoji\"\n :idle-emoji=\"idleEmoji\"\n :show-skin-tones=\"showSkinTones\"\n :emoji-props=\"emojiProps\"\n :skin-props=\"skinProps\"\n :on-skin-change=\"onSkinChange\"\n >\n <div class=\"emoji-mart-bar emoji-mart-bar-preview\" v-if=\"showPreview\">\n <preview\n :data=\"data\"\n :title=\"title\"\n :emoji=\"view.previewEmoji\"\n :idle-emoji=\"idleEmoji\"\n :show-skin-tones=\"showSkinTones\"\n :emoji-props=\"emojiProps\"\n :skin-props=\"skinProps\"\n :on-skin-change=\"onSkinChange\"\n />\n </div>\n </slot>\n </section>\n</template>\n\n<script>\nimport '../vendor/raf-polyfill'\nimport store from '../utils/store'\nimport frequently from '../utils/frequently'\nimport { deepMerge, measureScrollbar } from '../utils'\nimport { PickerProps } from '../utils/shared-props'\nimport { PickerView } from '../utils/picker'\nimport Anchors from './anchors.vue'\nimport Category from './category.vue'\nimport Preview from './preview.vue'\nimport Search from './search.vue'\n\nconst I18N = {\n search: 'Search',\n notfound: 'No Emoji Found',\n categories: {\n search: 'Search Results',\n recent: 'Frequently Used',\n smileys: 'Smileys & Emotion',\n people: 'People & Body',\n nature: 'Animals & Nature',\n foods: 'Food & Drink',\n activity: 'Activity',\n places: 'Travel & Places',\n objects: 'Objects',\n symbols: 'Symbols',\n flags: 'Flags',\n custom: 'Custom',\n },\n}\n\nexport default {\n props: {\n ...PickerProps,\n data: {\n type: Object,\n required: true,\n },\n },\n emits: ['select', 'skin-change'],\n data() {\n return {\n activeSkin: this.skin || store.get('skin') || this.defaultSkin,\n view: new PickerView(this),\n }\n },\n computed: {\n customStyles() {\n return {\n width: this.calculateWidth + 'px',\n ...this.pickerStyles,\n }\n },\n emojiProps() {\n return {\n native: this.native,\n skin: this.activeSkin,\n set: this.set,\n emojiTooltip: this.emojiTooltip,\n emojiSize: this.emojiSize,\n selectedEmoji: this.view.previewEmoji,\n selectedEmojiCategory: this.view.previewEmojiCategory,\n onEnter: this.onEmojiEnter.bind(this),\n onLeave: this.onEmojiLeave.bind(this),\n onClick: this.onEmojiClick.bind(this),\n }\n },\n skinProps() {\n return {\n skin: this.activeSkin,\n }\n },\n calculateWidth() {\n return this.perLine * (this.emojiSize + 12) + 12 + 2 + measureScrollbar()\n },\n // emojisPerRow() {\n // const listEl = this.$refs.scrollContent\n // const emojiEl = listEl.querySelector('.emoji-mart-emoji')\n // return Math.floor(listEl.offsetWidth / emojiEl.offsetWidth)\n // },\n filteredCategories() {\n return this.view.filteredCategories\n },\n mergedI18n() {\n return Object.freeze(deepMerge(I18N, this.i18n))\n },\n idleEmoji() {\n try {\n return this.data.emoji(this.emoji)\n } catch (e) {\n console.error(\n 'Default preview emoji `' +\n this.emoji +\n '` is not available, check the Picker `emoji` property',\n )\n console.error(e)\n return this.data.firstEmoji()\n }\n },\n isSearching() {\n return this.view.searchEmojis != null;\n },\n },\n watch: {\n skin() {\n this.onSkinChange(this.skin)\n },\n },\n methods: {\n onScroll() {\n if (this.infiniteScroll && !this.waitingForPaint) {\n this.waitingForPaint = true\n window.requestAnimationFrame(this.onScrollPaint.bind(this))\n }\n },\n onScrollPaint() {\n this.waitingForPaint = false\n this.view.onScroll()\n },\n onAnchorClick(category) {\n this.view.onAnchorClick(category)\n },\n onSearch(value) {\n this.view.onSearch(value)\n },\n onEmojiEnter(emoji) {\n this.view.onEmojiEnter(emoji)\n },\n onEmojiLeave(emoji) {\n this.view.onEmojiLeave(emoji)\n },\n onArrowLeft($event) {\n const oldIdx = this.view.previewEmojiIdx\n this.view.onArrowLeft()\n if ($event && this.view.previewEmojiIdx !== oldIdx) {\n // Prevent cursor movement inside the input\n $event.preventDefault()\n }\n },\n onArrowRight() {\n this.view.onArrowRight()\n },\n onArrowDown() {\n this.view.onArrowDown()\n },\n onArrowUp($event) {\n this.view.onArrowUp()\n // Prevent cursor movement inside the input\n $event.preventDefault()\n },\n onEnter() {\n if (!this.view.previewEmoji) {\n // We may press \"Enter\" when nothing is selected,\n // for example, if we search for \"asdf\".\n return\n }\n this.$emit('select', this.view.previewEmoji)\n frequently.add(this.view.previewEmoji)\n },\n onEmojiClick(emoji) {\n this.$emit('select', emoji)\n frequently.add(emoji)\n },\n onTextSelect($event) {\n // Prevent default text select event.\n // In Vue 3 it goes through the component and triggers the `select`\n // event that is supposed to be emmited only with emoji.\n // (there is no such problem in Vue 2).\n $event.stopPropagation()\n },\n onSkinChange(skin) {\n this.activeSkin = skin\n store.update({ skin })\n\n this.$emit('skin-change', skin)\n },\n getCategoryComponent(index) {\n let component = this.$refs['categories_' + index]\n if (component && '0' in component) {\n // Vue 2 has $refs under v-for as an array.\n return component['0']\n }\n // Vue 3 does not support $refs as array.\n return component\n },\n },\n components: {\n Anchors,\n Category,\n Preview,\n Search,\n },\n}\n</script>\n","import '../assets/NcEmojiPicker-vNKR9S87.css';\nimport data from \"emoji-mart-vue-fast/data/all.json\";\nimport { Picker, Emoji, EmojiIndex } from \"emoji-mart-vue-fast/src/index.js\";\nimport { isFocusable } from \"tabbable\";\nimport { openBlock, createElementBlock, mergeProps, createElementVNode, toDisplayString, createCommentVNode, resolveComponent, createBlock, withCtx, createVNode, withKeys, withModifiers, createSlots, normalizeStyle, renderSlot, normalizeProps, guardReactiveProps } from \"vue\";\nimport { _ as _export_sfc } from \"./_plugin-vue_export-helper-1tPrXgE0.mjs\";\nimport { N as NcColorPicker } from \"./NcColorPicker-BCkasLwT.mjs\";\nimport { u as useTrapStackControl } from \"./useTrapStackControl-B6cEicto.mjs\";\nimport { s as setCurrentSkinTone, g as getCurrentSkinTone } from \"./emoji-C8k9NUlo.mjs\";\nimport { r as register, q as t43, s as t37, u as t16, v as t5, a as t } from \"./_l10n-wdIzZwir.mjs\";\nimport { C as Color } from \"./colors-Cv9F-jWS.mjs\";\nimport { N as NcButton } from \"./NcButton-jvoYS2my.mjs\";\nimport { N as NcPopover } from \"./NcPopover-B87bEPLq.mjs\";\nimport { _ as _sfc_main$2 } from \"./NcTextField.vue_vue_type_script_setup_true_lang-Bx2esFU2.mjs\";\nconst _sfc_main$1 = {\n name: \"CircleIcon\",\n emits: [\"click\"],\n props: {\n title: {\n type: String\n },\n fillColor: {\n type: String,\n default: \"currentColor\"\n },\n size: {\n type: Number,\n default: 24\n }\n }\n};\nconst _hoisted_1$1 = [\"aria-hidden\", \"aria-label\"];\nconst _hoisted_2$1 = [\"fill\", \"width\", \"height\"];\nconst _hoisted_3$1 = { d: \"M12,2A10,10 0 0,0 2,12A10,10 0 0,0 12,22A10,10 0 0,0 22,12A10,10 0 0,0 12,2Z\" };\nconst _hoisted_4$1 = { key: 0 };\nfunction _sfc_render$1(_ctx, _cache, $props, $setup, $data, $options) {\n return openBlock(), createElementBlock(\"span\", mergeProps(_ctx.$attrs, {\n \"aria-hidden\": $props.title ? null : \"true\",\n \"aria-label\": $props.title,\n class: \"material-design-icon circle-icon\",\n role: \"img\",\n onClick: _cache[0] || (_cache[0] = ($event) => _ctx.$emit(\"click\", $event))\n }), [\n (openBlock(), createElementBlock(\"svg\", {\n fill: $props.fillColor,\n class: \"material-design-icon__svg\",\n width: $props.size,\n height: $props.size,\n viewBox: \"0 0 24 24\"\n }, [\n createElementVNode(\"path\", _hoisted_3$1, [\n $props.title ? (openBlock(), createElementBlock(\"title\", _hoisted_4$1, toDisplayString($props.title), 1)) : createCommentVNode(\"\", true)\n ])\n ], 8, _hoisted_2$1))\n ], 16, _hoisted_1$1);\n}\nconst IconCircle = /* @__PURE__ */ _export_sfc(_sfc_main$1, [[\"render\", _sfc_render$1]]);\nregister(t5, t16, t37, t43);\nlet emojiIndex;\nconst i18n = {\n search: t(\"Search emoji\"),\n notfound: t(\"No emoji found\"),\n categories: {\n search: t(\"Search results\"),\n recent: t(\"Frequently used\"),\n smileys: t(\"Smileys & Emotion\"),\n people: t(\"People & Body\"),\n nature: t(\"Animals & Nature\"),\n foods: t(\"Food & Drink\"),\n activity: t(\"Activities\"),\n places: t(\"Travel & Places\"),\n objects: t(\"Objects\"),\n symbols: t(\"Symbols\"),\n flags: t(\"Flags\"),\n custom: t(\"Custom\")\n }\n};\nconst skinTonePalette = [\n new Color(255, 222, 52, t(\"Neutral skin color\")),\n new Color(228, 205, 166, t(\"Light skin tone\")),\n new Color(250, 221, 192, t(\"Medium light skin tone\")),\n new Color(174, 129, 87, t(\"Medium skin tone\")),\n new Color(158, 113, 88, t(\"Medium dark skin tone\")),\n new Color(96, 79, 69, t(\"Dark skin tone\"))\n];\nconst _sfc_main = {\n name: \"NcEmojiPicker\",\n components: {\n IconCircle,\n NcButton,\n NcColorPicker,\n NcPopover,\n NcTextField: _sfc_main$2,\n Emoji,\n Picker\n },\n props: {\n /**\n * The emoji-set\n */\n activeSet: {\n type: String,\n default: \"native\"\n },\n /**\n * Show preview section when hovering emoji\n */\n showPreview: {\n type: Boolean,\n default: false\n },\n /**\n * Allow unselecting the selected emoji\n */\n allowUnselect: {\n type: Boolean,\n default: false\n },\n /**\n * Selected emoji to allow unselecting\n */\n selectedEmoji: {\n type: String,\n default: \"\"\n },\n /**\n * The fallback emoji in the preview section\n */\n previewFallbackEmoji: {\n type: String,\n default: \"grinning\"\n },\n /**\n * The fallback text in the preview section\n */\n previewFallbackName: {\n type: String,\n default: t(\"Pick an emoji\")\n },\n /**\n * Whether to close the emoji picker after picking one\n */\n closeOnSelect: {\n type: Boolean,\n default: true\n },\n /**\n * Selector for the popover container\n */\n container: {\n type: [Boolean, String, Object, Element],\n default: \"body\"\n }\n },\n emits: [\n \"select\",\n \"selectData\",\n \"unselect\"\n ],\n setup() {\n if (!emojiIndex) {\n emojiIndex = new EmojiIndex(data);\n }\n return {\n // Non-reactive constants\n emojiIndex,\n skinTonePalette,\n i18n\n };\n },\n data() {\n const currentSkinTone = getCurrentSkinTone();\n return {\n /**\n * The current active color from the skin tone palette\n */\n currentColor: skinTonePalette[currentSkinTone - 1],\n /**\n * The current active skin tone\n *\n * @type {1|2|3|4|5|6}\n */\n currentSkinTone,\n search: \"\",\n open: false\n };\n },\n computed: {\n native() {\n return this.activeSet === \"native\";\n }\n },\n created() {\n useTrapStackControl(() => this.open);\n },\n methods: {\n t,\n clearSearch() {\n this.search = \"\";\n this.$refs.search.focus();\n },\n /**\n * Update the current skin tone by the result of the color picker\n *\n * @param {string} color Color set\n */\n onChangeSkinTone(color) {\n const index = this.skinTonePalette.findIndex((tone) => tone.color.toLowerCase() === color.toLowerCase());\n if (index > -1) {\n this.currentSkinTone = index + 1;\n this.currentColor = this.skinTonePalette[index];\n setCurrentSkinTone(this.currentSkinTone);\n }\n },\n select(emojiObject) {\n this.$emit(\"select\", emojiObject.native);\n this.$emit(\"selectData\", emojiObject);\n if (this.closeOnSelect) {\n this.open = false;\n }\n },\n unselect() {\n this.$emit(\"unselect\");\n },\n afterShow() {\n this.$refs.search.focus();\n },\n afterHide() {\n if (!document.activeElement || this.$refs.picker.$el.contains(document.activeElement) || !isFocusable(document.activeElement)) {\n this.$refs.popover.$el.querySelector('button, [role=\"button\"]')?.focus();\n }\n },\n /**\n * Manually handle Tab navigation skipping emoji buttons.\n * Navigation over emojis is handled by Arrow keys.\n *\n * @param {KeyboardEvent} event - Keyboard event\n */\n handleTabNavigationSkippingEmojis(event) {\n const current = event.target;\n const focusable = Array.from(this.$refs.picker.$el.querySelectorAll(\"button:not(.emoji-mart-emoji), input\"));\n if (!event.shiftKey) {\n const nextNode = focusable.find((node) => current.compareDocumentPosition(node) & Node.DOCUMENT_POSITION_FOLLOWING) || focusable[0];\n nextNode.focus();\n } else {\n const prevNode = focusable.findLast((node) => current.compareDocumentPosition(node) & Node.DOCUMENT_POSITION_PRECEDING) || focusable.at(-1);\n prevNode.focus();\n }\n },\n /**\n * Handle arrow navigation via <Picker>'s handlers with scroll bug fix\n *\n * @param {'onArrowLeft' | 'onArrowRight' | 'onArrowDown' | 'onArrowUp'} originalHandlerName - Picker's arrow keydown handler name\n * @param {KeyboardEvent} event - Keyboard event\n */\n async callPickerArrowHandlerWithScrollFix(originalHandlerName, event) {\n this.$refs.picker[originalHandlerName](event);\n await this.$nextTick();\n const selectedEmoji = this.$refs.picker.$el.querySelector(\".emoji-mart-emoji-selected\");\n selectedEmoji?.scrollIntoView({\n block: \"center\",\n inline: \"center\"\n });\n }\n }\n};\nconst _hoisted_1 = { class: \"nc-emoji-picker-container\" };\nconst _hoisted_2 = { class: \"search__wrapper\" };\nconst _hoisted_3 = { class: \"emoji-mart-category-label\" };\nconst _hoisted_4 = { class: \"emoji-mart-category-label\" };\nfunction _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {\n const _component_NcTextField = resolveComponent(\"NcTextField\");\n const _component_IconCircle = resolveComponent(\"IconCircle\");\n const _component_NcButton = resolveComponent(\"NcButton\");\n const _component_NcColorPicker = resolveComponent(\"NcColorPicker\");\n const _component_Emoji = resolveComponent(\"Emoji\");\n const _component_Picker = resolveComponent(\"Picker\");\n const _component_NcPopover = resolveComponent(\"NcPopover\");\n return openBlock(), createBlock(_component_NcPopover, {\n ref: \"popover\",\n shown: $data.open,\n \"onUpdate:shown\": _cache[6] || (_cache[6] = ($event) => $data.open = $event),\n container: $props.container,\n popupRole: \"dialog\",\n noFocusTrap: true,\n onAfterShow: $options.afterShow,\n onAfterHide: $options.afterHide\n }, {\n trigger: withCtx((slotProps) => [\n renderSlot(_ctx.$slots, \"default\", normalizeProps(guardReactiveProps(slotProps)), void 0, true)\n ]),\n default: withCtx(() => [\n createElementVNode(\"div\", _hoisted_1, [\n createVNode(_component_Picker, mergeProps({\n ref: \"picker\",\n color: \"var(--color-primary-element)\",\n data: $setup.emojiIndex,\n emoji: $props.previewFallbackEmoji,\n i18n: $setup.i18n,\n native: $options.native,\n emojiSize: 20,\n perLine: 8,\n pickerStyles: { width: \"320px\" },\n showPreview: $props.showPreview,\n skin: $data.currentSkinTone,\n showSkinTones: false,\n title: $props.previewFallbackName,\n role: \"dialog\",\n \"aria-modal\": \"true\",\n \"aria-label\": $options.t(\"Emoji picker\")\n }, _ctx.$attrs, {\n onKeydown: withKeys(withModifiers($options.handleTabNavigationSkippingEmojis, [\"prevent\"]), [\"tab\"]),\n onSelect: $options.select\n }), createSlots({\n searchTemplate: withCtx(({ onSearch }) => [\n createElementVNode(\"div\", _hoisted_2, [\n createVNode(_component_NcTextField, {\n ref: \"search\",\n modelValue: $data.search,\n \"onUpdate:modelValue\": [\n _cache[0] || (_cache[0] = ($event) => $data.search = $event),\n ($event) => onSearch($data.search)\n ],\n class: \"search\",\n label: $options.t(\"Search\"),\n labelVisible: true,\n placeholder: $setup.i18n.search,\n trailingButtonIcon: \"close\",\n trailingButtonLabel: $options.t(\"Clear search\"),\n showTrailingButton: $data.search !== \"\",\n onKeydown: [\n _cache[1] || (_cache[1] = withKeys(($event) => $options.callPickerArrowHandlerWithScrollFix(\"onArrowLeft\", $event), [\"left\"])),\n _cache[2] || (_cache[2] = withKeys(($event) => $options.callPickerArrowHandlerWithScrollFix(\"onArrowRight\", $event), [\"right\"])),\n _cache[3] || (_cache[3] = withKeys(($event) => $options.callPickerArrowHandlerWithScrollFix(\"onArrowDown\", $event), [\"down\"])),\n _cache[4] || (_cache[4] = withKeys(($event) => $options.callPickerArrowHandlerWithScrollFix(\"onArrowUp\", $event), [\"up\"])),\n _cache[5] || (_cache[5] = withKeys(($event) => _ctx.$refs.picker.onEnter($event), [\"enter\"]))\n ],\n onTrailingButtonClick: ($event) => {\n $options.clearSearch();\n onSearch(\"\");\n }\n }, null, 8, [\"modelValue\", \"label\", \"placeholder\", \"trailingButtonLabel\", \"showTrailingButton\", \"onTrailingButtonClick\", \"onUpdate:modelValue\"]),\n createVNode(_component_NcColorPicker, {\n paletteOnly: \"\",\n container: $props.container,\n palette: $setup.skinTonePalette,\n modelValue: $data.currentColor.color,\n \"onUpdate:modelValue\": $options.onChangeSkinTone\n }, {\n default: withCtx(() => [\n createVNode(_component_NcButton, {\n \"aria-label\": $options.t(\"Skin tone\"),\n variant: \"tertiary-no-background\"\n }, {\n icon: withCtx(() => [\n createVNode(_component_IconCircle, {\n style: normalizeStyle({ color: $data.currentColor.color }),\n title: $data.currentColor.name,\n size: 20\n }, null, 8, [\"style\", \"title\"])\n ]),\n _: 1\n }, 8, [\"aria-label\"])\n ]),\n _: 1\n }, 8, [\"container\", \"palette\", \"modelValue\", \"onUpdate:modelValue\"])\n ])\n ]),\n _: 2\n }, [\n $props.allowUnselect && $props.selectedEmoji ? {\n name: \"customCategory\",\n fn: withCtx(() => [\n createElementVNode(\"div\", _hoisted_3, [\n createElementVNode(\"h3\", _hoisted_4, toDisplayString($options.t(\"Selected\")), 1)\n ]),\n createVNode(_component_Emoji, {\n class: \"emoji-selected\",\n data: $setup.emojiIndex,\n emoji: $props.selectedEmoji,\n native: \"\",\n size: 32,\n onClick: $options.unselect\n }, null, 8, [\"data\", \"emoji\", \"onClick\"]),\n createVNode(_component_Emoji, {\n class: \"emoji-delete\",\n data: $setup.emojiIndex,\n emoji: \":x:\",\n native: \"\",\n size: 10,\n onClick: $options.unselect\n }, null, 8, [\"data\", \"onClick\"])\n ]),\n key: \"0\"\n } : void 0\n ]), 1040, [\"data\", \"emoji\", \"i18n\", \"native\", \"showPreview\", \"skin\", \"title\", \"aria-label\", \"onKeydown\", \"onSelect\"])\n ])\n ]),\n _: 3\n }, 8, [\"shown\", \"container\", \"onAfterShow\", \"onAfterHide\"]);\n}\nconst NcEmojiPicker = /* @__PURE__ */ _export_sfc(_sfc_main, [[\"render\", _sfc_render], [\"__scopeId\", \"data-v-11acdb77\"]]);\nexport {\n NcEmojiPicker as N\n};\n//# sourceMappingURL=NcEmojiPicker-UTxgju3f.mjs.map\n"],"names":["NAMESPACE","_JSON","isLocalStorageSupported","getter","setter","setHandlers","handlers","setNamespace","namespace","update","state","key","value","set","get","store","mapping","buildSearch","emoji","search","addToSearch","strings","split","string","s","deepFreeze","object","propNames","name","uncompress","data","id","DEFAULTS","frequently","initialized","defaults","init","add","maxNumber","result","defaultLength","i","quantity","frequentlyKeys","sliced","a","b","last","frequently$1","SVGs","_sfc_main","svgs","_openBlock","_createElementBlock","_hoisted_1","_Fragment","_renderList","$props","category","_normalizeClass","_normalizeStyle","$event","_ctx","_createElementVNode","_String","stringFromCodePoint","MAX_SIZE","codeUnits","highSurrogate","lowSurrogate","index","length","codePoint","unifiedToNative","unified","unicodes","codePoints","u","uniq","arr","acc","item","intersect","uniqA","uniqB","deepMerge","o","originalValue","measureScrollbar","div","scrollbarWidth","SHEET_COLUMNS","COLONS_REGEX","SKINS","EmojiIndex","emojisToShowFilter","include","exclude","custom","recent","recentLength","allCategories","indexA","indexB","categoryData","emojiId","customEmoji","skin","matches","emojiObject","unicodeEmoji","maxResults","values","allResults","emojis","currentIndex","charIndex","char","scores","sub","subIndex","score","aScore","bScore","results","emojiData","EmojiData","idx","emoticon","category_id","isIncluded","isExcluded","skinIdx","skinKey","variationData","skinData","k","sanitize","adjustedColumns","x","y","EmojiView","native","fallback","emojiTooltip","emojiSize","cssStyle","hasImage","short_names","skin_tone","skin_variations","emoticons","imageUrl","colons","EmojiProps","PickerProps","$options","_createBlock","_resolveDynamicComponent","_toDisplayString","emojiView","Emoji","_hoisted_2","_hoisted_3","_hoisted_6","_hoisted_5","_createVNode","_component_emoji","skinTone","$data","Skins","_hoisted_4","_hoisted_7","_hoisted_8","_hoisted_9","shortName","_hoisted_10","_component_skins","_cache","$input","isWindowAvailable","lastTime","vendors","callback","element","currTime","timeToCall","PickerView","pickerComponent","scrollElement","scrollTop","activeCategory","l","component","scrollToComponent","top","categoryLength","diff","scrollEl","emojiEl","scrollHeight","categoryIdx","I18N","e","oldIdx","Anchors","Category","Preview","Search","_component_anchors","_renderSlot","_component_search","args","_component_category","_vShow","_component_preview","_sfc_main$1","_hoisted_1$1","_hoisted_2$1","_hoisted_3$1","_hoisted_4$1","_sfc_render$1","$setup","openBlock","createElementBlock","mergeProps","createElementVNode","toDisplayString","createCommentVNode","IconCircle","_export_sfc","register","t5","t16","t37","t43","emojiIndex","i18n","t","skinTonePalette","Color","NcButton","NcColorPicker","NcPopover","_sfc_main$2","Picker","currentSkinTone","getCurrentSkinTone","useTrapStackControl","color","tone","setCurrentSkinTone","isFocusable","event","current","focusable","node","originalHandlerName","_sfc_render","_component_NcTextField","resolveComponent","_component_IconCircle","_component_NcButton","_component_NcColorPicker","_component_Emoji","_component_Picker","_component_NcPopover","createBlock","withCtx","slotProps","renderSlot","normalizeProps","guardReactiveProps","createVNode","withKeys","withModifiers","createSlots","onSearch","normalizeStyle","NcEmojiPicker"],"mappings":"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","x_google_ignoreList":[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17]} \ No newline at end of file diff --git a/dist/NcEmojiPicker-UTxgju3f-HSbVMwrx.chunk.mjs.map.license b/dist/NcEmojiPicker-UTxgju3f-D4QbKSIV.chunk.mjs.map.license similarity index 100% rename from dist/NcEmojiPicker-UTxgju3f-HSbVMwrx.chunk.mjs.map.license rename to dist/NcEmojiPicker-UTxgju3f-D4QbKSIV.chunk.mjs.map.license diff --git a/dist/NcInputField-5Sg6EUP6-DXw-ZWiv.chunk.mjs b/dist/NcInputField-5Sg6EUP6-CUyzAC2j.chunk.mjs similarity index 96% rename from dist/NcInputField-5Sg6EUP6-DXw-ZWiv.chunk.mjs rename to dist/NcInputField-5Sg6EUP6-CUyzAC2j.chunk.mjs index 0d06a6c414a85..e534a248c3865 100644 --- a/dist/NcInputField-5Sg6EUP6-DXw-ZWiv.chunk.mjs +++ b/dist/NcInputField-5Sg6EUP6-CUyzAC2j.chunk.mjs @@ -1,2 +1,2 @@ -import{b as j,n as F,I as L,p as q,o as a,f as u,g as c,m as A,t as h,h as o,J,K,i as v,c as s,w as M,u as n,j as S,y as z,s as y,v as d}from"./Web-DYqXJUev.chunk.mjs";import{N as D,e as g,f as m,i as B}from"./logger-D3RVzcfQ-Bt9JRPzn.chunk.mjs";import{_ as E,N as r,c as G}from"./createElementId-DhjFt1I9-BmyhoOWk.chunk.mjs";const H={class:"input-field__main-wrapper"},P=["id","aria-describedby","disabled","placeholder","type","value"],Q=["for"],R={class:"input-field__icon input-field__icon--leading"},U={key:2,class:"input-field__icon input-field__icon--trailing"},W=["id"],X=j({inheritAttrs:!1,__name:"NcInputField",props:y({class:{default:""},inputClass:{default:""},id:{default:()=>G()},label:{default:void 0},labelOutside:{type:Boolean},type:{default:"text"},placeholder:{default:void 0},showTrailingButton:{type:Boolean},trailingButtonLabel:{default:void 0},success:{type:Boolean},error:{type:Boolean},helperText:{default:""},disabled:{type:Boolean},pill:{type:Boolean}},{modelValue:{required:!0},modelModifiers:{}}),emits:y(["trailingButtonClick"],["update:modelValue"]),setup(e,{expose:k,emit:x}){const p=F(e,"modelValue"),i=e,$=x;k({focus:I,select:N});const f=L(),b=q("input"),T=d(()=>i.showTrailingButton||i.success),w=d(()=>{if(i.placeholder)return i.placeholder;if(i.label)return B?i.label:""}),_=d(()=>i.label||i.labelOutside),C=d(()=>{const l=[];return i.helperText&&l.push(`${i.id}-helper-text`),f["aria-describedby"]&&l.push(String(f["aria-describedby"])),l.join(" ")||void 0});function I(l){b.value.focus(l)}function N(){b.value.select()}function O(l){const t=l.target;p.value=i.type==="number"&&typeof p.value=="number"?parseFloat(t.value):t.value}return(l,t)=>(a(),u("div",{class:z(["input-field",[{"input-field--disabled":e.disabled,"input-field--error":e.error,"input-field--label-outside":e.labelOutside||!_.value,"input-field--leading-icon":!!l.$slots.icon,"input-field--trailing-icon":T.value,"input-field--pill":e.pill,"input-field--success":e.success,"input-field--legacy":n(B)},l.$props.class]])},[c("div",H,[c("input",A(l.$attrs,{id:e.id,ref:"input","aria-describedby":C.value,"aria-live":"polite",class:["input-field__input",e.inputClass],disabled:e.disabled,placeholder:w.value,type:e.type,value:p.value.toString(),onInput:O}),null,16,P),!e.labelOutside&&_.value?(a(),u("label",{key:0,class:"input-field__label",for:e.id},h(e.label),9,Q)):o("",!0),J(c("div",R,[v(l.$slots,"icon",{},void 0,!0)],512),[[K,!!l.$slots.icon]]),e.showTrailingButton?(a(),s(D,{key:1,class:"input-field__trailing-button","aria-label":e.trailingButtonLabel,disabled:e.disabled,variant:"tertiary-no-background",onClick:t[0]||(t[0]=V=>$("trailingButtonClick",V))},{icon:M(()=>[v(l.$slots,"trailing-button-icon",{},void 0,!0)]),_:3},8,["aria-label","disabled"])):e.success||e.error?(a(),u("div",U,[e.success?(a(),s(r,{key:0,path:n(g)},null,8,["path"])):(a(),s(r,{key:1,path:n(m)},null,8,["path"]))])):o("",!0)]),e.helperText?(a(),u("p",{key:0,id:`${e.id}-helper-text`,class:"input-field__helper-text-message"},[e.success?(a(),s(r,{key:0,class:"input-field__helper-text-message__icon",path:n(g),inline:""},null,8,["path"])):e.error?(a(),s(r,{key:1,class:"input-field__helper-text-message__icon",path:n(m),inline:""},null,8,["path"])):o("",!0),S(" "+h(e.helperText),1)],8,W)):o("",!0)],2))}}),le=E(X,[["__scopeId","data-v-8e16cbb5"]]);export{le as N}; -//# sourceMappingURL=NcInputField-5Sg6EUP6-DXw-ZWiv.chunk.mjs.map +import{b as j,n as F,I as L,p as q,o as a,f as u,g as c,m as A,t as h,h as o,J,K,i as v,c as s,w as M,u as n,j as S,y as z,s as y,v as d}from"./Web-DYqXJUev.chunk.mjs";import{N as D,e as g,f as m,i as B}from"./logger-D3RVzcfQ-BrUWOyzd.chunk.mjs";import{_ as E,N as r,c as G}from"./createElementId-DhjFt1I9-BmyhoOWk.chunk.mjs";const H={class:"input-field__main-wrapper"},P=["id","aria-describedby","disabled","placeholder","type","value"],Q=["for"],R={class:"input-field__icon input-field__icon--leading"},U={key:2,class:"input-field__icon input-field__icon--trailing"},W=["id"],X=j({inheritAttrs:!1,__name:"NcInputField",props:y({class:{default:""},inputClass:{default:""},id:{default:()=>G()},label:{default:void 0},labelOutside:{type:Boolean},type:{default:"text"},placeholder:{default:void 0},showTrailingButton:{type:Boolean},trailingButtonLabel:{default:void 0},success:{type:Boolean},error:{type:Boolean},helperText:{default:""},disabled:{type:Boolean},pill:{type:Boolean}},{modelValue:{required:!0},modelModifiers:{}}),emits:y(["trailingButtonClick"],["update:modelValue"]),setup(e,{expose:k,emit:x}){const p=F(e,"modelValue"),i=e,$=x;k({focus:I,select:N});const f=L(),b=q("input"),T=d(()=>i.showTrailingButton||i.success),w=d(()=>{if(i.placeholder)return i.placeholder;if(i.label)return B?i.label:""}),_=d(()=>i.label||i.labelOutside),C=d(()=>{const l=[];return i.helperText&&l.push(`${i.id}-helper-text`),f["aria-describedby"]&&l.push(String(f["aria-describedby"])),l.join(" ")||void 0});function I(l){b.value.focus(l)}function N(){b.value.select()}function O(l){const t=l.target;p.value=i.type==="number"&&typeof p.value=="number"?parseFloat(t.value):t.value}return(l,t)=>(a(),u("div",{class:z(["input-field",[{"input-field--disabled":e.disabled,"input-field--error":e.error,"input-field--label-outside":e.labelOutside||!_.value,"input-field--leading-icon":!!l.$slots.icon,"input-field--trailing-icon":T.value,"input-field--pill":e.pill,"input-field--success":e.success,"input-field--legacy":n(B)},l.$props.class]])},[c("div",H,[c("input",A(l.$attrs,{id:e.id,ref:"input","aria-describedby":C.value,"aria-live":"polite",class:["input-field__input",e.inputClass],disabled:e.disabled,placeholder:w.value,type:e.type,value:p.value.toString(),onInput:O}),null,16,P),!e.labelOutside&&_.value?(a(),u("label",{key:0,class:"input-field__label",for:e.id},h(e.label),9,Q)):o("",!0),J(c("div",R,[v(l.$slots,"icon",{},void 0,!0)],512),[[K,!!l.$slots.icon]]),e.showTrailingButton?(a(),s(D,{key:1,class:"input-field__trailing-button","aria-label":e.trailingButtonLabel,disabled:e.disabled,variant:"tertiary-no-background",onClick:t[0]||(t[0]=V=>$("trailingButtonClick",V))},{icon:M(()=>[v(l.$slots,"trailing-button-icon",{},void 0,!0)]),_:3},8,["aria-label","disabled"])):e.success||e.error?(a(),u("div",U,[e.success?(a(),s(r,{key:0,path:n(g)},null,8,["path"])):(a(),s(r,{key:1,path:n(m)},null,8,["path"]))])):o("",!0)]),e.helperText?(a(),u("p",{key:0,id:`${e.id}-helper-text`,class:"input-field__helper-text-message"},[e.success?(a(),s(r,{key:0,class:"input-field__helper-text-message__icon",path:n(g),inline:""},null,8,["path"])):e.error?(a(),s(r,{key:1,class:"input-field__helper-text-message__icon",path:n(m),inline:""},null,8,["path"])):o("",!0),S(" "+h(e.helperText),1)],8,W)):o("",!0)],2))}}),le=E(X,[["__scopeId","data-v-8e16cbb5"]]);export{le as N}; +//# sourceMappingURL=NcInputField-5Sg6EUP6-CUyzAC2j.chunk.mjs.map diff --git a/dist/NcInputField-5Sg6EUP6-DXw-ZWiv.chunk.mjs.license b/dist/NcInputField-5Sg6EUP6-CUyzAC2j.chunk.mjs.license similarity index 100% rename from dist/NcInputField-5Sg6EUP6-DXw-ZWiv.chunk.mjs.license rename to dist/NcInputField-5Sg6EUP6-CUyzAC2j.chunk.mjs.license diff --git a/dist/NcInputField-5Sg6EUP6-DXw-ZWiv.chunk.mjs.map b/dist/NcInputField-5Sg6EUP6-CUyzAC2j.chunk.mjs.map similarity index 99% rename from dist/NcInputField-5Sg6EUP6-DXw-ZWiv.chunk.mjs.map rename to dist/NcInputField-5Sg6EUP6-CUyzAC2j.chunk.mjs.map index afa89c370d639..7f5e8a9ea4cca 100644 --- a/dist/NcInputField-5Sg6EUP6-DXw-ZWiv.chunk.mjs.map +++ b/dist/NcInputField-5Sg6EUP6-CUyzAC2j.chunk.mjs.map @@ -1 +1 @@ -{"version":3,"file":"NcInputField-5Sg6EUP6-DXw-ZWiv.chunk.mjs","sources":["../node_modules/@nextcloud/vue/dist/chunks/NcInputField-5Sg6EUP6.mjs"],"sourcesContent":["import '../assets/NcInputField-DpyFJ1xw.css';\nimport { defineComponent, useModel, useAttrs, useTemplateRef, computed, warn, openBlock, createElementBlock, normalizeClass, unref, createElementVNode, mergeProps, toDisplayString, createCommentVNode, withDirectives, renderSlot, vShow, createBlock, withCtx, createTextVNode, mergeModels } from \"vue\";\nimport { d as mdiCheck, j as mdiAlertCircleOutline } from \"./mdi-CpchYUUV.mjs\";\nimport { N as NcButton } from \"./NcButton-jvoYS2my.mjs\";\nimport { N as NcIconSvgWrapper } from \"./NcIconSvgWrapper-g8ubWhoz.mjs\";\nimport { c as createElementId } from \"./createElementId-DhjFt1I9.mjs\";\nimport { a as isLegacy } from \"./legacy-BoqDmOCa.mjs\";\nimport { _ as _export_sfc } from \"./_plugin-vue_export-helper-1tPrXgE0.mjs\";\nconst _hoisted_1 = { class: \"input-field__main-wrapper\" };\nconst _hoisted_2 = [\"id\", \"aria-describedby\", \"disabled\", \"placeholder\", \"type\", \"value\"];\nconst _hoisted_3 = [\"for\"];\nconst _hoisted_4 = { class: \"input-field__icon input-field__icon--leading\" };\nconst _hoisted_5 = {\n key: 2,\n class: \"input-field__icon input-field__icon--trailing\"\n};\nconst _hoisted_6 = [\"id\"];\nconst _sfc_main = /* @__PURE__ */ defineComponent({\n ...{\n inheritAttrs: false\n },\n __name: \"NcInputField\",\n props: /* @__PURE__ */ mergeModels({\n class: { default: \"\" },\n inputClass: { default: \"\" },\n id: { default: () => createElementId() },\n label: { default: void 0 },\n labelOutside: { type: Boolean },\n type: { default: \"text\" },\n placeholder: { default: void 0 },\n showTrailingButton: { type: Boolean },\n trailingButtonLabel: { default: void 0 },\n success: { type: Boolean },\n error: { type: Boolean },\n helperText: { default: \"\" },\n disabled: { type: Boolean },\n pill: { type: Boolean }\n }, {\n \"modelValue\": { required: true },\n \"modelModifiers\": {}\n }),\n emits: /* @__PURE__ */ mergeModels([\"trailingButtonClick\"], [\"update:modelValue\"]),\n setup(__props, { expose: __expose, emit: __emit }) {\n const modelValue = useModel(__props, \"modelValue\");\n const props = __props;\n const emit = __emit;\n __expose({\n focus,\n select\n });\n const attrs = useAttrs();\n const inputElement = useTemplateRef(\"input\");\n const hasTrailingIcon = computed(() => props.showTrailingButton || props.success);\n const internalPlaceholder = computed(() => {\n if (props.placeholder) {\n return props.placeholder;\n }\n if (props.label) {\n return isLegacy ? props.label : \"\";\n }\n return void 0;\n });\n const isValidLabel = computed(() => {\n const isValidLabel2 = props.label || props.labelOutside;\n if (!isValidLabel2) {\n warn(\"You need to add a label to the NcInputField component. Either use the prop label or use an external one, as per the example in the documentation.\");\n }\n return isValidLabel2;\n });\n const ariaDescribedby = computed(() => {\n const ariaDescribedby2 = [];\n if (props.helperText) {\n ariaDescribedby2.push(`${props.id}-helper-text`);\n }\n if (attrs[\"aria-describedby\"]) {\n ariaDescribedby2.push(String(attrs[\"aria-describedby\"]));\n }\n return ariaDescribedby2.join(\" \") || void 0;\n });\n function focus(options) {\n inputElement.value.focus(options);\n }\n function select() {\n inputElement.value.select();\n }\n function handleInput(event) {\n const target = event.target;\n modelValue.value = props.type === \"number\" && typeof modelValue.value === \"number\" ? parseFloat(target.value) : target.value;\n }\n return (_ctx, _cache) => {\n return openBlock(), createElementBlock(\"div\", {\n class: normalizeClass([\"input-field\", [{\n \"input-field--disabled\": __props.disabled,\n \"input-field--error\": __props.error,\n \"input-field--label-outside\": __props.labelOutside || !isValidLabel.value,\n \"input-field--leading-icon\": !!_ctx.$slots.icon,\n \"input-field--trailing-icon\": hasTrailingIcon.value,\n \"input-field--pill\": __props.pill,\n \"input-field--success\": __props.success,\n \"input-field--legacy\": unref(isLegacy)\n }, _ctx.$props.class]])\n }, [\n createElementVNode(\"div\", _hoisted_1, [\n createElementVNode(\"input\", mergeProps(_ctx.$attrs, {\n id: __props.id,\n ref: \"input\",\n \"aria-describedby\": ariaDescribedby.value,\n \"aria-live\": \"polite\",\n class: [\"input-field__input\", __props.inputClass],\n disabled: __props.disabled,\n placeholder: internalPlaceholder.value,\n type: __props.type,\n value: modelValue.value.toString(),\n onInput: handleInput\n }), null, 16, _hoisted_2),\n !__props.labelOutside && isValidLabel.value ? (openBlock(), createElementBlock(\"label\", {\n key: 0,\n class: \"input-field__label\",\n for: __props.id\n }, toDisplayString(__props.label), 9, _hoisted_3)) : createCommentVNode(\"\", true),\n withDirectives(createElementVNode(\"div\", _hoisted_4, [\n renderSlot(_ctx.$slots, \"icon\", {}, void 0, true)\n ], 512), [\n [vShow, !!_ctx.$slots.icon]\n ]),\n __props.showTrailingButton ? (openBlock(), createBlock(NcButton, {\n key: 1,\n class: \"input-field__trailing-button\",\n \"aria-label\": __props.trailingButtonLabel,\n disabled: __props.disabled,\n variant: \"tertiary-no-background\",\n onClick: _cache[0] || (_cache[0] = ($event) => emit(\"trailingButtonClick\", $event))\n }, {\n icon: withCtx(() => [\n renderSlot(_ctx.$slots, \"trailing-button-icon\", {}, void 0, true)\n ]),\n _: 3\n }, 8, [\"aria-label\", \"disabled\"])) : __props.success || __props.error ? (openBlock(), createElementBlock(\"div\", _hoisted_5, [\n __props.success ? (openBlock(), createBlock(NcIconSvgWrapper, {\n key: 0,\n path: unref(mdiCheck)\n }, null, 8, [\"path\"])) : (openBlock(), createBlock(NcIconSvgWrapper, {\n key: 1,\n path: unref(mdiAlertCircleOutline)\n }, null, 8, [\"path\"]))\n ])) : createCommentVNode(\"\", true)\n ]),\n __props.helperText ? (openBlock(), createElementBlock(\"p\", {\n key: 0,\n id: `${__props.id}-helper-text`,\n class: \"input-field__helper-text-message\"\n }, [\n __props.success ? (openBlock(), createBlock(NcIconSvgWrapper, {\n key: 0,\n class: \"input-field__helper-text-message__icon\",\n path: unref(mdiCheck),\n inline: \"\"\n }, null, 8, [\"path\"])) : __props.error ? (openBlock(), createBlock(NcIconSvgWrapper, {\n key: 1,\n class: \"input-field__helper-text-message__icon\",\n path: unref(mdiAlertCircleOutline),\n inline: \"\"\n }, null, 8, [\"path\"])) : createCommentVNode(\"\", true),\n createTextVNode(\" \" + toDisplayString(__props.helperText), 1)\n ], 8, _hoisted_6)) : createCommentVNode(\"\", true)\n ], 2);\n };\n }\n});\nconst NcInputField = /* @__PURE__ */ _export_sfc(_sfc_main, [[\"__scopeId\", \"data-v-8e16cbb5\"]]);\nexport {\n NcInputField as N\n};\n//# sourceMappingURL=NcInputField-5Sg6EUP6.mjs.map\n"],"names":["_hoisted_1","_hoisted_2","_hoisted_3","_hoisted_4","_hoisted_5","_hoisted_6","_sfc_main","defineComponent","mergeModels","createElementId","__props","__expose","__emit","modelValue","useModel","props","emit","focus","select","attrs","useAttrs","inputElement","useTemplateRef","hasTrailingIcon","computed","internalPlaceholder","isLegacy","isValidLabel","ariaDescribedby","ariaDescribedby2","options","handleInput","event","target","_ctx","_cache","openBlock","createElementBlock","normalizeClass","unref","createElementVNode","mergeProps","toDisplayString","createCommentVNode","withDirectives","renderSlot","vShow","createBlock","NcButton","$event","withCtx","NcIconSvgWrapper","mdiCheck","mdiAlertCircleOutline","createTextVNode","NcInputField","_export_sfc"],"mappings":"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","x_google_ignoreList":[0]} \ No newline at end of file +{"version":3,"file":"NcInputField-5Sg6EUP6-CUyzAC2j.chunk.mjs","sources":["../node_modules/@nextcloud/vue/dist/chunks/NcInputField-5Sg6EUP6.mjs"],"sourcesContent":["import '../assets/NcInputField-DpyFJ1xw.css';\nimport { defineComponent, useModel, useAttrs, useTemplateRef, computed, warn, openBlock, createElementBlock, normalizeClass, unref, createElementVNode, mergeProps, toDisplayString, createCommentVNode, withDirectives, renderSlot, vShow, createBlock, withCtx, createTextVNode, mergeModels } from \"vue\";\nimport { d as mdiCheck, j as mdiAlertCircleOutline } from \"./mdi-CpchYUUV.mjs\";\nimport { N as NcButton } from \"./NcButton-jvoYS2my.mjs\";\nimport { N as NcIconSvgWrapper } from \"./NcIconSvgWrapper-g8ubWhoz.mjs\";\nimport { c as createElementId } from \"./createElementId-DhjFt1I9.mjs\";\nimport { a as isLegacy } from \"./legacy-BoqDmOCa.mjs\";\nimport { _ as _export_sfc } from \"./_plugin-vue_export-helper-1tPrXgE0.mjs\";\nconst _hoisted_1 = { class: \"input-field__main-wrapper\" };\nconst _hoisted_2 = [\"id\", \"aria-describedby\", \"disabled\", \"placeholder\", \"type\", \"value\"];\nconst _hoisted_3 = [\"for\"];\nconst _hoisted_4 = { class: \"input-field__icon input-field__icon--leading\" };\nconst _hoisted_5 = {\n key: 2,\n class: \"input-field__icon input-field__icon--trailing\"\n};\nconst _hoisted_6 = [\"id\"];\nconst _sfc_main = /* @__PURE__ */ defineComponent({\n ...{\n inheritAttrs: false\n },\n __name: \"NcInputField\",\n props: /* @__PURE__ */ mergeModels({\n class: { default: \"\" },\n inputClass: { default: \"\" },\n id: { default: () => createElementId() },\n label: { default: void 0 },\n labelOutside: { type: Boolean },\n type: { default: \"text\" },\n placeholder: { default: void 0 },\n showTrailingButton: { type: Boolean },\n trailingButtonLabel: { default: void 0 },\n success: { type: Boolean },\n error: { type: Boolean },\n helperText: { default: \"\" },\n disabled: { type: Boolean },\n pill: { type: Boolean }\n }, {\n \"modelValue\": { required: true },\n \"modelModifiers\": {}\n }),\n emits: /* @__PURE__ */ mergeModels([\"trailingButtonClick\"], [\"update:modelValue\"]),\n setup(__props, { expose: __expose, emit: __emit }) {\n const modelValue = useModel(__props, \"modelValue\");\n const props = __props;\n const emit = __emit;\n __expose({\n focus,\n select\n });\n const attrs = useAttrs();\n const inputElement = useTemplateRef(\"input\");\n const hasTrailingIcon = computed(() => props.showTrailingButton || props.success);\n const internalPlaceholder = computed(() => {\n if (props.placeholder) {\n return props.placeholder;\n }\n if (props.label) {\n return isLegacy ? props.label : \"\";\n }\n return void 0;\n });\n const isValidLabel = computed(() => {\n const isValidLabel2 = props.label || props.labelOutside;\n if (!isValidLabel2) {\n warn(\"You need to add a label to the NcInputField component. Either use the prop label or use an external one, as per the example in the documentation.\");\n }\n return isValidLabel2;\n });\n const ariaDescribedby = computed(() => {\n const ariaDescribedby2 = [];\n if (props.helperText) {\n ariaDescribedby2.push(`${props.id}-helper-text`);\n }\n if (attrs[\"aria-describedby\"]) {\n ariaDescribedby2.push(String(attrs[\"aria-describedby\"]));\n }\n return ariaDescribedby2.join(\" \") || void 0;\n });\n function focus(options) {\n inputElement.value.focus(options);\n }\n function select() {\n inputElement.value.select();\n }\n function handleInput(event) {\n const target = event.target;\n modelValue.value = props.type === \"number\" && typeof modelValue.value === \"number\" ? parseFloat(target.value) : target.value;\n }\n return (_ctx, _cache) => {\n return openBlock(), createElementBlock(\"div\", {\n class: normalizeClass([\"input-field\", [{\n \"input-field--disabled\": __props.disabled,\n \"input-field--error\": __props.error,\n \"input-field--label-outside\": __props.labelOutside || !isValidLabel.value,\n \"input-field--leading-icon\": !!_ctx.$slots.icon,\n \"input-field--trailing-icon\": hasTrailingIcon.value,\n \"input-field--pill\": __props.pill,\n \"input-field--success\": __props.success,\n \"input-field--legacy\": unref(isLegacy)\n }, _ctx.$props.class]])\n }, [\n createElementVNode(\"div\", _hoisted_1, [\n createElementVNode(\"input\", mergeProps(_ctx.$attrs, {\n id: __props.id,\n ref: \"input\",\n \"aria-describedby\": ariaDescribedby.value,\n \"aria-live\": \"polite\",\n class: [\"input-field__input\", __props.inputClass],\n disabled: __props.disabled,\n placeholder: internalPlaceholder.value,\n type: __props.type,\n value: modelValue.value.toString(),\n onInput: handleInput\n }), null, 16, _hoisted_2),\n !__props.labelOutside && isValidLabel.value ? (openBlock(), createElementBlock(\"label\", {\n key: 0,\n class: \"input-field__label\",\n for: __props.id\n }, toDisplayString(__props.label), 9, _hoisted_3)) : createCommentVNode(\"\", true),\n withDirectives(createElementVNode(\"div\", _hoisted_4, [\n renderSlot(_ctx.$slots, \"icon\", {}, void 0, true)\n ], 512), [\n [vShow, !!_ctx.$slots.icon]\n ]),\n __props.showTrailingButton ? (openBlock(), createBlock(NcButton, {\n key: 1,\n class: \"input-field__trailing-button\",\n \"aria-label\": __props.trailingButtonLabel,\n disabled: __props.disabled,\n variant: \"tertiary-no-background\",\n onClick: _cache[0] || (_cache[0] = ($event) => emit(\"trailingButtonClick\", $event))\n }, {\n icon: withCtx(() => [\n renderSlot(_ctx.$slots, \"trailing-button-icon\", {}, void 0, true)\n ]),\n _: 3\n }, 8, [\"aria-label\", \"disabled\"])) : __props.success || __props.error ? (openBlock(), createElementBlock(\"div\", _hoisted_5, [\n __props.success ? (openBlock(), createBlock(NcIconSvgWrapper, {\n key: 0,\n path: unref(mdiCheck)\n }, null, 8, [\"path\"])) : (openBlock(), createBlock(NcIconSvgWrapper, {\n key: 1,\n path: unref(mdiAlertCircleOutline)\n }, null, 8, [\"path\"]))\n ])) : createCommentVNode(\"\", true)\n ]),\n __props.helperText ? (openBlock(), createElementBlock(\"p\", {\n key: 0,\n id: `${__props.id}-helper-text`,\n class: \"input-field__helper-text-message\"\n }, [\n __props.success ? (openBlock(), createBlock(NcIconSvgWrapper, {\n key: 0,\n class: \"input-field__helper-text-message__icon\",\n path: unref(mdiCheck),\n inline: \"\"\n }, null, 8, [\"path\"])) : __props.error ? (openBlock(), createBlock(NcIconSvgWrapper, {\n key: 1,\n class: \"input-field__helper-text-message__icon\",\n path: unref(mdiAlertCircleOutline),\n inline: \"\"\n }, null, 8, [\"path\"])) : createCommentVNode(\"\", true),\n createTextVNode(\" \" + toDisplayString(__props.helperText), 1)\n ], 8, _hoisted_6)) : createCommentVNode(\"\", true)\n ], 2);\n };\n }\n});\nconst NcInputField = /* @__PURE__ */ _export_sfc(_sfc_main, [[\"__scopeId\", \"data-v-8e16cbb5\"]]);\nexport {\n NcInputField as N\n};\n//# sourceMappingURL=NcInputField-5Sg6EUP6.mjs.map\n"],"names":["_hoisted_1","_hoisted_2","_hoisted_3","_hoisted_4","_hoisted_5","_hoisted_6","_sfc_main","defineComponent","mergeModels","createElementId","__props","__expose","__emit","modelValue","useModel","props","emit","focus","select","attrs","useAttrs","inputElement","useTemplateRef","hasTrailingIcon","computed","internalPlaceholder","isLegacy","isValidLabel","ariaDescribedby","ariaDescribedby2","options","handleInput","event","target","_ctx","_cache","openBlock","createElementBlock","normalizeClass","unref","createElementVNode","mergeProps","toDisplayString","createCommentVNode","withDirectives","renderSlot","vShow","createBlock","NcButton","$event","withCtx","NcIconSvgWrapper","mdiCheck","mdiAlertCircleOutline","createTextVNode","NcInputField","_export_sfc"],"mappings":"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","x_google_ignoreList":[0]} \ No newline at end of file diff --git a/dist/NcInputField-5Sg6EUP6-DXw-ZWiv.chunk.mjs.map.license b/dist/NcInputField-5Sg6EUP6-CUyzAC2j.chunk.mjs.map.license similarity index 100% rename from dist/NcInputField-5Sg6EUP6-DXw-ZWiv.chunk.mjs.map.license rename to dist/NcInputField-5Sg6EUP6-CUyzAC2j.chunk.mjs.map.license diff --git a/dist/NcModal-DiDvgcU8-7_SNLMd-.chunk.mjs b/dist/NcModal-DiDvgcU8-Cb_C64qI.chunk.mjs similarity index 99% rename from dist/NcModal-DiDvgcU8-7_SNLMd-.chunk.mjs rename to dist/NcModal-DiDvgcU8-Cb_C64qI.chunk.mjs index e0be4620b9d81..cf48f60c2abd1 100644 --- a/dist/NcModal-DiDvgcU8-7_SNLMd-.chunk.mjs +++ b/dist/NcModal-DiDvgcU8-Cb_C64qI.chunk.mjs @@ -1,4 +1,4 @@ -import{z as le,S as Ht,D as jt,a1 as On,a2 as wo,ab as ht,Z as bo,ap as To,a8 as B,ah as J,Y as Rn,X as Mn,V as So,v as z,E as ft,P as Jt,u as M,l as Pe,a9 as Wt,ai as et,b as Ce,aq as xo,ar as _o,o as j,c as _e,r as ze,w as V,i as we,k as G,m as mt,as as Ao,f as ce,g as q,F as Gt,h as me,O as _t,a6 as $o,y as tt,G as Pt,M as Ct,at as ko,au as No,t as Bn,ac as Y,a7 as Eo,n as Po,p as Co,x as Do,J as Ke,T as De,L as Oo,K as Ue,ae as Ro,s as Qt,a5 as Mo}from"./Web-DYqXJUev.chunk.mjs";import{l as Bo,N as xe,w as Fo,x as Io,b as en,y as Lo,n as zo}from"./logger-D3RVzcfQ-Bt9JRPzn.chunk.mjs";import{_ as gt,r as Vt,A as Ho,b as X,c as Fn,B as jo,C as Wo,y as Go,N as Oe}from"./createElementId-DhjFt1I9-BmyhoOWk.chunk.mjs";import{b as vt,g as At,i as Vo}from"./translation-DoG5ZELJ-WOan4U8V.chunk.mjs";function As(){if(typeof globalThis.firstDay<"u")return globalThis.firstDay;const e=new Intl.Locale(vt()),t=e.getWeekInfo?.()??e.weekInfo;return t?t.firstDay%7:1}function $s(){if(typeof globalThis.dayNames<"u")return globalThis.dayNames;const e=vt();return[new Date(1970,0,4).toLocaleDateString(e,{weekday:"long"}),new Date(1970,0,5).toLocaleDateString(e,{weekday:"long"}),new Date(1970,0,6).toLocaleDateString(e,{weekday:"long"}),new Date(1970,0,7).toLocaleDateString(e,{weekday:"long"}),new Date(1970,0,8).toLocaleDateString(e,{weekday:"long"}),new Date(1970,0,9).toLocaleDateString(e,{weekday:"long"}),new Date(1970,0,10).toLocaleDateString(e,{weekday:"long"})]}function ks(){if(typeof globalThis.dayNamesMin<"u")return globalThis.dayNamesMin;const e=vt();return[new Date(1970,0,4).toLocaleDateString(e,{weekday:"narrow"}),new Date(1970,0,5).toLocaleDateString(e,{weekday:"narrow"}),new Date(1970,0,6).toLocaleDateString(e,{weekday:"narrow"}),new Date(1970,0,7).toLocaleDateString(e,{weekday:"narrow"}),new Date(1970,0,8).toLocaleDateString(e,{weekday:"narrow"}),new Date(1970,0,9).toLocaleDateString(e,{weekday:"narrow"}),new Date(1970,0,10).toLocaleDateString(e,{weekday:"narrow"})]}function qo(e=Date.now(),t={}){const n={ignoreSeconds:!1,language:At(),relativeTime:"long",...t},o=new Date(e),r=new Intl.RelativeTimeFormat([n.language,At()],{numeric:"auto",style:n.relativeTime}),i=(o.getTime()-Date.now())/1e3;if(Math.abs(i)<59.5)return n.ignoreSeconds||r.format(Math.round(i),"second");const s=i/60;if(Math.abs(s)<=59)return r.format(Math.round(s),"minute");const a=s/60;if(Math.abs(a)<23.5)return r.format(Math.round(a),"hour");const l=a/24;if(Math.abs(l)<6.5)return r.format(Math.round(l),"day");if(Math.abs(l)<27.5){const c=l/7;return r.format(Math.round(c),"week")}const u=l/30,d=Math.abs(u)<11?{month:n.relativeTime,day:"numeric"}:{year:n.relativeTime==="narrow"?"2-digit":"numeric",month:n.relativeTime};return new Intl.DateTimeFormat([n.language,At()],d).format(o)}function Ns(e={}){function t(s){return typeof s=="function"}const n=t(e)?{mounted:e,updated:e}:e,{mounted:o,unmounted:r}=n;if(!t(o))return e;const i=new WeakMap;return{...n,mounted(s,a,l,u){var d;const c=(d=i.get(s))!==null&&d!==void 0?d:Rn();i.set(s,c),c.run(()=>{o?.(s,a,l,u)})},unmounted(s,a,l,u){var d;(d=i.get(s))===null||d===void 0||d.stop(),i.delete(s),t(r)&&r(s,a,l,u)}}}function Ae(e,t){return On()?(wo(e,t),!0):!1}const $t=new WeakMap,Ko=(...e)=>{var t;const n=e[0],o=(t=ht())===null||t===void 0?void 0:t.proxy,r=o??On();if(r==null&&!Mn())throw new Error("injectLocal must be called in setup");return r&&$t.has(r)&&n in $t.get(r)?$t.get(r)[n]:So(...e)},He=typeof window<"u"&&typeof document<"u";typeof WorkerGlobalScope<"u"&&globalThis instanceof WorkerGlobalScope;const In=e=>e!=null,Uo=Object.prototype.toString,Yo=e=>Uo.call(e)==="[object Object]",oe=()=>{};function Ln(e,t){function n(...o){return new Promise((r,i)=>{Promise.resolve(e(()=>t.apply(this,o),{fn:t,thisArg:this,args:o})).then(r).catch(i)})}return n}const Xo=e=>e();function zn(e,t={}){let n,o,r=oe;const i=a=>{clearTimeout(a),r(),r=oe};let s;return a=>{const l=B(e),u=B(t.maxWait);return n&&i(n),l<=0||u!==void 0&&u<=0?(o&&(i(o),o=void 0),Promise.resolve(a())):new Promise((d,c)=>{r=t.rejectOnCancel?c:d,s=a,u&&!o&&(o=setTimeout(()=>{n&&i(n),o=void 0,d(s())},u)),n=setTimeout(()=>{o&&i(o),o=void 0,d(a())},l)})}}function tn(e){return e.endsWith("rem")?Number.parseFloat(e)*16:Number.parseFloat(e)}function Ne(e){return Array.isArray(e)?e:[e]}function Zo(e){return ht()}function Es(e){if(!He)return e;let t=0,n,o;const r=()=>{t-=1,o&&t<=0&&(o.stop(),n=void 0,o=void 0)};return((...i)=>(t+=1,o||(o=Rn(!0),n=o.run(()=>e(...i))),Ae(r),n))}function Ps(e,t=200,n={}){return Ln(zn(t,n),e)}function Jo(e,t,n={}){const{eventFilter:o=Xo,...r}=n;return le(e,Ln(o,t),r)}function Qo(e,t=!0,n){Zo()?Ht(e,n):t?e():jt(e)}function ei(e,t=1e3,n={}){const{immediate:o=!0,immediateCallback:r=!1}=n;let i=null;const s=J(!1);function a(){i&&(clearInterval(i),i=null)}function l(){s.value=!1,a()}function u(){const d=B(t);d<=0||(s.value=!0,r&&e(),a(),s.value&&(i=setInterval(e,d)))}return o&&He&&u(),(bo(t)||typeof t=="function")&&Ae(le(t,()=>{s.value&&He&&u()})),Ae(l),{isActive:To(s),pause:l,resume:u}}function Cs(e,t,n={}){const{debounce:o=0,maxWait:r=void 0,...i}=n;return Jo(e,t,{...i,eventFilter:zn(o,{maxWait:r})})}function ti(e,t,n){return le(e,t,{...n,immediate:!0})}function ni(e,t,n){return le(e,t,{...n,once:!0})}const ee=He?window:void 0,Ds=He?window.document:void 0;function H(e){var t;const n=B(e);return(t=n?.$el)!==null&&t!==void 0?t:n}function Q(...e){const t=(o,r,i,s)=>(o.addEventListener(r,i,s),()=>o.removeEventListener(r,i,s)),n=z(()=>{const o=Ne(B(e[0])).filter(r=>r!=null);return o.every(r=>typeof r!="string")?o:void 0});return ti(()=>{var o,r;return[(o=(r=n.value)===null||r===void 0?void 0:r.map(i=>H(i)))!==null&&o!==void 0?o:[ee].filter(i=>i!=null),Ne(B(n.value?e[1]:e[0])),Ne(M(n.value?e[2]:e[1])),B(n.value?e[3]:e[2])]},([o,r,i,s],a,l)=>{if(!o?.length||!r?.length||!i?.length)return;const u=Yo(s)?{...s}:s,d=o.flatMap(c=>r.flatMap(m=>i.map(p=>t(c,m,p,u))));l(()=>{d.forEach(c=>c())})},{flush:"post"})}function Os(e,t,n={}){const{window:o=ee,ignore:r=[],capture:i=!0,detectIframe:s=!1,controls:a=!1}=n;if(!o)return a?{stop:oe,cancel:oe,trigger:oe}:oe;let l=!0;const u=v=>B(r).some(w=>{if(typeof w=="string")return Array.from(o.document.querySelectorAll(w)).some(b=>b===v.target||v.composedPath().includes(b));{const b=H(w);return b&&(v.target===b||v.composedPath().includes(b))}});function d(v){const w=B(v);return w&&w.$.subTree.shapeFlag===16}function c(v,w){const b=B(v),_=b.$.subTree&&b.$.subTree.children;return _==null||!Array.isArray(_)?!1:_.some(P=>P.el===w.target||w.composedPath().includes(P.el))}const m=v=>{const w=H(e);if(v.target!=null&&!(!(w instanceof Element)&&d(e)&&c(e,v))&&!(!w||w===v.target||v.composedPath().includes(w))){if("detail"in v&&v.detail===0&&(l=!u(v)),!l){l=!0;return}t(v)}};let p=!1;const g=[Q(o,"click",v=>{p||(p=!0,setTimeout(()=>{p=!1},0),m(v))},{passive:!0,capture:i}),Q(o,"pointerdown",v=>{const w=H(e);l=!u(v)&&!!(w&&!v.composedPath().includes(w))},{passive:!0}),s&&Q(o,"blur",v=>{setTimeout(()=>{const w=H(e);let b=o.document.activeElement;for(;b?.shadowRoot;)b=b.shadowRoot.activeElement;b?.tagName==="IFRAME"&&!w?.contains(o.document.activeElement)&&t(v)},0)},{passive:!0})].filter(Boolean),y=()=>g.forEach(v=>v());return a?{stop:y,cancel:()=>{l=!1},trigger:v=>{l=!0,m(v),l=!1}}:y}function oi(){const e=J(!1),t=ht();return t&&Ht(()=>{e.value=!0},t),e}function yt(e){const t=oi();return z(()=>(t.value,!!e()))}function ii(e,t,n={}){const{window:o=ee,...r}=n;let i;const s=yt(()=>o&&"MutationObserver"in o),a=()=>{i&&(i.disconnect(),i=void 0)},l=le(z(()=>{const c=Ne(B(e)).map(H).filter(In);return new Set(c)}),c=>{a(),s.value&&c.size&&(i=new MutationObserver(t),c.forEach(m=>i.observe(m,r)))},{immediate:!0,flush:"post"}),u=()=>i?.takeRecords(),d=()=>{l(),a()};return Ae(d),{isSupported:s,stop:d,takeRecords:u}}function ri(e,t,n={}){const{window:o=ee,document:r=o?.document,flush:i="sync"}=n;if(!o||!r)return oe;let s;const a=d=>{s?.(),s=d},l=ft(()=>{const d=H(e);if(d){const{stop:c}=ii(r,m=>{m.map(p=>[...p.removedNodes]).flat().some(p=>p===d||p.contains(d))&&t(m)},{window:o,childList:!0,subtree:!0});a(c)}},{flush:i}),u=()=>{l(),a()};return Ae(u),u}function si(e){return typeof e=="function"?e:typeof e=="string"?t=>t.key===e:Array.isArray(e)?t=>e.includes(t.key):()=>!0}function nn(...e){let t,n,o={};e.length===3?(t=e[0],n=e[1],o=e[2]):e.length===2?typeof e[1]=="object"?(t=!0,n=e[0],o=e[1]):(t=e[0],n=e[1]):(t=!0,n=e[0]);const{target:r=ee,eventName:i="keydown",passive:s=!1,dedupe:a=!1}=o,l=si(t);return Q(r,i,u=>{u.repeat&&B(a)||l(u)&&n(u)},s)}function ai(e={}){var t;const{window:n=ee,deep:o=!0,triggerOnRemoval:r=!1}=e,i=(t=e.document)!==null&&t!==void 0?t:n?.document,s=()=>{let u=i?.activeElement;if(o)for(var d;u?.shadowRoot;)u=u==null||(d=u.shadowRoot)===null||d===void 0?void 0:d.activeElement;return u},a=J(),l=()=>{a.value=s()};if(n){const u={capture:!0,passive:!0};Q(n,"blur",d=>{d.relatedTarget===null&&l()},u),Q(n,"focus",l,u)}return r&&ri(a,l,{document:i}),l(),a}const li=Symbol("vueuse-ssr-width");function ui(){const e=Mn()?Ko(li,null):null;return typeof e=="number"?e:void 0}function ci(e,t={}){const{window:n=ee,ssrWidth:o=ui()}=t,r=yt(()=>n&&"matchMedia"in n&&typeof n.matchMedia=="function"),i=J(typeof o=="number"),s=J(),a=J(!1),l=u=>{a.value=u.matches};return ft(()=>{if(i.value){i.value=!r.value,a.value=B(e).split(",").some(u=>{const d=u.includes("not all"),c=u.match(/\(\s*min-width:\s*(-?\d+(?:\.\d*)?[a-z]+\s*)\)/),m=u.match(/\(\s*max-width:\s*(-?\d+(?:\.\d*)?[a-z]+\s*)\)/);let p=!!(c||m);return c&&p&&(p=o>=tn(c[1])),m&&p&&(p=o<=tn(m[1])),d?!p:p});return}r.value&&(s.value=n.matchMedia(B(e)),a.value=s.value.matches)}),Q(s,"change",l,{passive:!0}),z(()=>a.value)}function Rs(e){return ci("(prefers-color-scheme: dark)",e)}function di(e,t,n={}){const{window:o=ee,...r}=n;let i;const s=yt(()=>o&&"ResizeObserver"in o),a=()=>{i&&(i.disconnect(),i=void 0)},l=le(z(()=>{const d=B(e);return Array.isArray(d)?d.map(c=>H(c)):[H(d)]}),d=>{if(a(),s.value&&o){i=new ResizeObserver(t);for(const c of d)c&&i.observe(c,r)}},{immediate:!0,flush:"post"}),u=()=>{a(),l()};return Ae(u),{isSupported:s,stop:u}}function Ms(e,t={width:0,height:0},n={}){const{window:o=ee,box:r="content-box"}=n,i=z(()=>{var c;return(c=H(e))===null||c===void 0||(c=c.namespaceURI)===null||c===void 0?void 0:c.includes("svg")}),s=J(t.width),a=J(t.height),{stop:l}=di(e,([c])=>{const m=r==="border-box"?c.borderBoxSize:r==="content-box"?c.contentBoxSize:c.devicePixelContentBoxSize;if(o&&i.value){const p=H(e);if(p){const g=p.getBoundingClientRect();s.value=g.width,a.value=g.height}}else if(m){const p=Ne(m);s.value=p.reduce((g,{inlineSize:y})=>g+y,0),a.value=p.reduce((g,{blockSize:y})=>g+y,0)}else s.value=c.contentRect.width,a.value=c.contentRect.height},n);Qo(()=>{const c=H(e);c&&(s.value="offsetWidth"in c?c.offsetWidth:t.width,a.value="offsetHeight"in c?c.offsetHeight:t.height)});const u=le(()=>H(e),c=>{s.value=c?t.width:0,a.value=c?t.height:0});function d(){l(),u()}return{width:s,height:a,stop:d}}function pi(e,t,n={}){const{root:o,rootMargin:r,threshold:i=0,window:s=ee,immediate:a=!0}=n,l=yt(()=>s&&"IntersectionObserver"in s),u=z(()=>Ne(B(e)).map(H).filter(In));let d=oe;const c=J(a),m=l.value?le(()=>[u.value,H(o),B(r),c.value],([g,y,v])=>{if(d(),!c.value||!g.length)return;const w=new IntersectionObserver(t,{root:H(y),rootMargin:v,threshold:i});g.forEach(b=>b&&w.observe(b)),d=()=>{w.disconnect(),d=oe}},{immediate:a,flush:"post"}):oe,p=()=>{d(),m(),c.value=!1};return Ae(p),{isSupported:l,isActive:c,pause(){d(),c.value=!1},resume(){c.value=!0},stop:p}}function Bs(e,t={}){const{window:n=ee,scrollTarget:o,threshold:r=0,rootMargin:i,once:s=!1,initialValue:a=!1}=t,l=J(a),u=pi(e,d=>{let c=l.value,m=0;for(const p of d)p.time>=m&&(m=p.time,c=p.isIntersecting);l.value=c,s&&ni(l,()=>{u.stop()})},{root:o,window:n,threshold:r,rootMargin:i});return t.controls?{...u,isVisible:l}:l}const hi="focusin",fi="focusout",mi=":focus-within";function Fs(e,t={}){const{window:n=ee}=t,o=z(()=>H(e)),r=J(!1),i=z(()=>r.value);if(!n||!ai(t).value)return{focused:i};const s={passive:!0};return Q(o,hi,()=>r.value=!0,s),Q(o,fi,()=>{var a,l,u;return r.value=(a=(l=o.value)===null||l===void 0||(u=l.matches)===null||u===void 0?void 0:u.call(l,mi))!==null&&a!==void 0?a:!1},s),{focused:i}}function gi(e,t={}){const{threshold:n=50,onSwipe:o,onSwipeEnd:r,onSwipeStart:i,passive:s=!0}=t,a=Jt({x:0,y:0}),l=Jt({x:0,y:0}),u=z(()=>a.x-l.x),d=z(()=>a.y-l.y),{max:c,abs:m}=Math,p=z(()=>c(m(u.value),m(d.value))>=n),g=J(!1),y=z(()=>p.value?m(u.value)>m(d.value)?u.value>0?"left":"right":d.value>0?"up":"down":"none"),v=S=>[S.touches[0].clientX,S.touches[0].clientY],w=(S,O)=>{a.x=S,a.y=O},b=(S,O)=>{l.x=S,l.y=O},_={passive:s,capture:!s},P=S=>{g.value&&r?.(S,y.value),g.value=!1},R=[Q(e,"touchstart",S=>{if(S.touches.length!==1)return;const[O,F]=v(S);w(O,F),b(O,F),i?.(S)},_),Q(e,"touchmove",S=>{if(S.touches.length!==1)return;const[O,F]=v(S);b(O,F),_.capture&&!_.passive&&Math.abs(u.value)>Math.abs(d.value)&&S.preventDefault(),!g.value&&p.value&&(g.value=!0),g.value&&o?.(S)},_),Q(e,["touchend","touchcancel"],P,_)];return{isSwiping:g,direction:y,coordsStart:a,coordsEnd:l,lengthX:u,lengthY:d,stop:()=>R.forEach(S=>S())}}const qt=1024,Hn=qt/2,nt=e=>document.documentElement.clientWidth<e,jn=Pe(nt(qt)),Wn=Pe(nt(Hn));window.addEventListener("resize",()=>{jn.value=nt(qt),Wn.value=nt(Hn)},{passive:!0});function Is(){return Wt(jn)}function Ls(){return Wt(Wn)}const ot=Vo(),vi=Symbol.for("NcActions:isSemanticMenu"),yi=Symbol.for("NcActions:closeMenu");function je(){return window._nc_focus_trap??=[],window._nc_focus_trap}function wi(){let e=[];return{pause(){e=[...je()];for(const t of e)t.pause()},unpause(){if(e.length===je().length)for(const t of e)t.unpause();e=[]}}}function bi(e,t={}){const n=wi();le(e,()=>{B(t.disabled)||(B(e)?n.pause():n.unpause())}),et(()=>{n.unpause()})}const Ti=["top","right","bottom","left"],on=["start","end"],rn=Ti.reduce((e,t)=>e.concat(t,t+"-"+on[0],t+"-"+on[1]),[]),We=Math.min,Dt=Math.max,zs=Math.round,Hs=Math.floor,js=e=>({x:e,y:e}),Si={left:"right",right:"left",bottom:"top",top:"bottom"};function Gn(e,t,n){return Dt(e,We(t,n))}function de(e,t){return typeof e=="function"?e(t):e}function ae(e){return e.split("-")[0]}function ne(e){return e.split("-")[1]}function Kt(e){return e==="x"?"y":"x"}function Ut(e){return e==="y"?"height":"width"}function ie(e){const t=e[0];return t==="t"||t==="b"?"y":"x"}function Yt(e){return Kt(ie(e))}function Vn(e,t,n){n===void 0&&(n=!1);const o=ne(e),r=Yt(e),i=Ut(r);let s=r==="x"?o===(n?"end":"start")?"right":"left":o==="start"?"bottom":"top";return t.reference[i]>t.floating[i]&&(s=rt(s)),[s,rt(s)]}function xi(e){const t=rt(e);return[it(e),t,it(t)]}function it(e){return e.includes("start")?e.replace("start","end"):e.replace("end","start")}const sn=["left","right"],an=["right","left"],_i=["top","bottom"],Ai=["bottom","top"];function $i(e,t,n){switch(e){case"top":case"bottom":return n?t?an:sn:t?sn:an;case"left":case"right":return t?_i:Ai;default:return[]}}function ki(e,t,n,o){const r=ne(e);let i=$i(ae(e),n==="start",o);return r&&(i=i.map(s=>s+"-"+r),t&&(i=i.concat(i.map(it)))),i}function rt(e){const t=ae(e);return Si[t]+e.slice(t.length)}function Ni(e){var t,n,o,r;return{top:(t=e.top)!=null?t:0,right:(n=e.right)!=null?n:0,bottom:(o=e.bottom)!=null?o:0,left:(r=e.left)!=null?r:0}}function qn(e){return typeof e!="number"?Ni(e):{top:e,right:e,bottom:e,left:e}}function Me(e){const{x:t,y:n,width:o,height:r}=e;return{width:o,height:r,top:n,left:t,right:t+o,bottom:n+r,x:t,y:n}}function ln(e,t,n){let{reference:o,floating:r}=e;const i=ie(t),s=Yt(t),a=Ut(s),l=ae(t),u=i==="y",d=o.x+o.width/2-r.width/2,c=o.y+o.height/2-r.height/2,m=o[a]/2-r[a]/2;let p;switch(l){case"top":p={x:d,y:o.y-r.height};break;case"bottom":p={x:d,y:o.y+o.height};break;case"right":p={x:o.x+o.width,y:c};break;case"left":p={x:o.x-r.width,y:c};break;default:p={x:o.x,y:o.y}}const g=ne(t);return g&&(p[s]+=m*(g==="end"?1:-1)*(n&&u?-1:1)),p}async function Ei(e,t){var n;t===void 0&&(t={});const{x:o,y:r,platform:i,rects:s,elements:a,strategy:l}=e,{boundary:u="clippingAncestors",rootBoundary:d="viewport",elementContext:c="floating",altBoundary:m=!1,padding:p=0}=de(t,e),g=qn(p),y=a[m?c==="floating"?"reference":"floating":c],v=Me(await i.getClippingRect({element:(n=await(i.isElement==null?void 0:i.isElement(y)))==null||n?y:y.contextElement||await(i.getDocumentElement==null?void 0:i.getDocumentElement(a.floating)),boundary:u,rootBoundary:d,strategy:l})),w=c==="floating"?{x:o,y:r,width:s.floating.width,height:s.floating.height}:s.reference,b=await(i.getOffsetParent==null?void 0:i.getOffsetParent(a.floating)),_=await(i.isElement==null?void 0:i.isElement(b))&&await(i.getScale==null?void 0:i.getScale(b))||{x:1,y:1},P=Me(i.convertOffsetParentRelativeRectToViewportRelativeRect?await i.convertOffsetParentRelativeRectToViewportRelativeRect({elements:a,rect:w,offsetParent:b,strategy:l}):w);return{top:(v.top-P.top+g.top)/_.y,bottom:(P.bottom-v.bottom+g.bottom)/_.y,left:(v.left-P.left+g.left)/_.x,right:(P.right-v.right+g.right)/_.x}}const Pi=50,Ci=async(e,t,n)=>{const{placement:o="bottom",strategy:r="absolute",middleware:i=[],platform:s}=n,a=s.detectOverflow?s:{...s,detectOverflow:Ei},l=await(s.isRTL==null?void 0:s.isRTL(t));let u=await s.getElementRects({reference:e,floating:t,strategy:r}),{x:d,y:c}=ln(u,o,l),m=o,p=0;const g={};for(let y=0;y<i.length;y++){const v=i[y];if(!v)continue;const{name:w,fn:b}=v,{x:_,y:P,data:R,reset:S}=await b({x:d,y:c,initialPlacement:o,placement:m,strategy:r,middlewareData:g,rects:u,platform:a,elements:{reference:e,floating:t}});d=_??d,c=P??c,g[w]={...g[w],...R},S&&p<Pi&&(p++,typeof S=="object"&&(S.placement&&(m=S.placement),S.rects&&(u=S.rects===!0?await s.getElementRects({reference:e,floating:t,strategy:r}):S.rects),{x:d,y:c}=ln(u,m,l)),y=-1)}return{x:d,y:c,placement:m,strategy:r,middlewareData:g}},Di=e=>({name:"arrow",options:e,async fn(t){const{x:n,y:o,placement:r,rects:i,platform:s,elements:a,middlewareData:l}=t,{element:u,padding:d=0}=de(e,t)||{};if(u==null)return{};const c=qn(d),m={x:n,y:o},p=Yt(r),g=Ut(p),y=await s.getDimensions(u),v=p==="y",w=v?"top":"left",b=v?"bottom":"right",_=v?"clientHeight":"clientWidth",P=i.reference[g]+i.reference[p]-m[p]-i.floating[g],R=m[p]-i.reference[p],S=await(s.getOffsetParent==null?void 0:s.getOffsetParent(u));let O=S?S[_]:0;(!O||!await(s.isElement==null?void 0:s.isElement(S)))&&(O=a.floating[_]||i.floating[g]);const F=P/2-R/2,I=O/2-y[g]/2-1,A=We(c[w],I),L=We(c[b],I),h=O-y[g]-L,f=O/2-y[g]/2+F,T=Gn(A,f,h),E=!l.arrow&&ne(r)!=null&&f!==T&&i.reference[g]/2-(f<A?A:L)-y[g]/2<0,$=E?f<A?f-A:f-h:0;return{[p]:m[p]+$,data:{[p]:T,centerOffset:f-T-$,...E&&{alignmentOffset:$}},reset:E}}});function Oi(e,t,n){return(e?[...n.filter(o=>ne(o)===e),...n.filter(o=>ne(o)!==e)]:n.filter(o=>ae(o)===o)).filter(o=>e?ne(o)===e||(t?it(o)!==o:!1):!0)}const Ri=function(e){return e===void 0&&(e={}),{name:"autoPlacement",options:e,async fn(t){var n,o,r;const{rects:i,middlewareData:s,placement:a,platform:l,elements:u}=t,{crossAxis:d=!1,alignment:c,allowedPlacements:m=rn,autoAlignment:p=!0,...g}=de(e,t),y=c!==void 0||m===rn?Oi(c||null,p,m):m,v=((n=s.autoPlacement)==null?void 0:n.index)||0,w=y[v];if(w==null)return{};if(a!==w)return{reset:{placement:y[0]}};const b=await l.detectOverflow(t,g),_=Vn(w,i,await(l.isRTL==null?void 0:l.isRTL(u.floating))),P=[b[ae(w)],b[_[0]],b[_[1]]],R=[...((o=s.autoPlacement)==null?void 0:o.overflows)||[],{placement:w,overflows:P}],S=y[v+1];if(S)return{data:{index:v+1,overflows:R},reset:{placement:S}};const O=R.map(I=>{const A=ne(I.placement);return[I.placement,A&&d?I.overflows.slice(0,2).reduce((L,h)=>L+h,0):I.overflows[0],I.overflows]}).sort((I,A)=>I[1]-A[1]),F=((r=O.filter(I=>I[2].slice(0,ne(I[0])?2:3).every(A=>A<=0))[0])==null?void 0:r[0])||O[0][0];return F!==a?{data:{index:v+1,overflows:R},reset:{placement:F}}:{}}}},Mi=function(e){return e===void 0&&(e={}),{name:"flip",options:e,async fn(t){var n,o;const{placement:r,middlewareData:i,rects:s,initialPlacement:a,platform:l,elements:u}=t,{mainAxis:d=!0,crossAxis:c=!0,fallbackPlacements:m,fallbackStrategy:p="bestFit",fallbackAxisSideDirection:g="none",flipAlignment:y=!0,...v}=de(e,t);if((n=i.arrow)!=null&&n.alignmentOffset)return{};const w=ae(r),b=ie(a),_=ae(a)===a,P=await(l.isRTL==null?void 0:l.isRTL(u.floating)),R=m||(_||!y?[rt(a)]:xi(a)),S=g!=="none";!m&&S&&R.push(...ki(a,y,g,P));const O=[a,...R],F=await l.detectOverflow(t,v),I=[];let A=((o=i.flip)==null?void 0:o.overflows)||[];if(d&&I.push(F[w]),c){const T=Vn(r,s,P);I.push(F[T[0]],F[T[1]])}if(A=[...A,{placement:r,overflows:I}],!I.every(T=>T<=0)){var L,h;const T=(((L=i.flip)==null?void 0:L.index)||0)+1,E=O[T];if(E&&(!(c==="alignment"&&b!==ie(E))||A.every(C=>ie(C.placement)===b?C.overflows[0]>0:!0)))return{data:{index:T,overflows:A},reset:{placement:E}};let $=(h=A.filter(C=>C.overflows[0]<=0).sort((C,x)=>C.overflows[1]-x.overflows[1])[0])==null?void 0:h.placement;if(!$)switch(p){case"bestFit":{var f;const C=(f=A.filter(x=>{if(S){const k=ie(x.placement);return k===b||k==="y"}return!0}).map(x=>[x.placement,x.overflows.filter(k=>k>0).reduce((k,N)=>k+N,0)]).sort((x,k)=>x[1]-k[1])[0])==null?void 0:f[0];C&&($=C);break}case"initialPlacement":$=a;break}if(r!==$)return{reset:{placement:$}}}return{}}}},Kn=new Set(["left","top"]);async function Bi(e,t){const{placement:n,platform:o,elements:r}=e,i=await(o.isRTL==null?void 0:o.isRTL(r.floating)),s=ae(n),a=ne(n),l=ie(n)==="y",u=Kn.has(s)?-1:1,d=i&&l?-1:1,c=de(t,e);let{mainAxis:m,crossAxis:p,alignmentAxis:g}=typeof c=="number"?{mainAxis:c,crossAxis:0,alignmentAxis:null}:{mainAxis:c.mainAxis||0,crossAxis:c.crossAxis||0,alignmentAxis:c.alignmentAxis};return a&&typeof g=="number"&&(p=a==="end"?g*-1:g),l?{x:p*d,y:m*u}:{x:m*u,y:p*d}}const Fi=function(e){return e===void 0&&(e=0),{name:"offset",options:e,async fn(t){var n,o;const{x:r,y:i,placement:s,middlewareData:a}=t,l=await Bi(t,e);return s===((n=a.offset)==null?void 0:n.placement)&&(o=a.arrow)!=null&&o.alignmentOffset?{}:{x:r+l.x,y:i+l.y,data:{...l,placement:s}}}}},Ii=function(e){return e===void 0&&(e={}),{name:"shift",options:e,async fn(t){const{x:n,y:o,placement:r,platform:i}=t,{mainAxis:s=!0,crossAxis:a=!1,limiter:l={fn:b=>{let{x:_,y:P}=b;return{x:_,y:P}}},...u}=de(e,t),d={x:n,y:o},c=await i.detectOverflow(t,u),m=ie(r),p=Kt(m);let g=d[p],y=d[m];const v=(b,_)=>Gn(_+c[b==="y"?"top":"left"],_,_-c[b==="y"?"bottom":"right"]);s&&(g=v(p,g)),a&&(y=v(m,y));const w=l.fn({...t,[p]:g,[m]:y});return{...w,data:{x:w.x-n,y:w.y-o,enabled:{[p]:s,[m]:a}}}}}},Ws=function(e){return e===void 0&&(e={}),{options:e,fn(t){var n,o;const{x:r,y:i,placement:s,rects:a,middlewareData:l}=t,{offset:u=0,mainAxis:d=!0,crossAxis:c=!0}=de(e,t),m={x:r,y:i},p=ie(s),g=Kt(p);let y=m[g],v=m[p];const w=de(u,t),b=typeof w=="number"?{mainAxis:w,crossAxis:0}:{mainAxis:(n=w.mainAxis)!=null?n:0,crossAxis:(o=w.crossAxis)!=null?o:0};if(d){const R=g==="y"?"height":"width",S=a.reference[g]-a.floating[R]+b.mainAxis,O=a.reference[g]+a.reference[R]-b.mainAxis;y<S?y=S:y>O&&(y=O)}if(c){var _,P;const R=g==="y"?"width":"height",S=Kn.has(ae(s)),O=a.reference[p]-a.floating[R]+(S&&((_=l.offset)==null?void 0:_[p])||0)+(S?0:b.crossAxis),F=a.reference[p]+a.reference[R]+(S?0:((P=l.offset)==null?void 0:P[p])||0)-(S?b.crossAxis:0);v<O?v=O:v>F&&(v=F)}return{[g]:y,[p]:v}}}},Li=function(e){return e===void 0&&(e={}),{name:"size",options:e,async fn(t){const{placement:n,rects:o,platform:r,elements:i}=t,{apply:s=()=>{},...a}=de(e,t),l=await r.detectOverflow(t,a),u=ae(n),d=ne(n),c=ie(n)==="y",{width:m,height:p}=o.floating;let g,y;u==="top"||u==="bottom"?(g=u,y=d===(await(r.isRTL==null?void 0:r.isRTL(i.floating))?"start":"end")?"left":"right"):(y=u,g=d==="end"?"top":"bottom");const v=p-l.top-l.bottom,w=m-l.left-l.right,b=We(p-l[g],v),_=We(m-l[y],w),P=t.middlewareData.shift,R=!P;let S=b,O=_;P!=null&&P.enabled.x&&(O=w),P!=null&&P.enabled.y&&(S=v),R&&!d&&(c?O=m-2*Dt(l.left,l.right):S=p-2*Dt(l.top,l.bottom)),await s({...t,availableWidth:O,availableHeight:S});const F=await r.getDimensions(i.floating);return m!==F.width||p!==F.height?{reset:{rects:!0}}:{}}}};function Z(e){var t;return((t=e.ownerDocument)==null?void 0:t.defaultView)||window}function re(e){return Z(e).getComputedStyle(e)}const un=Math.min,Be=Math.max,st=Math.round;function Un(e){const t=re(e);let n=parseFloat(t.width),o=parseFloat(t.height);const r=e.offsetWidth,i=e.offsetHeight,s=st(n)!==r||st(o)!==i;return s&&(n=r,o=i),{width:n,height:o,fallback:s}}function be(e){return Xn(e)?(e.nodeName||"").toLowerCase():""}let Ye;function Yn(){if(Ye)return Ye;const e=navigator.userAgentData;return e&&Array.isArray(e.brands)?(Ye=e.brands.map((t=>t.brand+"/"+t.version)).join(" "),Ye):navigator.userAgent}function se(e){return e instanceof Z(e).HTMLElement}function ge(e){return e instanceof Z(e).Element}function Xn(e){return e instanceof Z(e).Node}function cn(e){return typeof ShadowRoot>"u"?!1:e instanceof Z(e).ShadowRoot||e instanceof ShadowRoot}function wt(e){const{overflow:t,overflowX:n,overflowY:o,display:r}=re(e);return/auto|scroll|overlay|hidden|clip/.test(t+o+n)&&!["inline","contents"].includes(r)}function zi(e){return["table","td","th"].includes(be(e))}function Ot(e){const t=/firefox/i.test(Yn()),n=re(e),o=n.backdropFilter||n.WebkitBackdropFilter;return n.transform!=="none"||n.perspective!=="none"||!!o&&o!=="none"||t&&n.willChange==="filter"||t&&!!n.filter&&n.filter!=="none"||["transform","perspective"].some((r=>n.willChange.includes(r)))||["paint","layout","strict","content"].some((r=>{const i=n.contain;return i!=null&&i.includes(r)}))}function Zn(){return!/^((?!chrome|android).)*safari/i.test(Yn())}function Xt(e){return["html","body","#document"].includes(be(e))}function Jn(e){return ge(e)?e:e.contextElement}const Qn={x:1,y:1};function Ee(e){const t=Jn(e);if(!se(t))return Qn;const n=t.getBoundingClientRect(),{width:o,height:r,fallback:i}=Un(t);let s=(i?st(n.width):n.width)/o,a=(i?st(n.height):n.height)/r;return s&&Number.isFinite(s)||(s=1),a&&Number.isFinite(a)||(a=1),{x:s,y:a}}function Ge(e,t,n,o){var r,i;t===void 0&&(t=!1),n===void 0&&(n=!1);const s=e.getBoundingClientRect(),a=Jn(e);let l=Qn;t&&(o?ge(o)&&(l=Ee(o)):l=Ee(e));const u=a?Z(a):window,d=!Zn()&&n;let c=(s.left+(d&&((r=u.visualViewport)==null?void 0:r.offsetLeft)||0))/l.x,m=(s.top+(d&&((i=u.visualViewport)==null?void 0:i.offsetTop)||0))/l.y,p=s.width/l.x,g=s.height/l.y;if(a){const y=Z(a),v=o&&ge(o)?Z(o):o;let w=y.frameElement;for(;w&&o&&v!==y;){const b=Ee(w),_=w.getBoundingClientRect(),P=getComputedStyle(w);_.x+=(w.clientLeft+parseFloat(P.paddingLeft))*b.x,_.y+=(w.clientTop+parseFloat(P.paddingTop))*b.y,c*=b.x,m*=b.y,p*=b.x,g*=b.y,c+=_.x,m+=_.y,w=Z(w).frameElement}}return{width:p,height:g,top:m,right:c+p,bottom:m+g,left:c,x:c,y:m}}function ve(e){return((Xn(e)?e.ownerDocument:e.document)||window.document).documentElement}function bt(e){return ge(e)?{scrollLeft:e.scrollLeft,scrollTop:e.scrollTop}:{scrollLeft:e.pageXOffset,scrollTop:e.pageYOffset}}function eo(e){return Ge(ve(e)).left+bt(e).scrollLeft}function Ve(e){if(be(e)==="html")return e;const t=e.assignedSlot||e.parentNode||cn(e)&&e.host||ve(e);return cn(t)?t.host:t}function to(e){const t=Ve(e);return Xt(t)?t.ownerDocument.body:se(t)&&wt(t)?t:to(t)}function at(e,t){var n;t===void 0&&(t=[]);const o=to(e),r=o===((n=e.ownerDocument)==null?void 0:n.body),i=Z(o);return r?t.concat(i,i.visualViewport||[],wt(o)?o:[]):t.concat(o,at(o))}function dn(e,t,n){return t==="viewport"?Me((function(o,r){const i=Z(o),s=ve(o),a=i.visualViewport;let l=s.clientWidth,u=s.clientHeight,d=0,c=0;if(a){l=a.width,u=a.height;const m=Zn();(m||!m&&r==="fixed")&&(d=a.offsetLeft,c=a.offsetTop)}return{width:l,height:u,x:d,y:c}})(e,n)):ge(t)?Me((function(o,r){const i=Ge(o,!0,r==="fixed"),s=i.top+o.clientTop,a=i.left+o.clientLeft,l=se(o)?Ee(o):{x:1,y:1};return{width:o.clientWidth*l.x,height:o.clientHeight*l.y,x:a*l.x,y:s*l.y}})(t,n)):Me((function(o){const r=ve(o),i=bt(o),s=o.ownerDocument.body,a=Be(r.scrollWidth,r.clientWidth,s.scrollWidth,s.clientWidth),l=Be(r.scrollHeight,r.clientHeight,s.scrollHeight,s.clientHeight);let u=-i.scrollLeft+eo(o);const d=-i.scrollTop;return re(s).direction==="rtl"&&(u+=Be(r.clientWidth,s.clientWidth)-a),{width:a,height:l,x:u,y:d}})(ve(e)))}function pn(e){return se(e)&&re(e).position!=="fixed"?e.offsetParent:null}function hn(e){const t=Z(e);let n=pn(e);for(;n&&zi(n)&&re(n).position==="static";)n=pn(n);return n&&(be(n)==="html"||be(n)==="body"&&re(n).position==="static"&&!Ot(n))?t:n||(function(o){let r=Ve(o);for(;se(r)&&!Xt(r);){if(Ot(r))return r;r=Ve(r)}return null})(e)||t}function Hi(e,t,n){const o=se(t),r=ve(t),i=Ge(e,!0,n==="fixed",t);let s={scrollLeft:0,scrollTop:0};const a={x:0,y:0};if(o||!o&&n!=="fixed")if((be(t)!=="body"||wt(r))&&(s=bt(t)),se(t)){const l=Ge(t,!0);a.x=l.x+t.clientLeft,a.y=l.y+t.clientTop}else r&&(a.x=eo(r));return{x:i.left+s.scrollLeft-a.x,y:i.top+s.scrollTop-a.y,width:i.width,height:i.height}}const ji={getClippingRect:function(e){let{element:t,boundary:n,rootBoundary:o,strategy:r}=e;const i=n==="clippingAncestors"?(function(u,d){const c=d.get(u);if(c)return c;let m=at(u).filter((v=>ge(v)&&be(v)!=="body")),p=null;const g=re(u).position==="fixed";let y=g?Ve(u):u;for(;ge(y)&&!Xt(y);){const v=re(y),w=Ot(y);(g?w||p:w||v.position!=="static"||!p||!["absolute","fixed"].includes(p.position))?p=v:m=m.filter((b=>b!==y)),y=Ve(y)}return d.set(u,m),m})(t,this._c):[].concat(n),s=[...i,o],a=s[0],l=s.reduce(((u,d)=>{const c=dn(t,d,r);return u.top=Be(c.top,u.top),u.right=un(c.right,u.right),u.bottom=un(c.bottom,u.bottom),u.left=Be(c.left,u.left),u}),dn(t,a,r));return{width:l.right-l.left,height:l.bottom-l.top,x:l.left,y:l.top}},convertOffsetParentRelativeRectToViewportRelativeRect:function(e){let{rect:t,offsetParent:n,strategy:o}=e;const r=se(n),i=ve(n);if(n===i)return t;let s={scrollLeft:0,scrollTop:0},a={x:1,y:1};const l={x:0,y:0};if((r||!r&&o!=="fixed")&&((be(n)!=="body"||wt(i))&&(s=bt(n)),se(n))){const u=Ge(n);a=Ee(n),l.x=u.x+n.clientLeft,l.y=u.y+n.clientTop}return{width:t.width*a.x,height:t.height*a.y,x:t.x*a.x-s.scrollLeft*a.x+l.x,y:t.y*a.y-s.scrollTop*a.y+l.y}},isElement:ge,getDimensions:function(e){return se(e)?Un(e):e.getBoundingClientRect()},getOffsetParent:hn,getDocumentElement:ve,getScale:Ee,async getElementRects(e){let{reference:t,floating:n,strategy:o}=e;const r=this.getOffsetParent||hn,i=this.getDimensions;return{reference:Hi(t,await r(n),o),floating:{x:0,y:0,...await i(n)}}},getClientRects:e=>Array.from(e.getClientRects()),isRTL:e=>re(e).direction==="rtl"},Wi=(e,t,n)=>{const o=new Map,r={platform:ji,...n},i={...r.platform,_c:o};return Ci(e,t,{...r,platform:i})},ye={disabled:!1,distance:5,skidding:0,container:"body",boundary:void 0,instantMove:!1,disposeTimeout:150,popperTriggers:[],strategy:"absolute",preventOverflow:!0,flip:!0,shift:!0,overflowPadding:0,arrowPadding:0,arrowOverflow:!0,autoHideOnMousedown:!1,themes:{tooltip:{placement:"top",triggers:["hover","focus","touch"],hideTriggers:e=>[...e,"click"],delay:{show:200,hide:0},handleResize:!1,html:!1,loadingContent:"..."},dropdown:{placement:"bottom",triggers:["click"],delay:0,handleResize:!0,autoHide:!0},menu:{$extend:"dropdown",triggers:["hover","focus"],popperTriggers:["hover"],delay:{show:0,hide:400}}}};function Rt(e,t){let n=ye.themes[e]||{},o;do o=n[t],typeof o>"u"?n.$extend?n=ye.themes[n.$extend]||{}:(n=null,o=ye[t]):n=null;while(n);return o}function Gi(e){const t=[e];let n=ye.themes[e]||{};do n.$extend&&!n.$resetCss?(t.push(n.$extend),n=ye.themes[n.$extend]||{}):n=null;while(n);return t.map(o=>`v-popper--theme-${o}`)}function fn(e){const t=[e];let n=ye.themes[e]||{};do n.$extend?(t.push(n.$extend),n=ye.themes[n.$extend]||{}):n=null;while(n);return t}let qe=!1;if(typeof window<"u"){qe=!1;try{const e=Object.defineProperty({},"passive",{get(){qe=!0}});window.addEventListener("test",null,e)}catch{}}let no=!1;typeof window<"u"&&typeof navigator<"u"&&(no=/iPad|iPhone|iPod/.test(navigator.userAgent)&&!window.MSStream);const Vi=["auto","top","bottom","left","right"].reduce((e,t)=>e.concat([t,`${t}-start`,`${t}-end`]),[]),mn={hover:"mouseenter",focus:"focus",click:"click",touch:"touchstart",pointer:"pointerdown"},gn={hover:"mouseleave",focus:"blur",click:"click",touch:"touchend",pointer:"pointerup"};function vn(e,t){const n=e.indexOf(t);n!==-1&&e.splice(n,1)}function kt(){return new Promise(e=>requestAnimationFrame(()=>{requestAnimationFrame(e)}))}const te=[];let Te=null;const yn={};function wn(e){let t=yn[e];return t||(t=yn[e]=[]),t}let Mt=function(){};typeof window<"u"&&(Mt=window.Element);function D(e){return function(t){return Rt(t.theme,e)}}const Nt="__floating-vue__popper",oo=()=>Ce({name:"VPopper",provide(){return{[Nt]:{parentPopper:this}}},inject:{[Nt]:{default:null}},props:{theme:{type:String,required:!0},targetNodes:{type:Function,required:!0},referenceNode:{type:Function,default:null},popperNode:{type:Function,required:!0},shown:{type:Boolean,default:!1},showGroup:{type:String,default:null},ariaId:{default:null},disabled:{type:Boolean,default:D("disabled")},positioningDisabled:{type:Boolean,default:D("positioningDisabled")},placement:{type:String,default:D("placement"),validator:e=>Vi.includes(e)},delay:{type:[String,Number,Object],default:D("delay")},distance:{type:[Number,String],default:D("distance")},skidding:{type:[Number,String],default:D("skidding")},triggers:{type:Array,default:D("triggers")},showTriggers:{type:[Array,Function],default:D("showTriggers")},hideTriggers:{type:[Array,Function],default:D("hideTriggers")},popperTriggers:{type:Array,default:D("popperTriggers")},popperShowTriggers:{type:[Array,Function],default:D("popperShowTriggers")},popperHideTriggers:{type:[Array,Function],default:D("popperHideTriggers")},container:{type:[String,Object,Mt,Boolean],default:D("container")},boundary:{type:[String,Mt],default:D("boundary")},strategy:{type:String,validator:e=>["absolute","fixed"].includes(e),default:D("strategy")},autoHide:{type:[Boolean,Function],default:D("autoHide")},handleResize:{type:Boolean,default:D("handleResize")},instantMove:{type:Boolean,default:D("instantMove")},eagerMount:{type:Boolean,default:D("eagerMount")},popperClass:{type:[String,Array,Object],default:D("popperClass")},computeTransformOrigin:{type:Boolean,default:D("computeTransformOrigin")},autoMinSize:{type:Boolean,default:D("autoMinSize")},autoSize:{type:[Boolean,String],default:D("autoSize")},autoMaxSize:{type:Boolean,default:D("autoMaxSize")},autoBoundaryMaxSize:{type:Boolean,default:D("autoBoundaryMaxSize")},preventOverflow:{type:Boolean,default:D("preventOverflow")},overflowPadding:{type:[Number,String],default:D("overflowPadding")},arrowPadding:{type:[Number,String],default:D("arrowPadding")},arrowOverflow:{type:Boolean,default:D("arrowOverflow")},flip:{type:Boolean,default:D("flip")},shift:{type:Boolean,default:D("shift")},shiftCrossAxis:{type:Boolean,default:D("shiftCrossAxis")},noAutoFocus:{type:Boolean,default:D("noAutoFocus")},disposeTimeout:{type:Number,default:D("disposeTimeout")}},emits:{show:()=>!0,hide:()=>!0,"update:shown":e=>!0,"apply-show":()=>!0,"apply-hide":()=>!0,"close-group":()=>!0,"close-directive":()=>!0,"auto-hide":()=>!0,resize:()=>!0},data(){return{isShown:!1,isMounted:!1,skipTransition:!1,classes:{showFrom:!1,showTo:!1,hideFrom:!1,hideTo:!0},result:{x:0,y:0,placement:"",strategy:this.strategy,arrow:{x:0,y:0,centerOffset:0},transformOrigin:null},randomId:`popper_${[Math.random(),Date.now()].map(e=>e.toString(36).substring(2,10)).join("_")}`,shownChildren:new Set,lastAutoHide:!0,pendingHide:!1,containsGlobalTarget:!1,isDisposed:!0,mouseDownContains:!1}},computed:{popperId(){return this.ariaId!=null?this.ariaId:this.randomId},shouldMountContent(){return this.eagerMount||this.isMounted},slotData(){return{popperId:this.popperId,isShown:this.isShown,shouldMountContent:this.shouldMountContent,skipTransition:this.skipTransition,autoHide:typeof this.autoHide=="function"?this.lastAutoHide:this.autoHide,show:this.show,hide:this.hide,handleResize:this.handleResize,onResize:this.onResize,classes:{...this.classes,popperClass:this.popperClass},result:this.positioningDisabled?null:this.result,attrs:this.$attrs}},parentPopper(){var e;return(e=this[Nt])==null?void 0:e.parentPopper},hasPopperShowTriggerHover(){var e,t;return((e=this.popperTriggers)==null?void 0:e.includes("hover"))||((t=this.popperShowTriggers)==null?void 0:t.includes("hover"))}},watch:{shown:"$_autoShowHide",disabled(e){e?this.dispose():this.init()},async container(){this.isShown&&(this.$_ensureTeleport(),await this.$_computePosition())},triggers:{handler:"$_refreshListeners",deep:!0},positioningDisabled:"$_refreshListeners",...["placement","distance","skidding","boundary","strategy","overflowPadding","arrowPadding","preventOverflow","shift","shiftCrossAxis","flip"].reduce((e,t)=>(e[t]="$_computePosition",e),{})},created(){this.autoMinSize&&console.warn('[floating-vue] `autoMinSize` option is deprecated. Use `autoSize="min"` instead.'),this.autoMaxSize&&console.warn("[floating-vue] `autoMaxSize` option is deprecated. Use `autoBoundaryMaxSize` instead.")},mounted(){this.init(),this.$_detachPopperNode()},activated(){this.$_autoShowHide()},deactivated(){this.hide()},beforeUnmount(){this.dispose()},methods:{show({event:e=null,skipDelay:t=!1,force:n=!1}={}){var o,r;(o=this.parentPopper)!=null&&o.lockedChild&&this.parentPopper.lockedChild!==this||(this.pendingHide=!1,(n||!this.disabled)&&(((r=this.parentPopper)==null?void 0:r.lockedChild)===this&&(this.parentPopper.lockedChild=null),this.$_scheduleShow(e,t),this.$emit("show"),this.$_showFrameLocked=!0,requestAnimationFrame(()=>{this.$_showFrameLocked=!1})),this.$emit("update:shown",!0))},hide({event:e=null,skipDelay:t=!1}={}){var n;if(!this.$_hideInProgress){if(this.shownChildren.size>0){this.pendingHide=!0;return}if(this.hasPopperShowTriggerHover&&this.$_isAimingPopper()){this.parentPopper&&(this.parentPopper.lockedChild=this,clearTimeout(this.parentPopper.lockedChildTimer),this.parentPopper.lockedChildTimer=setTimeout(()=>{this.parentPopper.lockedChild===this&&(this.parentPopper.lockedChild.hide({skipDelay:t}),this.parentPopper.lockedChild=null)},1e3));return}((n=this.parentPopper)==null?void 0:n.lockedChild)===this&&(this.parentPopper.lockedChild=null),this.pendingHide=!1,this.$_scheduleHide(e,t),this.$emit("hide"),this.$emit("update:shown",!1)}},init(){var e;this.isDisposed&&(this.isDisposed=!1,this.isMounted=!1,this.$_events=[],this.$_preventShow=!1,this.$_referenceNode=((e=this.referenceNode)==null?void 0:e.call(this))??this.$el,this.$_targetNodes=this.targetNodes().filter(t=>t.nodeType===t.ELEMENT_NODE),this.$_popperNode=this.popperNode(),this.$_innerNode=this.$_popperNode.querySelector(".v-popper__inner"),this.$_arrowNode=this.$_popperNode.querySelector(".v-popper__arrow-container"),this.$_swapTargetAttrs("title","data-original-title"),this.$_detachPopperNode(),this.triggers.length&&this.$_addEventListeners(),this.shown&&this.show())},dispose(){this.isDisposed||(this.isDisposed=!0,this.$_removeEventListeners(),this.hide({skipDelay:!0}),this.$_detachPopperNode(),this.isMounted=!1,this.isShown=!1,this.$_updateParentShownChildren(!1),this.$_swapTargetAttrs("data-original-title","title"))},async onResize(){this.isShown&&(await this.$_computePosition(),this.$emit("resize"))},async $_computePosition(){if(this.isDisposed||this.positioningDisabled)return;const e={strategy:this.strategy,middleware:[]};(this.distance||this.skidding)&&e.middleware.push(Fi({mainAxis:this.distance,crossAxis:this.skidding}));const t=this.placement.startsWith("auto");if(t?e.middleware.push(Ri({alignment:this.placement.split("-")[1]??""})):e.placement=this.placement,this.preventOverflow&&(this.shift&&e.middleware.push(Ii({padding:this.overflowPadding,boundary:this.boundary,crossAxis:this.shiftCrossAxis})),!t&&this.flip&&e.middleware.push(Mi({padding:this.overflowPadding,boundary:this.boundary}))),e.middleware.push(Di({element:this.$_arrowNode,padding:this.arrowPadding})),this.arrowOverflow&&e.middleware.push({name:"arrowOverflow",fn:({placement:o,rects:r,middlewareData:i})=>{let s;const{centerOffset:a}=i.arrow;return o.startsWith("top")||o.startsWith("bottom")?s=Math.abs(a)>r.reference.width/2:s=Math.abs(a)>r.reference.height/2,{data:{overflow:s}}}}),this.autoMinSize||this.autoSize){const o=this.autoSize?this.autoSize:this.autoMinSize?"min":null;e.middleware.push({name:"autoSize",fn:({rects:r,placement:i,middlewareData:s})=>{var a;if((a=s.autoSize)!=null&&a.skip)return{};let l,u;return i.startsWith("top")||i.startsWith("bottom")?l=r.reference.width:u=r.reference.height,this.$_innerNode.style[o==="min"?"minWidth":o==="max"?"maxWidth":"width"]=l!=null?`${l}px`:null,this.$_innerNode.style[o==="min"?"minHeight":o==="max"?"maxHeight":"height"]=u!=null?`${u}px`:null,{data:{skip:!0},reset:{rects:!0}}}})}(this.autoMaxSize||this.autoBoundaryMaxSize)&&(this.$_innerNode.style.maxWidth=null,this.$_innerNode.style.maxHeight=null,e.middleware.push(Li({boundary:this.boundary,padding:this.overflowPadding,apply:({availableWidth:o,availableHeight:r})=>{this.$_innerNode.style.maxWidth=o!=null?`${o}px`:null,this.$_innerNode.style.maxHeight=r!=null?`${r}px`:null}})));const n=await Wi(this.$_referenceNode,this.$_popperNode,e);Object.assign(this.result,{x:n.x,y:n.y,placement:n.placement,strategy:n.strategy,arrow:{...n.middlewareData.arrow,...n.middlewareData.arrowOverflow}})},$_scheduleShow(e,t=!1){if(this.$_updateParentShownChildren(!0),this.$_hideInProgress=!1,clearTimeout(this.$_scheduleTimer),Te&&this.instantMove&&Te.instantMove&&Te!==this.parentPopper){Te.$_applyHide(!0),this.$_applyShow(!0);return}t?this.$_applyShow():this.$_scheduleTimer=setTimeout(this.$_applyShow.bind(this),this.$_computeDelay("show"))},$_scheduleHide(e,t=!1){if(this.shownChildren.size>0){this.pendingHide=!0;return}this.$_updateParentShownChildren(!1),this.$_hideInProgress=!0,clearTimeout(this.$_scheduleTimer),this.isShown&&(Te=this),t?this.$_applyHide():this.$_scheduleTimer=setTimeout(this.$_applyHide.bind(this),this.$_computeDelay("hide"))},$_computeDelay(e){const t=this.delay;return parseInt(t&&t[e]||t||0)},async $_applyShow(e=!1){clearTimeout(this.$_disposeTimer),clearTimeout(this.$_scheduleTimer),this.skipTransition=e,!this.isShown&&(this.$_ensureTeleport(),await kt(),await this.$_computePosition(),await this.$_applyShowEffect(),this.positioningDisabled||this.$_registerEventListeners([...at(this.$_referenceNode),...at(this.$_popperNode)],"scroll",()=>{this.$_computePosition()}))},async $_applyShowEffect(){if(this.$_hideInProgress)return;if(this.computeTransformOrigin){const t=this.$_referenceNode.getBoundingClientRect(),n=this.$_popperNode.querySelector(".v-popper__wrapper"),o=n.parentNode.getBoundingClientRect(),r=t.x+t.width/2-(o.left+n.offsetLeft),i=t.y+t.height/2-(o.top+n.offsetTop);this.result.transformOrigin=`${r}px ${i}px`}this.isShown=!0,this.$_applyAttrsToTarget({"aria-describedby":this.popperId,"data-popper-shown":""});const e=this.showGroup;if(e){let t;for(let n=0;n<te.length;n++)t=te[n],t.showGroup!==e&&(t.hide(),t.$emit("close-group"))}te.push(this),document.body.classList.add("v-popper--some-open");for(const t of fn(this.theme))wn(t).push(this),document.body.classList.add(`v-popper--some-open--${t}`);this.$emit("apply-show"),this.classes.showFrom=!0,this.classes.showTo=!1,this.classes.hideFrom=!1,this.classes.hideTo=!1,await kt(),this.classes.showFrom=!1,this.classes.showTo=!0,this.noAutoFocus||this.$_popperNode.focus()},async $_applyHide(e=!1){if(this.shownChildren.size>0){this.pendingHide=!0,this.$_hideInProgress=!1;return}if(clearTimeout(this.$_scheduleTimer),!this.isShown)return;this.skipTransition=e,vn(te,this),te.length===0&&document.body.classList.remove("v-popper--some-open");for(const n of fn(this.theme)){const o=wn(n);vn(o,this),o.length===0&&document.body.classList.remove(`v-popper--some-open--${n}`)}Te===this&&(Te=null),this.isShown=!1,this.$_applyAttrsToTarget({"aria-describedby":void 0,"data-popper-shown":void 0}),clearTimeout(this.$_disposeTimer);const t=this.disposeTimeout;t!==null&&(this.$_disposeTimer=setTimeout(()=>{this.$_popperNode&&(this.$_detachPopperNode(),this.isMounted=!1)},t)),this.$_removeEventListeners("scroll"),this.$emit("apply-hide"),this.classes.showFrom=!1,this.classes.showTo=!1,this.classes.hideFrom=!0,this.classes.hideTo=!1,await kt(),this.classes.hideFrom=!1,this.classes.hideTo=!0},$_autoShowHide(){this.shown?this.show():this.hide()},$_ensureTeleport(){if(this.isDisposed)return;let e=this.container;if(typeof e=="string"?e=window.document.querySelector(e):e===!1&&(e=this.$_targetNodes[0].parentNode),!e)throw new Error("No container for popover: "+this.container);e.appendChild(this.$_popperNode),this.isMounted=!0},$_addEventListeners(){const e=n=>{this.isShown&&!this.$_hideInProgress||(n.usedByTooltip=!0,!this.$_preventShow&&this.show({event:n}))};this.$_registerTriggerListeners(this.$_targetNodes,mn,this.triggers,this.showTriggers,e),this.$_registerTriggerListeners([this.$_popperNode],mn,this.popperTriggers,this.popperShowTriggers,e);const t=n=>{n.usedByTooltip||this.hide({event:n})};this.$_registerTriggerListeners(this.$_targetNodes,gn,this.triggers,this.hideTriggers,t),this.$_registerTriggerListeners([this.$_popperNode],gn,this.popperTriggers,this.popperHideTriggers,t)},$_registerEventListeners(e,t,n){this.$_events.push({targetNodes:e,eventType:t,handler:n}),e.forEach(o=>o.addEventListener(t,n,qe?{passive:!0}:void 0))},$_registerTriggerListeners(e,t,n,o,r){let i=n;o!=null&&(i=typeof o=="function"?o(i):o),i.forEach(s=>{const a=t[s];a&&this.$_registerEventListeners(e,a,r)})},$_removeEventListeners(e){const t=[];this.$_events.forEach(n=>{const{targetNodes:o,eventType:r,handler:i}=n;!e||e===r?o.forEach(s=>s.removeEventListener(r,i)):t.push(n)}),this.$_events=t},$_refreshListeners(){this.isDisposed||(this.$_removeEventListeners(),this.$_addEventListeners())},$_handleGlobalClose(e,t=!1){this.$_showFrameLocked||(this.hide({event:e}),e.closePopover?this.$emit("close-directive"):this.$emit("auto-hide"),t&&(this.$_preventShow=!0,setTimeout(()=>{this.$_preventShow=!1},300)))},$_detachPopperNode(){this.$_popperNode.parentNode&&this.$_popperNode.parentNode.removeChild(this.$_popperNode)},$_swapTargetAttrs(e,t){for(const n of this.$_targetNodes){const o=n.getAttribute(e);o&&(n.removeAttribute(e),n.setAttribute(t,o))}},$_applyAttrsToTarget(e){for(const t of this.$_targetNodes)for(const n in e){const o=e[n];o==null?t.removeAttribute(n):t.setAttribute(n,o)}},$_updateParentShownChildren(e){let t=this.parentPopper;for(;t;)e?t.shownChildren.add(this.randomId):(t.shownChildren.delete(this.randomId),t.pendingHide&&t.hide()),t=t.parentPopper},$_isAimingPopper(){const e=this.$_referenceNode.getBoundingClientRect();if(Fe>=e.left&&Fe<=e.right&&Ie>=e.top&&Ie<=e.bottom){const t=this.$_popperNode.getBoundingClientRect(),n=Fe-he,o=Ie-fe,r=t.left+t.width/2-he+(t.top+t.height/2)-fe+t.width+t.height,i=he+n*r,s=fe+o*r;return Xe(he,fe,i,s,t.left,t.top,t.left,t.bottom)||Xe(he,fe,i,s,t.left,t.top,t.right,t.top)||Xe(he,fe,i,s,t.right,t.top,t.right,t.bottom)||Xe(he,fe,i,s,t.left,t.bottom,t.right,t.bottom)}return!1}},render(){return this.$slots.default(this.slotData)}});if(typeof document<"u"&&typeof window<"u"){if(no){const e=qe?{passive:!0,capture:!0}:!0;document.addEventListener("touchstart",t=>bn(t),e),document.addEventListener("touchend",t=>Tn(t,!0),e)}else window.addEventListener("mousedown",e=>bn(e),!0),window.addEventListener("click",e=>Tn(e,!1),!0);window.addEventListener("resize",Ui)}function bn(e,t){for(let n=0;n<te.length;n++){const o=te[n];try{o.mouseDownContains=o.popperNode().contains(e.target)}catch{}}}function Tn(e,t){qi(e,t)}function qi(e,t){const n={};for(let o=te.length-1;o>=0;o--){const r=te[o];try{const i=r.containsGlobalTarget=r.mouseDownContains||r.popperNode().contains(e.target);r.pendingHide=!1,requestAnimationFrame(()=>{if(r.pendingHide=!1,!n[r.randomId]&&Sn(r,i,e)){if(r.$_handleGlobalClose(e,t),!e.closeAllPopover&&e.closePopover&&i){let a=r.parentPopper;for(;a;)n[a.randomId]=!0,a=a.parentPopper;return}let s=r.parentPopper;for(;s&&Sn(s,s.containsGlobalTarget,e);)s.$_handleGlobalClose(e,t),s=s.parentPopper}})}catch{}}}function Sn(e,t,n){return n.closeAllPopover||n.closePopover&&t||Ki(e,n)&&!t}function Ki(e,t){if(typeof e.autoHide=="function"){const n=e.autoHide(t);return e.lastAutoHide=n,n}return e.autoHide}function Ui(){for(let e=0;e<te.length;e++)te[e].$_computePosition()}let he=0,fe=0,Fe=0,Ie=0;typeof window<"u"&&window.addEventListener("mousemove",e=>{he=Fe,fe=Ie,Fe=e.clientX,Ie=e.clientY},qe?{passive:!0}:void 0);function Xe(e,t,n,o,r,i,s,a){const l=((s-r)*(t-i)-(a-i)*(e-r))/((a-i)*(n-e)-(s-r)*(o-t)),u=((n-e)*(t-i)-(o-t)*(e-r))/((a-i)*(n-e)-(s-r)*(o-t));return l>=0&&l<=1&&u>=0&&u<=1}const Yi={extends:oo()},Zt=(e,t)=>{const n=e.__vccOpts||e;for(const[o,r]of t)n[o]=r;return n};function Xi(e,t,n,o,r,i){return j(),ce("div",{ref:"reference",class:tt(["v-popper",{"v-popper--shown":e.slotData.isShown}])},[we(e.$slots,"default",Pt(Ct(e.slotData)))],2)}const Zi=Zt(Yi,[["render",Xi]]);function Ji(){var e=window.navigator.userAgent,t=e.indexOf("MSIE ");if(t>0)return parseInt(e.substring(t+5,e.indexOf(".",t)),10);var n=e.indexOf("Trident/");if(n>0){var o=e.indexOf("rv:");return parseInt(e.substring(o+3,e.indexOf(".",o)),10)}var r=e.indexOf("Edge/");return r>0?parseInt(e.substring(r+5,e.indexOf(".",r)),10):-1}let Je;function Bt(){Bt.init||(Bt.init=!0,Je=Ji()!==-1)}var Qe={name:"ResizeObserver",props:{emitOnMount:{type:Boolean,default:!1},ignoreWidth:{type:Boolean,default:!1},ignoreHeight:{type:Boolean,default:!1}},emits:["notify"],mounted(){Bt(),jt(()=>{this._w=this.$el.offsetWidth,this._h=this.$el.offsetHeight,this.emitOnMount&&this.emitSize()});const e=document.createElement("object");this._resizeObject=e,e.setAttribute("aria-hidden","true"),e.setAttribute("tabindex",-1),e.onload=this.addResizeHandlers,e.type="text/html",Je&&this.$el.appendChild(e),e.data="about:blank",Je||this.$el.appendChild(e)},beforeUnmount(){this.removeResizeHandlers()},methods:{compareAndNotify(){(!this.ignoreWidth&&this._w!==this.$el.offsetWidth||!this.ignoreHeight&&this._h!==this.$el.offsetHeight)&&(this._w=this.$el.offsetWidth,this._h=this.$el.offsetHeight,this.emitSize())},emitSize(){this.$emit("notify",{width:this._w,height:this._h})},addResizeHandlers(){this._resizeObject.contentDocument.defaultView.addEventListener("resize",this.compareAndNotify),this.compareAndNotify()},removeResizeHandlers(){this._resizeObject&&this._resizeObject.onload&&(!Je&&this._resizeObject.contentDocument&&this._resizeObject.contentDocument.defaultView.removeEventListener("resize",this.compareAndNotify),this.$el.removeChild(this._resizeObject),this._resizeObject.onload=null,this._resizeObject=null)}}};const Qi=Ao();xo("data-v-b329ee4c");const er={class:"resize-observer",tabindex:"-1"};_o();const tr=Qi((e,t,n,o,r,i)=>(j(),_e("div",er)));Qe.render=tr,Qe.__scopeId="data-v-b329ee4c",Qe.__file="src/components/ResizeObserver.vue";const io=(e="theme")=>({computed:{themeClass(){return Gi(this[e])}}}),nr=Ce({name:"VPopperContent",components:{ResizeObserver:Qe},mixins:[io()],props:{popperId:String,theme:String,shown:Boolean,mounted:Boolean,skipTransition:Boolean,autoHide:Boolean,handleResize:Boolean,classes:Object,result:Object},emits:["hide","resize"],methods:{toPx(e){return e!=null&&!isNaN(e)?`${e}px`:null}}}),or=["id","aria-hidden","tabindex","data-popper-placement"],ir={ref:"inner",class:"v-popper__inner"},rr=q("div",{class:"v-popper__arrow-outer"},null,-1),sr=q("div",{class:"v-popper__arrow-inner"},null,-1),ar=[rr,sr];function lr(e,t,n,o,r,i){const s=ze("ResizeObserver");return j(),ce("div",{id:e.popperId,ref:"popover",class:tt(["v-popper__popper",[e.themeClass,e.classes.popperClass,{"v-popper__popper--shown":e.shown,"v-popper__popper--hidden":!e.shown,"v-popper__popper--show-from":e.classes.showFrom,"v-popper__popper--show-to":e.classes.showTo,"v-popper__popper--hide-from":e.classes.hideFrom,"v-popper__popper--hide-to":e.classes.hideTo,"v-popper__popper--skip-transition":e.skipTransition,"v-popper__popper--arrow-overflow":e.result&&e.result.arrow.overflow,"v-popper__popper--no-positioning":!e.result}]]),style:_t(e.result?{position:e.result.strategy,transform:`translate3d(${Math.round(e.result.x)}px,${Math.round(e.result.y)}px,0)`}:void 0),"aria-hidden":e.shown?"false":"true",tabindex:e.autoHide?0:void 0,"data-popper-placement":e.result?e.result.placement:void 0,onKeyup:t[2]||(t[2]=$o(a=>e.autoHide&&e.$emit("hide"),["esc"]))},[q("div",{class:"v-popper__backdrop",onClick:t[0]||(t[0]=a=>e.autoHide&&e.$emit("hide"))}),q("div",{class:"v-popper__wrapper",style:_t(e.result?{transformOrigin:e.result.transformOrigin}:void 0)},[q("div",ir,[e.mounted?(j(),ce(Gt,{key:0},[q("div",null,[we(e.$slots,"default")]),e.handleResize?(j(),_e(s,{key:0,onNotify:t[1]||(t[1]=a=>e.$emit("resize",a))})):me("",!0)],64)):me("",!0)],512),q("div",{ref:"arrow",class:"v-popper__arrow-container",style:_t(e.result?{left:e.toPx(e.result.arrow.x),top:e.toPx(e.result.arrow.y)}:void 0)},ar,4)],4)],46,or)}const ro=Zt(nr,[["render",lr]]),so={methods:{show(...e){return this.$refs.popper.show(...e)},hide(...e){return this.$refs.popper.hide(...e)},dispose(...e){return this.$refs.popper.dispose(...e)},onResize(...e){return this.$refs.popper.onResize(...e)}}};let Ft=function(){};typeof window<"u"&&(Ft=window.Element);const ur=Ce({name:"VPopperWrapper",components:{Popper:Zi,PopperContent:ro},mixins:[so,io("finalTheme")],props:{theme:{type:String,default:null},referenceNode:{type:Function,default:null},shown:{type:Boolean,default:!1},showGroup:{type:String,default:null},ariaId:{default:null},disabled:{type:Boolean,default:void 0},positioningDisabled:{type:Boolean,default:void 0},placement:{type:String,default:void 0},delay:{type:[String,Number,Object],default:void 0},distance:{type:[Number,String],default:void 0},skidding:{type:[Number,String],default:void 0},triggers:{type:Array,default:void 0},showTriggers:{type:[Array,Function],default:void 0},hideTriggers:{type:[Array,Function],default:void 0},popperTriggers:{type:Array,default:void 0},popperShowTriggers:{type:[Array,Function],default:void 0},popperHideTriggers:{type:[Array,Function],default:void 0},container:{type:[String,Object,Ft,Boolean],default:void 0},boundary:{type:[String,Ft],default:void 0},strategy:{type:String,default:void 0},autoHide:{type:[Boolean,Function],default:void 0},handleResize:{type:Boolean,default:void 0},instantMove:{type:Boolean,default:void 0},eagerMount:{type:Boolean,default:void 0},popperClass:{type:[String,Array,Object],default:void 0},computeTransformOrigin:{type:Boolean,default:void 0},autoMinSize:{type:Boolean,default:void 0},autoSize:{type:[Boolean,String],default:void 0},autoMaxSize:{type:Boolean,default:void 0},autoBoundaryMaxSize:{type:Boolean,default:void 0},preventOverflow:{type:Boolean,default:void 0},overflowPadding:{type:[Number,String],default:void 0},arrowPadding:{type:[Number,String],default:void 0},arrowOverflow:{type:Boolean,default:void 0},flip:{type:Boolean,default:void 0},shift:{type:Boolean,default:void 0},shiftCrossAxis:{type:Boolean,default:void 0},noAutoFocus:{type:Boolean,default:void 0},disposeTimeout:{type:Number,default:void 0}},emits:{show:()=>!0,hide:()=>!0,"update:shown":e=>!0,"apply-show":()=>!0,"apply-hide":()=>!0,"close-group":()=>!0,"close-directive":()=>!0,"auto-hide":()=>!0,resize:()=>!0},computed:{finalTheme(){return this.theme??this.$options.vPopperTheme}},methods:{getTargetNodes(){return Array.from(this.$el.children).filter(e=>e!==this.$refs.popperContent.$el)}}});function cr(e,t,n,o,r,i){const s=ze("PopperContent"),a=ze("Popper");return j(),_e(a,mt({ref:"popper"},e.$props,{theme:e.finalTheme,"target-nodes":e.getTargetNodes,"popper-node":()=>e.$refs.popperContent.$el,class:[e.themeClass],onShow:t[0]||(t[0]=()=>e.$emit("show")),onHide:t[1]||(t[1]=()=>e.$emit("hide")),"onUpdate:shown":t[2]||(t[2]=l=>e.$emit("update:shown",l)),onApplyShow:t[3]||(t[3]=()=>e.$emit("apply-show")),onApplyHide:t[4]||(t[4]=()=>e.$emit("apply-hide")),onCloseGroup:t[5]||(t[5]=()=>e.$emit("close-group")),onCloseDirective:t[6]||(t[6]=()=>e.$emit("close-directive")),onAutoHide:t[7]||(t[7]=()=>e.$emit("auto-hide")),onResize:t[8]||(t[8]=()=>e.$emit("resize"))}),{default:V(({popperId:l,isShown:u,shouldMountContent:d,skipTransition:c,autoHide:m,show:p,hide:g,handleResize:y,onResize:v,classes:w,result:b})=>[we(e.$slots,"default",{shown:u,show:p,hide:g}),G(s,{ref:"popperContent","popper-id":l,theme:e.finalTheme,shown:u,mounted:d,"skip-transition":c,"auto-hide":m,"handle-resize":y,classes:w,result:b,onHide:g,onResize:v},{default:V(()=>[we(e.$slots,"popper",{shown:u,hide:g})]),_:2},1032,["popper-id","theme","shown","mounted","skip-transition","auto-hide","handle-resize","classes","result","onHide","onResize"])]),_:3},16,["theme","target-nodes","popper-node","class"])}const It=Zt(ur,[["render",cr]]),dr={...It,name:"VDropdown",vPopperTheme:"dropdown"};({...It},{...It}),Ce({name:"VTooltipDirective",components:{Popper:oo(),PopperContent:ro},mixins:[so],inheritAttrs:!1,props:{theme:{type:String,default:"tooltip"},html:{type:Boolean,default:e=>Rt(e.theme,"html")},content:{type:[String,Number,Function],default:null},loadingContent:{type:String,default:e=>Rt(e.theme,"loadingContent")},targetNodes:{type:Function,required:!0}},data(){return{asyncContent:null}},computed:{isContentAsync(){return typeof this.content=="function"},loading(){return this.isContentAsync&&this.asyncContent==null},finalContent(){return this.isContentAsync?this.loading?this.loadingContent:this.asyncContent:this.content}},watch:{content:{handler(){this.fetchContent(!0)},immediate:!0},async finalContent(){await this.$nextTick(),this.$refs.popper.onResize()}},created(){this.$_fetchId=0},methods:{fetchContent(e){if(typeof this.content=="function"&&this.$_isShown&&(e||!this.$_loading&&this.asyncContent==null)){this.asyncContent=null,this.$_loading=!0;const t=++this.$_fetchId,n=this.content(this);n.then?n.then(o=>this.onResult(t,o)):this.onResult(t,n)}},onResult(e,t){e===this.$_fetchId&&(this.$_loading=!1,this.asyncContent=t)},onShow(){this.$_isShown=!0,this.fetchContent()},onHide(){this.$_isShown=!1}}});const xn=ye,pr=dr;var ao=["input:not([inert]):not([inert] *)","select:not([inert]):not([inert] *)","textarea:not([inert]):not([inert] *)","a[href]:not([inert]):not([inert] *)","area[href]:not([inert]):not([inert] *)","button:not([inert]):not([inert] *)","[tabindex]:not(slot):not([inert]):not([inert] *)","audio[controls]:not([inert]):not([inert] *)","video[controls]:not([inert]):not([inert] *)",'[contenteditable]:not([contenteditable="false"]):not([inert]):not([inert] *)',"details>summary:first-of-type:not([inert]):not([inert] *)","details:not([inert]):not([inert] *)"],lt=ao.join(","),lo=typeof Element>"u",$e=lo?function(){}:Element.prototype.matches||Element.prototype.msMatchesSelector||Element.prototype.webkitMatchesSelector,ut=!lo&&Element.prototype.getRootNode?function(e){var t;return e==null||(t=e.getRootNode)===null||t===void 0?void 0:t.call(e)}:function(e){return e?.ownerDocument},ct=function(e,t){var n;t===void 0&&(t=!0);var o=e==null||(n=e.getAttribute)===null||n===void 0?void 0:n.call(e,"inert"),r=o===""||o==="true",i=r||t&&e&&(typeof e.closest=="function"?e.closest("[inert]"):ct(e.parentNode));return i},hr=function(e){var t,n=e==null||(t=e.getAttribute)===null||t===void 0?void 0:t.call(e,"contenteditable");return n===""||n==="true"},uo=function(e,t,n){if(ct(e))return[];var o=Array.prototype.slice.apply(e.querySelectorAll(lt));return t&&$e.call(e,lt)&&o.unshift(e),o=o.filter(n),o},dt=function(e,t,n){for(var o=[],r=Array.from(e);r.length;){var i=r.shift();if(!ct(i,!1))if(i.tagName==="SLOT"){var s=i.assignedElements(),a=s.length?s:i.children,l=dt(a,!0,n);n.flatten?o.push.apply(o,l):o.push({scopeParent:i,candidates:l})}else{var u=$e.call(i,lt);u&&n.filter(i)&&(t||!e.includes(i))&&o.push(i);var d=i.shadowRoot||typeof n.getShadowRoot=="function"&&n.getShadowRoot(i),c=!ct(d,!1)&&(!n.shadowRootFilter||n.shadowRootFilter(i));if(d&&c){var m=dt(d===!0?i.children:d.children,!0,n);n.flatten?o.push.apply(o,m):o.push({scopeParent:i,candidates:m})}else r.unshift.apply(r,i.children)}}return o},co=function(e){return!isNaN(parseInt(e.getAttribute("tabindex"),10))},Se=function(e){if(!e)throw new Error("No node provided");return e.tabIndex<0&&(/^(AUDIO|VIDEO|DETAILS)$/.test(e.tagName)||hr(e))&&!co(e)?0:e.tabIndex},fr=function(e,t){var n=Se(e);return n<0&&t&&!co(e)?0:n},mr=function(e,t){return e.tabIndex===t.tabIndex?e.documentOrder-t.documentOrder:e.tabIndex-t.tabIndex},po=function(e){return e.tagName==="INPUT"},gr=function(e){return po(e)&&e.type==="hidden"},vr=function(e){var t=e.tagName==="DETAILS"&&Array.prototype.slice.apply(e.children).some(function(n){return n.tagName==="SUMMARY"});return t},yr=function(e,t){for(var n=0;n<e.length;n++)if(e[n].checked&&e[n].form===t)return e[n]},wr=function(e){if(!e.name)return!0;var t=e.form||ut(e),n=function(i){return t.querySelectorAll('input[type="radio"][name="'+i+'"]')},o;if(typeof window<"u"&&typeof window.CSS<"u"&&typeof window.CSS.escape=="function")o=n(window.CSS.escape(e.name));else try{o=n(e.name)}catch(i){return console.error("Looks like you have a radio button with a name attribute containing invalid CSS selector characters and need the CSS.escape polyfill: %s",i.message),!1}var r=yr(o,e.form);return!r||r===e},br=function(e){return po(e)&&e.type==="radio"},Tr=function(e){return br(e)&&!wr(e)},Sr=function(e){var t,n=e&&ut(e),o=(t=n)===null||t===void 0?void 0:t.host,r=!1;if(n&&n!==e){var i,s,a;for(r=!!((i=o)!==null&&i!==void 0&&(s=i.ownerDocument)!==null&&s!==void 0&&s.contains(o)||e!=null&&(a=e.ownerDocument)!==null&&a!==void 0&&a.contains(e));!r&&o;){var l,u,d;n=ut(o),o=(l=n)===null||l===void 0?void 0:l.host,r=!!((u=o)!==null&&u!==void 0&&(d=u.ownerDocument)!==null&&d!==void 0&&d.contains(o))}}return r},_n=function(e){var t=e.getBoundingClientRect(),n=t.width,o=t.height;return n===0&&o===0},xr=function(e,t){var n=t.displayCheck,o=t.getShadowRoot;if(n==="full-native"&&"checkVisibility"in e){var r=e.checkVisibility({checkOpacity:!1,opacityProperty:!1,contentVisibilityAuto:!0,visibilityProperty:!0,checkVisibilityCSS:!0});return!r}var i=getComputedStyle(e),s=i.visibility;if(s==="hidden"||s==="collapse")return!0;var a=$e.call(e,"details>summary:first-of-type"),l=a?e.parentElement:e;if($e.call(l,"details:not([open]) *"))return!0;if(!n||n==="full"||n==="full-native"||n==="legacy-full"){if(typeof o=="function"){for(var u=e;e;){var d=e.parentElement,c=ut(e);if(d&&!d.shadowRoot&&o(d)===!0)return _n(e);e.assignedSlot?e=e.assignedSlot:!d&&c!==e.ownerDocument?e=c.host:e=d}e=u}if(Sr(e))return!e.getClientRects().length;if(n!=="legacy-full")return!0}else if(n==="non-zero-area")return _n(e);return!1},_r=function(e){if(/^(INPUT|BUTTON|SELECT|TEXTAREA)$/.test(e.tagName))for(var t=e.parentElement;t;){if(t.tagName==="FIELDSET"&&t.disabled){for(var n=0;n<t.children.length;n++){var o=t.children.item(n);if(o.tagName==="LEGEND")return $e.call(t,"fieldset[disabled] *")?!0:!o.contains(e)}return!0}t=t.parentElement}return!1},pt=function(e,t){return!(t.disabled||gr(t)||xr(t,e)||vr(t)||_r(t))},Lt=function(e,t){return!(Tr(t)||Se(t)<0||!pt(e,t))},Ar=function(e){var t=parseInt(e.getAttribute("tabindex"),10);return!!(isNaN(t)||t>=0)},ho=function(e){var t=[],n=[];return e.forEach(function(o,r){var i=!!o.scopeParent,s=i?o.scopeParent:o,a=fr(s,i),l=i?ho(o.candidates):s;a===0?i?t.push.apply(t,l):t.push(s):n.push({documentOrder:r,tabIndex:a,item:o,isScope:i,content:l})}),n.sort(mr).reduce(function(o,r){return r.isScope?o.push.apply(o,r.content):o.push(r.content),o},[]).concat(t)},$r=function(e,t){t=t||{};var n;return t.getShadowRoot?n=dt([e],t.includeContainer,{filter:Lt.bind(null,t),flatten:!1,getShadowRoot:t.getShadowRoot,shadowRootFilter:Ar}):n=uo(e,t.includeContainer,Lt.bind(null,t)),ho(n)},kr=function(e,t){t=t||{};var n;return t.getShadowRoot?n=dt([e],t.includeContainer,{filter:pt.bind(null,t),flatten:!0,getShadowRoot:t.getShadowRoot}):n=uo(e,t.includeContainer,pt.bind(null,t)),n},ke=function(e,t){if(t=t||{},!e)throw new Error("No node provided");return $e.call(e,lt)===!1?!1:Lt(t,e)},Nr=ao.concat("iframe:not([inert]):not([inert] *)").join(","),Et=function(e,t){if(t=t||{},!e)throw new Error("No node provided");return $e.call(e,Nr)===!1?!1:pt(t,e)};function zt(e,t){(t==null||t>e.length)&&(t=e.length);for(var n=0,o=Array(t);n<t;n++)o[n]=e[n];return o}function Er(e){if(Array.isArray(e))return zt(e)}function An(e,t){var n=typeof Symbol<"u"&&e[Symbol.iterator]||e["@@iterator"];if(!n){if(Array.isArray(e)||(n=fo(e))||t){n&&(e=n);var o=0,r=function(){};return{s:r,n:function(){return o>=e.length?{done:!0}:{done:!1,value:e[o++]}},e:function(l){throw l},f:r}}throw new TypeError(`Invalid attempt to iterate non-iterable instance. +import{z as le,S as Ht,D as jt,a1 as On,a2 as wo,ab as ht,Z as bo,ap as To,a8 as B,ah as J,Y as Rn,X as Mn,V as So,v as z,E as ft,P as Jt,u as M,l as Pe,a9 as Wt,ai as et,b as Ce,aq as xo,ar as _o,o as j,c as _e,r as ze,w as V,i as we,k as G,m as mt,as as Ao,f as ce,g as q,F as Gt,h as me,O as _t,a6 as $o,y as tt,G as Pt,M as Ct,at as ko,au as No,t as Bn,ac as Y,a7 as Eo,n as Po,p as Co,x as Do,J as Ke,T as De,L as Oo,K as Ue,ae as Ro,s as Qt,a5 as Mo}from"./Web-DYqXJUev.chunk.mjs";import{l as Bo,N as xe,w as Fo,x as Io,b as en,y as Lo,n as zo}from"./logger-D3RVzcfQ-BrUWOyzd.chunk.mjs";import{_ as gt,r as Vt,A as Ho,b as X,c as Fn,B as jo,C as Wo,y as Go,N as Oe}from"./createElementId-DhjFt1I9-BmyhoOWk.chunk.mjs";import{b as vt,g as At,i as Vo}from"./translation-DoG5ZELJ-WOan4U8V.chunk.mjs";function As(){if(typeof globalThis.firstDay<"u")return globalThis.firstDay;const e=new Intl.Locale(vt()),t=e.getWeekInfo?.()??e.weekInfo;return t?t.firstDay%7:1}function $s(){if(typeof globalThis.dayNames<"u")return globalThis.dayNames;const e=vt();return[new Date(1970,0,4).toLocaleDateString(e,{weekday:"long"}),new Date(1970,0,5).toLocaleDateString(e,{weekday:"long"}),new Date(1970,0,6).toLocaleDateString(e,{weekday:"long"}),new Date(1970,0,7).toLocaleDateString(e,{weekday:"long"}),new Date(1970,0,8).toLocaleDateString(e,{weekday:"long"}),new Date(1970,0,9).toLocaleDateString(e,{weekday:"long"}),new Date(1970,0,10).toLocaleDateString(e,{weekday:"long"})]}function ks(){if(typeof globalThis.dayNamesMin<"u")return globalThis.dayNamesMin;const e=vt();return[new Date(1970,0,4).toLocaleDateString(e,{weekday:"narrow"}),new Date(1970,0,5).toLocaleDateString(e,{weekday:"narrow"}),new Date(1970,0,6).toLocaleDateString(e,{weekday:"narrow"}),new Date(1970,0,7).toLocaleDateString(e,{weekday:"narrow"}),new Date(1970,0,8).toLocaleDateString(e,{weekday:"narrow"}),new Date(1970,0,9).toLocaleDateString(e,{weekday:"narrow"}),new Date(1970,0,10).toLocaleDateString(e,{weekday:"narrow"})]}function qo(e=Date.now(),t={}){const n={ignoreSeconds:!1,language:At(),relativeTime:"long",...t},o=new Date(e),r=new Intl.RelativeTimeFormat([n.language,At()],{numeric:"auto",style:n.relativeTime}),i=(o.getTime()-Date.now())/1e3;if(Math.abs(i)<59.5)return n.ignoreSeconds||r.format(Math.round(i),"second");const s=i/60;if(Math.abs(s)<=59)return r.format(Math.round(s),"minute");const a=s/60;if(Math.abs(a)<23.5)return r.format(Math.round(a),"hour");const l=a/24;if(Math.abs(l)<6.5)return r.format(Math.round(l),"day");if(Math.abs(l)<27.5){const c=l/7;return r.format(Math.round(c),"week")}const u=l/30,d=Math.abs(u)<11?{month:n.relativeTime,day:"numeric"}:{year:n.relativeTime==="narrow"?"2-digit":"numeric",month:n.relativeTime};return new Intl.DateTimeFormat([n.language,At()],d).format(o)}function Ns(e={}){function t(s){return typeof s=="function"}const n=t(e)?{mounted:e,updated:e}:e,{mounted:o,unmounted:r}=n;if(!t(o))return e;const i=new WeakMap;return{...n,mounted(s,a,l,u){var d;const c=(d=i.get(s))!==null&&d!==void 0?d:Rn();i.set(s,c),c.run(()=>{o?.(s,a,l,u)})},unmounted(s,a,l,u){var d;(d=i.get(s))===null||d===void 0||d.stop(),i.delete(s),t(r)&&r(s,a,l,u)}}}function Ae(e,t){return On()?(wo(e,t),!0):!1}const $t=new WeakMap,Ko=(...e)=>{var t;const n=e[0],o=(t=ht())===null||t===void 0?void 0:t.proxy,r=o??On();if(r==null&&!Mn())throw new Error("injectLocal must be called in setup");return r&&$t.has(r)&&n in $t.get(r)?$t.get(r)[n]:So(...e)},He=typeof window<"u"&&typeof document<"u";typeof WorkerGlobalScope<"u"&&globalThis instanceof WorkerGlobalScope;const In=e=>e!=null,Uo=Object.prototype.toString,Yo=e=>Uo.call(e)==="[object Object]",oe=()=>{};function Ln(e,t){function n(...o){return new Promise((r,i)=>{Promise.resolve(e(()=>t.apply(this,o),{fn:t,thisArg:this,args:o})).then(r).catch(i)})}return n}const Xo=e=>e();function zn(e,t={}){let n,o,r=oe;const i=a=>{clearTimeout(a),r(),r=oe};let s;return a=>{const l=B(e),u=B(t.maxWait);return n&&i(n),l<=0||u!==void 0&&u<=0?(o&&(i(o),o=void 0),Promise.resolve(a())):new Promise((d,c)=>{r=t.rejectOnCancel?c:d,s=a,u&&!o&&(o=setTimeout(()=>{n&&i(n),o=void 0,d(s())},u)),n=setTimeout(()=>{o&&i(o),o=void 0,d(a())},l)})}}function tn(e){return e.endsWith("rem")?Number.parseFloat(e)*16:Number.parseFloat(e)}function Ne(e){return Array.isArray(e)?e:[e]}function Zo(e){return ht()}function Es(e){if(!He)return e;let t=0,n,o;const r=()=>{t-=1,o&&t<=0&&(o.stop(),n=void 0,o=void 0)};return((...i)=>(t+=1,o||(o=Rn(!0),n=o.run(()=>e(...i))),Ae(r),n))}function Ps(e,t=200,n={}){return Ln(zn(t,n),e)}function Jo(e,t,n={}){const{eventFilter:o=Xo,...r}=n;return le(e,Ln(o,t),r)}function Qo(e,t=!0,n){Zo()?Ht(e,n):t?e():jt(e)}function ei(e,t=1e3,n={}){const{immediate:o=!0,immediateCallback:r=!1}=n;let i=null;const s=J(!1);function a(){i&&(clearInterval(i),i=null)}function l(){s.value=!1,a()}function u(){const d=B(t);d<=0||(s.value=!0,r&&e(),a(),s.value&&(i=setInterval(e,d)))}return o&&He&&u(),(bo(t)||typeof t=="function")&&Ae(le(t,()=>{s.value&&He&&u()})),Ae(l),{isActive:To(s),pause:l,resume:u}}function Cs(e,t,n={}){const{debounce:o=0,maxWait:r=void 0,...i}=n;return Jo(e,t,{...i,eventFilter:zn(o,{maxWait:r})})}function ti(e,t,n){return le(e,t,{...n,immediate:!0})}function ni(e,t,n){return le(e,t,{...n,once:!0})}const ee=He?window:void 0,Ds=He?window.document:void 0;function H(e){var t;const n=B(e);return(t=n?.$el)!==null&&t!==void 0?t:n}function Q(...e){const t=(o,r,i,s)=>(o.addEventListener(r,i,s),()=>o.removeEventListener(r,i,s)),n=z(()=>{const o=Ne(B(e[0])).filter(r=>r!=null);return o.every(r=>typeof r!="string")?o:void 0});return ti(()=>{var o,r;return[(o=(r=n.value)===null||r===void 0?void 0:r.map(i=>H(i)))!==null&&o!==void 0?o:[ee].filter(i=>i!=null),Ne(B(n.value?e[1]:e[0])),Ne(M(n.value?e[2]:e[1])),B(n.value?e[3]:e[2])]},([o,r,i,s],a,l)=>{if(!o?.length||!r?.length||!i?.length)return;const u=Yo(s)?{...s}:s,d=o.flatMap(c=>r.flatMap(m=>i.map(p=>t(c,m,p,u))));l(()=>{d.forEach(c=>c())})},{flush:"post"})}function Os(e,t,n={}){const{window:o=ee,ignore:r=[],capture:i=!0,detectIframe:s=!1,controls:a=!1}=n;if(!o)return a?{stop:oe,cancel:oe,trigger:oe}:oe;let l=!0;const u=v=>B(r).some(w=>{if(typeof w=="string")return Array.from(o.document.querySelectorAll(w)).some(b=>b===v.target||v.composedPath().includes(b));{const b=H(w);return b&&(v.target===b||v.composedPath().includes(b))}});function d(v){const w=B(v);return w&&w.$.subTree.shapeFlag===16}function c(v,w){const b=B(v),_=b.$.subTree&&b.$.subTree.children;return _==null||!Array.isArray(_)?!1:_.some(P=>P.el===w.target||w.composedPath().includes(P.el))}const m=v=>{const w=H(e);if(v.target!=null&&!(!(w instanceof Element)&&d(e)&&c(e,v))&&!(!w||w===v.target||v.composedPath().includes(w))){if("detail"in v&&v.detail===0&&(l=!u(v)),!l){l=!0;return}t(v)}};let p=!1;const g=[Q(o,"click",v=>{p||(p=!0,setTimeout(()=>{p=!1},0),m(v))},{passive:!0,capture:i}),Q(o,"pointerdown",v=>{const w=H(e);l=!u(v)&&!!(w&&!v.composedPath().includes(w))},{passive:!0}),s&&Q(o,"blur",v=>{setTimeout(()=>{const w=H(e);let b=o.document.activeElement;for(;b?.shadowRoot;)b=b.shadowRoot.activeElement;b?.tagName==="IFRAME"&&!w?.contains(o.document.activeElement)&&t(v)},0)},{passive:!0})].filter(Boolean),y=()=>g.forEach(v=>v());return a?{stop:y,cancel:()=>{l=!1},trigger:v=>{l=!0,m(v),l=!1}}:y}function oi(){const e=J(!1),t=ht();return t&&Ht(()=>{e.value=!0},t),e}function yt(e){const t=oi();return z(()=>(t.value,!!e()))}function ii(e,t,n={}){const{window:o=ee,...r}=n;let i;const s=yt(()=>o&&"MutationObserver"in o),a=()=>{i&&(i.disconnect(),i=void 0)},l=le(z(()=>{const c=Ne(B(e)).map(H).filter(In);return new Set(c)}),c=>{a(),s.value&&c.size&&(i=new MutationObserver(t),c.forEach(m=>i.observe(m,r)))},{immediate:!0,flush:"post"}),u=()=>i?.takeRecords(),d=()=>{l(),a()};return Ae(d),{isSupported:s,stop:d,takeRecords:u}}function ri(e,t,n={}){const{window:o=ee,document:r=o?.document,flush:i="sync"}=n;if(!o||!r)return oe;let s;const a=d=>{s?.(),s=d},l=ft(()=>{const d=H(e);if(d){const{stop:c}=ii(r,m=>{m.map(p=>[...p.removedNodes]).flat().some(p=>p===d||p.contains(d))&&t(m)},{window:o,childList:!0,subtree:!0});a(c)}},{flush:i}),u=()=>{l(),a()};return Ae(u),u}function si(e){return typeof e=="function"?e:typeof e=="string"?t=>t.key===e:Array.isArray(e)?t=>e.includes(t.key):()=>!0}function nn(...e){let t,n,o={};e.length===3?(t=e[0],n=e[1],o=e[2]):e.length===2?typeof e[1]=="object"?(t=!0,n=e[0],o=e[1]):(t=e[0],n=e[1]):(t=!0,n=e[0]);const{target:r=ee,eventName:i="keydown",passive:s=!1,dedupe:a=!1}=o,l=si(t);return Q(r,i,u=>{u.repeat&&B(a)||l(u)&&n(u)},s)}function ai(e={}){var t;const{window:n=ee,deep:o=!0,triggerOnRemoval:r=!1}=e,i=(t=e.document)!==null&&t!==void 0?t:n?.document,s=()=>{let u=i?.activeElement;if(o)for(var d;u?.shadowRoot;)u=u==null||(d=u.shadowRoot)===null||d===void 0?void 0:d.activeElement;return u},a=J(),l=()=>{a.value=s()};if(n){const u={capture:!0,passive:!0};Q(n,"blur",d=>{d.relatedTarget===null&&l()},u),Q(n,"focus",l,u)}return r&&ri(a,l,{document:i}),l(),a}const li=Symbol("vueuse-ssr-width");function ui(){const e=Mn()?Ko(li,null):null;return typeof e=="number"?e:void 0}function ci(e,t={}){const{window:n=ee,ssrWidth:o=ui()}=t,r=yt(()=>n&&"matchMedia"in n&&typeof n.matchMedia=="function"),i=J(typeof o=="number"),s=J(),a=J(!1),l=u=>{a.value=u.matches};return ft(()=>{if(i.value){i.value=!r.value,a.value=B(e).split(",").some(u=>{const d=u.includes("not all"),c=u.match(/\(\s*min-width:\s*(-?\d+(?:\.\d*)?[a-z]+\s*)\)/),m=u.match(/\(\s*max-width:\s*(-?\d+(?:\.\d*)?[a-z]+\s*)\)/);let p=!!(c||m);return c&&p&&(p=o>=tn(c[1])),m&&p&&(p=o<=tn(m[1])),d?!p:p});return}r.value&&(s.value=n.matchMedia(B(e)),a.value=s.value.matches)}),Q(s,"change",l,{passive:!0}),z(()=>a.value)}function Rs(e){return ci("(prefers-color-scheme: dark)",e)}function di(e,t,n={}){const{window:o=ee,...r}=n;let i;const s=yt(()=>o&&"ResizeObserver"in o),a=()=>{i&&(i.disconnect(),i=void 0)},l=le(z(()=>{const d=B(e);return Array.isArray(d)?d.map(c=>H(c)):[H(d)]}),d=>{if(a(),s.value&&o){i=new ResizeObserver(t);for(const c of d)c&&i.observe(c,r)}},{immediate:!0,flush:"post"}),u=()=>{a(),l()};return Ae(u),{isSupported:s,stop:u}}function Ms(e,t={width:0,height:0},n={}){const{window:o=ee,box:r="content-box"}=n,i=z(()=>{var c;return(c=H(e))===null||c===void 0||(c=c.namespaceURI)===null||c===void 0?void 0:c.includes("svg")}),s=J(t.width),a=J(t.height),{stop:l}=di(e,([c])=>{const m=r==="border-box"?c.borderBoxSize:r==="content-box"?c.contentBoxSize:c.devicePixelContentBoxSize;if(o&&i.value){const p=H(e);if(p){const g=p.getBoundingClientRect();s.value=g.width,a.value=g.height}}else if(m){const p=Ne(m);s.value=p.reduce((g,{inlineSize:y})=>g+y,0),a.value=p.reduce((g,{blockSize:y})=>g+y,0)}else s.value=c.contentRect.width,a.value=c.contentRect.height},n);Qo(()=>{const c=H(e);c&&(s.value="offsetWidth"in c?c.offsetWidth:t.width,a.value="offsetHeight"in c?c.offsetHeight:t.height)});const u=le(()=>H(e),c=>{s.value=c?t.width:0,a.value=c?t.height:0});function d(){l(),u()}return{width:s,height:a,stop:d}}function pi(e,t,n={}){const{root:o,rootMargin:r,threshold:i=0,window:s=ee,immediate:a=!0}=n,l=yt(()=>s&&"IntersectionObserver"in s),u=z(()=>Ne(B(e)).map(H).filter(In));let d=oe;const c=J(a),m=l.value?le(()=>[u.value,H(o),B(r),c.value],([g,y,v])=>{if(d(),!c.value||!g.length)return;const w=new IntersectionObserver(t,{root:H(y),rootMargin:v,threshold:i});g.forEach(b=>b&&w.observe(b)),d=()=>{w.disconnect(),d=oe}},{immediate:a,flush:"post"}):oe,p=()=>{d(),m(),c.value=!1};return Ae(p),{isSupported:l,isActive:c,pause(){d(),c.value=!1},resume(){c.value=!0},stop:p}}function Bs(e,t={}){const{window:n=ee,scrollTarget:o,threshold:r=0,rootMargin:i,once:s=!1,initialValue:a=!1}=t,l=J(a),u=pi(e,d=>{let c=l.value,m=0;for(const p of d)p.time>=m&&(m=p.time,c=p.isIntersecting);l.value=c,s&&ni(l,()=>{u.stop()})},{root:o,window:n,threshold:r,rootMargin:i});return t.controls?{...u,isVisible:l}:l}const hi="focusin",fi="focusout",mi=":focus-within";function Fs(e,t={}){const{window:n=ee}=t,o=z(()=>H(e)),r=J(!1),i=z(()=>r.value);if(!n||!ai(t).value)return{focused:i};const s={passive:!0};return Q(o,hi,()=>r.value=!0,s),Q(o,fi,()=>{var a,l,u;return r.value=(a=(l=o.value)===null||l===void 0||(u=l.matches)===null||u===void 0?void 0:u.call(l,mi))!==null&&a!==void 0?a:!1},s),{focused:i}}function gi(e,t={}){const{threshold:n=50,onSwipe:o,onSwipeEnd:r,onSwipeStart:i,passive:s=!0}=t,a=Jt({x:0,y:0}),l=Jt({x:0,y:0}),u=z(()=>a.x-l.x),d=z(()=>a.y-l.y),{max:c,abs:m}=Math,p=z(()=>c(m(u.value),m(d.value))>=n),g=J(!1),y=z(()=>p.value?m(u.value)>m(d.value)?u.value>0?"left":"right":d.value>0?"up":"down":"none"),v=S=>[S.touches[0].clientX,S.touches[0].clientY],w=(S,O)=>{a.x=S,a.y=O},b=(S,O)=>{l.x=S,l.y=O},_={passive:s,capture:!s},P=S=>{g.value&&r?.(S,y.value),g.value=!1},R=[Q(e,"touchstart",S=>{if(S.touches.length!==1)return;const[O,F]=v(S);w(O,F),b(O,F),i?.(S)},_),Q(e,"touchmove",S=>{if(S.touches.length!==1)return;const[O,F]=v(S);b(O,F),_.capture&&!_.passive&&Math.abs(u.value)>Math.abs(d.value)&&S.preventDefault(),!g.value&&p.value&&(g.value=!0),g.value&&o?.(S)},_),Q(e,["touchend","touchcancel"],P,_)];return{isSwiping:g,direction:y,coordsStart:a,coordsEnd:l,lengthX:u,lengthY:d,stop:()=>R.forEach(S=>S())}}const qt=1024,Hn=qt/2,nt=e=>document.documentElement.clientWidth<e,jn=Pe(nt(qt)),Wn=Pe(nt(Hn));window.addEventListener("resize",()=>{jn.value=nt(qt),Wn.value=nt(Hn)},{passive:!0});function Is(){return Wt(jn)}function Ls(){return Wt(Wn)}const ot=Vo(),vi=Symbol.for("NcActions:isSemanticMenu"),yi=Symbol.for("NcActions:closeMenu");function je(){return window._nc_focus_trap??=[],window._nc_focus_trap}function wi(){let e=[];return{pause(){e=[...je()];for(const t of e)t.pause()},unpause(){if(e.length===je().length)for(const t of e)t.unpause();e=[]}}}function bi(e,t={}){const n=wi();le(e,()=>{B(t.disabled)||(B(e)?n.pause():n.unpause())}),et(()=>{n.unpause()})}const Ti=["top","right","bottom","left"],on=["start","end"],rn=Ti.reduce((e,t)=>e.concat(t,t+"-"+on[0],t+"-"+on[1]),[]),We=Math.min,Dt=Math.max,zs=Math.round,Hs=Math.floor,js=e=>({x:e,y:e}),Si={left:"right",right:"left",bottom:"top",top:"bottom"};function Gn(e,t,n){return Dt(e,We(t,n))}function de(e,t){return typeof e=="function"?e(t):e}function ae(e){return e.split("-")[0]}function ne(e){return e.split("-")[1]}function Kt(e){return e==="x"?"y":"x"}function Ut(e){return e==="y"?"height":"width"}function ie(e){const t=e[0];return t==="t"||t==="b"?"y":"x"}function Yt(e){return Kt(ie(e))}function Vn(e,t,n){n===void 0&&(n=!1);const o=ne(e),r=Yt(e),i=Ut(r);let s=r==="x"?o===(n?"end":"start")?"right":"left":o==="start"?"bottom":"top";return t.reference[i]>t.floating[i]&&(s=rt(s)),[s,rt(s)]}function xi(e){const t=rt(e);return[it(e),t,it(t)]}function it(e){return e.includes("start")?e.replace("start","end"):e.replace("end","start")}const sn=["left","right"],an=["right","left"],_i=["top","bottom"],Ai=["bottom","top"];function $i(e,t,n){switch(e){case"top":case"bottom":return n?t?an:sn:t?sn:an;case"left":case"right":return t?_i:Ai;default:return[]}}function ki(e,t,n,o){const r=ne(e);let i=$i(ae(e),n==="start",o);return r&&(i=i.map(s=>s+"-"+r),t&&(i=i.concat(i.map(it)))),i}function rt(e){const t=ae(e);return Si[t]+e.slice(t.length)}function Ni(e){var t,n,o,r;return{top:(t=e.top)!=null?t:0,right:(n=e.right)!=null?n:0,bottom:(o=e.bottom)!=null?o:0,left:(r=e.left)!=null?r:0}}function qn(e){return typeof e!="number"?Ni(e):{top:e,right:e,bottom:e,left:e}}function Me(e){const{x:t,y:n,width:o,height:r}=e;return{width:o,height:r,top:n,left:t,right:t+o,bottom:n+r,x:t,y:n}}function ln(e,t,n){let{reference:o,floating:r}=e;const i=ie(t),s=Yt(t),a=Ut(s),l=ae(t),u=i==="y",d=o.x+o.width/2-r.width/2,c=o.y+o.height/2-r.height/2,m=o[a]/2-r[a]/2;let p;switch(l){case"top":p={x:d,y:o.y-r.height};break;case"bottom":p={x:d,y:o.y+o.height};break;case"right":p={x:o.x+o.width,y:c};break;case"left":p={x:o.x-r.width,y:c};break;default:p={x:o.x,y:o.y}}const g=ne(t);return g&&(p[s]+=m*(g==="end"?1:-1)*(n&&u?-1:1)),p}async function Ei(e,t){var n;t===void 0&&(t={});const{x:o,y:r,platform:i,rects:s,elements:a,strategy:l}=e,{boundary:u="clippingAncestors",rootBoundary:d="viewport",elementContext:c="floating",altBoundary:m=!1,padding:p=0}=de(t,e),g=qn(p),y=a[m?c==="floating"?"reference":"floating":c],v=Me(await i.getClippingRect({element:(n=await(i.isElement==null?void 0:i.isElement(y)))==null||n?y:y.contextElement||await(i.getDocumentElement==null?void 0:i.getDocumentElement(a.floating)),boundary:u,rootBoundary:d,strategy:l})),w=c==="floating"?{x:o,y:r,width:s.floating.width,height:s.floating.height}:s.reference,b=await(i.getOffsetParent==null?void 0:i.getOffsetParent(a.floating)),_=await(i.isElement==null?void 0:i.isElement(b))&&await(i.getScale==null?void 0:i.getScale(b))||{x:1,y:1},P=Me(i.convertOffsetParentRelativeRectToViewportRelativeRect?await i.convertOffsetParentRelativeRectToViewportRelativeRect({elements:a,rect:w,offsetParent:b,strategy:l}):w);return{top:(v.top-P.top+g.top)/_.y,bottom:(P.bottom-v.bottom+g.bottom)/_.y,left:(v.left-P.left+g.left)/_.x,right:(P.right-v.right+g.right)/_.x}}const Pi=50,Ci=async(e,t,n)=>{const{placement:o="bottom",strategy:r="absolute",middleware:i=[],platform:s}=n,a=s.detectOverflow?s:{...s,detectOverflow:Ei},l=await(s.isRTL==null?void 0:s.isRTL(t));let u=await s.getElementRects({reference:e,floating:t,strategy:r}),{x:d,y:c}=ln(u,o,l),m=o,p=0;const g={};for(let y=0;y<i.length;y++){const v=i[y];if(!v)continue;const{name:w,fn:b}=v,{x:_,y:P,data:R,reset:S}=await b({x:d,y:c,initialPlacement:o,placement:m,strategy:r,middlewareData:g,rects:u,platform:a,elements:{reference:e,floating:t}});d=_??d,c=P??c,g[w]={...g[w],...R},S&&p<Pi&&(p++,typeof S=="object"&&(S.placement&&(m=S.placement),S.rects&&(u=S.rects===!0?await s.getElementRects({reference:e,floating:t,strategy:r}):S.rects),{x:d,y:c}=ln(u,m,l)),y=-1)}return{x:d,y:c,placement:m,strategy:r,middlewareData:g}},Di=e=>({name:"arrow",options:e,async fn(t){const{x:n,y:o,placement:r,rects:i,platform:s,elements:a,middlewareData:l}=t,{element:u,padding:d=0}=de(e,t)||{};if(u==null)return{};const c=qn(d),m={x:n,y:o},p=Yt(r),g=Ut(p),y=await s.getDimensions(u),v=p==="y",w=v?"top":"left",b=v?"bottom":"right",_=v?"clientHeight":"clientWidth",P=i.reference[g]+i.reference[p]-m[p]-i.floating[g],R=m[p]-i.reference[p],S=await(s.getOffsetParent==null?void 0:s.getOffsetParent(u));let O=S?S[_]:0;(!O||!await(s.isElement==null?void 0:s.isElement(S)))&&(O=a.floating[_]||i.floating[g]);const F=P/2-R/2,I=O/2-y[g]/2-1,A=We(c[w],I),L=We(c[b],I),h=O-y[g]-L,f=O/2-y[g]/2+F,T=Gn(A,f,h),E=!l.arrow&&ne(r)!=null&&f!==T&&i.reference[g]/2-(f<A?A:L)-y[g]/2<0,$=E?f<A?f-A:f-h:0;return{[p]:m[p]+$,data:{[p]:T,centerOffset:f-T-$,...E&&{alignmentOffset:$}},reset:E}}});function Oi(e,t,n){return(e?[...n.filter(o=>ne(o)===e),...n.filter(o=>ne(o)!==e)]:n.filter(o=>ae(o)===o)).filter(o=>e?ne(o)===e||(t?it(o)!==o:!1):!0)}const Ri=function(e){return e===void 0&&(e={}),{name:"autoPlacement",options:e,async fn(t){var n,o,r;const{rects:i,middlewareData:s,placement:a,platform:l,elements:u}=t,{crossAxis:d=!1,alignment:c,allowedPlacements:m=rn,autoAlignment:p=!0,...g}=de(e,t),y=c!==void 0||m===rn?Oi(c||null,p,m):m,v=((n=s.autoPlacement)==null?void 0:n.index)||0,w=y[v];if(w==null)return{};if(a!==w)return{reset:{placement:y[0]}};const b=await l.detectOverflow(t,g),_=Vn(w,i,await(l.isRTL==null?void 0:l.isRTL(u.floating))),P=[b[ae(w)],b[_[0]],b[_[1]]],R=[...((o=s.autoPlacement)==null?void 0:o.overflows)||[],{placement:w,overflows:P}],S=y[v+1];if(S)return{data:{index:v+1,overflows:R},reset:{placement:S}};const O=R.map(I=>{const A=ne(I.placement);return[I.placement,A&&d?I.overflows.slice(0,2).reduce((L,h)=>L+h,0):I.overflows[0],I.overflows]}).sort((I,A)=>I[1]-A[1]),F=((r=O.filter(I=>I[2].slice(0,ne(I[0])?2:3).every(A=>A<=0))[0])==null?void 0:r[0])||O[0][0];return F!==a?{data:{index:v+1,overflows:R},reset:{placement:F}}:{}}}},Mi=function(e){return e===void 0&&(e={}),{name:"flip",options:e,async fn(t){var n,o;const{placement:r,middlewareData:i,rects:s,initialPlacement:a,platform:l,elements:u}=t,{mainAxis:d=!0,crossAxis:c=!0,fallbackPlacements:m,fallbackStrategy:p="bestFit",fallbackAxisSideDirection:g="none",flipAlignment:y=!0,...v}=de(e,t);if((n=i.arrow)!=null&&n.alignmentOffset)return{};const w=ae(r),b=ie(a),_=ae(a)===a,P=await(l.isRTL==null?void 0:l.isRTL(u.floating)),R=m||(_||!y?[rt(a)]:xi(a)),S=g!=="none";!m&&S&&R.push(...ki(a,y,g,P));const O=[a,...R],F=await l.detectOverflow(t,v),I=[];let A=((o=i.flip)==null?void 0:o.overflows)||[];if(d&&I.push(F[w]),c){const T=Vn(r,s,P);I.push(F[T[0]],F[T[1]])}if(A=[...A,{placement:r,overflows:I}],!I.every(T=>T<=0)){var L,h;const T=(((L=i.flip)==null?void 0:L.index)||0)+1,E=O[T];if(E&&(!(c==="alignment"&&b!==ie(E))||A.every(C=>ie(C.placement)===b?C.overflows[0]>0:!0)))return{data:{index:T,overflows:A},reset:{placement:E}};let $=(h=A.filter(C=>C.overflows[0]<=0).sort((C,x)=>C.overflows[1]-x.overflows[1])[0])==null?void 0:h.placement;if(!$)switch(p){case"bestFit":{var f;const C=(f=A.filter(x=>{if(S){const k=ie(x.placement);return k===b||k==="y"}return!0}).map(x=>[x.placement,x.overflows.filter(k=>k>0).reduce((k,N)=>k+N,0)]).sort((x,k)=>x[1]-k[1])[0])==null?void 0:f[0];C&&($=C);break}case"initialPlacement":$=a;break}if(r!==$)return{reset:{placement:$}}}return{}}}},Kn=new Set(["left","top"]);async function Bi(e,t){const{placement:n,platform:o,elements:r}=e,i=await(o.isRTL==null?void 0:o.isRTL(r.floating)),s=ae(n),a=ne(n),l=ie(n)==="y",u=Kn.has(s)?-1:1,d=i&&l?-1:1,c=de(t,e);let{mainAxis:m,crossAxis:p,alignmentAxis:g}=typeof c=="number"?{mainAxis:c,crossAxis:0,alignmentAxis:null}:{mainAxis:c.mainAxis||0,crossAxis:c.crossAxis||0,alignmentAxis:c.alignmentAxis};return a&&typeof g=="number"&&(p=a==="end"?g*-1:g),l?{x:p*d,y:m*u}:{x:m*u,y:p*d}}const Fi=function(e){return e===void 0&&(e=0),{name:"offset",options:e,async fn(t){var n,o;const{x:r,y:i,placement:s,middlewareData:a}=t,l=await Bi(t,e);return s===((n=a.offset)==null?void 0:n.placement)&&(o=a.arrow)!=null&&o.alignmentOffset?{}:{x:r+l.x,y:i+l.y,data:{...l,placement:s}}}}},Ii=function(e){return e===void 0&&(e={}),{name:"shift",options:e,async fn(t){const{x:n,y:o,placement:r,platform:i}=t,{mainAxis:s=!0,crossAxis:a=!1,limiter:l={fn:b=>{let{x:_,y:P}=b;return{x:_,y:P}}},...u}=de(e,t),d={x:n,y:o},c=await i.detectOverflow(t,u),m=ie(r),p=Kt(m);let g=d[p],y=d[m];const v=(b,_)=>Gn(_+c[b==="y"?"top":"left"],_,_-c[b==="y"?"bottom":"right"]);s&&(g=v(p,g)),a&&(y=v(m,y));const w=l.fn({...t,[p]:g,[m]:y});return{...w,data:{x:w.x-n,y:w.y-o,enabled:{[p]:s,[m]:a}}}}}},Ws=function(e){return e===void 0&&(e={}),{options:e,fn(t){var n,o;const{x:r,y:i,placement:s,rects:a,middlewareData:l}=t,{offset:u=0,mainAxis:d=!0,crossAxis:c=!0}=de(e,t),m={x:r,y:i},p=ie(s),g=Kt(p);let y=m[g],v=m[p];const w=de(u,t),b=typeof w=="number"?{mainAxis:w,crossAxis:0}:{mainAxis:(n=w.mainAxis)!=null?n:0,crossAxis:(o=w.crossAxis)!=null?o:0};if(d){const R=g==="y"?"height":"width",S=a.reference[g]-a.floating[R]+b.mainAxis,O=a.reference[g]+a.reference[R]-b.mainAxis;y<S?y=S:y>O&&(y=O)}if(c){var _,P;const R=g==="y"?"width":"height",S=Kn.has(ae(s)),O=a.reference[p]-a.floating[R]+(S&&((_=l.offset)==null?void 0:_[p])||0)+(S?0:b.crossAxis),F=a.reference[p]+a.reference[R]+(S?0:((P=l.offset)==null?void 0:P[p])||0)-(S?b.crossAxis:0);v<O?v=O:v>F&&(v=F)}return{[g]:y,[p]:v}}}},Li=function(e){return e===void 0&&(e={}),{name:"size",options:e,async fn(t){const{placement:n,rects:o,platform:r,elements:i}=t,{apply:s=()=>{},...a}=de(e,t),l=await r.detectOverflow(t,a),u=ae(n),d=ne(n),c=ie(n)==="y",{width:m,height:p}=o.floating;let g,y;u==="top"||u==="bottom"?(g=u,y=d===(await(r.isRTL==null?void 0:r.isRTL(i.floating))?"start":"end")?"left":"right"):(y=u,g=d==="end"?"top":"bottom");const v=p-l.top-l.bottom,w=m-l.left-l.right,b=We(p-l[g],v),_=We(m-l[y],w),P=t.middlewareData.shift,R=!P;let S=b,O=_;P!=null&&P.enabled.x&&(O=w),P!=null&&P.enabled.y&&(S=v),R&&!d&&(c?O=m-2*Dt(l.left,l.right):S=p-2*Dt(l.top,l.bottom)),await s({...t,availableWidth:O,availableHeight:S});const F=await r.getDimensions(i.floating);return m!==F.width||p!==F.height?{reset:{rects:!0}}:{}}}};function Z(e){var t;return((t=e.ownerDocument)==null?void 0:t.defaultView)||window}function re(e){return Z(e).getComputedStyle(e)}const un=Math.min,Be=Math.max,st=Math.round;function Un(e){const t=re(e);let n=parseFloat(t.width),o=parseFloat(t.height);const r=e.offsetWidth,i=e.offsetHeight,s=st(n)!==r||st(o)!==i;return s&&(n=r,o=i),{width:n,height:o,fallback:s}}function be(e){return Xn(e)?(e.nodeName||"").toLowerCase():""}let Ye;function Yn(){if(Ye)return Ye;const e=navigator.userAgentData;return e&&Array.isArray(e.brands)?(Ye=e.brands.map((t=>t.brand+"/"+t.version)).join(" "),Ye):navigator.userAgent}function se(e){return e instanceof Z(e).HTMLElement}function ge(e){return e instanceof Z(e).Element}function Xn(e){return e instanceof Z(e).Node}function cn(e){return typeof ShadowRoot>"u"?!1:e instanceof Z(e).ShadowRoot||e instanceof ShadowRoot}function wt(e){const{overflow:t,overflowX:n,overflowY:o,display:r}=re(e);return/auto|scroll|overlay|hidden|clip/.test(t+o+n)&&!["inline","contents"].includes(r)}function zi(e){return["table","td","th"].includes(be(e))}function Ot(e){const t=/firefox/i.test(Yn()),n=re(e),o=n.backdropFilter||n.WebkitBackdropFilter;return n.transform!=="none"||n.perspective!=="none"||!!o&&o!=="none"||t&&n.willChange==="filter"||t&&!!n.filter&&n.filter!=="none"||["transform","perspective"].some((r=>n.willChange.includes(r)))||["paint","layout","strict","content"].some((r=>{const i=n.contain;return i!=null&&i.includes(r)}))}function Zn(){return!/^((?!chrome|android).)*safari/i.test(Yn())}function Xt(e){return["html","body","#document"].includes(be(e))}function Jn(e){return ge(e)?e:e.contextElement}const Qn={x:1,y:1};function Ee(e){const t=Jn(e);if(!se(t))return Qn;const n=t.getBoundingClientRect(),{width:o,height:r,fallback:i}=Un(t);let s=(i?st(n.width):n.width)/o,a=(i?st(n.height):n.height)/r;return s&&Number.isFinite(s)||(s=1),a&&Number.isFinite(a)||(a=1),{x:s,y:a}}function Ge(e,t,n,o){var r,i;t===void 0&&(t=!1),n===void 0&&(n=!1);const s=e.getBoundingClientRect(),a=Jn(e);let l=Qn;t&&(o?ge(o)&&(l=Ee(o)):l=Ee(e));const u=a?Z(a):window,d=!Zn()&&n;let c=(s.left+(d&&((r=u.visualViewport)==null?void 0:r.offsetLeft)||0))/l.x,m=(s.top+(d&&((i=u.visualViewport)==null?void 0:i.offsetTop)||0))/l.y,p=s.width/l.x,g=s.height/l.y;if(a){const y=Z(a),v=o&&ge(o)?Z(o):o;let w=y.frameElement;for(;w&&o&&v!==y;){const b=Ee(w),_=w.getBoundingClientRect(),P=getComputedStyle(w);_.x+=(w.clientLeft+parseFloat(P.paddingLeft))*b.x,_.y+=(w.clientTop+parseFloat(P.paddingTop))*b.y,c*=b.x,m*=b.y,p*=b.x,g*=b.y,c+=_.x,m+=_.y,w=Z(w).frameElement}}return{width:p,height:g,top:m,right:c+p,bottom:m+g,left:c,x:c,y:m}}function ve(e){return((Xn(e)?e.ownerDocument:e.document)||window.document).documentElement}function bt(e){return ge(e)?{scrollLeft:e.scrollLeft,scrollTop:e.scrollTop}:{scrollLeft:e.pageXOffset,scrollTop:e.pageYOffset}}function eo(e){return Ge(ve(e)).left+bt(e).scrollLeft}function Ve(e){if(be(e)==="html")return e;const t=e.assignedSlot||e.parentNode||cn(e)&&e.host||ve(e);return cn(t)?t.host:t}function to(e){const t=Ve(e);return Xt(t)?t.ownerDocument.body:se(t)&&wt(t)?t:to(t)}function at(e,t){var n;t===void 0&&(t=[]);const o=to(e),r=o===((n=e.ownerDocument)==null?void 0:n.body),i=Z(o);return r?t.concat(i,i.visualViewport||[],wt(o)?o:[]):t.concat(o,at(o))}function dn(e,t,n){return t==="viewport"?Me((function(o,r){const i=Z(o),s=ve(o),a=i.visualViewport;let l=s.clientWidth,u=s.clientHeight,d=0,c=0;if(a){l=a.width,u=a.height;const m=Zn();(m||!m&&r==="fixed")&&(d=a.offsetLeft,c=a.offsetTop)}return{width:l,height:u,x:d,y:c}})(e,n)):ge(t)?Me((function(o,r){const i=Ge(o,!0,r==="fixed"),s=i.top+o.clientTop,a=i.left+o.clientLeft,l=se(o)?Ee(o):{x:1,y:1};return{width:o.clientWidth*l.x,height:o.clientHeight*l.y,x:a*l.x,y:s*l.y}})(t,n)):Me((function(o){const r=ve(o),i=bt(o),s=o.ownerDocument.body,a=Be(r.scrollWidth,r.clientWidth,s.scrollWidth,s.clientWidth),l=Be(r.scrollHeight,r.clientHeight,s.scrollHeight,s.clientHeight);let u=-i.scrollLeft+eo(o);const d=-i.scrollTop;return re(s).direction==="rtl"&&(u+=Be(r.clientWidth,s.clientWidth)-a),{width:a,height:l,x:u,y:d}})(ve(e)))}function pn(e){return se(e)&&re(e).position!=="fixed"?e.offsetParent:null}function hn(e){const t=Z(e);let n=pn(e);for(;n&&zi(n)&&re(n).position==="static";)n=pn(n);return n&&(be(n)==="html"||be(n)==="body"&&re(n).position==="static"&&!Ot(n))?t:n||(function(o){let r=Ve(o);for(;se(r)&&!Xt(r);){if(Ot(r))return r;r=Ve(r)}return null})(e)||t}function Hi(e,t,n){const o=se(t),r=ve(t),i=Ge(e,!0,n==="fixed",t);let s={scrollLeft:0,scrollTop:0};const a={x:0,y:0};if(o||!o&&n!=="fixed")if((be(t)!=="body"||wt(r))&&(s=bt(t)),se(t)){const l=Ge(t,!0);a.x=l.x+t.clientLeft,a.y=l.y+t.clientTop}else r&&(a.x=eo(r));return{x:i.left+s.scrollLeft-a.x,y:i.top+s.scrollTop-a.y,width:i.width,height:i.height}}const ji={getClippingRect:function(e){let{element:t,boundary:n,rootBoundary:o,strategy:r}=e;const i=n==="clippingAncestors"?(function(u,d){const c=d.get(u);if(c)return c;let m=at(u).filter((v=>ge(v)&&be(v)!=="body")),p=null;const g=re(u).position==="fixed";let y=g?Ve(u):u;for(;ge(y)&&!Xt(y);){const v=re(y),w=Ot(y);(g?w||p:w||v.position!=="static"||!p||!["absolute","fixed"].includes(p.position))?p=v:m=m.filter((b=>b!==y)),y=Ve(y)}return d.set(u,m),m})(t,this._c):[].concat(n),s=[...i,o],a=s[0],l=s.reduce(((u,d)=>{const c=dn(t,d,r);return u.top=Be(c.top,u.top),u.right=un(c.right,u.right),u.bottom=un(c.bottom,u.bottom),u.left=Be(c.left,u.left),u}),dn(t,a,r));return{width:l.right-l.left,height:l.bottom-l.top,x:l.left,y:l.top}},convertOffsetParentRelativeRectToViewportRelativeRect:function(e){let{rect:t,offsetParent:n,strategy:o}=e;const r=se(n),i=ve(n);if(n===i)return t;let s={scrollLeft:0,scrollTop:0},a={x:1,y:1};const l={x:0,y:0};if((r||!r&&o!=="fixed")&&((be(n)!=="body"||wt(i))&&(s=bt(n)),se(n))){const u=Ge(n);a=Ee(n),l.x=u.x+n.clientLeft,l.y=u.y+n.clientTop}return{width:t.width*a.x,height:t.height*a.y,x:t.x*a.x-s.scrollLeft*a.x+l.x,y:t.y*a.y-s.scrollTop*a.y+l.y}},isElement:ge,getDimensions:function(e){return se(e)?Un(e):e.getBoundingClientRect()},getOffsetParent:hn,getDocumentElement:ve,getScale:Ee,async getElementRects(e){let{reference:t,floating:n,strategy:o}=e;const r=this.getOffsetParent||hn,i=this.getDimensions;return{reference:Hi(t,await r(n),o),floating:{x:0,y:0,...await i(n)}}},getClientRects:e=>Array.from(e.getClientRects()),isRTL:e=>re(e).direction==="rtl"},Wi=(e,t,n)=>{const o=new Map,r={platform:ji,...n},i={...r.platform,_c:o};return Ci(e,t,{...r,platform:i})},ye={disabled:!1,distance:5,skidding:0,container:"body",boundary:void 0,instantMove:!1,disposeTimeout:150,popperTriggers:[],strategy:"absolute",preventOverflow:!0,flip:!0,shift:!0,overflowPadding:0,arrowPadding:0,arrowOverflow:!0,autoHideOnMousedown:!1,themes:{tooltip:{placement:"top",triggers:["hover","focus","touch"],hideTriggers:e=>[...e,"click"],delay:{show:200,hide:0},handleResize:!1,html:!1,loadingContent:"..."},dropdown:{placement:"bottom",triggers:["click"],delay:0,handleResize:!0,autoHide:!0},menu:{$extend:"dropdown",triggers:["hover","focus"],popperTriggers:["hover"],delay:{show:0,hide:400}}}};function Rt(e,t){let n=ye.themes[e]||{},o;do o=n[t],typeof o>"u"?n.$extend?n=ye.themes[n.$extend]||{}:(n=null,o=ye[t]):n=null;while(n);return o}function Gi(e){const t=[e];let n=ye.themes[e]||{};do n.$extend&&!n.$resetCss?(t.push(n.$extend),n=ye.themes[n.$extend]||{}):n=null;while(n);return t.map(o=>`v-popper--theme-${o}`)}function fn(e){const t=[e];let n=ye.themes[e]||{};do n.$extend?(t.push(n.$extend),n=ye.themes[n.$extend]||{}):n=null;while(n);return t}let qe=!1;if(typeof window<"u"){qe=!1;try{const e=Object.defineProperty({},"passive",{get(){qe=!0}});window.addEventListener("test",null,e)}catch{}}let no=!1;typeof window<"u"&&typeof navigator<"u"&&(no=/iPad|iPhone|iPod/.test(navigator.userAgent)&&!window.MSStream);const Vi=["auto","top","bottom","left","right"].reduce((e,t)=>e.concat([t,`${t}-start`,`${t}-end`]),[]),mn={hover:"mouseenter",focus:"focus",click:"click",touch:"touchstart",pointer:"pointerdown"},gn={hover:"mouseleave",focus:"blur",click:"click",touch:"touchend",pointer:"pointerup"};function vn(e,t){const n=e.indexOf(t);n!==-1&&e.splice(n,1)}function kt(){return new Promise(e=>requestAnimationFrame(()=>{requestAnimationFrame(e)}))}const te=[];let Te=null;const yn={};function wn(e){let t=yn[e];return t||(t=yn[e]=[]),t}let Mt=function(){};typeof window<"u"&&(Mt=window.Element);function D(e){return function(t){return Rt(t.theme,e)}}const Nt="__floating-vue__popper",oo=()=>Ce({name:"VPopper",provide(){return{[Nt]:{parentPopper:this}}},inject:{[Nt]:{default:null}},props:{theme:{type:String,required:!0},targetNodes:{type:Function,required:!0},referenceNode:{type:Function,default:null},popperNode:{type:Function,required:!0},shown:{type:Boolean,default:!1},showGroup:{type:String,default:null},ariaId:{default:null},disabled:{type:Boolean,default:D("disabled")},positioningDisabled:{type:Boolean,default:D("positioningDisabled")},placement:{type:String,default:D("placement"),validator:e=>Vi.includes(e)},delay:{type:[String,Number,Object],default:D("delay")},distance:{type:[Number,String],default:D("distance")},skidding:{type:[Number,String],default:D("skidding")},triggers:{type:Array,default:D("triggers")},showTriggers:{type:[Array,Function],default:D("showTriggers")},hideTriggers:{type:[Array,Function],default:D("hideTriggers")},popperTriggers:{type:Array,default:D("popperTriggers")},popperShowTriggers:{type:[Array,Function],default:D("popperShowTriggers")},popperHideTriggers:{type:[Array,Function],default:D("popperHideTriggers")},container:{type:[String,Object,Mt,Boolean],default:D("container")},boundary:{type:[String,Mt],default:D("boundary")},strategy:{type:String,validator:e=>["absolute","fixed"].includes(e),default:D("strategy")},autoHide:{type:[Boolean,Function],default:D("autoHide")},handleResize:{type:Boolean,default:D("handleResize")},instantMove:{type:Boolean,default:D("instantMove")},eagerMount:{type:Boolean,default:D("eagerMount")},popperClass:{type:[String,Array,Object],default:D("popperClass")},computeTransformOrigin:{type:Boolean,default:D("computeTransformOrigin")},autoMinSize:{type:Boolean,default:D("autoMinSize")},autoSize:{type:[Boolean,String],default:D("autoSize")},autoMaxSize:{type:Boolean,default:D("autoMaxSize")},autoBoundaryMaxSize:{type:Boolean,default:D("autoBoundaryMaxSize")},preventOverflow:{type:Boolean,default:D("preventOverflow")},overflowPadding:{type:[Number,String],default:D("overflowPadding")},arrowPadding:{type:[Number,String],default:D("arrowPadding")},arrowOverflow:{type:Boolean,default:D("arrowOverflow")},flip:{type:Boolean,default:D("flip")},shift:{type:Boolean,default:D("shift")},shiftCrossAxis:{type:Boolean,default:D("shiftCrossAxis")},noAutoFocus:{type:Boolean,default:D("noAutoFocus")},disposeTimeout:{type:Number,default:D("disposeTimeout")}},emits:{show:()=>!0,hide:()=>!0,"update:shown":e=>!0,"apply-show":()=>!0,"apply-hide":()=>!0,"close-group":()=>!0,"close-directive":()=>!0,"auto-hide":()=>!0,resize:()=>!0},data(){return{isShown:!1,isMounted:!1,skipTransition:!1,classes:{showFrom:!1,showTo:!1,hideFrom:!1,hideTo:!0},result:{x:0,y:0,placement:"",strategy:this.strategy,arrow:{x:0,y:0,centerOffset:0},transformOrigin:null},randomId:`popper_${[Math.random(),Date.now()].map(e=>e.toString(36).substring(2,10)).join("_")}`,shownChildren:new Set,lastAutoHide:!0,pendingHide:!1,containsGlobalTarget:!1,isDisposed:!0,mouseDownContains:!1}},computed:{popperId(){return this.ariaId!=null?this.ariaId:this.randomId},shouldMountContent(){return this.eagerMount||this.isMounted},slotData(){return{popperId:this.popperId,isShown:this.isShown,shouldMountContent:this.shouldMountContent,skipTransition:this.skipTransition,autoHide:typeof this.autoHide=="function"?this.lastAutoHide:this.autoHide,show:this.show,hide:this.hide,handleResize:this.handleResize,onResize:this.onResize,classes:{...this.classes,popperClass:this.popperClass},result:this.positioningDisabled?null:this.result,attrs:this.$attrs}},parentPopper(){var e;return(e=this[Nt])==null?void 0:e.parentPopper},hasPopperShowTriggerHover(){var e,t;return((e=this.popperTriggers)==null?void 0:e.includes("hover"))||((t=this.popperShowTriggers)==null?void 0:t.includes("hover"))}},watch:{shown:"$_autoShowHide",disabled(e){e?this.dispose():this.init()},async container(){this.isShown&&(this.$_ensureTeleport(),await this.$_computePosition())},triggers:{handler:"$_refreshListeners",deep:!0},positioningDisabled:"$_refreshListeners",...["placement","distance","skidding","boundary","strategy","overflowPadding","arrowPadding","preventOverflow","shift","shiftCrossAxis","flip"].reduce((e,t)=>(e[t]="$_computePosition",e),{})},created(){this.autoMinSize&&console.warn('[floating-vue] `autoMinSize` option is deprecated. Use `autoSize="min"` instead.'),this.autoMaxSize&&console.warn("[floating-vue] `autoMaxSize` option is deprecated. Use `autoBoundaryMaxSize` instead.")},mounted(){this.init(),this.$_detachPopperNode()},activated(){this.$_autoShowHide()},deactivated(){this.hide()},beforeUnmount(){this.dispose()},methods:{show({event:e=null,skipDelay:t=!1,force:n=!1}={}){var o,r;(o=this.parentPopper)!=null&&o.lockedChild&&this.parentPopper.lockedChild!==this||(this.pendingHide=!1,(n||!this.disabled)&&(((r=this.parentPopper)==null?void 0:r.lockedChild)===this&&(this.parentPopper.lockedChild=null),this.$_scheduleShow(e,t),this.$emit("show"),this.$_showFrameLocked=!0,requestAnimationFrame(()=>{this.$_showFrameLocked=!1})),this.$emit("update:shown",!0))},hide({event:e=null,skipDelay:t=!1}={}){var n;if(!this.$_hideInProgress){if(this.shownChildren.size>0){this.pendingHide=!0;return}if(this.hasPopperShowTriggerHover&&this.$_isAimingPopper()){this.parentPopper&&(this.parentPopper.lockedChild=this,clearTimeout(this.parentPopper.lockedChildTimer),this.parentPopper.lockedChildTimer=setTimeout(()=>{this.parentPopper.lockedChild===this&&(this.parentPopper.lockedChild.hide({skipDelay:t}),this.parentPopper.lockedChild=null)},1e3));return}((n=this.parentPopper)==null?void 0:n.lockedChild)===this&&(this.parentPopper.lockedChild=null),this.pendingHide=!1,this.$_scheduleHide(e,t),this.$emit("hide"),this.$emit("update:shown",!1)}},init(){var e;this.isDisposed&&(this.isDisposed=!1,this.isMounted=!1,this.$_events=[],this.$_preventShow=!1,this.$_referenceNode=((e=this.referenceNode)==null?void 0:e.call(this))??this.$el,this.$_targetNodes=this.targetNodes().filter(t=>t.nodeType===t.ELEMENT_NODE),this.$_popperNode=this.popperNode(),this.$_innerNode=this.$_popperNode.querySelector(".v-popper__inner"),this.$_arrowNode=this.$_popperNode.querySelector(".v-popper__arrow-container"),this.$_swapTargetAttrs("title","data-original-title"),this.$_detachPopperNode(),this.triggers.length&&this.$_addEventListeners(),this.shown&&this.show())},dispose(){this.isDisposed||(this.isDisposed=!0,this.$_removeEventListeners(),this.hide({skipDelay:!0}),this.$_detachPopperNode(),this.isMounted=!1,this.isShown=!1,this.$_updateParentShownChildren(!1),this.$_swapTargetAttrs("data-original-title","title"))},async onResize(){this.isShown&&(await this.$_computePosition(),this.$emit("resize"))},async $_computePosition(){if(this.isDisposed||this.positioningDisabled)return;const e={strategy:this.strategy,middleware:[]};(this.distance||this.skidding)&&e.middleware.push(Fi({mainAxis:this.distance,crossAxis:this.skidding}));const t=this.placement.startsWith("auto");if(t?e.middleware.push(Ri({alignment:this.placement.split("-")[1]??""})):e.placement=this.placement,this.preventOverflow&&(this.shift&&e.middleware.push(Ii({padding:this.overflowPadding,boundary:this.boundary,crossAxis:this.shiftCrossAxis})),!t&&this.flip&&e.middleware.push(Mi({padding:this.overflowPadding,boundary:this.boundary}))),e.middleware.push(Di({element:this.$_arrowNode,padding:this.arrowPadding})),this.arrowOverflow&&e.middleware.push({name:"arrowOverflow",fn:({placement:o,rects:r,middlewareData:i})=>{let s;const{centerOffset:a}=i.arrow;return o.startsWith("top")||o.startsWith("bottom")?s=Math.abs(a)>r.reference.width/2:s=Math.abs(a)>r.reference.height/2,{data:{overflow:s}}}}),this.autoMinSize||this.autoSize){const o=this.autoSize?this.autoSize:this.autoMinSize?"min":null;e.middleware.push({name:"autoSize",fn:({rects:r,placement:i,middlewareData:s})=>{var a;if((a=s.autoSize)!=null&&a.skip)return{};let l,u;return i.startsWith("top")||i.startsWith("bottom")?l=r.reference.width:u=r.reference.height,this.$_innerNode.style[o==="min"?"minWidth":o==="max"?"maxWidth":"width"]=l!=null?`${l}px`:null,this.$_innerNode.style[o==="min"?"minHeight":o==="max"?"maxHeight":"height"]=u!=null?`${u}px`:null,{data:{skip:!0},reset:{rects:!0}}}})}(this.autoMaxSize||this.autoBoundaryMaxSize)&&(this.$_innerNode.style.maxWidth=null,this.$_innerNode.style.maxHeight=null,e.middleware.push(Li({boundary:this.boundary,padding:this.overflowPadding,apply:({availableWidth:o,availableHeight:r})=>{this.$_innerNode.style.maxWidth=o!=null?`${o}px`:null,this.$_innerNode.style.maxHeight=r!=null?`${r}px`:null}})));const n=await Wi(this.$_referenceNode,this.$_popperNode,e);Object.assign(this.result,{x:n.x,y:n.y,placement:n.placement,strategy:n.strategy,arrow:{...n.middlewareData.arrow,...n.middlewareData.arrowOverflow}})},$_scheduleShow(e,t=!1){if(this.$_updateParentShownChildren(!0),this.$_hideInProgress=!1,clearTimeout(this.$_scheduleTimer),Te&&this.instantMove&&Te.instantMove&&Te!==this.parentPopper){Te.$_applyHide(!0),this.$_applyShow(!0);return}t?this.$_applyShow():this.$_scheduleTimer=setTimeout(this.$_applyShow.bind(this),this.$_computeDelay("show"))},$_scheduleHide(e,t=!1){if(this.shownChildren.size>0){this.pendingHide=!0;return}this.$_updateParentShownChildren(!1),this.$_hideInProgress=!0,clearTimeout(this.$_scheduleTimer),this.isShown&&(Te=this),t?this.$_applyHide():this.$_scheduleTimer=setTimeout(this.$_applyHide.bind(this),this.$_computeDelay("hide"))},$_computeDelay(e){const t=this.delay;return parseInt(t&&t[e]||t||0)},async $_applyShow(e=!1){clearTimeout(this.$_disposeTimer),clearTimeout(this.$_scheduleTimer),this.skipTransition=e,!this.isShown&&(this.$_ensureTeleport(),await kt(),await this.$_computePosition(),await this.$_applyShowEffect(),this.positioningDisabled||this.$_registerEventListeners([...at(this.$_referenceNode),...at(this.$_popperNode)],"scroll",()=>{this.$_computePosition()}))},async $_applyShowEffect(){if(this.$_hideInProgress)return;if(this.computeTransformOrigin){const t=this.$_referenceNode.getBoundingClientRect(),n=this.$_popperNode.querySelector(".v-popper__wrapper"),o=n.parentNode.getBoundingClientRect(),r=t.x+t.width/2-(o.left+n.offsetLeft),i=t.y+t.height/2-(o.top+n.offsetTop);this.result.transformOrigin=`${r}px ${i}px`}this.isShown=!0,this.$_applyAttrsToTarget({"aria-describedby":this.popperId,"data-popper-shown":""});const e=this.showGroup;if(e){let t;for(let n=0;n<te.length;n++)t=te[n],t.showGroup!==e&&(t.hide(),t.$emit("close-group"))}te.push(this),document.body.classList.add("v-popper--some-open");for(const t of fn(this.theme))wn(t).push(this),document.body.classList.add(`v-popper--some-open--${t}`);this.$emit("apply-show"),this.classes.showFrom=!0,this.classes.showTo=!1,this.classes.hideFrom=!1,this.classes.hideTo=!1,await kt(),this.classes.showFrom=!1,this.classes.showTo=!0,this.noAutoFocus||this.$_popperNode.focus()},async $_applyHide(e=!1){if(this.shownChildren.size>0){this.pendingHide=!0,this.$_hideInProgress=!1;return}if(clearTimeout(this.$_scheduleTimer),!this.isShown)return;this.skipTransition=e,vn(te,this),te.length===0&&document.body.classList.remove("v-popper--some-open");for(const n of fn(this.theme)){const o=wn(n);vn(o,this),o.length===0&&document.body.classList.remove(`v-popper--some-open--${n}`)}Te===this&&(Te=null),this.isShown=!1,this.$_applyAttrsToTarget({"aria-describedby":void 0,"data-popper-shown":void 0}),clearTimeout(this.$_disposeTimer);const t=this.disposeTimeout;t!==null&&(this.$_disposeTimer=setTimeout(()=>{this.$_popperNode&&(this.$_detachPopperNode(),this.isMounted=!1)},t)),this.$_removeEventListeners("scroll"),this.$emit("apply-hide"),this.classes.showFrom=!1,this.classes.showTo=!1,this.classes.hideFrom=!0,this.classes.hideTo=!1,await kt(),this.classes.hideFrom=!1,this.classes.hideTo=!0},$_autoShowHide(){this.shown?this.show():this.hide()},$_ensureTeleport(){if(this.isDisposed)return;let e=this.container;if(typeof e=="string"?e=window.document.querySelector(e):e===!1&&(e=this.$_targetNodes[0].parentNode),!e)throw new Error("No container for popover: "+this.container);e.appendChild(this.$_popperNode),this.isMounted=!0},$_addEventListeners(){const e=n=>{this.isShown&&!this.$_hideInProgress||(n.usedByTooltip=!0,!this.$_preventShow&&this.show({event:n}))};this.$_registerTriggerListeners(this.$_targetNodes,mn,this.triggers,this.showTriggers,e),this.$_registerTriggerListeners([this.$_popperNode],mn,this.popperTriggers,this.popperShowTriggers,e);const t=n=>{n.usedByTooltip||this.hide({event:n})};this.$_registerTriggerListeners(this.$_targetNodes,gn,this.triggers,this.hideTriggers,t),this.$_registerTriggerListeners([this.$_popperNode],gn,this.popperTriggers,this.popperHideTriggers,t)},$_registerEventListeners(e,t,n){this.$_events.push({targetNodes:e,eventType:t,handler:n}),e.forEach(o=>o.addEventListener(t,n,qe?{passive:!0}:void 0))},$_registerTriggerListeners(e,t,n,o,r){let i=n;o!=null&&(i=typeof o=="function"?o(i):o),i.forEach(s=>{const a=t[s];a&&this.$_registerEventListeners(e,a,r)})},$_removeEventListeners(e){const t=[];this.$_events.forEach(n=>{const{targetNodes:o,eventType:r,handler:i}=n;!e||e===r?o.forEach(s=>s.removeEventListener(r,i)):t.push(n)}),this.$_events=t},$_refreshListeners(){this.isDisposed||(this.$_removeEventListeners(),this.$_addEventListeners())},$_handleGlobalClose(e,t=!1){this.$_showFrameLocked||(this.hide({event:e}),e.closePopover?this.$emit("close-directive"):this.$emit("auto-hide"),t&&(this.$_preventShow=!0,setTimeout(()=>{this.$_preventShow=!1},300)))},$_detachPopperNode(){this.$_popperNode.parentNode&&this.$_popperNode.parentNode.removeChild(this.$_popperNode)},$_swapTargetAttrs(e,t){for(const n of this.$_targetNodes){const o=n.getAttribute(e);o&&(n.removeAttribute(e),n.setAttribute(t,o))}},$_applyAttrsToTarget(e){for(const t of this.$_targetNodes)for(const n in e){const o=e[n];o==null?t.removeAttribute(n):t.setAttribute(n,o)}},$_updateParentShownChildren(e){let t=this.parentPopper;for(;t;)e?t.shownChildren.add(this.randomId):(t.shownChildren.delete(this.randomId),t.pendingHide&&t.hide()),t=t.parentPopper},$_isAimingPopper(){const e=this.$_referenceNode.getBoundingClientRect();if(Fe>=e.left&&Fe<=e.right&&Ie>=e.top&&Ie<=e.bottom){const t=this.$_popperNode.getBoundingClientRect(),n=Fe-he,o=Ie-fe,r=t.left+t.width/2-he+(t.top+t.height/2)-fe+t.width+t.height,i=he+n*r,s=fe+o*r;return Xe(he,fe,i,s,t.left,t.top,t.left,t.bottom)||Xe(he,fe,i,s,t.left,t.top,t.right,t.top)||Xe(he,fe,i,s,t.right,t.top,t.right,t.bottom)||Xe(he,fe,i,s,t.left,t.bottom,t.right,t.bottom)}return!1}},render(){return this.$slots.default(this.slotData)}});if(typeof document<"u"&&typeof window<"u"){if(no){const e=qe?{passive:!0,capture:!0}:!0;document.addEventListener("touchstart",t=>bn(t),e),document.addEventListener("touchend",t=>Tn(t,!0),e)}else window.addEventListener("mousedown",e=>bn(e),!0),window.addEventListener("click",e=>Tn(e,!1),!0);window.addEventListener("resize",Ui)}function bn(e,t){for(let n=0;n<te.length;n++){const o=te[n];try{o.mouseDownContains=o.popperNode().contains(e.target)}catch{}}}function Tn(e,t){qi(e,t)}function qi(e,t){const n={};for(let o=te.length-1;o>=0;o--){const r=te[o];try{const i=r.containsGlobalTarget=r.mouseDownContains||r.popperNode().contains(e.target);r.pendingHide=!1,requestAnimationFrame(()=>{if(r.pendingHide=!1,!n[r.randomId]&&Sn(r,i,e)){if(r.$_handleGlobalClose(e,t),!e.closeAllPopover&&e.closePopover&&i){let a=r.parentPopper;for(;a;)n[a.randomId]=!0,a=a.parentPopper;return}let s=r.parentPopper;for(;s&&Sn(s,s.containsGlobalTarget,e);)s.$_handleGlobalClose(e,t),s=s.parentPopper}})}catch{}}}function Sn(e,t,n){return n.closeAllPopover||n.closePopover&&t||Ki(e,n)&&!t}function Ki(e,t){if(typeof e.autoHide=="function"){const n=e.autoHide(t);return e.lastAutoHide=n,n}return e.autoHide}function Ui(){for(let e=0;e<te.length;e++)te[e].$_computePosition()}let he=0,fe=0,Fe=0,Ie=0;typeof window<"u"&&window.addEventListener("mousemove",e=>{he=Fe,fe=Ie,Fe=e.clientX,Ie=e.clientY},qe?{passive:!0}:void 0);function Xe(e,t,n,o,r,i,s,a){const l=((s-r)*(t-i)-(a-i)*(e-r))/((a-i)*(n-e)-(s-r)*(o-t)),u=((n-e)*(t-i)-(o-t)*(e-r))/((a-i)*(n-e)-(s-r)*(o-t));return l>=0&&l<=1&&u>=0&&u<=1}const Yi={extends:oo()},Zt=(e,t)=>{const n=e.__vccOpts||e;for(const[o,r]of t)n[o]=r;return n};function Xi(e,t,n,o,r,i){return j(),ce("div",{ref:"reference",class:tt(["v-popper",{"v-popper--shown":e.slotData.isShown}])},[we(e.$slots,"default",Pt(Ct(e.slotData)))],2)}const Zi=Zt(Yi,[["render",Xi]]);function Ji(){var e=window.navigator.userAgent,t=e.indexOf("MSIE ");if(t>0)return parseInt(e.substring(t+5,e.indexOf(".",t)),10);var n=e.indexOf("Trident/");if(n>0){var o=e.indexOf("rv:");return parseInt(e.substring(o+3,e.indexOf(".",o)),10)}var r=e.indexOf("Edge/");return r>0?parseInt(e.substring(r+5,e.indexOf(".",r)),10):-1}let Je;function Bt(){Bt.init||(Bt.init=!0,Je=Ji()!==-1)}var Qe={name:"ResizeObserver",props:{emitOnMount:{type:Boolean,default:!1},ignoreWidth:{type:Boolean,default:!1},ignoreHeight:{type:Boolean,default:!1}},emits:["notify"],mounted(){Bt(),jt(()=>{this._w=this.$el.offsetWidth,this._h=this.$el.offsetHeight,this.emitOnMount&&this.emitSize()});const e=document.createElement("object");this._resizeObject=e,e.setAttribute("aria-hidden","true"),e.setAttribute("tabindex",-1),e.onload=this.addResizeHandlers,e.type="text/html",Je&&this.$el.appendChild(e),e.data="about:blank",Je||this.$el.appendChild(e)},beforeUnmount(){this.removeResizeHandlers()},methods:{compareAndNotify(){(!this.ignoreWidth&&this._w!==this.$el.offsetWidth||!this.ignoreHeight&&this._h!==this.$el.offsetHeight)&&(this._w=this.$el.offsetWidth,this._h=this.$el.offsetHeight,this.emitSize())},emitSize(){this.$emit("notify",{width:this._w,height:this._h})},addResizeHandlers(){this._resizeObject.contentDocument.defaultView.addEventListener("resize",this.compareAndNotify),this.compareAndNotify()},removeResizeHandlers(){this._resizeObject&&this._resizeObject.onload&&(!Je&&this._resizeObject.contentDocument&&this._resizeObject.contentDocument.defaultView.removeEventListener("resize",this.compareAndNotify),this.$el.removeChild(this._resizeObject),this._resizeObject.onload=null,this._resizeObject=null)}}};const Qi=Ao();xo("data-v-b329ee4c");const er={class:"resize-observer",tabindex:"-1"};_o();const tr=Qi((e,t,n,o,r,i)=>(j(),_e("div",er)));Qe.render=tr,Qe.__scopeId="data-v-b329ee4c",Qe.__file="src/components/ResizeObserver.vue";const io=(e="theme")=>({computed:{themeClass(){return Gi(this[e])}}}),nr=Ce({name:"VPopperContent",components:{ResizeObserver:Qe},mixins:[io()],props:{popperId:String,theme:String,shown:Boolean,mounted:Boolean,skipTransition:Boolean,autoHide:Boolean,handleResize:Boolean,classes:Object,result:Object},emits:["hide","resize"],methods:{toPx(e){return e!=null&&!isNaN(e)?`${e}px`:null}}}),or=["id","aria-hidden","tabindex","data-popper-placement"],ir={ref:"inner",class:"v-popper__inner"},rr=q("div",{class:"v-popper__arrow-outer"},null,-1),sr=q("div",{class:"v-popper__arrow-inner"},null,-1),ar=[rr,sr];function lr(e,t,n,o,r,i){const s=ze("ResizeObserver");return j(),ce("div",{id:e.popperId,ref:"popover",class:tt(["v-popper__popper",[e.themeClass,e.classes.popperClass,{"v-popper__popper--shown":e.shown,"v-popper__popper--hidden":!e.shown,"v-popper__popper--show-from":e.classes.showFrom,"v-popper__popper--show-to":e.classes.showTo,"v-popper__popper--hide-from":e.classes.hideFrom,"v-popper__popper--hide-to":e.classes.hideTo,"v-popper__popper--skip-transition":e.skipTransition,"v-popper__popper--arrow-overflow":e.result&&e.result.arrow.overflow,"v-popper__popper--no-positioning":!e.result}]]),style:_t(e.result?{position:e.result.strategy,transform:`translate3d(${Math.round(e.result.x)}px,${Math.round(e.result.y)}px,0)`}:void 0),"aria-hidden":e.shown?"false":"true",tabindex:e.autoHide?0:void 0,"data-popper-placement":e.result?e.result.placement:void 0,onKeyup:t[2]||(t[2]=$o(a=>e.autoHide&&e.$emit("hide"),["esc"]))},[q("div",{class:"v-popper__backdrop",onClick:t[0]||(t[0]=a=>e.autoHide&&e.$emit("hide"))}),q("div",{class:"v-popper__wrapper",style:_t(e.result?{transformOrigin:e.result.transformOrigin}:void 0)},[q("div",ir,[e.mounted?(j(),ce(Gt,{key:0},[q("div",null,[we(e.$slots,"default")]),e.handleResize?(j(),_e(s,{key:0,onNotify:t[1]||(t[1]=a=>e.$emit("resize",a))})):me("",!0)],64)):me("",!0)],512),q("div",{ref:"arrow",class:"v-popper__arrow-container",style:_t(e.result?{left:e.toPx(e.result.arrow.x),top:e.toPx(e.result.arrow.y)}:void 0)},ar,4)],4)],46,or)}const ro=Zt(nr,[["render",lr]]),so={methods:{show(...e){return this.$refs.popper.show(...e)},hide(...e){return this.$refs.popper.hide(...e)},dispose(...e){return this.$refs.popper.dispose(...e)},onResize(...e){return this.$refs.popper.onResize(...e)}}};let Ft=function(){};typeof window<"u"&&(Ft=window.Element);const ur=Ce({name:"VPopperWrapper",components:{Popper:Zi,PopperContent:ro},mixins:[so,io("finalTheme")],props:{theme:{type:String,default:null},referenceNode:{type:Function,default:null},shown:{type:Boolean,default:!1},showGroup:{type:String,default:null},ariaId:{default:null},disabled:{type:Boolean,default:void 0},positioningDisabled:{type:Boolean,default:void 0},placement:{type:String,default:void 0},delay:{type:[String,Number,Object],default:void 0},distance:{type:[Number,String],default:void 0},skidding:{type:[Number,String],default:void 0},triggers:{type:Array,default:void 0},showTriggers:{type:[Array,Function],default:void 0},hideTriggers:{type:[Array,Function],default:void 0},popperTriggers:{type:Array,default:void 0},popperShowTriggers:{type:[Array,Function],default:void 0},popperHideTriggers:{type:[Array,Function],default:void 0},container:{type:[String,Object,Ft,Boolean],default:void 0},boundary:{type:[String,Ft],default:void 0},strategy:{type:String,default:void 0},autoHide:{type:[Boolean,Function],default:void 0},handleResize:{type:Boolean,default:void 0},instantMove:{type:Boolean,default:void 0},eagerMount:{type:Boolean,default:void 0},popperClass:{type:[String,Array,Object],default:void 0},computeTransformOrigin:{type:Boolean,default:void 0},autoMinSize:{type:Boolean,default:void 0},autoSize:{type:[Boolean,String],default:void 0},autoMaxSize:{type:Boolean,default:void 0},autoBoundaryMaxSize:{type:Boolean,default:void 0},preventOverflow:{type:Boolean,default:void 0},overflowPadding:{type:[Number,String],default:void 0},arrowPadding:{type:[Number,String],default:void 0},arrowOverflow:{type:Boolean,default:void 0},flip:{type:Boolean,default:void 0},shift:{type:Boolean,default:void 0},shiftCrossAxis:{type:Boolean,default:void 0},noAutoFocus:{type:Boolean,default:void 0},disposeTimeout:{type:Number,default:void 0}},emits:{show:()=>!0,hide:()=>!0,"update:shown":e=>!0,"apply-show":()=>!0,"apply-hide":()=>!0,"close-group":()=>!0,"close-directive":()=>!0,"auto-hide":()=>!0,resize:()=>!0},computed:{finalTheme(){return this.theme??this.$options.vPopperTheme}},methods:{getTargetNodes(){return Array.from(this.$el.children).filter(e=>e!==this.$refs.popperContent.$el)}}});function cr(e,t,n,o,r,i){const s=ze("PopperContent"),a=ze("Popper");return j(),_e(a,mt({ref:"popper"},e.$props,{theme:e.finalTheme,"target-nodes":e.getTargetNodes,"popper-node":()=>e.$refs.popperContent.$el,class:[e.themeClass],onShow:t[0]||(t[0]=()=>e.$emit("show")),onHide:t[1]||(t[1]=()=>e.$emit("hide")),"onUpdate:shown":t[2]||(t[2]=l=>e.$emit("update:shown",l)),onApplyShow:t[3]||(t[3]=()=>e.$emit("apply-show")),onApplyHide:t[4]||(t[4]=()=>e.$emit("apply-hide")),onCloseGroup:t[5]||(t[5]=()=>e.$emit("close-group")),onCloseDirective:t[6]||(t[6]=()=>e.$emit("close-directive")),onAutoHide:t[7]||(t[7]=()=>e.$emit("auto-hide")),onResize:t[8]||(t[8]=()=>e.$emit("resize"))}),{default:V(({popperId:l,isShown:u,shouldMountContent:d,skipTransition:c,autoHide:m,show:p,hide:g,handleResize:y,onResize:v,classes:w,result:b})=>[we(e.$slots,"default",{shown:u,show:p,hide:g}),G(s,{ref:"popperContent","popper-id":l,theme:e.finalTheme,shown:u,mounted:d,"skip-transition":c,"auto-hide":m,"handle-resize":y,classes:w,result:b,onHide:g,onResize:v},{default:V(()=>[we(e.$slots,"popper",{shown:u,hide:g})]),_:2},1032,["popper-id","theme","shown","mounted","skip-transition","auto-hide","handle-resize","classes","result","onHide","onResize"])]),_:3},16,["theme","target-nodes","popper-node","class"])}const It=Zt(ur,[["render",cr]]),dr={...It,name:"VDropdown",vPopperTheme:"dropdown"};({...It},{...It}),Ce({name:"VTooltipDirective",components:{Popper:oo(),PopperContent:ro},mixins:[so],inheritAttrs:!1,props:{theme:{type:String,default:"tooltip"},html:{type:Boolean,default:e=>Rt(e.theme,"html")},content:{type:[String,Number,Function],default:null},loadingContent:{type:String,default:e=>Rt(e.theme,"loadingContent")},targetNodes:{type:Function,required:!0}},data(){return{asyncContent:null}},computed:{isContentAsync(){return typeof this.content=="function"},loading(){return this.isContentAsync&&this.asyncContent==null},finalContent(){return this.isContentAsync?this.loading?this.loadingContent:this.asyncContent:this.content}},watch:{content:{handler(){this.fetchContent(!0)},immediate:!0},async finalContent(){await this.$nextTick(),this.$refs.popper.onResize()}},created(){this.$_fetchId=0},methods:{fetchContent(e){if(typeof this.content=="function"&&this.$_isShown&&(e||!this.$_loading&&this.asyncContent==null)){this.asyncContent=null,this.$_loading=!0;const t=++this.$_fetchId,n=this.content(this);n.then?n.then(o=>this.onResult(t,o)):this.onResult(t,n)}},onResult(e,t){e===this.$_fetchId&&(this.$_loading=!1,this.asyncContent=t)},onShow(){this.$_isShown=!0,this.fetchContent()},onHide(){this.$_isShown=!1}}});const xn=ye,pr=dr;var ao=["input:not([inert]):not([inert] *)","select:not([inert]):not([inert] *)","textarea:not([inert]):not([inert] *)","a[href]:not([inert]):not([inert] *)","area[href]:not([inert]):not([inert] *)","button:not([inert]):not([inert] *)","[tabindex]:not(slot):not([inert]):not([inert] *)","audio[controls]:not([inert]):not([inert] *)","video[controls]:not([inert]):not([inert] *)",'[contenteditable]:not([contenteditable="false"]):not([inert]):not([inert] *)',"details>summary:first-of-type:not([inert]):not([inert] *)","details:not([inert]):not([inert] *)"],lt=ao.join(","),lo=typeof Element>"u",$e=lo?function(){}:Element.prototype.matches||Element.prototype.msMatchesSelector||Element.prototype.webkitMatchesSelector,ut=!lo&&Element.prototype.getRootNode?function(e){var t;return e==null||(t=e.getRootNode)===null||t===void 0?void 0:t.call(e)}:function(e){return e?.ownerDocument},ct=function(e,t){var n;t===void 0&&(t=!0);var o=e==null||(n=e.getAttribute)===null||n===void 0?void 0:n.call(e,"inert"),r=o===""||o==="true",i=r||t&&e&&(typeof e.closest=="function"?e.closest("[inert]"):ct(e.parentNode));return i},hr=function(e){var t,n=e==null||(t=e.getAttribute)===null||t===void 0?void 0:t.call(e,"contenteditable");return n===""||n==="true"},uo=function(e,t,n){if(ct(e))return[];var o=Array.prototype.slice.apply(e.querySelectorAll(lt));return t&&$e.call(e,lt)&&o.unshift(e),o=o.filter(n),o},dt=function(e,t,n){for(var o=[],r=Array.from(e);r.length;){var i=r.shift();if(!ct(i,!1))if(i.tagName==="SLOT"){var s=i.assignedElements(),a=s.length?s:i.children,l=dt(a,!0,n);n.flatten?o.push.apply(o,l):o.push({scopeParent:i,candidates:l})}else{var u=$e.call(i,lt);u&&n.filter(i)&&(t||!e.includes(i))&&o.push(i);var d=i.shadowRoot||typeof n.getShadowRoot=="function"&&n.getShadowRoot(i),c=!ct(d,!1)&&(!n.shadowRootFilter||n.shadowRootFilter(i));if(d&&c){var m=dt(d===!0?i.children:d.children,!0,n);n.flatten?o.push.apply(o,m):o.push({scopeParent:i,candidates:m})}else r.unshift.apply(r,i.children)}}return o},co=function(e){return!isNaN(parseInt(e.getAttribute("tabindex"),10))},Se=function(e){if(!e)throw new Error("No node provided");return e.tabIndex<0&&(/^(AUDIO|VIDEO|DETAILS)$/.test(e.tagName)||hr(e))&&!co(e)?0:e.tabIndex},fr=function(e,t){var n=Se(e);return n<0&&t&&!co(e)?0:n},mr=function(e,t){return e.tabIndex===t.tabIndex?e.documentOrder-t.documentOrder:e.tabIndex-t.tabIndex},po=function(e){return e.tagName==="INPUT"},gr=function(e){return po(e)&&e.type==="hidden"},vr=function(e){var t=e.tagName==="DETAILS"&&Array.prototype.slice.apply(e.children).some(function(n){return n.tagName==="SUMMARY"});return t},yr=function(e,t){for(var n=0;n<e.length;n++)if(e[n].checked&&e[n].form===t)return e[n]},wr=function(e){if(!e.name)return!0;var t=e.form||ut(e),n=function(i){return t.querySelectorAll('input[type="radio"][name="'+i+'"]')},o;if(typeof window<"u"&&typeof window.CSS<"u"&&typeof window.CSS.escape=="function")o=n(window.CSS.escape(e.name));else try{o=n(e.name)}catch(i){return console.error("Looks like you have a radio button with a name attribute containing invalid CSS selector characters and need the CSS.escape polyfill: %s",i.message),!1}var r=yr(o,e.form);return!r||r===e},br=function(e){return po(e)&&e.type==="radio"},Tr=function(e){return br(e)&&!wr(e)},Sr=function(e){var t,n=e&&ut(e),o=(t=n)===null||t===void 0?void 0:t.host,r=!1;if(n&&n!==e){var i,s,a;for(r=!!((i=o)!==null&&i!==void 0&&(s=i.ownerDocument)!==null&&s!==void 0&&s.contains(o)||e!=null&&(a=e.ownerDocument)!==null&&a!==void 0&&a.contains(e));!r&&o;){var l,u,d;n=ut(o),o=(l=n)===null||l===void 0?void 0:l.host,r=!!((u=o)!==null&&u!==void 0&&(d=u.ownerDocument)!==null&&d!==void 0&&d.contains(o))}}return r},_n=function(e){var t=e.getBoundingClientRect(),n=t.width,o=t.height;return n===0&&o===0},xr=function(e,t){var n=t.displayCheck,o=t.getShadowRoot;if(n==="full-native"&&"checkVisibility"in e){var r=e.checkVisibility({checkOpacity:!1,opacityProperty:!1,contentVisibilityAuto:!0,visibilityProperty:!0,checkVisibilityCSS:!0});return!r}var i=getComputedStyle(e),s=i.visibility;if(s==="hidden"||s==="collapse")return!0;var a=$e.call(e,"details>summary:first-of-type"),l=a?e.parentElement:e;if($e.call(l,"details:not([open]) *"))return!0;if(!n||n==="full"||n==="full-native"||n==="legacy-full"){if(typeof o=="function"){for(var u=e;e;){var d=e.parentElement,c=ut(e);if(d&&!d.shadowRoot&&o(d)===!0)return _n(e);e.assignedSlot?e=e.assignedSlot:!d&&c!==e.ownerDocument?e=c.host:e=d}e=u}if(Sr(e))return!e.getClientRects().length;if(n!=="legacy-full")return!0}else if(n==="non-zero-area")return _n(e);return!1},_r=function(e){if(/^(INPUT|BUTTON|SELECT|TEXTAREA)$/.test(e.tagName))for(var t=e.parentElement;t;){if(t.tagName==="FIELDSET"&&t.disabled){for(var n=0;n<t.children.length;n++){var o=t.children.item(n);if(o.tagName==="LEGEND")return $e.call(t,"fieldset[disabled] *")?!0:!o.contains(e)}return!0}t=t.parentElement}return!1},pt=function(e,t){return!(t.disabled||gr(t)||xr(t,e)||vr(t)||_r(t))},Lt=function(e,t){return!(Tr(t)||Se(t)<0||!pt(e,t))},Ar=function(e){var t=parseInt(e.getAttribute("tabindex"),10);return!!(isNaN(t)||t>=0)},ho=function(e){var t=[],n=[];return e.forEach(function(o,r){var i=!!o.scopeParent,s=i?o.scopeParent:o,a=fr(s,i),l=i?ho(o.candidates):s;a===0?i?t.push.apply(t,l):t.push(s):n.push({documentOrder:r,tabIndex:a,item:o,isScope:i,content:l})}),n.sort(mr).reduce(function(o,r){return r.isScope?o.push.apply(o,r.content):o.push(r.content),o},[]).concat(t)},$r=function(e,t){t=t||{};var n;return t.getShadowRoot?n=dt([e],t.includeContainer,{filter:Lt.bind(null,t),flatten:!1,getShadowRoot:t.getShadowRoot,shadowRootFilter:Ar}):n=uo(e,t.includeContainer,Lt.bind(null,t)),ho(n)},kr=function(e,t){t=t||{};var n;return t.getShadowRoot?n=dt([e],t.includeContainer,{filter:pt.bind(null,t),flatten:!0,getShadowRoot:t.getShadowRoot}):n=uo(e,t.includeContainer,pt.bind(null,t)),n},ke=function(e,t){if(t=t||{},!e)throw new Error("No node provided");return $e.call(e,lt)===!1?!1:Lt(t,e)},Nr=ao.concat("iframe:not([inert]):not([inert] *)").join(","),Et=function(e,t){if(t=t||{},!e)throw new Error("No node provided");return $e.call(e,Nr)===!1?!1:pt(t,e)};function zt(e,t){(t==null||t>e.length)&&(t=e.length);for(var n=0,o=Array(t);n<t;n++)o[n]=e[n];return o}function Er(e){if(Array.isArray(e))return zt(e)}function An(e,t){var n=typeof Symbol<"u"&&e[Symbol.iterator]||e["@@iterator"];if(!n){if(Array.isArray(e)||(n=fo(e))||t){n&&(e=n);var o=0,r=function(){};return{s:r,n:function(){return o>=e.length?{done:!0}:{done:!1,value:e[o++]}},e:function(l){throw l},f:r}}throw new TypeError(`Invalid attempt to iterate non-iterable instance. In order to be iterable, non-array objects must have a [Symbol.iterator]() method.`)}var i,s=!0,a=!1;return{s:function(){n=n.call(e)},n:function(){var l=n.next();return s=l.done,l},e:function(l){a=!0,i=l},f:function(){try{s||n.return==null||n.return()}finally{if(a)throw i}}}}function Pr(e,t,n){return(t=Mr(t))in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function Cr(e){if(typeof Symbol<"u"&&e[Symbol.iterator]!=null||e["@@iterator"]!=null)return Array.from(e)}function Dr(){throw new TypeError(`Invalid attempt to spread non-iterable instance. In order to be iterable, non-array objects must have a [Symbol.iterator]() method.`)}function $n(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);t&&(o=o.filter(function(r){return Object.getOwnPropertyDescriptor(e,r).enumerable})),n.push.apply(n,o)}return n}function kn(e){for(var t=1;t<arguments.length;t++){var n=arguments[t]!=null?arguments[t]:{};t%2?$n(Object(n),!0).forEach(function(o){Pr(e,o,n[o])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):$n(Object(n)).forEach(function(o){Object.defineProperty(e,o,Object.getOwnPropertyDescriptor(n,o))})}return e}function Or(e){return Er(e)||Cr(e)||fo(e)||Dr()}function Rr(e,t){if(typeof e!="object"||!e)return e;var n=e[Symbol.toPrimitive];if(n!==void 0){var o=n.call(e,t);if(typeof o!="object")return o;throw new TypeError("@@toPrimitive must return a primitive value.")}return(t==="string"?String:Number)(e)}function Mr(e){var t=Rr(e,"string");return typeof t=="symbol"?t:t+""}function fo(e,t){if(e){if(typeof e=="string")return zt(e,t);var n={}.toString.call(e).slice(8,-1);return n==="Object"&&e.constructor&&(n=e.constructor.name),n==="Map"||n==="Set"?Array.from(e):n==="Arguments"||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?zt(e,t):void 0}}var ue={getActiveTrap:function(e){return e?.length>0?e[e.length-1]:null},activateTrap:function(e,t){var n=ue.getActiveTrap(e);t!==n&&ue.pauseTrap(e);var o=e.indexOf(t);o===-1||e.splice(o,1),e.push(t)},deactivateTrap:function(e,t){var n=e.indexOf(t);n!==-1&&e.splice(n,1),ue.unpauseTrap(e)},pauseTrap:function(e){var t=ue.getActiveTrap(e);t?._setPausedState(!0)},unpauseTrap:function(e){var t=ue.getActiveTrap(e);t&&!t._isManuallyPaused()&&t._setPausedState(!1)}},Br=function(e){return e.tagName&&e.tagName.toLowerCase()==="input"&&typeof e.select=="function"},Fr=function(e){return e?.key==="Escape"||e?.key==="Esc"||e?.keyCode===27},Le=function(e){return e?.key==="Tab"||e?.keyCode===9},Ir=function(e){return Le(e)&&!e.shiftKey},Lr=function(e){return Le(e)&&e.shiftKey},Nn=function(e){return setTimeout(e,0)},Re=function(e){for(var t=arguments.length,n=new Array(t>1?t-1:0),o=1;o<t;o++)n[o-1]=arguments[o];return typeof e=="function"?e.apply(void 0,n):e},Ze=function(e){return e.target.shadowRoot&&typeof e.composedPath=="function"?e.composedPath()[0]:e.target},zr=[],mo=function(e,t){var n=t?.document||document,o=t?.trapStack||zr,r=kn({returnFocusOnDeactivate:!0,escapeDeactivates:!0,delayInitialFocus:!0,delayReturnFocus:!0,isolateSubtrees:!1,isKeyForward:Ir,isKeyBackward:Lr},t),i={containers:[],containerGroups:[],tabbableGroups:[],adjacentElements:new Set,alreadySilent:new Set,nodeFocusedBeforeActivation:null,mostRecentlyFocusedNode:null,active:!1,paused:!1,manuallyPaused:!1,delayInitialFocusTimer:void 0,recentNavEvent:void 0},s,a=function(h,f,T){return h&&h[f]!==void 0?h[f]:r[T||f]},l=function(h,f){var T=typeof f?.composedPath=="function"?f.composedPath():void 0;return i.containerGroups.findIndex(function(E){var $=E.container,C=E.tabbableNodes;return $.contains(h)||T?.includes($)||C.find(function(x){return x===h})})},u=function(h){var f=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},T=f.hasFallback,E=T===void 0?!1:T,$=f.params,C=$===void 0?[]:$,x=r[h];if(typeof x=="function"&&(x=x.apply(void 0,Or(C))),x===!0&&(x=void 0),!x){if(x===void 0||x===!1)return x;throw new Error("`".concat(h,"` was specified but was not a node, or did not return a node"))}var k=x;if(typeof x=="string"){try{k=n.querySelector(x)}catch(N){throw new Error("`".concat(h,'` appears to be an invalid selector; error="').concat(N.message,'"'))}if(!k&&!E)throw new Error("`".concat(h,"` as selector refers to no known node"))}return k},d=function(h){var f=h.activeElement;return f?f.shadowRoot&&f.shadowRoot.activeElement!==null?d(f.shadowRoot):f:null},c=function(){var h=u("initialFocus",{hasFallback:!0});if(h===!1)return!1;if(h===void 0||h&&!Et(h,r.tabbableOptions)){var f=d(n);if(l(f)>=0)h=f;else{var T=i.tabbableGroups[0],E=T&&T.firstTabbableNode;h=E||u("fallbackFocus")}}else h===null&&(h=u("fallbackFocus"));if(!h)throw new Error("Your focus-trap needs to have at least one focusable element");return h},m=function(){if(i.containerGroups=i.containers.map(function(h){var f=$r(h,r.tabbableOptions),T=kr(h,r.tabbableOptions),E=f.length>0?f[0]:void 0,$=f.length>0?f[f.length-1]:void 0,C=T.find(function(N){return ke(N)}),x=T.slice().reverse().find(function(N){return ke(N)}),k=!!f.find(function(N){return Se(N)>0});return{container:h,tabbableNodes:f,focusableNodes:T,posTabIndexesFound:k,firstTabbableNode:E,lastTabbableNode:$,firstDomTabbableNode:C,lastDomTabbableNode:x,nextTabbableNode:function(N){var W=arguments.length>1&&arguments[1]!==void 0?arguments[1]:!0,K=f.indexOf(N);return K<0?W?T.slice(T.indexOf(N)+1).find(function(U){return ke(U)}):T.slice(0,T.indexOf(N)).reverse().find(function(U){return ke(U)}):f[K+(W?1:-1)]}}}),i.tabbableGroups=i.containerGroups.filter(function(h){return h.tabbableNodes.length>0}),i.tabbableGroups.length<=0&&!u("fallbackFocus"))throw new Error("Your focus-trap must have at least one container with at least one tabbable node in it at all times");if(i.containerGroups.find(function(h){return h.posTabIndexesFound})&&i.containerGroups.length>1)throw new Error("At least one node with a positive tabindex was found in one of your focus-trap's multiple containers. Positive tabindexes are only supported in single-container focus-traps.")},p=function(h){if(h!==!1&&h!==d(document)){if(!h||!h.focus){p(c());return}h.focus({preventScroll:!!r.preventScroll}),i.mostRecentlyFocusedNode=h,Br(h)&&h.select()}},g=function(h){var f=u("setReturnFocus",{params:[h]});return f||(f===!1?!1:h)},y=function(h){var f=h.target,T=h.event,E=h.isBackward,$=E===void 0?!1:E;f=f||Ze(T),m();var C=null;if(i.tabbableGroups.length>0){var x=l(f,T),k=x>=0?i.containerGroups[x]:void 0;if(x<0)$?C=i.tabbableGroups[i.tabbableGroups.length-1].lastTabbableNode:C=i.tabbableGroups[0].firstTabbableNode;else if($){var N=i.tabbableGroups.findIndex(function(St){var xt=St.firstTabbableNode;return f===xt});if(N<0&&(k.container===f||Et(f,r.tabbableOptions)&&!ke(f,r.tabbableOptions)&&!k.nextTabbableNode(f,!1))&&(N=x),N>=0){var W=N===0?i.tabbableGroups.length-1:N-1,K=i.tabbableGroups[W];C=Se(f)>=0?K.lastTabbableNode:K.lastDomTabbableNode}else Le(T)||(C=k.nextTabbableNode(f,!1))}else{var U=i.tabbableGroups.findIndex(function(St){var xt=St.lastTabbableNode;return f===xt});if(U<0&&(k.container===f||Et(f,r.tabbableOptions)&&!ke(f,r.tabbableOptions)&&!k.nextTabbableNode(f))&&(U=x),U>=0){var Tt=U===i.tabbableGroups.length-1?0:U+1,pe=i.tabbableGroups[Tt];C=Se(f)>=0?pe.firstTabbableNode:pe.firstDomTabbableNode}else Le(T)||(C=k.nextTabbableNode(f))}}else C=u("fallbackFocus");return C},v=function(h){var f=Ze(h);if(!(l(f,h)>=0)){if(Re(r.clickOutsideDeactivates,h)){s.deactivate({returnFocus:r.returnFocusOnDeactivate});return}Re(r.allowOutsideClick,h)||h.preventDefault()}},w=function(h){var f=Ze(h),T=l(f,h)>=0;if(T||f instanceof Document)T&&(i.mostRecentlyFocusedNode=f);else{h.stopImmediatePropagation();var E,$=!0;if(i.mostRecentlyFocusedNode)if(Se(i.mostRecentlyFocusedNode)>0){var C=l(i.mostRecentlyFocusedNode),x=i.containerGroups[C].tabbableNodes;if(x.length>0){var k=x.findIndex(function(N){return N===i.mostRecentlyFocusedNode});k>=0&&(r.isKeyForward(i.recentNavEvent)?k+1<x.length&&(E=x[k+1],$=!1):k-1>=0&&(E=x[k-1],$=!1))}}else i.containerGroups.some(function(N){return N.tabbableNodes.some(function(W){return Se(W)>0})})||($=!1);else $=!1;$&&(E=y({target:i.mostRecentlyFocusedNode,isBackward:r.isKeyBackward(i.recentNavEvent)})),p(E||i.mostRecentlyFocusedNode||c())}i.recentNavEvent=void 0},b=function(h){var f=arguments.length>1&&arguments[1]!==void 0?arguments[1]:!1;i.recentNavEvent=h;var T=y({event:h,isBackward:f});T&&(Le(h)&&h.preventDefault(),p(T))},_=function(h){(r.isKeyForward(h)||r.isKeyBackward(h))&&b(h,r.isKeyBackward(h))},P=function(h){Fr(h)&&Re(r.escapeDeactivates,h)!==!1&&(h.preventDefault(),s.deactivate())},R=function(h){var f=Ze(h);l(f,h)>=0||Re(r.clickOutsideDeactivates,h)||Re(r.allowOutsideClick,h)||(h.preventDefault(),h.stopImmediatePropagation())},S=function(){if(i.active){ue.activateTrap(o,s);var h;return r.delayInitialFocus?h=new Promise(function(f){i.delayInitialFocusTimer=Nn(function(){p(c()),f()})}):p(c()),n.addEventListener("focusin",w,!0),n.addEventListener("mousedown",v,{capture:!0,passive:!1}),n.addEventListener("touchstart",v,{capture:!0,passive:!1}),n.addEventListener("click",R,{capture:!0,passive:!1}),n.addEventListener("keydown",_,{capture:!0,passive:!1}),n.addEventListener("keydown",P),h}},O=function(h){i.active&&!i.paused&&s._setSubtreeIsolation(!1),i.adjacentElements.clear(),i.alreadySilent.clear();var f=new Set,T=new Set,E=An(h),$;try{for(E.s();!($=E.n()).done;){var C=$.value;f.add(C);for(var x=typeof ShadowRoot<"u"&&C.getRootNode()instanceof ShadowRoot,k=C;k;){f.add(k);var N=k.parentElement,W=[];N?W=N.children:!N&&x&&(W=k.getRootNode().children,N=k.getRootNode().host,x=typeof ShadowRoot<"u"&&N.getRootNode()instanceof ShadowRoot);var K=An(W),U;try{for(K.s();!(U=K.n()).done;){var Tt=U.value;T.add(Tt)}}catch(pe){K.e(pe)}finally{K.f()}k=N}}}catch(pe){E.e(pe)}finally{E.f()}f.forEach(function(pe){T.delete(pe)}),i.adjacentElements=T},F=function(){if(i.active)return n.removeEventListener("focusin",w,!0),n.removeEventListener("mousedown",v,!0),n.removeEventListener("touchstart",v,!0),n.removeEventListener("click",R,!0),n.removeEventListener("keydown",_,!0),n.removeEventListener("keydown",P),s},I=function(h){var f=i.mostRecentlyFocusedNode;if(f){var T=h.some(function($){var C=Array.from($.removedNodes);return C.some(function(x){return x===f||typeof x.contains=="function"&&x.contains(f)})});if(T&&i.containers.some(function($){return $?.isConnected})){m();var E=c();p(E)}}},A=typeof window<"u"&&"MutationObserver"in window?new MutationObserver(I):void 0,L=function(){A&&(A.disconnect(),i.active&&!i.paused&&i.containers.map(function(h){A.observe(h,{subtree:!0,childList:!0})}))};return s={get active(){return i.active},get paused(){return i.paused},activate:function(h){if(i.active)return this;var f=a(h,"onActivate"),T=a(h,"onPostActivate"),E=a(h,"checkCanFocusTrap"),$=ue.getActiveTrap(o),C=!1;if($&&!$.paused){var x;(x=$._setSubtreeIsolation)===null||x===void 0||x.call($,!1),C=!0}try{E||m(),i.active=!0,i.paused=!1,i.nodeFocusedBeforeActivation=d(n),f?.({trap:s});var k=function(){E&&m();var W=function(){s._setSubtreeIsolation(!0),L(),T?.({trap:s})},K=S();K?K.then(W):W()};if(E)return E(i.containers.concat()).then(k,k),this;k()}catch(W){if($===ue.getActiveTrap(o)&&C){var N;(N=$._setSubtreeIsolation)===null||N===void 0||N.call($,!0)}throw W}return this},deactivate:function(h){if(!i.active)return this;var f=kn({onDeactivate:r.onDeactivate,onPostDeactivate:r.onPostDeactivate,checkCanReturnFocus:r.checkCanReturnFocus},h);clearTimeout(i.delayInitialFocusTimer),i.delayInitialFocusTimer=void 0,i.paused||s._setSubtreeIsolation(!1),i.alreadySilent.clear(),F(),i.active=!1,i.paused=!1,L(),ue.deactivateTrap(o,s);var T=a(f,"onDeactivate"),E=a(f,"onPostDeactivate"),$=a(f,"checkCanReturnFocus"),C=a(f,"delayReturnFocus"),x=a(f,"returnFocus","returnFocusOnDeactivate");T?.({trap:s});var k=function(){x&&p(g(i.nodeFocusedBeforeActivation)),E?.({trap:s})},N=function(){C&&x?Nn(k):k()};return x&&$?($(g(i.nodeFocusedBeforeActivation)).then(N,N),this):(N(),this)},pause:function(h){return i.active?(i.manuallyPaused=!0,this._setPausedState(!0,h)):this},unpause:function(h){return i.active?(i.manuallyPaused=!1,o[o.length-1]!==this?this:this._setPausedState(!1,h)):this},updateContainerElements:function(h){var f=[].concat(h).filter(Boolean);return i.containers=f.map(function(T){return typeof T=="string"?n.querySelector(T):T}),r.isolateSubtrees&&O(i.containers),i.active&&(m(),i.paused||s._setSubtreeIsolation(!0)),L(),this}},Object.defineProperties(s,{_isManuallyPaused:{value:function(){return i.manuallyPaused}},_setPausedState:{value:function(h,f){if(i.paused===h)return this;if(i.paused=h,h){var T=a(f,"onPause"),E=a(f,"onPostPause");T?.({trap:s}),F(),s._setSubtreeIsolation(!1),L(),E?.({trap:s})}else{var $=a(f,"onUnpause"),C=a(f,"onPostUnpause");$?.({trap:s});var x=function(){m();var k=function(){s._setSubtreeIsolation(!0),L(),C?.({trap:s})},N=S();N?N.then(k):k()};x()}return this}},_setSubtreeIsolation:{value:function(h){r.isolateSubtrees&&i.adjacentElements.forEach(function(f){var T;h?r.isolateSubtrees==="aria-hidden"?((f.ariaHidden==="true"||((T=f.getAttribute("aria-hidden"))===null||T===void 0?void 0:T.toLowerCase())==="true")&&i.alreadySilent.add(f),f.setAttribute("aria-hidden","true")):((f.inert||f.hasAttribute("inert"))&&i.alreadySilent.add(f),f.setAttribute("inert",!0)):i.alreadySilent.has(f)||(r.isolateSubtrees==="aria-hidden"?f.removeAttribute("aria-hidden"):f.removeAttribute("inert"))})}}}),s.updateContainerElements(e),s};const Hr=Ce({name:"NcPopoverTriggerProvider",provide(){return{"NcPopover:trigger:shown":()=>this.shown,"NcPopover:trigger:attrs":()=>this.triggerAttrs}},props:{shown:{type:Boolean,required:!0},popupRole:{type:String,default:void 0}},computed:{triggerAttrs(){return{"aria-haspopup":this.popupRole,"aria-expanded":this.shown.toString()}}},render(){return this.$slots.default?.({attrs:this.triggerAttrs})}}),jr="_ncPopover_zfWgY",Wr={"material-design-icon":"_material-design-icon_bkeq-",ncPopover:jr},go="nc-popover-9";xn.themes[go]=structuredClone(xn.themes.dropdown);const Gr={name:"NcPopover",components:{Dropdown:pr,NcPopoverTriggerProvider:Hr},props:{boundary:{type:[String,Object],default:""},closeOnClickOutside:{type:Boolean,default:!0},noCloseOnClickOutside:{type:Boolean,default:!1},container:{type:[Boolean,String],default:"body"},delay:{type:[Number,Object],default:0},noFocusTrap:{type:Boolean,default:!1},placement:{type:String,default:"bottom"},popoverBaseClass:{type:String,default:""},popoverTriggers:{type:[Array,Object],default:null},popupRole:{type:String,default:void 0,validator:e=>["menu","listbox","tree","grid","dialog","true"].includes(e)},setReturnFocus:{default:void 0,type:[Boolean,HTMLElement,SVGElement,String,Function]},shown:{type:Boolean,default:!1},triggers:{type:[Array,Object],default:()=>["click"]}},emits:["afterShow","afterHide","update:shown"],setup(){return{theme:go}},data(){return{internalShown:this.shown}},computed:{popperTriggers(){if(this.popoverTriggers&&Array.isArray(this.popoverTriggers))return this.popoverTriggers},popperHideTriggers(){if(this.popoverTriggers&&typeof this.popoverTriggers=="object")return this.popoverTriggers.hide},popperShowTriggers(){if(this.popoverTriggers&&typeof this.popoverTriggers=="object")return this.popoverTriggers.show},internalTriggers(){if(this.triggers&&Array.isArray(this.triggers))return this.triggers},hideTriggers(){if(this.triggers&&typeof this.triggers=="object")return this.triggers.hide},showTriggers(){if(this.triggers&&typeof this.triggers=="object")return this.triggers.show},internalPlacement(){return this.placement==="start"?ot?"right":"left":this.placement==="end"?ot?"left":"right":this.placement}},watch:{shown(e){this.internalShown=e},internalShown(e){this.$emit("update:shown",e)}},mounted(){this.checkTriggerA11y()},beforeUnmount(){this.clearFocusTrap(),this.clearEscapeStopPropagation()},methods:{checkTriggerA11y(){window.OC?.debug&&this.getPopoverTriggerContainerElement().querySelector("[aria-expanded]")},removeFloatingVueAriaDescribedBy(){const e=this.getPopoverTriggerContainerElement().querySelectorAll("[data-popper-shown]");for(const t of e)t.removeAttribute("aria-describedby")},getPopoverContentElement(){return this.$refs.popover?.$refs.popperContent?.$el},getPopoverTriggerContainerElement(){return this.$refs.popover?.$refs.popper?.$refs.reference},async useFocusTrap(){if(await this.$nextTick(),this.noFocusTrap)return;const e=this.getPopoverContentElement();e.tabIndex=-1,e&&(this.$focusTrap=mo(e,{escapeDeactivates:!1,allowOutsideClick:!0,setReturnFocus:this.setReturnFocus,trapStack:je(),fallBackFocus:e}),this.$focusTrap.activate())},clearFocusTrap(e={}){try{this.$focusTrap?.deactivate(e),this.$focusTrap=null}catch(t){Bo.warn("[NcPopover] Failed to clear focus trap",{error:t})}},addEscapeStopPropagation(){this.getPopoverContentElement()?.addEventListener("keydown",this.stopKeydownEscapeHandler)},clearEscapeStopPropagation(){this.getPopoverContentElement()?.removeEventListener("keydown",this.stopKeydownEscapeHandler)},stopKeydownEscapeHandler(e){e.type==="keydown"&&e.key==="Escape"&&e.stopPropagation()},async afterShow(){this.getPopoverContentElement().addEventListener("transitionend",()=>{this.$emit("afterShow")},{once:!0,passive:!0}),this.removeFloatingVueAriaDescribedBy(),await this.$nextTick(),await this.useFocusTrap(),this.addEscapeStopPropagation()},afterHide(){this.getPopoverContentElement()?.addEventListener("transitionend",()=>{this.$emit("afterHide")},{once:!0,passive:!0}),this.clearFocusTrap(),this.clearEscapeStopPropagation()}}};function Vr(e,t,n,o,r,i){const s=ze("NcPopoverTriggerProvider"),a=ze("Dropdown");return j(),_e(a,{ref:"popover",shown:r.internalShown,"onUpdate:shown":[t[0]||(t[0]=l=>r.internalShown=l),t[1]||(t[1]=l=>r.internalShown=l)],arrowPadding:10,autoHide:!n.noCloseOnClickOutside&&n.closeOnClickOutside,boundary:n.boundary||void 0,container:n.container,delay:n.delay,distance:10,handleResize:"",noAutoFocus:!0,placement:i.internalPlacement,popperClass:[e.$style.ncPopover,n.popoverBaseClass],popperTriggers:i.popperTriggers,popperHideTriggers:i.popperHideTriggers,popperShowTriggers:i.popperShowTriggers,theme:o.theme,triggers:i.internalTriggers,hideTriggers:i.hideTriggers,showTriggers:i.showTriggers,onApplyShow:i.afterShow,onApplyHide:i.afterHide},{popper:V(l=>[we(e.$slots,"default",Pt(Ct(l)))]),default:V(()=>[G(s,{shown:r.internalShown,popupRole:n.popupRole},{default:V(l=>[we(e.$slots,"trigger",Pt(Ct(l)))]),_:3},8,["shown","popupRole"])]),_:3},8,["shown","autoHide","boundary","container","delay","placement","popperClass","popperTriggers","popperHideTriggers","popperShowTriggers","theme","triggers","hideTriggers","showTriggers","onApplyShow","onApplyHide"])}const qr={$style:Wr},En=gt(Gr,[["render",Vr],["__cssModules",qr]]),Kr={name:"DotsHorizontalIcon",emits:["click"],props:{title:{type:String},fillColor:{type:String,default:"currentColor"},size:{type:Number,default:24}}},Ur=["aria-hidden","aria-label"],Yr=["fill","width","height"],Xr={d:"M16,12A2,2 0 0,1 18,10A2,2 0 0,1 20,12A2,2 0 0,1 18,14A2,2 0 0,1 16,12M10,12A2,2 0 0,1 12,10A2,2 0 0,1 14,12A2,2 0 0,1 12,14A2,2 0 0,1 10,12M4,12A2,2 0 0,1 6,10A2,2 0 0,1 8,12A2,2 0 0,1 6,14A2,2 0 0,1 4,12Z"},Zr={key:0};function Jr(e,t,n,o,r,i){return j(),ce("span",mt(e.$attrs,{"aria-hidden":n.title?null:"true","aria-label":n.title,class:"material-design-icon dots-horizontal-icon",role:"img",onClick:t[0]||(t[0]=s=>e.$emit("click",s))}),[(j(),ce("svg",{fill:n.fillColor,class:"material-design-icon__svg",width:n.size,height:n.size,viewBox:"0 0 24 24"},[q("path",Xr,[n.title?(j(),ce("title",Zr,Bn(n.title),1)):me("",!0)])],8,Yr))],16,Ur)}const Qr=gt(Kr,[["render",Jr]]);Vt(Ho);function vo(e){return Array.isArray(e)&&e.some(t=>{if(t===null)return!1;if(typeof t=="object"){const n=t;if(n.type===ko||n.type===Gt&&!vo(n.children)||n.type===No&&!n.children.trim())return!1}return!0})}const es=".focusable",ts={name:"NcActions",components:{NcButton:xe,NcPopover:En},provide(){return{[vi]:z(()=>this.actionsMenuSemanticType==="menu"),[yi]:this.closeMenu}},props:{open:{type:Boolean,default:!1},manualOpen:{type:Boolean,default:!1},forceMenu:{type:Boolean,default:!1},forceName:{type:Boolean,default:!1},menuName:{type:String,default:null},primary:{type:Boolean,default:!1},defaultIcon:{type:String,default:""},ariaLabel:{type:String,default:X("Actions")},placement:{type:String,default:"bottom"},boundariesElement:{type:Element,default:()=>document.getElementById("content-vue")??document.querySelector("body")},container:{type:[Boolean,String,Object,Element],default:"body"},disabled:{type:Boolean,default:!1},inline:{type:Number,default:0},variant:{type:String,validator(e){return["primary","secondary","tertiary","tertiary-no-background","tertiary-on-primary","error","warning","success"].includes(e)},default:null},wide:{type:Boolean,default:!1},size:{type:String,default:"normal",validator(e){return["small","normal","large"].includes(e)}}},emits:["click","blur","focus","close","closed","open","opened","update:open"],setup(){return{randomId:Fn()}},data(){return{opened:this.open,focusIndex:0,actionsMenuSemanticType:"unknown"}},computed:{triggerButtonVariant(){return this.variant||(this.primary?"primary":this.menuName?"secondary":"tertiary")},config(){return{menu:{popupRole:"menu",withArrowNavigation:!0,withTabNavigation:!1,withFocusTrap:!1},navigation:{popupRole:void 0,withArrowNavigation:!1,withTabNavigation:!0,withFocusTrap:!1},dialog:{popupRole:"dialog",withArrowNavigation:!1,withTabNavigation:!0,withFocusTrap:!0},tooltip:{popupRole:void 0,withArrowNavigation:!1,withTabNavigation:!1,withFocusTrap:!1},unknown:{popupRole:void 0,role:void 0,withArrowNavigation:!0,withTabNavigation:!1,withFocusTrap:!0}}[this.actionsMenuSemanticType]},withFocusTrap(){return this.config.withFocusTrap}},watch:{open(e){e!==this.opened&&(this.opened=e)},opened(){this.opened?document.body.addEventListener("keydown",this.handleEscapePressed):document.body.removeEventListener("keydown",this.handleEscapePressed)}},created(){bi(()=>this.opened,{disabled:()=>this.config.withFocusTrap}),"ariaHidden"in this.$attrs},methods:{getActionName(e){return e?.type?.name},isValidSingleAction(e){return["NcActionButton","NcActionLink","NcActionRouter"].includes(this.getActionName(e))},isAction(e){return this.getActionName(e)?.startsWith?.("NcAction")},isIconUrl(e){try{return!!new URL(e,e.startsWith("/")?window.location.origin:void 0)}catch{return!1}},toggleMenu(e){e?this.openMenu():this.closeMenu()},openMenu(){this.opened||(this.opened=!0,this.$emit("update:open",!0),this.$emit("open"))},async closeMenu(e=!0){this.opened&&(await this.$nextTick(),this.opened=!1,this.$refs.popover?.clearFocusTrap({returnFocus:e}),this.$emit("update:open",!1),this.$emit("close"),this.focusIndex=0,e&&this.$refs.triggerButton?.$el.focus())},onOpened(){this.$nextTick(()=>{this.focusFirstAction(null),this.$emit("opened")})},onClosed(){this.$emit("closed")},getCurrentActiveMenuItemElement(){return this.$refs.menu.querySelector("li.active")},getFocusableMenuItemElements(){return this.$refs.menu.querySelectorAll(es)},onKeydown(e){if(e.key==="Tab"){if(this.config.withFocusTrap)return;if(!this.config.withTabNavigation){this.closeMenu(!0);return}e.preventDefault();const t=this.getFocusableMenuItemElements(),n=[...t].indexOf(document.activeElement);if(n===-1)return;const o=e.shiftKey?n-1:n+1;(o<0||o===t.length)&&this.closeMenu(!0),this.focusIndex=o,this.focusAction();return}this.config.withArrowNavigation&&(e.key==="ArrowUp"&&this.focusPreviousAction(e),e.key==="ArrowDown"&&this.focusNextAction(e),e.key==="PageUp"&&this.focusFirstAction(e),e.key==="PageDown"&&this.focusLastAction(e)),this.handleEscapePressed(e)},onTriggerKeydown(e){e.key==="Escape"&&this.actionsMenuSemanticType==="tooltip"&&this.closeMenu()},handleEscapePressed(e){e.key==="Escape"&&(this.closeMenu(),e.preventDefault())},removeCurrentActive(){const e=this.$refs.menu.querySelector("li.active");e&&e.classList.remove("active")},focusAction(){const e=this.getFocusableMenuItemElements()[this.focusIndex];if(e){this.removeCurrentActive();const t=e.closest("li.action");e.focus(),t&&t.classList.add("active")}},focusPreviousAction(e){this.opened&&(this.focusIndex===0?this.focusLastAction(e):(this.preventIfEvent(e),this.focusIndex=this.focusIndex-1),this.focusAction())},focusNextAction(e){if(this.opened){const t=this.getFocusableMenuItemElements().length-1;this.focusIndex===t?this.focusFirstAction(e):(this.preventIfEvent(e),this.focusIndex=this.focusIndex+1),this.focusAction()}},focusFirstAction(e){if(this.opened){this.preventIfEvent(e);const t=[...this.getFocusableMenuItemElements()].findIndex(n=>n.getAttribute("aria-checked")==="true"&&n.getAttribute("role")==="menuitemradio");this.focusIndex=t>-1?t:0,this.focusAction()}},focusLastAction(e){this.opened&&(this.preventIfEvent(e),this.focusIndex=this.getFocusableMenuItemElements().length-1,this.focusAction())},preventIfEvent(e){e&&(e.preventDefault(),e.stopPropagation())},onFocus(e){this.$emit("focus",e)},onBlur(e){this.$emit("blur",e),this.actionsMenuSemanticType==="tooltip"&&this.$refs.menu&&this.getFocusableMenuItemElements().length===0&&this.closeMenu(!1)},onClick(e){this.$emit("click",e)}},render(){const e=[],t=(p,g)=>{p.forEach(y=>{if(this.isAction(y)){g.push(y);return}y.type===Gt&&t(y.children,g)})};if(t(this.$slots.default?.(),e),e.length===0)return;let n=e.filter(this.isValidSingleAction);this.forceMenu&&n.length>0&&this.inline>0&&(n=[]);const o=n.slice(0,this.inline),r=e.filter(p=>!o.includes(p)),i=["NcActionButton","NcActionButtonGroup","NcActionCheckbox","NcActionRadio"],s=["NcActionInput","NcActionTextEditable"],a=["NcActionLink","NcActionRouter"],l=r.some(p=>s.includes(this.getActionName(p))),u=r.some(p=>i.includes(this.getActionName(p))),d=r.some(p=>a.includes(this.getActionName(p)));l?this.actionsMenuSemanticType="dialog":u?this.actionsMenuSemanticType="menu":d?this.actionsMenuSemanticType="navigation":e.filter(p=>this.getActionName(p).startsWith("NcAction")).length===e.length?this.actionsMenuSemanticType="tooltip":this.actionsMenuSemanticType="unknown";const c=p=>{const g=p?.props?.icon,y=p?.children?.icon?.()?.[0]??(this.isIconUrl(g)?Y("img",{class:"action-item__menutoggle__icon",src:g,alt:""}):Y("span",{class:["icon",g]})),v=p?.children?.default?.()?.[0]?.children?.trim(),w=this.forceName?v:"";let b=p?.props?.title;this.forceName||b||(b=v);const _={...p?.props??{}},P=["submit","reset"].includes(_.type)?_.modelValue:"button";return delete _.modelValue,delete _.type,Y(xe,mt(_,{class:["action-item action-item--single",{"action-item--wide":this.wide}],"aria-label":p?.props?.["aria-label"]||v,title:b,disabled:this.disabled||p?.props?.disabled,pressed:p?.props?.modelValue,size:this.size,type:P,wide:this.wide,variant:this.variant||(w?"secondary":"tertiary"),onFocus:this.onFocus,onBlur:this.onBlur,"onUpdate:pressed":p?.props?.["onUpdate:modelValue"]??(()=>{})}),{default:()=>w,icon:()=>y})},m=p=>{const g=vo(this.$slots.icon?.())?this.$slots.icon?.():this.defaultIcon?Y("span",{class:["icon",this.defaultIcon]}):Y(Qr,{size:20}),y=`${this.randomId}-trigger`;return Y(En,{ref:"popover",delay:0,shown:this.opened,placement:this.placement,boundary:this.boundariesElement,autoBoundaryMaxSize:!0,container:this.container,...this.manualOpen&&{triggers:[]},noCloseOnClickOutside:this.manualOpen,popoverBaseClass:"action-item__popper",popupRole:this.config.popupRole,setReturnFocus:this.config.withFocusTrap?this.$refs.triggerButton?.$el:void 0,noFocusTrap:!this.config.withFocusTrap,"onUpdate:shown":this.toggleMenu,onAfterShow:this.onOpened,onAfterClose:this.onClosed},{trigger:()=>Y(xe,{id:y,class:"action-item__menutoggle",disabled:this.disabled,size:this.size,variant:this.triggerButtonVariant,wide:this.wide,ref:"triggerButton","aria-label":this.menuName?null:this.ariaLabel,"aria-controls":this.opened&&this.config.popupRole?this.randomId:null,onFocus:this.onFocus,onBlur:this.onBlur,onClick:this.onClick,onKeydown:this.onTriggerKeydown},{icon:()=>g,default:()=>this.menuName}),default:()=>Y("div",{class:{open:this.opened},tabindex:"-1",onKeydown:this.onKeydown,ref:"menu"},[Y("ul",{id:this.randomId,tabindex:"-1",ref:"menuList",role:this.config.popupRole,"aria-labelledby":y,"aria-modal":this.actionsMenuSemanticType==="dialog"?"true":void 0},[p])])})};return e.length===1&&n.length===1&&!this.forceMenu?c(e[0]):(this.$nextTick(()=>{this.opened&&this.$refs.menu&&(this.$refs.menu.querySelector("li.active")||[]).length===0&&this.focusFirstAction()}),o.length>0&&this.inline>0?Y("div",{class:["action-items",`action-item--${this.triggerButtonVariant}`]},[...o.map(c),r.length>0?Y("div",{class:["action-item",{"action-item--open":this.opened}]},[m(r)]):null]):Y("div",{class:["action-item action-item--default-popover",`action-item--${this.triggerButtonVariant}`,{"action-item--open":this.opened,"action-item--wide":this.wide}]},[m(e)]))}},ns=gt(ts,[["__scopeId","data-v-23e5cae7"]]);Vt(jo);const os={long:X("a few seconds ago"),short:X("seconds ago"),narrow:X("sec. ago")};function Gs(e=Date.now(),t={}){let n;const o=z(()=>new Date(B(e))),r=z(()=>{const{language:a,relativeTime:l,ignoreSeconds:u}=B(t);return{...a&&{language:a},...l&&{relativeTime:l},ignoreSeconds:u?os[l||"long"]:!1}}),i=Pe("");ft(()=>s());function s(){if(i.value=qo(o.value,r.value),B(t).update!==!1){const a=Math.abs(Date.now()-new Date(B(e)).getTime()),l=a>12e4||r.value.ignoreSeconds?Math.min(a/60,18e5):1e3;n=window.setTimeout(s,l)}}return et(()=>n&&window.clearTimeout(n)),Wt(i)}function Vs(e,t){const n=z(()=>({locale:vt(),format:{dateStyle:"short",timeStyle:"medium"},...B(t)})),o=z(()=>new Intl.DateTimeFormat(n.value.locale,n.value.format));return z(()=>o.value.format(B(e)))}const is=/mac|ipad|iphone|darwin/i.test(navigator.userAgent),rs=window.OCP?.Accessibility?.disableKeyboardShortcuts?.(),ss=/^[a-zA-Z0-9]$/,as=/^[^\x20-\x7F]$/;function ls(e,t){return!(e.target instanceof HTMLElement)||e.target instanceof HTMLInputElement||e.target instanceof HTMLTextAreaElement||e.target instanceof HTMLSelectElement||e.target.isContentEditable?!0:t.allowInModal?!1:Array.from(document.getElementsByClassName("modal-mask")).filter(n=>n.checkVisibility()).length>0}function Pn(e,t){return n=>{if((is?n.metaKey:n.ctrlKey)===!!t.ctrl){if(n.altKey!==!!t.alt||t.shift!==void 0&&n.shiftKey!==!!t.shift||ls(n,t))return;t.prevent&&n.preventDefault(),t.stop&&n.stopPropagation(),e(n)}}}function Cn(e,t=()=>{},n={}){if(rs)return()=>{};const o=(a,l)=>{if(a.key===l)return!0;if(n.caseSensitive){const u=l===l.toLowerCase(),d=a.key===a.key.toLowerCase();if(u!==d)return!1}return ss.test(l)&&as.test(a.key)?a.code.replace(/^(?:Key|Digit|Numpad)/,"")===l.toUpperCase():a.key.toLowerCase()===l.toLowerCase()},r=a=>typeof e=="function"?e(a):typeof e=="string"?o(a,e):Array.isArray(e)?e.some(l=>o(a,l)):!0,i=nn(r,Pn(t,n),{eventName:"keydown",dedupe:!0,passive:!n.prevent}),s=n.push?nn(r,Pn(t,n),{eventName:"keyup",passive:!n.prevent}):()=>{};return()=>{i(),s()}}function us(e=document.body){const t=window.getComputedStyle(e).getPropertyValue("--background-invert-if-dark");return t!==void 0?t==="invert(100%)":!1}us();const cs=Pe(yo());window.addEventListener("resize",()=>{cs.value=yo()});function yo(){return window.outerHeight===window.screen.height}function Dn(e){return!e.parent||"vapor"in e||"vapor"in e.parent||e.parent.subTree!==e.vnode?null:e.parent}function ds(e){const t=[e];let n=Dn(e);for(;n;)t.push(n),n=Dn(n);return t}function ps(){const e=ht();if(!e)throw new Error("useScopeId must be called within a setup context");const t=ds(e).map(n=>n.vnode.scopeId).filter(Boolean);return Object.fromEntries(t.map(n=>[n,""]))}Vt(Go,Wo);const hs=["aria-labelledby","aria-describedby"],fs=["data-theme-light","data-theme-dark"],ms=["id"],gs={class:"icons-menu"},vs=["title"],ys=["id"],ws={class:"modal-container__content"},bs=Ce({inheritAttrs:!1,__name:"NcModal",props:Qt({name:{default:""},hasPrevious:{type:Boolean},hasNext:{type:Boolean},outTransition:{type:Boolean},enableSlideshow:{type:Boolean},slideshowDelay:{default:5e3},slideshowPaused:{type:Boolean},disableSwipe:{type:Boolean},spreadNavigation:{type:Boolean},size:{default:"normal"},noClose:{type:Boolean},closeOnClickOutside:{type:Boolean},dark:{type:Boolean},lightBackdrop:{type:Boolean},container:{default:"body"},closeButtonOutside:{type:Boolean},additionalTrapElements:{default:()=>[]},inlineActions:{default:0},labelId:{default:""},setReturnFocus:{default:void 0}},{show:{type:Boolean,default:!0},showModifiers:{}}),emits:Qt(["next","previous","close","update:show"],["update:show"]),setup(e,{emit:t}){Eo(A=>({v046d2bb2:w.value,v71f7c020:g.value}));const n=Po(e,"show"),o=e,r=t,i=ps(),s=Fn(),a=Co("mask");let l;et(()=>I()),le(()=>o.additionalTrapElements,A=>{l&&l.updateContainerElements([a.value,...A])});const{isActive:u,pause:d,resume:c}=ei(b,Mo(()=>o.slideshowDelay),{immediate:!1}),m=Pe(0),p=Pe(!1);ft(()=>{p.value&&!o.slideshowPaused?c():u.value&&d()});const g=z(()=>`${o.slideshowDelay}ms`),{stop:y}=gi(a,{onSwipeEnd:P});et(y),Cn("Escape",()=>{je().at(-1)===l&&S()},{allowInModal:!0}),Cn(["ArrowLeft","ArrowRight"],A=>{document.activeElement&&!a.value.contains(document.activeElement)||(A.key==="ArrowLeft"!==ot?_():b())},{allowInModal:!0});const v=Do(),w=z(()=>{let A=0;return o.hasNext&&o.enableSlideshow&&A++,!o.noClose&&o.closeButtonOutside&&A++,v.actions&&A++,A});Ht(()=>{!o.name&&o.labelId});function b(A){if(!o.hasNext){p.value=!1;return}A&&u.value&&R(),r("next",A)}function _(A){o.hasPrevious&&(A&&u.value&&R(),r("previous",A))}function P(A,L){if(!o.disableSwipe){if(L!=="left"&&L!=="right")return;L==="left"!==ot?b(A):_(A)}}function R(){d(),c(),m.value++}function S(A){o.noClose||(n.value=!1,setTimeout(()=>{r("close",A)},300))}function O(A){o.closeOnClickOutside&&S(A)}async function F(){if(l)return;await jt();const A={allowOutsideClick:!0,fallbackFocus:a.value,trapStack:je(),escapeDeactivates:!1,setReturnFocus:o.setReturnFocus};l=mo([a.value,...o.additionalTrapElements],A),l.activate()}function I(){l&&(l?.deactivate(),l=void 0)}return(A,L)=>(j(),_e(Ro,{disabled:e.container===null,to:e.container},[G(De,{name:"fade",appear:"",onAfterEnter:F,onBeforeLeave:I},{default:V(()=>[Ke(q("div",mt({...A.$attrs,...M(i)},{ref:"mask",class:["modal-mask",{"modal-mask--opaque":e.dark||e.closeButtonOutside||e.hasPrevious||e.hasNext,"modal-mask--light":e.lightBackdrop}],role:"dialog","aria-modal":"true","aria-labelledby":e.labelId||`modal-name-${M(s)}`,"aria-describedby":"modal-description-"+M(s),tabindex:"-1"}),[G(De,{name:"fade-visibility",appear:""},{default:V(()=>[q("div",{class:"modal-header","data-theme-light":e.lightBackdrop,"data-theme-dark":!e.lightBackdrop},[e.name.trim()!==""?(j(),ce("h2",{key:0,id:"modal-name-"+M(s),class:"modal-header__name"},Bn(e.name),9,ms)):me("",!0),q("div",gs,[e.hasNext&&e.enableSlideshow?(j(),ce("button",{key:0,class:tt(["play-pause-icons",{"play-pause-icons--paused":e.slideshowPaused}]),title:M(u)?M(X)("Pause slideshow"):M(X)("Start slideshow"),type:"button",onClick:L[0]||(L[0]=h=>p.value=!p.value)},[G(Oe,{class:"play-pause-icons__icon",inline:"",name:M(u)?M(X)("Pause slideshow"):M(X)("Start slideshow"),path:M(u)?M(Fo):M(Io)},null,8,["name","path"]),M(u)?(j(),ce("svg",{key:`${M(s)}-animation-${m.value}`,class:"progress-ring",height:"50",width:"50"},[...L[1]||(L[1]=[q("circle",{class:"progress-ring__circle",stroke:"white","stroke-width":"2",fill:"transparent",r:"15",cx:"25",cy:"25"},null,-1)])])):me("",!0)],10,vs)):me("",!0),G(ns,{class:"header-actions",inline:e.inlineActions},{default:V(()=>[we(A.$slots,"actions",{},void 0,!0)]),_:3},8,["inline"]),!e.noClose&&e.closeButtonOutside?(j(),_e(xe,{key:1,"aria-label":M(X)("Close"),class:"header-close",variant:"tertiary",onClick:S},{icon:V(()=>[G(Oe,{path:M(en)},null,8,["path"])]),_:1},8,["aria-label"])):me("",!0)])],8,fs)]),_:3}),G(De,{name:`modal-${e.outTransition?"out":"in"}`,appear:""},{default:V(()=>[Ke(q("div",{class:tt(["modal-wrapper",[`modal-wrapper--${e.size}`,{"modal-wrapper--spread-navigation":e.spreadNavigation}]]),onMousedown:Oo(O,["self"])},[G(De,{name:"fade-visibility",appear:""},{default:V(()=>[Ke(G(xe,{"aria-label":M(X)("Previous"),class:"prev",variant:"tertiary-no-background",onClick:_},{icon:V(()=>[G(Oe,{directional:"",path:M(Lo),size:40},null,8,["path"])]),_:1},8,["aria-label"]),[[Ue,e.hasPrevious]])]),_:1}),q("div",{id:"modal-description-"+M(s),class:"modal-container"},[q("div",ws,[we(A.$slots,"default",{},void 0,!0)]),!e.noClose&&!e.closeButtonOutside?(j(),_e(xe,{key:0,"aria-label":M(X)("Close"),class:"modal-container__close",variant:"tertiary",onClick:S},{icon:V(()=>[G(Oe,{path:M(en)},null,8,["path"])]),_:1},8,["aria-label"])):me("",!0)],8,ys),G(De,{name:"fade-visibility",appear:""},{default:V(()=>[Ke(G(xe,{"aria-label":M(X)("Next"),class:"next",variant:"tertiary-no-background",onClick:b},{icon:V(()=>[G(Oe,{directional:"",path:M(zo),size:40},null,8,["path"])]),_:1},8,["aria-label"]),[[Ue,e.hasNext]])]),_:1})],34),[[Ue,n.value]])]),_:3},8,["name"])],16,hs),[[Ue,n.value]])]),_:3})],8,["disabled","to"]))}}),qs=gt(bs,[["__scopeId","data-v-3c357e2d"]]);export{Ae as A,H as B,ks as C,$s as D,pi as E,mo as F,je as G,Fs as H,Qr as I,Ls as J,Me as K,Hs as L,js as M,qs as N,zs as O,Ci as P,Dt as Q,We as R,Fi as S,Mi as T,Ii as U,Ws as V,Cn as W,Bs as a,ns as b,gi as c,Is as d,vi as e,qo as f,Es as g,us as h,ot as i,ii as j,Rs as k,Ns as l,Ps as m,As as n,Os as o,vo as p,En as q,Et as r,bi as s,Gs as t,Ms as u,Vs as v,Cs as w,yi as x,Ds as y,Qo as z}; -//# sourceMappingURL=NcModal-DiDvgcU8-7_SNLMd-.chunk.mjs.map +//# sourceMappingURL=NcModal-DiDvgcU8-Cb_C64qI.chunk.mjs.map diff --git a/dist/NcModal-DiDvgcU8-7_SNLMd-.chunk.mjs.license b/dist/NcModal-DiDvgcU8-Cb_C64qI.chunk.mjs.license similarity index 100% rename from dist/NcModal-DiDvgcU8-7_SNLMd-.chunk.mjs.license rename to dist/NcModal-DiDvgcU8-Cb_C64qI.chunk.mjs.license diff --git a/dist/NcModal-DiDvgcU8-7_SNLMd-.chunk.mjs.map b/dist/NcModal-DiDvgcU8-Cb_C64qI.chunk.mjs.map similarity index 99% rename from dist/NcModal-DiDvgcU8-7_SNLMd-.chunk.mjs.map rename to dist/NcModal-DiDvgcU8-Cb_C64qI.chunk.mjs.map index 8757aa6bba4f9..84681ccbbac9d 100644 --- a/dist/NcModal-DiDvgcU8-7_SNLMd-.chunk.mjs.map +++ b/dist/NcModal-DiDvgcU8-Cb_C64qI.chunk.mjs.map @@ -1 +1 @@ -{"version":3,"file":"NcModal-DiDvgcU8-7_SNLMd-.chunk.mjs","sources":["../node_modules/@nextcloud/l10n/dist/index.mjs","../node_modules/@vueuse/shared/dist/index.js","../node_modules/@vueuse/core/dist/index.js","../node_modules/@nextcloud/vue/dist/composables/useIsMobile/index.mjs","../node_modules/@nextcloud/vue/dist/chunks/rtl-v0UOPAM7.mjs","../node_modules/@nextcloud/vue/dist/chunks/useNcActions-BzPO2c4h.mjs","../node_modules/@nextcloud/vue/dist/chunks/focusTrap-HJQ4pqHV.mjs","../node_modules/@nextcloud/vue/dist/chunks/useTrapStackControl-B6cEicto.mjs","../node_modules/@floating-ui/utils/dist/floating-ui.utils.mjs","../node_modules/@floating-ui/core/dist/floating-ui.core.mjs","../node_modules/floating-vue/node_modules/@floating-ui/dom/dist/floating-ui.dom.browser.min.mjs","../node_modules/floating-vue/dist/floating-vue.mjs","../node_modules/tabbable/dist/index.esm.js","../node_modules/focus-trap/dist/focus-trap.esm.js","../node_modules/@nextcloud/vue/dist/chunks/NcPopover-B87bEPLq.mjs","../node_modules/@nextcloud/vue/dist/chunks/NcActions-C-wDqSrv.mjs","../node_modules/@nextcloud/vue/dist/composables/useFormatDateTime/index.mjs","../node_modules/@nextcloud/vue/dist/chunks/platform-CC2ecGvV.mjs","../node_modules/@nextcloud/vue/dist/composables/useHotKey/index.mjs","../node_modules/@nextcloud/vue/dist/functions/isDarkTheme/index.mjs","../node_modules/@nextcloud/vue/dist/composables/useIsFullscreen/index.mjs","../node_modules/@nextcloud/vue/dist/chunks/NcModal-DiDvgcU8.mjs"],"sourcesContent":["import { g as getCanonicalLocale, a as getLanguage } from \"./chunks/translation-DoG5ZELJ.mjs\";\nimport { b, e, i, l, d, r, c, s, t, t as t2, d as d2, u } from \"./chunks/translation-DoG5ZELJ.mjs\";\n/*!\n * SPDX-FileCopyrightText: 2022 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: GPL-3.0-or-later\n */\nfunction getFirstDay() {\n if (typeof globalThis.firstDay !== \"undefined\") {\n return globalThis.firstDay;\n }\n const intl = new Intl.Locale(getCanonicalLocale());\n const weekInfo = intl.getWeekInfo?.() ?? intl.weekInfo;\n if (weekInfo) {\n return weekInfo.firstDay % 7;\n }\n return 1;\n}\nfunction getDayNames() {\n if (typeof globalThis.dayNames !== \"undefined\") {\n return globalThis.dayNames;\n }\n const locale = getCanonicalLocale();\n return [\n new Date(1970, 0, 4).toLocaleDateString(locale, { weekday: \"long\" }),\n new Date(1970, 0, 5).toLocaleDateString(locale, { weekday: \"long\" }),\n new Date(1970, 0, 6).toLocaleDateString(locale, { weekday: \"long\" }),\n new Date(1970, 0, 7).toLocaleDateString(locale, { weekday: \"long\" }),\n new Date(1970, 0, 8).toLocaleDateString(locale, { weekday: \"long\" }),\n new Date(1970, 0, 9).toLocaleDateString(locale, { weekday: \"long\" }),\n new Date(1970, 0, 10).toLocaleDateString(locale, { weekday: \"long\" })\n ];\n}\nfunction getDayNamesShort() {\n if (typeof globalThis.dayNamesShort !== \"undefined\") {\n return globalThis.dayNamesShort;\n }\n const locale = getCanonicalLocale();\n return [\n new Date(1970, 0, 4).toLocaleDateString(locale, { weekday: \"short\" }),\n new Date(1970, 0, 5).toLocaleDateString(locale, { weekday: \"short\" }),\n new Date(1970, 0, 6).toLocaleDateString(locale, { weekday: \"short\" }),\n new Date(1970, 0, 7).toLocaleDateString(locale, { weekday: \"short\" }),\n new Date(1970, 0, 8).toLocaleDateString(locale, { weekday: \"short\" }),\n new Date(1970, 0, 9).toLocaleDateString(locale, { weekday: \"short\" }),\n new Date(1970, 0, 10).toLocaleDateString(locale, { weekday: \"short\" })\n ];\n}\nfunction getDayNamesMin() {\n if (typeof globalThis.dayNamesMin !== \"undefined\") {\n return globalThis.dayNamesMin;\n }\n const locale = getCanonicalLocale();\n return [\n new Date(1970, 0, 4).toLocaleDateString(locale, { weekday: \"narrow\" }),\n new Date(1970, 0, 5).toLocaleDateString(locale, { weekday: \"narrow\" }),\n new Date(1970, 0, 6).toLocaleDateString(locale, { weekday: \"narrow\" }),\n new Date(1970, 0, 7).toLocaleDateString(locale, { weekday: \"narrow\" }),\n new Date(1970, 0, 8).toLocaleDateString(locale, { weekday: \"narrow\" }),\n new Date(1970, 0, 9).toLocaleDateString(locale, { weekday: \"narrow\" }),\n new Date(1970, 0, 10).toLocaleDateString(locale, { weekday: \"narrow\" })\n ];\n}\nfunction getMonthNames() {\n if (typeof globalThis.monthNames !== \"undefined\") {\n return globalThis.monthNames;\n }\n const locale = getCanonicalLocale();\n return [\n new Date(1970, 0).toLocaleDateString(locale, { month: \"long\" }),\n new Date(1970, 1).toLocaleDateString(locale, { month: \"long\" }),\n new Date(1970, 2).toLocaleDateString(locale, { month: \"long\" }),\n new Date(1970, 3).toLocaleDateString(locale, { month: \"long\" }),\n new Date(1970, 4).toLocaleDateString(locale, { month: \"long\" }),\n new Date(1970, 5).toLocaleDateString(locale, { month: \"long\" }),\n new Date(1970, 6).toLocaleDateString(locale, { month: \"long\" }),\n new Date(1970, 7).toLocaleDateString(locale, { month: \"long\" }),\n new Date(1970, 8).toLocaleDateString(locale, { month: \"long\" }),\n new Date(1970, 9).toLocaleDateString(locale, { month: \"long\" }),\n new Date(1970, 10).toLocaleDateString(locale, { month: \"long\" }),\n new Date(1970, 11).toLocaleDateString(locale, { month: \"long\" })\n ];\n}\nfunction getMonthNamesShort() {\n if (typeof globalThis.monthNamesShort !== \"undefined\") {\n return globalThis.monthNamesShort;\n }\n const locale = getCanonicalLocale();\n return [\n new Date(1970, 0).toLocaleDateString(locale, { month: \"short\" }),\n new Date(1970, 1).toLocaleDateString(locale, { month: \"short\" }),\n new Date(1970, 2).toLocaleDateString(locale, { month: \"short\" }),\n new Date(1970, 3).toLocaleDateString(locale, { month: \"short\" }),\n new Date(1970, 4).toLocaleDateString(locale, { month: \"short\" }),\n new Date(1970, 5).toLocaleDateString(locale, { month: \"short\" }),\n new Date(1970, 6).toLocaleDateString(locale, { month: \"short\" }),\n new Date(1970, 7).toLocaleDateString(locale, { month: \"short\" }),\n new Date(1970, 8).toLocaleDateString(locale, { month: \"short\" }),\n new Date(1970, 9).toLocaleDateString(locale, { month: \"short\" }),\n new Date(1970, 10).toLocaleDateString(locale, { month: \"short\" }),\n new Date(1970, 11).toLocaleDateString(locale, { month: \"short\" })\n ];\n}\n/*!\n * SPDX-FileCopyrightText: 2025 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: GPL-3.0-or-later\n */\nfunction formatRelativeTime(timestamp = Date.now(), opts = {}) {\n const options = {\n ignoreSeconds: false,\n language: getLanguage(),\n relativeTime: \"long\",\n ...opts\n };\n const date = new Date(timestamp);\n const formatter = new Intl.RelativeTimeFormat([options.language, getLanguage()], { numeric: \"auto\", style: options.relativeTime });\n const diff = date.getTime() - Date.now();\n const seconds = diff / 1e3;\n if (Math.abs(seconds) < 59.5) {\n return options.ignoreSeconds || formatter.format(Math.round(seconds), \"second\");\n }\n const minutes = seconds / 60;\n if (Math.abs(minutes) <= 59) {\n return formatter.format(Math.round(minutes), \"minute\");\n }\n const hours = minutes / 60;\n if (Math.abs(hours) < 23.5) {\n return formatter.format(Math.round(hours), \"hour\");\n }\n const days = hours / 24;\n if (Math.abs(days) < 6.5) {\n return formatter.format(Math.round(days), \"day\");\n }\n if (Math.abs(days) < 27.5) {\n const weeks = days / 7;\n return formatter.format(Math.round(weeks), \"week\");\n }\n const months = days / 30;\n const format = Math.abs(months) < 11 ? { month: options.relativeTime, day: \"numeric\" } : { year: options.relativeTime === \"narrow\" ? \"2-digit\" : \"numeric\", month: options.relativeTime };\n const dateTimeFormatter = new Intl.DateTimeFormat([options.language, getLanguage()], format);\n return dateTimeFormatter.format(date);\n}\nexport {\n formatRelativeTime,\n getCanonicalLocale,\n getDayNames,\n getDayNamesMin,\n getDayNamesShort,\n getFirstDay,\n getLanguage,\n b as getLocale,\n getMonthNames,\n getMonthNamesShort,\n e as getPlural,\n i as isRTL,\n l as loadTranslations,\n d as n,\n r as register,\n c as setLanguage,\n s as setLocale,\n t,\n t2 as translate,\n d2 as translatePlural,\n u as unregister\n};\n//# sourceMappingURL=index.mjs.map\n","import { computed, customRef, effectScope, getCurrentInstance, getCurrentScope, hasInjectionContext, inject, isReactive, isRef, nextTick, onBeforeMount, onBeforeUnmount, onMounted, onScopeDispose, onUnmounted, provide, reactive, readonly, ref, shallowReadonly, shallowRef, toRef as toRef$1, toRefs as toRefs$1, toValue, unref, watch, watchEffect } from \"vue\";\n//#region computedEager/index.ts\n/**\n*\n* @deprecated This function will be removed in future version.\n*\n* Note: If you are using Vue 3.4+, you can straight use computed instead.\n* Because in Vue 3.4+, if computed new value does not change,\n* computed, effect, watch, watchEffect, render dependencies will not be triggered.\n* refer: https://github.com/vuejs/core/pull/5912\n*\n* @param fn effect function\n* @param options WatchOptionsBase\n* @returns readonly shallowRef\n*/\nfunction computedEager(fn, options) {\n\tvar _options$flush;\n\tconst result = shallowRef();\n\twatchEffect(() => {\n\t\tresult.value = fn();\n\t}, {\n\t\t...options,\n\t\tflush: (_options$flush = options === null || options === void 0 ? void 0 : options.flush) !== null && _options$flush !== void 0 ? _options$flush : \"sync\"\n\t});\n\treturn readonly(result);\n}\n/** @deprecated use `computedEager` instead */\nconst eagerComputed = computedEager;\n//#endregion\n//#region computedWithControl/index.ts\n/**\n* Explicitly define the deps of computed.\n*\n* @param source\n* @param fn\n*/\nfunction computedWithControl(source, fn, options = {}) {\n\tlet v = void 0;\n\tlet track;\n\tlet trigger;\n\tlet dirty = true;\n\tconst update = () => {\n\t\tdirty = true;\n\t\ttrigger();\n\t};\n\twatch(source, update, {\n\t\tflush: \"sync\",\n\t\t...options\n\t});\n\tconst get = typeof fn === \"function\" ? fn : fn.get;\n\tconst set = typeof fn === \"function\" ? void 0 : fn.set;\n\tconst result = customRef((_track, _trigger) => {\n\t\ttrack = _track;\n\t\ttrigger = _trigger;\n\t\treturn {\n\t\t\tget() {\n\t\t\t\tif (dirty) {\n\t\t\t\t\tv = get(v);\n\t\t\t\t\tdirty = false;\n\t\t\t\t}\n\t\t\t\ttrack();\n\t\t\t\treturn v;\n\t\t\t},\n\t\t\tset(v) {\n\t\t\t\tset === null || set === void 0 || set(v);\n\t\t\t}\n\t\t};\n\t});\n\tresult.trigger = update;\n\treturn result;\n}\n/** @deprecated use `computedWithControl` instead */\nconst controlledComputed = computedWithControl;\n//#endregion\n//#region createDisposableDirective/index.ts\n/**\n* Utility for authoring disposable directives. Reactive effects created within `mounted` directive hook will be tracked and automatically disposed when directive is unmounted.\n*\n* @see https://vueuse.org/createDisposableDirective\n*\n* @__NO_SIDE_EFFECTS__\n*/\nfunction createDisposableDirective(origin = {}) {\n\tfunction isFunc(fn) {\n\t\treturn typeof fn === \"function\";\n\t}\n\tconst normalisedOrigin = isFunc(origin) ? {\n\t\tmounted: origin,\n\t\tupdated: origin\n\t} : origin;\n\tconst { mounted, unmounted } = normalisedOrigin;\n\tif (!isFunc(mounted)) return origin;\n\tconst scopeWeakMap = /* @__PURE__ */ new WeakMap();\n\treturn {\n\t\t...normalisedOrigin,\n\t\tmounted(el, binding, vNode, prevNode) {\n\t\t\tvar _scopeWeakMap$get;\n\t\t\tconst scope = (_scopeWeakMap$get = scopeWeakMap.get(el)) !== null && _scopeWeakMap$get !== void 0 ? _scopeWeakMap$get : effectScope();\n\t\t\tscopeWeakMap.set(el, scope);\n\t\t\tscope.run(() => {\n\t\t\t\tmounted === null || mounted === void 0 || mounted(el, binding, vNode, prevNode);\n\t\t\t});\n\t\t},\n\t\tunmounted(el, binding, vNode, prevNode) {\n\t\t\tvar _scopeWeakMap$get2;\n\t\t\t(_scopeWeakMap$get2 = scopeWeakMap.get(el)) === null || _scopeWeakMap$get2 === void 0 || _scopeWeakMap$get2.stop();\n\t\t\tscopeWeakMap.delete(el);\n\t\t\tif (isFunc(unmounted)) unmounted(el, binding, vNode, prevNode);\n\t\t}\n\t};\n}\n//#endregion\n//#region tryOnScopeDispose/index.ts\n/**\n* Call onScopeDispose() if it's inside an effect scope lifecycle, if not, do nothing\n*\n* @param fn\n*/\nfunction tryOnScopeDispose(fn, failSilently) {\n\tif (getCurrentScope()) {\n\t\tonScopeDispose(fn, failSilently);\n\t\treturn true;\n\t}\n\treturn false;\n}\n//#endregion\n//#region createEventHook/index.ts\n/**\n* Utility for creating event hooks\n*\n* @see https://vueuse.org/createEventHook\n*\n* @__NO_SIDE_EFFECTS__\n*/\nfunction createEventHook() {\n\tconst fns = /* @__PURE__ */ new Set();\n\tconst off = (fn) => {\n\t\tfns.delete(fn);\n\t};\n\tconst clear = () => {\n\t\tfns.clear();\n\t};\n\tconst on = (fn) => {\n\t\tfns.add(fn);\n\t\tconst offFn = () => off(fn);\n\t\ttryOnScopeDispose(offFn);\n\t\treturn { off: offFn };\n\t};\n\tconst trigger = (...args) => {\n\t\treturn Promise.all(Array.from(fns).map((fn) => fn(...args)));\n\t};\n\treturn {\n\t\ton,\n\t\toff,\n\t\ttrigger,\n\t\tclear\n\t};\n}\n//#endregion\n//#region createGlobalState/index.ts\n/**\n* Keep states in the global scope to be reusable across Vue instances.\n*\n* @see https://vueuse.org/createGlobalState\n* @param stateFactory A factory function to create the state\n*\n* @__NO_SIDE_EFFECTS__\n*/\nfunction createGlobalState(stateFactory) {\n\tlet initialized = false;\n\tlet state;\n\tconst scope = effectScope(true);\n\treturn ((...args) => {\n\t\tif (!initialized) {\n\t\t\tstate = scope.run(() => stateFactory(...args));\n\t\t\tinitialized = true;\n\t\t}\n\t\treturn state;\n\t});\n}\n//#endregion\n//#region provideLocal/map.ts\nconst localProvidedStateMap = /* @__PURE__ */ new WeakMap();\n//#endregion\n//#region injectLocal/index.ts\n/**\n* On the basis of `inject`, it is allowed to directly call inject to obtain the value after call provide in the same component.\n*\n* @example\n* ```ts\n* injectLocal('MyInjectionKey', 1)\n* const injectedValue = injectLocal('MyInjectionKey') // injectedValue === 1\n* ```\n*\n* @__NO_SIDE_EFFECTS__\n*/\nconst injectLocal = (...args) => {\n\tvar _getCurrentInstance;\n\tconst key = args[0];\n\tconst instance = (_getCurrentInstance = getCurrentInstance()) === null || _getCurrentInstance === void 0 ? void 0 : _getCurrentInstance.proxy;\n\tconst owner = instance !== null && instance !== void 0 ? instance : getCurrentScope();\n\tif (owner == null && !hasInjectionContext()) throw new Error(\"injectLocal must be called in setup\");\n\tif (owner && localProvidedStateMap.has(owner) && key in localProvidedStateMap.get(owner)) return localProvidedStateMap.get(owner)[key];\n\treturn inject(...args);\n};\n//#endregion\n//#region provideLocal/index.ts\n/**\n* On the basis of `provide`, it is allowed to directly call inject to obtain the value after call provide in the same component.\n*\n* @example\n* ```ts\n* provideLocal('MyInjectionKey', 1)\n* const injectedValue = injectLocal('MyInjectionKey') // injectedValue === 1\n* ```\n*/\nfunction provideLocal(key, value) {\n\tvar _getCurrentInstance;\n\tconst instance = (_getCurrentInstance = getCurrentInstance()) === null || _getCurrentInstance === void 0 ? void 0 : _getCurrentInstance.proxy;\n\tconst owner = instance !== null && instance !== void 0 ? instance : getCurrentScope();\n\tif (owner == null) throw new Error(\"provideLocal must be called in setup\");\n\tif (!localProvidedStateMap.has(owner)) localProvidedStateMap.set(owner, Object.create(null));\n\tconst localProvidedState = localProvidedStateMap.get(owner);\n\tlocalProvidedState[key] = value;\n\treturn provide(key, value);\n}\n//#endregion\n//#region createInjectionState/index.ts\nfunction createInjectionState(composable, options) {\n\tconst key = (options === null || options === void 0 ? void 0 : options.injectionKey) || Symbol(composable.name || \"InjectionState\");\n\tconst defaultValue = options === null || options === void 0 ? void 0 : options.defaultValue;\n\tconst useProvidingState = (...args) => {\n\t\tconst state = composable(...args);\n\t\tprovideLocal(key, state);\n\t\treturn state;\n\t};\n\tconst useInjectedState = () => injectLocal(key, defaultValue);\n\treturn [useProvidingState, useInjectedState];\n}\n//#endregion\n//#region createRef/index.ts\n/**\n* Returns a `deepRef` or `shallowRef` depending on the `deep` param.\n*\n* @example createRef(1) // ShallowRef<number>\n* @example createRef(1, false) // ShallowRef<number>\n* @example createRef(1, true) // Ref<number>\n* @example createRef(\"string\") // ShallowRef<string>\n* @example createRef<\"A\"|\"B\">(\"A\", true) // Ref<\"A\"|\"B\">\n*\n* @param value\n* @param deep\n* @returns the `deepRef` or `shallowRef`\n*\n* @__NO_SIDE_EFFECTS__\n*/\nfunction createRef(value, deep) {\n\tif (deep === true) return ref(value);\n\telse return shallowRef(value);\n}\n//#endregion\n//#region utils/is.ts\nconst isClient = typeof window !== \"undefined\" && typeof document !== \"undefined\";\nconst isWorker = typeof WorkerGlobalScope !== \"undefined\" && globalThis instanceof WorkerGlobalScope;\nconst isDef = (val) => typeof val !== \"undefined\";\nconst notNullish = (val) => val != null;\nconst assert = (condition, ...infos) => {\n\tif (!condition) console.warn(...infos);\n};\nconst toString = Object.prototype.toString;\nconst isObject = (val) => toString.call(val) === \"[object Object]\";\nconst now = () => Date.now();\nconst timestamp = () => +Date.now();\nconst clamp = (n, min, max) => Math.min(max, Math.max(min, n));\nconst noop = () => {};\nconst rand = (min, max) => {\n\tmin = Math.ceil(min);\n\tmax = Math.floor(max);\n\treturn Math.floor(Math.random() * (max - min + 1)) + min;\n};\nconst hasOwn = (val, key) => Object.hasOwn(val, key);\nconst isIOS = /* @__PURE__ */ getIsIOS();\nfunction getIsIOS() {\n\tvar _window, _window2, _window3;\n\treturn isClient && !!((_window = window) === null || _window === void 0 || (_window = _window.navigator) === null || _window === void 0 ? void 0 : _window.userAgent) && (/iP(?:ad|hone|od)/.test(window.navigator.userAgent) || ((_window2 = window) === null || _window2 === void 0 || (_window2 = _window2.navigator) === null || _window2 === void 0 ? void 0 : _window2.maxTouchPoints) > 2 && /iPad|Macintosh/.test((_window3 = window) === null || _window3 === void 0 ? void 0 : _window3.navigator.userAgent));\n}\n//#endregion\n//#region toRef/index.ts\nfunction toRef(...args) {\n\tif (args.length !== 1) return toRef$1(...args);\n\tconst r = args[0];\n\treturn typeof r === \"function\" ? readonly(customRef(() => ({\n\t\tget: r,\n\t\tset: noop\n\t}))) : ref(r);\n}\n//#endregion\n//#region utils/filters.ts\n/**\n* @internal\n*/\nfunction createFilterWrapper(filter, fn) {\n\tfunction wrapper(...args) {\n\t\treturn new Promise((resolve, reject) => {\n\t\t\tPromise.resolve(filter(() => fn.apply(this, args), {\n\t\t\t\tfn,\n\t\t\t\tthisArg: this,\n\t\t\t\targs\n\t\t\t})).then(resolve).catch(reject);\n\t\t});\n\t}\n\treturn wrapper;\n}\nconst bypassFilter = (invoke) => {\n\treturn invoke();\n};\n/**\n* Create an EventFilter that debounce the events\n*/\nfunction debounceFilter(ms, options = {}) {\n\tlet timer;\n\tlet maxTimer;\n\tlet lastRejector = noop;\n\tconst _clearTimeout = (timer) => {\n\t\tclearTimeout(timer);\n\t\tlastRejector();\n\t\tlastRejector = noop;\n\t};\n\tlet lastInvoker;\n\tconst filter = (invoke) => {\n\t\tconst duration = toValue(ms);\n\t\tconst maxDuration = toValue(options.maxWait);\n\t\tif (timer) _clearTimeout(timer);\n\t\tif (duration <= 0 || maxDuration !== void 0 && maxDuration <= 0) {\n\t\t\tif (maxTimer) {\n\t\t\t\t_clearTimeout(maxTimer);\n\t\t\t\tmaxTimer = void 0;\n\t\t\t}\n\t\t\treturn Promise.resolve(invoke());\n\t\t}\n\t\treturn new Promise((resolve, reject) => {\n\t\t\tlastRejector = options.rejectOnCancel ? reject : resolve;\n\t\t\tlastInvoker = invoke;\n\t\t\tif (maxDuration && !maxTimer) maxTimer = setTimeout(() => {\n\t\t\t\tif (timer) _clearTimeout(timer);\n\t\t\t\tmaxTimer = void 0;\n\t\t\t\tresolve(lastInvoker());\n\t\t\t}, maxDuration);\n\t\t\ttimer = setTimeout(() => {\n\t\t\t\tif (maxTimer) _clearTimeout(maxTimer);\n\t\t\t\tmaxTimer = void 0;\n\t\t\t\tresolve(invoke());\n\t\t\t}, duration);\n\t\t});\n\t};\n\treturn filter;\n}\nfunction throttleFilter(...args) {\n\tlet lastExec = 0;\n\tlet timer;\n\tlet isLeading = true;\n\tlet lastRejector = noop;\n\tlet lastValue;\n\tlet ms;\n\tlet trailing;\n\tlet leading;\n\tlet rejectOnCancel;\n\tif (!isRef(args[0]) && typeof args[0] === \"object\") ({delay: ms, trailing = true, leading = true, rejectOnCancel = false} = args[0]);\n\telse [ms, trailing = true, leading = true, rejectOnCancel = false] = args;\n\tconst clear = () => {\n\t\tif (timer) {\n\t\t\tclearTimeout(timer);\n\t\t\ttimer = void 0;\n\t\t\tlastRejector();\n\t\t\tlastRejector = noop;\n\t\t}\n\t};\n\tconst filter = (_invoke) => {\n\t\tconst duration = toValue(ms);\n\t\tconst elapsed = Date.now() - lastExec;\n\t\tconst invoke = () => {\n\t\t\treturn lastValue = _invoke();\n\t\t};\n\t\tclear();\n\t\tif (duration <= 0) {\n\t\t\tlastExec = Date.now();\n\t\t\treturn invoke();\n\t\t}\n\t\tif (elapsed > duration) {\n\t\t\tlastExec = Date.now();\n\t\t\tif (leading || !isLeading) invoke();\n\t\t} else if (trailing) lastValue = new Promise((resolve, reject) => {\n\t\t\tlastRejector = rejectOnCancel ? reject : resolve;\n\t\t\ttimer = setTimeout(() => {\n\t\t\t\tlastExec = Date.now();\n\t\t\t\tisLeading = true;\n\t\t\t\tresolve(invoke());\n\t\t\t\tclear();\n\t\t\t}, Math.max(0, duration - elapsed));\n\t\t});\n\t\tif (!leading && !timer) timer = setTimeout(() => isLeading = true, duration);\n\t\tisLeading = false;\n\t\treturn lastValue;\n\t};\n\treturn filter;\n}\n/**\n* EventFilter that gives extra controls to pause and resume the filter\n*\n* @param extendFilter Extra filter to apply when the PausableFilter is active, default to none\n* @param options Options to configure the filter\n*/\nfunction pausableFilter(extendFilter = bypassFilter, options = {}) {\n\tconst { initialState = \"active\" } = options;\n\tconst isActive = toRef(initialState === \"active\");\n\tfunction pause() {\n\t\tisActive.value = false;\n\t}\n\tfunction resume() {\n\t\tisActive.value = true;\n\t}\n\tconst eventFilter = (...args) => {\n\t\tif (isActive.value) extendFilter(...args);\n\t};\n\treturn {\n\t\tisActive: shallowReadonly(isActive),\n\t\tpause,\n\t\tresume,\n\t\teventFilter\n\t};\n}\n//#endregion\n//#region utils/general.ts\nfunction promiseTimeout(ms, throwOnTimeout = false, reason = \"Timeout\") {\n\treturn new Promise((resolve, reject) => {\n\t\tif (throwOnTimeout) setTimeout(reject, ms, reason);\n\t\telse setTimeout(resolve, ms);\n\t});\n}\nfunction identity(arg) {\n\treturn arg;\n}\n/**\n* Create singleton promise function\n*\n* @example\n* ```\n* const promise = createSingletonPromise(async () => { ... })\n*\n* await promise()\n* await promise() // all of them will be bind to a single promise instance\n* await promise() // and be resolved together\n* ```\n*/\nfunction createSingletonPromise(fn) {\n\tlet _promise;\n\tfunction wrapper() {\n\t\tif (!_promise) _promise = fn();\n\t\treturn _promise;\n\t}\n\twrapper.reset = async () => {\n\t\tconst _prev = _promise;\n\t\t_promise = void 0;\n\t\tif (_prev) await _prev;\n\t};\n\treturn wrapper;\n}\nfunction invoke(fn) {\n\treturn fn();\n}\nfunction containsProp(obj, ...props) {\n\treturn props.some((k) => k in obj);\n}\nfunction increaseWithUnit(target, delta) {\n\tvar _target$match;\n\tif (typeof target === \"number\") return target + delta;\n\tconst value = ((_target$match = target.match(/^-?\\d+\\.?\\d*/)) === null || _target$match === void 0 ? void 0 : _target$match[0]) || \"\";\n\tconst unit = target.slice(value.length);\n\tconst result = Number.parseFloat(value) + delta;\n\tif (Number.isNaN(result)) return target;\n\treturn result + unit;\n}\n/**\n* Get a px value for SSR use, do not rely on this method outside of SSR as REM unit is assumed at 16px, which might not be the case on the client\n*/\nfunction pxValue(px) {\n\treturn px.endsWith(\"rem\") ? Number.parseFloat(px) * 16 : Number.parseFloat(px);\n}\n/**\n* Create a new subset object by giving keys\n*/\nfunction objectPick(obj, keys, omitUndefined = false) {\n\treturn keys.reduce((n, k) => {\n\t\tif (k in obj) {\n\t\t\tif (!omitUndefined || obj[k] !== void 0) n[k] = obj[k];\n\t\t}\n\t\treturn n;\n\t}, {});\n}\n/**\n* Create a new subset object by omit giving keys\n*/\nfunction objectOmit(obj, keys, omitUndefined = false) {\n\treturn Object.fromEntries(Object.entries(obj).filter(([key, value]) => {\n\t\treturn (!omitUndefined || value !== void 0) && !keys.includes(key);\n\t}));\n}\nfunction objectEntries(obj) {\n\treturn Object.entries(obj);\n}\nfunction toArray(value) {\n\treturn Array.isArray(value) ? value : [value];\n}\n//#endregion\n//#region utils/port.ts\nfunction cacheStringFunction(fn) {\n\tconst cache = Object.create(null);\n\treturn ((str) => {\n\t\treturn cache[str] || (cache[str] = fn(str));\n\t});\n}\nconst hyphenateRE = /\\B([A-Z])/g;\nconst hyphenate = cacheStringFunction((str) => str.replace(hyphenateRE, \"-$1\").toLowerCase());\nconst camelizeRE = /-(\\w)/g;\nconst camelize = cacheStringFunction((str) => {\n\treturn str.replace(camelizeRE, (_, c) => c ? c.toUpperCase() : \"\");\n});\n//#endregion\n//#region utils/vue.ts\nfunction getLifeCycleTarget(target) {\n\treturn target || getCurrentInstance();\n}\n//#endregion\n//#region createSharedComposable/index.ts\n/**\n* Make a composable function usable with multiple Vue instances.\n*\n* @see https://vueuse.org/createSharedComposable\n*\n* @__NO_SIDE_EFFECTS__\n*/\nfunction createSharedComposable(composable) {\n\tif (!isClient) return composable;\n\tlet subscribers = 0;\n\tlet state;\n\tlet scope;\n\tconst dispose = () => {\n\t\tsubscribers -= 1;\n\t\tif (scope && subscribers <= 0) {\n\t\t\tscope.stop();\n\t\t\tstate = void 0;\n\t\t\tscope = void 0;\n\t\t}\n\t};\n\treturn ((...args) => {\n\t\tsubscribers += 1;\n\t\tif (!scope) {\n\t\t\tscope = effectScope(true);\n\t\t\tstate = scope.run(() => composable(...args));\n\t\t}\n\t\ttryOnScopeDispose(dispose);\n\t\treturn state;\n\t});\n}\n//#endregion\n//#region extendRef/index.ts\nfunction extendRef(ref, extend, { enumerable = false, unwrap = true } = {}) {\n\tfor (const [key, value] of Object.entries(extend)) {\n\t\tif (key === \"value\") continue;\n\t\tif (isRef(value) && unwrap) Object.defineProperty(ref, key, {\n\t\t\tget() {\n\t\t\t\treturn value.value;\n\t\t\t},\n\t\t\tset(v) {\n\t\t\t\tvalue.value = v;\n\t\t\t},\n\t\t\tenumerable\n\t\t});\n\t\telse Object.defineProperty(ref, key, {\n\t\t\tvalue,\n\t\t\tenumerable\n\t\t});\n\t}\n\treturn ref;\n}\n//#endregion\n//#region get/index.ts\nfunction get(obj, key) {\n\tif (key == null) return unref(obj);\n\treturn unref(obj)[key];\n}\n//#endregion\n//#region isDefined/index.ts\nfunction isDefined(v) {\n\treturn unref(v) != null;\n}\n//#endregion\n//#region makeDestructurable/index.ts\n/* @__NO_SIDE_EFFECTS__ */\nfunction makeDestructurable(obj, arr) {\n\tif (typeof Symbol !== \"undefined\") {\n\t\tconst clone = { ...obj };\n\t\tObject.defineProperty(clone, Symbol.iterator, {\n\t\t\tenumerable: false,\n\t\t\tvalue() {\n\t\t\t\tlet index = 0;\n\t\t\t\treturn { next: () => ({\n\t\t\t\t\tvalue: arr[index++],\n\t\t\t\t\tdone: index > arr.length\n\t\t\t\t}) };\n\t\t\t}\n\t\t});\n\t\treturn clone;\n\t} else return Object.assign([...arr], obj);\n}\n//#endregion\n//#region reactify/index.ts\n/**\n* Converts plain function into a reactive function.\n* The converted function accepts refs as it's arguments\n* and returns a ComputedRef, with proper typing.\n*\n* @param fn - Source function\n* @param options - Options\n*\n* @__NO_SIDE_EFFECTS__\n*/\nfunction reactify(fn, options) {\n\tconst unrefFn = (options === null || options === void 0 ? void 0 : options.computedGetter) === false ? unref : toValue;\n\treturn function(...args) {\n\t\treturn computed(() => fn.apply(this, args.map((i) => unrefFn(i))));\n\t};\n}\n/** @deprecated use `reactify` instead */\nconst createReactiveFn = reactify;\n//#endregion\n//#region reactifyObject/index.ts\n/**\n* Apply `reactify` to an object\n*\n* @__NO_SIDE_EFFECTS__\n*/\nfunction reactifyObject(obj, optionsOrKeys = {}) {\n\tlet keys = [];\n\tlet options;\n\tif (Array.isArray(optionsOrKeys)) keys = optionsOrKeys;\n\telse {\n\t\toptions = optionsOrKeys;\n\t\tconst { includeOwnProperties = true } = optionsOrKeys;\n\t\tkeys.push(...Object.keys(obj));\n\t\tif (includeOwnProperties) keys.push(...Object.getOwnPropertyNames(obj));\n\t}\n\treturn Object.fromEntries(keys.map((key) => {\n\t\tconst value = obj[key];\n\t\treturn [key, typeof value === \"function\" ? reactify(value.bind(obj), options) : value];\n\t}));\n}\n//#endregion\n//#region toReactive/index.ts\n/**\n* Converts ref to reactive.\n*\n* @see https://vueuse.org/toReactive\n* @param objectRef A ref of object\n*/\nfunction toReactive(objectRef) {\n\tif (!isRef(objectRef)) return reactive(objectRef);\n\treturn reactive(new Proxy({}, {\n\t\tget(_, p, receiver) {\n\t\t\treturn unref(Reflect.get(objectRef.value, p, receiver));\n\t\t},\n\t\tset(_, p, value) {\n\t\t\tif (isRef(objectRef.value[p]) && !isRef(value)) objectRef.value[p].value = value;\n\t\t\telse objectRef.value[p] = value;\n\t\t\treturn true;\n\t\t},\n\t\tdeleteProperty(_, p) {\n\t\t\treturn Reflect.deleteProperty(objectRef.value, p);\n\t\t},\n\t\thas(_, p) {\n\t\t\treturn Reflect.has(objectRef.value, p);\n\t\t},\n\t\townKeys() {\n\t\t\treturn Object.keys(objectRef.value);\n\t\t},\n\t\tgetOwnPropertyDescriptor() {\n\t\t\treturn {\n\t\t\t\tenumerable: true,\n\t\t\t\tconfigurable: true\n\t\t\t};\n\t\t}\n\t}));\n}\n//#endregion\n//#region reactiveComputed/index.ts\n/**\n* Computed reactive object.\n*/\nfunction reactiveComputed(fn) {\n\treturn toReactive(computed(fn));\n}\n//#endregion\n//#region reactiveOmit/index.ts\n/**\n* Reactively omit fields from a reactive object\n*\n* @see https://vueuse.org/reactiveOmit\n*/\nfunction reactiveOmit(obj, ...keys) {\n\tconst flatKeys = keys.flat();\n\tconst predicate = flatKeys[0];\n\treturn reactiveComputed(() => typeof predicate === \"function\" ? Object.fromEntries(Object.entries(toRefs$1(obj)).filter(([k, v]) => !predicate(toValue(v), k))) : Object.fromEntries(Object.entries(toRefs$1(obj)).filter((e) => !flatKeys.includes(e[0]))));\n}\n//#endregion\n//#region reactivePick/index.ts\n/**\n* Reactively pick fields from a reactive object\n*\n* @see https://vueuse.org/reactivePick\n*/\nfunction reactivePick(obj, ...keys) {\n\tconst flatKeys = keys.flat();\n\tconst predicate = flatKeys[0];\n\treturn reactiveComputed(() => typeof predicate === \"function\" ? Object.fromEntries(Object.entries(toRefs$1(obj)).filter(([k, v]) => predicate(toValue(v), k))) : Object.fromEntries(flatKeys.map((k) => [k, toRef(obj, k)])));\n}\n//#endregion\n//#region refAutoReset/index.ts\n/**\n* Create a ref which will be reset to the default value after some time.\n*\n* @see https://vueuse.org/refAutoReset\n* @param defaultValue The value which will be set.\n* @param afterMs A zero-or-greater delay in milliseconds.\n*/\nfunction refAutoReset(defaultValue, afterMs = 1e4) {\n\treturn customRef((track, trigger) => {\n\t\tlet value = toValue(defaultValue);\n\t\tlet timer;\n\t\tconst resetAfter = () => setTimeout(() => {\n\t\t\tvalue = toValue(defaultValue);\n\t\t\ttrigger();\n\t\t}, toValue(afterMs));\n\t\ttryOnScopeDispose(() => {\n\t\t\tclearTimeout(timer);\n\t\t});\n\t\treturn {\n\t\t\tget() {\n\t\t\t\ttrack();\n\t\t\t\treturn value;\n\t\t\t},\n\t\t\tset(newValue) {\n\t\t\t\tvalue = newValue;\n\t\t\t\ttrigger();\n\t\t\t\tclearTimeout(timer);\n\t\t\t\ttimer = resetAfter();\n\t\t\t}\n\t\t};\n\t});\n}\n/** @deprecated use `refAutoReset` instead */\nconst autoResetRef = refAutoReset;\n//#endregion\n//#region useDebounceFn/index.ts\n/**\n* Debounce execution of a function.\n*\n* @see https://vueuse.org/useDebounceFn\n* @param fn A function to be executed after delay milliseconds debounced.\n* @param ms A zero-or-greater delay in milliseconds. For event callbacks, values around 100 or 250 (or even higher) are most useful.\n* @param options Options\n*\n* @return A new, debounce, function.\n*\n* @__NO_SIDE_EFFECTS__\n*/\nfunction useDebounceFn(fn, ms = 200, options = {}) {\n\treturn createFilterWrapper(debounceFilter(ms, options), fn);\n}\n//#endregion\n//#region refDebounced/index.ts\n/**\n* Debounce updates of a ref.\n*\n* @return A new debounced ref.\n*/\nfunction refDebounced(value, ms = 200, options = {}) {\n\tconst debounced = ref(toValue(value));\n\tconst updater = useDebounceFn(() => {\n\t\tdebounced.value = value.value;\n\t}, ms, options);\n\twatch(value, () => updater());\n\treturn shallowReadonly(debounced);\n}\n/** @deprecated use `refDebounced` instead */\nconst debouncedRef = refDebounced;\n/** @deprecated use `refDebounced` instead */\nconst useDebounce = refDebounced;\n//#endregion\n//#region refDefault/index.ts\n/**\n* Apply default value to a ref.\n*\n* @__NO_SIDE_EFFECTS__\n*/\nfunction refDefault(source, defaultValue) {\n\treturn computed({\n\t\tget() {\n\t\t\tvar _source$value;\n\t\t\treturn (_source$value = source.value) !== null && _source$value !== void 0 ? _source$value : defaultValue;\n\t\t},\n\t\tset(value) {\n\t\t\tsource.value = value;\n\t\t}\n\t});\n}\n//#endregion\n//#region refManualReset/index.ts\n/**\n* Create a ref with manual reset functionality.\n*\n* @see https://vueuse.org/refManualReset\n* @param defaultValue The value which will be set.\n*/\nfunction refManualReset(defaultValue) {\n\tlet value = toValue(defaultValue);\n\tlet trigger;\n\tconst reset = () => {\n\t\tvalue = toValue(defaultValue);\n\t\ttrigger();\n\t};\n\tconst refValue = customRef((track, _trigger) => {\n\t\ttrigger = _trigger;\n\t\treturn {\n\t\t\tget() {\n\t\t\t\ttrack();\n\t\t\t\treturn value;\n\t\t\t},\n\t\t\tset(newValue) {\n\t\t\t\tvalue = newValue;\n\t\t\t\ttrigger();\n\t\t\t}\n\t\t};\n\t});\n\trefValue.reset = reset;\n\treturn refValue;\n}\n//#endregion\n//#region useThrottleFn/index.ts\n/**\n* Throttle execution of a function. Especially useful for rate limiting\n* execution of handlers on events like resize and scroll.\n*\n* @param fn A function to be executed after delay milliseconds. The `this` context and all arguments are passed through, as-is,\n* to `callback` when the throttled-function is executed.\n* @param ms A zero-or-greater delay in milliseconds. For event callbacks, values around 100 or 250 (or even higher) are most useful.\n* (default value: 200)\n*\n* @param [trailing] if true, call fn again after the time is up (default value: false)\n*\n* @param [leading] if true, call fn on the leading edge of the ms timeout (default value: true)\n*\n* @param [rejectOnCancel] if true, reject the last call if it's been cancel (default value: false)\n*\n* @return A new, throttled, function.\n*\n* @__NO_SIDE_EFFECTS__\n*/\nfunction useThrottleFn(fn, ms = 200, trailing = false, leading = true, rejectOnCancel = false) {\n\treturn createFilterWrapper(throttleFilter(ms, trailing, leading, rejectOnCancel), fn);\n}\n//#endregion\n//#region refThrottled/index.ts\n/**\n* Throttle execution of a function. Especially useful for rate limiting\n* execution of handlers on events like resize and scroll.\n*\n* @param value Ref value to be watched with throttle effect\n* @param delay A zero-or-greater delay in milliseconds. For event callbacks, values around 100 or 250 (or even higher) are most useful.\n* @param trailing if true, update the value again after the delay time is up\n* @param leading if true, update the value on the leading edge of the ms timeout\n*/\nfunction refThrottled(value, delay = 200, trailing = true, leading = true) {\n\tif (delay <= 0) return value;\n\tconst throttled = ref(toValue(value));\n\tconst updater = useThrottleFn(() => {\n\t\tthrottled.value = value.value;\n\t}, delay, trailing, leading);\n\twatch(value, () => updater());\n\treturn throttled;\n}\n/** @deprecated use `refThrottled` instead */\nconst throttledRef = refThrottled;\n/** @deprecated use `refThrottled` instead */\nconst useThrottle = refThrottled;\n//#endregion\n//#region refWithControl/index.ts\n/**\n* Fine-grained controls over ref and its reactivity.\n*\n* @__NO_SIDE_EFFECTS__\n*/\nfunction refWithControl(initial, options = {}) {\n\tlet source = initial;\n\tlet track;\n\tlet trigger;\n\tconst ref = customRef((_track, _trigger) => {\n\t\ttrack = _track;\n\t\ttrigger = _trigger;\n\t\treturn {\n\t\t\tget() {\n\t\t\t\treturn get();\n\t\t\t},\n\t\t\tset(v) {\n\t\t\t\tset(v);\n\t\t\t}\n\t\t};\n\t});\n\tfunction get(tracking = true) {\n\t\tif (tracking) track();\n\t\treturn source;\n\t}\n\tfunction set(value, triggering = true) {\n\t\tvar _options$onBeforeChan, _options$onChanged;\n\t\tif (value === source) return;\n\t\tconst old = source;\n\t\tif (((_options$onBeforeChan = options.onBeforeChange) === null || _options$onBeforeChan === void 0 ? void 0 : _options$onBeforeChan.call(options, value, old)) === false) return;\n\t\tsource = value;\n\t\t(_options$onChanged = options.onChanged) === null || _options$onChanged === void 0 || _options$onChanged.call(options, value, old);\n\t\tif (triggering) trigger();\n\t}\n\t/**\n\t* Get the value without tracked in the reactivity system\n\t*/\n\tconst untrackedGet = () => get(false);\n\t/**\n\t* Set the value without triggering the reactivity system\n\t*/\n\tconst silentSet = (v) => set(v, false);\n\t/**\n\t* Get the value without tracked in the reactivity system.\n\t*\n\t* Alias for `untrackedGet()`\n\t*/\n\tconst peek = () => get(false);\n\t/**\n\t* Set the value without triggering the reactivity system\n\t*\n\t* Alias for `silentSet(v)`\n\t*/\n\tconst lay = (v) => set(v, false);\n\treturn extendRef(ref, {\n\t\tget,\n\t\tset,\n\t\tuntrackedGet,\n\t\tsilentSet,\n\t\tpeek,\n\t\tlay\n\t}, { enumerable: true });\n}\n/** @deprecated use `refWithControl` instead */\nconst controlledRef = refWithControl;\n//#endregion\n//#region set/index.ts\n/**\n* Shorthand for `ref.value = x`\n*/\nfunction set(...args) {\n\tif (args.length === 2) {\n\t\tconst [ref, value] = args;\n\t\tref.value = value;\n\t}\n\tif (args.length === 3) {\n\t\tconst [target, key, value] = args;\n\t\ttarget[key] = value;\n\t}\n}\n//#endregion\n//#region watchWithFilter/index.ts\nfunction watchWithFilter(source, cb, options = {}) {\n\tconst { eventFilter = bypassFilter, ...watchOptions } = options;\n\treturn watch(source, createFilterWrapper(eventFilter, cb), watchOptions);\n}\n//#endregion\n//#region watchPausable/index.ts\n/** @deprecated Use Vue's built-in `watch` instead. This function will be removed in future version. */\nfunction watchPausable(source, cb, options = {}) {\n\tconst { eventFilter: filter, initialState = \"active\", ...watchOptions } = options;\n\tconst { eventFilter, pause, resume, isActive } = pausableFilter(filter, { initialState });\n\treturn {\n\t\tstop: watchWithFilter(source, cb, {\n\t\t\t...watchOptions,\n\t\t\teventFilter\n\t\t}),\n\t\tpause,\n\t\tresume,\n\t\tisActive\n\t};\n}\n/** @deprecated Use Vue's built-in `watch` instead. This function will be removed in future version. */\nconst pausableWatch = watchPausable;\n//#endregion\n//#region syncRef/index.ts\n/**\n* Two-way refs synchronization.\n* From the set theory perspective to restrict the option's type\n* Check in the following order:\n* 1. L = R\n* 2. L ∩ R ≠ ∅\n* 3. L ⊆ R\n* 4. L ∩ R = ∅\n*/\nfunction syncRef(left, right, ...[options]) {\n\tconst { flush = \"sync\", deep = false, immediate = true, direction = \"both\", transform = {} } = options || {};\n\tconst watchers = [];\n\tconst transformLTR = \"ltr\" in transform && transform.ltr || ((v) => v);\n\tconst transformRTL = \"rtl\" in transform && transform.rtl || ((v) => v);\n\tif (direction === \"both\" || direction === \"ltr\") watchers.push(watchPausable(left, (newValue) => {\n\t\twatchers.forEach((w) => w.pause());\n\t\tright.value = transformLTR(newValue);\n\t\twatchers.forEach((w) => w.resume());\n\t}, {\n\t\tflush,\n\t\tdeep,\n\t\timmediate\n\t}));\n\tif (direction === \"both\" || direction === \"rtl\") watchers.push(watchPausable(right, (newValue) => {\n\t\twatchers.forEach((w) => w.pause());\n\t\tleft.value = transformRTL(newValue);\n\t\twatchers.forEach((w) => w.resume());\n\t}, {\n\t\tflush,\n\t\tdeep,\n\t\timmediate\n\t}));\n\tconst stop = () => {\n\t\twatchers.forEach((w) => w.stop());\n\t};\n\treturn stop;\n}\n//#endregion\n//#region syncRefs/index.ts\n/**\n* Keep target ref(s) in sync with the source ref\n*\n* @param source source ref\n* @param targets\n*/\nfunction syncRefs(source, targets, options = {}) {\n\tconst { flush = \"sync\", deep = false, immediate = true } = options;\n\tconst targetsArray = toArray(targets);\n\treturn watch(source, (newValue) => targetsArray.forEach((target) => target.value = newValue), {\n\t\tflush,\n\t\tdeep,\n\t\timmediate\n\t});\n}\n//#endregion\n//#region toRefs/index.ts\n/**\n* Extended `toRefs` that also accepts refs of an object.\n*\n* @see https://vueuse.org/toRefs\n* @param objectRef A ref or normal object or array.\n* @param options Options\n*/\nfunction toRefs(objectRef, options = {}) {\n\tif (!isRef(objectRef)) return toRefs$1(objectRef);\n\tconst result = Array.isArray(objectRef.value) ? Array.from({ length: objectRef.value.length }) : {};\n\tfor (const key in objectRef.value) result[key] = customRef(() => ({\n\t\tget() {\n\t\t\treturn objectRef.value[key];\n\t\t},\n\t\tset(v) {\n\t\t\tvar _toValue;\n\t\t\tif ((_toValue = toValue(options.replaceRef)) !== null && _toValue !== void 0 ? _toValue : true) if (Array.isArray(objectRef.value)) {\n\t\t\t\tconst copy = [...objectRef.value];\n\t\t\t\tcopy[key] = v;\n\t\t\t\tobjectRef.value = copy;\n\t\t\t} else {\n\t\t\t\tconst newObject = {\n\t\t\t\t\t...objectRef.value,\n\t\t\t\t\t[key]: v\n\t\t\t\t};\n\t\t\t\tObject.setPrototypeOf(newObject, Object.getPrototypeOf(objectRef.value));\n\t\t\t\tobjectRef.value = newObject;\n\t\t\t}\n\t\t\telse objectRef.value[key] = v;\n\t\t}\n\t}));\n\treturn result;\n}\n//#endregion\n//#region tryOnBeforeMount/index.ts\n/**\n* Call onBeforeMount() if it's inside a component lifecycle, if not, just call the function\n*\n* @param fn\n* @param sync if set to false, it will run in the nextTick() of Vue\n* @param target\n*/\nfunction tryOnBeforeMount(fn, sync = true, target) {\n\tif (getLifeCycleTarget(target)) onBeforeMount(fn, target);\n\telse if (sync) fn();\n\telse nextTick(fn);\n}\n//#endregion\n//#region tryOnBeforeUnmount/index.ts\n/**\n* Call onBeforeUnmount() if it's inside a component lifecycle, if not, do nothing\n*\n* @param fn\n* @param target\n*/\nfunction tryOnBeforeUnmount(fn, target) {\n\tif (getLifeCycleTarget(target)) onBeforeUnmount(fn, target);\n}\n//#endregion\n//#region tryOnMounted/index.ts\n/**\n* Call onMounted() if it's inside a component lifecycle, if not, just call the function\n*\n* @param fn\n* @param sync if set to false, it will run in the nextTick() of Vue\n* @param target\n*/\nfunction tryOnMounted(fn, sync = true, target) {\n\tif (getLifeCycleTarget(target)) onMounted(fn, target);\n\telse if (sync) fn();\n\telse nextTick(fn);\n}\n//#endregion\n//#region tryOnUnmounted/index.ts\n/**\n* Call onUnmounted() if it's inside a component lifecycle, if not, do nothing\n*\n* @param fn\n* @param target\n*/\nfunction tryOnUnmounted(fn, target) {\n\tif (getLifeCycleTarget(target)) onUnmounted(fn, target);\n}\n//#endregion\n//#region until/index.ts\nfunction createUntil(r, isNot = false) {\n\tfunction toMatch(condition, { flush = \"sync\", deep = false, timeout, throwOnTimeout } = {}) {\n\t\tlet stop = null;\n\t\tconst promises = [new Promise((resolve) => {\n\t\t\tstop = watch(r, (v) => {\n\t\t\t\tif (condition(v) !== isNot) {\n\t\t\t\t\tif (stop) stop();\n\t\t\t\t\telse nextTick(() => stop === null || stop === void 0 ? void 0 : stop());\n\t\t\t\t\tresolve(v);\n\t\t\t\t}\n\t\t\t}, {\n\t\t\t\tflush,\n\t\t\t\tdeep,\n\t\t\t\timmediate: true\n\t\t\t});\n\t\t})];\n\t\tif (timeout != null) promises.push(promiseTimeout(timeout, throwOnTimeout).then(() => toValue(r)).finally(() => stop === null || stop === void 0 ? void 0 : stop()));\n\t\treturn Promise.race(promises);\n\t}\n\tfunction toBe(value, options) {\n\t\tif (!isRef(value)) return toMatch((v) => v === value, options);\n\t\tconst { flush = \"sync\", deep = false, timeout, throwOnTimeout } = options !== null && options !== void 0 ? options : {};\n\t\tlet stop = null;\n\t\tconst promises = [new Promise((resolve) => {\n\t\t\tstop = watch([r, value], ([v1, v2]) => {\n\t\t\t\tif (isNot !== (v1 === v2)) {\n\t\t\t\t\tif (stop) stop();\n\t\t\t\t\telse nextTick(() => stop === null || stop === void 0 ? void 0 : stop());\n\t\t\t\t\tresolve(v1);\n\t\t\t\t}\n\t\t\t}, {\n\t\t\t\tflush,\n\t\t\t\tdeep,\n\t\t\t\timmediate: true\n\t\t\t});\n\t\t})];\n\t\tif (timeout != null) promises.push(promiseTimeout(timeout, throwOnTimeout).then(() => toValue(r)).finally(() => {\n\t\t\tstop === null || stop === void 0 || stop();\n\t\t\treturn toValue(r);\n\t\t}));\n\t\treturn Promise.race(promises);\n\t}\n\tfunction toBeTruthy(options) {\n\t\treturn toMatch((v) => Boolean(v), options);\n\t}\n\tfunction toBeNull(options) {\n\t\treturn toBe(null, options);\n\t}\n\tfunction toBeUndefined(options) {\n\t\treturn toBe(void 0, options);\n\t}\n\tfunction toBeNaN(options) {\n\t\treturn toMatch(Number.isNaN, options);\n\t}\n\tfunction toContains(value, options) {\n\t\treturn toMatch((v) => {\n\t\t\tconst array = Array.from(v);\n\t\t\treturn array.includes(value) || array.includes(toValue(value));\n\t\t}, options);\n\t}\n\tfunction changed(options) {\n\t\treturn changedTimes(1, options);\n\t}\n\tfunction changedTimes(n = 1, options) {\n\t\tlet count = -1;\n\t\treturn toMatch(() => {\n\t\t\tcount += 1;\n\t\t\treturn count >= n;\n\t\t}, options);\n\t}\n\tif (Array.isArray(toValue(r))) return {\n\t\ttoMatch,\n\t\ttoContains,\n\t\tchanged,\n\t\tchangedTimes,\n\t\tget not() {\n\t\t\treturn createUntil(r, !isNot);\n\t\t}\n\t};\n\telse return {\n\t\ttoMatch,\n\t\ttoBe,\n\t\ttoBeTruthy,\n\t\ttoBeNull,\n\t\ttoBeNaN,\n\t\ttoBeUndefined,\n\t\tchanged,\n\t\tchangedTimes,\n\t\tget not() {\n\t\t\treturn createUntil(r, !isNot);\n\t\t}\n\t};\n}\nfunction until(r) {\n\treturn createUntil(r);\n}\n//#endregion\n//#region useArrayDifference/index.ts\nfunction defaultComparator(value, othVal) {\n\treturn value === othVal;\n}\n/**\n* Reactive get array difference of two array\n* @see https://vueuse.org/useArrayDifference\n* @returns - the difference of two array\n* @param args\n*\n* @__NO_SIDE_EFFECTS__\n*/\nfunction useArrayDifference(...args) {\n\tvar _args$, _args$2;\n\tconst list = args[0];\n\tconst values = args[1];\n\tlet compareFn = (_args$ = args[2]) !== null && _args$ !== void 0 ? _args$ : defaultComparator;\n\tconst { symmetric = false } = (_args$2 = args[3]) !== null && _args$2 !== void 0 ? _args$2 : {};\n\tif (typeof compareFn === \"string\") {\n\t\tconst key = compareFn;\n\t\tcompareFn = (value, othVal) => value[key] === othVal[key];\n\t}\n\tconst diff1 = computed(() => toValue(list).filter((x) => toValue(values).findIndex((y) => compareFn(x, y)) === -1));\n\tif (symmetric) {\n\t\tconst diff2 = computed(() => toValue(values).filter((x) => toValue(list).findIndex((y) => compareFn(x, y)) === -1));\n\t\treturn computed(() => symmetric ? [...toValue(diff1), ...toValue(diff2)] : toValue(diff1));\n\t} else return diff1;\n}\n//#endregion\n//#region useArrayEvery/index.ts\n/**\n* Reactive `Array.every`\n*\n* @see https://vueuse.org/useArrayEvery\n* @param list - the array was called upon.\n* @param fn - a function to test each element.\n*\n* @returns **true** if the `fn` function returns a **truthy** value for every element from the array. Otherwise, **false**.\n*\n* @__NO_SIDE_EFFECTS__\n*/\nfunction useArrayEvery(list, fn) {\n\treturn computed(() => toValue(list).every((element, index, array) => fn(toValue(element), index, array)));\n}\n//#endregion\n//#region useArrayFilter/index.ts\n/**\n* Reactive `Array.filter`\n*\n* @see https://vueuse.org/useArrayFilter\n* @param list - the array was called upon.\n* @param fn - a function that is called for every element of the given `list`. Each time `fn` executes, the returned value is added to the new array.\n*\n* @returns a shallow copy of a portion of the given array, filtered down to just the elements from the given array that pass the test implemented by the provided function. If no elements pass the test, an empty array will be returned.\n*\n* @__NO_SIDE_EFFECTS__\n*/\nfunction useArrayFilter(list, fn) {\n\treturn computed(() => toValue(list).map((i) => toValue(i)).filter(fn));\n}\n//#endregion\n//#region useArrayFind/index.ts\n/**\n* Reactive `Array.find`\n*\n* @see https://vueuse.org/useArrayFind\n* @param list - the array was called upon.\n* @param fn - a function to test each element.\n*\n* @returns the first element in the array that satisfies the provided testing function. Otherwise, undefined is returned.\n*\n* @__NO_SIDE_EFFECTS__\n*/\nfunction useArrayFind(list, fn) {\n\treturn computed(() => toValue(toValue(list).find((element, index, array) => fn(toValue(element), index, array))));\n}\n//#endregion\n//#region useArrayFindIndex/index.ts\n/**\n* Reactive `Array.findIndex`\n*\n* @see https://vueuse.org/useArrayFindIndex\n* @param list - the array was called upon.\n* @param fn - a function to test each element.\n*\n* @returns the index of the first element in the array that passes the test. Otherwise, \"-1\".\n*\n* @__NO_SIDE_EFFECTS__\n*/\nfunction useArrayFindIndex(list, fn) {\n\treturn computed(() => toValue(list).findIndex((element, index, array) => fn(toValue(element), index, array)));\n}\n//#endregion\n//#region useArrayFindLast/index.ts\nfunction findLast(arr, cb) {\n\tlet index = arr.length;\n\twhile (index-- > 0) if (cb(arr[index], index, arr)) return arr[index];\n}\n/**\n* Reactive `Array.findLast`\n*\n* @see https://vueuse.org/useArrayFindLast\n* @param list - the array was called upon.\n* @param fn - a function to test each element.\n*\n* @returns the last element in the array that satisfies the provided testing function. Otherwise, undefined is returned.\n*\n* @__NO_SIDE_EFFECTS__\n*/\nfunction useArrayFindLast(list, fn) {\n\treturn computed(() => toValue(!Array.prototype.findLast ? findLast(toValue(list), (element, index, array) => fn(toValue(element), index, array)) : toValue(list).findLast((element, index, array) => fn(toValue(element), index, array))));\n}\n//#endregion\n//#region useArrayIncludes/index.ts\nfunction isArrayIncludesOptions(obj) {\n\treturn isObject(obj) && containsProp(obj, \"formIndex\", \"comparator\");\n}\n/**\n* Reactive `Array.includes`\n*\n* @see https://vueuse.org/useArrayIncludes\n*\n* @returns true if the `value` is found in the array. Otherwise, false.\n*\n* @__NO_SIDE_EFFECTS__\n*/\nfunction useArrayIncludes(...args) {\n\tvar _comparator;\n\tconst list = args[0];\n\tconst value = args[1];\n\tlet comparator = args[2];\n\tlet formIndex = 0;\n\tif (isArrayIncludesOptions(comparator)) {\n\t\tvar _comparator$fromIndex;\n\t\tformIndex = (_comparator$fromIndex = comparator.fromIndex) !== null && _comparator$fromIndex !== void 0 ? _comparator$fromIndex : 0;\n\t\tcomparator = comparator.comparator;\n\t}\n\tif (typeof comparator === \"string\") {\n\t\tconst key = comparator;\n\t\tcomparator = (element, value) => element[key] === toValue(value);\n\t}\n\tcomparator = (_comparator = comparator) !== null && _comparator !== void 0 ? _comparator : ((element, value) => element === toValue(value));\n\treturn computed(() => toValue(list).slice(formIndex).some((element, index, array) => comparator(toValue(element), toValue(value), index, toValue(array))));\n}\n//#endregion\n//#region useArrayJoin/index.ts\n/**\n* Reactive `Array.join`\n*\n* @see https://vueuse.org/useArrayJoin\n* @param list - the array was called upon.\n* @param separator - a string to separate each pair of adjacent elements of the array. If omitted, the array elements are separated with a comma (\",\").\n*\n* @returns a string with all array elements joined. If arr.length is 0, the empty string is returned.\n*\n* @__NO_SIDE_EFFECTS__\n*/\nfunction useArrayJoin(list, separator) {\n\treturn computed(() => toValue(list).map((i) => toValue(i)).join(toValue(separator)));\n}\n//#endregion\n//#region useArrayMap/index.ts\n/**\n* Reactive `Array.map`\n*\n* @see https://vueuse.org/useArrayMap\n* @param list - the array was called upon.\n* @param fn - a function that is called for every element of the given `list`. Each time `fn` executes, the returned value is added to the new array.\n*\n* @returns a new array with each element being the result of the callback function.\n*\n* @__NO_SIDE_EFFECTS__\n*/\nfunction useArrayMap(list, fn) {\n\treturn computed(() => toValue(list).map((i) => toValue(i)).map(fn));\n}\n//#endregion\n//#region useArrayReduce/index.ts\n/**\n* Reactive `Array.reduce`\n*\n* @see https://vueuse.org/useArrayReduce\n* @param list - the array was called upon.\n* @param reducer - a \"reducer\" function.\n* @param args\n*\n* @returns the value that results from running the \"reducer\" callback function to completion over the entire array.\n*\n* @__NO_SIDE_EFFECTS__\n*/\nfunction useArrayReduce(list, reducer, ...args) {\n\tconst reduceCallback = (sum, value, index) => reducer(toValue(sum), toValue(value), index);\n\treturn computed(() => {\n\t\tconst resolved = toValue(list);\n\t\treturn args.length ? resolved.reduce(reduceCallback, typeof args[0] === \"function\" ? toValue(args[0]()) : toValue(args[0])) : resolved.reduce(reduceCallback);\n\t});\n}\n//#endregion\n//#region useArraySome/index.ts\n/**\n* Reactive `Array.some`\n*\n* @see https://vueuse.org/useArraySome\n* @param list - the array was called upon.\n* @param fn - a function to test each element.\n*\n* @returns **true** if the `fn` function returns a **truthy** value for any element from the array. Otherwise, **false**.\n*\n* @__NO_SIDE_EFFECTS__\n*/\nfunction useArraySome(list, fn) {\n\treturn computed(() => toValue(list).some((element, index, array) => fn(toValue(element), index, array)));\n}\n//#endregion\n//#region useArrayUnique/index.ts\nfunction uniq(array) {\n\treturn Array.from(new Set(array));\n}\nfunction uniqueElementsBy(array, fn) {\n\treturn array.reduce((acc, v) => {\n\t\tif (!acc.some((x) => fn(v, x, array))) acc.push(v);\n\t\treturn acc;\n\t}, []);\n}\n/**\n* reactive unique array\n* @see https://vueuse.org/useArrayUnique\n* @param list - the array was called upon.\n* @param compareFn\n* @returns A computed ref that returns a unique array of items.\n*\n* @__NO_SIDE_EFFECTS__\n*/\nfunction useArrayUnique(list, compareFn) {\n\treturn computed(() => {\n\t\tconst resolvedList = toValue(list).map((element) => toValue(element));\n\t\treturn compareFn ? uniqueElementsBy(resolvedList, compareFn) : uniq(resolvedList);\n\t});\n}\n//#endregion\n//#region useCounter/index.ts\n/**\n* Basic counter with utility functions.\n*\n* @see https://vueuse.org/useCounter\n* @param [initialValue]\n* @param options\n*/\nfunction useCounter(initialValue = 0, options = {}) {\n\tlet _initialValue = unref(initialValue);\n\tconst count = shallowRef(initialValue);\n\tconst { max = Number.POSITIVE_INFINITY, min = Number.NEGATIVE_INFINITY } = options;\n\tconst inc = (delta = 1) => count.value = Math.max(Math.min(max, count.value + delta), min);\n\tconst dec = (delta = 1) => count.value = Math.min(Math.max(min, count.value - delta), max);\n\tconst get = () => count.value;\n\tconst set = (val) => count.value = Math.max(min, Math.min(max, val));\n\tconst reset = (val = _initialValue) => {\n\t\t_initialValue = val;\n\t\treturn set(val);\n\t};\n\treturn {\n\t\tcount: shallowReadonly(count),\n\t\tinc,\n\t\tdec,\n\t\tget,\n\t\tset,\n\t\treset\n\t};\n}\n//#endregion\n//#region useDateFormat/index.ts\nconst REGEX_PARSE = /^(\\d{4})[-/]?(\\d{1,2})?[-/]?(\\d{0,2})[T\\s]*(\\d{1,2})?:?(\\d{1,2})?:?(\\d{1,2})?[.:]?(\\d+)?$/i;\nconst REGEX_FORMAT = /[YMDHhms]o|\\[([^\\]]+)\\]|Y{1,4}|M{1,4}|D{1,2}|d{1,4}|H{1,2}|h{1,2}|a{1,2}|A{1,2}|m{1,2}|s{1,2}|Z{1,2}|z{1,4}|SSS/g;\nfunction defaultMeridiem(hours, minutes, isLowercase, hasPeriod) {\n\tlet m = hours < 12 ? \"AM\" : \"PM\";\n\tif (hasPeriod) m = m.split(\"\").reduce((acc, curr) => acc += `${curr}.`, \"\");\n\treturn isLowercase ? m.toLowerCase() : m;\n}\nfunction formatOrdinal(num) {\n\tconst suffixes = [\n\t\t\"th\",\n\t\t\"st\",\n\t\t\"nd\",\n\t\t\"rd\"\n\t];\n\tconst v = num % 100;\n\treturn num + (suffixes[(v - 20) % 10] || suffixes[v] || suffixes[0]);\n}\nfunction formatDate(date, formatStr, options = {}) {\n\tvar _options$customMeridi;\n\tconst years = date.getFullYear();\n\tconst month = date.getMonth();\n\tconst days = date.getDate();\n\tconst hours = date.getHours();\n\tconst minutes = date.getMinutes();\n\tconst seconds = date.getSeconds();\n\tconst milliseconds = date.getMilliseconds();\n\tconst day = date.getDay();\n\tconst meridiem = (_options$customMeridi = options.customMeridiem) !== null && _options$customMeridi !== void 0 ? _options$customMeridi : defaultMeridiem;\n\tconst stripTimeZone = (dateString) => {\n\t\tvar _dateString$split$;\n\t\treturn (_dateString$split$ = dateString.split(\" \")[1]) !== null && _dateString$split$ !== void 0 ? _dateString$split$ : \"\";\n\t};\n\tconst matches = {\n\t\tYo: () => formatOrdinal(years),\n\t\tYY: () => String(years).slice(-2),\n\t\tYYYY: () => years,\n\t\tM: () => month + 1,\n\t\tMo: () => formatOrdinal(month + 1),\n\t\tMM: () => `${month + 1}`.padStart(2, \"0\"),\n\t\tMMM: () => date.toLocaleDateString(toValue(options.locales), { month: \"short\" }),\n\t\tMMMM: () => date.toLocaleDateString(toValue(options.locales), { month: \"long\" }),\n\t\tD: () => String(days),\n\t\tDo: () => formatOrdinal(days),\n\t\tDD: () => `${days}`.padStart(2, \"0\"),\n\t\tH: () => String(hours),\n\t\tHo: () => formatOrdinal(hours),\n\t\tHH: () => `${hours}`.padStart(2, \"0\"),\n\t\th: () => `${hours % 12 || 12}`.padStart(1, \"0\"),\n\t\tho: () => formatOrdinal(hours % 12 || 12),\n\t\thh: () => `${hours % 12 || 12}`.padStart(2, \"0\"),\n\t\tm: () => String(minutes),\n\t\tmo: () => formatOrdinal(minutes),\n\t\tmm: () => `${minutes}`.padStart(2, \"0\"),\n\t\ts: () => String(seconds),\n\t\tso: () => formatOrdinal(seconds),\n\t\tss: () => `${seconds}`.padStart(2, \"0\"),\n\t\tSSS: () => `${milliseconds}`.padStart(3, \"0\"),\n\t\td: () => day,\n\t\tdd: () => date.toLocaleDateString(toValue(options.locales), { weekday: \"narrow\" }),\n\t\tddd: () => date.toLocaleDateString(toValue(options.locales), { weekday: \"short\" }),\n\t\tdddd: () => date.toLocaleDateString(toValue(options.locales), { weekday: \"long\" }),\n\t\tA: () => meridiem(hours, minutes),\n\t\tAA: () => meridiem(hours, minutes, false, true),\n\t\ta: () => meridiem(hours, minutes, true),\n\t\taa: () => meridiem(hours, minutes, true, true),\n\t\tz: () => stripTimeZone(date.toLocaleDateString(toValue(options.locales), { timeZoneName: \"shortOffset\" })),\n\t\tzz: () => stripTimeZone(date.toLocaleDateString(toValue(options.locales), { timeZoneName: \"shortOffset\" })),\n\t\tzzz: () => stripTimeZone(date.toLocaleDateString(toValue(options.locales), { timeZoneName: \"shortOffset\" })),\n\t\tzzzz: () => stripTimeZone(date.toLocaleDateString(toValue(options.locales), { timeZoneName: \"longOffset\" }))\n\t};\n\treturn formatStr.replace(REGEX_FORMAT, (match, $1) => {\n\t\tvar _ref, _matches$match;\n\t\treturn (_ref = $1 !== null && $1 !== void 0 ? $1 : (_matches$match = matches[match]) === null || _matches$match === void 0 ? void 0 : _matches$match.call(matches)) !== null && _ref !== void 0 ? _ref : match;\n\t});\n}\nfunction normalizeDate(date) {\n\tif (date === null) return /* @__PURE__ */ new Date(NaN);\n\tif (date === void 0) return /* @__PURE__ */ new Date();\n\tif (date instanceof Date) return new Date(date);\n\tif (typeof date === \"string\" && !/Z$/i.test(date)) {\n\t\tconst d = date.match(REGEX_PARSE);\n\t\tif (d) {\n\t\t\tconst m = d[2] - 1 || 0;\n\t\t\tconst ms = (d[7] || \"0\").substring(0, 3);\n\t\t\treturn new Date(d[1], m, d[3] || 1, d[4] || 0, d[5] || 0, d[6] || 0, ms);\n\t\t}\n\t}\n\treturn new Date(date);\n}\n/**\n* Get the formatted date according to the string of tokens passed in.\n*\n* @see https://vueuse.org/useDateFormat\n* @param date - The date to format, can either be a `Date` object, a timestamp, or a string\n* @param formatStr - The combination of tokens to format the date\n* @param options - UseDateFormatOptions\n*\n* @__NO_SIDE_EFFECTS__\n*/\nfunction useDateFormat(date, formatStr = \"HH:mm:ss\", options = {}) {\n\treturn computed(() => formatDate(normalizeDate(toValue(date)), toValue(formatStr), options));\n}\n//#endregion\n//#region useIntervalFn/index.ts\n/**\n* Wrapper for `setInterval` with controls\n*\n* @see https://vueuse.org/useIntervalFn\n* @param cb\n* @param interval\n* @param options\n*/\nfunction useIntervalFn(cb, interval = 1e3, options = {}) {\n\tconst { immediate = true, immediateCallback = false } = options;\n\tlet timer = null;\n\tconst isActive = shallowRef(false);\n\tfunction clean() {\n\t\tif (timer) {\n\t\t\tclearInterval(timer);\n\t\t\ttimer = null;\n\t\t}\n\t}\n\tfunction pause() {\n\t\tisActive.value = false;\n\t\tclean();\n\t}\n\tfunction resume() {\n\t\tconst intervalValue = toValue(interval);\n\t\tif (intervalValue <= 0) return;\n\t\tisActive.value = true;\n\t\tif (immediateCallback) cb();\n\t\tclean();\n\t\tif (isActive.value) timer = setInterval(cb, intervalValue);\n\t}\n\tif (immediate && isClient) resume();\n\tif (isRef(interval) || typeof interval === \"function\") tryOnScopeDispose(watch(interval, () => {\n\t\tif (isActive.value && isClient) resume();\n\t}));\n\ttryOnScopeDispose(pause);\n\treturn {\n\t\tisActive: shallowReadonly(isActive),\n\t\tpause,\n\t\tresume\n\t};\n}\n//#endregion\n//#region useInterval/index.ts\nfunction useInterval(interval = 1e3, options = {}) {\n\tconst { controls: exposeControls = false, immediate = true, callback } = options;\n\tconst counter = shallowRef(0);\n\tconst update = () => counter.value += 1;\n\tconst reset = () => {\n\t\tcounter.value = 0;\n\t};\n\tconst controls = useIntervalFn(callback ? () => {\n\t\tupdate();\n\t\tcallback(counter.value);\n\t} : update, interval, { immediate });\n\tif (exposeControls) return {\n\t\tcounter: shallowReadonly(counter),\n\t\treset,\n\t\t...controls\n\t};\n\telse return shallowReadonly(counter);\n}\n//#endregion\n//#region useLastChanged/index.ts\nfunction useLastChanged(source, options = {}) {\n\tvar _options$initialValue;\n\tconst ms = shallowRef((_options$initialValue = options.initialValue) !== null && _options$initialValue !== void 0 ? _options$initialValue : null);\n\twatch(source, () => ms.value = timestamp(), options);\n\treturn shallowReadonly(ms);\n}\n//#endregion\n//#region useTimeoutFn/index.ts\n/**\n* Wrapper for `setTimeout` with controls.\n*\n* @param cb\n* @param interval\n* @param options\n*/\nfunction useTimeoutFn(cb, interval, options = {}) {\n\tconst { immediate = true, immediateCallback = false } = options;\n\tconst isPending = shallowRef(false);\n\tlet timer;\n\tfunction clear() {\n\t\tif (timer) {\n\t\t\tclearTimeout(timer);\n\t\t\ttimer = void 0;\n\t\t}\n\t}\n\tfunction stop() {\n\t\tisPending.value = false;\n\t\tclear();\n\t}\n\tfunction start(...args) {\n\t\tif (immediateCallback) cb();\n\t\tclear();\n\t\tisPending.value = true;\n\t\ttimer = setTimeout(() => {\n\t\t\tisPending.value = false;\n\t\t\ttimer = void 0;\n\t\t\tcb(...args);\n\t\t}, toValue(interval));\n\t}\n\tif (immediate) {\n\t\tisPending.value = true;\n\t\tif (isClient) start();\n\t}\n\ttryOnScopeDispose(stop);\n\treturn {\n\t\tisPending: shallowReadonly(isPending),\n\t\tstart,\n\t\tstop\n\t};\n}\n//#endregion\n//#region useTimeout/index.ts\nfunction useTimeout(interval = 1e3, options = {}) {\n\tconst { controls: exposeControls = false, callback } = options;\n\tconst controls = useTimeoutFn(callback !== null && callback !== void 0 ? callback : noop, interval, options);\n\tconst ready = computed(() => !controls.isPending.value);\n\tif (exposeControls) return {\n\t\tready,\n\t\t...controls\n\t};\n\telse return ready;\n}\n//#endregion\n//#region useToNumber/index.ts\n/**\n* Reactively convert a string ref to number.\n*\n* @__NO_SIDE_EFFECTS__\n*/\nfunction useToNumber(value, options = {}) {\n\tconst { method = \"parseFloat\", radix, nanToZero } = options;\n\treturn computed(() => {\n\t\tlet resolved = toValue(value);\n\t\tif (typeof method === \"function\") resolved = method(resolved);\n\t\telse if (typeof resolved === \"string\") resolved = Number[method](resolved, radix);\n\t\tif (nanToZero && Number.isNaN(resolved)) resolved = 0;\n\t\treturn resolved;\n\t});\n}\n//#endregion\n//#region useToString/index.ts\n/**\n* Reactively convert a ref to string.\n*\n* @see https://vueuse.org/useToString\n*\n* @__NO_SIDE_EFFECTS__\n*/\nfunction useToString(value) {\n\treturn computed(() => `${toValue(value)}`);\n}\n//#endregion\n//#region useToggle/index.ts\n/**\n* A boolean ref with a toggler\n*\n* @see https://vueuse.org/useToggle\n* @param [initialValue]\n* @param options\n*\n* @__NO_SIDE_EFFECTS__\n*/\nfunction useToggle(initialValue = false, options = {}) {\n\tconst { truthyValue = true, falsyValue = false } = options;\n\tconst valueIsRef = isRef(initialValue);\n\tconst _value = shallowRef(initialValue);\n\tfunction toggle(value) {\n\t\tif (arguments.length) {\n\t\t\t_value.value = value;\n\t\t\treturn _value.value;\n\t\t} else {\n\t\t\tconst truthy = toValue(truthyValue);\n\t\t\t_value.value = _value.value === truthy ? toValue(falsyValue) : truthy;\n\t\t\treturn _value.value;\n\t\t}\n\t}\n\tif (valueIsRef) return toggle;\n\telse return [_value, toggle];\n}\n//#endregion\n//#region watchArray/index.ts\n/**\n* Watch for an array with additions and removals.\n*\n* @see https://vueuse.org/watchArray\n*/\nfunction watchArray(source, cb, options) {\n\tlet oldList = (options === null || options === void 0 ? void 0 : options.immediate) ? [] : [...typeof source === \"function\" ? source() : Array.isArray(source) ? source : toValue(source)];\n\treturn watch(source, (newList, _, onCleanup) => {\n\t\tconst oldListRemains = Array.from({ length: oldList.length });\n\t\tconst added = [];\n\t\tfor (const obj of newList) {\n\t\t\tlet found = false;\n\t\t\tfor (let i = 0; i < oldList.length; i++) if (!oldListRemains[i] && obj === oldList[i]) {\n\t\t\t\toldListRemains[i] = true;\n\t\t\t\tfound = true;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tif (!found) added.push(obj);\n\t\t}\n\t\tconst removed = oldList.filter((_, i) => !oldListRemains[i]);\n\t\tcb(newList, oldList, added, removed, onCleanup);\n\t\toldList = [...newList];\n\t}, options);\n}\n//#endregion\n//#region watchAtMost/index.ts\nfunction watchAtMost(source, cb, options) {\n\tconst { count, ...watchOptions } = options;\n\tconst current = shallowRef(0);\n\tconst { stop, resume, pause } = watchWithFilter(source, (...args) => {\n\t\tcurrent.value += 1;\n\t\tif (current.value >= toValue(count)) nextTick(() => stop());\n\t\tcb(...args);\n\t}, watchOptions);\n\treturn {\n\t\tcount: current,\n\t\tstop,\n\t\tresume,\n\t\tpause\n\t};\n}\n//#endregion\n//#region watchDebounced/index.ts\nfunction watchDebounced(source, cb, options = {}) {\n\tconst { debounce = 0, maxWait = void 0, ...watchOptions } = options;\n\treturn watchWithFilter(source, cb, {\n\t\t...watchOptions,\n\t\teventFilter: debounceFilter(debounce, { maxWait })\n\t});\n}\n/** @deprecated use `watchDebounced` instead */\nconst debouncedWatch = watchDebounced;\n//#endregion\n//#region watchDeep/index.ts\n/**\n* Shorthand for watching value with {deep: true}\n*\n* @see https://vueuse.org/watchDeep\n*/\nfunction watchDeep(source, cb, options) {\n\treturn watch(source, cb, {\n\t\t...options,\n\t\tdeep: true\n\t});\n}\n//#endregion\n//#region watchIgnorable/index.ts\nfunction watchIgnorable(source, cb, options = {}) {\n\tconst { eventFilter = bypassFilter, ...watchOptions } = options;\n\tconst filteredCb = createFilterWrapper(eventFilter, cb);\n\tlet ignoreUpdates;\n\tlet ignorePrevAsyncUpdates;\n\tlet stop;\n\tif (watchOptions.flush === \"sync\") {\n\t\tlet ignore = false;\n\t\tignorePrevAsyncUpdates = () => {};\n\t\tignoreUpdates = (updater) => {\n\t\t\tignore = true;\n\t\t\tupdater();\n\t\t\tignore = false;\n\t\t};\n\t\tstop = watch(source, (...args) => {\n\t\t\tif (!ignore) filteredCb(...args);\n\t\t}, watchOptions);\n\t} else {\n\t\tconst disposables = [];\n\t\tlet ignoreCounter = 0;\n\t\tlet syncCounter = 0;\n\t\tignorePrevAsyncUpdates = () => {\n\t\t\tignoreCounter = syncCounter;\n\t\t};\n\t\tdisposables.push(watch(source, () => {\n\t\t\tsyncCounter++;\n\t\t}, {\n\t\t\t...watchOptions,\n\t\t\tflush: \"sync\"\n\t\t}));\n\t\tignoreUpdates = (updater) => {\n\t\t\tconst syncCounterPrev = syncCounter;\n\t\t\tupdater();\n\t\t\tignoreCounter += syncCounter - syncCounterPrev;\n\t\t};\n\t\tdisposables.push(watch(source, (...args) => {\n\t\t\tconst ignore = ignoreCounter > 0 && ignoreCounter === syncCounter;\n\t\t\tignoreCounter = 0;\n\t\t\tsyncCounter = 0;\n\t\t\tif (ignore) return;\n\t\t\tfilteredCb(...args);\n\t\t}, watchOptions));\n\t\tstop = () => {\n\t\t\tdisposables.forEach((fn) => fn());\n\t\t};\n\t}\n\treturn {\n\t\tstop,\n\t\tignoreUpdates,\n\t\tignorePrevAsyncUpdates\n\t};\n}\n/** @deprecated use `watchIgnorable` instead */\nconst ignorableWatch = watchIgnorable;\n//#endregion\n//#region watchImmediate/index.ts\n/**\n* Shorthand for watching value with {immediate: true}\n*\n* @see https://vueuse.org/watchImmediate\n*/\nfunction watchImmediate(source, cb, options) {\n\treturn watch(source, cb, {\n\t\t...options,\n\t\timmediate: true\n\t});\n}\n//#endregion\n//#region watchOnce/index.ts\n/**\n* Shorthand for watching value with { once: true }\n*\n* @see https://vueuse.org/watchOnce\n*/\nfunction watchOnce(source, cb, options) {\n\treturn watch(source, cb, {\n\t\t...options,\n\t\tonce: true\n\t});\n}\n//#endregion\n//#region watchThrottled/index.ts\nfunction watchThrottled(source, cb, options = {}) {\n\tconst { throttle = 0, trailing = true, leading = true, ...watchOptions } = options;\n\treturn watchWithFilter(source, cb, {\n\t\t...watchOptions,\n\t\teventFilter: throttleFilter(throttle, trailing, leading)\n\t});\n}\n/** @deprecated use `watchThrottled` instead */\nconst throttledWatch = watchThrottled;\n//#endregion\n//#region watchTriggerable/index.ts\nfunction watchTriggerable(source, cb, options = {}) {\n\tlet cleanupFn;\n\tfunction onEffect() {\n\t\tif (!cleanupFn) return;\n\t\tconst fn = cleanupFn;\n\t\tcleanupFn = void 0;\n\t\tfn();\n\t}\n\t/** Register the function `cleanupFn` */\n\tfunction onCleanup(callback) {\n\t\tcleanupFn = callback;\n\t}\n\tconst _cb = (value, oldValue) => {\n\t\tonEffect();\n\t\treturn cb(value, oldValue, onCleanup);\n\t};\n\tconst res = watchIgnorable(source, _cb, options);\n\tconst { ignoreUpdates } = res;\n\tconst trigger = () => {\n\t\tlet res;\n\t\tignoreUpdates(() => {\n\t\t\tres = _cb(getWatchSources(source), getOldValue(source));\n\t\t});\n\t\treturn res;\n\t};\n\treturn {\n\t\t...res,\n\t\ttrigger\n\t};\n}\nfunction getWatchSources(sources) {\n\tif (isReactive(sources)) return sources;\n\tif (Array.isArray(sources)) return sources.map((item) => toValue(item));\n\treturn toValue(sources);\n}\nfunction getOldValue(source) {\n\treturn Array.isArray(source) ? source.map(() => void 0) : void 0;\n}\n//#endregion\n//#region whenever/index.ts\nfunction whenever(source, cb, options) {\n\tconst stop = watch(source, (v, ov, onInvalidate) => {\n\t\tif (v) {\n\t\t\tif (options === null || options === void 0 ? void 0 : options.once) nextTick(() => stop());\n\t\t\tcb(v, ov, onInvalidate);\n\t\t}\n\t}, {\n\t\t...options,\n\t\tonce: false\n\t});\n\treturn stop;\n}\n//#endregion\nexport { assert, autoResetRef, bypassFilter, camelize, clamp, computedEager, computedWithControl, containsProp, controlledComputed, controlledRef, createDisposableDirective, createEventHook, createFilterWrapper, createGlobalState, createInjectionState, createReactiveFn, createRef, createSharedComposable, createSingletonPromise, debounceFilter, debouncedRef, debouncedWatch, eagerComputed, extendRef, formatDate, get, getLifeCycleTarget, hasOwn, hyphenate, identity, ignorableWatch, increaseWithUnit, injectLocal, invoke, isClient, isDef, isDefined, isIOS, isObject, isWorker, makeDestructurable, noop, normalizeDate, notNullish, now, objectEntries, objectOmit, objectPick, pausableFilter, pausableWatch, promiseTimeout, provideLocal, pxValue, rand, reactify, reactifyObject, reactiveComputed, reactiveOmit, reactivePick, refAutoReset, refDebounced, refDefault, refManualReset, refThrottled, refWithControl, set, syncRef, syncRefs, throttleFilter, throttledRef, throttledWatch, timestamp, toArray, toReactive, toRef, toRefs, tryOnBeforeMount, tryOnBeforeUnmount, tryOnMounted, tryOnScopeDispose, tryOnUnmounted, until, useArrayDifference, useArrayEvery, useArrayFilter, useArrayFind, useArrayFindIndex, useArrayFindLast, useArrayIncludes, useArrayJoin, useArrayMap, useArrayReduce, useArraySome, useArrayUnique, useCounter, useDateFormat, useDebounce, useDebounceFn, useInterval, useIntervalFn, useLastChanged, useThrottle, useThrottleFn, useTimeout, useTimeoutFn, useToNumber, useToString, useToggle, watchArray, watchAtMost, watchDebounced, watchDeep, watchIgnorable, watchImmediate, watchOnce, watchPausable, watchThrottled, watchTriggerable, watchWithFilter, whenever };\n","import { bypassFilter, camelize, clamp, computedWithControl, containsProp, createEventHook, createFilterWrapper, createRef, createSingletonPromise, debounceFilter, hasOwn, identity, increaseWithUnit, injectLocal, isClient, isDef, isIOS, isObject, isWorker, makeDestructurable, noop, notNullish, objectEntries, objectOmit, objectPick, pausableFilter, promiseTimeout, provideLocal, pxValue, syncRef, throttleFilter, timestamp, toArray, toRef, toRefs, tryOnMounted, tryOnScopeDispose, tryOnUnmounted, until, useDebounceFn, useIntervalFn, useThrottleFn, useTimeoutFn, watchIgnorable, watchImmediate, watchOnce, watchPausable, watchWithFilter, whenever } from \"@vueuse/shared\";\nimport { Fragment, TransitionGroup, computed, customRef, defineComponent, getCurrentInstance, getCurrentScope, h, hasInjectionContext, inject, isReadonly, isRef, markRaw, nextTick, onBeforeUpdate, onMounted, onUpdated, reactive, readonly, ref, shallowReactive, shallowReadonly, shallowRef, toRaw, toValue, unref, watch, watchEffect } from \"vue\";\nexport * from \"@vueuse/shared\";\n//#region computedAsync/index.ts\nfunction computedAsync(evaluationCallback, initialState, optionsOrRef) {\n\tvar _globalThis$reportErr;\n\tlet options;\n\tif (isRef(optionsOrRef)) options = { evaluating: optionsOrRef };\n\telse options = optionsOrRef || {};\n\tconst { lazy = false, flush = \"sync\", evaluating = void 0, shallow = true, onError = (_globalThis$reportErr = globalThis.reportError) !== null && _globalThis$reportErr !== void 0 ? _globalThis$reportErr : noop } = options;\n\tconst started = shallowRef(!lazy);\n\tconst current = shallow ? shallowRef(initialState) : ref(initialState);\n\tlet counter = 0;\n\twatchEffect(async (onInvalidate) => {\n\t\tif (!started.value) return;\n\t\tcounter++;\n\t\tconst counterAtBeginning = counter;\n\t\tlet hasFinished = false;\n\t\tif (evaluating) Promise.resolve().then(() => {\n\t\t\tevaluating.value = true;\n\t\t});\n\t\ttry {\n\t\t\tconst result = await evaluationCallback((cancelCallback) => {\n\t\t\t\tonInvalidate(() => {\n\t\t\t\t\tif (evaluating) evaluating.value = false;\n\t\t\t\t\tif (!hasFinished) cancelCallback();\n\t\t\t\t});\n\t\t\t});\n\t\t\tif (counterAtBeginning === counter) current.value = result;\n\t\t} catch (e) {\n\t\t\tonError(e);\n\t\t} finally {\n\t\t\tif (evaluating && counterAtBeginning === counter) evaluating.value = false;\n\t\t\thasFinished = true;\n\t\t}\n\t}, { flush });\n\tif (lazy) return computed(() => {\n\t\tstarted.value = true;\n\t\treturn current.value;\n\t});\n\telse return current;\n}\n/** @deprecated use `computedAsync` instead */\nconst asyncComputed = computedAsync;\n//#endregion\n//#region computedInject/index.ts\nfunction computedInject(key, options, defaultSource, treatDefaultAsFactory) {\n\tlet source = inject(key);\n\tif (defaultSource) source = inject(key, defaultSource);\n\tif (treatDefaultAsFactory) source = inject(key, defaultSource, treatDefaultAsFactory);\n\tif (typeof options === \"function\") return computed((oldValue) => options(source, oldValue));\n\telse return computed({\n\t\tget: (oldValue) => options.get(source, oldValue),\n\t\tset: options.set\n\t});\n}\n//#endregion\n//#region createReusableTemplate/index.ts\n/**\n* This function creates `define` and `reuse` components in pair,\n* It also allow to pass a generic to bind with type.\n*\n* @see https://vueuse.org/createReusableTemplate\n*\n* @__NO_SIDE_EFFECTS__\n*/\nfunction createReusableTemplate(options = {}) {\n\tconst { inheritAttrs = true, name = \"ReusableTemplate\" } = options;\n\tconst render = shallowRef();\n\tconst define = defineComponent({\n\t\tname: `${name}.define`,\n\t\tsetup(_, { slots }) {\n\t\t\treturn () => {\n\t\t\t\trender.value = slots.default;\n\t\t\t};\n\t\t}\n\t});\n\tconst reuse = defineComponent({\n\t\tinheritAttrs,\n\t\tname: `${name}.reuse`,\n\t\tprops: options.props,\n\t\tsetup(props, { attrs, slots }) {\n\t\t\treturn () => {\n\t\t\t\tvar _render$value;\n\t\t\t\tif (!render.value && true) throw new Error(\"[VueUse] Failed to find the definition of reusable template\");\n\t\t\t\tconst vnode = (_render$value = render.value) === null || _render$value === void 0 ? void 0 : _render$value.call(render, {\n\t\t\t\t\t...options.props == null ? keysToCamelKebabCase(attrs) : props,\n\t\t\t\t\t$slots: slots\n\t\t\t\t});\n\t\t\t\treturn inheritAttrs && (vnode === null || vnode === void 0 ? void 0 : vnode.length) === 1 ? vnode[0] : vnode;\n\t\t\t};\n\t\t}\n\t});\n\treturn makeDestructurable({\n\t\tdefine,\n\t\treuse\n\t}, [define, reuse]);\n}\nfunction keysToCamelKebabCase(obj) {\n\tconst newObj = {};\n\tfor (const key in obj) newObj[camelize(key)] = obj[key];\n\treturn newObj;\n}\n//#endregion\n//#region createTemplatePromise/index.ts\n/**\n* Creates a template promise component.\n*\n* @see https://vueuse.org/createTemplatePromise\n*\n* @__NO_SIDE_EFFECTS__\n*/\nfunction createTemplatePromise(options = {}) {\n\tlet index = 0;\n\tconst instances = ref([]);\n\tfunction create(...args) {\n\t\tconst props = shallowReactive({\n\t\t\tkey: index++,\n\t\t\targs,\n\t\t\tpromise: void 0,\n\t\t\tresolve: () => {},\n\t\t\treject: () => {},\n\t\t\tisResolving: false,\n\t\t\toptions\n\t\t});\n\t\tinstances.value.push(props);\n\t\tprops.promise = new Promise((_resolve, _reject) => {\n\t\t\tprops.resolve = (v) => {\n\t\t\t\tprops.isResolving = true;\n\t\t\t\treturn _resolve(v);\n\t\t\t};\n\t\t\tprops.reject = _reject;\n\t\t}).finally(() => {\n\t\t\tprops.promise = void 0;\n\t\t\tconst index = instances.value.indexOf(props);\n\t\t\tif (index !== -1) instances.value.splice(index, 1);\n\t\t});\n\t\treturn props.promise;\n\t}\n\tfunction start(...args) {\n\t\tif (options.singleton && instances.value.length > 0) return instances.value[0].promise;\n\t\treturn create(...args);\n\t}\n\tconst component = defineComponent((_, { slots }) => {\n\t\tconst renderList = () => instances.value.map((props) => {\n\t\t\tvar _slots$default;\n\t\t\treturn h(Fragment, { key: props.key }, (_slots$default = slots.default) === null || _slots$default === void 0 ? void 0 : _slots$default.call(slots, props));\n\t\t});\n\t\tif (options.transition) return () => h(TransitionGroup, options.transition, renderList);\n\t\treturn renderList;\n\t});\n\tcomponent.start = start;\n\treturn component;\n}\n//#endregion\n//#region createUnrefFn/index.ts\n/**\n* Make a plain function accepting ref and raw values as arguments.\n* Returns the same value the unconverted function returns, with proper typing.\n*\n* @__NO_SIDE_EFFECTS__\n*/\nfunction createUnrefFn(fn) {\n\treturn function(...args) {\n\t\treturn fn.apply(this, args.map((i) => toValue(i)));\n\t};\n}\n//#endregion\n//#region _configurable.ts\nconst defaultWindow = isClient ? window : void 0;\nconst defaultDocument = isClient ? window.document : void 0;\nconst defaultNavigator = isClient ? window.navigator : void 0;\nconst defaultLocation = isClient ? window.location : void 0;\n//#endregion\n//#region unrefElement/index.ts\n/**\n* Get the dom element of a ref of element or Vue component instance\n*\n* @param elRef\n*/\nfunction unrefElement(elRef) {\n\tvar _$el;\n\tconst plain = toValue(elRef);\n\treturn (_$el = plain === null || plain === void 0 ? void 0 : plain.$el) !== null && _$el !== void 0 ? _$el : plain;\n}\n//#endregion\n//#region useEventListener/index.ts\nfunction useEventListener(...args) {\n\tconst register = (el, event, listener, options) => {\n\t\tel.addEventListener(event, listener, options);\n\t\treturn () => el.removeEventListener(event, listener, options);\n\t};\n\tconst firstParamTargets = computed(() => {\n\t\tconst test = toArray(toValue(args[0])).filter((e) => e != null);\n\t\treturn test.every((e) => typeof e !== \"string\") ? test : void 0;\n\t});\n\treturn watchImmediate(() => {\n\t\tvar _firstParamTargets$va, _firstParamTargets$va2;\n\t\treturn [\n\t\t\t(_firstParamTargets$va = (_firstParamTargets$va2 = firstParamTargets.value) === null || _firstParamTargets$va2 === void 0 ? void 0 : _firstParamTargets$va2.map((e) => unrefElement(e))) !== null && _firstParamTargets$va !== void 0 ? _firstParamTargets$va : [defaultWindow].filter((e) => e != null),\n\t\t\ttoArray(toValue(firstParamTargets.value ? args[1] : args[0])),\n\t\t\ttoArray(unref(firstParamTargets.value ? args[2] : args[1])),\n\t\t\ttoValue(firstParamTargets.value ? args[3] : args[2])\n\t\t];\n\t}, ([raw_targets, raw_events, raw_listeners, raw_options], _, onCleanup) => {\n\t\tif (!(raw_targets === null || raw_targets === void 0 ? void 0 : raw_targets.length) || !(raw_events === null || raw_events === void 0 ? void 0 : raw_events.length) || !(raw_listeners === null || raw_listeners === void 0 ? void 0 : raw_listeners.length)) return;\n\t\tconst optionsClone = isObject(raw_options) ? { ...raw_options } : raw_options;\n\t\tconst cleanups = raw_targets.flatMap((el) => raw_events.flatMap((event) => raw_listeners.map((listener) => register(el, event, listener, optionsClone))));\n\t\tonCleanup(() => {\n\t\t\tcleanups.forEach((fn) => fn());\n\t\t});\n\t}, { flush: \"post\" });\n}\n//#endregion\n//#region onClickOutside/index.ts\nlet _iOSWorkaround = false;\nfunction onClickOutside(target, handler, options = {}) {\n\tconst { window = defaultWindow, ignore = [], capture = true, detectIframe = false, controls = false } = options;\n\tif (!window) return controls ? {\n\t\tstop: noop,\n\t\tcancel: noop,\n\t\ttrigger: noop\n\t} : noop;\n\tif (isIOS && !_iOSWorkaround) {\n\t\t_iOSWorkaround = true;\n\t\tconst listenerOptions = { passive: true };\n\t\tArray.from(window.document.body.children).forEach((el) => el.addEventListener(\"click\", noop, listenerOptions));\n\t\twindow.document.documentElement.addEventListener(\"click\", noop, listenerOptions);\n\t}\n\tlet shouldListen = true;\n\tconst shouldIgnore = (event) => {\n\t\treturn toValue(ignore).some((target) => {\n\t\t\tif (typeof target === \"string\") return Array.from(window.document.querySelectorAll(target)).some((el) => el === event.target || event.composedPath().includes(el));\n\t\t\telse {\n\t\t\t\tconst el = unrefElement(target);\n\t\t\t\treturn el && (event.target === el || event.composedPath().includes(el));\n\t\t\t}\n\t\t});\n\t};\n\t/**\n\t* Determines if the given target has multiple root elements.\n\t* Referenced from: https://github.com/vuejs/test-utils/blob/ccb460be55f9f6be05ab708500a41ec8adf6f4bc/src/vue-wrapper.ts#L21\n\t*/\n\tfunction hasMultipleRoots(target) {\n\t\tconst vm = toValue(target);\n\t\treturn vm && vm.$.subTree.shapeFlag === 16;\n\t}\n\tfunction checkMultipleRoots(target, event) {\n\t\tconst vm = toValue(target);\n\t\tconst children = vm.$.subTree && vm.$.subTree.children;\n\t\tif (children == null || !Array.isArray(children)) return false;\n\t\treturn children.some((child) => child.el === event.target || event.composedPath().includes(child.el));\n\t}\n\tconst listener = (event) => {\n\t\tconst el = unrefElement(target);\n\t\tif (event.target == null) return;\n\t\tif (!(el instanceof Element) && hasMultipleRoots(target) && checkMultipleRoots(target, event)) return;\n\t\tif (!el || el === event.target || event.composedPath().includes(el)) return;\n\t\tif (\"detail\" in event && event.detail === 0) shouldListen = !shouldIgnore(event);\n\t\tif (!shouldListen) {\n\t\t\tshouldListen = true;\n\t\t\treturn;\n\t\t}\n\t\thandler(event);\n\t};\n\tlet isProcessingClick = false;\n\tconst cleanup = [\n\t\tuseEventListener(window, \"click\", (event) => {\n\t\t\tif (!isProcessingClick) {\n\t\t\t\tisProcessingClick = true;\n\t\t\t\tsetTimeout(() => {\n\t\t\t\t\tisProcessingClick = false;\n\t\t\t\t}, 0);\n\t\t\t\tlistener(event);\n\t\t\t}\n\t\t}, {\n\t\t\tpassive: true,\n\t\t\tcapture\n\t\t}),\n\t\tuseEventListener(window, \"pointerdown\", (e) => {\n\t\t\tconst el = unrefElement(target);\n\t\t\tshouldListen = !shouldIgnore(e) && !!(el && !e.composedPath().includes(el));\n\t\t}, { passive: true }),\n\t\tdetectIframe && useEventListener(window, \"blur\", (event) => {\n\t\t\tsetTimeout(() => {\n\t\t\t\tconst el = unrefElement(target);\n\t\t\t\tlet activeEl = window.document.activeElement;\n\t\t\t\twhile (activeEl === null || activeEl === void 0 ? void 0 : activeEl.shadowRoot) activeEl = activeEl.shadowRoot.activeElement;\n\t\t\t\tif ((activeEl === null || activeEl === void 0 ? void 0 : activeEl.tagName) === \"IFRAME\" && !(el === null || el === void 0 ? void 0 : el.contains(window.document.activeElement))) handler(event);\n\t\t\t}, 0);\n\t\t}, { passive: true })\n\t].filter(Boolean);\n\tconst stop = () => cleanup.forEach((fn) => fn());\n\tif (controls) return {\n\t\tstop,\n\t\tcancel: () => {\n\t\t\tshouldListen = false;\n\t\t},\n\t\ttrigger: (event) => {\n\t\t\tshouldListen = true;\n\t\t\tlistener(event);\n\t\t\tshouldListen = false;\n\t\t}\n\t};\n\treturn stop;\n}\n//#endregion\n//#region useMounted/index.ts\n/**\n* Mounted state in ref.\n*\n* @see https://vueuse.org/useMounted\n*\n* @__NO_SIDE_EFFECTS__\n*/\nfunction useMounted() {\n\tconst isMounted = shallowRef(false);\n\tconst instance = getCurrentInstance();\n\tif (instance) onMounted(() => {\n\t\tisMounted.value = true;\n\t}, instance);\n\treturn isMounted;\n}\n//#endregion\n//#region useSupported/index.ts\n/* @__NO_SIDE_EFFECTS__ */\nfunction useSupported(callback) {\n\tconst isMounted = useMounted();\n\treturn computed(() => {\n\t\tisMounted.value;\n\t\treturn Boolean(callback());\n\t});\n}\n//#endregion\n//#region useMutationObserver/index.ts\n/**\n* Watch for changes being made to the DOM tree.\n*\n* @see https://vueuse.org/useMutationObserver\n* @see https://developer.mozilla.org/en-US/docs/Web/API/MutationObserver MutationObserver MDN\n* @param target\n* @param callback\n* @param options\n*/\nfunction useMutationObserver(target, callback, options = {}) {\n\tconst { window = defaultWindow, ...mutationOptions } = options;\n\tlet observer;\n\tconst isSupported = /* @__PURE__ */ useSupported(() => window && \"MutationObserver\" in window);\n\tconst cleanup = () => {\n\t\tif (observer) {\n\t\t\tobserver.disconnect();\n\t\t\tobserver = void 0;\n\t\t}\n\t};\n\tconst stopWatch = watch(computed(() => {\n\t\tconst items = toArray(toValue(target)).map(unrefElement).filter(notNullish);\n\t\treturn new Set(items);\n\t}), (newTargets) => {\n\t\tcleanup();\n\t\tif (isSupported.value && newTargets.size) {\n\t\t\tobserver = new MutationObserver(callback);\n\t\t\tnewTargets.forEach((el) => observer.observe(el, mutationOptions));\n\t\t}\n\t}, {\n\t\timmediate: true,\n\t\tflush: \"post\"\n\t});\n\tconst takeRecords = () => {\n\t\treturn observer === null || observer === void 0 ? void 0 : observer.takeRecords();\n\t};\n\tconst stop = () => {\n\t\tstopWatch();\n\t\tcleanup();\n\t};\n\ttryOnScopeDispose(stop);\n\treturn {\n\t\tisSupported,\n\t\tstop,\n\t\ttakeRecords\n\t};\n}\n//#endregion\n//#region onElementRemoval/index.ts\n/**\n* Fires when the element or any element containing it is removed.\n*\n* @param target\n* @param callback\n* @param options\n*/\nfunction onElementRemoval(target, callback, options = {}) {\n\tconst { window = defaultWindow, document = window === null || window === void 0 ? void 0 : window.document, flush = \"sync\" } = options;\n\tif (!window || !document) return noop;\n\tlet stopFn;\n\tconst cleanupAndUpdate = (fn) => {\n\t\tstopFn === null || stopFn === void 0 || stopFn();\n\t\tstopFn = fn;\n\t};\n\tconst stopWatch = watchEffect(() => {\n\t\tconst el = unrefElement(target);\n\t\tif (el) {\n\t\t\tconst { stop } = useMutationObserver(document, (mutationsList) => {\n\t\t\t\tif (mutationsList.map((mutation) => [...mutation.removedNodes]).flat().some((node) => node === el || node.contains(el))) callback(mutationsList);\n\t\t\t}, {\n\t\t\t\twindow,\n\t\t\t\tchildList: true,\n\t\t\t\tsubtree: true\n\t\t\t});\n\t\t\tcleanupAndUpdate(stop);\n\t\t}\n\t}, { flush });\n\tconst stopHandle = () => {\n\t\tstopWatch();\n\t\tcleanupAndUpdate();\n\t};\n\ttryOnScopeDispose(stopHandle);\n\treturn stopHandle;\n}\n//#endregion\n//#region onKeyStroke/index.ts\nfunction createKeyPredicate(keyFilter) {\n\tif (typeof keyFilter === \"function\") return keyFilter;\n\telse if (typeof keyFilter === \"string\") return (event) => event.key === keyFilter;\n\telse if (Array.isArray(keyFilter)) return (event) => keyFilter.includes(event.key);\n\treturn () => true;\n}\nfunction onKeyStroke(...args) {\n\tlet key;\n\tlet handler;\n\tlet options = {};\n\tif (args.length === 3) {\n\t\tkey = args[0];\n\t\thandler = args[1];\n\t\toptions = args[2];\n\t} else if (args.length === 2) if (typeof args[1] === \"object\") {\n\t\tkey = true;\n\t\thandler = args[0];\n\t\toptions = args[1];\n\t} else {\n\t\tkey = args[0];\n\t\thandler = args[1];\n\t}\n\telse {\n\t\tkey = true;\n\t\thandler = args[0];\n\t}\n\tconst { target = defaultWindow, eventName = \"keydown\", passive = false, dedupe = false } = options;\n\tconst predicate = createKeyPredicate(key);\n\tconst listener = (e) => {\n\t\tif (e.repeat && toValue(dedupe)) return;\n\t\tif (predicate(e)) handler(e);\n\t};\n\treturn useEventListener(target, eventName, listener, passive);\n}\n/**\n* Listen to the keydown event of the given key.\n*\n* @see https://vueuse.org/onKeyStroke\n* @param key\n* @param handler\n* @param options\n*/\nfunction onKeyDown(key, handler, options = {}) {\n\treturn onKeyStroke(key, handler, {\n\t\t...options,\n\t\teventName: \"keydown\"\n\t});\n}\n/**\n* Listen to the keypress event of the given key.\n*\n* @see https://vueuse.org/onKeyStroke\n* @param key\n* @param handler\n* @param options\n*/\nfunction onKeyPressed(key, handler, options = {}) {\n\treturn onKeyStroke(key, handler, {\n\t\t...options,\n\t\teventName: \"keypress\"\n\t});\n}\n/**\n* Listen to the keyup event of the given key.\n*\n* @see https://vueuse.org/onKeyStroke\n* @param key\n* @param handler\n* @param options\n*/\nfunction onKeyUp(key, handler, options = {}) {\n\treturn onKeyStroke(key, handler, {\n\t\t...options,\n\t\teventName: \"keyup\"\n\t});\n}\n//#endregion\n//#region onLongPress/index.ts\nconst DEFAULT_DELAY = 500;\nconst DEFAULT_THRESHOLD = 10;\nfunction onLongPress(target, handler, options) {\n\tvar _options$modifiers10, _options$modifiers11;\n\tconst elementRef = computed(() => unrefElement(target));\n\tlet timeout;\n\tlet posStart;\n\tlet startTimestamp;\n\tlet hasLongPressed = false;\n\tfunction clear() {\n\t\tif (timeout) {\n\t\t\tclearTimeout(timeout);\n\t\t\ttimeout = void 0;\n\t\t}\n\t\tposStart = void 0;\n\t\tstartTimestamp = void 0;\n\t\thasLongPressed = false;\n\t}\n\tfunction getDelay(ev) {\n\t\tconst delay = options === null || options === void 0 ? void 0 : options.delay;\n\t\tif (typeof delay === \"function\") return delay(ev);\n\t\treturn delay !== null && delay !== void 0 ? delay : DEFAULT_DELAY;\n\t}\n\tfunction onRelease(ev) {\n\t\tvar _options$modifiers, _options$modifiers2, _options$modifiers3;\n\t\tconst [_startTimestamp, _posStart, _hasLongPressed] = [\n\t\t\tstartTimestamp,\n\t\t\tposStart,\n\t\t\thasLongPressed\n\t\t];\n\t\tclear();\n\t\tif (!(options === null || options === void 0 ? void 0 : options.onMouseUp) || !_posStart || !_startTimestamp) return;\n\t\tif ((options === null || options === void 0 || (_options$modifiers = options.modifiers) === null || _options$modifiers === void 0 ? void 0 : _options$modifiers.self) && ev.target !== elementRef.value) return;\n\t\tif (options === null || options === void 0 || (_options$modifiers2 = options.modifiers) === null || _options$modifiers2 === void 0 ? void 0 : _options$modifiers2.prevent) ev.preventDefault();\n\t\tif (options === null || options === void 0 || (_options$modifiers3 = options.modifiers) === null || _options$modifiers3 === void 0 ? void 0 : _options$modifiers3.stop) ev.stopPropagation();\n\t\tconst dx = ev.x - _posStart.x;\n\t\tconst dy = ev.y - _posStart.y;\n\t\tconst distance = Math.sqrt(dx * dx + dy * dy);\n\t\toptions.onMouseUp(ev.timeStamp - _startTimestamp, distance, _hasLongPressed, ev);\n\t}\n\tfunction onDown(ev) {\n\t\tvar _options$modifiers4, _options$modifiers5, _options$modifiers6;\n\t\tif ((options === null || options === void 0 || (_options$modifiers4 = options.modifiers) === null || _options$modifiers4 === void 0 ? void 0 : _options$modifiers4.self) && ev.target !== elementRef.value) return;\n\t\tclear();\n\t\tif (options === null || options === void 0 || (_options$modifiers5 = options.modifiers) === null || _options$modifiers5 === void 0 ? void 0 : _options$modifiers5.prevent) ev.preventDefault();\n\t\tif (options === null || options === void 0 || (_options$modifiers6 = options.modifiers) === null || _options$modifiers6 === void 0 ? void 0 : _options$modifiers6.stop) ev.stopPropagation();\n\t\tposStart = {\n\t\t\tx: ev.x,\n\t\t\ty: ev.y\n\t\t};\n\t\tstartTimestamp = ev.timeStamp;\n\t\ttimeout = setTimeout(() => {\n\t\t\thasLongPressed = true;\n\t\t\thandler(ev);\n\t\t}, getDelay(ev));\n\t}\n\tfunction onMove(ev) {\n\t\tvar _options$modifiers7, _options$modifiers8, _options$modifiers9, _options$distanceThre;\n\t\tif ((options === null || options === void 0 || (_options$modifiers7 = options.modifiers) === null || _options$modifiers7 === void 0 ? void 0 : _options$modifiers7.self) && ev.target !== elementRef.value) return;\n\t\tif (!posStart || (options === null || options === void 0 ? void 0 : options.distanceThreshold) === false) return;\n\t\tif (options === null || options === void 0 || (_options$modifiers8 = options.modifiers) === null || _options$modifiers8 === void 0 ? void 0 : _options$modifiers8.prevent) ev.preventDefault();\n\t\tif (options === null || options === void 0 || (_options$modifiers9 = options.modifiers) === null || _options$modifiers9 === void 0 ? void 0 : _options$modifiers9.stop) ev.stopPropagation();\n\t\tconst dx = ev.x - posStart.x;\n\t\tconst dy = ev.y - posStart.y;\n\t\tif (Math.sqrt(dx * dx + dy * dy) >= ((_options$distanceThre = options === null || options === void 0 ? void 0 : options.distanceThreshold) !== null && _options$distanceThre !== void 0 ? _options$distanceThre : DEFAULT_THRESHOLD)) clear();\n\t}\n\tconst listenerOptions = {\n\t\tcapture: options === null || options === void 0 || (_options$modifiers10 = options.modifiers) === null || _options$modifiers10 === void 0 ? void 0 : _options$modifiers10.capture,\n\t\tonce: options === null || options === void 0 || (_options$modifiers11 = options.modifiers) === null || _options$modifiers11 === void 0 ? void 0 : _options$modifiers11.once\n\t};\n\tconst cleanup = [\n\t\tuseEventListener(elementRef, \"pointerdown\", onDown, listenerOptions),\n\t\tuseEventListener(elementRef, \"pointermove\", onMove, listenerOptions),\n\t\tuseEventListener(elementRef, [\"pointerup\", \"pointerleave\"], onRelease, listenerOptions)\n\t];\n\tconst stop = () => cleanup.forEach((fn) => fn());\n\treturn stop;\n}\n//#endregion\n//#region onStartTyping/index.ts\nfunction isFocusedElementEditable() {\n\tconst { activeElement, body } = document;\n\tif (!activeElement) return false;\n\tif (activeElement === body) return false;\n\tswitch (activeElement.tagName) {\n\t\tcase \"INPUT\":\n\t\tcase \"TEXTAREA\": return true;\n\t}\n\treturn activeElement.hasAttribute(\"contenteditable\");\n}\nfunction isTypedCharValid({ keyCode, metaKey, ctrlKey, altKey }) {\n\tif (metaKey || ctrlKey || altKey) return false;\n\tif (keyCode >= 48 && keyCode <= 57 || keyCode >= 96 && keyCode <= 105) return true;\n\tif (keyCode >= 65 && keyCode <= 90) return true;\n\treturn false;\n}\n/**\n* Fires when users start typing on non-editable elements.\n*\n* @see https://vueuse.org/onStartTyping\n* @param callback\n* @param options\n*/\nfunction onStartTyping(callback, options = {}) {\n\tconst { document = defaultDocument } = options;\n\tconst keydown = (event) => {\n\t\tif (!isFocusedElementEditable() && isTypedCharValid(event)) callback(event);\n\t};\n\tif (document) useEventListener(document, \"keydown\", keydown, { passive: true });\n}\n//#endregion\n//#region templateRef/index.ts\n/**\n* @deprecated Use Vue's built-in `useTemplateRef` instead.\n*\n* Shorthand for binding ref to template element.\n*\n* @see https://vueuse.org/templateRef\n* @param key\n* @param initialValue\n*\n* @__NO_SIDE_EFFECTS__\n*/\nfunction templateRef(key, initialValue = null) {\n\tconst instance = getCurrentInstance();\n\tlet _trigger = () => {};\n\tconst element = customRef((track, trigger) => {\n\t\t_trigger = trigger;\n\t\treturn {\n\t\t\tget() {\n\t\t\t\tvar _instance$proxy$$refs, _instance$proxy;\n\t\t\t\ttrack();\n\t\t\t\treturn (_instance$proxy$$refs = instance === null || instance === void 0 || (_instance$proxy = instance.proxy) === null || _instance$proxy === void 0 ? void 0 : _instance$proxy.$refs[key]) !== null && _instance$proxy$$refs !== void 0 ? _instance$proxy$$refs : initialValue;\n\t\t\t},\n\t\t\tset() {}\n\t\t};\n\t});\n\ttryOnMounted(_trigger);\n\tonUpdated(_trigger);\n\treturn element;\n}\n//#endregion\n//#region useActiveElement/index.ts\n/**\n* Reactive `document.activeElement`\n*\n* @see https://vueuse.org/useActiveElement\n* @param options\n*\n* @__NO_SIDE_EFFECTS__\n*/\nfunction useActiveElement(options = {}) {\n\tvar _options$document;\n\tconst { window = defaultWindow, deep = true, triggerOnRemoval = false } = options;\n\tconst document = (_options$document = options.document) !== null && _options$document !== void 0 ? _options$document : window === null || window === void 0 ? void 0 : window.document;\n\tconst getDeepActiveElement = () => {\n\t\tlet element = document === null || document === void 0 ? void 0 : document.activeElement;\n\t\tif (deep) {\n\t\t\tvar _element$shadowRoot;\n\t\t\twhile (element === null || element === void 0 ? void 0 : element.shadowRoot) element = element === null || element === void 0 || (_element$shadowRoot = element.shadowRoot) === null || _element$shadowRoot === void 0 ? void 0 : _element$shadowRoot.activeElement;\n\t\t}\n\t\treturn element;\n\t};\n\tconst activeElement = shallowRef();\n\tconst trigger = () => {\n\t\tactiveElement.value = getDeepActiveElement();\n\t};\n\tif (window) {\n\t\tconst listenerOptions = {\n\t\t\tcapture: true,\n\t\t\tpassive: true\n\t\t};\n\t\tuseEventListener(window, \"blur\", (event) => {\n\t\t\tif (event.relatedTarget !== null) return;\n\t\t\ttrigger();\n\t\t}, listenerOptions);\n\t\tuseEventListener(window, \"focus\", trigger, listenerOptions);\n\t}\n\tif (triggerOnRemoval) onElementRemoval(activeElement, trigger, { document });\n\ttrigger();\n\treturn activeElement;\n}\n//#endregion\n//#region useRafFn/index.ts\n/**\n* Call function on every `requestAnimationFrame`. With controls of pausing and resuming.\n*\n* @see https://vueuse.org/useRafFn\n* @param fn\n* @param options\n*/\nfunction useRafFn(fn, options = {}) {\n\tconst { immediate = true, fpsLimit = null, window = defaultWindow, once = false } = options;\n\tconst isActive = shallowRef(false);\n\tconst intervalLimit = computed(() => {\n\t\tconst limit = toValue(fpsLimit);\n\t\treturn limit ? 1e3 / limit : null;\n\t});\n\tlet previousFrameTimestamp = 0;\n\tlet rafId = null;\n\tfunction loop(timestamp) {\n\t\tif (!isActive.value || !window) return;\n\t\tif (!previousFrameTimestamp) previousFrameTimestamp = timestamp;\n\t\tconst delta = timestamp - previousFrameTimestamp;\n\t\tif (intervalLimit.value && delta < intervalLimit.value) {\n\t\t\trafId = window.requestAnimationFrame(loop);\n\t\t\treturn;\n\t\t}\n\t\tpreviousFrameTimestamp = timestamp;\n\t\tfn({\n\t\t\tdelta,\n\t\t\ttimestamp\n\t\t});\n\t\tif (once) {\n\t\t\tisActive.value = false;\n\t\t\trafId = null;\n\t\t\treturn;\n\t\t}\n\t\trafId = window.requestAnimationFrame(loop);\n\t}\n\tfunction resume() {\n\t\tif (!isActive.value && window) {\n\t\t\tisActive.value = true;\n\t\t\tpreviousFrameTimestamp = 0;\n\t\t\trafId = window.requestAnimationFrame(loop);\n\t\t}\n\t}\n\tfunction pause() {\n\t\tisActive.value = false;\n\t\tif (rafId != null && window) {\n\t\t\twindow.cancelAnimationFrame(rafId);\n\t\t\trafId = null;\n\t\t}\n\t}\n\tif (immediate) resume();\n\ttryOnScopeDispose(pause);\n\treturn {\n\t\tisActive: shallowReadonly(isActive),\n\t\tpause,\n\t\tresume\n\t};\n}\n//#endregion\n//#region useAnimate/index.ts\n/**\n* Reactive Web Animations API\n*\n* @see https://vueuse.org/useAnimate\n* @param target\n* @param keyframes\n* @param options\n*/\nfunction useAnimate(target, keyframes, options) {\n\tlet config;\n\tlet animateOptions;\n\tif (isObject(options)) {\n\t\tconfig = options;\n\t\tanimateOptions = objectOmit(options, [\n\t\t\t\"window\",\n\t\t\t\"immediate\",\n\t\t\t\"commitStyles\",\n\t\t\t\"persist\",\n\t\t\t\"onReady\",\n\t\t\t\"onError\"\n\t\t]);\n\t} else {\n\t\tconfig = { duration: options };\n\t\tanimateOptions = options;\n\t}\n\tconst { window = defaultWindow, immediate = true, commitStyles, persist, playbackRate: _playbackRate = 1, onReady, onError = (e) => {\n\t\tconsole.error(e);\n\t} } = config;\n\tconst isSupported = /* @__PURE__ */ useSupported(() => window && HTMLElement && \"animate\" in HTMLElement.prototype);\n\tconst animate = shallowRef(void 0);\n\tconst store = shallowReactive({\n\t\tstartTime: null,\n\t\tcurrentTime: null,\n\t\ttimeline: null,\n\t\tplaybackRate: _playbackRate,\n\t\tpending: false,\n\t\tplayState: immediate ? \"idle\" : \"paused\",\n\t\treplaceState: \"active\"\n\t});\n\tconst pending = computed(() => store.pending);\n\tconst playState = computed(() => store.playState);\n\tconst replaceState = computed(() => store.replaceState);\n\tconst startTime = computed({\n\t\tget() {\n\t\t\treturn store.startTime;\n\t\t},\n\t\tset(value) {\n\t\t\tstore.startTime = value;\n\t\t\tif (animate.value) animate.value.startTime = value;\n\t\t}\n\t});\n\tconst currentTime = computed({\n\t\tget() {\n\t\t\treturn store.currentTime;\n\t\t},\n\t\tset(value) {\n\t\t\tstore.currentTime = value;\n\t\t\tif (animate.value) {\n\t\t\t\tanimate.value.currentTime = value;\n\t\t\t\tsyncResume();\n\t\t\t}\n\t\t}\n\t});\n\tconst timeline = computed({\n\t\tget() {\n\t\t\treturn store.timeline;\n\t\t},\n\t\tset(value) {\n\t\t\tstore.timeline = value;\n\t\t\tif (animate.value) animate.value.timeline = value;\n\t\t}\n\t});\n\tconst playbackRate = computed({\n\t\tget() {\n\t\t\treturn store.playbackRate;\n\t\t},\n\t\tset(value) {\n\t\t\tstore.playbackRate = value;\n\t\t\tif (animate.value) animate.value.playbackRate = value;\n\t\t}\n\t});\n\tconst play = () => {\n\t\tif (animate.value) try {\n\t\t\tanimate.value.play();\n\t\t\tsyncResume();\n\t\t} catch (e) {\n\t\t\tsyncPause();\n\t\t\tonError(e);\n\t\t}\n\t\telse update();\n\t};\n\tconst pause = () => {\n\t\ttry {\n\t\t\tvar _animate$value;\n\t\t\t(_animate$value = animate.value) === null || _animate$value === void 0 || _animate$value.pause();\n\t\t\tsyncPause();\n\t\t} catch (e) {\n\t\t\tonError(e);\n\t\t}\n\t};\n\tconst reverse = () => {\n\t\tif (!animate.value) update();\n\t\ttry {\n\t\t\tvar _animate$value2;\n\t\t\t(_animate$value2 = animate.value) === null || _animate$value2 === void 0 || _animate$value2.reverse();\n\t\t\tsyncResume();\n\t\t} catch (e) {\n\t\t\tsyncPause();\n\t\t\tonError(e);\n\t\t}\n\t};\n\tconst finish = () => {\n\t\ttry {\n\t\t\tvar _animate$value3;\n\t\t\t(_animate$value3 = animate.value) === null || _animate$value3 === void 0 || _animate$value3.finish();\n\t\t\tsyncPause();\n\t\t} catch (e) {\n\t\t\tonError(e);\n\t\t}\n\t};\n\tconst cancel = () => {\n\t\ttry {\n\t\t\tvar _animate$value4;\n\t\t\t(_animate$value4 = animate.value) === null || _animate$value4 === void 0 || _animate$value4.cancel();\n\t\t\tsyncPause();\n\t\t} catch (e) {\n\t\t\tonError(e);\n\t\t}\n\t};\n\twatch(() => unrefElement(target), (el) => {\n\t\tif (el) update(true);\n\t\telse animate.value = void 0;\n\t});\n\twatch(() => keyframes, (value) => {\n\t\tif (animate.value) {\n\t\t\tupdate();\n\t\t\tconst targetEl = unrefElement(target);\n\t\t\tif (targetEl) animate.value.effect = new KeyframeEffect(targetEl, toValue(value), animateOptions);\n\t\t}\n\t}, { deep: true });\n\ttryOnMounted(() => update(true), false);\n\ttryOnScopeDispose(cancel);\n\tfunction update(init) {\n\t\tconst el = unrefElement(target);\n\t\tif (!isSupported.value || !el) return;\n\t\tif (!animate.value) animate.value = el.animate(toValue(keyframes), animateOptions);\n\t\tif (persist) animate.value.persist();\n\t\tif (_playbackRate !== 1) animate.value.playbackRate = _playbackRate;\n\t\tif (init && !immediate) animate.value.pause();\n\t\telse syncResume();\n\t\tonReady === null || onReady === void 0 || onReady(animate.value);\n\t}\n\tconst listenerOptions = { passive: true };\n\tuseEventListener(animate, [\n\t\t\"cancel\",\n\t\t\"finish\",\n\t\t\"remove\"\n\t], syncPause, listenerOptions);\n\tuseEventListener(animate, \"finish\", () => {\n\t\tvar _animate$value5;\n\t\tif (commitStyles) (_animate$value5 = animate.value) === null || _animate$value5 === void 0 || _animate$value5.commitStyles();\n\t}, listenerOptions);\n\tconst { resume: resumeRef, pause: pauseRef } = useRafFn(() => {\n\t\tif (!animate.value) return;\n\t\tstore.pending = animate.value.pending;\n\t\tstore.playState = animate.value.playState;\n\t\tstore.replaceState = animate.value.replaceState;\n\t\tstore.startTime = animate.value.startTime;\n\t\tstore.currentTime = animate.value.currentTime;\n\t\tstore.timeline = animate.value.timeline;\n\t\tstore.playbackRate = animate.value.playbackRate;\n\t}, { immediate: false });\n\tfunction syncResume() {\n\t\tif (isSupported.value) resumeRef();\n\t}\n\tfunction syncPause() {\n\t\tif (isSupported.value && window) window.requestAnimationFrame(pauseRef);\n\t}\n\treturn {\n\t\tisSupported,\n\t\tanimate,\n\t\tplay,\n\t\tpause,\n\t\treverse,\n\t\tfinish,\n\t\tcancel,\n\t\tpending,\n\t\tplayState,\n\t\treplaceState,\n\t\tstartTime,\n\t\tcurrentTime,\n\t\ttimeline,\n\t\tplaybackRate\n\t};\n}\n//#endregion\n//#region useAsyncQueue/index.ts\n/**\n* Asynchronous queue task controller.\n*\n* @see https://vueuse.org/useAsyncQueue\n* @param tasks\n* @param options\n*/\nfunction useAsyncQueue(tasks, options) {\n\tconst { interrupt = true, onError = noop, onFinished = noop, signal } = options || {};\n\tconst promiseState = {\n\t\taborted: \"aborted\",\n\t\tfulfilled: \"fulfilled\",\n\t\tpending: \"pending\",\n\t\trejected: \"rejected\"\n\t};\n\tconst result = reactive(Array.from(Array.from({ length: tasks.length }), () => ({\n\t\tstate: promiseState.pending,\n\t\tdata: null\n\t})));\n\tconst activeIndex = shallowRef(-1);\n\tif (!tasks || tasks.length === 0) {\n\t\tonFinished();\n\t\treturn {\n\t\t\tactiveIndex,\n\t\t\tresult\n\t\t};\n\t}\n\tfunction updateResult(state, res) {\n\t\tactiveIndex.value++;\n\t\tresult[activeIndex.value].data = res;\n\t\tresult[activeIndex.value].state = state;\n\t}\n\ttasks.reduce((prev, curr) => {\n\t\treturn prev.then((prevRes) => {\n\t\t\tvar _result$activeIndex$v;\n\t\t\tif (signal === null || signal === void 0 ? void 0 : signal.aborted) {\n\t\t\t\tupdateResult(promiseState.aborted, /* @__PURE__ */ new Error(\"aborted\"));\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tif (((_result$activeIndex$v = result[activeIndex.value]) === null || _result$activeIndex$v === void 0 ? void 0 : _result$activeIndex$v.state) === promiseState.rejected && interrupt) {\n\t\t\t\tonFinished();\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tconst done = curr(prevRes).then((currentRes) => {\n\t\t\t\tupdateResult(promiseState.fulfilled, currentRes);\n\t\t\t\tif (activeIndex.value === tasks.length - 1) onFinished();\n\t\t\t\treturn currentRes;\n\t\t\t});\n\t\t\tif (!signal) return done;\n\t\t\treturn Promise.race([done, whenAborted(signal)]);\n\t\t}).catch((e) => {\n\t\t\tif (signal === null || signal === void 0 ? void 0 : signal.aborted) {\n\t\t\t\tupdateResult(promiseState.aborted, e);\n\t\t\t\treturn e;\n\t\t\t}\n\t\t\tupdateResult(promiseState.rejected, e);\n\t\t\tonError();\n\t\t\tif (activeIndex.value === tasks.length - 1) onFinished();\n\t\t\treturn e;\n\t\t});\n\t}, Promise.resolve());\n\treturn {\n\t\tactiveIndex,\n\t\tresult\n\t};\n}\nfunction whenAborted(signal) {\n\treturn new Promise((resolve, reject) => {\n\t\tconst error = /* @__PURE__ */ new Error(\"aborted\");\n\t\tif (signal.aborted) reject(error);\n\t\telse signal.addEventListener(\"abort\", () => reject(error), { once: true });\n\t});\n}\n//#endregion\n//#region useAsyncState/index.ts\n/**\n* Reactive async state. Will not block your setup function and will trigger changes once\n* the promise is ready.\n*\n* @see https://vueuse.org/useAsyncState\n* @param promise The promise / async function to be resolved\n* @param initialState The initial state, used until the first evaluation finishes\n* @param options\n*/\nfunction useAsyncState(promise, initialState, options) {\n\tvar _globalThis$reportErr;\n\tconst { immediate = true, delay = 0, onError = (_globalThis$reportErr = globalThis.reportError) !== null && _globalThis$reportErr !== void 0 ? _globalThis$reportErr : noop, onSuccess = noop, resetOnExecute = true, shallow = true, throwError } = options !== null && options !== void 0 ? options : {};\n\tconst state = shallow ? shallowRef(initialState) : ref(initialState);\n\tconst isReady = shallowRef(false);\n\tconst isLoading = shallowRef(false);\n\tconst error = shallowRef(void 0);\n\tlet executionsCount = 0;\n\tasync function execute(delay = 0, ...args) {\n\t\tconst executionId = executionsCount += 1;\n\t\tif (resetOnExecute) state.value = toValue(initialState);\n\t\terror.value = void 0;\n\t\tisReady.value = false;\n\t\tisLoading.value = true;\n\t\tif (delay > 0) await promiseTimeout(delay);\n\t\tconst _promise = typeof promise === \"function\" ? promise(...args) : promise;\n\t\ttry {\n\t\t\tconst data = await _promise;\n\t\t\tif (executionId === executionsCount) {\n\t\t\t\tstate.value = data;\n\t\t\t\tisReady.value = true;\n\t\t\t}\n\t\t\tonSuccess(data);\n\t\t\treturn data;\n\t\t} catch (e) {\n\t\t\tif (executionId === executionsCount) error.value = e;\n\t\t\tonError(e);\n\t\t\tif (throwError) throw e;\n\t\t} finally {\n\t\t\tif (executionId === executionsCount) isLoading.value = false;\n\t\t}\n\t}\n\tif (immediate) execute(delay);\n\tconst shell = {\n\t\tstate,\n\t\tisReady,\n\t\tisLoading,\n\t\terror,\n\t\texecute,\n\t\texecuteImmediate: (...args) => execute(0, ...args)\n\t};\n\tfunction waitUntilIsLoaded() {\n\t\treturn new Promise((resolve, reject) => {\n\t\t\tuntil(isLoading).toBe(false).then(() => resolve(shell)).catch(reject);\n\t\t});\n\t}\n\treturn {\n\t\t...shell,\n\t\tthen(onFulfilled, onRejected) {\n\t\t\treturn waitUntilIsLoaded().then(onFulfilled, onRejected);\n\t\t}\n\t};\n}\n//#endregion\n//#region useBase64/serialization.ts\nconst defaults = {\n\tarray: (v) => JSON.stringify(v),\n\tobject: (v) => JSON.stringify(v),\n\tset: (v) => JSON.stringify(Array.from(v)),\n\tmap: (v) => JSON.stringify(Object.fromEntries(v)),\n\tnull: () => \"\"\n};\nfunction getDefaultSerialization(target) {\n\tif (!target) return defaults.null;\n\tif (target instanceof Map) return defaults.map;\n\telse if (target instanceof Set) return defaults.set;\n\telse if (Array.isArray(target)) return defaults.array;\n\telse return defaults.object;\n}\n//#endregion\n//#region useBase64/index.ts\nfunction useBase64(target, options) {\n\tconst base64 = shallowRef(\"\");\n\tconst promise = shallowRef();\n\tfunction execute() {\n\t\tif (!isClient) return;\n\t\tpromise.value = new Promise((resolve, reject) => {\n\t\t\ttry {\n\t\t\t\tconst _target = toValue(target);\n\t\t\t\tif (_target == null) resolve(\"\");\n\t\t\t\telse if (typeof _target === \"string\") resolve(blobToBase64(new Blob([_target], { type: \"text/plain\" })));\n\t\t\t\telse if (_target instanceof Blob) resolve(blobToBase64(_target));\n\t\t\t\telse if (_target instanceof ArrayBuffer) resolve(window.btoa(String.fromCharCode(...new Uint8Array(_target))));\n\t\t\t\telse if (_target instanceof HTMLCanvasElement) resolve(_target.toDataURL(options === null || options === void 0 ? void 0 : options.type, options === null || options === void 0 ? void 0 : options.quality));\n\t\t\t\telse if (_target instanceof HTMLImageElement) {\n\t\t\t\t\tconst img = _target.cloneNode(false);\n\t\t\t\t\timg.crossOrigin = \"Anonymous\";\n\t\t\t\t\timgLoaded(img).then(() => {\n\t\t\t\t\t\tconst canvas = document.createElement(\"canvas\");\n\t\t\t\t\t\tconst ctx = canvas.getContext(\"2d\");\n\t\t\t\t\t\tcanvas.width = img.width;\n\t\t\t\t\t\tcanvas.height = img.height;\n\t\t\t\t\t\tctx.drawImage(img, 0, 0, canvas.width, canvas.height);\n\t\t\t\t\t\tresolve(canvas.toDataURL(options === null || options === void 0 ? void 0 : options.type, options === null || options === void 0 ? void 0 : options.quality));\n\t\t\t\t\t}).catch(reject);\n\t\t\t\t} else if (typeof _target === \"object\") {\n\t\t\t\t\tconst serialized = ((options === null || options === void 0 ? void 0 : options.serializer) || getDefaultSerialization(_target))(_target);\n\t\t\t\t\treturn resolve(blobToBase64(new Blob([serialized], { type: \"application/json\" })));\n\t\t\t\t} else reject(/* @__PURE__ */ new Error(\"target is unsupported types\"));\n\t\t\t} catch (error) {\n\t\t\t\treject(error);\n\t\t\t}\n\t\t});\n\t\tpromise.value.then((res) => {\n\t\t\tbase64.value = (options === null || options === void 0 ? void 0 : options.dataUrl) === false ? res.replace(/^data:.*?;base64,/, \"\") : res;\n\t\t});\n\t\treturn promise.value;\n\t}\n\tif (isRef(target) || typeof target === \"function\") watch(target, execute, { immediate: true });\n\telse execute();\n\treturn {\n\t\tbase64,\n\t\tpromise,\n\t\texecute\n\t};\n}\nfunction imgLoaded(img) {\n\treturn new Promise((resolve, reject) => {\n\t\tif (!img.complete) {\n\t\t\timg.onload = () => {\n\t\t\t\tresolve();\n\t\t\t};\n\t\t\timg.onerror = reject;\n\t\t} else resolve();\n\t});\n}\nfunction blobToBase64(blob) {\n\treturn new Promise((resolve, reject) => {\n\t\tconst fr = new FileReader();\n\t\tfr.onload = (e) => {\n\t\t\tresolve(e.target.result);\n\t\t};\n\t\tfr.onerror = reject;\n\t\tfr.readAsDataURL(blob);\n\t});\n}\n//#endregion\n//#region useBattery/index.ts\n/**\n* Reactive Battery Status API.\n*\n* @see https://vueuse.org/useBattery\n*\n* @__NO_SIDE_EFFECTS__\n*/\nfunction useBattery(options = {}) {\n\tconst { navigator = defaultNavigator } = options;\n\tconst events = [\n\t\t\"chargingchange\",\n\t\t\"chargingtimechange\",\n\t\t\"dischargingtimechange\",\n\t\t\"levelchange\"\n\t];\n\tconst isSupported = /* @__PURE__ */ useSupported(() => navigator && \"getBattery\" in navigator && typeof navigator.getBattery === \"function\");\n\tconst charging = shallowRef(false);\n\tconst chargingTime = shallowRef(0);\n\tconst dischargingTime = shallowRef(0);\n\tconst level = shallowRef(1);\n\tlet battery;\n\tfunction updateBatteryInfo() {\n\t\tcharging.value = this.charging;\n\t\tchargingTime.value = this.chargingTime || 0;\n\t\tdischargingTime.value = this.dischargingTime || 0;\n\t\tlevel.value = this.level;\n\t}\n\tif (isSupported.value) navigator.getBattery().then((_battery) => {\n\t\tbattery = _battery;\n\t\tupdateBatteryInfo.call(battery);\n\t\tuseEventListener(battery, events, updateBatteryInfo, { passive: true });\n\t});\n\treturn {\n\t\tisSupported,\n\t\tcharging,\n\t\tchargingTime,\n\t\tdischargingTime,\n\t\tlevel\n\t};\n}\n//#endregion\n//#region useBluetooth/index.ts\n/* @__NO_SIDE_EFFECTS__ */\nfunction useBluetooth(options) {\n\tlet { acceptAllDevices = false } = options || {};\n\tconst { filters = void 0, optionalServices = void 0, navigator = defaultNavigator } = options || {};\n\tconst isSupported = /* @__PURE__ */ useSupported(() => navigator && \"bluetooth\" in navigator);\n\tconst device = shallowRef();\n\tconst error = shallowRef(null);\n\twatch(device, () => {\n\t\tconnectToBluetoothGATTServer();\n\t});\n\tasync function requestDevice() {\n\t\tif (!isSupported.value) return;\n\t\terror.value = null;\n\t\tif (filters && filters.length > 0) acceptAllDevices = false;\n\t\ttry {\n\t\t\tdevice.value = await (navigator === null || navigator === void 0 ? void 0 : navigator.bluetooth.requestDevice({\n\t\t\t\tacceptAllDevices,\n\t\t\t\tfilters,\n\t\t\t\toptionalServices\n\t\t\t}));\n\t\t} catch (err) {\n\t\t\terror.value = err;\n\t\t}\n\t}\n\tconst server = shallowRef();\n\tconst isConnected = shallowRef(false);\n\tfunction reset() {\n\t\tisConnected.value = false;\n\t\tdevice.value = void 0;\n\t\tserver.value = void 0;\n\t}\n\tasync function connectToBluetoothGATTServer() {\n\t\terror.value = null;\n\t\tif (device.value && device.value.gatt) {\n\t\t\tuseEventListener(device, \"gattserverdisconnected\", reset, { passive: true });\n\t\t\ttry {\n\t\t\t\tserver.value = await device.value.gatt.connect();\n\t\t\t\tisConnected.value = server.value.connected;\n\t\t\t} catch (err) {\n\t\t\t\terror.value = err;\n\t\t\t}\n\t\t}\n\t}\n\ttryOnMounted(() => {\n\t\tvar _device$value$gatt;\n\t\tif (device.value) (_device$value$gatt = device.value.gatt) === null || _device$value$gatt === void 0 || _device$value$gatt.connect();\n\t});\n\ttryOnScopeDispose(() => {\n\t\tvar _device$value$gatt2;\n\t\tif (device.value) (_device$value$gatt2 = device.value.gatt) === null || _device$value$gatt2 === void 0 || _device$value$gatt2.disconnect();\n\t});\n\treturn {\n\t\tisSupported,\n\t\tisConnected: shallowReadonly(isConnected),\n\t\tdevice,\n\t\trequestDevice,\n\t\tserver,\n\t\terror\n\t};\n}\n//#endregion\n//#region useSSRWidth/index.ts\nconst ssrWidthSymbol = Symbol(\"vueuse-ssr-width\");\n/* @__NO_SIDE_EFFECTS__ */\nfunction useSSRWidth() {\n\tconst ssrWidth = hasInjectionContext() ? injectLocal(ssrWidthSymbol, null) : null;\n\treturn typeof ssrWidth === \"number\" ? ssrWidth : void 0;\n}\nfunction provideSSRWidth(width, app) {\n\tif (app !== void 0) app.provide(ssrWidthSymbol, width);\n\telse provideLocal(ssrWidthSymbol, width);\n}\n//#endregion\n//#region useMediaQuery/index.ts\n/**\n* Reactive Media Query.\n*\n* @see https://vueuse.org/useMediaQuery\n* @param query\n* @param options\n*/\nfunction useMediaQuery(query, options = {}) {\n\tconst { window = defaultWindow, ssrWidth = /* @__PURE__ */ useSSRWidth() } = options;\n\tconst isSupported = /* @__PURE__ */ useSupported(() => window && \"matchMedia\" in window && typeof window.matchMedia === \"function\");\n\tconst ssrSupport = shallowRef(typeof ssrWidth === \"number\");\n\tconst mediaQuery = shallowRef();\n\tconst matches = shallowRef(false);\n\tconst handler = (event) => {\n\t\tmatches.value = event.matches;\n\t};\n\twatchEffect(() => {\n\t\tif (ssrSupport.value) {\n\t\t\tssrSupport.value = !isSupported.value;\n\t\t\tmatches.value = toValue(query).split(\",\").some((queryString) => {\n\t\t\t\tconst not = queryString.includes(\"not all\");\n\t\t\t\tconst minWidth = queryString.match(/\\(\\s*min-width:\\s*(-?\\d+(?:\\.\\d*)?[a-z]+\\s*)\\)/);\n\t\t\t\tconst maxWidth = queryString.match(/\\(\\s*max-width:\\s*(-?\\d+(?:\\.\\d*)?[a-z]+\\s*)\\)/);\n\t\t\t\tlet res = Boolean(minWidth || maxWidth);\n\t\t\t\tif (minWidth && res) res = ssrWidth >= pxValue(minWidth[1]);\n\t\t\t\tif (maxWidth && res) res = ssrWidth <= pxValue(maxWidth[1]);\n\t\t\t\treturn not ? !res : res;\n\t\t\t});\n\t\t\treturn;\n\t\t}\n\t\tif (!isSupported.value) return;\n\t\tmediaQuery.value = window.matchMedia(toValue(query));\n\t\tmatches.value = mediaQuery.value.matches;\n\t});\n\tuseEventListener(mediaQuery, \"change\", handler, { passive: true });\n\treturn computed(() => matches.value);\n}\n//#endregion\n//#region useBreakpoints/breakpoints.ts\n/**\n* Breakpoints from Tailwind V2\n*\n* @see https://tailwindcss.com/docs/breakpoints\n*/\nconst breakpointsTailwind = {\n\t\"sm\": 640,\n\t\"md\": 768,\n\t\"lg\": 1024,\n\t\"xl\": 1280,\n\t\"2xl\": 1536\n};\n/**\n* Breakpoints from Bootstrap V5\n*\n* @see https://getbootstrap.com/docs/5.0/layout/breakpoints\n*/\nconst breakpointsBootstrapV5 = {\n\txs: 0,\n\tsm: 576,\n\tmd: 768,\n\tlg: 992,\n\txl: 1200,\n\txxl: 1400\n};\n/**\n* Breakpoints from Vuetify V2\n*\n* @see https://v2.vuetifyjs.com/en/features/breakpoints/\n*/\nconst breakpointsVuetifyV2 = {\n\txs: 0,\n\tsm: 600,\n\tmd: 960,\n\tlg: 1264,\n\txl: 1904\n};\n/**\n* Breakpoints from Vuetify V3\n*\n* @see https://vuetifyjs.com/en/styles/float/#overview\n*/\nconst breakpointsVuetifyV3 = {\n\txs: 0,\n\tsm: 600,\n\tmd: 960,\n\tlg: 1280,\n\txl: 1920,\n\txxl: 2560\n};\n/**\n* Alias to `breakpointsVuetifyV2`\n*\n* @deprecated explictly use `breakpointsVuetifyV2` or `breakpointsVuetifyV3` instead\n*/\nconst breakpointsVuetify = breakpointsVuetifyV2;\n/**\n* Breakpoints from Ant Design\n*\n* @see https://ant.design/components/layout/#breakpoint-width\n*/\nconst breakpointsAntDesign = {\n\txs: 480,\n\tsm: 576,\n\tmd: 768,\n\tlg: 992,\n\txl: 1200,\n\txxl: 1600\n};\n/**\n* Breakpoints from Quasar V2\n*\n* @see https://quasar.dev/style/breakpoints\n*/\nconst breakpointsQuasar = {\n\txs: 0,\n\tsm: 600,\n\tmd: 1024,\n\tlg: 1440,\n\txl: 1920\n};\n/**\n* Sematic Breakpoints\n*/\nconst breakpointsSematic = {\n\tmobileS: 320,\n\tmobileM: 375,\n\tmobileL: 425,\n\ttablet: 768,\n\tlaptop: 1024,\n\tlaptopL: 1440,\n\tdesktop4K: 2560\n};\n/**\n* Breakpoints from Master CSS\n*\n* @see https://docs.master.co/css/breakpoints\n*/\nconst breakpointsMasterCss = {\n\t\"3xs\": 360,\n\t\"2xs\": 480,\n\t\"xs\": 600,\n\t\"sm\": 768,\n\t\"md\": 1024,\n\t\"lg\": 1280,\n\t\"xl\": 1440,\n\t\"2xl\": 1600,\n\t\"3xl\": 1920,\n\t\"4xl\": 2560\n};\n/**\n* Breakpoints from PrimeFlex\n*\n* @see https://primeflex.org/installation\n*/\nconst breakpointsPrimeFlex = {\n\tsm: 576,\n\tmd: 768,\n\tlg: 992,\n\txl: 1200\n};\n/**\n* Breakpoints from ElementUI/ElementPlus\n*\n* @see https://element.eleme.io/#/en-US/component/layout\n* @see https://element-plus.org/en-US/component/layout.html\n*/\nconst breakpointsElement = {\n\txs: 0,\n\tsm: 768,\n\tmd: 992,\n\tlg: 1200,\n\txl: 1920\n};\n//#endregion\n//#region useBreakpoints/index.ts\n/**\n* Reactively viewport breakpoints\n*\n* @see https://vueuse.org/useBreakpoints\n*\n* @__NO_SIDE_EFFECTS__\n*/\nfunction useBreakpoints(breakpoints, options = {}) {\n\tfunction getValue(k, delta) {\n\t\tlet v = toValue(breakpoints[toValue(k)]);\n\t\tif (delta != null) v = increaseWithUnit(v, delta);\n\t\tif (typeof v === \"number\") v = `${v}px`;\n\t\treturn v;\n\t}\n\tconst { window = defaultWindow, strategy = \"min-width\", ssrWidth = /* @__PURE__ */ useSSRWidth() } = options;\n\tconst ssrSupport = typeof ssrWidth === \"number\";\n\tconst mounted = ssrSupport ? shallowRef(false) : { value: true };\n\tif (ssrSupport) tryOnMounted(() => mounted.value = !!window);\n\tfunction match(query, size) {\n\t\tif (!mounted.value && ssrSupport) return query === \"min\" ? ssrWidth >= pxValue(size) : ssrWidth <= pxValue(size);\n\t\tif (!window) return false;\n\t\treturn window.matchMedia(`(${query}-width: ${size})`).matches;\n\t}\n\tconst greaterOrEqual = (k) => {\n\t\treturn useMediaQuery(() => `(min-width: ${getValue(k)})`, options);\n\t};\n\tconst smallerOrEqual = (k) => {\n\t\treturn useMediaQuery(() => `(max-width: ${getValue(k)})`, options);\n\t};\n\tconst shortcutMethods = Object.keys(breakpoints).reduce((shortcuts, k) => {\n\t\tObject.defineProperty(shortcuts, k, {\n\t\t\tget: () => strategy === \"min-width\" ? greaterOrEqual(k) : smallerOrEqual(k),\n\t\t\tenumerable: true,\n\t\t\tconfigurable: true\n\t\t});\n\t\treturn shortcuts;\n\t}, {});\n\tfunction current() {\n\t\tconst points = Object.keys(breakpoints).map((k) => [\n\t\t\tk,\n\t\t\tshortcutMethods[k],\n\t\t\tpxValue(getValue(k))\n\t\t]).sort((a, b) => a[2] - b[2]);\n\t\treturn computed(() => points.filter(([, v]) => v.value).map(([k]) => k));\n\t}\n\treturn Object.assign(shortcutMethods, {\n\t\tgreaterOrEqual,\n\t\tsmallerOrEqual,\n\t\tgreater(k) {\n\t\t\treturn useMediaQuery(() => `(min-width: ${getValue(k, .1)})`, options);\n\t\t},\n\t\tsmaller(k) {\n\t\t\treturn useMediaQuery(() => `(max-width: ${getValue(k, -.1)})`, options);\n\t\t},\n\t\tbetween(a, b) {\n\t\t\treturn useMediaQuery(() => `(min-width: ${getValue(a)}) and (max-width: ${getValue(b, -.1)})`, options);\n\t\t},\n\t\tisGreater(k) {\n\t\t\treturn match(\"min\", getValue(k, .1));\n\t\t},\n\t\tisGreaterOrEqual(k) {\n\t\t\treturn match(\"min\", getValue(k));\n\t\t},\n\t\tisSmaller(k) {\n\t\t\treturn match(\"max\", getValue(k, -.1));\n\t\t},\n\t\tisSmallerOrEqual(k) {\n\t\t\treturn match(\"max\", getValue(k));\n\t\t},\n\t\tisInBetween(a, b) {\n\t\t\treturn match(\"min\", getValue(a)) && match(\"max\", getValue(b, -.1));\n\t\t},\n\t\tcurrent,\n\t\tactive() {\n\t\t\tconst bps = current();\n\t\t\treturn computed(() => bps.value.length === 0 ? \"\" : bps.value.at(strategy === \"min-width\" ? -1 : 0));\n\t\t}\n\t});\n}\n//#endregion\n//#region useBroadcastChannel/index.ts\n/**\n* Reactive BroadcastChannel\n*\n* @see https://vueuse.org/useBroadcastChannel\n* @see https://developer.mozilla.org/en-US/docs/Web/API/BroadcastChannel\n* @param options\n*\n*/\nfunction useBroadcastChannel(options) {\n\tconst { name, window = defaultWindow } = options;\n\tconst isSupported = /* @__PURE__ */ useSupported(() => window && \"BroadcastChannel\" in window);\n\tconst isClosed = shallowRef(false);\n\tconst channel = shallowRef();\n\tconst data = shallowRef();\n\tconst error = shallowRef(null);\n\tconst post = (data) => {\n\t\tif (channel.value) channel.value.postMessage(data);\n\t};\n\tconst close = () => {\n\t\tif (channel.value) channel.value.close();\n\t\tisClosed.value = true;\n\t};\n\tif (isSupported.value) tryOnMounted(() => {\n\t\terror.value = null;\n\t\tchannel.value = new BroadcastChannel(name);\n\t\tconst listenerOptions = { passive: true };\n\t\tuseEventListener(channel, \"message\", (e) => {\n\t\t\tdata.value = e.data;\n\t\t}, listenerOptions);\n\t\tuseEventListener(channel, \"messageerror\", (e) => {\n\t\t\terror.value = e;\n\t\t}, listenerOptions);\n\t\tuseEventListener(channel, \"close\", () => {\n\t\t\tisClosed.value = true;\n\t\t}, listenerOptions);\n\t});\n\ttryOnScopeDispose(() => {\n\t\tclose();\n\t});\n\treturn {\n\t\tisSupported,\n\t\tchannel,\n\t\tdata,\n\t\tpost,\n\t\tclose,\n\t\terror,\n\t\tisClosed\n\t};\n}\n//#endregion\n//#region useBrowserLocation/index.ts\nconst WRITABLE_PROPERTIES = [\n\t\"hash\",\n\t\"host\",\n\t\"hostname\",\n\t\"href\",\n\t\"pathname\",\n\t\"port\",\n\t\"protocol\",\n\t\"search\"\n];\n/**\n* Reactive browser location.\n*\n* @see https://vueuse.org/useBrowserLocation\n*\n* @__NO_SIDE_EFFECTS__\n*/\nfunction useBrowserLocation(options = {}) {\n\tconst { window = defaultWindow } = options;\n\tconst refs = Object.fromEntries(WRITABLE_PROPERTIES.map((key) => [key, ref()]));\n\tfor (const [key, ref] of objectEntries(refs)) watch(ref, (value) => {\n\t\tif (!(window === null || window === void 0 ? void 0 : window.location) || window.location[key] === value) return;\n\t\twindow.location[key] = value;\n\t});\n\tconst buildState = (trigger) => {\n\t\tvar _window$location;\n\t\tconst { state, length } = (window === null || window === void 0 ? void 0 : window.history) || {};\n\t\tconst { origin } = (window === null || window === void 0 ? void 0 : window.location) || {};\n\t\tfor (const key of WRITABLE_PROPERTIES) refs[key].value = window === null || window === void 0 || (_window$location = window.location) === null || _window$location === void 0 ? void 0 : _window$location[key];\n\t\treturn reactive({\n\t\t\ttrigger,\n\t\t\tstate,\n\t\t\tlength,\n\t\t\torigin,\n\t\t\t...refs\n\t\t});\n\t};\n\tconst state = ref(buildState(\"load\"));\n\tif (window) {\n\t\tconst listenerOptions = { passive: true };\n\t\tuseEventListener(window, \"popstate\", () => state.value = buildState(\"popstate\"), listenerOptions);\n\t\tuseEventListener(window, \"hashchange\", () => state.value = buildState(\"hashchange\"), listenerOptions);\n\t}\n\treturn state;\n}\n//#endregion\n//#region useCached/index.ts\nfunction useCached(refValue, comparator = (newSourceValue, cachedValue) => newSourceValue === cachedValue, options) {\n\tconst { deepRefs = true, ...watchOptions } = options || {};\n\tconst cachedValue = createRef(refValue.value, deepRefs);\n\twatch(() => refValue.value, (value) => {\n\t\tif (!comparator(value, cachedValue.value)) cachedValue.value = value;\n\t}, watchOptions);\n\treturn cachedValue;\n}\n//#endregion\n//#region usePermission/index.ts\n/**\n* Reactive Permissions API.\n*\n* @see https://vueuse.org/usePermission\n*\n* @__NO_SIDE_EFFECTS__\n*/\nfunction usePermission(permissionDesc, options = {}) {\n\tconst { controls = false, navigator = defaultNavigator } = options;\n\tconst isSupported = /* @__PURE__ */ useSupported(() => navigator && \"permissions\" in navigator);\n\tconst permissionStatus = shallowRef();\n\tconst desc = typeof permissionDesc === \"string\" ? { name: permissionDesc } : permissionDesc;\n\tconst state = shallowRef();\n\tconst update = () => {\n\t\tvar _permissionStatus$val, _permissionStatus$val2;\n\t\tstate.value = (_permissionStatus$val = (_permissionStatus$val2 = permissionStatus.value) === null || _permissionStatus$val2 === void 0 ? void 0 : _permissionStatus$val2.state) !== null && _permissionStatus$val !== void 0 ? _permissionStatus$val : \"prompt\";\n\t};\n\tuseEventListener(permissionStatus, \"change\", update, { passive: true });\n\tconst query = createSingletonPromise(async () => {\n\t\tif (!isSupported.value) return;\n\t\tif (!permissionStatus.value) try {\n\t\t\tpermissionStatus.value = await navigator.permissions.query(desc);\n\t\t} catch (_unused) {\n\t\t\tpermissionStatus.value = void 0;\n\t\t} finally {\n\t\t\tupdate();\n\t\t}\n\t\tif (controls) return toRaw(permissionStatus.value);\n\t});\n\tquery();\n\tif (controls) return {\n\t\tstate,\n\t\tisSupported,\n\t\tquery\n\t};\n\telse return state;\n}\n//#endregion\n//#region useClipboard/index.ts\nfunction useClipboard(options = {}) {\n\tconst { navigator = defaultNavigator, read = false, source, copiedDuring = 1500, legacy = false } = options;\n\tconst isClipboardApiSupported = /* @__PURE__ */ useSupported(() => navigator && \"clipboard\" in navigator);\n\tconst permissionRead = usePermission(\"clipboard-read\");\n\tconst permissionWrite = usePermission(\"clipboard-write\");\n\tconst isSupported = computed(() => isClipboardApiSupported.value || legacy);\n\tconst text = shallowRef(\"\");\n\tconst copied = shallowRef(false);\n\tconst copyPending = shallowRef(false);\n\tconst timeout = useTimeoutFn(() => copied.value = false, copiedDuring, { immediate: false });\n\tlet lastLegacyId = 0;\n\tasync function updateText() {\n\t\tlet useLegacy = !(isClipboardApiSupported.value && isAllowed(permissionRead.value));\n\t\tif (!useLegacy) try {\n\t\t\ttext.value = await navigator.clipboard.readText();\n\t\t} catch (_unused) {\n\t\t\tuseLegacy = true;\n\t\t}\n\t\tif (useLegacy) text.value = legacyRead();\n\t}\n\tif (isSupported.value && read) useEventListener([\"copy\", \"cut\"], updateText, { passive: true });\n\tasync function copy(value) {\n\t\tconst resolvedValue = value !== null && value !== void 0 ? value : toValue(source);\n\t\tif (isSupported.value && resolvedValue != null) {\n\t\t\tcopyPending.value = true;\n\t\t\tlet useLegacy = !(isClipboardApiSupported.value && isAllowed(permissionWrite.value));\n\t\t\tif (!useLegacy) try {\n\t\t\t\tconst clipboardItem = createClipboardItem(resolvedValue);\n\t\t\t\tawait navigator.clipboard.write([clipboardItem]);\n\t\t\t} catch (_unused2) {\n\t\t\t\tuseLegacy = true;\n\t\t\t}\n\t\t\tif (useLegacy) if (typeof resolvedValue === \"string\") {\n\t\t\t\ttext.value = resolvedValue;\n\t\t\t\tlegacyCopy(resolvedValue);\n\t\t\t} else {\n\t\t\t\tconst currentId = ++lastLegacyId;\n\t\t\t\tconst resolvedText = await resolvedValue();\n\t\t\t\tif (resolvedText != null && currentId === lastLegacyId) {\n\t\t\t\t\ttext.value = resolvedText;\n\t\t\t\t\tlegacyCopy(resolvedText);\n\t\t\t\t}\n\t\t\t}\n\t\t\tcopied.value = true;\n\t\t\ttimeout.start();\n\t\t\tcopyPending.value = false;\n\t\t}\n\t}\n\tfunction createClipboardItem(value) {\n\t\tif (typeof value === \"string\") {\n\t\t\ttext.value = value;\n\t\t\treturn new ClipboardItem({ \"text/plain\": value });\n\t\t} else return new ClipboardItem({ \"text/plain\": value().then((resolvedText = \"\") => {\n\t\t\ttext.value = resolvedText;\n\t\t\treturn new Blob([resolvedText], { type: \"text/plain\" });\n\t\t}) });\n\t}\n\tfunction legacyCopy(value) {\n\t\tconst ta = document.createElement(\"textarea\");\n\t\tta.value = value;\n\t\tta.style.position = \"absolute\";\n\t\tta.style.opacity = \"0\";\n\t\tta.setAttribute(\"readonly\", \"\");\n\t\tdocument.body.appendChild(ta);\n\t\tta.select();\n\t\tdocument.execCommand(\"copy\");\n\t\tta.remove();\n\t}\n\tfunction legacyRead() {\n\t\tvar _document$getSelectio, _document, _document$getSelectio2;\n\t\treturn (_document$getSelectio = (_document = document) === null || _document === void 0 || (_document$getSelectio2 = _document.getSelection) === null || _document$getSelectio2 === void 0 || (_document$getSelectio2 = _document$getSelectio2.call(_document)) === null || _document$getSelectio2 === void 0 ? void 0 : _document$getSelectio2.toString()) !== null && _document$getSelectio !== void 0 ? _document$getSelectio : \"\";\n\t}\n\tfunction isAllowed(status) {\n\t\treturn status === \"granted\" || status === \"prompt\";\n\t}\n\treturn {\n\t\tcopyPending: shallowReadonly(copyPending),\n\t\tisSupported,\n\t\ttext: shallowReadonly(text),\n\t\tcopied: shallowReadonly(copied),\n\t\tcopy\n\t};\n}\n//#endregion\n//#region useClipboardItems/index.ts\nfunction useClipboardItems(options = {}) {\n\tconst { navigator = defaultNavigator, read = false, source, copiedDuring = 1500 } = options;\n\tconst isSupported = /* @__PURE__ */ useSupported(() => navigator && \"clipboard\" in navigator);\n\tconst content = shallowRef([]);\n\tconst copied = shallowRef(false);\n\tconst timeout = useTimeoutFn(() => copied.value = false, copiedDuring, { immediate: false });\n\tfunction updateContent() {\n\t\tif (isSupported.value) navigator.clipboard.read().then((items) => {\n\t\t\tcontent.value = items;\n\t\t});\n\t}\n\tif (isSupported.value && read) useEventListener([\"copy\", \"cut\"], updateContent, { passive: true });\n\tasync function copy(value = toValue(source)) {\n\t\tif (isSupported.value && value != null) {\n\t\t\tawait navigator.clipboard.write(value);\n\t\t\tcontent.value = value;\n\t\t\tcopied.value = true;\n\t\t\ttimeout.start();\n\t\t}\n\t}\n\treturn {\n\t\tisSupported,\n\t\tcontent: shallowReadonly(content),\n\t\tcopied: shallowReadonly(copied),\n\t\tcopy,\n\t\tread: updateContent\n\t};\n}\n//#endregion\n//#region useCloned/index.ts\nfunction cloneFnJSON(source) {\n\treturn JSON.parse(JSON.stringify(source));\n}\nfunction useCloned(source, options = {}) {\n\tconst cloned = ref({});\n\tconst isModified = shallowRef(false);\n\tlet _lastSync = false;\n\tconst { manual, clone = cloneFnJSON, deep = true, immediate = true } = options;\n\twatch(cloned, () => {\n\t\tif (_lastSync) {\n\t\t\t_lastSync = false;\n\t\t\treturn;\n\t\t}\n\t\tisModified.value = true;\n\t}, {\n\t\tdeep: true,\n\t\tflush: \"sync\"\n\t});\n\tfunction sync() {\n\t\t_lastSync = true;\n\t\tisModified.value = false;\n\t\tcloned.value = clone(toValue(source));\n\t}\n\tif (!manual && (isRef(source) || typeof source === \"function\")) watch(source, sync, {\n\t\t...options,\n\t\tdeep,\n\t\timmediate\n\t});\n\telse sync();\n\treturn {\n\t\tcloned,\n\t\tisModified,\n\t\tsync\n\t};\n}\n//#endregion\n//#region ssr-handlers.ts\nconst _global = typeof globalThis !== \"undefined\" ? globalThis : typeof window !== \"undefined\" ? window : typeof global !== \"undefined\" ? global : typeof self !== \"undefined\" ? self : {};\nconst globalKey = \"__vueuse_ssr_handlers__\";\nconst handlers = /* @__PURE__ */ getHandlers();\nfunction getHandlers() {\n\tif (!(globalKey in _global)) _global[globalKey] = _global[globalKey] || {};\n\treturn _global[globalKey];\n}\nfunction getSSRHandler(key, fallback) {\n\treturn handlers[key] || fallback;\n}\nfunction setSSRHandler(key, fn) {\n\thandlers[key] = fn;\n}\n//#endregion\n//#region usePreferredDark/index.ts\n/**\n* Reactive dark theme preference.\n*\n* @see https://vueuse.org/usePreferredDark\n* @param [options]\n*\n* @__NO_SIDE_EFFECTS__\n*/\nfunction usePreferredDark(options) {\n\treturn useMediaQuery(\"(prefers-color-scheme: dark)\", options);\n}\n//#endregion\n//#region useStorage/guess.ts\nfunction guessSerializerType(rawInit) {\n\treturn rawInit == null ? \"any\" : rawInit instanceof Set ? \"set\" : rawInit instanceof Map ? \"map\" : rawInit instanceof Date ? \"date\" : typeof rawInit === \"boolean\" ? \"boolean\" : typeof rawInit === \"string\" ? \"string\" : typeof rawInit === \"object\" ? \"object\" : !Number.isNaN(rawInit) ? \"number\" : \"any\";\n}\n//#endregion\n//#region useStorage/index.ts\nconst StorageSerializers = {\n\tboolean: {\n\t\tread: (v) => v === \"true\",\n\t\twrite: (v) => String(v)\n\t},\n\tobject: {\n\t\tread: (v) => JSON.parse(v),\n\t\twrite: (v) => JSON.stringify(v)\n\t},\n\tnumber: {\n\t\tread: (v) => Number.parseFloat(v),\n\t\twrite: (v) => String(v)\n\t},\n\tany: {\n\t\tread: (v) => v,\n\t\twrite: (v) => String(v)\n\t},\n\tstring: {\n\t\tread: (v) => v,\n\t\twrite: (v) => String(v)\n\t},\n\tmap: {\n\t\tread: (v) => new Map(JSON.parse(v)),\n\t\twrite: (v) => JSON.stringify(Array.from(v.entries()))\n\t},\n\tset: {\n\t\tread: (v) => new Set(JSON.parse(v)),\n\t\twrite: (v) => JSON.stringify(Array.from(v))\n\t},\n\tdate: {\n\t\tread: (v) => new Date(v),\n\t\twrite: (v) => v.toISOString()\n\t}\n};\nconst customStorageEventName = \"vueuse-storage\";\n/**\n* Reactive LocalStorage/SessionStorage.\n*\n* @see https://vueuse.org/useStorage\n*/\nfunction useStorage(key, defaults, storage, options = {}) {\n\tvar _options$serializer;\n\tconst { flush = \"pre\", deep = true, listenToStorageChanges = true, writeDefaults = true, mergeDefaults = false, shallow, window = defaultWindow, eventFilter, onError = (e) => {\n\t\tconsole.error(e);\n\t}, initOnMounted } = options;\n\tconst data = (shallow ? shallowRef : ref)(typeof defaults === \"function\" ? defaults() : defaults);\n\tconst keyComputed = computed(() => toValue(key));\n\tif (!storage) try {\n\t\tstorage = getSSRHandler(\"getDefaultStorage\", () => defaultWindow === null || defaultWindow === void 0 ? void 0 : defaultWindow.localStorage)();\n\t} catch (e) {\n\t\tonError(e);\n\t}\n\tif (!storage) return data;\n\tconst rawInit = toValue(defaults);\n\tconst type = guessSerializerType(rawInit);\n\tconst serializer = (_options$serializer = options.serializer) !== null && _options$serializer !== void 0 ? _options$serializer : StorageSerializers[type];\n\tconst { pause: pauseWatch, resume: resumeWatch } = watchPausable(data, (newValue) => write(newValue), {\n\t\tflush,\n\t\tdeep,\n\t\teventFilter\n\t});\n\twatch(keyComputed, () => update(), { flush });\n\tlet firstMounted = false;\n\tconst onStorageEvent = (ev) => {\n\t\tif (initOnMounted && !firstMounted) return;\n\t\tupdate(ev);\n\t};\n\tconst onStorageCustomEvent = (ev) => {\n\t\tif (initOnMounted && !firstMounted) return;\n\t\tupdateFromCustomEvent(ev);\n\t};\n\t/**\n\t* The custom event is needed for same-document syncing when using custom\n\t* storage backends, but it doesn't work across different documents.\n\t*\n\t* TODO: Consider implementing a BroadcastChannel-based solution that fixes this.\n\t*/\n\tif (window && listenToStorageChanges) if (storage instanceof Storage) useEventListener(window, \"storage\", onStorageEvent, { passive: true });\n\telse useEventListener(window, customStorageEventName, onStorageCustomEvent);\n\tif (initOnMounted) tryOnMounted(() => {\n\t\tfirstMounted = true;\n\t\tupdate();\n\t});\n\telse update();\n\tfunction dispatchWriteEvent(oldValue, newValue) {\n\t\tif (window) {\n\t\t\tconst payload = {\n\t\t\t\tkey: keyComputed.value,\n\t\t\t\toldValue,\n\t\t\t\tnewValue,\n\t\t\t\tstorageArea: storage\n\t\t\t};\n\t\t\twindow.dispatchEvent(storage instanceof Storage ? new StorageEvent(\"storage\", payload) : new CustomEvent(customStorageEventName, { detail: payload }));\n\t\t}\n\t}\n\tfunction write(v) {\n\t\ttry {\n\t\t\tconst oldValue = storage.getItem(keyComputed.value);\n\t\t\tif (v == null) {\n\t\t\t\tdispatchWriteEvent(oldValue, null);\n\t\t\t\tstorage.removeItem(keyComputed.value);\n\t\t\t} else {\n\t\t\t\tconst serialized = serializer.write(v);\n\t\t\t\tif (oldValue !== serialized) {\n\t\t\t\t\tstorage.setItem(keyComputed.value, serialized);\n\t\t\t\t\tdispatchWriteEvent(oldValue, serialized);\n\t\t\t\t}\n\t\t\t}\n\t\t} catch (e) {\n\t\t\tonError(e);\n\t\t}\n\t}\n\tfunction read(event) {\n\t\tconst rawValue = event ? event.newValue : storage.getItem(keyComputed.value);\n\t\tif (rawValue == null) {\n\t\t\tif (writeDefaults && rawInit != null) storage.setItem(keyComputed.value, serializer.write(rawInit));\n\t\t\treturn rawInit;\n\t\t} else if (!event && mergeDefaults) {\n\t\t\tconst value = serializer.read(rawValue);\n\t\t\tif (typeof mergeDefaults === \"function\") return mergeDefaults(value, rawInit);\n\t\t\telse if (type === \"object\" && !Array.isArray(value)) return {\n\t\t\t\t...rawInit,\n\t\t\t\t...value\n\t\t\t};\n\t\t\treturn value;\n\t\t} else if (typeof rawValue !== \"string\") return rawValue;\n\t\telse return serializer.read(rawValue);\n\t}\n\tfunction update(event) {\n\t\tif (event && event.storageArea !== storage) return;\n\t\tif (event && event.key == null) {\n\t\t\tdata.value = rawInit;\n\t\t\treturn;\n\t\t}\n\t\tif (event && event.key !== keyComputed.value) return;\n\t\tpauseWatch();\n\t\ttry {\n\t\t\tconst serializedData = serializer.write(data.value);\n\t\t\tif (event === void 0 || (event === null || event === void 0 ? void 0 : event.newValue) !== serializedData) data.value = read(event);\n\t\t} catch (e) {\n\t\t\tonError(e);\n\t\t} finally {\n\t\t\tif (event) nextTick(resumeWatch);\n\t\t\telse resumeWatch();\n\t\t}\n\t}\n\tfunction updateFromCustomEvent(event) {\n\t\tupdate(event.detail);\n\t}\n\treturn data;\n}\n//#endregion\n//#region useColorMode/index.ts\nconst CSS_DISABLE_TRANS = \"*,*::before,*::after{-webkit-transition:none!important;-moz-transition:none!important;-o-transition:none!important;-ms-transition:none!important;transition:none!important}\";\n/**\n* Reactive color mode with auto data persistence.\n*\n* @see https://vueuse.org/useColorMode\n* @param options\n*/\nfunction useColorMode(options = {}) {\n\tconst { selector = \"html\", attribute = \"class\", initialValue = \"auto\", window = defaultWindow, storage, storageKey = \"vueuse-color-scheme\", listenToStorageChanges = true, storageRef, emitAuto, disableTransition = true } = options;\n\tconst modes = {\n\t\tauto: \"\",\n\t\tlight: \"light\",\n\t\tdark: \"dark\",\n\t\t...options.modes || {}\n\t};\n\tconst preferredDark = usePreferredDark({ window });\n\tconst system = computed(() => preferredDark.value ? \"dark\" : \"light\");\n\tconst store = storageRef || (storageKey == null ? toRef(initialValue) : useStorage(storageKey, initialValue, storage, {\n\t\twindow,\n\t\tlistenToStorageChanges\n\t}));\n\tconst state = computed(() => store.value === \"auto\" ? system.value : store.value);\n\tconst updateHTMLAttrs = getSSRHandler(\"updateHTMLAttrs\", (selector, attribute, value) => {\n\t\tconst el = typeof selector === \"string\" ? window === null || window === void 0 ? void 0 : window.document.querySelector(selector) : unrefElement(selector);\n\t\tif (!el) return;\n\t\tconst classesToAdd = /* @__PURE__ */ new Set();\n\t\tconst classesToRemove = /* @__PURE__ */ new Set();\n\t\tlet attributeToChange = null;\n\t\tif (attribute === \"class\") {\n\t\t\tconst current = value.split(/\\s/g);\n\t\t\tObject.values(modes).flatMap((i) => (i || \"\").split(/\\s/g)).filter(Boolean).forEach((v) => {\n\t\t\t\tif (current.includes(v)) classesToAdd.add(v);\n\t\t\t\telse classesToRemove.add(v);\n\t\t\t});\n\t\t} else attributeToChange = {\n\t\t\tkey: attribute,\n\t\t\tvalue\n\t\t};\n\t\tif (classesToAdd.size === 0 && classesToRemove.size === 0 && attributeToChange === null) return;\n\t\tlet style;\n\t\tif (disableTransition) {\n\t\t\tstyle = window.document.createElement(\"style\");\n\t\t\tstyle.appendChild(document.createTextNode(CSS_DISABLE_TRANS));\n\t\t\twindow.document.head.appendChild(style);\n\t\t}\n\t\tfor (const c of classesToAdd) el.classList.add(c);\n\t\tfor (const c of classesToRemove) el.classList.remove(c);\n\t\tif (attributeToChange) el.setAttribute(attributeToChange.key, attributeToChange.value);\n\t\tif (disableTransition) {\n\t\t\twindow.getComputedStyle(style).opacity;\n\t\t\tdocument.head.removeChild(style);\n\t\t}\n\t});\n\tfunction defaultOnChanged(mode) {\n\t\tvar _modes$mode;\n\t\tupdateHTMLAttrs(selector, attribute, (_modes$mode = modes[mode]) !== null && _modes$mode !== void 0 ? _modes$mode : mode);\n\t}\n\tfunction onChanged(mode) {\n\t\tif (options.onChanged) options.onChanged(mode, defaultOnChanged);\n\t\telse defaultOnChanged(mode);\n\t}\n\twatch(state, onChanged, {\n\t\tflush: \"post\",\n\t\timmediate: true\n\t});\n\ttryOnMounted(() => onChanged(state.value));\n\tconst auto = computed({\n\t\tget() {\n\t\t\treturn emitAuto ? store.value : state.value;\n\t\t},\n\t\tset(v) {\n\t\t\tstore.value = v;\n\t\t}\n\t});\n\treturn Object.assign(auto, {\n\t\tstore,\n\t\tsystem,\n\t\tstate\n\t});\n}\n//#endregion\n//#region useConfirmDialog/index.ts\n/**\n* Hooks for creating confirm dialogs. Useful for modal windows, popups and logins.\n*\n* @see https://vueuse.org/useConfirmDialog/\n* @param revealed `boolean` `ref` that handles a modal window\n*\n* @__NO_SIDE_EFFECTS__\n*/\nfunction useConfirmDialog(revealed = shallowRef(false)) {\n\tconst confirmHook = createEventHook();\n\tconst cancelHook = createEventHook();\n\tconst revealHook = createEventHook();\n\tlet _resolve = noop;\n\tconst reveal = (data) => {\n\t\trevealHook.trigger(data);\n\t\trevealed.value = true;\n\t\treturn new Promise((resolve) => {\n\t\t\t_resolve = resolve;\n\t\t});\n\t};\n\tconst confirm = (data) => {\n\t\trevealed.value = false;\n\t\tconfirmHook.trigger(data);\n\t\t_resolve({\n\t\t\tdata,\n\t\t\tisCanceled: false\n\t\t});\n\t};\n\tconst cancel = (data) => {\n\t\trevealed.value = false;\n\t\tcancelHook.trigger(data);\n\t\t_resolve({\n\t\t\tdata,\n\t\t\tisCanceled: true\n\t\t});\n\t};\n\treturn {\n\t\tisRevealed: computed(() => revealed.value),\n\t\treveal,\n\t\tconfirm,\n\t\tcancel,\n\t\tonReveal: revealHook.on,\n\t\tonConfirm: confirmHook.on,\n\t\tonCancel: cancelHook.on\n\t};\n}\n//#endregion\n//#region useCountdown/index.ts\nfunction getDefaultScheduler$8(options) {\n\tif (\"interval\" in options || \"immediate\" in options) {\n\t\tconst { interval = 1e3, immediate = false } = options;\n\t\treturn (cb) => useIntervalFn(cb, interval, { immediate });\n\t}\n\treturn (cb) => useIntervalFn(cb, 1e3, { immediate: false });\n}\n/**\n* Reactive countdown timer in seconds.\n*\n* @param initialCountdown\n* @param options\n*\n* @see https://vueuse.org/useCountdown\n*/\nfunction useCountdown(initialCountdown, options = {}) {\n\tconst remaining = shallowRef(toValue(initialCountdown));\n\tconst { scheduler = getDefaultScheduler$8(options), onTick, onComplete } = options;\n\tconst controls = scheduler(() => {\n\t\tconst value = remaining.value - 1;\n\t\tremaining.value = value < 0 ? 0 : value;\n\t\tonTick === null || onTick === void 0 || onTick();\n\t\tif (remaining.value <= 0) {\n\t\t\tcontrols.pause();\n\t\t\tonComplete === null || onComplete === void 0 || onComplete();\n\t\t}\n\t});\n\tconst reset = (countdown) => {\n\t\tvar _toValue;\n\t\tremaining.value = (_toValue = toValue(countdown)) !== null && _toValue !== void 0 ? _toValue : toValue(initialCountdown);\n\t};\n\tconst stop = () => {\n\t\tcontrols.pause();\n\t\treset();\n\t};\n\tconst resume = () => {\n\t\tif (!controls.isActive.value) {\n\t\t\tif (remaining.value > 0) controls.resume();\n\t\t}\n\t};\n\tconst start = (countdown) => {\n\t\treset(countdown);\n\t\tcontrols.resume();\n\t};\n\treturn {\n\t\tremaining,\n\t\treset,\n\t\tstop,\n\t\tstart,\n\t\tpause: controls.pause,\n\t\tresume,\n\t\tisActive: controls.isActive\n\t};\n}\n//#endregion\n//#region useCssSupports/index.ts\nfunction useCssSupports(...args) {\n\tlet options = {};\n\tif (typeof toValue(args.at(-1)) === \"object\") options = args.pop();\n\tconst [prop, value] = args;\n\tconst { window = defaultWindow, ssrValue = false } = options;\n\tconst isMounted = useMounted();\n\treturn { isSupported: computed(() => {\n\t\tif (!isClient || !isMounted.value) return ssrValue;\n\t\treturn args.length === 2 ? window === null || window === void 0 ? void 0 : window.CSS.supports(toValue(prop), toValue(value)) : window === null || window === void 0 ? void 0 : window.CSS.supports(toValue(prop));\n\t}) };\n}\n//#endregion\n//#region useCssVar/index.ts\n/**\n* Manipulate CSS variables.\n*\n* @see https://vueuse.org/useCssVar\n* @param prop\n* @param target\n* @param options\n*/\nfunction useCssVar(prop, target, options = {}) {\n\tconst { window = defaultWindow, initialValue, observe = false } = options;\n\tconst variable = shallowRef(initialValue);\n\tconst elRef = computed(() => {\n\t\tvar _window$document;\n\t\treturn unrefElement(target) || (window === null || window === void 0 || (_window$document = window.document) === null || _window$document === void 0 ? void 0 : _window$document.documentElement);\n\t});\n\tfunction updateCssVar() {\n\t\tconst key = toValue(prop);\n\t\tconst el = toValue(elRef);\n\t\tif (el && window && key) {\n\t\t\tvar _window$getComputedSt;\n\t\t\tvariable.value = ((_window$getComputedSt = window.getComputedStyle(el).getPropertyValue(key)) === null || _window$getComputedSt === void 0 ? void 0 : _window$getComputedSt.trim()) || variable.value || initialValue;\n\t\t}\n\t}\n\tif (observe) useMutationObserver(elRef, updateCssVar, {\n\t\tattributeFilter: [\"style\", \"class\"],\n\t\twindow\n\t});\n\twatch([elRef, () => toValue(prop)], (_, old) => {\n\t\tif (old[0] && old[1]) old[0].style.removeProperty(old[1]);\n\t\tupdateCssVar();\n\t}, { immediate: true });\n\twatch([variable, elRef], ([val, el]) => {\n\t\tconst raw_prop = toValue(prop);\n\t\tif ((el === null || el === void 0 ? void 0 : el.style) && raw_prop) if (val == null) el.style.removeProperty(raw_prop);\n\t\telse el.style.setProperty(raw_prop, val);\n\t}, { immediate: true });\n\treturn variable;\n}\n//#endregion\n//#region useCurrentElement/index.ts\nfunction useCurrentElement(rootComponent) {\n\tconst vm = getCurrentInstance();\n\tconst currentElement = computedWithControl(() => null, () => rootComponent ? unrefElement(rootComponent) : vm.proxy.$el);\n\tonUpdated(currentElement.trigger);\n\tonMounted(currentElement.trigger);\n\treturn currentElement;\n}\n//#endregion\n//#region useCycleList/index.ts\n/**\n* Cycle through a list of items\n*\n* @see https://vueuse.org/useCycleList\n*/\nfunction useCycleList(list, options) {\n\tconst state = shallowRef(getInitialValue());\n\tconst listRef = toRef(list);\n\tconst index = computed({\n\t\tget() {\n\t\t\tvar _options$fallbackInde;\n\t\t\tconst targetList = listRef.value;\n\t\t\tlet index = (options === null || options === void 0 ? void 0 : options.getIndexOf) ? options.getIndexOf(state.value, targetList) : targetList.indexOf(state.value);\n\t\t\tif (index < 0) index = (_options$fallbackInde = options === null || options === void 0 ? void 0 : options.fallbackIndex) !== null && _options$fallbackInde !== void 0 ? _options$fallbackInde : 0;\n\t\t\treturn index;\n\t\t},\n\t\tset(v) {\n\t\t\tset(v);\n\t\t}\n\t});\n\tfunction set(i) {\n\t\tconst targetList = listRef.value;\n\t\tconst length = targetList.length;\n\t\tconst value = targetList[(i % length + length) % length];\n\t\tstate.value = value;\n\t\treturn value;\n\t}\n\tfunction shift(delta = 1) {\n\t\treturn set(index.value + delta);\n\t}\n\tfunction next(n = 1) {\n\t\treturn shift(n);\n\t}\n\tfunction prev(n = 1) {\n\t\treturn shift(-n);\n\t}\n\tfunction getInitialValue() {\n\t\tvar _toValue, _options$initialValue;\n\t\treturn (_toValue = toValue((_options$initialValue = options === null || options === void 0 ? void 0 : options.initialValue) !== null && _options$initialValue !== void 0 ? _options$initialValue : toValue(list)[0])) !== null && _toValue !== void 0 ? _toValue : void 0;\n\t}\n\twatch(listRef, () => set(index.value));\n\treturn {\n\t\tstate,\n\t\tindex,\n\t\tnext,\n\t\tprev,\n\t\tgo: set\n\t};\n}\n//#endregion\n//#region useDark/index.ts\n/**\n* Reactive dark mode with auto data persistence.\n*\n* @see https://vueuse.org/useDark\n* @param options\n*/\nfunction useDark(options = {}) {\n\tconst { valueDark = \"dark\", valueLight = \"\" } = options;\n\tconst mode = useColorMode({\n\t\t...options,\n\t\tonChanged: (mode, defaultHandler) => {\n\t\t\tvar _options$onChanged;\n\t\t\tif (options.onChanged) (_options$onChanged = options.onChanged) === null || _options$onChanged === void 0 || _options$onChanged.call(options, mode === \"dark\", defaultHandler, mode);\n\t\t\telse defaultHandler(mode);\n\t\t},\n\t\tmodes: {\n\t\t\tdark: valueDark,\n\t\t\tlight: valueLight\n\t\t}\n\t});\n\tconst system = computed(() => mode.system.value);\n\treturn computed({\n\t\tget() {\n\t\t\treturn mode.value === \"dark\";\n\t\t},\n\t\tset(v) {\n\t\t\tconst modeVal = v ? \"dark\" : \"light\";\n\t\t\tif (system.value === modeVal) mode.value = \"auto\";\n\t\t\telse mode.value = modeVal;\n\t\t}\n\t});\n}\n//#endregion\n//#region useManualRefHistory/index.ts\nfunction fnBypass(v) {\n\treturn v;\n}\nfunction fnSetSource(source, value) {\n\treturn source.value = value;\n}\nfunction defaultDump(clone) {\n\treturn clone ? typeof clone === \"function\" ? clone : cloneFnJSON : fnBypass;\n}\nfunction defaultParse(clone) {\n\treturn clone ? typeof clone === \"function\" ? clone : cloneFnJSON : fnBypass;\n}\n/**\n* Track the change history of a ref, also provides undo and redo functionality.\n*\n* @see https://vueuse.org/useManualRefHistory\n* @param source\n* @param options\n*/\nfunction useManualRefHistory(source, options = {}) {\n\tconst { clone = false, dump = defaultDump(clone), parse = defaultParse(clone), setSource = fnSetSource } = options;\n\tfunction _createHistoryRecord() {\n\t\treturn markRaw({\n\t\t\tsnapshot: dump(source.value),\n\t\t\ttimestamp: timestamp()\n\t\t});\n\t}\n\tconst last = ref(_createHistoryRecord());\n\tconst undoStack = ref([]);\n\tconst redoStack = ref([]);\n\tconst _setSource = (record) => {\n\t\tsetSource(source, parse(record.snapshot));\n\t\tlast.value = record;\n\t};\n\tconst commit = () => {\n\t\tundoStack.value.unshift(last.value);\n\t\tlast.value = _createHistoryRecord();\n\t\tif (options.capacity && undoStack.value.length > options.capacity) undoStack.value.splice(options.capacity, Number.POSITIVE_INFINITY);\n\t\tif (redoStack.value.length) redoStack.value.splice(0, redoStack.value.length);\n\t};\n\tconst clear = () => {\n\t\tundoStack.value.splice(0, undoStack.value.length);\n\t\tredoStack.value.splice(0, redoStack.value.length);\n\t};\n\tconst undo = () => {\n\t\tconst state = undoStack.value.shift();\n\t\tif (state) {\n\t\t\tredoStack.value.unshift(last.value);\n\t\t\t_setSource(state);\n\t\t}\n\t};\n\tconst redo = () => {\n\t\tconst state = redoStack.value.shift();\n\t\tif (state) {\n\t\t\tundoStack.value.unshift(last.value);\n\t\t\t_setSource(state);\n\t\t}\n\t};\n\tconst reset = () => {\n\t\t_setSource(last.value);\n\t};\n\treturn {\n\t\tsource,\n\t\tundoStack,\n\t\tredoStack,\n\t\tlast,\n\t\thistory: computed(() => [last.value, ...undoStack.value]),\n\t\tcanUndo: computed(() => undoStack.value.length > 0),\n\t\tcanRedo: computed(() => redoStack.value.length > 0),\n\t\tclear,\n\t\tcommit,\n\t\treset,\n\t\tundo,\n\t\tredo\n\t};\n}\n//#endregion\n//#region useRefHistory/index.ts\n/**\n* Track the change history of a ref, also provides undo and redo functionality.\n*\n* @see https://vueuse.org/useRefHistory\n* @param source\n* @param options\n*/\nfunction useRefHistory(source, options = {}) {\n\tconst { deep = false, flush = \"pre\", eventFilter, shouldCommit = () => true } = options;\n\tconst { eventFilter: composedFilter, pause, resume: resumeTracking, isActive: isTracking } = pausableFilter(eventFilter);\n\tlet lastRawValue = source.value;\n\tconst { ignoreUpdates, ignorePrevAsyncUpdates, stop } = watchIgnorable(source, commit, {\n\t\tdeep,\n\t\tflush,\n\t\teventFilter: composedFilter\n\t});\n\tfunction setSource(source, value) {\n\t\tignorePrevAsyncUpdates();\n\t\tignoreUpdates(() => {\n\t\t\tsource.value = value;\n\t\t\tlastRawValue = value;\n\t\t});\n\t}\n\tconst manualHistory = useManualRefHistory(source, {\n\t\t...options,\n\t\tclone: options.clone || deep,\n\t\tsetSource\n\t});\n\tconst { clear, commit: manualCommit } = manualHistory;\n\tfunction commit() {\n\t\tignorePrevAsyncUpdates();\n\t\tif (!shouldCommit(lastRawValue, source.value)) return;\n\t\tlastRawValue = source.value;\n\t\tmanualCommit();\n\t}\n\tfunction resume(commitNow) {\n\t\tresumeTracking();\n\t\tif (commitNow) commit();\n\t}\n\tfunction batch(fn) {\n\t\tlet canceled = false;\n\t\tconst cancel = () => canceled = true;\n\t\tignoreUpdates(() => {\n\t\t\tfn(cancel);\n\t\t});\n\t\tif (!canceled) commit();\n\t}\n\tfunction dispose() {\n\t\tstop();\n\t\tclear();\n\t}\n\treturn {\n\t\t...manualHistory,\n\t\tisTracking,\n\t\tpause,\n\t\tresume,\n\t\tcommit,\n\t\tbatch,\n\t\tdispose\n\t};\n}\n//#endregion\n//#region useDebouncedRefHistory/index.ts\n/**\n* Shorthand for [useRefHistory](https://vueuse.org/useRefHistory) with debounce filter.\n*\n* @see https://vueuse.org/useDebouncedRefHistory\n* @param source\n* @param options\n*/\nfunction useDebouncedRefHistory(source, options = {}) {\n\tconst filter = options.debounce ? debounceFilter(options.debounce) : void 0;\n\treturn { ...useRefHistory(source, {\n\t\t...options,\n\t\teventFilter: filter\n\t}) };\n}\n//#endregion\n//#region useDeviceMotion/index.ts\n/**\n* Reactive DeviceMotionEvent.\n*\n* @see https://vueuse.org/useDeviceMotion\n* @param options\n*/\nfunction useDeviceMotion(options = {}) {\n\tconst { window = defaultWindow, requestPermissions = false, eventFilter = bypassFilter } = options;\n\tconst isSupported = /* @__PURE__ */ useSupported(() => typeof DeviceMotionEvent !== \"undefined\");\n\tconst requirePermissions = /* @__PURE__ */ useSupported(() => isSupported.value && \"requestPermission\" in DeviceMotionEvent && typeof DeviceMotionEvent.requestPermission === \"function\");\n\tconst permissionGranted = shallowRef(false);\n\tconst acceleration = ref({\n\t\tx: null,\n\t\ty: null,\n\t\tz: null\n\t});\n\tconst rotationRate = ref({\n\t\talpha: null,\n\t\tbeta: null,\n\t\tgamma: null\n\t});\n\tconst interval = shallowRef(0);\n\tconst accelerationIncludingGravity = ref({\n\t\tx: null,\n\t\ty: null,\n\t\tz: null\n\t});\n\tfunction init() {\n\t\tif (window) useEventListener(window, \"devicemotion\", createFilterWrapper(eventFilter, (event) => {\n\t\t\tvar _event$acceleration, _event$acceleration2, _event$acceleration3, _event$accelerationIn, _event$accelerationIn2, _event$accelerationIn3, _event$rotationRate, _event$rotationRate2, _event$rotationRate3;\n\t\t\tacceleration.value = {\n\t\t\t\tx: ((_event$acceleration = event.acceleration) === null || _event$acceleration === void 0 ? void 0 : _event$acceleration.x) || null,\n\t\t\t\ty: ((_event$acceleration2 = event.acceleration) === null || _event$acceleration2 === void 0 ? void 0 : _event$acceleration2.y) || null,\n\t\t\t\tz: ((_event$acceleration3 = event.acceleration) === null || _event$acceleration3 === void 0 ? void 0 : _event$acceleration3.z) || null\n\t\t\t};\n\t\t\taccelerationIncludingGravity.value = {\n\t\t\t\tx: ((_event$accelerationIn = event.accelerationIncludingGravity) === null || _event$accelerationIn === void 0 ? void 0 : _event$accelerationIn.x) || null,\n\t\t\t\ty: ((_event$accelerationIn2 = event.accelerationIncludingGravity) === null || _event$accelerationIn2 === void 0 ? void 0 : _event$accelerationIn2.y) || null,\n\t\t\t\tz: ((_event$accelerationIn3 = event.accelerationIncludingGravity) === null || _event$accelerationIn3 === void 0 ? void 0 : _event$accelerationIn3.z) || null\n\t\t\t};\n\t\t\trotationRate.value = {\n\t\t\t\talpha: ((_event$rotationRate = event.rotationRate) === null || _event$rotationRate === void 0 ? void 0 : _event$rotationRate.alpha) || null,\n\t\t\t\tbeta: ((_event$rotationRate2 = event.rotationRate) === null || _event$rotationRate2 === void 0 ? void 0 : _event$rotationRate2.beta) || null,\n\t\t\t\tgamma: ((_event$rotationRate3 = event.rotationRate) === null || _event$rotationRate3 === void 0 ? void 0 : _event$rotationRate3.gamma) || null\n\t\t\t};\n\t\t\tinterval.value = event.interval;\n\t\t}), { passive: true });\n\t}\n\tconst ensurePermissions = async () => {\n\t\tif (!requirePermissions.value) permissionGranted.value = true;\n\t\tif (permissionGranted.value) return;\n\t\tif (requirePermissions.value) {\n\t\t\tconst requestPermission = DeviceMotionEvent.requestPermission;\n\t\t\ttry {\n\t\t\t\tif (await requestPermission() === \"granted\") {\n\t\t\t\t\tpermissionGranted.value = true;\n\t\t\t\t\tinit();\n\t\t\t\t}\n\t\t\t} catch (error) {\n\t\t\t\tconsole.error(error);\n\t\t\t}\n\t\t}\n\t};\n\tif (isSupported.value) if (requestPermissions && requirePermissions.value) ensurePermissions().then(() => init());\n\telse init();\n\treturn {\n\t\tacceleration,\n\t\taccelerationIncludingGravity,\n\t\trotationRate,\n\t\tinterval,\n\t\tisSupported,\n\t\trequirePermissions,\n\t\tensurePermissions,\n\t\tpermissionGranted\n\t};\n}\n//#endregion\n//#region useDeviceOrientation/index.ts\n/**\n* Reactive DeviceOrientationEvent.\n*\n* @see https://vueuse.org/useDeviceOrientation\n* @param options\n*\n* @__NO_SIDE_EFFECTS__\n*/\nfunction useDeviceOrientation(options = {}) {\n\tconst { window = defaultWindow } = options;\n\tconst isSupported = /* @__PURE__ */ useSupported(() => window && \"DeviceOrientationEvent\" in window);\n\tconst isAbsolute = shallowRef(false);\n\tconst alpha = shallowRef(null);\n\tconst beta = shallowRef(null);\n\tconst gamma = shallowRef(null);\n\tif (window && isSupported.value) useEventListener(window, \"deviceorientation\", (event) => {\n\t\tisAbsolute.value = event.absolute;\n\t\talpha.value = event.alpha;\n\t\tbeta.value = event.beta;\n\t\tgamma.value = event.gamma;\n\t}, { passive: true });\n\treturn {\n\t\tisSupported,\n\t\tisAbsolute,\n\t\talpha,\n\t\tbeta,\n\t\tgamma\n\t};\n}\n//#endregion\n//#region useDevicePixelRatio/index.ts\n/**\n* Reactively track `window.devicePixelRatio`.\n*\n* @see https://vueuse.org/useDevicePixelRatio\n*\n* @__NO_SIDE_EFFECTS__\n*/\nfunction useDevicePixelRatio(options = {}) {\n\tconst { window = defaultWindow } = options;\n\tconst pixelRatio = shallowRef(1);\n\tconst query = useMediaQuery(() => `(resolution: ${pixelRatio.value}dppx)`, options);\n\tlet stop = noop;\n\tif (window) stop = watchImmediate(query, () => pixelRatio.value = window.devicePixelRatio);\n\treturn {\n\t\tpixelRatio: shallowReadonly(pixelRatio),\n\t\tstop\n\t};\n}\n//#endregion\n//#region useDevicesList/index.ts\n/**\n* Reactive `enumerateDevices` listing available input/output devices\n*\n* @see https://vueuse.org/useDevicesList\n* @param options\n*/\nfunction useDevicesList(options = {}) {\n\tconst { navigator = defaultNavigator, requestPermissions = false, constraints = {\n\t\taudio: true,\n\t\tvideo: true\n\t}, onUpdated } = options;\n\tconst devices = shallowRef([]);\n\tconst videoInputs = computed(() => devices.value.filter((i) => i.kind === \"videoinput\"));\n\tconst audioInputs = computed(() => devices.value.filter((i) => i.kind === \"audioinput\"));\n\tconst audioOutputs = computed(() => devices.value.filter((i) => i.kind === \"audiooutput\"));\n\tconst isSupported = /* @__PURE__ */ useSupported(() => navigator && navigator.mediaDevices && navigator.mediaDevices.enumerateDevices);\n\tconst permissionGranted = shallowRef(false);\n\tlet stream;\n\tasync function update() {\n\t\tif (!isSupported.value) return;\n\t\tdevices.value = await navigator.mediaDevices.enumerateDevices();\n\t\tonUpdated === null || onUpdated === void 0 || onUpdated(devices.value);\n\t\tif (stream) {\n\t\t\tstream.getTracks().forEach((t) => t.stop());\n\t\t\tstream = null;\n\t\t}\n\t}\n\tasync function ensurePermissions() {\n\t\tconst deviceName = constraints.video ? \"camera\" : \"microphone\";\n\t\tif (!isSupported.value) return false;\n\t\tif (permissionGranted.value) return true;\n\t\tconst { state, query } = usePermission(deviceName, { controls: true });\n\t\tawait query();\n\t\tif (state.value !== \"granted\") {\n\t\t\tlet granted = true;\n\t\t\ttry {\n\t\t\t\tconst allDevices = await navigator.mediaDevices.enumerateDevices();\n\t\t\t\tconst hasCamera = allDevices.some((device) => device.kind === \"videoinput\");\n\t\t\t\tconst hasMicrophone = allDevices.some((device) => device.kind === \"audioinput\" || device.kind === \"audiooutput\");\n\t\t\t\tconstraints.video = hasCamera ? constraints.video : false;\n\t\t\t\tconstraints.audio = hasMicrophone ? constraints.audio : false;\n\t\t\t\tstream = await navigator.mediaDevices.getUserMedia(constraints);\n\t\t\t} catch (_unused) {\n\t\t\t\tstream = null;\n\t\t\t\tgranted = false;\n\t\t\t}\n\t\t\tupdate();\n\t\t\tpermissionGranted.value = granted;\n\t\t} else permissionGranted.value = true;\n\t\treturn permissionGranted.value;\n\t}\n\tif (isSupported.value) {\n\t\tif (requestPermissions) ensurePermissions();\n\t\tuseEventListener(navigator.mediaDevices, \"devicechange\", update, { passive: true });\n\t\tupdate();\n\t}\n\treturn {\n\t\tdevices,\n\t\tensurePermissions,\n\t\tpermissionGranted,\n\t\tvideoInputs,\n\t\taudioInputs,\n\t\taudioOutputs,\n\t\tisSupported\n\t};\n}\n//#endregion\n//#region useDisplayMedia/index.ts\n/**\n* Reactive `mediaDevices.getDisplayMedia` streaming\n*\n* @see https://vueuse.org/useDisplayMedia\n* @param options\n*/\nfunction useDisplayMedia(options = {}) {\n\tvar _options$enabled;\n\tconst enabled = shallowRef((_options$enabled = options.enabled) !== null && _options$enabled !== void 0 ? _options$enabled : false);\n\tconst video = options.video;\n\tconst audio = options.audio;\n\tconst { navigator = defaultNavigator } = options;\n\tconst isSupported = /* @__PURE__ */ useSupported(() => {\n\t\tvar _navigator$mediaDevic;\n\t\treturn navigator === null || navigator === void 0 || (_navigator$mediaDevic = navigator.mediaDevices) === null || _navigator$mediaDevic === void 0 ? void 0 : _navigator$mediaDevic.getDisplayMedia;\n\t});\n\tconst constraint = {\n\t\taudio,\n\t\tvideo\n\t};\n\tconst stream = shallowRef();\n\tasync function _start() {\n\t\tvar _stream$value;\n\t\tif (!isSupported.value || stream.value) return;\n\t\tstream.value = await navigator.mediaDevices.getDisplayMedia(constraint);\n\t\t(_stream$value = stream.value) === null || _stream$value === void 0 || _stream$value.getTracks().forEach((t) => useEventListener(t, \"ended\", stop, { passive: true }));\n\t\treturn stream.value;\n\t}\n\tasync function _stop() {\n\t\tvar _stream$value2;\n\t\t(_stream$value2 = stream.value) === null || _stream$value2 === void 0 || _stream$value2.getTracks().forEach((t) => t.stop());\n\t\tstream.value = void 0;\n\t}\n\tfunction stop() {\n\t\t_stop();\n\t\tenabled.value = false;\n\t}\n\tasync function start() {\n\t\tawait _start();\n\t\tif (stream.value) enabled.value = true;\n\t\treturn stream.value;\n\t}\n\twatch(enabled, (v) => {\n\t\tif (v) _start();\n\t\telse _stop();\n\t}, { immediate: true });\n\treturn {\n\t\tisSupported,\n\t\tstream,\n\t\tstart,\n\t\tstop,\n\t\tenabled\n\t};\n}\n//#endregion\n//#region useDocumentVisibility/index.ts\n/**\n* Reactively track `document.visibilityState`.\n*\n* @see https://vueuse.org/useDocumentVisibility\n*\n* @__NO_SIDE_EFFECTS__\n*/\nfunction useDocumentVisibility(options = {}) {\n\tconst { document = defaultDocument } = options;\n\tif (!document) return shallowRef(\"visible\");\n\tconst visibility = shallowRef(document.visibilityState);\n\tuseEventListener(document, \"visibilitychange\", () => {\n\t\tvisibility.value = document.visibilityState;\n\t}, { passive: true });\n\treturn visibility;\n}\n//#endregion\n//#region useDraggable/index.ts\nconst defaultScrollConfig = {\n\tspeed: 2,\n\tmargin: 30,\n\tdirection: \"both\"\n};\nfunction clampContainerScroll(container) {\n\tif (container.scrollLeft > container.scrollWidth - container.clientWidth) container.scrollLeft = Math.max(0, container.scrollWidth - container.clientWidth);\n\tif (container.scrollTop > container.scrollHeight - container.clientHeight) container.scrollTop = Math.max(0, container.scrollHeight - container.clientHeight);\n}\n/**\n* Make elements draggable.\n*\n* @see https://vueuse.org/useDraggable\n* @param target\n* @param options\n*/\nfunction useDraggable(target, options = {}) {\n\tvar _toValue, _toValue2, _toValue3, _scrollConfig$directi;\n\tconst { pointerTypes, preventDefault, stopPropagation, exact, onMove, onEnd, onStart, initialValue, axis = \"both\", draggingElement = defaultWindow, containerElement, handle: draggingHandle = target, buttons = [0], restrictInView, autoScroll = false } = options;\n\tconst position = ref((_toValue = toValue(initialValue)) !== null && _toValue !== void 0 ? _toValue : {\n\t\tx: 0,\n\t\ty: 0\n\t});\n\tconst pressedDelta = ref();\n\tconst filterEvent = (e) => {\n\t\tif (pointerTypes) return pointerTypes.includes(e.pointerType);\n\t\treturn true;\n\t};\n\tconst handleEvent = (e) => {\n\t\tif (toValue(preventDefault)) e.preventDefault();\n\t\tif (toValue(stopPropagation)) e.stopPropagation();\n\t};\n\tconst scrollConfig = toValue(autoScroll);\n\tconst scrollSettings = typeof scrollConfig === \"object\" ? {\n\t\tspeed: (_toValue2 = toValue(scrollConfig.speed)) !== null && _toValue2 !== void 0 ? _toValue2 : defaultScrollConfig.speed,\n\t\tmargin: (_toValue3 = toValue(scrollConfig.margin)) !== null && _toValue3 !== void 0 ? _toValue3 : defaultScrollConfig.margin,\n\t\tdirection: (_scrollConfig$directi = scrollConfig.direction) !== null && _scrollConfig$directi !== void 0 ? _scrollConfig$directi : defaultScrollConfig.direction\n\t} : defaultScrollConfig;\n\tconst getScrollAxisValues = (value) => typeof value === \"number\" ? [value, value] : [value.x, value.y];\n\tconst handleAutoScroll = (container, targetRect, position) => {\n\t\tconst { clientWidth, clientHeight, scrollLeft, scrollTop, scrollWidth, scrollHeight } = container;\n\t\tconst [marginX, marginY] = getScrollAxisValues(scrollSettings.margin);\n\t\tconst [speedX, speedY] = getScrollAxisValues(scrollSettings.speed);\n\t\tlet deltaX = 0;\n\t\tlet deltaY = 0;\n\t\tif (scrollSettings.direction === \"x\" || scrollSettings.direction === \"both\") {\n\t\t\tif (position.x < marginX && scrollLeft > 0) deltaX = -speedX;\n\t\t\telse if (position.x + targetRect.width > clientWidth - marginX && scrollLeft < scrollWidth - clientWidth) deltaX = speedX;\n\t\t}\n\t\tif (scrollSettings.direction === \"y\" || scrollSettings.direction === \"both\") {\n\t\t\tif (position.y < marginY && scrollTop > 0) deltaY = -speedY;\n\t\t\telse if (position.y + targetRect.height > clientHeight - marginY && scrollTop < scrollHeight - clientHeight) deltaY = speedY;\n\t\t}\n\t\tif (deltaX || deltaY) container.scrollBy({\n\t\t\tleft: deltaX,\n\t\t\ttop: deltaY,\n\t\t\tbehavior: \"auto\"\n\t\t});\n\t};\n\tlet autoScrollInterval = null;\n\tconst startAutoScroll = () => {\n\t\tconst container = toValue(containerElement);\n\t\tif (container && !autoScrollInterval) autoScrollInterval = setInterval(() => {\n\t\t\tconst targetRect = toValue(target).getBoundingClientRect();\n\t\t\tconst { x, y } = position.value;\n\t\t\tconst relativePosition = {\n\t\t\t\tx: x - container.scrollLeft,\n\t\t\t\ty: y - container.scrollTop\n\t\t\t};\n\t\t\tif (relativePosition.x >= 0 && relativePosition.y >= 0) {\n\t\t\t\thandleAutoScroll(container, targetRect, relativePosition);\n\t\t\t\trelativePosition.x += container.scrollLeft;\n\t\t\t\trelativePosition.y += container.scrollTop;\n\t\t\t\tposition.value = relativePosition;\n\t\t\t}\n\t\t}, 1e3 / 60);\n\t};\n\tconst stopAutoScroll = () => {\n\t\tif (autoScrollInterval) {\n\t\t\tclearInterval(autoScrollInterval);\n\t\t\tautoScrollInterval = null;\n\t\t}\n\t};\n\tconst isPointerNearEdge = (pointer, container, margin, targetRect) => {\n\t\tconst [marginX, marginY] = typeof margin === \"number\" ? [margin, margin] : [margin.x, margin.y];\n\t\tconst { clientWidth, clientHeight } = container;\n\t\treturn pointer.x < marginX || pointer.x + targetRect.width > clientWidth - marginX || pointer.y < marginY || pointer.y + targetRect.height > clientHeight - marginY;\n\t};\n\tconst checkAutoScroll = () => {\n\t\tif (toValue(options.disabled) || !pressedDelta.value) return;\n\t\tconst container = toValue(containerElement);\n\t\tif (!container) return;\n\t\tconst targetRect = toValue(target).getBoundingClientRect();\n\t\tconst { x, y } = position.value;\n\t\tif (isPointerNearEdge({\n\t\t\tx: x - container.scrollLeft,\n\t\t\ty: y - container.scrollTop\n\t\t}, container, scrollSettings.margin, targetRect)) startAutoScroll();\n\t\telse stopAutoScroll();\n\t};\n\tif (toValue(autoScroll)) watch(position, checkAutoScroll);\n\tconst start = (e) => {\n\t\tvar _container$getBoundin;\n\t\tif (!toValue(buttons).includes(e.button)) return;\n\t\tif (toValue(options.disabled) || !filterEvent(e)) return;\n\t\tif (toValue(exact) && e.target !== toValue(target)) return;\n\t\tconst container = toValue(containerElement);\n\t\tconst containerRect = container === null || container === void 0 || (_container$getBoundin = container.getBoundingClientRect) === null || _container$getBoundin === void 0 ? void 0 : _container$getBoundin.call(container);\n\t\tconst targetRect = toValue(target).getBoundingClientRect();\n\t\tconst pos = {\n\t\t\tx: e.clientX - (container ? targetRect.left - containerRect.left + (autoScroll ? 0 : container.scrollLeft) : targetRect.left),\n\t\t\ty: e.clientY - (container ? targetRect.top - containerRect.top + (autoScroll ? 0 : container.scrollTop) : targetRect.top)\n\t\t};\n\t\tif ((onStart === null || onStart === void 0 ? void 0 : onStart(pos, e)) === false) return;\n\t\tpressedDelta.value = pos;\n\t\thandleEvent(e);\n\t};\n\tconst move = (e) => {\n\t\tif (toValue(options.disabled) || !filterEvent(e)) return;\n\t\tif (!pressedDelta.value) return;\n\t\tconst container = toValue(containerElement);\n\t\tif (container instanceof HTMLElement) clampContainerScroll(container);\n\t\tconst targetRect = toValue(target).getBoundingClientRect();\n\t\tlet { x, y } = position.value;\n\t\tif (axis === \"x\" || axis === \"both\") {\n\t\t\tx = e.clientX - pressedDelta.value.x;\n\t\t\tif (container) x = Math.min(Math.max(0, x), container.scrollWidth - targetRect.width);\n\t\t}\n\t\tif (axis === \"y\" || axis === \"both\") {\n\t\t\ty = e.clientY - pressedDelta.value.y;\n\t\t\tif (container) y = Math.min(Math.max(0, y), container.scrollHeight - targetRect.height);\n\t\t}\n\t\tif (toValue(autoScroll) && container) {\n\t\t\tif (autoScrollInterval === null) handleAutoScroll(container, targetRect, {\n\t\t\t\tx,\n\t\t\t\ty\n\t\t\t});\n\t\t\tx += container.scrollLeft;\n\t\t\ty += container.scrollTop;\n\t\t}\n\t\tif (container && (restrictInView || autoScroll)) {\n\t\t\tif (axis !== \"y\") {\n\t\t\t\tconst relativeX = x - container.scrollLeft;\n\t\t\t\tif (relativeX < 0) x = container.scrollLeft;\n\t\t\t\telse if (relativeX > container.clientWidth - targetRect.width) x = container.clientWidth - targetRect.width + container.scrollLeft;\n\t\t\t}\n\t\t\tif (axis !== \"x\") {\n\t\t\t\tconst relativeY = y - container.scrollTop;\n\t\t\t\tif (relativeY < 0) y = container.scrollTop;\n\t\t\t\telse if (relativeY > container.clientHeight - targetRect.height) y = container.clientHeight - targetRect.height + container.scrollTop;\n\t\t\t}\n\t\t}\n\t\tposition.value = {\n\t\t\tx,\n\t\t\ty\n\t\t};\n\t\tonMove === null || onMove === void 0 || onMove(position.value, e);\n\t\thandleEvent(e);\n\t};\n\tconst end = (e) => {\n\t\tif (toValue(options.disabled) || !filterEvent(e)) return;\n\t\tif (!pressedDelta.value) return;\n\t\tpressedDelta.value = void 0;\n\t\tif (autoScroll) stopAutoScroll();\n\t\tonEnd === null || onEnd === void 0 || onEnd(position.value, e);\n\t\thandleEvent(e);\n\t};\n\tif (isClient) {\n\t\tconst config = () => {\n\t\t\tvar _options$capture;\n\t\t\treturn {\n\t\t\t\tcapture: (_options$capture = options.capture) !== null && _options$capture !== void 0 ? _options$capture : true,\n\t\t\t\tpassive: !toValue(preventDefault)\n\t\t\t};\n\t\t};\n\t\tuseEventListener(draggingHandle, \"pointerdown\", start, config);\n\t\tuseEventListener(draggingElement, \"pointermove\", move, config);\n\t\tuseEventListener(draggingElement, \"pointerup\", end, config);\n\t}\n\treturn {\n\t\t...toRefs(position),\n\t\tposition,\n\t\tisDragging: computed(() => !!pressedDelta.value),\n\t\tstyle: computed(() => `\n left: ${position.value.x}px;\n top: ${position.value.y}px;\n ${autoScroll ? \"text-wrap: nowrap;\" : \"\"}\n `)\n\t};\n}\n//#endregion\n//#region useDropZone/index.ts\nfunction useDropZone(target, options = {}) {\n\tconst isOverDropZone = shallowRef(false);\n\tconst files = shallowRef(null);\n\tlet counter = 0;\n\tlet isValid = true;\n\tif (isClient) {\n\t\tvar _options$multiple, _options$preventDefau;\n\t\tconst _options = typeof options === \"function\" ? { onDrop: options } : options;\n\t\tconst multiple = (_options$multiple = _options.multiple) !== null && _options$multiple !== void 0 ? _options$multiple : true;\n\t\tconst preventDefaultForUnhandled = (_options$preventDefau = _options.preventDefaultForUnhandled) !== null && _options$preventDefau !== void 0 ? _options$preventDefau : false;\n\t\tconst getFiles = (event) => {\n\t\t\tvar _event$dataTransfer$f, _event$dataTransfer;\n\t\t\tconst list = Array.from((_event$dataTransfer$f = (_event$dataTransfer = event.dataTransfer) === null || _event$dataTransfer === void 0 ? void 0 : _event$dataTransfer.files) !== null && _event$dataTransfer$f !== void 0 ? _event$dataTransfer$f : []);\n\t\t\treturn list.length === 0 ? null : multiple ? list : [list[0]];\n\t\t};\n\t\tconst checkDataTypes = (types) => {\n\t\t\tconst dataTypes = unref(_options.dataTypes);\n\t\t\tif (typeof dataTypes === \"function\") return dataTypes(types);\n\t\t\tif (!(dataTypes === null || dataTypes === void 0 ? void 0 : dataTypes.length)) return true;\n\t\t\tif (types.length === 0) return false;\n\t\t\treturn types.every((type) => dataTypes.some((allowedType) => type.includes(allowedType)));\n\t\t};\n\t\tconst checkValidity = (items) => {\n\t\t\tif (_options.checkValidity) return _options.checkValidity(items);\n\t\t\tconst dataTypesValid = checkDataTypes(Array.from(items !== null && items !== void 0 ? items : []).map((item) => item.type));\n\t\t\tconst multipleFilesValid = multiple || items.length <= 1;\n\t\t\treturn dataTypesValid && multipleFilesValid;\n\t\t};\n\t\tconst isSafari = () => /^(?:(?!chrome|android).)*safari/i.test(navigator.userAgent) && !(\"chrome\" in window);\n\t\tconst handleDragEvent = (event, eventType) => {\n\t\t\tvar _event$dataTransfer2, _ref;\n\t\t\tconst dataTransferItemList = (_event$dataTransfer2 = event.dataTransfer) === null || _event$dataTransfer2 === void 0 ? void 0 : _event$dataTransfer2.items;\n\t\t\tisValid = (_ref = dataTransferItemList && checkValidity(dataTransferItemList)) !== null && _ref !== void 0 ? _ref : false;\n\t\t\tif (preventDefaultForUnhandled) event.preventDefault();\n\t\t\tif (!isSafari() && !isValid) {\n\t\t\t\tif (event.dataTransfer) event.dataTransfer.dropEffect = \"none\";\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tevent.preventDefault();\n\t\t\tif (event.dataTransfer) event.dataTransfer.dropEffect = \"copy\";\n\t\t\tconst currentFiles = getFiles(event);\n\t\t\tswitch (eventType) {\n\t\t\t\tcase \"enter\":\n\t\t\t\t\tvar _options$onEnter;\n\t\t\t\t\tcounter += 1;\n\t\t\t\t\tisOverDropZone.value = true;\n\t\t\t\t\t(_options$onEnter = _options.onEnter) === null || _options$onEnter === void 0 || _options$onEnter.call(_options, null, event);\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"over\":\n\t\t\t\t\tvar _options$onOver;\n\t\t\t\t\t(_options$onOver = _options.onOver) === null || _options$onOver === void 0 || _options$onOver.call(_options, null, event);\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"leave\":\n\t\t\t\t\tvar _options$onLeave;\n\t\t\t\t\tcounter -= 1;\n\t\t\t\t\tif (counter === 0) isOverDropZone.value = false;\n\t\t\t\t\t(_options$onLeave = _options.onLeave) === null || _options$onLeave === void 0 || _options$onLeave.call(_options, null, event);\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"drop\":\n\t\t\t\t\tcounter = 0;\n\t\t\t\t\tisOverDropZone.value = false;\n\t\t\t\t\tif (isValid) {\n\t\t\t\t\t\tvar _options$onDrop;\n\t\t\t\t\t\tfiles.value = currentFiles;\n\t\t\t\t\t\t(_options$onDrop = _options.onDrop) === null || _options$onDrop === void 0 || _options$onDrop.call(_options, currentFiles, event);\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\t\t\t}\n\t\t};\n\t\tuseEventListener(target, \"dragenter\", (event) => handleDragEvent(event, \"enter\"));\n\t\tuseEventListener(target, \"dragover\", (event) => handleDragEvent(event, \"over\"));\n\t\tuseEventListener(target, \"dragleave\", (event) => handleDragEvent(event, \"leave\"));\n\t\tuseEventListener(target, \"drop\", (event) => handleDragEvent(event, \"drop\"));\n\t}\n\treturn {\n\t\tfiles,\n\t\tisOverDropZone\n\t};\n}\n//#endregion\n//#region useResizeObserver/index.ts\n/**\n* Reports changes to the dimensions of an Element's content or the border-box\n*\n* @see https://vueuse.org/useResizeObserver\n* @param target\n* @param callback\n* @param options\n*/\nfunction useResizeObserver(target, callback, options = {}) {\n\tconst { window = defaultWindow, ...observerOptions } = options;\n\tlet observer;\n\tconst isSupported = /* @__PURE__ */ useSupported(() => window && \"ResizeObserver\" in window);\n\tconst cleanup = () => {\n\t\tif (observer) {\n\t\t\tobserver.disconnect();\n\t\t\tobserver = void 0;\n\t\t}\n\t};\n\tconst stopWatch = watch(computed(() => {\n\t\tconst _targets = toValue(target);\n\t\treturn Array.isArray(_targets) ? _targets.map((el) => unrefElement(el)) : [unrefElement(_targets)];\n\t}), (els) => {\n\t\tcleanup();\n\t\tif (isSupported.value && window) {\n\t\t\tobserver = new ResizeObserver(callback);\n\t\t\tfor (const _el of els) if (_el) observer.observe(_el, observerOptions);\n\t\t}\n\t}, {\n\t\timmediate: true,\n\t\tflush: \"post\"\n\t});\n\tconst stop = () => {\n\t\tcleanup();\n\t\tstopWatch();\n\t};\n\ttryOnScopeDispose(stop);\n\treturn {\n\t\tisSupported,\n\t\tstop\n\t};\n}\n//#endregion\n//#region useElementBounding/index.ts\n/**\n* Reactive bounding box of an HTML element.\n*\n* @see https://vueuse.org/useElementBounding\n* @param target\n*/\nfunction useElementBounding(target, options = {}) {\n\tconst { reset = true, windowResize = true, windowScroll = true, immediate = true, updateTiming = \"sync\" } = options;\n\tconst height = shallowRef(0);\n\tconst bottom = shallowRef(0);\n\tconst left = shallowRef(0);\n\tconst right = shallowRef(0);\n\tconst top = shallowRef(0);\n\tconst width = shallowRef(0);\n\tconst x = shallowRef(0);\n\tconst y = shallowRef(0);\n\tfunction recalculate() {\n\t\tconst el = unrefElement(target);\n\t\tif (!el) {\n\t\t\tif (reset) {\n\t\t\t\theight.value = 0;\n\t\t\t\tbottom.value = 0;\n\t\t\t\tleft.value = 0;\n\t\t\t\tright.value = 0;\n\t\t\t\ttop.value = 0;\n\t\t\t\twidth.value = 0;\n\t\t\t\tx.value = 0;\n\t\t\t\ty.value = 0;\n\t\t\t}\n\t\t\treturn;\n\t\t}\n\t\tconst rect = el.getBoundingClientRect();\n\t\theight.value = rect.height;\n\t\tbottom.value = rect.bottom;\n\t\tleft.value = rect.left;\n\t\tright.value = rect.right;\n\t\ttop.value = rect.top;\n\t\twidth.value = rect.width;\n\t\tx.value = rect.x;\n\t\ty.value = rect.y;\n\t}\n\tfunction update() {\n\t\tif (updateTiming === \"sync\") recalculate();\n\t\telse if (updateTiming === \"next-frame\") requestAnimationFrame(() => recalculate());\n\t}\n\tuseResizeObserver(target, update);\n\twatch(() => unrefElement(target), (ele) => !ele && update());\n\tuseMutationObserver(target, update, { attributeFilter: [\"style\", \"class\"] });\n\tif (windowScroll) useEventListener(\"scroll\", update, {\n\t\tcapture: true,\n\t\tpassive: true\n\t});\n\tif (windowResize) useEventListener(\"resize\", update, { passive: true });\n\ttryOnMounted(() => {\n\t\tif (immediate) update();\n\t});\n\treturn {\n\t\theight,\n\t\tbottom,\n\t\tleft,\n\t\tright,\n\t\ttop,\n\t\twidth,\n\t\tx,\n\t\ty,\n\t\tupdate\n\t};\n}\n//#endregion\n//#region useElementByPoint/index.ts\nfunction getDefaultScheduler$7(options) {\n\tif (\"interval\" in options || \"immediate\" in options) {\n\t\tconst { interval = \"requestAnimationFrame\", immediate = true } = options;\n\t\treturn interval === \"requestAnimationFrame\" ? (cb) => useRafFn(cb, { immediate }) : (cb) => useIntervalFn(cb, interval, { immediate });\n\t}\n\treturn useRafFn;\n}\n/**\n* Reactive element by point.\n*\n* @see https://vueuse.org/useElementByPoint\n* @param options - UseElementByPointOptions\n*/\nfunction useElementByPoint(options) {\n\tconst { x, y, document = defaultDocument, multiple, scheduler = getDefaultScheduler$7(options) } = options;\n\tconst isSupported = /* @__PURE__ */ useSupported(() => {\n\t\tif (toValue(multiple)) return document && \"elementsFromPoint\" in document;\n\t\treturn document && \"elementFromPoint\" in document;\n\t});\n\tconst element = shallowRef(null);\n\treturn {\n\t\tisSupported,\n\t\telement,\n\t\t...scheduler(() => {\n\t\t\tvar _document$elementsFro, _document$elementFrom;\n\t\t\telement.value = toValue(multiple) ? (_document$elementsFro = document === null || document === void 0 ? void 0 : document.elementsFromPoint(toValue(x), toValue(y))) !== null && _document$elementsFro !== void 0 ? _document$elementsFro : [] : (_document$elementFrom = document === null || document === void 0 ? void 0 : document.elementFromPoint(toValue(x), toValue(y))) !== null && _document$elementFrom !== void 0 ? _document$elementFrom : null;\n\t\t})\n\t};\n}\n//#endregion\n//#region useElementHover/index.ts\nfunction useElementHover(el, options = {}) {\n\tconst { delayEnter = 0, delayLeave = 0, triggerOnRemoval = false, window = defaultWindow } = options;\n\tconst isHovered = shallowRef(false);\n\tlet timer;\n\tconst toggle = (entering) => {\n\t\tconst delay = entering ? delayEnter : delayLeave;\n\t\tif (timer) {\n\t\t\tclearTimeout(timer);\n\t\t\ttimer = void 0;\n\t\t}\n\t\tif (delay) timer = setTimeout(() => isHovered.value = entering, delay);\n\t\telse isHovered.value = entering;\n\t};\n\tif (!window) return isHovered;\n\tuseEventListener(el, \"mouseenter\", () => toggle(true), { passive: true });\n\tuseEventListener(el, \"mouseleave\", () => toggle(false), { passive: true });\n\tif (triggerOnRemoval) onElementRemoval(computed(() => unrefElement(el)), () => toggle(false));\n\treturn isHovered;\n}\n//#endregion\n//#region useElementSize/index.ts\n/**\n* Reactive size of an HTML element.\n*\n* @see https://vueuse.org/useElementSize\n*/\nfunction useElementSize(target, initialSize = {\n\twidth: 0,\n\theight: 0\n}, options = {}) {\n\tconst { window = defaultWindow, box = \"content-box\" } = options;\n\tconst isSVG = computed(() => {\n\t\tvar _unrefElement;\n\t\treturn (_unrefElement = unrefElement(target)) === null || _unrefElement === void 0 || (_unrefElement = _unrefElement.namespaceURI) === null || _unrefElement === void 0 ? void 0 : _unrefElement.includes(\"svg\");\n\t});\n\tconst width = shallowRef(initialSize.width);\n\tconst height = shallowRef(initialSize.height);\n\tconst { stop: stop1 } = useResizeObserver(target, ([entry]) => {\n\t\tconst boxSize = box === \"border-box\" ? entry.borderBoxSize : box === \"content-box\" ? entry.contentBoxSize : entry.devicePixelContentBoxSize;\n\t\tif (window && isSVG.value) {\n\t\t\tconst $elem = unrefElement(target);\n\t\t\tif ($elem) {\n\t\t\t\tconst rect = $elem.getBoundingClientRect();\n\t\t\t\twidth.value = rect.width;\n\t\t\t\theight.value = rect.height;\n\t\t\t}\n\t\t} else if (boxSize) {\n\t\t\tconst formatBoxSize = toArray(boxSize);\n\t\t\twidth.value = formatBoxSize.reduce((acc, { inlineSize }) => acc + inlineSize, 0);\n\t\t\theight.value = formatBoxSize.reduce((acc, { blockSize }) => acc + blockSize, 0);\n\t\t} else {\n\t\t\twidth.value = entry.contentRect.width;\n\t\t\theight.value = entry.contentRect.height;\n\t\t}\n\t}, options);\n\ttryOnMounted(() => {\n\t\tconst ele = unrefElement(target);\n\t\tif (ele) {\n\t\t\twidth.value = \"offsetWidth\" in ele ? ele.offsetWidth : initialSize.width;\n\t\t\theight.value = \"offsetHeight\" in ele ? ele.offsetHeight : initialSize.height;\n\t\t}\n\t});\n\tconst stop2 = watch(() => unrefElement(target), (ele) => {\n\t\twidth.value = ele ? initialSize.width : 0;\n\t\theight.value = ele ? initialSize.height : 0;\n\t});\n\tfunction stop() {\n\t\tstop1();\n\t\tstop2();\n\t}\n\treturn {\n\t\twidth,\n\t\theight,\n\t\tstop\n\t};\n}\n//#endregion\n//#region useIntersectionObserver/index.ts\n/**\n* Detects changes to a target element's visibility.\n*\n* @see https://vueuse.org/useIntersectionObserver\n* @param target\n* @param callback\n* @param options\n*/\nfunction useIntersectionObserver(target, callback, options = {}) {\n\tconst { root, rootMargin, threshold = 0, window = defaultWindow, immediate = true } = options;\n\tconst isSupported = /* @__PURE__ */ useSupported(() => window && \"IntersectionObserver\" in window);\n\tconst targets = computed(() => {\n\t\treturn toArray(toValue(target)).map(unrefElement).filter(notNullish);\n\t});\n\tlet cleanup = noop;\n\tconst isActive = shallowRef(immediate);\n\tconst stopWatch = isSupported.value ? watch(() => [\n\t\ttargets.value,\n\t\tunrefElement(root),\n\t\ttoValue(rootMargin),\n\t\tisActive.value\n\t], ([targets, root, rootMargin]) => {\n\t\tcleanup();\n\t\tif (!isActive.value) return;\n\t\tif (!targets.length) return;\n\t\tconst observer = new IntersectionObserver(callback, {\n\t\t\troot: unrefElement(root),\n\t\t\trootMargin,\n\t\t\tthreshold\n\t\t});\n\t\ttargets.forEach((el) => el && observer.observe(el));\n\t\tcleanup = () => {\n\t\t\tobserver.disconnect();\n\t\t\tcleanup = noop;\n\t\t};\n\t}, {\n\t\timmediate,\n\t\tflush: \"post\"\n\t}) : noop;\n\tconst stop = () => {\n\t\tcleanup();\n\t\tstopWatch();\n\t\tisActive.value = false;\n\t};\n\ttryOnScopeDispose(stop);\n\treturn {\n\t\tisSupported,\n\t\tisActive,\n\t\tpause() {\n\t\t\tcleanup();\n\t\t\tisActive.value = false;\n\t\t},\n\t\tresume() {\n\t\t\tisActive.value = true;\n\t\t},\n\t\tstop\n\t};\n}\n//#endregion\n//#region useElementVisibility/index.ts\nfunction useElementVisibility(element, options = {}) {\n\tconst { window = defaultWindow, scrollTarget, threshold = 0, rootMargin, once = false, initialValue = false } = options;\n\tconst isVisible = shallowRef(initialValue);\n\tconst observerController = useIntersectionObserver(element, (intersectionObserverEntries) => {\n\t\tlet isIntersecting = isVisible.value;\n\t\tlet latestTime = 0;\n\t\tfor (const entry of intersectionObserverEntries) if (entry.time >= latestTime) {\n\t\t\tlatestTime = entry.time;\n\t\t\tisIntersecting = entry.isIntersecting;\n\t\t}\n\t\tisVisible.value = isIntersecting;\n\t\tif (once) watchOnce(isVisible, () => {\n\t\t\tobserverController.stop();\n\t\t});\n\t}, {\n\t\troot: scrollTarget,\n\t\twindow,\n\t\tthreshold,\n\t\trootMargin\n\t});\n\treturn options.controls ? {\n\t\t...observerController,\n\t\tisVisible\n\t} : isVisible;\n}\n//#endregion\n//#region useEventBus/internal.ts\n/* #__PURE__ */\nconst events = /* @__PURE__ */ new Map();\n//#endregion\n//#region useEventBus/index.ts\n/* @__NO_SIDE_EFFECTS__ */\nfunction useEventBus(key) {\n\tconst scope = getCurrentScope();\n\tfunction on(listener) {\n\t\tvar _scope$cleanups;\n\t\tconst listeners = events.get(key) || /* @__PURE__ */ new Set();\n\t\tlisteners.add(listener);\n\t\tevents.set(key, listeners);\n\t\tconst _off = () => off(listener);\n\t\tscope === null || scope === void 0 || (_scope$cleanups = scope.cleanups) === null || _scope$cleanups === void 0 || _scope$cleanups.push(_off);\n\t\treturn _off;\n\t}\n\tfunction once(listener) {\n\t\tfunction _listener(...args) {\n\t\t\toff(_listener);\n\t\t\tlistener(...args);\n\t\t}\n\t\treturn on(_listener);\n\t}\n\tfunction off(listener) {\n\t\tconst listeners = events.get(key);\n\t\tif (!listeners) return;\n\t\tlisteners.delete(listener);\n\t\tif (!listeners.size) reset();\n\t}\n\tfunction reset() {\n\t\tevents.delete(key);\n\t}\n\tfunction emit(event, payload) {\n\t\tvar _events$get;\n\t\t(_events$get = events.get(key)) === null || _events$get === void 0 || _events$get.forEach((v) => v(event, payload));\n\t}\n\treturn {\n\t\ton,\n\t\tonce,\n\t\toff,\n\t\temit,\n\t\treset\n\t};\n}\n//#endregion\n//#region useEventSource/index.ts\nfunction resolveNestedOptions$1(options) {\n\tif (options === true) return {};\n\treturn options;\n}\n/**\n* Reactive wrapper for EventSource.\n*\n* @see https://vueuse.org/useEventSource\n* @see https://developer.mozilla.org/en-US/docs/Web/API/EventSource/EventSource EventSource\n* @param url\n* @param events\n* @param options\n*/\nfunction useEventSource(url, events = [], options = {}) {\n\tconst event = shallowRef(null);\n\tconst data = shallowRef(null);\n\tconst status = shallowRef(\"CONNECTING\");\n\tconst eventSource = shallowRef(null);\n\tconst error = shallowRef(null);\n\tconst urlRef = toRef(url);\n\tconst lastEventId = shallowRef(null);\n\tlet explicitlyClosed = false;\n\tlet retried = 0;\n\tconst { withCredentials = false, immediate = true, autoConnect = true, autoReconnect, serializer = { read: (v) => v } } = options;\n\tconst close = () => {\n\t\tif (isClient && eventSource.value) {\n\t\t\teventSource.value.close();\n\t\t\teventSource.value = null;\n\t\t\tstatus.value = \"CLOSED\";\n\t\t\texplicitlyClosed = true;\n\t\t}\n\t};\n\tconst _init = () => {\n\t\tif (explicitlyClosed || typeof urlRef.value === \"undefined\") return;\n\t\tconst es = new EventSource(urlRef.value, { withCredentials });\n\t\tstatus.value = \"CONNECTING\";\n\t\teventSource.value = es;\n\t\tes.onopen = () => {\n\t\t\tstatus.value = \"OPEN\";\n\t\t\terror.value = null;\n\t\t};\n\t\tes.onerror = (e) => {\n\t\t\tstatus.value = \"CLOSED\";\n\t\t\terror.value = e;\n\t\t\tif (es.readyState === 2 && !explicitlyClosed && autoReconnect) {\n\t\t\t\tes.close();\n\t\t\t\tconst { retries = -1, delay = 1e3, onFailed } = resolveNestedOptions$1(autoReconnect);\n\t\t\t\tretried += 1;\n\t\t\t\tif (typeof retries === \"number\" && (retries < 0 || retried < retries)) setTimeout(_init, delay);\n\t\t\t\telse if (typeof retries === \"function\" && retries()) setTimeout(_init, delay);\n\t\t\t\telse onFailed === null || onFailed === void 0 || onFailed();\n\t\t\t}\n\t\t};\n\t\tes.onmessage = (e) => {\n\t\t\tvar _serializer$read;\n\t\t\tevent.value = null;\n\t\t\tdata.value = (_serializer$read = serializer.read(e.data)) !== null && _serializer$read !== void 0 ? _serializer$read : null;\n\t\t\tlastEventId.value = e.lastEventId;\n\t\t};\n\t\tfor (const event_name of events) useEventListener(es, event_name, (e) => {\n\t\t\tvar _serializer$read2, _e$lastEventId;\n\t\t\tevent.value = event_name;\n\t\t\tdata.value = (_serializer$read2 = serializer.read(e.data)) !== null && _serializer$read2 !== void 0 ? _serializer$read2 : null;\n\t\t\tlastEventId.value = (_e$lastEventId = e.lastEventId) !== null && _e$lastEventId !== void 0 ? _e$lastEventId : null;\n\t\t}, { passive: true });\n\t};\n\tconst open = () => {\n\t\tif (!isClient) return;\n\t\tclose();\n\t\texplicitlyClosed = false;\n\t\tretried = 0;\n\t\t_init();\n\t};\n\tif (immediate) open();\n\tif (autoConnect) watch(urlRef, open);\n\ttryOnScopeDispose(close);\n\treturn {\n\t\teventSource,\n\t\tevent,\n\t\tdata,\n\t\tstatus,\n\t\terror,\n\t\topen,\n\t\tclose,\n\t\tlastEventId\n\t};\n}\n//#endregion\n//#region useEyeDropper/index.ts\n/**\n* Reactive [EyeDropper API](https://developer.mozilla.org/en-US/docs/Web/API/EyeDropper_API)\n*\n* @see https://vueuse.org/useEyeDropper\n*\n* @__NO_SIDE_EFFECTS__\n*/\nfunction useEyeDropper(options = {}) {\n\tconst { initialValue = \"\" } = options;\n\tconst isSupported = /* @__PURE__ */ useSupported(() => typeof window !== \"undefined\" && \"EyeDropper\" in window);\n\tconst sRGBHex = shallowRef(initialValue);\n\tasync function open(openOptions) {\n\t\tif (!isSupported.value) return;\n\t\tconst result = await new window.EyeDropper().open(openOptions);\n\t\tsRGBHex.value = result.sRGBHex;\n\t\treturn result;\n\t}\n\treturn {\n\t\tisSupported,\n\t\tsRGBHex,\n\t\topen\n\t};\n}\n//#endregion\n//#region useFavicon/index.ts\nfunction useFavicon(newIcon = null, options = {}) {\n\tconst { baseUrl = \"\", rel = \"icon\", document = defaultDocument } = options;\n\tconst favicon = toRef(newIcon);\n\tconst applyIcon = (icon) => {\n\t\tconst elements = document === null || document === void 0 ? void 0 : document.head.querySelectorAll(`link[rel*=\"${rel}\"]`);\n\t\tif (!elements || elements.length === 0) {\n\t\t\tconst link = document === null || document === void 0 ? void 0 : document.createElement(\"link\");\n\t\t\tif (link) {\n\t\t\t\tlink.rel = rel;\n\t\t\t\tlink.href = `${baseUrl}${icon}`;\n\t\t\t\tlink.type = `image/${icon.split(\".\").pop()}`;\n\t\t\t\tdocument === null || document === void 0 || document.head.append(link);\n\t\t\t}\n\t\t\treturn;\n\t\t}\n\t\telements === null || elements === void 0 || elements.forEach((el) => el.href = `${baseUrl}${icon}`);\n\t};\n\twatch(favicon, (i, o) => {\n\t\tif (typeof i === \"string\" && i !== o) applyIcon(i);\n\t}, { immediate: true });\n\treturn favicon;\n}\n//#endregion\n//#region useFetch/index.ts\nconst payloadMapping = {\n\tjson: \"application/json\",\n\ttext: \"text/plain\"\n};\n/**\n* !!!IMPORTANT!!!\n*\n* If you update the UseFetchOptions interface, be sure to update this object\n* to include the new options\n*/\nfunction isFetchOptions(obj) {\n\treturn obj && containsProp(obj, \"immediate\", \"refetch\", \"initialData\", \"timeout\", \"beforeFetch\", \"afterFetch\", \"onFetchError\", \"fetch\", \"updateDataOnError\");\n}\nconst reAbsolute = /^(?:[a-z][a-z\\d+\\-.]*:)?\\/\\//i;\nfunction isAbsoluteURL(url) {\n\treturn reAbsolute.test(url);\n}\nfunction headersToObject(headers) {\n\tif (typeof Headers !== \"undefined\" && headers instanceof Headers) return Object.fromEntries(headers.entries());\n\treturn headers;\n}\nfunction combineCallbacks(combination, ...callbacks) {\n\tif (combination === \"overwrite\") return async (ctx) => {\n\t\tlet callback;\n\t\tfor (let i = callbacks.length - 1; i >= 0; i--) if (callbacks[i] != null) {\n\t\t\tcallback = callbacks[i];\n\t\t\tbreak;\n\t\t}\n\t\tif (callback) return {\n\t\t\t...ctx,\n\t\t\t...await callback(ctx)\n\t\t};\n\t\treturn ctx;\n\t};\n\telse return async (ctx) => {\n\t\tfor (const callback of callbacks) if (callback) ctx = {\n\t\t\t...ctx,\n\t\t\t...await callback(ctx)\n\t\t};\n\t\treturn ctx;\n\t};\n}\nfunction createFetch(config = {}) {\n\tconst _combination = config.combination || \"chain\";\n\tconst _options = config.options || {};\n\tconst _fetchOptions = config.fetchOptions || {};\n\tfunction useFactoryFetch(url, ...args) {\n\t\tconst computedUrl = computed(() => {\n\t\t\tconst baseUrl = toValue(config.baseUrl);\n\t\t\tconst targetUrl = toValue(url);\n\t\t\treturn baseUrl && !isAbsoluteURL(targetUrl) ? joinPaths(baseUrl, targetUrl) : targetUrl;\n\t\t});\n\t\tlet options = _options;\n\t\tlet fetchOptions = _fetchOptions;\n\t\tif (args.length > 0) if (isFetchOptions(args[0])) options = {\n\t\t\t...options,\n\t\t\t...args[0],\n\t\t\tbeforeFetch: combineCallbacks(_combination, _options.beforeFetch, args[0].beforeFetch),\n\t\t\tafterFetch: combineCallbacks(_combination, _options.afterFetch, args[0].afterFetch),\n\t\t\tonFetchError: combineCallbacks(_combination, _options.onFetchError, args[0].onFetchError)\n\t\t};\n\t\telse fetchOptions = {\n\t\t\t...fetchOptions,\n\t\t\t...args[0],\n\t\t\theaders: {\n\t\t\t\t...headersToObject(fetchOptions.headers) || {},\n\t\t\t\t...headersToObject(args[0].headers) || {}\n\t\t\t}\n\t\t};\n\t\tif (args.length > 1 && isFetchOptions(args[1])) options = {\n\t\t\t...options,\n\t\t\t...args[1],\n\t\t\tbeforeFetch: combineCallbacks(_combination, _options.beforeFetch, args[1].beforeFetch),\n\t\t\tafterFetch: combineCallbacks(_combination, _options.afterFetch, args[1].afterFetch),\n\t\t\tonFetchError: combineCallbacks(_combination, _options.onFetchError, args[1].onFetchError)\n\t\t};\n\t\treturn useFetch(computedUrl, fetchOptions, options);\n\t}\n\treturn useFactoryFetch;\n}\nfunction useFetch(url, ...args) {\n\tvar _defaultWindow$fetch, _globalThis;\n\tconst supportsAbort = typeof AbortController === \"function\";\n\tlet fetchOptions = {};\n\tlet options = {\n\t\timmediate: true,\n\t\trefetch: false,\n\t\ttimeout: 0,\n\t\tupdateDataOnError: false\n\t};\n\tconst config = {\n\t\tmethod: \"GET\",\n\t\ttype: \"text\",\n\t\tpayload: void 0\n\t};\n\tif (args.length > 0) if (isFetchOptions(args[0])) options = {\n\t\t...options,\n\t\t...args[0]\n\t};\n\telse fetchOptions = args[0];\n\tif (args.length > 1) {\n\t\tif (isFetchOptions(args[1])) options = {\n\t\t\t...options,\n\t\t\t...args[1]\n\t\t};\n\t}\n\tconst { fetch = (_defaultWindow$fetch = defaultWindow === null || defaultWindow === void 0 ? void 0 : defaultWindow.fetch) !== null && _defaultWindow$fetch !== void 0 ? _defaultWindow$fetch : (_globalThis = globalThis) === null || _globalThis === void 0 ? void 0 : _globalThis.fetch, initialData, timeout } = options;\n\tconst responseEvent = createEventHook();\n\tconst errorEvent = createEventHook();\n\tconst finallyEvent = createEventHook();\n\tconst isFinished = shallowRef(false);\n\tconst isFetching = shallowRef(false);\n\tconst aborted = shallowRef(false);\n\tconst statusCode = shallowRef(null);\n\tconst response = shallowRef(null);\n\tconst error = shallowRef(null);\n\tconst data = shallowRef(initialData || null);\n\tconst canAbort = computed(() => supportsAbort && isFetching.value);\n\tlet controller;\n\tlet timer;\n\tconst abort = (reason) => {\n\t\tif (supportsAbort) {\n\t\t\tcontroller === null || controller === void 0 || controller.abort(reason);\n\t\t\tcontroller = new AbortController();\n\t\t\tcontroller.signal.onabort = () => aborted.value = true;\n\t\t\tfetchOptions = {\n\t\t\t\t...fetchOptions,\n\t\t\t\tsignal: controller.signal\n\t\t\t};\n\t\t}\n\t};\n\tconst loading = (isLoading) => {\n\t\tisFetching.value = isLoading;\n\t\tisFinished.value = !isLoading;\n\t};\n\tif (timeout) timer = useTimeoutFn(abort, timeout, { immediate: false });\n\tlet executeCounter = 0;\n\tconst execute = async (throwOnFailed = false) => {\n\t\tvar _context$options;\n\t\tabort();\n\t\tloading(true);\n\t\terror.value = null;\n\t\tstatusCode.value = null;\n\t\taborted.value = false;\n\t\texecuteCounter += 1;\n\t\tconst currentExecuteCounter = executeCounter;\n\t\tconst defaultFetchOptions = {\n\t\t\tmethod: config.method,\n\t\t\theaders: {}\n\t\t};\n\t\tconst payload = toValue(config.payload);\n\t\tif (payload) {\n\t\t\tvar _payloadMapping$confi;\n\t\t\tconst headers = headersToObject(defaultFetchOptions.headers);\n\t\t\tconst proto = Object.getPrototypeOf(payload);\n\t\t\tif (!config.payloadType && payload && (proto === Object.prototype || Array.isArray(proto)) && !(payload instanceof FormData)) config.payloadType = \"json\";\n\t\t\tif (config.payloadType) headers[\"Content-Type\"] = (_payloadMapping$confi = payloadMapping[config.payloadType]) !== null && _payloadMapping$confi !== void 0 ? _payloadMapping$confi : config.payloadType;\n\t\t\tdefaultFetchOptions.body = config.payloadType === \"json\" ? JSON.stringify(payload) : payload;\n\t\t}\n\t\tlet isCanceled = false;\n\t\tconst context = {\n\t\t\turl: toValue(url),\n\t\t\toptions: {\n\t\t\t\t...defaultFetchOptions,\n\t\t\t\t...fetchOptions\n\t\t\t},\n\t\t\tcancel: () => {\n\t\t\t\tisCanceled = true;\n\t\t\t}\n\t\t};\n\t\tif (options.beforeFetch) Object.assign(context, await options.beforeFetch(context));\n\t\tif (isCanceled || !fetch) {\n\t\t\tloading(false);\n\t\t\treturn Promise.resolve(null);\n\t\t}\n\t\tlet responseData = null;\n\t\tif (timer) timer.start();\n\t\treturn fetch(context.url, {\n\t\t\t...defaultFetchOptions,\n\t\t\t...context.options,\n\t\t\theaders: {\n\t\t\t\t...headersToObject(defaultFetchOptions.headers),\n\t\t\t\t...headersToObject((_context$options = context.options) === null || _context$options === void 0 ? void 0 : _context$options.headers)\n\t\t\t}\n\t\t}).then(async (fetchResponse) => {\n\t\t\tresponse.value = fetchResponse;\n\t\t\tstatusCode.value = fetchResponse.status;\n\t\t\tresponseData = await fetchResponse.clone()[config.type]();\n\t\t\tif (!fetchResponse.ok) {\n\t\t\t\tdata.value = initialData || null;\n\t\t\t\tthrow new Error(fetchResponse.statusText);\n\t\t\t}\n\t\t\tif (options.afterFetch) ({data: responseData} = await options.afterFetch({\n\t\t\t\tdata: responseData,\n\t\t\t\tresponse: fetchResponse,\n\t\t\t\tcontext,\n\t\t\t\texecute\n\t\t\t}));\n\t\t\tdata.value = responseData;\n\t\t\tresponseEvent.trigger(fetchResponse);\n\t\t\treturn fetchResponse;\n\t\t}).catch(async (fetchError) => {\n\t\t\tlet errorData = fetchError.message || fetchError.name;\n\t\t\tif (options.onFetchError) ({error: errorData, data: responseData} = await options.onFetchError({\n\t\t\t\tdata: responseData,\n\t\t\t\terror: fetchError,\n\t\t\t\tresponse: response.value,\n\t\t\t\tcontext,\n\t\t\t\texecute\n\t\t\t}));\n\t\t\terror.value = errorData;\n\t\t\tif (options.updateDataOnError) data.value = responseData;\n\t\t\terrorEvent.trigger(fetchError);\n\t\t\tif (throwOnFailed) throw fetchError;\n\t\t\treturn null;\n\t\t}).finally(() => {\n\t\t\tif (currentExecuteCounter === executeCounter) loading(false);\n\t\t\tif (timer) timer.stop();\n\t\t\tfinallyEvent.trigger(null);\n\t\t});\n\t};\n\tconst refetch = toRef(options.refetch);\n\twatch([refetch, toRef(url)], ([refetch]) => refetch && execute(), { deep: true });\n\tconst shell = {\n\t\tisFinished: shallowReadonly(isFinished),\n\t\tisFetching: shallowReadonly(isFetching),\n\t\tstatusCode,\n\t\tresponse,\n\t\terror,\n\t\tdata,\n\t\tcanAbort,\n\t\taborted,\n\t\tabort,\n\t\texecute,\n\t\tonFetchResponse: responseEvent.on,\n\t\tonFetchError: errorEvent.on,\n\t\tonFetchFinally: finallyEvent.on,\n\t\tget: setMethod(\"GET\"),\n\t\tput: setMethod(\"PUT\"),\n\t\tpost: setMethod(\"POST\"),\n\t\tdelete: setMethod(\"DELETE\"),\n\t\tpatch: setMethod(\"PATCH\"),\n\t\thead: setMethod(\"HEAD\"),\n\t\toptions: setMethod(\"OPTIONS\"),\n\t\tjson: setType(\"json\"),\n\t\ttext: setType(\"text\"),\n\t\tblob: setType(\"blob\"),\n\t\tarrayBuffer: setType(\"arrayBuffer\"),\n\t\tformData: setType(\"formData\")\n\t};\n\tfunction setMethod(method) {\n\t\treturn (payload, payloadType) => {\n\t\t\tif (!isFetching.value) {\n\t\t\t\tconfig.method = method;\n\t\t\t\tconfig.payload = payload;\n\t\t\t\tconfig.payloadType = payloadType;\n\t\t\t\tif (isRef(config.payload)) watch([refetch, toRef(config.payload)], ([refetch]) => refetch && execute(), { deep: true });\n\t\t\t\treturn {\n\t\t\t\t\t...shell,\n\t\t\t\t\tthen(onFulfilled, onRejected) {\n\t\t\t\t\t\treturn waitUntilFinished().then(onFulfilled, onRejected);\n\t\t\t\t\t}\n\t\t\t\t};\n\t\t\t}\n\t\t};\n\t}\n\tfunction waitUntilFinished() {\n\t\treturn new Promise((resolve, reject) => {\n\t\t\tuntil(isFinished).toBe(true).then(() => resolve(shell)).catch(reject);\n\t\t});\n\t}\n\tfunction setType(type) {\n\t\treturn () => {\n\t\t\tif (!isFetching.value) {\n\t\t\t\tconfig.type = type;\n\t\t\t\treturn {\n\t\t\t\t\t...shell,\n\t\t\t\t\tthen(onFulfilled, onRejected) {\n\t\t\t\t\t\treturn waitUntilFinished().then(onFulfilled, onRejected);\n\t\t\t\t\t}\n\t\t\t\t};\n\t\t\t}\n\t\t};\n\t}\n\tif (options.immediate) Promise.resolve().then(() => execute());\n\treturn {\n\t\t...shell,\n\t\tthen(onFulfilled, onRejected) {\n\t\t\treturn waitUntilFinished().then(onFulfilled, onRejected);\n\t\t}\n\t};\n}\nfunction joinPaths(start, end) {\n\tif (!start.endsWith(\"/\") && !end.startsWith(\"/\")) return `${start}/${end}`;\n\tif (start.endsWith(\"/\") && end.startsWith(\"/\")) return `${start.slice(0, -1)}${end}`;\n\treturn `${start}${end}`;\n}\n//#endregion\n//#region useFileDialog/index.ts\nconst DEFAULT_OPTIONS = {\n\tmultiple: true,\n\taccept: \"*\",\n\treset: false,\n\tdirectory: false\n};\nfunction prepareInitialFiles(files) {\n\tif (!files) return null;\n\tif (files instanceof FileList) return files;\n\tconst dt = new DataTransfer();\n\tfor (const file of files) dt.items.add(file);\n\treturn dt.files;\n}\n/**\n* Open file dialog with ease.\n*\n* @see https://vueuse.org/useFileDialog\n* @param options\n*/\nfunction useFileDialog(options = {}) {\n\tconst { document = defaultDocument } = options;\n\tconst files = ref(prepareInitialFiles(options.initialFiles));\n\tconst { on: onChange, trigger: changeTrigger } = createEventHook();\n\tconst { on: onCancel, trigger: cancelTrigger } = createEventHook();\n\tconst inputRef = computed(() => {\n\t\tvar _unrefElement;\n\t\tconst input = (_unrefElement = unrefElement(options.input)) !== null && _unrefElement !== void 0 ? _unrefElement : document ? document.createElement(\"input\") : void 0;\n\t\tif (input) {\n\t\t\tinput.type = \"file\";\n\t\t\tinput.onchange = (event) => {\n\t\t\t\tfiles.value = event.target.files;\n\t\t\t\tchangeTrigger(files.value);\n\t\t\t};\n\t\t\tinput.oncancel = () => {\n\t\t\t\tcancelTrigger();\n\t\t\t};\n\t\t}\n\t\treturn input;\n\t});\n\tconst reset = () => {\n\t\tfiles.value = null;\n\t\tif (inputRef.value && inputRef.value.value) {\n\t\t\tinputRef.value.value = \"\";\n\t\t\tchangeTrigger(null);\n\t\t}\n\t};\n\tconst applyOptions = (options) => {\n\t\tconst el = inputRef.value;\n\t\tif (!el) return;\n\t\tel.multiple = toValue(options.multiple);\n\t\tel.accept = toValue(options.accept);\n\t\tel.webkitdirectory = toValue(options.directory);\n\t\tif (hasOwn(options, \"capture\")) el.capture = toValue(options.capture);\n\t};\n\tconst open = (localOptions) => {\n\t\tconst el = inputRef.value;\n\t\tif (!el) return;\n\t\tconst mergedOptions = {\n\t\t\t...DEFAULT_OPTIONS,\n\t\t\t...options,\n\t\t\t...localOptions\n\t\t};\n\t\tapplyOptions(mergedOptions);\n\t\tif (toValue(mergedOptions.reset)) reset();\n\t\tel.click();\n\t};\n\twatchEffect(() => {\n\t\tapplyOptions(options);\n\t});\n\treturn {\n\t\tfiles: readonly(files),\n\t\topen,\n\t\treset,\n\t\tonCancel,\n\t\tonChange\n\t};\n}\n//#endregion\n//#region useFileSystemAccess/index.ts\nfunction useFileSystemAccess(options = {}) {\n\tconst { window: _window = defaultWindow, dataType = \"Text\" } = options;\n\tconst window = _window;\n\tconst isSupported = /* @__PURE__ */ useSupported(() => window && \"showSaveFilePicker\" in window && \"showOpenFilePicker\" in window);\n\tconst fileHandle = shallowRef();\n\tconst data = shallowRef();\n\tconst file = shallowRef();\n\tconst fileName = computed(() => {\n\t\tvar _file$value$name, _file$value;\n\t\treturn (_file$value$name = (_file$value = file.value) === null || _file$value === void 0 ? void 0 : _file$value.name) !== null && _file$value$name !== void 0 ? _file$value$name : \"\";\n\t});\n\tconst fileMIME = computed(() => {\n\t\tvar _file$value$type, _file$value2;\n\t\treturn (_file$value$type = (_file$value2 = file.value) === null || _file$value2 === void 0 ? void 0 : _file$value2.type) !== null && _file$value$type !== void 0 ? _file$value$type : \"\";\n\t});\n\tconst fileSize = computed(() => {\n\t\tvar _file$value$size, _file$value3;\n\t\treturn (_file$value$size = (_file$value3 = file.value) === null || _file$value3 === void 0 ? void 0 : _file$value3.size) !== null && _file$value$size !== void 0 ? _file$value$size : 0;\n\t});\n\tconst fileLastModified = computed(() => {\n\t\tvar _file$value$lastModif, _file$value4;\n\t\treturn (_file$value$lastModif = (_file$value4 = file.value) === null || _file$value4 === void 0 ? void 0 : _file$value4.lastModified) !== null && _file$value$lastModif !== void 0 ? _file$value$lastModif : 0;\n\t});\n\tasync function open(_options = {}) {\n\t\tif (!isSupported.value) return;\n\t\tconst [handle] = await window.showOpenFilePicker({\n\t\t\t...toValue(options),\n\t\t\t..._options\n\t\t});\n\t\tfileHandle.value = handle;\n\t\tawait updateData();\n\t}\n\tasync function create(_options = {}) {\n\t\tif (!isSupported.value) return;\n\t\tfileHandle.value = await window.showSaveFilePicker({\n\t\t\t...options,\n\t\t\t..._options\n\t\t});\n\t\tdata.value = void 0;\n\t\tawait updateData();\n\t}\n\tasync function save(_options = {}) {\n\t\tif (!isSupported.value) return;\n\t\tif (!fileHandle.value) return saveAs(_options);\n\t\tif (data.value) {\n\t\t\tconst writableStream = await fileHandle.value.createWritable();\n\t\t\tawait writableStream.write(data.value);\n\t\t\tawait writableStream.close();\n\t\t}\n\t\tawait updateFile();\n\t}\n\tasync function saveAs(_options = {}) {\n\t\tif (!isSupported.value) return;\n\t\tfileHandle.value = await window.showSaveFilePicker({\n\t\t\t...options,\n\t\t\t..._options\n\t\t});\n\t\tif (data.value) {\n\t\t\tconst writableStream = await fileHandle.value.createWritable();\n\t\t\tawait writableStream.write(data.value);\n\t\t\tawait writableStream.close();\n\t\t}\n\t\tawait updateFile();\n\t}\n\tasync function updateFile() {\n\t\tvar _fileHandle$value;\n\t\tfile.value = await ((_fileHandle$value = fileHandle.value) === null || _fileHandle$value === void 0 ? void 0 : _fileHandle$value.getFile());\n\t}\n\tasync function updateData() {\n\t\tvar _file$value5, _file$value6;\n\t\tawait updateFile();\n\t\tconst type = toValue(dataType);\n\t\tif (type === \"Text\") data.value = await ((_file$value5 = file.value) === null || _file$value5 === void 0 ? void 0 : _file$value5.text());\n\t\telse if (type === \"ArrayBuffer\") data.value = await ((_file$value6 = file.value) === null || _file$value6 === void 0 ? void 0 : _file$value6.arrayBuffer());\n\t\telse if (type === \"Blob\") data.value = file.value;\n\t}\n\twatch(() => toValue(dataType), updateData);\n\treturn {\n\t\tisSupported,\n\t\tdata,\n\t\tfile,\n\t\tfileName,\n\t\tfileMIME,\n\t\tfileSize,\n\t\tfileLastModified,\n\t\topen,\n\t\tcreate,\n\t\tsave,\n\t\tsaveAs,\n\t\tupdateData\n\t};\n}\n//#endregion\n//#region useFocus/index.ts\n/**\n* Track or set the focus state of a DOM element.\n*\n* @see https://vueuse.org/useFocus\n* @param target The target element for the focus and blur events.\n* @param options\n*/\nfunction useFocus(target, options = {}) {\n\tconst { initialValue = false, focusVisible = false, preventScroll = false } = options;\n\tconst innerFocused = shallowRef(false);\n\tconst targetElement = computed(() => unrefElement(target));\n\tconst listenerOptions = { passive: true };\n\tuseEventListener(targetElement, \"focus\", (event) => {\n\t\tvar _matches, _ref;\n\t\tif (!focusVisible || ((_matches = (_ref = event.target).matches) === null || _matches === void 0 ? void 0 : _matches.call(_ref, \":focus-visible\"))) innerFocused.value = true;\n\t}, listenerOptions);\n\tuseEventListener(targetElement, \"blur\", () => innerFocused.value = false, listenerOptions);\n\tconst focused = computed({\n\t\tget: () => innerFocused.value,\n\t\tset(value) {\n\t\t\tvar _targetElement$value, _targetElement$value2;\n\t\t\tif (!value && innerFocused.value) (_targetElement$value = targetElement.value) === null || _targetElement$value === void 0 || _targetElement$value.blur();\n\t\t\telse if (value && !innerFocused.value) (_targetElement$value2 = targetElement.value) === null || _targetElement$value2 === void 0 || _targetElement$value2.focus({ preventScroll });\n\t\t}\n\t});\n\twatch(targetElement, () => {\n\t\tfocused.value = initialValue;\n\t}, {\n\t\timmediate: true,\n\t\tflush: \"post\"\n\t});\n\treturn { focused };\n}\n//#endregion\n//#region useFocusWithin/index.ts\nconst EVENT_FOCUS_IN = \"focusin\";\nconst EVENT_FOCUS_OUT = \"focusout\";\nconst PSEUDO_CLASS_FOCUS_WITHIN = \":focus-within\";\n/**\n* Track if focus is contained within the target element\n*\n* @see https://vueuse.org/useFocusWithin\n* @param target The target element to track\n* @param options Focus within options\n*/\nfunction useFocusWithin(target, options = {}) {\n\tconst { window = defaultWindow } = options;\n\tconst targetElement = computed(() => unrefElement(target));\n\tconst _focused = shallowRef(false);\n\tconst focused = computed(() => _focused.value);\n\tconst activeElement = useActiveElement(options);\n\tif (!window || !activeElement.value) return { focused };\n\tconst listenerOptions = { passive: true };\n\tuseEventListener(targetElement, EVENT_FOCUS_IN, () => _focused.value = true, listenerOptions);\n\tuseEventListener(targetElement, EVENT_FOCUS_OUT, () => {\n\t\tvar _targetElement$value$, _targetElement$value, _targetElement$value$2;\n\t\treturn _focused.value = (_targetElement$value$ = (_targetElement$value = targetElement.value) === null || _targetElement$value === void 0 || (_targetElement$value$2 = _targetElement$value.matches) === null || _targetElement$value$2 === void 0 ? void 0 : _targetElement$value$2.call(_targetElement$value, PSEUDO_CLASS_FOCUS_WITHIN)) !== null && _targetElement$value$ !== void 0 ? _targetElement$value$ : false;\n\t}, listenerOptions);\n\treturn { focused };\n}\n//#endregion\n//#region useFps/index.ts\n/* @__NO_SIDE_EFFECTS__ */\nfunction useFps(options) {\n\tvar _options$every;\n\tconst fps = shallowRef(0);\n\tif (typeof performance === \"undefined\") return fps;\n\tconst every = (_options$every = options === null || options === void 0 ? void 0 : options.every) !== null && _options$every !== void 0 ? _options$every : 10;\n\tlet last = performance.now();\n\tlet ticks = 0;\n\tuseRafFn(() => {\n\t\tticks += 1;\n\t\tif (ticks >= every) {\n\t\t\tconst now = performance.now();\n\t\t\tconst diff = now - last;\n\t\t\tfps.value = Math.round(1e3 / (diff / ticks));\n\t\t\tlast = now;\n\t\t\tticks = 0;\n\t\t}\n\t});\n\treturn fps;\n}\n//#endregion\n//#region useFullscreen/index.ts\nconst eventHandlers = [\n\t\"fullscreenchange\",\n\t\"webkitfullscreenchange\",\n\t\"webkitendfullscreen\",\n\t\"mozfullscreenchange\",\n\t\"MSFullscreenChange\"\n];\n/**\n* Reactive Fullscreen API.\n*\n* @see https://vueuse.org/useFullscreen\n* @param target\n* @param options\n*/\nfunction useFullscreen(target, options = {}) {\n\tconst { document = defaultDocument, autoExit = false } = options;\n\tconst targetRef = computed(() => {\n\t\tvar _unrefElement;\n\t\treturn (_unrefElement = unrefElement(target)) !== null && _unrefElement !== void 0 ? _unrefElement : document === null || document === void 0 ? void 0 : document.documentElement;\n\t});\n\tconst isFullscreen = shallowRef(false);\n\tconst requestMethod = computed(() => {\n\t\treturn [\n\t\t\t\"requestFullscreen\",\n\t\t\t\"webkitRequestFullscreen\",\n\t\t\t\"webkitEnterFullscreen\",\n\t\t\t\"webkitEnterFullScreen\",\n\t\t\t\"webkitRequestFullScreen\",\n\t\t\t\"mozRequestFullScreen\",\n\t\t\t\"msRequestFullscreen\"\n\t\t].find((m) => document && m in document || targetRef.value && m in targetRef.value);\n\t});\n\tconst exitMethod = computed(() => {\n\t\treturn [\n\t\t\t\"exitFullscreen\",\n\t\t\t\"webkitExitFullscreen\",\n\t\t\t\"webkitExitFullScreen\",\n\t\t\t\"webkitCancelFullScreen\",\n\t\t\t\"mozCancelFullScreen\",\n\t\t\t\"msExitFullscreen\"\n\t\t].find((m) => document && m in document || targetRef.value && m in targetRef.value);\n\t});\n\tconst fullscreenEnabled = computed(() => {\n\t\treturn [\n\t\t\t\"fullScreen\",\n\t\t\t\"webkitIsFullScreen\",\n\t\t\t\"webkitDisplayingFullscreen\",\n\t\t\t\"mozFullScreen\",\n\t\t\t\"msFullscreenElement\"\n\t\t].find((m) => document && m in document || targetRef.value && m in targetRef.value);\n\t});\n\tconst fullscreenElementMethod = [\n\t\t\"fullscreenElement\",\n\t\t\"webkitFullscreenElement\",\n\t\t\"mozFullScreenElement\",\n\t\t\"msFullscreenElement\"\n\t].find((m) => document && m in document);\n\tconst isSupported = /* @__PURE__ */ useSupported(() => targetRef.value && document && requestMethod.value !== void 0 && exitMethod.value !== void 0 && fullscreenEnabled.value !== void 0);\n\tconst isCurrentElementFullScreen = () => {\n\t\tif (fullscreenElementMethod) return (document === null || document === void 0 ? void 0 : document[fullscreenElementMethod]) === targetRef.value;\n\t\treturn false;\n\t};\n\tconst isElementFullScreen = () => {\n\t\tif (fullscreenEnabled.value) if (document && document[fullscreenEnabled.value] != null) return document[fullscreenEnabled.value];\n\t\telse {\n\t\t\tconst target = targetRef.value;\n\t\t\tif ((target === null || target === void 0 ? void 0 : target[fullscreenEnabled.value]) != null) return Boolean(target[fullscreenEnabled.value]);\n\t\t}\n\t\treturn false;\n\t};\n\tasync function exit() {\n\t\tif (!isSupported.value || !isFullscreen.value) return;\n\t\tif (exitMethod.value) if ((document === null || document === void 0 ? void 0 : document[exitMethod.value]) != null) await document[exitMethod.value]();\n\t\telse {\n\t\t\tconst target = targetRef.value;\n\t\t\tif ((target === null || target === void 0 ? void 0 : target[exitMethod.value]) != null) await target[exitMethod.value]();\n\t\t}\n\t\tisFullscreen.value = false;\n\t}\n\tasync function enter() {\n\t\tif (!isSupported.value || isFullscreen.value) return;\n\t\tif (isElementFullScreen()) await exit();\n\t\tconst target = targetRef.value;\n\t\tif (requestMethod.value && (target === null || target === void 0 ? void 0 : target[requestMethod.value]) != null) {\n\t\t\tawait target[requestMethod.value]();\n\t\t\tisFullscreen.value = true;\n\t\t}\n\t}\n\tasync function toggle() {\n\t\tawait (isFullscreen.value ? exit() : enter());\n\t}\n\tconst handlerCallback = () => {\n\t\tconst isElementFullScreenValue = isElementFullScreen();\n\t\tif (!isElementFullScreenValue || isElementFullScreenValue && isCurrentElementFullScreen()) isFullscreen.value = isElementFullScreenValue;\n\t};\n\tconst listenerOptions = {\n\t\tcapture: false,\n\t\tpassive: true\n\t};\n\tuseEventListener(document, eventHandlers, handlerCallback, listenerOptions);\n\tuseEventListener(() => unrefElement(targetRef), eventHandlers, handlerCallback, listenerOptions);\n\ttryOnMounted(handlerCallback, false);\n\tif (autoExit) tryOnScopeDispose(exit);\n\treturn {\n\t\tisSupported,\n\t\tisFullscreen,\n\t\tenter,\n\t\texit,\n\t\ttoggle\n\t};\n}\n//#endregion\n//#region useGamepad/index.ts\n/**\n* Maps a standard standard gamepad to an Xbox 360 Controller.\n*/\nfunction mapGamepadToXbox360Controller(gamepad) {\n\treturn computed(() => {\n\t\tif (gamepad.value) return {\n\t\t\tbuttons: {\n\t\t\t\ta: gamepad.value.buttons[0],\n\t\t\t\tb: gamepad.value.buttons[1],\n\t\t\t\tx: gamepad.value.buttons[2],\n\t\t\t\ty: gamepad.value.buttons[3]\n\t\t\t},\n\t\t\tbumper: {\n\t\t\t\tleft: gamepad.value.buttons[4],\n\t\t\t\tright: gamepad.value.buttons[5]\n\t\t\t},\n\t\t\ttriggers: {\n\t\t\t\tleft: gamepad.value.buttons[6],\n\t\t\t\tright: gamepad.value.buttons[7]\n\t\t\t},\n\t\t\tstick: {\n\t\t\t\tleft: {\n\t\t\t\t\thorizontal: gamepad.value.axes[0],\n\t\t\t\t\tvertical: gamepad.value.axes[1],\n\t\t\t\t\tbutton: gamepad.value.buttons[10]\n\t\t\t\t},\n\t\t\t\tright: {\n\t\t\t\t\thorizontal: gamepad.value.axes[2],\n\t\t\t\t\tvertical: gamepad.value.axes[3],\n\t\t\t\t\tbutton: gamepad.value.buttons[11]\n\t\t\t\t}\n\t\t\t},\n\t\t\tdpad: {\n\t\t\t\tup: gamepad.value.buttons[12],\n\t\t\t\tdown: gamepad.value.buttons[13],\n\t\t\t\tleft: gamepad.value.buttons[14],\n\t\t\t\tright: gamepad.value.buttons[15]\n\t\t\t},\n\t\t\tback: gamepad.value.buttons[8],\n\t\t\tstart: gamepad.value.buttons[9]\n\t\t};\n\t\treturn null;\n\t});\n}\n/* @__NO_SIDE_EFFECTS__ */\nfunction useGamepad(options = {}) {\n\tconst { navigator = defaultNavigator } = options;\n\tconst isSupported = /* @__PURE__ */ useSupported(() => navigator && \"getGamepads\" in navigator);\n\tconst gamepads = ref([]);\n\tconst onConnectedHook = createEventHook();\n\tconst onDisconnectedHook = createEventHook();\n\tconst stateFromGamepad = (gamepad) => {\n\t\tconst hapticActuators = [];\n\t\tconst vibrationActuator = \"vibrationActuator\" in gamepad ? gamepad.vibrationActuator : null;\n\t\tif (vibrationActuator) hapticActuators.push(vibrationActuator);\n\t\tif (gamepad.hapticActuators) hapticActuators.push(...gamepad.hapticActuators);\n\t\treturn {\n\t\t\tid: gamepad.id,\n\t\t\tindex: gamepad.index,\n\t\t\tconnected: gamepad.connected,\n\t\t\tmapping: gamepad.mapping,\n\t\t\ttimestamp: gamepad.timestamp,\n\t\t\tvibrationActuator: gamepad.vibrationActuator,\n\t\t\thapticActuators,\n\t\t\taxes: gamepad.axes.map((axes) => axes),\n\t\t\tbuttons: gamepad.buttons.map((button) => ({\n\t\t\t\tpressed: button.pressed,\n\t\t\t\ttouched: button.touched,\n\t\t\t\tvalue: button.value\n\t\t\t}))\n\t\t};\n\t};\n\tconst updateGamepadState = () => {\n\t\tconst _gamepads = (navigator === null || navigator === void 0 ? void 0 : navigator.getGamepads()) || [];\n\t\tfor (const gamepad of _gamepads) if (gamepad && gamepads.value[gamepad.index]) gamepads.value[gamepad.index] = stateFromGamepad(gamepad);\n\t};\n\tconst { isActive, pause, resume } = useRafFn(updateGamepadState);\n\tconst onGamepadConnected = (gamepad) => {\n\t\tif (!gamepads.value.some(({ index }) => index === gamepad.index)) {\n\t\t\tgamepads.value.push(stateFromGamepad(gamepad));\n\t\t\tonConnectedHook.trigger(gamepad.index);\n\t\t}\n\t\tresume();\n\t};\n\tconst onGamepadDisconnected = (gamepad) => {\n\t\tgamepads.value = gamepads.value.filter((x) => x.index !== gamepad.index);\n\t\tonDisconnectedHook.trigger(gamepad.index);\n\t};\n\tconst listenerOptions = { passive: true };\n\tuseEventListener(\"gamepadconnected\", (e) => onGamepadConnected(e.gamepad), listenerOptions);\n\tuseEventListener(\"gamepaddisconnected\", (e) => onGamepadDisconnected(e.gamepad), listenerOptions);\n\ttryOnMounted(() => {\n\t\tconst _gamepads = (navigator === null || navigator === void 0 ? void 0 : navigator.getGamepads()) || [];\n\t\tfor (const gamepad of _gamepads) if (gamepad && gamepads.value[gamepad.index]) onGamepadConnected(gamepad);\n\t});\n\tpause();\n\treturn {\n\t\tisSupported,\n\t\tonConnected: onConnectedHook.on,\n\t\tonDisconnected: onDisconnectedHook.on,\n\t\tgamepads,\n\t\tpause,\n\t\tresume,\n\t\tisActive\n\t};\n}\n//#endregion\n//#region useGeolocation/index.ts\n/**\n* Reactive Geolocation API.\n*\n* @see https://vueuse.org/useGeolocation\n* @param options\n*/\nfunction useGeolocation(options = {}) {\n\tconst { enableHighAccuracy = true, maximumAge = 3e4, timeout = 27e3, navigator = defaultNavigator, immediate = true } = options;\n\tconst isSupported = /* @__PURE__ */ useSupported(() => navigator && \"geolocation\" in navigator);\n\tconst locatedAt = shallowRef(null);\n\tconst error = shallowRef(null);\n\tconst coords = shallowRef({\n\t\taccuracy: 0,\n\t\tlatitude: Number.POSITIVE_INFINITY,\n\t\tlongitude: Number.POSITIVE_INFINITY,\n\t\taltitude: null,\n\t\taltitudeAccuracy: null,\n\t\theading: null,\n\t\tspeed: null\n\t});\n\tfunction updatePosition(position) {\n\t\tlocatedAt.value = position.timestamp;\n\t\tcoords.value = position.coords;\n\t\terror.value = null;\n\t}\n\tlet watcher;\n\tfunction resume() {\n\t\tif (isSupported.value) watcher = navigator.geolocation.watchPosition(updatePosition, (err) => error.value = err, {\n\t\t\tenableHighAccuracy,\n\t\t\tmaximumAge,\n\t\t\ttimeout\n\t\t});\n\t}\n\tif (immediate) resume();\n\tfunction pause() {\n\t\tif (watcher && navigator) navigator.geolocation.clearWatch(watcher);\n\t}\n\ttryOnScopeDispose(() => {\n\t\tpause();\n\t});\n\treturn {\n\t\tisSupported,\n\t\tcoords,\n\t\tlocatedAt,\n\t\terror,\n\t\tresume,\n\t\tpause\n\t};\n}\n//#endregion\n//#region useIdle/index.ts\nconst defaultEvents$1 = [\n\t\"mousemove\",\n\t\"mousedown\",\n\t\"resize\",\n\t\"keydown\",\n\t\"touchstart\",\n\t\"wheel\"\n];\nconst oneMinute = 6e4;\n/**\n* Tracks whether the user is being inactive.\n*\n* @see https://vueuse.org/useIdle\n* @param timeout default to 1 minute\n* @param options IdleOptions\n*/\nfunction useIdle(timeout = oneMinute, options = {}) {\n\tconst { initialState = false, listenForVisibilityChange = true, events = defaultEvents$1, window = defaultWindow, eventFilter = throttleFilter(50) } = options;\n\tconst idle = shallowRef(initialState);\n\tconst lastActive = shallowRef(timestamp());\n\tconst isPending = shallowRef(false);\n\tlet timer;\n\tconst reset = () => {\n\t\tidle.value = false;\n\t\tclearTimeout(timer);\n\t\ttimer = setTimeout(() => idle.value = true, timeout);\n\t};\n\tconst onEvent = createFilterWrapper(eventFilter, () => {\n\t\tlastActive.value = timestamp();\n\t\treset();\n\t});\n\tif (window) {\n\t\tconst document = window.document;\n\t\tconst listenerOptions = { passive: true };\n\t\tfor (const event of events) useEventListener(window, event, () => {\n\t\t\tif (!isPending.value) return;\n\t\t\tonEvent();\n\t\t}, listenerOptions);\n\t\tif (listenForVisibilityChange) useEventListener(document, \"visibilitychange\", () => {\n\t\t\tif (document.hidden || !isPending.value) return;\n\t\t\tonEvent();\n\t\t}, listenerOptions);\n\t\tstart();\n\t}\n\tfunction start() {\n\t\tif (isPending.value) return;\n\t\tisPending.value = true;\n\t\tif (!initialState) reset();\n\t}\n\tfunction stop() {\n\t\tidle.value = initialState;\n\t\tclearTimeout(timer);\n\t\tisPending.value = false;\n\t}\n\treturn {\n\t\tidle,\n\t\tlastActive,\n\t\treset,\n\t\tstop,\n\t\tstart,\n\t\tisPending: shallowReadonly(isPending)\n\t};\n}\n//#endregion\n//#region useImage/index.ts\nasync function loadImage(options) {\n\treturn new Promise((resolve, reject) => {\n\t\tconst img = new Image();\n\t\tconst { src, srcset, sizes, class: clazz, loading, crossorigin, referrerPolicy, width, height, decoding, fetchPriority, ismap, usemap } = options;\n\t\timg.src = src;\n\t\tif (srcset != null) img.srcset = srcset;\n\t\tif (sizes != null) img.sizes = sizes;\n\t\tif (clazz != null) img.className = clazz;\n\t\tif (loading != null) img.loading = loading;\n\t\tif (crossorigin != null) img.crossOrigin = crossorigin;\n\t\tif (referrerPolicy != null) img.referrerPolicy = referrerPolicy;\n\t\tif (width != null) img.width = width;\n\t\tif (height != null) img.height = height;\n\t\tif (decoding != null) img.decoding = decoding;\n\t\tif (fetchPriority != null) img.fetchPriority = fetchPriority;\n\t\tif (ismap != null) img.isMap = ismap;\n\t\tif (usemap != null) img.useMap = usemap;\n\t\timg.onload = () => resolve(img);\n\t\timg.onerror = reject;\n\t});\n}\n/**\n* Reactive load an image in the browser, you can wait the result to display it or show a fallback.\n*\n* @see https://vueuse.org/useImage\n* @param options Image attributes, as used in the <img> tag\n* @param asyncStateOptions\n*/\nfunction useImage(options, asyncStateOptions = {}) {\n\tconst state = useAsyncState(() => loadImage(toValue(options)), void 0, {\n\t\tresetOnExecute: true,\n\t\t...asyncStateOptions\n\t});\n\twatch(() => toValue(options), () => state.execute(asyncStateOptions.delay), { deep: true });\n\treturn state;\n}\n//#endregion\n//#region _resolve-element.ts\n/**\n* Resolves an element from a given element, window, or document.\n*\n* @internal\n*/\nfunction resolveElement(el) {\n\tif (typeof Window !== \"undefined\" && el instanceof Window) return el.document.documentElement;\n\tif (typeof Document !== \"undefined\" && el instanceof Document) return el.documentElement;\n\treturn el;\n}\n//#endregion\n//#region useScroll/index.ts\n/**\n* We have to check if the scroll amount is close enough to some threshold in order to\n* more accurately calculate arrivedState. This is because scrollTop/scrollLeft are non-rounded\n* numbers, while scrollHeight/scrollWidth and clientHeight/clientWidth are rounded.\n* https://developer.mozilla.org/en-US/docs/Web/API/Element/scrollHeight#determine_if_an_element_has_been_totally_scrolled\n*/\nconst ARRIVED_STATE_THRESHOLD_PIXELS = 1;\n/**\n* Reactive scroll.\n*\n* @see https://vueuse.org/useScroll\n* @param element\n* @param options\n*/\nfunction useScroll(element, options = {}) {\n\tconst { throttle = 0, idle = 200, onStop = noop, onScroll = noop, offset = {\n\t\tleft: 0,\n\t\tright: 0,\n\t\ttop: 0,\n\t\tbottom: 0\n\t}, observe: _observe = { mutation: false }, eventListenerOptions = {\n\t\tcapture: false,\n\t\tpassive: true\n\t}, behavior = \"auto\", window = defaultWindow, onError = (e) => {\n\t\tconsole.error(e);\n\t} } = options;\n\tconst observe = typeof _observe === \"boolean\" ? { mutation: _observe } : _observe;\n\tconst internalX = shallowRef(0);\n\tconst internalY = shallowRef(0);\n\tconst x = computed({\n\t\tget() {\n\t\t\treturn internalX.value;\n\t\t},\n\t\tset(x) {\n\t\t\tscrollTo(x, void 0);\n\t\t}\n\t});\n\tconst y = computed({\n\t\tget() {\n\t\t\treturn internalY.value;\n\t\t},\n\t\tset(y) {\n\t\t\tscrollTo(void 0, y);\n\t\t}\n\t});\n\tfunction scrollTo(_x, _y) {\n\t\tvar _ref, _toValue, _toValue2, _document;\n\t\tif (!window) return;\n\t\tconst _element = toValue(element);\n\t\tif (!_element) return;\n\t\t(_ref = _element instanceof Document ? window.document.body : _element) === null || _ref === void 0 || _ref.scrollTo({\n\t\t\ttop: (_toValue = toValue(_y)) !== null && _toValue !== void 0 ? _toValue : y.value,\n\t\t\tleft: (_toValue2 = toValue(_x)) !== null && _toValue2 !== void 0 ? _toValue2 : x.value,\n\t\t\tbehavior: toValue(behavior)\n\t\t});\n\t\tconst scrollContainer = (_element === null || _element === void 0 || (_document = _element.document) === null || _document === void 0 ? void 0 : _document.documentElement) || (_element === null || _element === void 0 ? void 0 : _element.documentElement) || _element;\n\t\tif (x != null) internalX.value = scrollContainer.scrollLeft;\n\t\tif (y != null) internalY.value = scrollContainer.scrollTop;\n\t}\n\tconst isScrolling = shallowRef(false);\n\tconst arrivedState = reactive({\n\t\tleft: true,\n\t\tright: false,\n\t\ttop: true,\n\t\tbottom: false\n\t});\n\tconst directions = reactive({\n\t\tleft: false,\n\t\tright: false,\n\t\ttop: false,\n\t\tbottom: false\n\t});\n\tconst onScrollEnd = (e) => {\n\t\tif (!isScrolling.value) return;\n\t\tisScrolling.value = false;\n\t\tdirections.left = false;\n\t\tdirections.right = false;\n\t\tdirections.top = false;\n\t\tdirections.bottom = false;\n\t\tonStop(e);\n\t};\n\tconst onScrollEndDebounced = useDebounceFn(onScrollEnd, throttle + idle);\n\tconst setArrivedState = (target) => {\n\t\tvar _document2;\n\t\tif (!window) return;\n\t\tconst el = (target === null || target === void 0 || (_document2 = target.document) === null || _document2 === void 0 ? void 0 : _document2.documentElement) || (target === null || target === void 0 ? void 0 : target.documentElement) || unrefElement(target);\n\t\tconst { display, flexDirection, direction } = window.getComputedStyle(el);\n\t\tconst directionMultipler = direction === \"rtl\" ? -1 : 1;\n\t\tconst scrollLeft = el.scrollLeft;\n\t\tdirections.left = scrollLeft < internalX.value;\n\t\tdirections.right = scrollLeft > internalX.value;\n\t\tconst left = Math.abs(scrollLeft * directionMultipler) <= (offset.left || 0);\n\t\tconst right = Math.abs(scrollLeft * directionMultipler) + el.clientWidth >= el.scrollWidth - (offset.right || 0) - ARRIVED_STATE_THRESHOLD_PIXELS;\n\t\tif (display === \"flex\" && flexDirection === \"row-reverse\") {\n\t\t\tarrivedState.left = right;\n\t\t\tarrivedState.right = left;\n\t\t} else {\n\t\t\tarrivedState.left = left;\n\t\t\tarrivedState.right = right;\n\t\t}\n\t\tinternalX.value = scrollLeft;\n\t\tlet scrollTop = el.scrollTop;\n\t\tif (target === window.document && !scrollTop) scrollTop = window.document.body.scrollTop;\n\t\tdirections.top = scrollTop < internalY.value;\n\t\tdirections.bottom = scrollTop > internalY.value;\n\t\tconst top = Math.abs(scrollTop) <= (offset.top || 0);\n\t\tconst bottom = Math.abs(scrollTop) + el.clientHeight >= el.scrollHeight - (offset.bottom || 0) - ARRIVED_STATE_THRESHOLD_PIXELS;\n\t\t/**\n\t\t* reverse columns and rows behave exactly the other way around,\n\t\t* bottom is treated as top and top is treated as the negative version of bottom\n\t\t*/\n\t\tif (display === \"flex\" && flexDirection === \"column-reverse\") {\n\t\t\tarrivedState.top = bottom;\n\t\t\tarrivedState.bottom = top;\n\t\t} else {\n\t\t\tarrivedState.top = top;\n\t\t\tarrivedState.bottom = bottom;\n\t\t}\n\t\tinternalY.value = scrollTop;\n\t};\n\tconst onScrollHandler = (e) => {\n\t\tvar _documentElement;\n\t\tif (!window) return;\n\t\tsetArrivedState((_documentElement = e.target.documentElement) !== null && _documentElement !== void 0 ? _documentElement : e.target);\n\t\tisScrolling.value = true;\n\t\tonScrollEndDebounced(e);\n\t\tonScroll(e);\n\t};\n\tuseEventListener(element, \"scroll\", throttle ? useThrottleFn(onScrollHandler, throttle, true, false) : onScrollHandler, eventListenerOptions);\n\ttryOnMounted(() => {\n\t\ttry {\n\t\t\tconst _element = toValue(element);\n\t\t\tif (!_element) return;\n\t\t\tsetArrivedState(_element);\n\t\t} catch (e) {\n\t\t\tonError(e);\n\t\t}\n\t});\n\tif ((observe === null || observe === void 0 ? void 0 : observe.mutation) && element != null && element !== window && element !== document) useMutationObserver(element, () => {\n\t\tconst _element = toValue(element);\n\t\tif (!_element) return;\n\t\tsetArrivedState(_element);\n\t}, {\n\t\tattributes: true,\n\t\tchildList: true,\n\t\tsubtree: true\n\t});\n\tuseEventListener(element, \"scrollend\", onScrollEnd, eventListenerOptions);\n\treturn {\n\t\tx,\n\t\ty,\n\t\tisScrolling,\n\t\tarrivedState,\n\t\tdirections,\n\t\tmeasure() {\n\t\t\tconst _element = toValue(element);\n\t\t\tif (window && _element) setArrivedState(_element);\n\t\t}\n\t};\n}\n//#endregion\n//#region useInfiniteScroll/index.ts\n/**\n* Reactive infinite scroll.\n*\n* @see https://vueuse.org/useInfiniteScroll\n*/\nfunction useInfiniteScroll(element, onLoadMore, options = {}) {\n\tvar _options$distance;\n\tconst { direction = \"bottom\", interval = 100, canLoadMore = () => true } = options;\n\tconst state = reactive(useScroll(element, {\n\t\t...options,\n\t\toffset: {\n\t\t\t[direction]: (_options$distance = options.distance) !== null && _options$distance !== void 0 ? _options$distance : 0,\n\t\t\t...options.offset\n\t\t}\n\t}));\n\tconst promise = shallowRef();\n\tconst isLoading = computed(() => !!promise.value);\n\tconst observedElement = computed(() => {\n\t\treturn resolveElement(toValue(element));\n\t});\n\tconst isElementVisible = useElementVisibility(observedElement);\n\tconst canLoad = computed(() => {\n\t\tif (!observedElement.value) return false;\n\t\treturn canLoadMore(observedElement.value);\n\t});\n\tfunction checkAndLoad() {\n\t\tstate.measure();\n\t\tif (!observedElement.value || !isElementVisible.value || !canLoad.value || promise.value) return;\n\t\tconst { scrollHeight, clientHeight, scrollWidth, clientWidth } = observedElement.value;\n\t\tconst isNarrower = direction === \"bottom\" || direction === \"top\" ? scrollHeight <= clientHeight : scrollWidth <= clientWidth;\n\t\tif (state.arrivedState[direction] || isNarrower) promise.value = Promise.all([onLoadMore(state), new Promise((resolve) => setTimeout(resolve, interval))]).finally(() => {\n\t\t\tpromise.value = null;\n\t\t\tnextTick(() => checkAndLoad());\n\t\t});\n\t}\n\ttryOnUnmounted(watch(() => [\n\t\tstate.arrivedState[direction],\n\t\tisElementVisible.value,\n\t\tcanLoad.value\n\t], checkAndLoad, {\n\t\timmediate: true,\n\t\tflush: \"post\"\n\t}));\n\treturn {\n\t\tisLoading,\n\t\treset() {\n\t\t\tnextTick(() => checkAndLoad());\n\t\t}\n\t};\n}\n//#endregion\n//#region useKeyModifier/index.ts\nconst defaultEvents = [\n\t\"mousedown\",\n\t\"mouseup\",\n\t\"keydown\",\n\t\"keyup\"\n];\n/* @__NO_SIDE_EFFECTS__ */\nfunction useKeyModifier(modifier, options = {}) {\n\tconst { events = defaultEvents, document = defaultDocument, initial = null } = options;\n\tconst state = shallowRef(initial);\n\tif (document) events.forEach((listenerEvent) => {\n\t\tuseEventListener(document, listenerEvent, (evt) => {\n\t\t\tif (typeof evt.getModifierState === \"function\") state.value = evt.getModifierState(modifier);\n\t\t}, { passive: true });\n\t});\n\treturn state;\n}\n//#endregion\n//#region useLocalStorage/index.ts\n/**\n* Reactive LocalStorage.\n*\n* @see https://vueuse.org/useLocalStorage\n* @param key\n* @param initialValue\n* @param options\n*/\nfunction useLocalStorage(key, initialValue, options = {}) {\n\tconst { window = defaultWindow } = options;\n\treturn useStorage(key, initialValue, window === null || window === void 0 ? void 0 : window.localStorage, options);\n}\n//#endregion\n//#region useMagicKeys/aliasMap.ts\nconst DefaultMagicKeysAliasMap = {\n\tctrl: \"control\",\n\tcommand: \"meta\",\n\tcmd: \"meta\",\n\toption: \"alt\",\n\tup: \"arrowup\",\n\tdown: \"arrowdown\",\n\tleft: \"arrowleft\",\n\tright: \"arrowright\"\n};\n//#endregion\n//#region useMagicKeys/index.ts\n/**\n* Reactive keys pressed state, with magical keys combination support.\n*\n* @see https://vueuse.org/useMagicKeys\n*/\nfunction useMagicKeys(options = {}) {\n\tconst { reactive: useReactive = false, target = defaultWindow, aliasMap = DefaultMagicKeysAliasMap, passive = true, onEventFired = noop } = options;\n\tconst current = reactive(/* @__PURE__ */ new Set());\n\tconst obj = {\n\t\ttoJSON() {\n\t\t\treturn {};\n\t\t},\n\t\tcurrent\n\t};\n\tconst refs = useReactive ? reactive(obj) : obj;\n\tconst metaDeps = /* @__PURE__ */ new Set();\n\tconst depsMap = new Map([\n\t\t[\"Meta\", metaDeps],\n\t\t[\"Shift\", /* @__PURE__ */ new Set()],\n\t\t[\"Alt\", /* @__PURE__ */ new Set()]\n\t]);\n\tconst usedKeys = /* @__PURE__ */ new Set();\n\tfunction setRefs(key, value) {\n\t\tif (key in refs) if (useReactive) refs[key] = value;\n\t\telse refs[key].value = value;\n\t}\n\tfunction reset() {\n\t\tcurrent.clear();\n\t\tfor (const key of usedKeys) setRefs(key, false);\n\t}\n\tfunction updateDeps(value, e, keys) {\n\t\tif (!value || typeof e.getModifierState !== \"function\") return;\n\t\tfor (const [modifier, depsSet] of depsMap) if (e.getModifierState(modifier)) {\n\t\t\tkeys.forEach((key) => depsSet.add(key));\n\t\t\tbreak;\n\t\t}\n\t}\n\tfunction clearDeps(value, key) {\n\t\tif (value) return;\n\t\tconst depsMapKey = `${key[0].toUpperCase()}${key.slice(1)}`;\n\t\tconst deps = depsMap.get(depsMapKey);\n\t\tif (![\"shift\", \"alt\"].includes(key) || !deps) return;\n\t\tconst depsArray = Array.from(deps);\n\t\tconst depsIndex = depsArray.indexOf(key);\n\t\tdepsArray.forEach((key, index) => {\n\t\t\tif (index >= depsIndex) {\n\t\t\t\tcurrent.delete(key);\n\t\t\t\tsetRefs(key, false);\n\t\t\t}\n\t\t});\n\t\tdeps.clear();\n\t}\n\tfunction updateRefs(e, value) {\n\t\tvar _e$key, _e$code;\n\t\tconst key = (_e$key = e.key) === null || _e$key === void 0 ? void 0 : _e$key.toLowerCase();\n\t\tconst values = [(_e$code = e.code) === null || _e$code === void 0 ? void 0 : _e$code.toLowerCase(), key].filter(Boolean);\n\t\tif (!key) return;\n\t\tif (key) if (value) current.add(key);\n\t\telse current.delete(key);\n\t\tfor (const key of values) {\n\t\t\tusedKeys.add(key);\n\t\t\tsetRefs(key, value);\n\t\t}\n\t\tupdateDeps(value, e, [...current, ...values]);\n\t\tclearDeps(value, key);\n\t\tif (key === \"meta\" && !value) {\n\t\t\tmetaDeps.forEach((key) => {\n\t\t\t\tcurrent.delete(key);\n\t\t\t\tsetRefs(key, false);\n\t\t\t});\n\t\t\tmetaDeps.clear();\n\t\t}\n\t}\n\tuseEventListener(target, \"keydown\", (e) => {\n\t\tupdateRefs(e, true);\n\t\treturn onEventFired(e);\n\t}, { passive });\n\tuseEventListener(target, \"keyup\", (e) => {\n\t\tupdateRefs(e, false);\n\t\treturn onEventFired(e);\n\t}, { passive });\n\tuseEventListener(\"blur\", reset, { passive });\n\tuseEventListener(\"focus\", reset, { passive });\n\tconst proxy = new Proxy(refs, { get(target, prop, rec) {\n\t\tif (typeof prop !== \"string\") return Reflect.get(target, prop, rec);\n\t\tprop = prop.toLowerCase();\n\t\tif (prop in aliasMap) prop = aliasMap[prop];\n\t\tif (!(prop in refs)) if (/[+_-]/.test(prop)) {\n\t\t\tconst keys = prop.split(/[+_-]/g).map((i) => i.trim());\n\t\t\trefs[prop] = computed(() => keys.map((key) => toValue(proxy[key])).every(Boolean));\n\t\t} else refs[prop] = shallowRef(false);\n\t\tconst r = Reflect.get(target, prop, rec);\n\t\treturn useReactive ? toValue(r) : r;\n\t} });\n\treturn proxy;\n}\n//#endregion\n//#region useMediaControls/index.ts\n/**\n* Automatically check if the ref exists and if it does run the cb fn\n*/\nfunction usingElRef(source, cb) {\n\tif (toValue(source)) cb(toValue(source));\n}\n/**\n* Converts a TimeRange object to an array\n*/\nfunction timeRangeToArray(timeRanges) {\n\tlet ranges = [];\n\tfor (let i = 0; i < timeRanges.length; ++i) ranges = [...ranges, [timeRanges.start(i), timeRanges.end(i)]];\n\treturn ranges;\n}\n/**\n* Converts a TextTrackList object to an array of `UseMediaTextTrack`\n*/\nfunction tracksToArray(tracks) {\n\treturn Array.from(tracks).map(({ label, kind, language, mode, activeCues, cues, inBandMetadataTrackDispatchType }, id) => ({\n\t\tid,\n\t\tlabel,\n\t\tkind,\n\t\tlanguage,\n\t\tmode,\n\t\tactiveCues,\n\t\tcues,\n\t\tinBandMetadataTrackDispatchType\n\t}));\n}\nconst defaultOptions = {\n\tsrc: \"\",\n\ttracks: []\n};\nfunction useMediaControls(target, options = {}) {\n\ttarget = toRef(target);\n\toptions = {\n\t\t...defaultOptions,\n\t\t...options\n\t};\n\tconst { document = defaultDocument } = options;\n\tconst listenerOptions = { passive: true };\n\tconst currentTime = shallowRef(0);\n\tconst duration = shallowRef(0);\n\tconst seeking = shallowRef(false);\n\tconst volume = shallowRef(1);\n\tconst waiting = shallowRef(false);\n\tconst ended = shallowRef(false);\n\tconst playing = shallowRef(false);\n\tconst rate = shallowRef(1);\n\tconst stalled = shallowRef(false);\n\tconst buffered = shallowRef([]);\n\tconst tracks = shallowRef([]);\n\tconst selectedTrack = shallowRef(-1);\n\tconst isPictureInPicture = shallowRef(false);\n\tconst muted = shallowRef(false);\n\tconst supportsPictureInPicture = Boolean(document && \"pictureInPictureEnabled\" in document);\n\tconst sourceErrorEvent = createEventHook();\n\tconst playbackErrorEvent = createEventHook();\n\t/**\n\t* Disables the specified track. If no track is specified then\n\t* all tracks will be disabled\n\t*\n\t* @param track The id of the track to disable\n\t*/\n\tconst disableTrack = (track) => {\n\t\tusingElRef(target, (el) => {\n\t\t\tif (track) {\n\t\t\t\tconst id = typeof track === \"number\" ? track : track.id;\n\t\t\t\tel.textTracks[id].mode = \"disabled\";\n\t\t\t} else for (let i = 0; i < el.textTracks.length; ++i) el.textTracks[i].mode = \"disabled\";\n\t\t\tselectedTrack.value = -1;\n\t\t});\n\t};\n\t/**\n\t* Enables the specified track and disables the\n\t* other tracks unless otherwise specified\n\t*\n\t* @param track The track of the id of the track to enable\n\t* @param disableTracks Disable all other tracks\n\t*/\n\tconst enableTrack = (track, disableTracks = true) => {\n\t\tusingElRef(target, (el) => {\n\t\t\tconst id = typeof track === \"number\" ? track : track.id;\n\t\t\tif (disableTracks) disableTrack();\n\t\t\tel.textTracks[id].mode = \"showing\";\n\t\t\tselectedTrack.value = id;\n\t\t});\n\t};\n\t/**\n\t* Toggle picture in picture mode for the player.\n\t*/\n\tconst togglePictureInPicture = () => {\n\t\treturn new Promise((resolve, reject) => {\n\t\t\tusingElRef(target, async (el) => {\n\t\t\t\tif (supportsPictureInPicture) if (!isPictureInPicture.value) el.requestPictureInPicture().then(resolve).catch(reject);\n\t\t\t\telse document.exitPictureInPicture().then(resolve).catch(reject);\n\t\t\t});\n\t\t});\n\t};\n\t/**\n\t* This will automatically inject sources to the media element. The sources will be\n\t* appended as children to the media element as `<source>` elements.\n\t*/\n\twatchEffect(() => {\n\t\tif (!document) return;\n\t\tconst el = toValue(target);\n\t\tif (!el) return;\n\t\tconst src = toValue(options.src);\n\t\tlet sources = [];\n\t\tif (!src) return;\n\t\tif (typeof src === \"string\") sources = [{ src }];\n\t\telse if (Array.isArray(src)) sources = src;\n\t\telse if (isObject(src)) sources = [src];\n\t\tel.querySelectorAll(\"source\").forEach((e) => {\n\t\t\te.remove();\n\t\t});\n\t\tsources.forEach(({ src, type, media }) => {\n\t\t\tconst source = document.createElement(\"source\");\n\t\t\tsource.setAttribute(\"src\", src);\n\t\t\tsource.setAttribute(\"type\", type || \"\");\n\t\t\tsource.setAttribute(\"media\", media || \"\");\n\t\t\tuseEventListener(source, \"error\", sourceErrorEvent.trigger, listenerOptions);\n\t\t\tel.appendChild(source);\n\t\t});\n\t\tel.load();\n\t});\n\t/**\n\t* Apply composable state to the element, also when element is changed\n\t*/\n\twatch([target, volume], () => {\n\t\tconst el = toValue(target);\n\t\tif (!el) return;\n\t\tel.volume = volume.value;\n\t});\n\twatch([target, muted], () => {\n\t\tconst el = toValue(target);\n\t\tif (!el) return;\n\t\tel.muted = muted.value;\n\t});\n\twatch([target, rate], () => {\n\t\tconst el = toValue(target);\n\t\tif (!el) return;\n\t\tel.playbackRate = rate.value;\n\t});\n\t/**\n\t* Load Tracks\n\t*/\n\twatchEffect(() => {\n\t\tif (!document) return;\n\t\tconst textTracks = toValue(options.tracks);\n\t\tconst el = toValue(target);\n\t\tif (!textTracks || !textTracks.length || !el) return;\n\t\t/**\n\t\t* The MediaAPI provides an API for adding text tracks, but they don't currently\n\t\t* have an API for removing text tracks, so instead we will just create and remove\n\t\t* the tracks manually using the HTML api.\n\t\t*/\n\t\tel.querySelectorAll(\"track\").forEach((e) => e.remove());\n\t\ttextTracks.forEach(({ default: isDefault, kind, label, src, srcLang }, i) => {\n\t\t\tconst track = document.createElement(\"track\");\n\t\t\ttrack.default = isDefault || false;\n\t\t\ttrack.kind = kind;\n\t\t\ttrack.label = label;\n\t\t\ttrack.src = src;\n\t\t\ttrack.srclang = srcLang;\n\t\t\tif (track.default) selectedTrack.value = i;\n\t\t\tel.appendChild(track);\n\t\t});\n\t});\n\t/**\n\t* This will allow us to update the current time from the timeupdate event\n\t* without setting the medias current position, but if the user changes the\n\t* current time via the ref, then the media will seek.\n\t*\n\t* If we did not use an ignorable watch, then the current time update from\n\t* the timeupdate event would cause the media to stutter.\n\t*/\n\tconst { ignoreUpdates: ignoreCurrentTimeUpdates } = watchIgnorable(currentTime, (time) => {\n\t\tconst el = toValue(target);\n\t\tif (!el) return;\n\t\tel.currentTime = time;\n\t});\n\t/**\n\t* Using an ignorable watch so we can control the play state using a ref and not\n\t* a function\n\t*/\n\tconst { ignoreUpdates: ignorePlayingUpdates } = watchIgnorable(playing, (isPlaying) => {\n\t\tconst el = toValue(target);\n\t\tif (!el) return;\n\t\tif (isPlaying) el.play().catch((e) => {\n\t\t\tplaybackErrorEvent.trigger(e);\n\t\t\tthrow e;\n\t\t});\n\t\telse el.pause();\n\t});\n\tuseEventListener(target, \"timeupdate\", () => ignoreCurrentTimeUpdates(() => currentTime.value = toValue(target).currentTime), listenerOptions);\n\tuseEventListener(target, \"durationchange\", () => duration.value = toValue(target).duration, listenerOptions);\n\tuseEventListener(target, \"progress\", () => buffered.value = timeRangeToArray(toValue(target).buffered), listenerOptions);\n\tuseEventListener(target, \"seeking\", () => seeking.value = true, listenerOptions);\n\tuseEventListener(target, \"seeked\", () => seeking.value = false, listenerOptions);\n\tuseEventListener(target, [\"waiting\", \"loadstart\"], () => {\n\t\twaiting.value = true;\n\t\tignorePlayingUpdates(() => playing.value = false);\n\t}, listenerOptions);\n\tuseEventListener(target, \"loadeddata\", () => waiting.value = false, listenerOptions);\n\tuseEventListener(target, \"playing\", () => {\n\t\twaiting.value = false;\n\t\tended.value = false;\n\t\tignorePlayingUpdates(() => playing.value = true);\n\t}, listenerOptions);\n\tuseEventListener(target, \"ratechange\", () => rate.value = toValue(target).playbackRate, listenerOptions);\n\tuseEventListener(target, \"stalled\", () => stalled.value = true, listenerOptions);\n\tuseEventListener(target, \"ended\", () => ended.value = true, listenerOptions);\n\tuseEventListener(target, \"pause\", () => ignorePlayingUpdates(() => playing.value = false), listenerOptions);\n\tuseEventListener(target, \"play\", () => ignorePlayingUpdates(() => playing.value = true), listenerOptions);\n\tuseEventListener(target, \"enterpictureinpicture\", () => isPictureInPicture.value = true, listenerOptions);\n\tuseEventListener(target, \"leavepictureinpicture\", () => isPictureInPicture.value = false, listenerOptions);\n\tuseEventListener(target, \"volumechange\", () => {\n\t\tconst el = toValue(target);\n\t\tif (!el) return;\n\t\tvolume.value = el.volume;\n\t\tmuted.value = el.muted;\n\t}, listenerOptions);\n\t/**\n\t* The following listeners need to listen to a nested\n\t* object on the target, so we will have to use a nested\n\t* watch and manually remove the listeners\n\t*/\n\tconst listeners = [];\n\tconst stop = watch([target], () => {\n\t\tconst el = toValue(target);\n\t\tif (!el) return;\n\t\tstop();\n\t\tlisteners[0] = useEventListener(el.textTracks, \"addtrack\", () => tracks.value = tracksToArray(el.textTracks), listenerOptions);\n\t\tlisteners[1] = useEventListener(el.textTracks, \"removetrack\", () => tracks.value = tracksToArray(el.textTracks), listenerOptions);\n\t\tlisteners[2] = useEventListener(el.textTracks, \"change\", () => tracks.value = tracksToArray(el.textTracks), listenerOptions);\n\t});\n\ttryOnScopeDispose(() => listeners.forEach((listener) => listener()));\n\treturn {\n\t\tcurrentTime,\n\t\tduration,\n\t\twaiting,\n\t\tseeking,\n\t\tended,\n\t\tstalled,\n\t\tbuffered,\n\t\tplaying,\n\t\trate,\n\t\tvolume,\n\t\tmuted,\n\t\ttracks,\n\t\tselectedTrack,\n\t\tenableTrack,\n\t\tdisableTrack,\n\t\tsupportsPictureInPicture,\n\t\ttogglePictureInPicture,\n\t\tisPictureInPicture,\n\t\tonSourceError: sourceErrorEvent.on,\n\t\tonPlaybackError: playbackErrorEvent.on\n\t};\n}\n//#endregion\n//#region useMemoize/index.ts\n/**\n* Reactive function result cache based on arguments\n*\n* @__NO_SIDE_EFFECTS__\n*/\nfunction useMemoize(resolver, options) {\n\tconst initCache = () => {\n\t\tif (options === null || options === void 0 ? void 0 : options.cache) return shallowReactive(options.cache);\n\t\treturn shallowReactive(/* @__PURE__ */ new Map());\n\t};\n\tconst cache = initCache();\n\t/**\n\t* Generate key from args\n\t*/\n\tconst generateKey = (...args) => (options === null || options === void 0 ? void 0 : options.getKey) ? options.getKey(...args) : JSON.stringify(args);\n\t/**\n\t* Load data and save in cache\n\t*/\n\tconst _loadData = (key, ...args) => {\n\t\tcache.set(key, resolver(...args));\n\t\treturn cache.get(key);\n\t};\n\tconst loadData = (...args) => _loadData(generateKey(...args), ...args);\n\t/**\n\t* Delete key from cache\n\t*/\n\tconst deleteData = (...args) => {\n\t\tcache.delete(generateKey(...args));\n\t};\n\t/**\n\t* Clear cached data\n\t*/\n\tconst clearData = () => {\n\t\tcache.clear();\n\t};\n\tconst memoized = (...args) => {\n\t\tconst key = generateKey(...args);\n\t\tif (cache.has(key)) return cache.get(key);\n\t\treturn _loadData(key, ...args);\n\t};\n\tmemoized.load = loadData;\n\tmemoized.delete = deleteData;\n\tmemoized.clear = clearData;\n\tmemoized.generateKey = generateKey;\n\tmemoized.cache = cache;\n\treturn memoized;\n}\n//#endregion\n//#region useMemory/index.ts\nfunction getDefaultScheduler$6(options) {\n\tif (\"interval\" in options || \"immediate\" in options || \"immediateCallback\" in options) {\n\t\tconst { interval = 1e3, immediate, immediateCallback } = options;\n\t\treturn (cb) => useIntervalFn(cb, interval, {\n\t\t\timmediate,\n\t\t\timmediateCallback\n\t\t});\n\t}\n\treturn useIntervalFn;\n}\n/**\n* Reactive Memory Info.\n*\n* @see https://vueuse.org/useMemory\n* @param options\n*\n* @__NO_SIDE_EFFECTS__\n*/\nfunction useMemory(options = {}) {\n\tconst memory = shallowRef();\n\tconst isSupported = /* @__PURE__ */ useSupported(() => typeof performance !== \"undefined\" && \"memory\" in performance);\n\tif (isSupported.value) {\n\t\tconst { scheduler = getDefaultScheduler$6 } = options;\n\t\tscheduler(() => {\n\t\t\tmemory.value = performance.memory;\n\t\t});\n\t}\n\treturn {\n\t\tisSupported,\n\t\tmemory\n\t};\n}\n//#endregion\n//#region useMouse/index.ts\nconst UseMouseBuiltinExtractors = {\n\tpage: (event) => [event.pageX, event.pageY],\n\tclient: (event) => [event.clientX, event.clientY],\n\tscreen: (event) => [event.screenX, event.screenY],\n\tmovement: (event) => event instanceof MouseEvent ? [event.movementX, event.movementY] : null\n};\n/**\n* Reactive mouse position.\n*\n* @see https://vueuse.org/useMouse\n* @param options\n*/\nfunction useMouse(options = {}) {\n\tconst { type = \"page\", touch = true, resetOnTouchEnds = false, initialValue = {\n\t\tx: 0,\n\t\ty: 0\n\t}, window = defaultWindow, target = window, scroll = true, eventFilter } = options;\n\tlet _prevMouseEvent = null;\n\tlet _prevScrollX = 0;\n\tlet _prevScrollY = 0;\n\tconst x = shallowRef(initialValue.x);\n\tconst y = shallowRef(initialValue.y);\n\tconst sourceType = shallowRef(null);\n\tconst extractor = typeof type === \"function\" ? type : UseMouseBuiltinExtractors[type];\n\tconst mouseHandler = (event) => {\n\t\tconst result = extractor(event);\n\t\t_prevMouseEvent = event;\n\t\tif (result) {\n\t\t\t[x.value, y.value] = result;\n\t\t\tsourceType.value = \"mouse\";\n\t\t}\n\t\tif (window) {\n\t\t\t_prevScrollX = window.scrollX;\n\t\t\t_prevScrollY = window.scrollY;\n\t\t}\n\t};\n\tconst touchHandler = (event) => {\n\t\tif (event.touches.length > 0) {\n\t\t\tconst result = extractor(event.touches[0]);\n\t\t\tif (result) {\n\t\t\t\t[x.value, y.value] = result;\n\t\t\t\tsourceType.value = \"touch\";\n\t\t\t}\n\t\t}\n\t};\n\tconst scrollHandler = () => {\n\t\tif (!_prevMouseEvent || !window) return;\n\t\tconst pos = extractor(_prevMouseEvent);\n\t\tif (_prevMouseEvent instanceof MouseEvent && pos) {\n\t\t\tx.value = pos[0] + window.scrollX - _prevScrollX;\n\t\t\ty.value = pos[1] + window.scrollY - _prevScrollY;\n\t\t}\n\t};\n\tconst reset = () => {\n\t\tx.value = initialValue.x;\n\t\ty.value = initialValue.y;\n\t};\n\tconst mouseHandlerWrapper = eventFilter ? (event) => eventFilter(() => mouseHandler(event), {}) : (event) => mouseHandler(event);\n\tconst touchHandlerWrapper = eventFilter ? (event) => eventFilter(() => touchHandler(event), {}) : (event) => touchHandler(event);\n\tconst scrollHandlerWrapper = eventFilter ? () => eventFilter(() => scrollHandler(), {}) : () => scrollHandler();\n\tif (target) {\n\t\tconst listenerOptions = { passive: true };\n\t\tuseEventListener(target, [\"mousemove\", \"dragover\"], mouseHandlerWrapper, listenerOptions);\n\t\tif (touch && type !== \"movement\") {\n\t\t\tuseEventListener(target, [\"touchstart\", \"touchmove\"], touchHandlerWrapper, listenerOptions);\n\t\t\tif (resetOnTouchEnds) useEventListener(target, \"touchend\", reset, listenerOptions);\n\t\t}\n\t\tif (scroll && type === \"page\") useEventListener(window, \"scroll\", scrollHandlerWrapper, listenerOptions);\n\t}\n\treturn {\n\t\tx,\n\t\ty,\n\t\tsourceType\n\t};\n}\n//#endregion\n//#region useMouseInElement/index.ts\n/**\n* Reactive mouse position related to an element.\n*\n* @see https://vueuse.org/useMouseInElement\n* @param target\n* @param options\n*/\nfunction useMouseInElement(target, options = {}) {\n\tconst { windowResize = true, windowScroll = true, handleOutside = true, window = defaultWindow } = options;\n\tconst type = options.type || \"page\";\n\tconst { x, y, sourceType } = useMouse(options);\n\tconst targetRef = shallowRef(target !== null && target !== void 0 ? target : window === null || window === void 0 ? void 0 : window.document.body);\n\tconst elementX = shallowRef(0);\n\tconst elementY = shallowRef(0);\n\tconst elementPositionX = shallowRef(0);\n\tconst elementPositionY = shallowRef(0);\n\tconst elementHeight = shallowRef(0);\n\tconst elementWidth = shallowRef(0);\n\tconst isOutside = shallowRef(true);\n\tfunction update() {\n\t\tif (!window) return;\n\t\tconst el = unrefElement(targetRef);\n\t\tif (!el || !(el instanceof Element)) return;\n\t\tfor (const rect of el.getClientRects()) {\n\t\t\tconst { left, top, width, height } = rect;\n\t\t\telementPositionX.value = left + (type === \"page\" ? window.pageXOffset : 0);\n\t\t\telementPositionY.value = top + (type === \"page\" ? window.pageYOffset : 0);\n\t\t\telementHeight.value = height;\n\t\t\telementWidth.value = width;\n\t\t\tconst elX = x.value - elementPositionX.value;\n\t\t\tconst elY = y.value - elementPositionY.value;\n\t\t\tisOutside.value = width === 0 || height === 0 || elX < 0 || elY < 0 || elX > width || elY > height;\n\t\t\tif (handleOutside || !isOutside.value) {\n\t\t\t\telementX.value = elX;\n\t\t\t\telementY.value = elY;\n\t\t\t}\n\t\t\tif (!isOutside.value) break;\n\t\t}\n\t}\n\tconst stopFnList = [];\n\tfunction stop() {\n\t\tstopFnList.forEach((fn) => fn());\n\t\tstopFnList.length = 0;\n\t}\n\ttryOnMounted(() => {\n\t\tupdate();\n\t});\n\tif (window) {\n\t\tconst { stop: stopResizeObserver } = useResizeObserver(targetRef, update);\n\t\tconst { stop: stopMutationObserver } = useMutationObserver(targetRef, update, { attributeFilter: [\"style\", \"class\"] });\n\t\tconst stopWatch = watch([\n\t\t\ttargetRef,\n\t\t\tx,\n\t\t\ty\n\t\t], update);\n\t\tstopFnList.push(stopResizeObserver, stopMutationObserver, stopWatch);\n\t\tuseEventListener(document, \"mouseleave\", () => isOutside.value = true, { passive: true });\n\t\tif (windowScroll) stopFnList.push(useEventListener(\"scroll\", update, {\n\t\t\tcapture: true,\n\t\t\tpassive: true\n\t\t}));\n\t\tif (windowResize) stopFnList.push(useEventListener(\"resize\", update, { passive: true }));\n\t}\n\treturn {\n\t\tx,\n\t\ty,\n\t\tsourceType,\n\t\telementX,\n\t\telementY,\n\t\telementPositionX,\n\t\telementPositionY,\n\t\telementHeight,\n\t\telementWidth,\n\t\tisOutside,\n\t\tstop\n\t};\n}\n//#endregion\n//#region useMousePressed/index.ts\n/**\n* Reactive mouse pressing state.\n*\n* @see https://vueuse.org/useMousePressed\n* @param options\n*/\nfunction useMousePressed(options = {}) {\n\tconst { touch = true, drag = true, capture = false, initialValue = false, window = defaultWindow } = options;\n\tconst pressed = shallowRef(initialValue);\n\tconst sourceType = shallowRef(null);\n\tif (!window) return {\n\t\tpressed,\n\t\tsourceType\n\t};\n\tconst onPressed = (srcType) => (event) => {\n\t\tvar _options$onPressed;\n\t\tpressed.value = true;\n\t\tsourceType.value = srcType;\n\t\t(_options$onPressed = options.onPressed) === null || _options$onPressed === void 0 || _options$onPressed.call(options, event);\n\t};\n\tconst onReleased = (event) => {\n\t\tvar _options$onReleased;\n\t\tpressed.value = false;\n\t\tsourceType.value = null;\n\t\t(_options$onReleased = options.onReleased) === null || _options$onReleased === void 0 || _options$onReleased.call(options, event);\n\t};\n\tconst target = computed(() => unrefElement(options.target) || window);\n\tconst listenerOptions = {\n\t\tpassive: true,\n\t\tcapture\n\t};\n\tuseEventListener(target, \"mousedown\", onPressed(\"mouse\"), listenerOptions);\n\tuseEventListener(window, \"mouseleave\", onReleased, listenerOptions);\n\tuseEventListener(window, \"mouseup\", onReleased, listenerOptions);\n\tif (drag) {\n\t\tuseEventListener(target, \"dragstart\", onPressed(\"mouse\"), listenerOptions);\n\t\tuseEventListener(window, \"drop\", onReleased, listenerOptions);\n\t\tuseEventListener(window, \"dragend\", onReleased, listenerOptions);\n\t}\n\tif (touch) {\n\t\tuseEventListener(target, \"touchstart\", onPressed(\"touch\"), listenerOptions);\n\t\tuseEventListener(window, \"touchend\", onReleased, listenerOptions);\n\t\tuseEventListener(window, \"touchcancel\", onReleased, listenerOptions);\n\t}\n\treturn {\n\t\tpressed,\n\t\tsourceType\n\t};\n}\n//#endregion\n//#region useNavigatorLanguage/index.ts\n/**\n*\n* Reactive useNavigatorLanguage\n*\n* Detects the currently selected user language and returns a reactive language\n* @see https://vueuse.org/useNavigatorLanguage\n*\n* @__NO_SIDE_EFFECTS__\n*/\nfunction useNavigatorLanguage(options = {}) {\n\tconst { window = defaultWindow } = options;\n\tconst navigator = window === null || window === void 0 ? void 0 : window.navigator;\n\tconst isSupported = /* @__PURE__ */ useSupported(() => navigator && \"language\" in navigator);\n\tconst language = shallowRef(navigator === null || navigator === void 0 ? void 0 : navigator.language);\n\tuseEventListener(window, \"languagechange\", () => {\n\t\tif (navigator) language.value = navigator.language;\n\t}, { passive: true });\n\treturn {\n\t\tisSupported,\n\t\tlanguage\n\t};\n}\n//#endregion\n//#region useNetwork/index.ts\n/**\n* Reactive Network status.\n*\n* @see https://vueuse.org/useNetwork\n* @param options\n*\n* @__NO_SIDE_EFFECTS__\n*/\nfunction useNetwork(options = {}) {\n\tconst { window = defaultWindow } = options;\n\tconst navigator = window === null || window === void 0 ? void 0 : window.navigator;\n\tconst isSupported = /* @__PURE__ */ useSupported(() => navigator && \"connection\" in navigator);\n\tconst isOnline = shallowRef(true);\n\tconst saveData = shallowRef(false);\n\tconst offlineAt = shallowRef(void 0);\n\tconst onlineAt = shallowRef(void 0);\n\tconst downlink = shallowRef(void 0);\n\tconst downlinkMax = shallowRef(void 0);\n\tconst rtt = shallowRef(void 0);\n\tconst effectiveType = shallowRef(void 0);\n\tconst type = shallowRef(\"unknown\");\n\tconst connection = isSupported.value && navigator.connection;\n\tfunction updateNetworkInformation() {\n\t\tif (!navigator) return;\n\t\tisOnline.value = navigator.onLine;\n\t\tofflineAt.value = isOnline.value ? void 0 : Date.now();\n\t\tonlineAt.value = isOnline.value ? Date.now() : void 0;\n\t\tif (connection) {\n\t\t\tdownlink.value = connection.downlink;\n\t\t\tdownlinkMax.value = connection.downlinkMax;\n\t\t\teffectiveType.value = connection.effectiveType;\n\t\t\trtt.value = connection.rtt;\n\t\t\tsaveData.value = connection.saveData;\n\t\t\ttype.value = connection.type;\n\t\t}\n\t}\n\tconst listenerOptions = { passive: true };\n\tif (window) {\n\t\tuseEventListener(window, \"offline\", () => {\n\t\t\tisOnline.value = false;\n\t\t\tofflineAt.value = Date.now();\n\t\t}, listenerOptions);\n\t\tuseEventListener(window, \"online\", () => {\n\t\t\tisOnline.value = true;\n\t\t\tonlineAt.value = Date.now();\n\t\t}, listenerOptions);\n\t}\n\tif (connection) useEventListener(connection, \"change\", updateNetworkInformation, listenerOptions);\n\tupdateNetworkInformation();\n\treturn {\n\t\tisSupported,\n\t\tisOnline: shallowReadonly(isOnline),\n\t\tsaveData: shallowReadonly(saveData),\n\t\tofflineAt: shallowReadonly(offlineAt),\n\t\tonlineAt: shallowReadonly(onlineAt),\n\t\tdownlink: shallowReadonly(downlink),\n\t\tdownlinkMax: shallowReadonly(downlinkMax),\n\t\teffectiveType: shallowReadonly(effectiveType),\n\t\trtt: shallowReadonly(rtt),\n\t\ttype: shallowReadonly(type)\n\t};\n}\n//#endregion\n//#region useNow/index.ts\nfunction getDefaultScheduler$5(options) {\n\tif (\"interval\" in options || \"immediate\" in options) {\n\t\tconst { interval = \"requestAnimationFrame\", immediate = true } = options;\n\t\treturn interval === \"requestAnimationFrame\" ? (fn) => useRafFn(fn, { immediate }) : (fn) => useIntervalFn(fn, interval, options);\n\t}\n\treturn useRafFn;\n}\n/**\n* Reactive current Date instance.\n*\n* @see https://vueuse.org/useNow\n* @param options\n*\n* @__NO_SIDE_EFFECTS__\n*/\nfunction useNow(options = {}) {\n\tconst { controls: exposeControls = false, scheduler = getDefaultScheduler$5(options) } = options;\n\tconst now = shallowRef(/* @__PURE__ */ new Date());\n\tconst update = () => now.value = /* @__PURE__ */ new Date();\n\tconst controls = scheduler(update);\n\tif (exposeControls) return {\n\t\tnow,\n\t\t...controls\n\t};\n\telse return now;\n}\n//#endregion\n//#region useObjectUrl/index.ts\n/**\n* Reactive URL representing an object.\n*\n* @see https://vueuse.org/useObjectUrl\n* @param object\n*/\nfunction useObjectUrl(object) {\n\tconst url = shallowRef();\n\tconst release = () => {\n\t\tif (url.value) URL.revokeObjectURL(url.value);\n\t\turl.value = void 0;\n\t};\n\twatch(() => toValue(object), (newObject) => {\n\t\trelease();\n\t\tif (newObject) url.value = URL.createObjectURL(newObject);\n\t}, { immediate: true });\n\ttryOnScopeDispose(release);\n\treturn shallowReadonly(url);\n}\n//#endregion\n//#region ../math/useClamp/index.ts\n/**\n* Reactively clamp a value between two other values.\n*\n* @see https://vueuse.org/useClamp\n* @param value number\n* @param min\n* @param max\n*\n* @__NO_SIDE_EFFECTS__\n*/\nfunction useClamp(value, min, max) {\n\tif (typeof value === \"function\" || isReadonly(value)) return computed(() => clamp(toValue(value), toValue(min), toValue(max)));\n\tconst _value = ref(value);\n\treturn computed({\n\t\tget() {\n\t\t\treturn _value.value = clamp(_value.value, toValue(min), toValue(max));\n\t\t},\n\t\tset(value) {\n\t\t\t_value.value = clamp(value, toValue(min), toValue(max));\n\t\t}\n\t});\n}\n//#endregion\n//#region useOffsetPagination/index.ts\nfunction useOffsetPagination(options) {\n\tconst { total = Number.POSITIVE_INFINITY, pageSize = 10, page = 1, onPageChange = noop, onPageSizeChange = noop, onPageCountChange = noop } = options;\n\tconst currentPageSize = useClamp(pageSize, 1, Number.POSITIVE_INFINITY);\n\tconst pageCount = computed(() => Math.max(1, Math.ceil(toValue(total) / toValue(currentPageSize))));\n\tconst currentPage = useClamp(page, 1, pageCount);\n\tconst isFirstPage = computed(() => currentPage.value === 1);\n\tconst isLastPage = computed(() => currentPage.value === pageCount.value);\n\tif (isRef(page)) syncRef(page, currentPage, { direction: isReadonly(page) ? \"ltr\" : \"both\" });\n\tif (isRef(pageSize)) syncRef(pageSize, currentPageSize, { direction: isReadonly(pageSize) ? \"ltr\" : \"both\" });\n\tfunction prev() {\n\t\tcurrentPage.value--;\n\t}\n\tfunction next() {\n\t\tcurrentPage.value++;\n\t}\n\tconst returnValue = {\n\t\tcurrentPage,\n\t\tcurrentPageSize,\n\t\tpageCount,\n\t\tisFirstPage,\n\t\tisLastPage,\n\t\tprev,\n\t\tnext\n\t};\n\twatch(currentPage, () => {\n\t\tonPageChange(reactive(returnValue));\n\t});\n\twatch(currentPageSize, () => {\n\t\tonPageSizeChange(reactive(returnValue));\n\t});\n\twatch(pageCount, () => {\n\t\tonPageCountChange(reactive(returnValue));\n\t});\n\treturn returnValue;\n}\n//#endregion\n//#region useOnline/index.ts\n/**\n* Reactive online state.\n*\n* @see https://vueuse.org/useOnline\n* @param options\n*\n* @__NO_SIDE_EFFECTS__\n*/\nfunction useOnline(options = {}) {\n\tconst { isOnline } = useNetwork(options);\n\treturn isOnline;\n}\n//#endregion\n//#region usePageLeave/index.ts\n/**\n* Reactive state to show whether mouse leaves the page.\n*\n* @see https://vueuse.org/usePageLeave\n* @param options\n*\n* @__NO_SIDE_EFFECTS__\n*/\nfunction usePageLeave(options = {}) {\n\tconst { window = defaultWindow } = options;\n\tconst isLeft = shallowRef(false);\n\tconst handler = (event) => {\n\t\tif (!window) return;\n\t\tevent = event || window.event;\n\t\tisLeft.value = !(event.relatedTarget || event.toElement);\n\t};\n\tif (window) {\n\t\tconst listenerOptions = { passive: true };\n\t\tuseEventListener(window, \"mouseout\", handler, listenerOptions);\n\t\tuseEventListener(window.document, \"mouseleave\", handler, listenerOptions);\n\t\tuseEventListener(window.document, \"mouseenter\", handler, listenerOptions);\n\t}\n\treturn isLeft;\n}\n//#endregion\n//#region useScreenOrientation/index.ts\n/**\n* Reactive screen orientation\n*\n* @see https://vueuse.org/useScreenOrientation\n*\n* @__NO_SIDE_EFFECTS__\n*/\nfunction useScreenOrientation(options = {}) {\n\tconst { window = defaultWindow } = options;\n\tconst isSupported = /* @__PURE__ */ useSupported(() => window && \"screen\" in window && \"orientation\" in window.screen);\n\tconst screenOrientation = isSupported.value ? window.screen.orientation : {};\n\tconst orientation = shallowRef(screenOrientation.type);\n\tconst angle = shallowRef(screenOrientation.angle || 0);\n\tif (isSupported.value) useEventListener(window, \"orientationchange\", () => {\n\t\torientation.value = screenOrientation.type;\n\t\tangle.value = screenOrientation.angle;\n\t}, { passive: true });\n\tconst lockOrientation = (type) => {\n\t\tif (isSupported.value && typeof screenOrientation.lock === \"function\") return screenOrientation.lock(type);\n\t\treturn Promise.reject(/* @__PURE__ */ new Error(\"Not supported\"));\n\t};\n\tconst unlockOrientation = () => {\n\t\tif (isSupported.value && typeof screenOrientation.unlock === \"function\") screenOrientation.unlock();\n\t};\n\treturn {\n\t\tisSupported,\n\t\torientation,\n\t\tangle,\n\t\tlockOrientation,\n\t\tunlockOrientation\n\t};\n}\n//#endregion\n//#region useParallax/index.ts\n/**\n* Create parallax effect easily. It uses `useDeviceOrientation` and fallback to `useMouse`\n* if orientation is not supported.\n*\n* @param target\n* @param options\n*/\nfunction useParallax(target, options = {}) {\n\tconst { deviceOrientationTiltAdjust = (i) => i, deviceOrientationRollAdjust = (i) => i, mouseTiltAdjust = (i) => i, mouseRollAdjust = (i) => i, window = defaultWindow } = options;\n\tconst orientation = reactive(useDeviceOrientation({ window }));\n\tconst screenOrientation = reactive(useScreenOrientation({ window }));\n\tconst { elementX: x, elementY: y, elementWidth: width, elementHeight: height } = useMouseInElement(target, {\n\t\thandleOutside: false,\n\t\twindow\n\t});\n\tconst source = computed(() => {\n\t\tif (orientation.isSupported && (orientation.alpha != null && orientation.alpha !== 0 || orientation.gamma != null && orientation.gamma !== 0)) return \"deviceOrientation\";\n\t\treturn \"mouse\";\n\t});\n\treturn {\n\t\troll: computed(() => {\n\t\t\tif (source.value === \"deviceOrientation\") {\n\t\t\t\tlet value;\n\t\t\t\tswitch (screenOrientation.orientation) {\n\t\t\t\t\tcase \"landscape-primary\":\n\t\t\t\t\t\tvalue = orientation.gamma / 90;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase \"landscape-secondary\":\n\t\t\t\t\t\tvalue = -orientation.gamma / 90;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase \"portrait-primary\":\n\t\t\t\t\t\tvalue = -orientation.beta / 90;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase \"portrait-secondary\":\n\t\t\t\t\t\tvalue = orientation.beta / 90;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault: value = -orientation.beta / 90;\n\t\t\t\t}\n\t\t\t\treturn deviceOrientationRollAdjust(value);\n\t\t\t} else return mouseRollAdjust(-(y.value - height.value / 2) / height.value);\n\t\t}),\n\t\ttilt: computed(() => {\n\t\t\tif (source.value === \"deviceOrientation\") {\n\t\t\t\tlet value;\n\t\t\t\tswitch (screenOrientation.orientation) {\n\t\t\t\t\tcase \"landscape-primary\":\n\t\t\t\t\t\tvalue = orientation.beta / 90;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase \"landscape-secondary\":\n\t\t\t\t\t\tvalue = -orientation.beta / 90;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase \"portrait-primary\":\n\t\t\t\t\t\tvalue = orientation.gamma / 90;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase \"portrait-secondary\":\n\t\t\t\t\t\tvalue = -orientation.gamma / 90;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault: value = orientation.gamma / 90;\n\t\t\t\t}\n\t\t\t\treturn deviceOrientationTiltAdjust(value);\n\t\t\t} else return mouseTiltAdjust((x.value - width.value / 2) / width.value);\n\t\t}),\n\t\tsource\n\t};\n}\n//#endregion\n//#region useParentElement/index.ts\nfunction useParentElement(element = useCurrentElement()) {\n\tconst parentElement = shallowRef();\n\tconst update = () => {\n\t\tconst el = unrefElement(element);\n\t\tif (el) parentElement.value = el.parentElement;\n\t};\n\ttryOnMounted(update);\n\twatch(() => toValue(element), update);\n\treturn parentElement;\n}\n//#endregion\n//#region usePerformanceObserver/index.ts\n/**\n* Observe performance metrics.\n*\n* @see https://vueuse.org/usePerformanceObserver\n* @param options\n*/\nfunction usePerformanceObserver(options, callback) {\n\tconst { window = defaultWindow, immediate = true, ...performanceOptions } = options;\n\tconst isSupported = /* @__PURE__ */ useSupported(() => window && \"PerformanceObserver\" in window);\n\tlet observer;\n\tconst stop = () => {\n\t\tobserver === null || observer === void 0 || observer.disconnect();\n\t};\n\tconst start = () => {\n\t\tif (isSupported.value) {\n\t\t\tstop();\n\t\t\tobserver = new PerformanceObserver(callback);\n\t\t\tobserver.observe(performanceOptions);\n\t\t}\n\t};\n\ttryOnScopeDispose(stop);\n\tif (immediate) start();\n\treturn {\n\t\tisSupported,\n\t\tstart,\n\t\tstop\n\t};\n}\n//#endregion\n//#region usePointer/index.ts\nconst defaultState = (/* #__PURE__ */ {\n\tx: 0,\n\ty: 0,\n\tpointerId: 0,\n\tpressure: 0,\n\ttiltX: 0,\n\ttiltY: 0,\n\twidth: 0,\n\theight: 0,\n\ttwist: 0,\n\tpointerType: null\n});\nconst keys = /* @__PURE__ */ Object.keys(defaultState);\n/**\n* Reactive pointer state.\n*\n* @see https://vueuse.org/usePointer\n* @param options\n*/\nfunction usePointer(options = {}) {\n\tconst { target = defaultWindow } = options;\n\tconst isInside = shallowRef(false);\n\tconst state = shallowRef(options.initialValue || {});\n\tObject.assign(state.value, defaultState, state.value);\n\tconst handler = (event) => {\n\t\tisInside.value = true;\n\t\tif (options.pointerTypes && !options.pointerTypes.includes(event.pointerType)) return;\n\t\tstate.value = objectPick(event, keys, false);\n\t};\n\tif (target) {\n\t\tconst listenerOptions = { passive: true };\n\t\tuseEventListener(target, [\n\t\t\t\"pointerdown\",\n\t\t\t\"pointermove\",\n\t\t\t\"pointerup\"\n\t\t], handler, listenerOptions);\n\t\tuseEventListener(target, \"pointerleave\", () => isInside.value = false, listenerOptions);\n\t}\n\treturn {\n\t\t...toRefs(state),\n\t\tisInside\n\t};\n}\n//#endregion\n//#region usePointerLock/index.ts\n/**\n* Reactive pointer lock.\n*\n* @see https://vueuse.org/usePointerLock\n* @param target\n* @param options\n*\n* @__NO_SIDE_EFFECTS__\n*/\nfunction usePointerLock(target, options = {}) {\n\tconst { document = defaultDocument } = options;\n\tconst isSupported = /* @__PURE__ */ useSupported(() => document && \"pointerLockElement\" in document);\n\tconst element = shallowRef();\n\tconst triggerElement = shallowRef();\n\tlet targetElement;\n\tif (isSupported.value) {\n\t\tconst listenerOptions = { passive: true };\n\t\tuseEventListener(document, \"pointerlockchange\", () => {\n\t\t\tvar _pointerLockElement;\n\t\t\tconst currentElement = (_pointerLockElement = document.pointerLockElement) !== null && _pointerLockElement !== void 0 ? _pointerLockElement : element.value;\n\t\t\tif (targetElement && currentElement === targetElement) {\n\t\t\t\telement.value = document.pointerLockElement;\n\t\t\t\tif (!element.value) targetElement = triggerElement.value = null;\n\t\t\t}\n\t\t}, listenerOptions);\n\t\tuseEventListener(document, \"pointerlockerror\", () => {\n\t\t\tvar _pointerLockElement2;\n\t\t\tconst currentElement = (_pointerLockElement2 = document.pointerLockElement) !== null && _pointerLockElement2 !== void 0 ? _pointerLockElement2 : element.value;\n\t\t\tif (targetElement && currentElement === targetElement) {\n\t\t\t\tconst action = document.pointerLockElement ? \"release\" : \"acquire\";\n\t\t\t\tthrow new Error(`Failed to ${action} pointer lock.`);\n\t\t\t}\n\t\t}, listenerOptions);\n\t}\n\tasync function lock(e) {\n\t\tvar _unrefElement;\n\t\tif (!isSupported.value) throw new Error(\"Pointer Lock API is not supported by your browser.\");\n\t\ttriggerElement.value = e instanceof Event ? e.currentTarget : null;\n\t\ttargetElement = e instanceof Event ? (_unrefElement = unrefElement(target)) !== null && _unrefElement !== void 0 ? _unrefElement : triggerElement.value : unrefElement(e);\n\t\tif (!targetElement) throw new Error(\"Target element undefined.\");\n\t\ttargetElement.requestPointerLock();\n\t\treturn await until(element).toBe(targetElement);\n\t}\n\tasync function unlock() {\n\t\tif (!element.value) return false;\n\t\tdocument.exitPointerLock();\n\t\tawait until(element).toBeNull();\n\t\treturn true;\n\t}\n\treturn {\n\t\tisSupported,\n\t\telement,\n\t\ttriggerElement,\n\t\tlock,\n\t\tunlock\n\t};\n}\n//#endregion\n//#region usePointerSwipe/index.ts\n/**\n* Reactive swipe detection based on PointerEvents.\n*\n* @see https://vueuse.org/usePointerSwipe\n* @param target\n* @param options\n*/\nfunction usePointerSwipe(target, options = {}) {\n\tconst targetRef = toRef(target);\n\tconst { threshold = 50, onSwipe, onSwipeEnd, onSwipeStart, disableTextSelect = false } = options;\n\tconst posStart = reactive({\n\t\tx: 0,\n\t\ty: 0\n\t});\n\tconst updatePosStart = (x, y) => {\n\t\tposStart.x = x;\n\t\tposStart.y = y;\n\t};\n\tconst posEnd = reactive({\n\t\tx: 0,\n\t\ty: 0\n\t});\n\tconst updatePosEnd = (x, y) => {\n\t\tposEnd.x = x;\n\t\tposEnd.y = y;\n\t};\n\tconst distanceX = computed(() => posStart.x - posEnd.x);\n\tconst distanceY = computed(() => posStart.y - posEnd.y);\n\tconst { max, abs } = Math;\n\tconst isThresholdExceeded = computed(() => max(abs(distanceX.value), abs(distanceY.value)) >= threshold);\n\tconst isSwiping = shallowRef(false);\n\tconst isPointerDown = shallowRef(false);\n\tconst direction = computed(() => {\n\t\tif (!isThresholdExceeded.value) return \"none\";\n\t\tif (abs(distanceX.value) > abs(distanceY.value)) return distanceX.value > 0 ? \"left\" : \"right\";\n\t\telse return distanceY.value > 0 ? \"up\" : \"down\";\n\t});\n\tconst eventIsAllowed = (e) => {\n\t\tvar _ref, _options$pointerTypes, _options$pointerTypes2;\n\t\tconst isReleasingButton = e.buttons === 0;\n\t\tconst isPrimaryButton = e.buttons === 1;\n\t\treturn (_ref = (_options$pointerTypes = (_options$pointerTypes2 = options.pointerTypes) === null || _options$pointerTypes2 === void 0 ? void 0 : _options$pointerTypes2.includes(e.pointerType)) !== null && _options$pointerTypes !== void 0 ? _options$pointerTypes : isReleasingButton || isPrimaryButton) !== null && _ref !== void 0 ? _ref : true;\n\t};\n\tconst listenerOptions = { passive: true };\n\tconst stops = [\n\t\tuseEventListener(target, \"pointerdown\", (e) => {\n\t\t\tif (!eventIsAllowed(e)) return;\n\t\t\tisPointerDown.value = true;\n\t\t\tconst eventTarget = e.target;\n\t\t\teventTarget === null || eventTarget === void 0 || eventTarget.setPointerCapture(e.pointerId);\n\t\t\tconst { clientX: x, clientY: y } = e;\n\t\t\tupdatePosStart(x, y);\n\t\t\tupdatePosEnd(x, y);\n\t\t\tonSwipeStart === null || onSwipeStart === void 0 || onSwipeStart(e);\n\t\t}, listenerOptions),\n\t\tuseEventListener(target, \"pointermove\", (e) => {\n\t\t\tif (!eventIsAllowed(e)) return;\n\t\t\tif (!isPointerDown.value) return;\n\t\t\tconst { clientX: x, clientY: y } = e;\n\t\t\tupdatePosEnd(x, y);\n\t\t\tif (!isSwiping.value && isThresholdExceeded.value) isSwiping.value = true;\n\t\t\tif (isSwiping.value) onSwipe === null || onSwipe === void 0 || onSwipe(e);\n\t\t}, listenerOptions),\n\t\tuseEventListener(target, \"pointerup\", (e) => {\n\t\t\tif (!eventIsAllowed(e)) return;\n\t\t\tif (isSwiping.value) onSwipeEnd === null || onSwipeEnd === void 0 || onSwipeEnd(e, direction.value);\n\t\t\tisPointerDown.value = false;\n\t\t\tisSwiping.value = false;\n\t\t}, listenerOptions)\n\t];\n\ttryOnMounted(() => {\n\t\tvar _targetRef$value;\n\t\t(_targetRef$value = targetRef.value) === null || _targetRef$value === void 0 || (_targetRef$value = _targetRef$value.style) === null || _targetRef$value === void 0 || _targetRef$value.setProperty(\"touch-action\", \"pan-y\");\n\t\tif (disableTextSelect) {\n\t\t\tvar _targetRef$value2, _targetRef$value3, _targetRef$value4;\n\t\t\t(_targetRef$value2 = targetRef.value) === null || _targetRef$value2 === void 0 || (_targetRef$value2 = _targetRef$value2.style) === null || _targetRef$value2 === void 0 || _targetRef$value2.setProperty(\"-webkit-user-select\", \"none\");\n\t\t\t(_targetRef$value3 = targetRef.value) === null || _targetRef$value3 === void 0 || (_targetRef$value3 = _targetRef$value3.style) === null || _targetRef$value3 === void 0 || _targetRef$value3.setProperty(\"-ms-user-select\", \"none\");\n\t\t\t(_targetRef$value4 = targetRef.value) === null || _targetRef$value4 === void 0 || (_targetRef$value4 = _targetRef$value4.style) === null || _targetRef$value4 === void 0 || _targetRef$value4.setProperty(\"user-select\", \"none\");\n\t\t}\n\t});\n\tconst stop = () => stops.forEach((s) => s());\n\treturn {\n\t\tisSwiping: shallowReadonly(isSwiping),\n\t\tdirection: shallowReadonly(direction),\n\t\tposStart: readonly(posStart),\n\t\tposEnd: readonly(posEnd),\n\t\tdistanceX,\n\t\tdistanceY,\n\t\tstop\n\t};\n}\n//#endregion\n//#region usePreferredColorScheme/index.ts\n/**\n* Reactive prefers-color-scheme media query.\n*\n* @see https://vueuse.org/usePreferredColorScheme\n* @param [options]\n*\n* @__NO_SIDE_EFFECTS__\n*/\nfunction usePreferredColorScheme(options) {\n\tconst isLight = useMediaQuery(\"(prefers-color-scheme: light)\", options);\n\tconst isDark = useMediaQuery(\"(prefers-color-scheme: dark)\", options);\n\treturn computed(() => {\n\t\tif (isDark.value) return \"dark\";\n\t\tif (isLight.value) return \"light\";\n\t\treturn \"no-preference\";\n\t});\n}\n//#endregion\n//#region usePreferredContrast/index.ts\n/**\n* Reactive prefers-contrast media query.\n*\n* @see https://vueuse.org/usePreferredContrast\n* @param [options]\n*\n* @__NO_SIDE_EFFECTS__\n*/\nfunction usePreferredContrast(options) {\n\tconst isMore = useMediaQuery(\"(prefers-contrast: more)\", options);\n\tconst isLess = useMediaQuery(\"(prefers-contrast: less)\", options);\n\tconst isCustom = useMediaQuery(\"(prefers-contrast: custom)\", options);\n\treturn computed(() => {\n\t\tif (isMore.value) return \"more\";\n\t\tif (isLess.value) return \"less\";\n\t\tif (isCustom.value) return \"custom\";\n\t\treturn \"no-preference\";\n\t});\n}\n//#endregion\n//#region usePreferredLanguages/index.ts\n/**\n* Reactive Navigator Languages.\n*\n* @see https://vueuse.org/usePreferredLanguages\n* @param options\n*\n* @__NO_SIDE_EFFECTS__\n*/\nfunction usePreferredLanguages(options = {}) {\n\tconst { window = defaultWindow } = options;\n\tif (!window) return shallowRef([\"en\"]);\n\tconst navigator = window.navigator;\n\tconst value = shallowRef(navigator.languages);\n\tuseEventListener(window, \"languagechange\", () => {\n\t\tvalue.value = navigator.languages;\n\t}, { passive: true });\n\treturn value;\n}\n//#endregion\n//#region usePreferredReducedMotion/index.ts\n/**\n* Reactive prefers-reduced-motion media query.\n*\n* @see https://vueuse.org/usePreferredReducedMotion\n* @param [options]\n*\n* @__NO_SIDE_EFFECTS__\n*/\nfunction usePreferredReducedMotion(options) {\n\tconst isReduced = useMediaQuery(\"(prefers-reduced-motion: reduce)\", options);\n\treturn computed(() => {\n\t\tif (isReduced.value) return \"reduce\";\n\t\treturn \"no-preference\";\n\t});\n}\n//#endregion\n//#region usePreferredReducedTransparency/index.ts\n/**\n* Reactive prefers-reduced-transparency media query.\n*\n* @see https://vueuse.org/usePreferredReducedTransparency\n* @param [options]\n*\n* @__NO_SIDE_EFFECTS__\n*/\nfunction usePreferredReducedTransparency(options) {\n\tconst isReduced = useMediaQuery(\"(prefers-reduced-transparency: reduce)\", options);\n\treturn computed(() => {\n\t\tif (isReduced.value) return \"reduce\";\n\t\treturn \"no-preference\";\n\t});\n}\n//#endregion\n//#region usePrevious/index.ts\nfunction usePrevious(value, initialValue) {\n\tconst previous = shallowRef(initialValue);\n\twatch(toRef(value), (_, oldValue) => {\n\t\tprevious.value = oldValue;\n\t}, { flush: \"sync\" });\n\treturn readonly(previous);\n}\n//#endregion\n//#region useScreenSafeArea/index.ts\nconst topVarName = \"--vueuse-safe-area-top\";\nconst rightVarName = \"--vueuse-safe-area-right\";\nconst bottomVarName = \"--vueuse-safe-area-bottom\";\nconst leftVarName = \"--vueuse-safe-area-left\";\n/**\n* Reactive `env(safe-area-inset-*)`\n*\n* @see https://vueuse.org/useScreenSafeArea\n*/\nfunction useScreenSafeArea() {\n\tconst top = shallowRef(\"\");\n\tconst right = shallowRef(\"\");\n\tconst bottom = shallowRef(\"\");\n\tconst left = shallowRef(\"\");\n\tif (isClient) {\n\t\tconst topCssVar = useCssVar(topVarName);\n\t\tconst rightCssVar = useCssVar(rightVarName);\n\t\tconst bottomCssVar = useCssVar(bottomVarName);\n\t\tconst leftCssVar = useCssVar(leftVarName);\n\t\ttopCssVar.value = \"env(safe-area-inset-top, 0px)\";\n\t\trightCssVar.value = \"env(safe-area-inset-right, 0px)\";\n\t\tbottomCssVar.value = \"env(safe-area-inset-bottom, 0px)\";\n\t\tleftCssVar.value = \"env(safe-area-inset-left, 0px)\";\n\t\ttryOnMounted(update);\n\t\tuseEventListener(\"resize\", useDebounceFn(update), { passive: true });\n\t}\n\tfunction update() {\n\t\ttop.value = getValue(topVarName);\n\t\tright.value = getValue(rightVarName);\n\t\tbottom.value = getValue(bottomVarName);\n\t\tleft.value = getValue(leftVarName);\n\t}\n\treturn {\n\t\ttop,\n\t\tright,\n\t\tbottom,\n\t\tleft,\n\t\tupdate\n\t};\n}\nfunction getValue(position) {\n\treturn getComputedStyle(document.documentElement).getPropertyValue(position);\n}\n//#endregion\n//#region useScriptTag/index.ts\n/**\n* Async script tag loading.\n*\n* @see https://vueuse.org/useScriptTag\n* @param src\n* @param onLoaded\n* @param options\n*/\nfunction useScriptTag(src, onLoaded = noop, options = {}) {\n\tconst { immediate = true, manual = false, type = \"text/javascript\", async = true, crossOrigin, referrerPolicy, noModule, defer, document = defaultDocument, attrs = {}, nonce = void 0 } = options;\n\tconst scriptTag = shallowRef(null);\n\tlet _promise = null;\n\t/**\n\t* Load the script specified via `src`.\n\t*\n\t* @param waitForScriptLoad Whether if the Promise should resolve once the \"load\" event is emitted by the <script> attribute, or right after appending it to the DOM.\n\t* @returns Promise<HTMLScriptElement>\n\t*/\n\tconst loadScript = (waitForScriptLoad) => new Promise((resolve, reject) => {\n\t\tconst resolveWithElement = (el) => {\n\t\t\tscriptTag.value = el;\n\t\t\tresolve(el);\n\t\t\treturn el;\n\t\t};\n\t\tif (!document) {\n\t\t\tresolve(false);\n\t\t\treturn;\n\t\t}\n\t\tlet shouldAppend = false;\n\t\tlet el = document.querySelector(`script[src=\"${toValue(src)}\"]`);\n\t\tif (!el) {\n\t\t\tel = document.createElement(\"script\");\n\t\t\tel.type = type;\n\t\t\tel.async = async;\n\t\t\tel.src = toValue(src);\n\t\t\tif (defer) el.defer = defer;\n\t\t\tif (crossOrigin) el.crossOrigin = crossOrigin;\n\t\t\tif (noModule) el.noModule = noModule;\n\t\t\tif (referrerPolicy) el.referrerPolicy = referrerPolicy;\n\t\t\tif (nonce) el.nonce = nonce;\n\t\t\tObject.entries(attrs).forEach(([name, value]) => el === null || el === void 0 ? void 0 : el.setAttribute(name, value));\n\t\t\tshouldAppend = true;\n\t\t} else if (el.hasAttribute(\"data-loaded\")) resolveWithElement(el);\n\t\tconst listenerOptions = { passive: true };\n\t\tuseEventListener(el, \"error\", (event) => reject(event), listenerOptions);\n\t\tuseEventListener(el, \"abort\", (event) => reject(event), listenerOptions);\n\t\tuseEventListener(el, \"load\", () => {\n\t\t\tel.setAttribute(\"data-loaded\", \"true\");\n\t\t\tonLoaded(el);\n\t\t\tresolveWithElement(el);\n\t\t}, listenerOptions);\n\t\tif (shouldAppend) el = document.head.appendChild(el);\n\t\tif (!waitForScriptLoad) resolveWithElement(el);\n\t});\n\t/**\n\t* Exposed singleton wrapper for `loadScript`, avoiding calling it twice.\n\t*\n\t* @param waitForScriptLoad Whether if the Promise should resolve once the \"load\" event is emitted by the <script> attribute, or right after appending it to the DOM.\n\t* @returns Promise<HTMLScriptElement>\n\t*/\n\tconst load = (waitForScriptLoad = true) => {\n\t\tif (!_promise) _promise = loadScript(waitForScriptLoad);\n\t\treturn _promise;\n\t};\n\t/**\n\t* Unload the script specified by `src`.\n\t*/\n\tconst unload = () => {\n\t\tif (!document) return;\n\t\t_promise = null;\n\t\tif (scriptTag.value) scriptTag.value = null;\n\t\tconst el = document.querySelector(`script[src=\"${toValue(src)}\"]`);\n\t\tif (el) document.head.removeChild(el);\n\t};\n\tif (immediate && !manual) tryOnMounted(load);\n\tif (!manual) tryOnUnmounted(unload);\n\treturn {\n\t\tscriptTag,\n\t\tload,\n\t\tunload\n\t};\n}\n//#endregion\n//#region useScrollLock/index.ts\nfunction checkOverflowScroll(ele) {\n\tconst style = window.getComputedStyle(ele);\n\tif (style.overflowX === \"scroll\" || style.overflowY === \"scroll\" || style.overflowX === \"auto\" && ele.clientWidth < ele.scrollWidth || style.overflowY === \"auto\" && ele.clientHeight < ele.scrollHeight) return true;\n\telse {\n\t\tconst parent = ele.parentNode;\n\t\tif (!parent || parent.tagName === \"BODY\") return false;\n\t\treturn checkOverflowScroll(parent);\n\t}\n}\nfunction preventDefault(rawEvent) {\n\tconst e = rawEvent || window.event;\n\tconst _target = e.target;\n\tif (checkOverflowScroll(_target)) return false;\n\tif (e.touches.length > 1) return true;\n\tif (e.preventDefault) e.preventDefault();\n\treturn false;\n}\nconst elInitialOverflow = /* @__PURE__ */ new WeakMap();\n/**\n* Lock scrolling of the element.\n*\n* @see https://vueuse.org/useScrollLock\n* @param element\n*/\nfunction useScrollLock(element, initialState = false) {\n\tconst isLocked = shallowRef(initialState);\n\tlet stopTouchMoveListener = null;\n\tlet initialOverflow = \"\";\n\twatch(toRef(element), (el) => {\n\t\tconst target = resolveElement(toValue(el));\n\t\tif (target) {\n\t\t\tconst ele = target;\n\t\t\tif (!elInitialOverflow.get(ele)) elInitialOverflow.set(ele, ele.style.overflow);\n\t\t\tif (ele.style.overflow !== \"hidden\") initialOverflow = ele.style.overflow;\n\t\t\tif (ele.style.overflow === \"hidden\") return isLocked.value = true;\n\t\t\tif (isLocked.value) return ele.style.overflow = \"hidden\";\n\t\t}\n\t}, { immediate: true });\n\tconst lock = () => {\n\t\tconst el = resolveElement(toValue(element));\n\t\tif (!el || isLocked.value) return;\n\t\tif (isIOS) stopTouchMoveListener = useEventListener(el, \"touchmove\", (e) => {\n\t\t\tpreventDefault(e);\n\t\t}, { passive: false });\n\t\tel.style.overflow = \"hidden\";\n\t\tisLocked.value = true;\n\t};\n\tconst unlock = () => {\n\t\tconst el = resolveElement(toValue(element));\n\t\tif (!el || !isLocked.value) return;\n\t\tif (isIOS) stopTouchMoveListener === null || stopTouchMoveListener === void 0 || stopTouchMoveListener();\n\t\tel.style.overflow = initialOverflow;\n\t\telInitialOverflow.delete(el);\n\t\tisLocked.value = false;\n\t};\n\ttryOnScopeDispose(unlock);\n\treturn computed({\n\t\tget() {\n\t\t\treturn isLocked.value;\n\t\t},\n\t\tset(v) {\n\t\t\tif (v) lock();\n\t\t\telse unlock();\n\t\t}\n\t});\n}\n//#endregion\n//#region useSessionStorage/index.ts\n/**\n* Reactive SessionStorage.\n*\n* @see https://vueuse.org/useSessionStorage\n* @param key\n* @param initialValue\n* @param options\n*/\nfunction useSessionStorage(key, initialValue, options = {}) {\n\tconst { window = defaultWindow } = options;\n\treturn useStorage(key, initialValue, window === null || window === void 0 ? void 0 : window.sessionStorage, options);\n}\n//#endregion\n//#region useShare/index.ts\n/**\n* Reactive Web Share API.\n*\n* @see https://vueuse.org/useShare\n* @param shareOptions\n* @param options\n*\n* @__NO_SIDE_EFFECTS__\n*/\nfunction useShare(shareOptions = {}, options = {}) {\n\tconst { navigator = defaultNavigator } = options;\n\tconst _navigator = navigator;\n\tconst isSupported = /* @__PURE__ */ useSupported(() => _navigator && \"canShare\" in _navigator);\n\tconst share = async (overrideOptions = {}) => {\n\t\tif (isSupported.value) {\n\t\t\tconst data = {\n\t\t\t\t...toValue(shareOptions),\n\t\t\t\t...toValue(overrideOptions)\n\t\t\t};\n\t\t\tlet granted = false;\n\t\t\tif (_navigator.canShare) granted = _navigator.canShare(data);\n\t\t\tif (granted) return _navigator.share(data);\n\t\t}\n\t};\n\treturn {\n\t\tisSupported,\n\t\tshare\n\t};\n}\n//#endregion\n//#region useSorted/index.ts\nconst defaultSortFn = (source, compareFn) => source.sort(compareFn);\nconst defaultCompare = (a, b) => a - b;\nfunction useSorted(...args) {\n\tconst [source] = args;\n\tlet compareFn = defaultCompare;\n\tlet options = {};\n\tif (args.length === 2) if (typeof args[1] === \"object\") {\n\t\tvar _options$compareFn;\n\t\toptions = args[1];\n\t\tcompareFn = (_options$compareFn = options.compareFn) !== null && _options$compareFn !== void 0 ? _options$compareFn : defaultCompare;\n\t} else {\n\t\tvar _args$;\n\t\tcompareFn = (_args$ = args[1]) !== null && _args$ !== void 0 ? _args$ : defaultCompare;\n\t}\n\telse if (args.length > 2) {\n\t\tvar _args$2, _args$3;\n\t\tcompareFn = (_args$2 = args[1]) !== null && _args$2 !== void 0 ? _args$2 : defaultCompare;\n\t\toptions = (_args$3 = args[2]) !== null && _args$3 !== void 0 ? _args$3 : {};\n\t}\n\tconst { dirty = false, sortFn = defaultSortFn } = options;\n\tif (!dirty) return computed(() => sortFn([...toValue(source)], compareFn));\n\twatchEffect(() => {\n\t\tconst result = sortFn(toValue(source), compareFn);\n\t\tif (isRef(source)) source.value = result;\n\t\telse source.splice(0, source.length, ...result);\n\t});\n\treturn source;\n}\n//#endregion\n//#region useSpeechRecognition/index.ts\n/**\n* Reactive SpeechRecognition.\n*\n* @see https://vueuse.org/useSpeechRecognition\n* @see https://developer.mozilla.org/en-US/docs/Web/API/SpeechRecognition SpeechRecognition\n* @param options\n*/\nfunction useSpeechRecognition(options = {}) {\n\tconst { interimResults = true, continuous = true, maxAlternatives = 1, window = defaultWindow } = options;\n\tconst lang = toRef(options.lang || \"en-US\");\n\tconst isListening = shallowRef(false);\n\tconst isFinal = shallowRef(false);\n\tconst result = shallowRef(\"\");\n\tconst error = shallowRef(void 0);\n\tlet recognition;\n\tconst start = () => {\n\t\tisListening.value = true;\n\t};\n\tconst stop = () => {\n\t\tisListening.value = false;\n\t};\n\tconst toggle = (value = !isListening.value) => {\n\t\tif (value) start();\n\t\telse stop();\n\t};\n\tconst SpeechRecognition = window && (window.SpeechRecognition || window.webkitSpeechRecognition);\n\tconst isSupported = /* @__PURE__ */ useSupported(() => SpeechRecognition);\n\tif (isSupported.value) {\n\t\trecognition = new SpeechRecognition();\n\t\trecognition.continuous = continuous;\n\t\trecognition.interimResults = interimResults;\n\t\trecognition.lang = toValue(lang);\n\t\trecognition.maxAlternatives = maxAlternatives;\n\t\trecognition.onstart = () => {\n\t\t\tisListening.value = true;\n\t\t\tisFinal.value = false;\n\t\t};\n\t\twatch(lang, (lang) => {\n\t\t\tif (recognition && !isListening.value) recognition.lang = lang;\n\t\t});\n\t\trecognition.onresult = (event) => {\n\t\t\tconst currentResult = event.results[event.resultIndex];\n\t\t\tconst { transcript } = currentResult[0];\n\t\t\tisFinal.value = currentResult.isFinal;\n\t\t\tresult.value = transcript;\n\t\t\terror.value = void 0;\n\t\t};\n\t\trecognition.onerror = (event) => {\n\t\t\terror.value = event;\n\t\t};\n\t\trecognition.onend = () => {\n\t\t\tisListening.value = false;\n\t\t\trecognition.lang = toValue(lang);\n\t\t};\n\t\twatch(isListening, (newValue, oldValue) => {\n\t\t\tif (newValue === oldValue) return;\n\t\t\ttry {\n\t\t\t\tif (newValue) recognition.start();\n\t\t\t\telse recognition.stop();\n\t\t\t} catch (err) {\n\t\t\t\terror.value = err;\n\t\t\t}\n\t\t});\n\t}\n\ttryOnScopeDispose(() => {\n\t\tstop();\n\t});\n\treturn {\n\t\tisSupported,\n\t\tisListening,\n\t\tisFinal,\n\t\trecognition,\n\t\tresult,\n\t\terror,\n\t\ttoggle,\n\t\tstart,\n\t\tstop\n\t};\n}\n//#endregion\n//#region useSpeechSynthesis/index.ts\n/**\n* Reactive SpeechSynthesis.\n*\n* @see https://vueuse.org/useSpeechSynthesis\n* @see https://developer.mozilla.org/en-US/docs/Web/API/SpeechSynthesis SpeechSynthesis\n*/\nfunction useSpeechSynthesis(text, options = {}) {\n\tconst { pitch = 1, rate = 1, volume = 1, window = defaultWindow, onBoundary } = options;\n\tconst synth = window && window.speechSynthesis;\n\tconst isSupported = /* @__PURE__ */ useSupported(() => synth);\n\tconst isPlaying = shallowRef(false);\n\tconst status = shallowRef(\"init\");\n\tconst spokenText = toRef(text || \"\");\n\tconst lang = toRef(options.lang || \"en-US\");\n\tconst error = shallowRef(void 0);\n\tconst toggle = (value = !isPlaying.value) => {\n\t\tisPlaying.value = value;\n\t};\n\tconst bindEventsForUtterance = (utterance) => {\n\t\tutterance.lang = toValue(lang);\n\t\tutterance.voice = toValue(options.voice) || null;\n\t\tutterance.pitch = toValue(pitch);\n\t\tutterance.rate = toValue(rate);\n\t\tutterance.volume = toValue(volume);\n\t\tutterance.onstart = () => {\n\t\t\tisPlaying.value = true;\n\t\t\tstatus.value = \"play\";\n\t\t};\n\t\tutterance.onpause = () => {\n\t\t\tisPlaying.value = false;\n\t\t\tstatus.value = \"pause\";\n\t\t};\n\t\tutterance.onresume = () => {\n\t\t\tisPlaying.value = true;\n\t\t\tstatus.value = \"play\";\n\t\t};\n\t\tutterance.onend = () => {\n\t\t\tisPlaying.value = false;\n\t\t\tstatus.value = \"end\";\n\t\t};\n\t\tutterance.onerror = (event) => {\n\t\t\terror.value = event;\n\t\t};\n\t\tutterance.onboundary = (event) => {\n\t\t\tonBoundary === null || onBoundary === void 0 || onBoundary(event);\n\t\t};\n\t};\n\tconst utterance = computed(() => {\n\t\tisPlaying.value = false;\n\t\tstatus.value = \"init\";\n\t\tconst newUtterance = new SpeechSynthesisUtterance(spokenText.value);\n\t\tbindEventsForUtterance(newUtterance);\n\t\treturn newUtterance;\n\t});\n\tconst speak = () => {\n\t\tsynth.cancel();\n\t\tif (utterance) synth.speak(utterance.value);\n\t};\n\tconst stop = () => {\n\t\tsynth.cancel();\n\t\tisPlaying.value = false;\n\t};\n\tif (isSupported.value) {\n\t\tbindEventsForUtterance(utterance.value);\n\t\twatch(lang, (lang) => {\n\t\t\tif (utterance.value && !isPlaying.value) utterance.value.lang = lang;\n\t\t});\n\t\tif (options.voice) watch(options.voice, () => {\n\t\t\tsynth.cancel();\n\t\t});\n\t\twatch(isPlaying, () => {\n\t\t\tif (isPlaying.value) synth.resume();\n\t\t\telse synth.pause();\n\t\t});\n\t}\n\ttryOnScopeDispose(() => {\n\t\tisPlaying.value = false;\n\t});\n\treturn {\n\t\tisSupported,\n\t\tisPlaying,\n\t\tstatus,\n\t\tutterance,\n\t\terror,\n\t\tstop,\n\t\ttoggle,\n\t\tspeak\n\t};\n}\n//#endregion\n//#region useStepper/index.ts\n/* @__NO_SIDE_EFFECTS__ */\nfunction useStepper(steps, initialStep) {\n\tconst stepsRef = ref(steps);\n\tconst stepNames = computed(() => Array.isArray(stepsRef.value) ? stepsRef.value : Object.keys(stepsRef.value));\n\tconst index = ref(stepNames.value.indexOf(initialStep !== null && initialStep !== void 0 ? initialStep : stepNames.value[0]));\n\tconst current = computed(() => at(index.value));\n\tconst isFirst = computed(() => index.value === 0);\n\tconst isLast = computed(() => index.value === stepNames.value.length - 1);\n\tconst next = computed(() => stepNames.value[index.value + 1]);\n\tconst previous = computed(() => stepNames.value[index.value - 1]);\n\tfunction at(index) {\n\t\tif (Array.isArray(stepsRef.value)) return stepsRef.value[index];\n\t\treturn stepsRef.value[stepNames.value[index]];\n\t}\n\tfunction get(step) {\n\t\tif (!stepNames.value.includes(step)) return;\n\t\treturn at(stepNames.value.indexOf(step));\n\t}\n\tfunction goTo(step) {\n\t\tif (stepNames.value.includes(step)) index.value = stepNames.value.indexOf(step);\n\t}\n\tfunction goToNext() {\n\t\tif (isLast.value) return;\n\t\tindex.value++;\n\t}\n\tfunction goToPrevious() {\n\t\tif (isFirst.value) return;\n\t\tindex.value--;\n\t}\n\tfunction goBackTo(step) {\n\t\tif (isAfter(step)) goTo(step);\n\t}\n\tfunction isNext(step) {\n\t\treturn stepNames.value.indexOf(step) === index.value + 1;\n\t}\n\tfunction isPrevious(step) {\n\t\treturn stepNames.value.indexOf(step) === index.value - 1;\n\t}\n\tfunction isCurrent(step) {\n\t\treturn stepNames.value.indexOf(step) === index.value;\n\t}\n\tfunction isBefore(step) {\n\t\treturn index.value < stepNames.value.indexOf(step);\n\t}\n\tfunction isAfter(step) {\n\t\treturn index.value > stepNames.value.indexOf(step);\n\t}\n\treturn {\n\t\tsteps: stepsRef,\n\t\tstepNames,\n\t\tindex,\n\t\tcurrent,\n\t\tnext,\n\t\tprevious,\n\t\tisFirst,\n\t\tisLast,\n\t\tat,\n\t\tget,\n\t\tgoTo,\n\t\tgoToNext,\n\t\tgoToPrevious,\n\t\tgoBackTo,\n\t\tisNext,\n\t\tisPrevious,\n\t\tisCurrent,\n\t\tisBefore,\n\t\tisAfter\n\t};\n}\n//#endregion\n//#region useStorageAsync/index.ts\n/**\n* Reactive Storage with async support.\n*\n* @see https://vueuse.org/useStorageAsync\n* @param key\n* @param initialValue\n* @param storage\n* @param options\n*/\nfunction useStorageAsync(key, initialValue, storage, options = {}) {\n\tvar _options$serializer;\n\tconst { flush = \"pre\", deep = true, listenToStorageChanges = true, writeDefaults = true, mergeDefaults = false, shallow, window = defaultWindow, eventFilter, onError = (e) => {\n\t\tconsole.error(e);\n\t}, onReady } = options;\n\tconst rawInit = toValue(initialValue);\n\tconst type = guessSerializerType(rawInit);\n\tconst data = (shallow ? shallowRef : ref)(toValue(initialValue));\n\tconst serializer = (_options$serializer = options.serializer) !== null && _options$serializer !== void 0 ? _options$serializer : StorageSerializers[type];\n\tif (!storage) try {\n\t\tstorage = getSSRHandler(\"getDefaultStorageAsync\", () => defaultWindow === null || defaultWindow === void 0 ? void 0 : defaultWindow.localStorage)();\n\t} catch (e) {\n\t\tonError(e);\n\t}\n\tasync function read(event) {\n\t\tif (!storage || event && event.key !== key) return;\n\t\ttry {\n\t\t\tconst rawValue = event ? event.newValue : await storage.getItem(key);\n\t\t\tif (rawValue == null) {\n\t\t\t\tdata.value = rawInit;\n\t\t\t\tif (writeDefaults && rawInit !== null) await storage.setItem(key, await serializer.write(rawInit));\n\t\t\t} else if (mergeDefaults) {\n\t\t\t\tconst value = await serializer.read(rawValue);\n\t\t\t\tif (typeof mergeDefaults === \"function\") data.value = mergeDefaults(value, rawInit);\n\t\t\t\telse if (type === \"object\" && !Array.isArray(value)) data.value = {\n\t\t\t\t\t...rawInit,\n\t\t\t\t\t...value\n\t\t\t\t};\n\t\t\t\telse data.value = value;\n\t\t\t} else data.value = await serializer.read(rawValue);\n\t\t} catch (e) {\n\t\t\tonError(e);\n\t\t}\n\t}\n\tconst promise = new Promise((resolve) => {\n\t\tread().then(() => {\n\t\t\tonReady === null || onReady === void 0 || onReady(data.value);\n\t\t\tresolve(data);\n\t\t});\n\t});\n\tif (window && listenToStorageChanges) useEventListener(window, \"storage\", (e) => Promise.resolve().then(() => read(e)), { passive: true });\n\tif (storage) watchWithFilter(data, async () => {\n\t\ttry {\n\t\t\tif (data.value == null) await storage.removeItem(key);\n\t\t\telse await storage.setItem(key, await serializer.write(data.value));\n\t\t} catch (e) {\n\t\t\tonError(e);\n\t\t}\n\t}, {\n\t\tflush,\n\t\tdeep,\n\t\teventFilter\n\t});\n\tObject.assign(data, {\n\t\tthen: promise.then.bind(promise),\n\t\tcatch: promise.catch.bind(promise)\n\t});\n\treturn data;\n}\n//#endregion\n//#region useStyleTag/index.ts\nlet _id = 0;\n/**\n* Inject <style> element in head.\n*\n* Overload: Omitted id\n*\n* @see https://vueuse.org/useStyleTag\n* @param css\n* @param options\n*/\nfunction useStyleTag(css, options = {}) {\n\tconst isLoaded = shallowRef(false);\n\tconst { document = defaultDocument, immediate = true, manual = false, id = `vueuse_styletag_${++_id}` } = options;\n\tconst cssRef = shallowRef(css);\n\tlet stop = () => {};\n\tconst load = () => {\n\t\tif (!document) return;\n\t\tconst el = document.getElementById(id) || document.createElement(\"style\");\n\t\tif (!el.isConnected) {\n\t\t\tel.id = id;\n\t\t\tif (options.nonce) el.nonce = options.nonce;\n\t\t\tif (options.media) el.media = options.media;\n\t\t\tdocument.head.appendChild(el);\n\t\t}\n\t\tif (isLoaded.value) return;\n\t\tstop = watch(cssRef, (value) => {\n\t\t\tel.textContent = value;\n\t\t}, { immediate: true });\n\t\tisLoaded.value = true;\n\t};\n\tconst unload = () => {\n\t\tif (!document || !isLoaded.value) return;\n\t\tstop();\n\t\tdocument.head.removeChild(document.getElementById(id));\n\t\tisLoaded.value = false;\n\t};\n\tif (immediate && !manual) tryOnMounted(load);\n\tif (!manual) tryOnScopeDispose(unload);\n\treturn {\n\t\tid,\n\t\tcss: cssRef,\n\t\tunload,\n\t\tload,\n\t\tisLoaded: shallowReadonly(isLoaded)\n\t};\n}\n//#endregion\n//#region useSwipe/index.ts\n/**\n* Reactive swipe detection.\n*\n* @see https://vueuse.org/useSwipe\n* @param target\n* @param options\n*/\nfunction useSwipe(target, options = {}) {\n\tconst { threshold = 50, onSwipe, onSwipeEnd, onSwipeStart, passive = true } = options;\n\tconst coordsStart = reactive({\n\t\tx: 0,\n\t\ty: 0\n\t});\n\tconst coordsEnd = reactive({\n\t\tx: 0,\n\t\ty: 0\n\t});\n\tconst diffX = computed(() => coordsStart.x - coordsEnd.x);\n\tconst diffY = computed(() => coordsStart.y - coordsEnd.y);\n\tconst { max, abs } = Math;\n\tconst isThresholdExceeded = computed(() => max(abs(diffX.value), abs(diffY.value)) >= threshold);\n\tconst isSwiping = shallowRef(false);\n\tconst direction = computed(() => {\n\t\tif (!isThresholdExceeded.value) return \"none\";\n\t\tif (abs(diffX.value) > abs(diffY.value)) return diffX.value > 0 ? \"left\" : \"right\";\n\t\telse return diffY.value > 0 ? \"up\" : \"down\";\n\t});\n\tconst getTouchEventCoords = (e) => [e.touches[0].clientX, e.touches[0].clientY];\n\tconst updateCoordsStart = (x, y) => {\n\t\tcoordsStart.x = x;\n\t\tcoordsStart.y = y;\n\t};\n\tconst updateCoordsEnd = (x, y) => {\n\t\tcoordsEnd.x = x;\n\t\tcoordsEnd.y = y;\n\t};\n\tconst listenerOptions = {\n\t\tpassive,\n\t\tcapture: !passive\n\t};\n\tconst onTouchEnd = (e) => {\n\t\tif (isSwiping.value) onSwipeEnd === null || onSwipeEnd === void 0 || onSwipeEnd(e, direction.value);\n\t\tisSwiping.value = false;\n\t};\n\tconst stops = [\n\t\tuseEventListener(target, \"touchstart\", (e) => {\n\t\t\tif (e.touches.length !== 1) return;\n\t\t\tconst [x, y] = getTouchEventCoords(e);\n\t\t\tupdateCoordsStart(x, y);\n\t\t\tupdateCoordsEnd(x, y);\n\t\t\tonSwipeStart === null || onSwipeStart === void 0 || onSwipeStart(e);\n\t\t}, listenerOptions),\n\t\tuseEventListener(target, \"touchmove\", (e) => {\n\t\t\tif (e.touches.length !== 1) return;\n\t\t\tconst [x, y] = getTouchEventCoords(e);\n\t\t\tupdateCoordsEnd(x, y);\n\t\t\tif (listenerOptions.capture && !listenerOptions.passive && Math.abs(diffX.value) > Math.abs(diffY.value)) e.preventDefault();\n\t\t\tif (!isSwiping.value && isThresholdExceeded.value) isSwiping.value = true;\n\t\t\tif (isSwiping.value) onSwipe === null || onSwipe === void 0 || onSwipe(e);\n\t\t}, listenerOptions),\n\t\tuseEventListener(target, [\"touchend\", \"touchcancel\"], onTouchEnd, listenerOptions)\n\t];\n\tconst stop = () => stops.forEach((s) => s());\n\treturn {\n\t\tisSwiping,\n\t\tdirection,\n\t\tcoordsStart,\n\t\tcoordsEnd,\n\t\tlengthX: diffX,\n\t\tlengthY: diffY,\n\t\tstop\n\t};\n}\n//#endregion\n//#region useTemplateRefsList/index.ts\n/* @__NO_SIDE_EFFECTS__ */\nfunction useTemplateRefsList() {\n\tconst refs = ref([]);\n\trefs.value.set = (el) => {\n\t\tif (el) refs.value.push(el);\n\t};\n\tonBeforeUpdate(() => {\n\t\trefs.value.length = 0;\n\t});\n\treturn refs;\n}\n//#endregion\n//#region useTextDirection/index.ts\n/**\n* Reactive dir of the element's text.\n*\n* @see https://vueuse.org/useTextDirection\n*\n* @__NO_SIDE_EFFECTS__\n*/\nfunction useTextDirection(options = {}) {\n\tconst { document = defaultDocument, selector = \"html\", observe = false, initialValue = \"ltr\" } = options;\n\tfunction getValue() {\n\t\tvar _ref, _document$querySelect;\n\t\treturn (_ref = document === null || document === void 0 || (_document$querySelect = document.querySelector(selector)) === null || _document$querySelect === void 0 ? void 0 : _document$querySelect.getAttribute(\"dir\")) !== null && _ref !== void 0 ? _ref : initialValue;\n\t}\n\tconst dir = shallowRef(getValue());\n\ttryOnMounted(() => dir.value = getValue());\n\tif (observe && document) useMutationObserver(document.querySelector(selector), () => dir.value = getValue(), { attributes: true });\n\treturn computed({\n\t\tget() {\n\t\t\treturn dir.value;\n\t\t},\n\t\tset(v) {\n\t\t\tvar _document$querySelect2, _document$querySelect3;\n\t\t\tdir.value = v;\n\t\t\tif (!document) return;\n\t\t\tif (dir.value) (_document$querySelect2 = document.querySelector(selector)) === null || _document$querySelect2 === void 0 || _document$querySelect2.setAttribute(\"dir\", dir.value);\n\t\t\telse (_document$querySelect3 = document.querySelector(selector)) === null || _document$querySelect3 === void 0 || _document$querySelect3.removeAttribute(\"dir\");\n\t\t}\n\t});\n}\n//#endregion\n//#region useTextSelection/index.ts\nfunction getRangesFromSelection(selection) {\n\tvar _selection$rangeCount;\n\tconst rangeCount = (_selection$rangeCount = selection.rangeCount) !== null && _selection$rangeCount !== void 0 ? _selection$rangeCount : 0;\n\treturn Array.from({ length: rangeCount }, (_, i) => selection.getRangeAt(i));\n}\n/**\n* Reactively track user text selection based on [`Window.getSelection`](https://developer.mozilla.org/en-US/docs/Web/API/Window/getSelection).\n*\n* @see https://vueuse.org/useTextSelection\n*\n* @__NO_SIDE_EFFECTS__\n*/\nfunction useTextSelection(options = {}) {\n\tvar _window$getSelection;\n\tconst { window = defaultWindow } = options;\n\tconst selection = shallowRef((_window$getSelection = window === null || window === void 0 ? void 0 : window.getSelection()) !== null && _window$getSelection !== void 0 ? _window$getSelection : null);\n\tconst text = computed(() => {\n\t\tvar _selection$value$toSt, _selection$value;\n\t\treturn (_selection$value$toSt = (_selection$value = selection.value) === null || _selection$value === void 0 ? void 0 : _selection$value.toString()) !== null && _selection$value$toSt !== void 0 ? _selection$value$toSt : \"\";\n\t});\n\tconst ranges = computed(() => selection.value ? getRangesFromSelection(selection.value) : []);\n\tconst rects = computed(() => ranges.value.map((range) => range.getBoundingClientRect()));\n\tfunction onSelectionChange() {\n\t\tselection.value = null;\n\t\tif (window) selection.value = window.getSelection();\n\t}\n\tif (window) useEventListener(window.document, \"selectionchange\", onSelectionChange, { passive: true });\n\treturn {\n\t\ttext,\n\t\trects,\n\t\tranges,\n\t\tselection\n\t};\n}\n//#endregion\n//#region useTextareaAutosize/index.ts\n/**\n* Call window.requestAnimationFrame(), if not available, just call the function\n*\n* @param window\n* @param fn\n*/\nfunction tryRequestAnimationFrame(window = defaultWindow, fn) {\n\tif (window && typeof window.requestAnimationFrame === \"function\") window.requestAnimationFrame(fn);\n\telse fn();\n}\nfunction useTextareaAutosize(options = {}) {\n\tvar _options$input, _options$styleProp;\n\tconst { window = defaultWindow } = options;\n\tconst textarea = toRef(options === null || options === void 0 ? void 0 : options.element);\n\tconst input = toRef((_options$input = options === null || options === void 0 ? void 0 : options.input) !== null && _options$input !== void 0 ? _options$input : \"\");\n\tconst styleProp = (_options$styleProp = options === null || options === void 0 ? void 0 : options.styleProp) !== null && _options$styleProp !== void 0 ? _options$styleProp : \"height\";\n\tconst textareaScrollHeight = shallowRef(1);\n\tconst textareaOldWidth = shallowRef(0);\n\tfunction triggerResize() {\n\t\tvar _textarea$value;\n\t\tif (!textarea.value) return;\n\t\tlet height = \"\";\n\t\tconst maxHeight = options === null || options === void 0 ? void 0 : options.maxHeight;\n\t\ttextarea.value.style[styleProp] = \"1px\";\n\t\ttextareaScrollHeight.value = (_textarea$value = textarea.value) === null || _textarea$value === void 0 ? void 0 : _textarea$value.scrollHeight;\n\t\tconst _styleTarget = toValue(options === null || options === void 0 ? void 0 : options.styleTarget);\n\t\tconst styleHeight = maxHeight != null ? `${Math.min(textareaScrollHeight.value, maxHeight)}px` : `${textareaScrollHeight.value}px`;\n\t\tif (_styleTarget) _styleTarget.style[styleProp] = styleHeight;\n\t\telse height = styleHeight;\n\t\ttextarea.value.style[styleProp] = height;\n\t}\n\twatch([input, textarea], () => nextTick(triggerResize), { immediate: true });\n\twatch(textareaScrollHeight, () => {\n\t\tvar _options$onResize;\n\t\treturn options === null || options === void 0 || (_options$onResize = options.onResize) === null || _options$onResize === void 0 ? void 0 : _options$onResize.call(options);\n\t});\n\tuseResizeObserver(textarea, ([{ contentRect }]) => {\n\t\tif (textareaOldWidth.value === contentRect.width) return;\n\t\ttryRequestAnimationFrame(window, () => {\n\t\t\ttextareaOldWidth.value = contentRect.width;\n\t\t\ttriggerResize();\n\t\t});\n\t});\n\tif (options === null || options === void 0 ? void 0 : options.watch) watch(options.watch, triggerResize, {\n\t\timmediate: true,\n\t\tdeep: true\n\t});\n\treturn {\n\t\ttextarea,\n\t\tinput,\n\t\ttriggerResize\n\t};\n}\n//#endregion\n//#region useThrottledRefHistory/index.ts\n/**\n* Shorthand for [useRefHistory](https://vueuse.org/useRefHistory) with throttled filter.\n*\n* @see https://vueuse.org/useThrottledRefHistory\n* @param source\n* @param options\n*/\nfunction useThrottledRefHistory(source, options = {}) {\n\tconst { throttle = 200, trailing = true } = options;\n\tconst filter = throttleFilter(throttle, trailing);\n\treturn { ...useRefHistory(source, {\n\t\t...options,\n\t\teventFilter: filter\n\t}) };\n}\n//#endregion\n//#region useTimeAgo/index.ts\nconst DEFAULT_UNITS = [\n\t{\n\t\tmax: 6e4,\n\t\tvalue: 1e3,\n\t\tname: \"second\"\n\t},\n\t{\n\t\tmax: 276e4,\n\t\tvalue: 6e4,\n\t\tname: \"minute\"\n\t},\n\t{\n\t\tmax: 72e6,\n\t\tvalue: 36e5,\n\t\tname: \"hour\"\n\t},\n\t{\n\t\tmax: 5184e5,\n\t\tvalue: 864e5,\n\t\tname: \"day\"\n\t},\n\t{\n\t\tmax: 24192e5,\n\t\tvalue: 6048e5,\n\t\tname: \"week\"\n\t},\n\t{\n\t\tmax: 28512e6,\n\t\tvalue: 2592e6,\n\t\tname: \"month\"\n\t},\n\t{\n\t\tmax: Number.POSITIVE_INFINITY,\n\t\tvalue: 31536e6,\n\t\tname: \"year\"\n\t}\n];\nconst DEFAULT_MESSAGES = {\n\tjustNow: \"just now\",\n\tpast: (n) => /\\d/.test(n) ? `${n} ago` : n,\n\tfuture: (n) => /\\d/.test(n) ? `in ${n}` : n,\n\tmonth: (n, past) => n === 1 ? past ? \"last month\" : \"next month\" : `${n} month${n > 1 ? \"s\" : \"\"}`,\n\tyear: (n, past) => n === 1 ? past ? \"last year\" : \"next year\" : `${n} year${n > 1 ? \"s\" : \"\"}`,\n\tday: (n, past) => n === 1 ? past ? \"yesterday\" : \"tomorrow\" : `${n} day${n > 1 ? \"s\" : \"\"}`,\n\tweek: (n, past) => n === 1 ? past ? \"last week\" : \"next week\" : `${n} week${n > 1 ? \"s\" : \"\"}`,\n\thour: (n) => `${n} hour${n > 1 ? \"s\" : \"\"}`,\n\tminute: (n) => `${n} minute${n > 1 ? \"s\" : \"\"}`,\n\tsecond: (n) => `${n} second${n > 1 ? \"s\" : \"\"}`,\n\tinvalid: \"\"\n};\nfunction DEFAULT_FORMATTER(date) {\n\treturn date.toISOString().slice(0, 10);\n}\nfunction getDefaultScheduler$4(options) {\n\tif (\"updateInterval\" in options) {\n\t\tconst { updateInterval = 3e4 } = options;\n\t\treturn (cb) => useIntervalFn(cb, updateInterval);\n\t}\n\treturn (cb) => useIntervalFn(cb, 3e4);\n}\n/**\n* Reactive time ago formatter.\n*\n* @see https://vueuse.org/useTimeAgo\n*\n* @__NO_SIDE_EFFECTS__\n*/\nfunction useTimeAgo(time, options = {}) {\n\tconst { controls: exposeControls = false, scheduler = getDefaultScheduler$4(options) } = options;\n\tconst { now, ...controls } = useNow({\n\t\tscheduler,\n\t\tcontrols: true\n\t});\n\tconst timeAgo = computed(() => formatTimeAgo(new Date(toValue(time)), options, toValue(now)));\n\tif (exposeControls) return {\n\t\ttimeAgo,\n\t\t...controls\n\t};\n\telse return timeAgo;\n}\nfunction formatTimeAgo(from, options = {}, now = Date.now()) {\n\tconst { max, messages = DEFAULT_MESSAGES, fullDateFormatter = DEFAULT_FORMATTER, units = DEFAULT_UNITS, showSecond = false, rounding = \"round\" } = options;\n\tconst roundFn = typeof rounding === \"number\" ? (n) => +n.toFixed(rounding) : Math[rounding];\n\tconst diff = +now - +from;\n\tconst absDiff = Math.abs(diff);\n\tfunction getValue(diff, unit) {\n\t\treturn roundFn(Math.abs(diff) / unit.value);\n\t}\n\tfunction format(diff, unit) {\n\t\tconst val = getValue(diff, unit);\n\t\tconst past = diff > 0;\n\t\tconst str = applyFormat(unit.name, val, past);\n\t\treturn applyFormat(past ? \"past\" : \"future\", str, past);\n\t}\n\tfunction applyFormat(name, val, isPast) {\n\t\tconst formatter = messages[name];\n\t\tif (typeof formatter === \"function\") return formatter(val, isPast);\n\t\treturn formatter.replace(\"{0}\", val.toString());\n\t}\n\tif (absDiff < 6e4 && !showSecond) return messages.justNow;\n\tif (typeof max === \"number\" && absDiff > max) return fullDateFormatter(new Date(from));\n\tif (typeof max === \"string\") {\n\t\tvar _units$find;\n\t\tconst unitMax = (_units$find = units.find((i) => i.name === max)) === null || _units$find === void 0 ? void 0 : _units$find.max;\n\t\tif (unitMax && absDiff > unitMax) return fullDateFormatter(new Date(from));\n\t}\n\tfor (const [idx, unit] of units.entries()) {\n\t\tif (getValue(diff, unit) <= 0 && units[idx - 1]) return format(diff, units[idx - 1]);\n\t\tif (absDiff < unit.max) return format(diff, unit);\n\t}\n\treturn messages.invalid;\n}\n//#endregion\n//#region useTimeAgoIntl/index.ts\nconst UNITS = [\n\t{\n\t\tname: \"year\",\n\t\tms: 31536e6\n\t},\n\t{\n\t\tname: \"month\",\n\t\tms: 2592e6\n\t},\n\t{\n\t\tname: \"week\",\n\t\tms: 6048e5\n\t},\n\t{\n\t\tname: \"day\",\n\t\tms: 864e5\n\t},\n\t{\n\t\tname: \"hour\",\n\t\tms: 36e5\n\t},\n\t{\n\t\tname: \"minute\",\n\t\tms: 6e4\n\t},\n\t{\n\t\tname: \"second\",\n\t\tms: 1e3\n\t}\n];\nfunction getDefaultScheduler$3(options) {\n\tif (\"updateInterval\" in options) {\n\t\tconst { updateInterval = 3e4 } = options;\n\t\treturn (cb) => useIntervalFn(cb, updateInterval);\n\t}\n\treturn (cb) => useIntervalFn(cb, 3e4);\n}\nfunction useTimeAgoIntl(time, options = {}) {\n\tconst { controls: exposeControls = false, scheduler = getDefaultScheduler$3(options) } = options;\n\tconst { now, ...controls } = useNow({\n\t\tscheduler,\n\t\tcontrols: true\n\t});\n\tconst result = computed(() => getTimeAgoIntlResult(new Date(toValue(time)), options, toValue(now)));\n\tconst parts = computed(() => result.value.parts);\n\tconst timeAgoIntl = computed(() => formatTimeAgoIntlParts(parts.value, {\n\t\t...options,\n\t\tlocale: result.value.resolvedLocale\n\t}));\n\treturn exposeControls ? {\n\t\ttimeAgoIntl,\n\t\tparts,\n\t\t...controls\n\t} : timeAgoIntl;\n}\n/**\n* Non-reactive version of useTimeAgoIntl\n*/\nfunction formatTimeAgoIntl(from, options = {}, now = Date.now()) {\n\tconst { parts, resolvedLocale } = getTimeAgoIntlResult(from, options, now);\n\treturn formatTimeAgoIntlParts(parts, {\n\t\t...options,\n\t\tlocale: resolvedLocale\n\t});\n}\n/**\n* Get parts from `Intl.RelativeTimeFormat.formatToParts`.\n*/\nfunction getTimeAgoIntlResult(from, options = {}, now = Date.now()) {\n\tvar _options$units;\n\tconst { locale, relativeTimeFormatOptions = { numeric: \"auto\" } } = options;\n\tconst rtf = new Intl.RelativeTimeFormat(locale, relativeTimeFormatOptions);\n\tconst { locale: resolvedLocale } = rtf.resolvedOptions();\n\tconst diff = +from - +now;\n\tconst absDiff = Math.abs(diff);\n\tconst units = (_options$units = options.units) !== null && _options$units !== void 0 ? _options$units : UNITS;\n\tfor (const { name, ms } of units) if (absDiff >= ms) return {\n\t\tresolvedLocale,\n\t\tparts: rtf.formatToParts(Math.round(diff / ms), name)\n\t};\n\treturn {\n\t\tresolvedLocale,\n\t\tparts: rtf.formatToParts(0, units[units.length - 1].name)\n\t};\n}\n/**\n* Format parts into a string\n*/\nfunction formatTimeAgoIntlParts(parts, options = {}) {\n\tconst { insertSpace = true, joinParts, locale } = options;\n\tif (typeof joinParts === \"function\") return joinParts(parts, locale);\n\tif (!insertSpace) return parts.map((part) => part.value).join(\"\");\n\treturn parts.map((part) => part.value.trim()).join(\" \");\n}\n//#endregion\n//#region useTimeoutPoll/index.ts\nfunction useTimeoutPoll(fn, interval, options = {}) {\n\tconst { immediate = true, immediateCallback = false } = options;\n\tconst { start } = useTimeoutFn(loop, interval, { immediate });\n\tconst isActive = shallowRef(false);\n\tasync function loop() {\n\t\tif (!isActive.value) return;\n\t\tawait fn();\n\t\tstart();\n\t}\n\tfunction resume() {\n\t\tif (!isActive.value) {\n\t\t\tisActive.value = true;\n\t\t\tif (immediateCallback) fn();\n\t\t\tstart();\n\t\t}\n\t}\n\tfunction pause() {\n\t\tisActive.value = false;\n\t}\n\tif (immediate && isClient) resume();\n\ttryOnScopeDispose(pause);\n\treturn {\n\t\tisActive,\n\t\tpause,\n\t\tresume\n\t};\n}\n//#endregion\n//#region useTimestamp/index.ts\nfunction getDefaultScheduler$2(options) {\n\tif (\"interval\" in options || \"immediate\" in options) {\n\t\tconst { interval = \"requestAnimationFrame\", immediate = true } = options;\n\t\treturn interval === \"requestAnimationFrame\" ? (cb) => useRafFn(cb, { immediate }) : (cb) => useIntervalFn(cb, interval, { immediate });\n\t}\n\treturn useRafFn;\n}\nfunction useTimestamp(options = {}) {\n\tconst { controls: exposeControls = false, offset = 0, scheduler = getDefaultScheduler$2(options), callback } = options;\n\tconst ts = shallowRef(timestamp() + offset);\n\tconst update = () => ts.value = timestamp() + offset;\n\tconst controls = scheduler(callback ? () => {\n\t\tupdate();\n\t\tcallback(ts.value);\n\t} : update);\n\tif (exposeControls) return {\n\t\ttimestamp: ts,\n\t\t...controls\n\t};\n\telse return ts;\n}\n//#endregion\n//#region useTitle/index.ts\nfunction useTitle(newTitle = null, options = {}) {\n\tvar _document$title, _ref;\n\tconst { document = defaultDocument, restoreOnUnmount = (t) => t } = options;\n\tconst originalTitle = (_document$title = document === null || document === void 0 ? void 0 : document.title) !== null && _document$title !== void 0 ? _document$title : \"\";\n\tconst title = toRef((_ref = newTitle !== null && newTitle !== void 0 ? newTitle : document === null || document === void 0 ? void 0 : document.title) !== null && _ref !== void 0 ? _ref : null);\n\tconst isReadonly = !!(newTitle && typeof newTitle === \"function\");\n\tfunction format(t) {\n\t\tif (!(\"titleTemplate\" in options)) return t;\n\t\tconst template = options.titleTemplate || \"%s\";\n\t\treturn typeof template === \"function\" ? template(t) : toValue(template).replace(/%s/g, t);\n\t}\n\twatch(title, (newValue, oldValue) => {\n\t\tif (newValue !== oldValue && document) document.title = format(newValue !== null && newValue !== void 0 ? newValue : \"\");\n\t}, { immediate: true });\n\tif (options.observe && !options.titleTemplate && document && !isReadonly) {\n\t\tvar _document$head;\n\t\tuseMutationObserver((_document$head = document.head) === null || _document$head === void 0 ? void 0 : _document$head.querySelector(\"title\"), () => {\n\t\t\tif (document && document.title !== title.value) title.value = format(document.title);\n\t\t}, { childList: true });\n\t}\n\ttryOnScopeDispose(() => {\n\t\tif (restoreOnUnmount) {\n\t\t\tconst restoredTitle = restoreOnUnmount(originalTitle, title.value || \"\");\n\t\t\tif (restoredTitle != null && document) document.title = restoredTitle;\n\t\t}\n\t});\n\treturn title;\n}\n/**\n* Common transitions\n*\n* @see https://easings.net\n*/\nconst TransitionPresets = /* @__PURE__ */ Object.assign({}, { linear: identity }, {\n\teaseInSine: [\n\t\t.12,\n\t\t0,\n\t\t.39,\n\t\t0\n\t],\n\teaseOutSine: [\n\t\t.61,\n\t\t1,\n\t\t.88,\n\t\t1\n\t],\n\teaseInOutSine: [\n\t\t.37,\n\t\t0,\n\t\t.63,\n\t\t1\n\t],\n\teaseInQuad: [\n\t\t.11,\n\t\t0,\n\t\t.5,\n\t\t0\n\t],\n\teaseOutQuad: [\n\t\t.5,\n\t\t1,\n\t\t.89,\n\t\t1\n\t],\n\teaseInOutQuad: [\n\t\t.45,\n\t\t0,\n\t\t.55,\n\t\t1\n\t],\n\teaseInCubic: [\n\t\t.32,\n\t\t0,\n\t\t.67,\n\t\t0\n\t],\n\teaseOutCubic: [\n\t\t.33,\n\t\t1,\n\t\t.68,\n\t\t1\n\t],\n\teaseInOutCubic: [\n\t\t.65,\n\t\t0,\n\t\t.35,\n\t\t1\n\t],\n\teaseInQuart: [\n\t\t.5,\n\t\t0,\n\t\t.75,\n\t\t0\n\t],\n\teaseOutQuart: [\n\t\t.25,\n\t\t1,\n\t\t.5,\n\t\t1\n\t],\n\teaseInOutQuart: [\n\t\t.76,\n\t\t0,\n\t\t.24,\n\t\t1\n\t],\n\teaseInQuint: [\n\t\t.64,\n\t\t0,\n\t\t.78,\n\t\t0\n\t],\n\teaseOutQuint: [\n\t\t.22,\n\t\t1,\n\t\t.36,\n\t\t1\n\t],\n\teaseInOutQuint: [\n\t\t.83,\n\t\t0,\n\t\t.17,\n\t\t1\n\t],\n\teaseInExpo: [\n\t\t.7,\n\t\t0,\n\t\t.84,\n\t\t0\n\t],\n\teaseOutExpo: [\n\t\t.16,\n\t\t1,\n\t\t.3,\n\t\t1\n\t],\n\teaseInOutExpo: [\n\t\t.87,\n\t\t0,\n\t\t.13,\n\t\t1\n\t],\n\teaseInCirc: [\n\t\t.55,\n\t\t0,\n\t\t1,\n\t\t.45\n\t],\n\teaseOutCirc: [\n\t\t0,\n\t\t.55,\n\t\t.45,\n\t\t1\n\t],\n\teaseInOutCirc: [\n\t\t.85,\n\t\t0,\n\t\t.15,\n\t\t1\n\t],\n\teaseInBack: [\n\t\t.36,\n\t\t0,\n\t\t.66,\n\t\t-.56\n\t],\n\teaseOutBack: [\n\t\t.34,\n\t\t1.56,\n\t\t.64,\n\t\t1\n\t],\n\teaseInOutBack: [\n\t\t.68,\n\t\t-.6,\n\t\t.32,\n\t\t1.6\n\t]\n});\n/**\n* Create an easing function from cubic bezier points.\n*/\nfunction createEasingFunction([p0, p1, p2, p3]) {\n\tconst a = (a1, a2) => 1 - 3 * a2 + 3 * a1;\n\tconst b = (a1, a2) => 3 * a2 - 6 * a1;\n\tconst c = (a1) => 3 * a1;\n\tconst calcBezier = (t, a1, a2) => ((a(a1, a2) * t + b(a1, a2)) * t + c(a1)) * t;\n\tconst getSlope = (t, a1, a2) => 3 * a(a1, a2) * t * t + 2 * b(a1, a2) * t + c(a1);\n\tconst getTforX = (x) => {\n\t\tlet aGuessT = x;\n\t\tfor (let i = 0; i < 4; ++i) {\n\t\t\tconst currentSlope = getSlope(aGuessT, p0, p2);\n\t\t\tif (currentSlope === 0) return aGuessT;\n\t\t\tconst currentX = calcBezier(aGuessT, p0, p2) - x;\n\t\t\taGuessT -= currentX / currentSlope;\n\t\t}\n\t\treturn aGuessT;\n\t};\n\treturn (x) => p0 === p1 && p2 === p3 ? x : calcBezier(getTforX(x), p1, p3);\n}\nfunction lerp(a, b, alpha) {\n\treturn a + alpha * (b - a);\n}\nfunction defaultInterpolation(a, b, t) {\n\tconst aVal = toValue(a);\n\tconst bVal = toValue(b);\n\tif (typeof aVal === \"number\" && typeof bVal === \"number\") return lerp(aVal, bVal, t);\n\tif (Array.isArray(aVal) && Array.isArray(bVal)) return aVal.map((v, i) => lerp(v, toValue(bVal[i]), t));\n\tthrow new TypeError(\"Unknown transition type, specify an interpolation function.\");\n}\nfunction normalizeEasing(easing) {\n\tvar _toValue;\n\treturn typeof easing === \"function\" ? easing : (_toValue = toValue(easing)) !== null && _toValue !== void 0 ? _toValue : identity;\n}\n/**\n* Transition from one value to another.\n*\n* @param source\n* @param from\n* @param to\n* @param options\n*/\nfunction transition(source, from, to, options = {}) {\n\tvar _toValue2;\n\tconst { window = defaultWindow } = options;\n\tconst fromVal = toValue(from);\n\tconst toVal = toValue(to);\n\tconst duration = (_toValue2 = toValue(options.duration)) !== null && _toValue2 !== void 0 ? _toValue2 : 1e3;\n\tconst startedAt = Date.now();\n\tconst endAt = Date.now() + duration;\n\tconst interpolation = typeof options.interpolation === \"function\" ? options.interpolation : defaultInterpolation;\n\tconst trans = typeof options.easing !== \"undefined\" ? normalizeEasing(options.easing) : normalizeEasing(options.transition);\n\tconst ease = typeof trans === \"function\" ? trans : createEasingFunction(trans);\n\treturn new Promise((resolve) => {\n\t\tsource.value = fromVal;\n\t\tconst tick = () => {\n\t\t\tvar _options$abort;\n\t\t\tif ((_options$abort = options.abort) === null || _options$abort === void 0 ? void 0 : _options$abort.call(options)) {\n\t\t\t\tresolve();\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tconst now = Date.now();\n\t\t\tsource.value = interpolation(fromVal, toVal, ease((now - startedAt) / duration));\n\t\t\tif (now < endAt) window === null || window === void 0 || window.requestAnimationFrame(tick);\n\t\t\telse {\n\t\t\t\tsource.value = toVal;\n\t\t\t\tresolve();\n\t\t\t}\n\t\t};\n\t\ttick();\n\t});\n}\n/**\n* Transition from one value to another.\n* @deprecated The `executeTransition` function is deprecated, use `transition` instead.\n*\n* @param source\n* @param from\n* @param to\n* @param options\n*/\nfunction executeTransition(source, from, to, options = {}) {\n\treturn transition(source, from, to, options);\n}\n/**\n* Follow value with a transition.\n*\n* @see https://vueuse.org/useTransition\n* @param source\n* @param options\n*/\nfunction useTransition(source, options = {}) {\n\tlet currentId = 0;\n\tconst sourceVal = () => {\n\t\tconst v = toValue(source);\n\t\treturn typeof options.interpolation === \"undefined\" && Array.isArray(v) ? v.map(toValue) : v;\n\t};\n\tconst outputRef = shallowRef(sourceVal());\n\twatch(sourceVal, async (to) => {\n\t\tvar _options$onStarted, _options$onFinished;\n\t\tif (toValue(options.disabled)) return;\n\t\tconst id = ++currentId;\n\t\tif (options.delay) await promiseTimeout(toValue(options.delay));\n\t\tif (id !== currentId) return;\n\t\t(_options$onStarted = options.onStarted) === null || _options$onStarted === void 0 || _options$onStarted.call(options);\n\t\tawait transition(outputRef, outputRef.value, to, {\n\t\t\t...options,\n\t\t\tabort: () => {\n\t\t\t\tvar _options$abort2;\n\t\t\t\treturn id !== currentId || ((_options$abort2 = options.abort) === null || _options$abort2 === void 0 ? void 0 : _options$abort2.call(options));\n\t\t\t}\n\t\t});\n\t\t(_options$onFinished = options.onFinished) === null || _options$onFinished === void 0 || _options$onFinished.call(options);\n\t}, { deep: true });\n\twatch(() => toValue(options.disabled), (disabled) => {\n\t\tif (disabled) {\n\t\t\tcurrentId++;\n\t\t\toutputRef.value = sourceVal();\n\t\t}\n\t});\n\ttryOnScopeDispose(() => {\n\t\tcurrentId++;\n\t});\n\treturn computed(() => toValue(options.disabled) ? sourceVal() : outputRef.value);\n}\n//#endregion\n//#region useUrlSearchParams/index.ts\n/**\n* Reactive URLSearchParams\n*\n* @see https://vueuse.org/useUrlSearchParams\n* @param mode\n* @param options\n*/\nfunction useUrlSearchParams(mode = \"history\", options = {}) {\n\tconst { initialValue = {}, removeNullishValues = true, removeFalsyValues = false, write: enableWrite = true, writeMode = \"replace\", window = defaultWindow, stringify = (params) => params.toString() } = options;\n\tif (!window) return reactive(initialValue);\n\tconst state = reactive({});\n\tfunction getRawParams() {\n\t\tif (mode === \"history\") return window.location.search || \"\";\n\t\telse if (mode === \"hash\") {\n\t\t\tconst hash = window.location.hash || \"\";\n\t\t\tconst index = hash.indexOf(\"?\");\n\t\t\treturn index > 0 ? hash.slice(index) : \"\";\n\t\t} else return (window.location.hash || \"\").replace(/^#/, \"\");\n\t}\n\tfunction constructQuery(params) {\n\t\tconst stringified = stringify(params);\n\t\tif (mode === \"history\") return `${stringified ? `?${stringified}` : \"\"}${window.location.hash || \"\"}`;\n\t\tif (mode === \"hash-params\") return `${window.location.search || \"\"}${stringified ? `#${stringified}` : \"\"}`;\n\t\tconst hash = window.location.hash || \"#\";\n\t\tconst index = hash.indexOf(\"?\");\n\t\tif (index > 0) return `${window.location.search || \"\"}${hash.slice(0, index)}${stringified ? `?${stringified}` : \"\"}`;\n\t\treturn `${window.location.search || \"\"}${hash}${stringified ? `?${stringified}` : \"\"}`;\n\t}\n\tfunction read() {\n\t\treturn new URLSearchParams(getRawParams());\n\t}\n\tfunction updateState(params) {\n\t\tconst unusedKeys = new Set(Object.keys(state));\n\t\tfor (const key of params.keys()) {\n\t\t\tconst paramsForKey = params.getAll(key);\n\t\t\tstate[key] = paramsForKey.length > 1 ? paramsForKey : params.get(key) || \"\";\n\t\t\tunusedKeys.delete(key);\n\t\t}\n\t\tArray.from(unusedKeys).forEach((key) => delete state[key]);\n\t}\n\tconst { pause, resume } = watchPausable(state, () => {\n\t\tconst params = new URLSearchParams(\"\");\n\t\tObject.keys(state).forEach((key) => {\n\t\t\tconst mapEntry = state[key];\n\t\t\tif (Array.isArray(mapEntry)) mapEntry.forEach((value) => params.append(key, value));\n\t\t\telse if (removeNullishValues && mapEntry == null) params.delete(key);\n\t\t\telse if (removeFalsyValues && !mapEntry) params.delete(key);\n\t\t\telse params.set(key, mapEntry);\n\t\t});\n\t\twrite(params, false);\n\t}, { deep: true });\n\tfunction write(params, shouldUpdate, shouldWriteHistory = true) {\n\t\tpause();\n\t\tif (shouldUpdate) updateState(params);\n\t\tif (writeMode === \"replace\") window.history.replaceState(window.history.state, window.document.title, window.location.pathname + constructQuery(params));\n\t\telse if (shouldWriteHistory) window.history.pushState(window.history.state, window.document.title, window.location.pathname + constructQuery(params));\n\t\tnextTick(() => resume());\n\t}\n\tfunction onChanged() {\n\t\tif (!enableWrite) return;\n\t\twrite(read(), true, false);\n\t}\n\tconst listenerOptions = { passive: true };\n\tuseEventListener(window, \"popstate\", onChanged, listenerOptions);\n\tif (mode !== \"history\") useEventListener(window, \"hashchange\", onChanged, listenerOptions);\n\tconst initial = read();\n\tif (initial.keys().next().value) updateState(initial);\n\telse Object.assign(state, initialValue);\n\treturn state;\n}\n//#endregion\n//#region useUserMedia/index.ts\n/**\n* Reactive `mediaDevices.getUserMedia` streaming\n*\n* @see https://vueuse.org/useUserMedia\n* @param options\n*/\nfunction useUserMedia(options = {}) {\n\tvar _options$enabled, _options$autoSwitch;\n\tconst enabled = shallowRef((_options$enabled = options.enabled) !== null && _options$enabled !== void 0 ? _options$enabled : false);\n\tconst autoSwitch = shallowRef((_options$autoSwitch = options.autoSwitch) !== null && _options$autoSwitch !== void 0 ? _options$autoSwitch : true);\n\tconst constraints = ref(options.constraints);\n\tconst { navigator = defaultNavigator } = options;\n\tconst isSupported = /* @__PURE__ */ useSupported(() => {\n\t\tvar _navigator$mediaDevic;\n\t\treturn navigator === null || navigator === void 0 || (_navigator$mediaDevic = navigator.mediaDevices) === null || _navigator$mediaDevic === void 0 ? void 0 : _navigator$mediaDevic.getUserMedia;\n\t});\n\tconst stream = shallowRef();\n\tfunction getDeviceOptions(type) {\n\t\tswitch (type) {\n\t\t\tcase \"video\":\n\t\t\t\tif (constraints.value) return constraints.value.video || false;\n\t\t\t\tbreak;\n\t\t\tcase \"audio\":\n\t\t\t\tif (constraints.value) return constraints.value.audio || false;\n\t\t\t\tbreak;\n\t\t}\n\t}\n\tasync function _start() {\n\t\tif (!isSupported.value || stream.value) return;\n\t\tstream.value = await navigator.mediaDevices.getUserMedia({\n\t\t\tvideo: getDeviceOptions(\"video\"),\n\t\t\taudio: getDeviceOptions(\"audio\")\n\t\t});\n\t\treturn stream.value;\n\t}\n\tfunction _stop() {\n\t\tvar _stream$value;\n\t\t(_stream$value = stream.value) === null || _stream$value === void 0 || _stream$value.getTracks().forEach((t) => t.stop());\n\t\tstream.value = void 0;\n\t}\n\tfunction stop() {\n\t\t_stop();\n\t\tenabled.value = false;\n\t}\n\tasync function start() {\n\t\tawait _start();\n\t\tif (stream.value) enabled.value = true;\n\t\treturn stream.value;\n\t}\n\tasync function restart() {\n\t\t_stop();\n\t\treturn await start();\n\t}\n\twatch(enabled, (v) => {\n\t\tif (v) _start();\n\t\telse _stop();\n\t}, { immediate: true });\n\twatch(constraints, () => {\n\t\tif (autoSwitch.value && stream.value) restart();\n\t}, {\n\t\timmediate: true,\n\t\tdeep: true\n\t});\n\ttryOnScopeDispose(() => {\n\t\tstop();\n\t});\n\treturn {\n\t\tisSupported,\n\t\tstream,\n\t\tstart,\n\t\tstop,\n\t\trestart,\n\t\tconstraints,\n\t\tenabled,\n\t\tautoSwitch\n\t};\n}\n//#endregion\n//#region useVModel/index.ts\n/**\n* Shorthand for v-model binding, props + emit -> ref\n*\n* @see https://vueuse.org/useVModel\n* @param props\n* @param key (default 'modelValue')\n* @param emit\n* @param options\n*\n* @__NO_SIDE_EFFECTS__\n*/\nfunction useVModel(props, key, emit, options = {}) {\n\tvar _vm$$emit, _vm$proxy;\n\tconst { clone = false, passive = false, eventName, deep = false, defaultValue, shouldEmit } = options;\n\tconst vm = getCurrentInstance();\n\tconst _emit = emit || (vm === null || vm === void 0 ? void 0 : vm.emit) || (vm === null || vm === void 0 || (_vm$$emit = vm.$emit) === null || _vm$$emit === void 0 ? void 0 : _vm$$emit.bind(vm)) || (vm === null || vm === void 0 || (_vm$proxy = vm.proxy) === null || _vm$proxy === void 0 || (_vm$proxy = _vm$proxy.$emit) === null || _vm$proxy === void 0 ? void 0 : _vm$proxy.bind(vm === null || vm === void 0 ? void 0 : vm.proxy));\n\tlet event = eventName;\n\tif (!key) key = \"modelValue\";\n\tevent = event || `update:${key.toString()}`;\n\tconst cloneFn = (val) => !clone ? val : typeof clone === \"function\" ? clone(val) : cloneFnJSON(val);\n\tconst getValue = () => isDef(props[key]) ? cloneFn(props[key]) : defaultValue;\n\tconst triggerEmit = (value) => {\n\t\tif (shouldEmit) {\n\t\t\tif (shouldEmit(value)) _emit(event, value);\n\t\t} else _emit(event, value);\n\t};\n\tif (passive) {\n\t\tconst proxy = ref(getValue());\n\t\tlet isUpdating = false;\n\t\twatch(() => props[key], (v) => {\n\t\t\tif (!isUpdating) {\n\t\t\t\tisUpdating = true;\n\t\t\t\tproxy.value = cloneFn(v);\n\t\t\t\tnextTick(() => isUpdating = false);\n\t\t\t}\n\t\t});\n\t\twatch(proxy, (v) => {\n\t\t\tif (!isUpdating && (v !== props[key] || deep)) triggerEmit(v);\n\t\t}, { deep });\n\t\treturn proxy;\n\t} else return computed({\n\t\tget() {\n\t\t\treturn getValue();\n\t\t},\n\t\tset(value) {\n\t\t\ttriggerEmit(value);\n\t\t}\n\t});\n}\n//#endregion\n//#region useVModels/index.ts\n/**\n* Shorthand for props v-model binding. Think like `toRefs(props)` but changes will also emit out.\n*\n* @see https://vueuse.org/useVModels\n* @param props\n* @param emit\n* @param options\n*\n* @__NO_SIDE_EFFECTS__\n*/\nfunction useVModels(props, emit, options = {}) {\n\tconst ret = {};\n\tfor (const key in props) ret[key] = useVModel(props, key, emit, options);\n\treturn ret;\n}\n//#endregion\n//#region useVibrate/index.ts\nfunction getDefaultScheduler$1(options = { interval: 0 }) {\n\tconst { interval } = options;\n\tif (interval === 0) return;\n\treturn (fn) => useIntervalFn(fn, interval, {\n\t\timmediate: false,\n\t\timmediateCallback: false\n\t});\n}\n/**\n* Reactive vibrate\n*\n* @see https://vueuse.org/useVibrate\n* @see https://developer.mozilla.org/en-US/docs/Web/API/Vibration_API\n* @param options\n*\n* @__NO_SIDE_EFFECTS__\n*/\nfunction useVibrate(options) {\n\tconst { pattern = [], scheduler = getDefaultScheduler$1(options), navigator = defaultNavigator } = options || {};\n\tconst isSupported = /* @__PURE__ */ useSupported(() => typeof navigator !== \"undefined\" && \"vibrate\" in navigator);\n\tconst patternRef = toRef(pattern);\n\tconst vibrate = (pattern = patternRef.value) => {\n\t\tif (isSupported.value) navigator.vibrate(pattern);\n\t};\n\tconst intervalControls = scheduler === null || scheduler === void 0 ? void 0 : scheduler(vibrate);\n\tconst stop = () => {\n\t\tif (isSupported.value) navigator.vibrate(0);\n\t\tintervalControls === null || intervalControls === void 0 || intervalControls.pause();\n\t};\n\treturn {\n\t\tisSupported,\n\t\tpattern,\n\t\tintervalControls,\n\t\tvibrate,\n\t\tstop\n\t};\n}\n//#endregion\n//#region useVirtualList/index.ts\n/**\n* Please consider using [`vue-virtual-scroller`](https://github.com/Akryum/vue-virtual-scroller) if you are looking for more features.\n*/\nfunction useVirtualList(list, options) {\n\tconst { containerStyle, wrapperProps, scrollTo, calculateRange, currentList, containerRef } = \"itemHeight\" in options ? useVerticalVirtualList(options, list) : useHorizontalVirtualList(options, list);\n\treturn {\n\t\tlist: currentList,\n\t\tscrollTo,\n\t\tcontainerProps: {\n\t\t\tref: containerRef,\n\t\t\tonScroll: () => {\n\t\t\t\tcalculateRange();\n\t\t\t},\n\t\t\tstyle: containerStyle\n\t\t},\n\t\twrapperProps\n\t};\n}\nfunction useVirtualListResources(list) {\n\tconst containerRef = shallowRef(null);\n\tconst size = useElementSize(containerRef);\n\tconst currentList = ref([]);\n\tconst source = shallowRef(list);\n\treturn {\n\t\tstate: ref({\n\t\t\tstart: 0,\n\t\t\tend: 10\n\t\t}),\n\t\tsource,\n\t\tcurrentList,\n\t\tsize,\n\t\tcontainerRef\n\t};\n}\nfunction createGetViewCapacity(state, source, itemSize) {\n\treturn (containerSize) => {\n\t\tif (typeof itemSize === \"number\") return Math.ceil(containerSize / itemSize);\n\t\tconst { start = 0 } = state.value;\n\t\tlet sum = 0;\n\t\tlet capacity = 0;\n\t\tfor (let i = start; i < source.value.length; i++) {\n\t\t\tconst size = itemSize(i);\n\t\t\tsum += size;\n\t\t\tcapacity = i;\n\t\t\tif (sum > containerSize) break;\n\t\t}\n\t\treturn capacity - start;\n\t};\n}\nfunction createGetOffset(source, itemSize) {\n\treturn (scrollDirection) => {\n\t\tif (typeof itemSize === \"number\") return Math.floor(scrollDirection / itemSize) + 1;\n\t\tlet sum = 0;\n\t\tlet offset = 0;\n\t\tfor (let i = 0; i < source.value.length; i++) {\n\t\t\tconst size = itemSize(i);\n\t\t\tsum += size;\n\t\t\tif (sum >= scrollDirection) {\n\t\t\t\toffset = i;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t\treturn offset + 1;\n\t};\n}\nfunction createCalculateRange(type, overscan, getOffset, getViewCapacity, { containerRef, state, currentList, source }) {\n\treturn () => {\n\t\tconst element = containerRef.value;\n\t\tif (element) {\n\t\t\tconst offset = getOffset(type === \"vertical\" ? element.scrollTop : element.scrollLeft);\n\t\t\tconst viewCapacity = getViewCapacity(type === \"vertical\" ? element.clientHeight : element.clientWidth);\n\t\t\tconst from = offset - overscan;\n\t\t\tconst to = offset + viewCapacity + overscan;\n\t\t\tstate.value = {\n\t\t\t\tstart: from < 0 ? 0 : from,\n\t\t\t\tend: to > source.value.length ? source.value.length : to\n\t\t\t};\n\t\t\tcurrentList.value = source.value.slice(state.value.start, state.value.end).map((ele, index) => ({\n\t\t\t\tdata: ele,\n\t\t\t\tindex: index + state.value.start\n\t\t\t}));\n\t\t}\n\t};\n}\nfunction createGetDistance(itemSize, source) {\n\treturn (index) => {\n\t\tif (typeof itemSize === \"number\") return index * itemSize;\n\t\treturn source.value.slice(0, index).reduce((sum, _, i) => sum + itemSize(i), 0);\n\t};\n}\nfunction useWatchForSizes(size, listRef, containerRef, calculateRange) {\n\twatch([\n\t\tsize.width,\n\t\tsize.height,\n\t\tlistRef,\n\t\tcontainerRef\n\t], () => {\n\t\tcalculateRange();\n\t});\n}\nfunction createComputedTotalSize(itemSize, source) {\n\treturn computed(() => {\n\t\tif (typeof itemSize === \"number\") return source.value.length * itemSize;\n\t\treturn source.value.reduce((sum, _, index) => sum + itemSize(index), 0);\n\t});\n}\nconst scrollToDictionaryForElementScrollKey = {\n\thorizontal: \"scrollLeft\",\n\tvertical: \"scrollTop\"\n};\nfunction createScrollTo(type, calculateRange, getDistance, containerRef) {\n\treturn (index) => {\n\t\tif (containerRef.value) {\n\t\t\tcontainerRef.value[scrollToDictionaryForElementScrollKey[type]] = getDistance(index);\n\t\t\tcalculateRange();\n\t\t}\n\t};\n}\nfunction useHorizontalVirtualList(options, list) {\n\tconst resources = useVirtualListResources(list);\n\tconst { state, source, currentList, size, containerRef } = resources;\n\tconst containerStyle = { overflowX: \"auto\" };\n\tconst { itemWidth, overscan = 5 } = options;\n\tconst getViewCapacity = createGetViewCapacity(state, source, itemWidth);\n\tconst calculateRange = createCalculateRange(\"horizontal\", overscan, createGetOffset(source, itemWidth), getViewCapacity, resources);\n\tconst getDistanceLeft = createGetDistance(itemWidth, source);\n\tconst offsetLeft = computed(() => getDistanceLeft(state.value.start));\n\tconst totalWidth = createComputedTotalSize(itemWidth, source);\n\tuseWatchForSizes(size, source, containerRef, calculateRange);\n\treturn {\n\t\tscrollTo: createScrollTo(\"horizontal\", calculateRange, getDistanceLeft, containerRef),\n\t\tcalculateRange,\n\t\twrapperProps: computed(() => {\n\t\t\treturn { style: {\n\t\t\t\theight: \"100%\",\n\t\t\t\twidth: `${totalWidth.value - offsetLeft.value}px`,\n\t\t\t\tmarginLeft: `${offsetLeft.value}px`,\n\t\t\t\tdisplay: \"flex\"\n\t\t\t} };\n\t\t}),\n\t\tcontainerStyle,\n\t\tcurrentList,\n\t\tcontainerRef\n\t};\n}\nfunction useVerticalVirtualList(options, list) {\n\tconst resources = useVirtualListResources(list);\n\tconst { state, source, currentList, size, containerRef } = resources;\n\tconst containerStyle = { overflowY: \"auto\" };\n\tconst { itemHeight, overscan = 5 } = options;\n\tconst getViewCapacity = createGetViewCapacity(state, source, itemHeight);\n\tconst calculateRange = createCalculateRange(\"vertical\", overscan, createGetOffset(source, itemHeight), getViewCapacity, resources);\n\tconst getDistanceTop = createGetDistance(itemHeight, source);\n\tconst offsetTop = computed(() => getDistanceTop(state.value.start));\n\tconst totalHeight = createComputedTotalSize(itemHeight, source);\n\tuseWatchForSizes(size, source, containerRef, calculateRange);\n\treturn {\n\t\tcalculateRange,\n\t\tscrollTo: createScrollTo(\"vertical\", calculateRange, getDistanceTop, containerRef),\n\t\tcontainerStyle,\n\t\twrapperProps: computed(() => {\n\t\t\treturn { style: {\n\t\t\t\twidth: \"100%\",\n\t\t\t\theight: `${totalHeight.value - offsetTop.value}px`,\n\t\t\t\tmarginTop: `${offsetTop.value}px`\n\t\t\t} };\n\t\t}),\n\t\tcurrentList,\n\t\tcontainerRef\n\t};\n}\n//#endregion\n//#region useWakeLock/index.ts\n/**\n* Reactive Screen Wake Lock API.\n*\n* @see https://vueuse.org/useWakeLock\n* @param options\n*\n* @__NO_SIDE_EFFECTS__\n*/\nfunction useWakeLock(options = {}) {\n\tconst { navigator = defaultNavigator, document = defaultDocument } = options;\n\tconst requestedType = shallowRef(false);\n\tconst sentinel = shallowRef(null);\n\tconst documentVisibility = useDocumentVisibility({ document });\n\tconst isSupported = /* @__PURE__ */ useSupported(() => navigator && \"wakeLock\" in navigator);\n\tconst isActive = computed(() => !!sentinel.value && documentVisibility.value === \"visible\");\n\tif (isSupported.value) {\n\t\tuseEventListener(sentinel, \"release\", () => {\n\t\t\tvar _sentinel$value$type, _sentinel$value;\n\t\t\trequestedType.value = (_sentinel$value$type = (_sentinel$value = sentinel.value) === null || _sentinel$value === void 0 ? void 0 : _sentinel$value.type) !== null && _sentinel$value$type !== void 0 ? _sentinel$value$type : false;\n\t\t}, { passive: true });\n\t\twhenever(() => documentVisibility.value === \"visible\" && (document === null || document === void 0 ? void 0 : document.visibilityState) === \"visible\" && requestedType.value, (type) => {\n\t\t\trequestedType.value = false;\n\t\t\tforceRequest(type);\n\t\t});\n\t}\n\tasync function forceRequest(type) {\n\t\tvar _sentinel$value2;\n\t\tawait ((_sentinel$value2 = sentinel.value) === null || _sentinel$value2 === void 0 ? void 0 : _sentinel$value2.release());\n\t\tsentinel.value = isSupported.value ? await navigator.wakeLock.request(type) : null;\n\t}\n\tasync function request(type) {\n\t\tif (documentVisibility.value === \"visible\") await forceRequest(type);\n\t\telse requestedType.value = type;\n\t}\n\tasync function release() {\n\t\trequestedType.value = false;\n\t\tconst s = sentinel.value;\n\t\tsentinel.value = null;\n\t\tawait (s === null || s === void 0 ? void 0 : s.release());\n\t}\n\ttryOnScopeDispose(() => {\n\t\trelease();\n\t});\n\treturn {\n\t\tsentinel,\n\t\tisSupported,\n\t\tisActive,\n\t\trequest,\n\t\tforceRequest,\n\t\trelease\n\t};\n}\n//#endregion\n//#region useWebNotification/index.ts\n/**\n* Reactive useWebNotification\n*\n* @see https://vueuse.org/useWebNotification\n* @see https://developer.mozilla.org/en-US/docs/Web/API/notification\n*/\nfunction useWebNotification(options = {}) {\n\tconst { window = defaultWindow, requestPermissions: _requestForPermissions = true } = options;\n\tconst defaultWebNotificationOptions = options;\n\tconst isSupported = /* @__PURE__ */ useSupported(() => {\n\t\tif (!window || !(\"Notification\" in window)) return false;\n\t\tif (Notification.permission === \"granted\") return true;\n\t\ttry {\n\t\t\tconst notification = new Notification(\"\");\n\t\t\tnotification.onshow = () => {\n\t\t\t\tnotification.close();\n\t\t\t};\n\t\t} catch (e) {\n\t\t\tif (e.name === \"TypeError\") return false;\n\t\t}\n\t\treturn true;\n\t});\n\tconst permissionGranted = shallowRef(isSupported.value && \"permission\" in Notification && Notification.permission === \"granted\");\n\tconst notification = shallowRef(null);\n\tconst ensurePermissions = async () => {\n\t\tif (!isSupported.value) return;\n\t\tif (!permissionGranted.value && Notification.permission !== \"denied\") {\n\t\t\tif (await Notification.requestPermission() === \"granted\") permissionGranted.value = true;\n\t\t}\n\t\treturn permissionGranted.value;\n\t};\n\tconst { on: onClick, trigger: clickTrigger } = createEventHook();\n\tconst { on: onShow, trigger: showTrigger } = createEventHook();\n\tconst { on: onError, trigger: errorTrigger } = createEventHook();\n\tconst { on: onClose, trigger: closeTrigger } = createEventHook();\n\tconst show = async (overrides) => {\n\t\tif (!isSupported.value || !permissionGranted.value) return;\n\t\tconst options = Object.assign({}, defaultWebNotificationOptions, overrides);\n\t\tnotification.value = new Notification(options.title || \"\", options);\n\t\tnotification.value.onclick = clickTrigger;\n\t\tnotification.value.onshow = showTrigger;\n\t\tnotification.value.onerror = errorTrigger;\n\t\tnotification.value.onclose = closeTrigger;\n\t\treturn notification.value;\n\t};\n\tconst close = () => {\n\t\tif (notification.value) notification.value.close();\n\t\tnotification.value = null;\n\t};\n\tif (_requestForPermissions) tryOnMounted(ensurePermissions);\n\ttryOnScopeDispose(close);\n\tif (isSupported.value && window) {\n\t\tconst document = window.document;\n\t\tuseEventListener(document, \"visibilitychange\", (e) => {\n\t\t\te.preventDefault();\n\t\t\tif (document.visibilityState === \"visible\") close();\n\t\t});\n\t}\n\treturn {\n\t\tisSupported,\n\t\tnotification,\n\t\tensurePermissions,\n\t\tpermissionGranted,\n\t\tshow,\n\t\tclose,\n\t\tonClick,\n\t\tonShow,\n\t\tonError,\n\t\tonClose\n\t};\n}\n//#endregion\n//#region useWebSocket/index.ts\nconst DEFAULT_PING_MESSAGE = \"ping\";\nfunction resolveNestedOptions(options) {\n\tif (options === true) return {};\n\treturn options;\n}\nfunction getDefaultScheduler(options) {\n\tif (\"interval\" in options) {\n\t\tconst { interval = 1e3 } = options;\n\t\treturn (cb) => useIntervalFn(cb, interval, { immediate: false });\n\t}\n\treturn (cb) => useIntervalFn(cb, 1e3, { immediate: false });\n}\n/**\n* Reactive WebSocket client.\n*\n* @see https://vueuse.org/useWebSocket\n* @param url\n*/\nfunction useWebSocket(url, options = {}) {\n\tconst { onConnected, onDisconnected, onError, onMessage, immediate = true, autoConnect = true, autoClose = true, protocols = [] } = options;\n\tconst data = shallowRef(null);\n\tconst status = shallowRef(\"CLOSED\");\n\tconst wsRef = shallowRef();\n\tconst urlRef = toRef(url);\n\tlet heartbeatPause;\n\tlet heartbeatResume;\n\tlet explicitlyClosed = false;\n\tlet retried = 0;\n\tlet bufferedData = [];\n\tlet retryTimeout;\n\tlet pongTimeoutWait;\n\tconst _sendBuffer = () => {\n\t\tif (bufferedData.length && wsRef.value && status.value === \"OPEN\") {\n\t\t\tfor (const buffer of bufferedData) wsRef.value.send(buffer);\n\t\t\tbufferedData = [];\n\t\t}\n\t};\n\tconst resetRetry = () => {\n\t\tif (retryTimeout != null) {\n\t\t\tclearTimeout(retryTimeout);\n\t\t\tretryTimeout = void 0;\n\t\t}\n\t};\n\tconst resetHeartbeat = () => {\n\t\tclearTimeout(pongTimeoutWait);\n\t\tpongTimeoutWait = void 0;\n\t};\n\tconst close = (code = 1e3, reason) => {\n\t\tresetRetry();\n\t\tif (!isClient && !isWorker || !wsRef.value) return;\n\t\texplicitlyClosed = true;\n\t\tresetHeartbeat();\n\t\theartbeatPause === null || heartbeatPause === void 0 || heartbeatPause();\n\t\twsRef.value.close(code, reason);\n\t\twsRef.value = void 0;\n\t};\n\tconst send = (data, useBuffer = true) => {\n\t\tif (!wsRef.value || status.value !== \"OPEN\") {\n\t\t\tif (useBuffer) bufferedData.push(data);\n\t\t\treturn false;\n\t\t}\n\t\t_sendBuffer();\n\t\twsRef.value.send(data);\n\t\treturn true;\n\t};\n\tconst _init = () => {\n\t\tif (explicitlyClosed || typeof urlRef.value === \"undefined\") return;\n\t\tconst ws = new WebSocket(urlRef.value, protocols);\n\t\twsRef.value = ws;\n\t\tstatus.value = \"CONNECTING\";\n\t\tws.onopen = () => {\n\t\t\tif (wsRef.value !== ws) return;\n\t\t\tstatus.value = \"OPEN\";\n\t\t\tretried = 0;\n\t\t\tonConnected === null || onConnected === void 0 || onConnected(ws);\n\t\t\theartbeatResume === null || heartbeatResume === void 0 || heartbeatResume();\n\t\t\t_sendBuffer();\n\t\t};\n\t\tws.onclose = (ev) => {\n\t\t\tif (wsRef.value === ws) status.value = \"CLOSED\";\n\t\t\tresetHeartbeat();\n\t\t\theartbeatPause === null || heartbeatPause === void 0 || heartbeatPause();\n\t\t\tonDisconnected === null || onDisconnected === void 0 || onDisconnected(ws, ev);\n\t\t\tif (!explicitlyClosed && options.autoReconnect && (wsRef.value == null || ws === wsRef.value)) {\n\t\t\t\tconst { retries = -1, delay = 1e3, onFailed } = resolveNestedOptions(options.autoReconnect);\n\t\t\t\tif ((typeof retries === \"function\" ? retries : () => typeof retries === \"number\" && (retries < 0 || retried < retries))(retried)) {\n\t\t\t\t\tretried += 1;\n\t\t\t\t\tconst delayTime = typeof delay === \"function\" ? delay(retried) : delay;\n\t\t\t\t\tretryTimeout = setTimeout(_init, delayTime);\n\t\t\t\t} else onFailed === null || onFailed === void 0 || onFailed();\n\t\t\t}\n\t\t};\n\t\tws.onerror = (e) => {\n\t\t\tonError === null || onError === void 0 || onError(ws, e);\n\t\t};\n\t\tws.onmessage = (e) => {\n\t\t\tif (options.heartbeat) {\n\t\t\t\tresetHeartbeat();\n\t\t\t\tconst { message = DEFAULT_PING_MESSAGE, responseMessage = message } = resolveNestedOptions(options.heartbeat);\n\t\t\t\tif (e.data === toValue(responseMessage)) return;\n\t\t\t}\n\t\t\tdata.value = e.data;\n\t\t\tonMessage === null || onMessage === void 0 || onMessage(ws, e);\n\t\t};\n\t};\n\tif (options.heartbeat) {\n\t\tconst { message = DEFAULT_PING_MESSAGE, scheduler = getDefaultScheduler(resolveNestedOptions(options.heartbeat)), pongTimeout = 1e3 } = resolveNestedOptions(options.heartbeat);\n\t\tconst { pause, resume } = scheduler(() => {\n\t\t\tsend(toValue(message), false);\n\t\t\tif (pongTimeoutWait != null) return;\n\t\t\tpongTimeoutWait = setTimeout(() => {\n\t\t\t\tclose();\n\t\t\t\texplicitlyClosed = false;\n\t\t\t}, pongTimeout);\n\t\t});\n\t\theartbeatPause = pause;\n\t\theartbeatResume = resume;\n\t}\n\tif (autoClose) {\n\t\tif (isClient) useEventListener(\"beforeunload\", () => close(), { passive: true });\n\t\ttryOnScopeDispose(close);\n\t}\n\tconst open = () => {\n\t\tif (!isClient && !isWorker) return;\n\t\tclose();\n\t\texplicitlyClosed = false;\n\t\tretried = 0;\n\t\t_init();\n\t};\n\tif (immediate) open();\n\tif (autoConnect) watch(urlRef, open);\n\treturn {\n\t\tdata,\n\t\tstatus,\n\t\tclose,\n\t\tsend,\n\t\topen,\n\t\tws: wsRef\n\t};\n}\n//#endregion\n//#region useWebWorker/index.ts\nfunction useWebWorker(arg0, workerOptions, options) {\n\tconst { window = defaultWindow } = options !== null && options !== void 0 ? options : {};\n\tconst data = shallowRef(null);\n\tconst worker = shallowRef();\n\tconst post = (...args) => {\n\t\tif (!worker.value) return;\n\t\tworker.value.postMessage(...args);\n\t};\n\tconst terminate = function terminate() {\n\t\tif (!worker.value) return;\n\t\tworker.value.terminate();\n\t};\n\tif (window) {\n\t\tif (typeof arg0 === \"string\") worker.value = new Worker(arg0, workerOptions);\n\t\telse if (typeof arg0 === \"function\") worker.value = arg0();\n\t\telse worker.value = arg0;\n\t\tworker.value.onmessage = (e) => {\n\t\t\tdata.value = e.data;\n\t\t};\n\t\ttryOnScopeDispose(() => {\n\t\t\tif (worker.value) worker.value.terminate();\n\t\t});\n\t}\n\treturn {\n\t\tdata,\n\t\tpost,\n\t\tterminate,\n\t\tworker\n\t};\n}\n//#endregion\n//#region useWebWorkerFn/lib/depsParser.ts\n/**\n*\n* Concatenates the dependencies into a comma separated string.\n* this string will then be passed as an argument to the \"importScripts\" function\n*\n* @param deps array of string\n* @param localDeps array of function\n* @returns a string composed by the concatenation of the array\n* elements \"deps\" and \"importScripts\".\n*\n* @example\n* depsParser(['demo1', 'demo2']) // return importScripts('demo1', 'demo2')\n*/\nfunction depsParser(deps, localDeps) {\n\tif (deps.length === 0 && localDeps.length === 0) return \"\";\n\tconst depsString = deps.map((dep) => `'${dep}'`).toString();\n\tconst depsFunctionString = localDeps.filter((dep) => typeof dep === \"function\").map((fn) => {\n\t\tconst str = fn.toString();\n\t\tif (str.trim().startsWith(\"function\")) return str;\n\t\telse return `const ${fn.name} = ${str}`;\n\t}).join(\";\");\n\tconst importString = `importScripts(${depsString});`;\n\treturn `${depsString.trim() === \"\" ? \"\" : importString} ${depsFunctionString}`;\n}\n//#endregion\n//#region useWebWorkerFn/lib/jobRunner.ts\n/**\n* This function accepts as a parameter a function \"userFunc\"\n* And as a result returns an anonymous function.\n* This anonymous function, accepts as arguments,\n* the parameters to pass to the function \"useArgs\" and returns a Promise\n* This function can be used as a wrapper, only inside a Worker\n* because it depends by \"postMessage\".\n*\n* @param userFunc {Function} fn the function to run with web worker\n*\n* @returns returns a function that accepts the parameters\n* to be passed to the \"userFunc\" function\n*/\nfunction jobRunner(userFunc) {\n\treturn (e) => {\n\t\tconst userFuncArgs = e.data[0];\n\t\treturn Promise.resolve(userFunc.apply(void 0, userFuncArgs)).then((result) => {\n\t\t\tpostMessage([\"SUCCESS\", result]);\n\t\t}).catch((error) => {\n\t\t\tpostMessage([\"ERROR\", error]);\n\t\t});\n\t};\n}\n//#endregion\n//#region useWebWorkerFn/lib/createWorkerBlobUrl.ts\n/**\n* Converts the \"fn\" function into the syntax needed to be executed within a web worker\n*\n* @param fn the function to run with web worker\n* @param deps array of strings, imported into the worker through \"importScripts\"\n* @param localDeps array of function, local dependencies\n*\n* @returns a blob url, containing the code of \"fn\" as a string\n*\n* @example\n* createWorkerBlobUrl((a,b) => a+b, [])\n* // return \"onmessage=return Promise.resolve((a,b) => a + b)\n* .then(postMessage(['SUCCESS', result]))\n* .catch(postMessage(['ERROR', error])\"\n*/\nfunction createWorkerBlobUrl(fn, deps, localDeps) {\n\tconst blobCode = `${depsParser(deps, localDeps)}; onmessage=(${jobRunner})(${fn})`;\n\tconst blob = new Blob([blobCode], { type: \"text/javascript\" });\n\treturn URL.createObjectURL(blob);\n}\n//#endregion\n//#region useWebWorkerFn/index.ts\n/**\n* Run expensive function without blocking the UI, using a simple syntax that makes use of Promise.\n*\n* @see https://vueuse.org/useWebWorkerFn\n* @param fn\n* @param options\n*/\nfunction useWebWorkerFn(fn, options = {}) {\n\tconst { dependencies = [], localDependencies = [], timeout, window = defaultWindow } = options;\n\tlet worker;\n\tconst workerStatus = shallowRef(\"PENDING\");\n\tconst promise = shallowRef({});\n\tconst timeoutId = shallowRef();\n\tconst workerTerminate = (status = \"PENDING\") => {\n\t\tif (worker && worker._url && window) {\n\t\t\tworker.terminate();\n\t\t\tURL.revokeObjectURL(worker._url);\n\t\t\tpromise.value = {};\n\t\t\tworker = void 0;\n\t\t\twindow.clearTimeout(timeoutId.value);\n\t\t\tworkerStatus.value = status;\n\t\t}\n\t};\n\tworkerTerminate();\n\ttryOnScopeDispose(workerTerminate);\n\tconst generateWorker = () => {\n\t\tconst blobUrl = createWorkerBlobUrl(fn, dependencies, localDependencies);\n\t\tconst newWorker = new Worker(blobUrl);\n\t\tnewWorker._url = blobUrl;\n\t\tnewWorker.onmessage = (e) => {\n\t\t\tconst { resolve = () => {}, reject = () => {} } = promise.value;\n\t\t\tconst [status, result] = e.data;\n\t\t\tswitch (status) {\n\t\t\t\tcase \"SUCCESS\":\n\t\t\t\t\tresolve(result);\n\t\t\t\t\tworkerTerminate(status);\n\t\t\t\t\tbreak;\n\t\t\t\tdefault:\n\t\t\t\t\treject(result);\n\t\t\t\t\tworkerTerminate(\"ERROR\");\n\t\t\t\t\tbreak;\n\t\t\t}\n\t\t};\n\t\tnewWorker.onerror = (e) => {\n\t\t\tconst { reject = () => {} } = promise.value;\n\t\t\te.preventDefault();\n\t\t\treject(e);\n\t\t\tworkerTerminate(\"ERROR\");\n\t\t};\n\t\tif (timeout) timeoutId.value = setTimeout(workerTerminate, timeout, \"TIMEOUT_EXPIRED\");\n\t\treturn newWorker;\n\t};\n\tconst callWorker = (...fnArgs) => new Promise((resolve, reject) => {\n\t\tpromise.value = {\n\t\t\tresolve,\n\t\t\treject\n\t\t};\n\t\tworker === null || worker === void 0 || worker.postMessage([[...fnArgs]]);\n\t\tworkerStatus.value = \"RUNNING\";\n\t});\n\tconst workerFn = (...fnArgs) => {\n\t\tif (workerStatus.value === \"RUNNING\") {\n\t\t\tconsole.error(\"[useWebWorkerFn] You can only run one instance of the worker at a time.\");\n\t\t\treturn Promise.reject();\n\t\t}\n\t\tworker = generateWorker();\n\t\treturn callWorker(...fnArgs);\n\t};\n\treturn {\n\t\tworkerFn,\n\t\tworkerStatus,\n\t\tworkerTerminate\n\t};\n}\n//#endregion\n//#region useWindowFocus/index.ts\n/**\n* Reactively track window focus with `window.onfocus` and `window.onblur`.\n*\n* @see https://vueuse.org/useWindowFocus\n*\n* @__NO_SIDE_EFFECTS__\n*/\nfunction useWindowFocus(options = {}) {\n\tconst { window = defaultWindow } = options;\n\tif (!window) return shallowRef(false);\n\tconst focused = shallowRef(window.document.hasFocus());\n\tconst listenerOptions = { passive: true };\n\tuseEventListener(window, \"blur\", () => {\n\t\tfocused.value = false;\n\t}, listenerOptions);\n\tuseEventListener(window, \"focus\", () => {\n\t\tfocused.value = true;\n\t}, listenerOptions);\n\treturn focused;\n}\n//#endregion\n//#region useWindowScroll/index.ts\n/**\n* Reactive window scroll.\n*\n* @see https://vueuse.org/useWindowScroll\n* @param options\n*/\nfunction useWindowScroll(options = {}) {\n\tconst { window = defaultWindow, ...rest } = options;\n\treturn useScroll(window, rest);\n}\n//#endregion\n//#region useWindowSize/index.ts\n/**\n* Reactive window size.\n*\n* @see https://vueuse.org/useWindowSize\n* @param options\n*\n* @__NO_SIDE_EFFECTS__\n*/\nfunction useWindowSize(options = {}) {\n\tconst { window = defaultWindow, initialWidth = Number.POSITIVE_INFINITY, initialHeight = Number.POSITIVE_INFINITY, listenOrientation = true, includeScrollbar = true, type = \"inner\" } = options;\n\tconst width = shallowRef(initialWidth);\n\tconst height = shallowRef(initialHeight);\n\tconst update = () => {\n\t\tif (window) if (type === \"outer\") {\n\t\t\twidth.value = window.outerWidth;\n\t\t\theight.value = window.outerHeight;\n\t\t} else if (type === \"visual\" && window.visualViewport) {\n\t\t\tconst { width: visualViewportWidth, height: visualViewportHeight, scale } = window.visualViewport;\n\t\t\twidth.value = Math.round(visualViewportWidth * scale);\n\t\t\theight.value = Math.round(visualViewportHeight * scale);\n\t\t} else if (includeScrollbar) {\n\t\t\twidth.value = window.innerWidth;\n\t\t\theight.value = window.innerHeight;\n\t\t} else {\n\t\t\twidth.value = window.document.documentElement.clientWidth;\n\t\t\theight.value = window.document.documentElement.clientHeight;\n\t\t}\n\t};\n\tupdate();\n\ttryOnMounted(update);\n\tconst listenerOptions = { passive: true };\n\tuseEventListener(\"resize\", update, listenerOptions);\n\tif (window && type === \"visual\" && window.visualViewport) useEventListener(window.visualViewport, \"resize\", update, listenerOptions);\n\tif (listenOrientation) watch(useMediaQuery(\"(orientation: portrait)\"), () => update());\n\treturn {\n\t\twidth,\n\t\theight\n\t};\n}\n//#endregion\nexport { DefaultMagicKeysAliasMap, StorageSerializers, TransitionPresets, asyncComputed, breakpointsAntDesign, breakpointsBootstrapV5, breakpointsElement, breakpointsMasterCss, breakpointsPrimeFlex, breakpointsQuasar, breakpointsSematic, breakpointsTailwind, breakpointsVuetify, breakpointsVuetifyV2, breakpointsVuetifyV3, cloneFnJSON, computedAsync, computedInject, createFetch, createReusableTemplate, createTemplatePromise, createUnrefFn, customStorageEventName, defaultDocument, defaultLocation, defaultNavigator, defaultWindow, executeTransition, formatTimeAgo, formatTimeAgoIntl, formatTimeAgoIntlParts, getSSRHandler, mapGamepadToXbox360Controller, onClickOutside, onElementRemoval, onKeyDown, onKeyPressed, onKeyStroke, onKeyUp, onLongPress, onStartTyping, provideSSRWidth, setSSRHandler, templateRef, transition, unrefElement, useActiveElement, useAnimate, useAsyncQueue, useAsyncState, useBase64, useBattery, useBluetooth, useBreakpoints, useBroadcastChannel, useBrowserLocation, useCached, useClipboard, useClipboardItems, useCloned, useColorMode, useConfirmDialog, useCountdown, useCssSupports, useCssVar, useCurrentElement, useCycleList, useDark, useDebouncedRefHistory, useDeviceMotion, useDeviceOrientation, useDevicePixelRatio, useDevicesList, useDisplayMedia, useDocumentVisibility, useDraggable, useDropZone, useElementBounding, useElementByPoint, useElementHover, useElementSize, useElementVisibility, useEventBus, useEventListener, useEventSource, useEyeDropper, useFavicon, useFetch, useFileDialog, useFileSystemAccess, useFocus, useFocusWithin, useFps, useFullscreen, useGamepad, useGeolocation, useIdle, useImage, useInfiniteScroll, useIntersectionObserver, useKeyModifier, useLocalStorage, useMagicKeys, useManualRefHistory, useMediaControls, useMediaQuery, useMemoize, useMemory, useMounted, useMouse, useMouseInElement, useMousePressed, useMutationObserver, useNavigatorLanguage, useNetwork, useNow, useObjectUrl, useOffsetPagination, useOnline, usePageLeave, useParallax, useParentElement, usePerformanceObserver, usePermission, usePointer, usePointerLock, usePointerSwipe, usePreferredColorScheme, usePreferredContrast, usePreferredDark, usePreferredLanguages, usePreferredReducedMotion, usePreferredReducedTransparency, usePrevious, useRafFn, useRefHistory, useResizeObserver, useSSRWidth, useScreenOrientation, useScreenSafeArea, useScriptTag, useScroll, useScrollLock, useSessionStorage, useShare, useSorted, useSpeechRecognition, useSpeechSynthesis, useStepper, useStorage, useStorageAsync, useStyleTag, useSupported, useSwipe, useTemplateRefsList, useTextDirection, useTextSelection, useTextareaAutosize, useThrottledRefHistory, useTimeAgo, useTimeAgoIntl, useTimeoutPoll, useTimestamp, useTitle, useTransition, useUrlSearchParams, useUserMedia, useVModel, useVModels, useVibrate, useVirtualList, useWakeLock, useWebNotification, useWebSocket, useWebWorker, useWebWorkerFn, useWindowFocus, useWindowScroll, useWindowSize };\n","import { ref, readonly } from \"vue\";\nconst MOBILE_BREAKPOINT = 1024;\nconst MOBILE_SMALL_BREAKPOINT = MOBILE_BREAKPOINT / 2;\nconst isLessThanBreakpoint = (breakpoint) => document.documentElement.clientWidth < breakpoint;\nconst isMobile = ref(isLessThanBreakpoint(MOBILE_BREAKPOINT));\nconst isSmallMobile = ref(isLessThanBreakpoint(MOBILE_SMALL_BREAKPOINT));\nwindow.addEventListener(\"resize\", () => {\n isMobile.value = isLessThanBreakpoint(MOBILE_BREAKPOINT);\n isSmallMobile.value = isLessThanBreakpoint(MOBILE_SMALL_BREAKPOINT);\n}, { passive: true });\nfunction useIsMobile() {\n return readonly(isMobile);\n}\nfunction useIsSmallMobile() {\n return readonly(isSmallMobile);\n}\nexport {\n MOBILE_BREAKPOINT,\n MOBILE_SMALL_BREAKPOINT,\n useIsMobile,\n useIsSmallMobile\n};\n//# sourceMappingURL=index.mjs.map\n","import { isRTL } from \"@nextcloud/l10n\";\nconst isRtl = isRTL();\nexport {\n isRtl as i\n};\n//# sourceMappingURL=rtl-v0UOPAM7.mjs.map\n","const NC_ACTIONS_IS_SEMANTIC_MENU = /* @__PURE__ */ Symbol.for(\"NcActions:isSemanticMenu\");\nconst NC_ACTIONS_CLOSE_MENU = /* @__PURE__ */ Symbol.for(\"NcActions:closeMenu\");\nexport {\n NC_ACTIONS_CLOSE_MENU as N,\n NC_ACTIONS_IS_SEMANTIC_MENU as a\n};\n//# sourceMappingURL=useNcActions-BzPO2c4h.mjs.map\n","function getTrapStack() {\n window._nc_focus_trap ??= [];\n return window._nc_focus_trap;\n}\nfunction createTrapStackController() {\n let pausedStack = [];\n return {\n /**\n * Pause the current focus-trap stack\n */\n pause() {\n pausedStack = [...getTrapStack()];\n for (const trap of pausedStack) {\n trap.pause();\n }\n },\n /**\n * Unpause the paused focus trap stack\n * If the actual stack is different from the paused one, ignore unpause.\n */\n unpause() {\n if (pausedStack.length === getTrapStack().length) {\n for (const trap of pausedStack) {\n trap.unpause();\n }\n }\n pausedStack = [];\n }\n };\n}\nexport {\n createTrapStackController as c,\n getTrapStack as g\n};\n//# sourceMappingURL=focusTrap-HJQ4pqHV.mjs.map\n","import { watch, toValue, onUnmounted } from \"vue\";\nimport { c as createTrapStackController } from \"./focusTrap-HJQ4pqHV.mjs\";\nfunction useTrapStackControl(shouldPause, options = {}) {\n const trapStackController = createTrapStackController();\n watch(shouldPause, () => {\n if (toValue(options.disabled)) {\n return;\n }\n if (toValue(shouldPause)) {\n trapStackController.pause();\n } else {\n trapStackController.unpause();\n }\n });\n onUnmounted(() => {\n trapStackController.unpause();\n });\n}\nexport {\n useTrapStackControl as u\n};\n//# sourceMappingURL=useTrapStackControl-B6cEicto.mjs.map\n","/**\n * Custom positioning reference element.\n * @see https://floating-ui.com/docs/virtual-elements\n */\n\nconst sides = ['top', 'right', 'bottom', 'left'];\nconst alignments = ['start', 'end'];\nconst placements = /*#__PURE__*/sides.reduce((acc, side) => acc.concat(side, side + \"-\" + alignments[0], side + \"-\" + alignments[1]), []);\nconst min = Math.min;\nconst max = Math.max;\nconst round = Math.round;\nconst floor = Math.floor;\nconst createCoords = v => ({\n x: v,\n y: v\n});\nconst oppositeSideMap = {\n left: 'right',\n right: 'left',\n bottom: 'top',\n top: 'bottom'\n};\nfunction clamp(start, value, end) {\n return max(start, min(value, end));\n}\nfunction evaluate(value, param) {\n return typeof value === 'function' ? value(param) : value;\n}\nfunction getSide(placement) {\n return placement.split('-')[0];\n}\nfunction getAlignment(placement) {\n return placement.split('-')[1];\n}\nfunction getOppositeAxis(axis) {\n return axis === 'x' ? 'y' : 'x';\n}\nfunction getAxisLength(axis) {\n return axis === 'y' ? 'height' : 'width';\n}\nfunction getSideAxis(placement) {\n const firstChar = placement[0];\n return firstChar === 't' || firstChar === 'b' ? 'y' : 'x';\n}\nfunction getAlignmentAxis(placement) {\n return getOppositeAxis(getSideAxis(placement));\n}\nfunction getAlignmentSides(placement, rects, rtl) {\n if (rtl === void 0) {\n rtl = false;\n }\n const alignment = getAlignment(placement);\n const alignmentAxis = getAlignmentAxis(placement);\n const length = getAxisLength(alignmentAxis);\n let mainAlignmentSide = alignmentAxis === 'x' ? alignment === (rtl ? 'end' : 'start') ? 'right' : 'left' : alignment === 'start' ? 'bottom' : 'top';\n if (rects.reference[length] > rects.floating[length]) {\n mainAlignmentSide = getOppositePlacement(mainAlignmentSide);\n }\n return [mainAlignmentSide, getOppositePlacement(mainAlignmentSide)];\n}\nfunction getExpandedPlacements(placement) {\n const oppositePlacement = getOppositePlacement(placement);\n return [getOppositeAlignmentPlacement(placement), oppositePlacement, getOppositeAlignmentPlacement(oppositePlacement)];\n}\nfunction getOppositeAlignmentPlacement(placement) {\n return placement.includes('start') ? placement.replace('start', 'end') : placement.replace('end', 'start');\n}\nconst lrPlacement = ['left', 'right'];\nconst rlPlacement = ['right', 'left'];\nconst tbPlacement = ['top', 'bottom'];\nconst btPlacement = ['bottom', 'top'];\nfunction getSideList(side, isStart, rtl) {\n switch (side) {\n case 'top':\n case 'bottom':\n if (rtl) return isStart ? rlPlacement : lrPlacement;\n return isStart ? lrPlacement : rlPlacement;\n case 'left':\n case 'right':\n return isStart ? tbPlacement : btPlacement;\n default:\n return [];\n }\n}\nfunction getOppositeAxisPlacements(placement, flipAlignment, direction, rtl) {\n const alignment = getAlignment(placement);\n let list = getSideList(getSide(placement), direction === 'start', rtl);\n if (alignment) {\n list = list.map(side => side + \"-\" + alignment);\n if (flipAlignment) {\n list = list.concat(list.map(getOppositeAlignmentPlacement));\n }\n }\n return list;\n}\nfunction getOppositePlacement(placement) {\n const side = getSide(placement);\n return oppositeSideMap[side] + placement.slice(side.length);\n}\nfunction expandPaddingObject(padding) {\n var _padding$top, _padding$right, _padding$bottom, _padding$left;\n return {\n top: (_padding$top = padding.top) != null ? _padding$top : 0,\n right: (_padding$right = padding.right) != null ? _padding$right : 0,\n bottom: (_padding$bottom = padding.bottom) != null ? _padding$bottom : 0,\n left: (_padding$left = padding.left) != null ? _padding$left : 0\n };\n}\nfunction getPaddingObject(padding) {\n return typeof padding !== 'number' ? expandPaddingObject(padding) : {\n top: padding,\n right: padding,\n bottom: padding,\n left: padding\n };\n}\nfunction rectToClientRect(rect) {\n const {\n x,\n y,\n width,\n height\n } = rect;\n return {\n width,\n height,\n top: y,\n left: x,\n right: x + width,\n bottom: y + height,\n x,\n y\n };\n}\n\nexport { alignments, clamp, createCoords, evaluate, expandPaddingObject, floor, getAlignment, getAlignmentAxis, getAlignmentSides, getAxisLength, getExpandedPlacements, getOppositeAlignmentPlacement, getOppositeAxis, getOppositeAxisPlacements, getOppositePlacement, getPaddingObject, getSide, getSideAxis, max, min, placements, rectToClientRect, round, sides };\n","import { getSideAxis, getAlignmentAxis, getAxisLength, getSide, getAlignment, evaluate, getPaddingObject, rectToClientRect, min, clamp, placements, getAlignmentSides, getOppositeAlignmentPlacement, getOppositePlacement, getExpandedPlacements, getOppositeAxisPlacements, sides, max, getOppositeAxis } from '@floating-ui/utils';\nexport { rectToClientRect } from '@floating-ui/utils';\n\nfunction computeCoordsFromPlacement(_ref, placement, rtl) {\n let {\n reference,\n floating\n } = _ref;\n const sideAxis = getSideAxis(placement);\n const alignmentAxis = getAlignmentAxis(placement);\n const alignLength = getAxisLength(alignmentAxis);\n const side = getSide(placement);\n const isVertical = sideAxis === 'y';\n const commonX = reference.x + reference.width / 2 - floating.width / 2;\n const commonY = reference.y + reference.height / 2 - floating.height / 2;\n const commonAlign = reference[alignLength] / 2 - floating[alignLength] / 2;\n let coords;\n switch (side) {\n case 'top':\n coords = {\n x: commonX,\n y: reference.y - floating.height\n };\n break;\n case 'bottom':\n coords = {\n x: commonX,\n y: reference.y + reference.height\n };\n break;\n case 'right':\n coords = {\n x: reference.x + reference.width,\n y: commonY\n };\n break;\n case 'left':\n coords = {\n x: reference.x - floating.width,\n y: commonY\n };\n break;\n default:\n coords = {\n x: reference.x,\n y: reference.y\n };\n }\n const alignment = getAlignment(placement);\n if (alignment) {\n coords[alignmentAxis] += commonAlign * (alignment === 'end' ? 1 : -1) * (rtl && isVertical ? -1 : 1);\n }\n return coords;\n}\n\n/**\n * Resolves with an object of overflow side offsets that determine how much the\n * element is overflowing a given clipping boundary on each side.\n * - positive = overflowing the boundary by that number of pixels\n * - negative = how many pixels left before it will overflow\n * - 0 = lies flush with the boundary\n * @see https://floating-ui.com/docs/detectOverflow\n */\nasync function detectOverflow(state, options) {\n var _await$platform$isEle;\n if (options === void 0) {\n options = {};\n }\n const {\n x,\n y,\n platform,\n rects,\n elements,\n strategy\n } = state;\n const {\n boundary = 'clippingAncestors',\n rootBoundary = 'viewport',\n elementContext = 'floating',\n altBoundary = false,\n padding = 0\n } = evaluate(options, state);\n const paddingObject = getPaddingObject(padding);\n const altContext = elementContext === 'floating' ? 'reference' : 'floating';\n const element = elements[altBoundary ? altContext : elementContext];\n const clippingClientRect = rectToClientRect(await platform.getClippingRect({\n element: ((_await$platform$isEle = await (platform.isElement == null ? void 0 : platform.isElement(element))) != null ? _await$platform$isEle : true) ? element : element.contextElement || (await (platform.getDocumentElement == null ? void 0 : platform.getDocumentElement(elements.floating))),\n boundary,\n rootBoundary,\n strategy\n }));\n const rect = elementContext === 'floating' ? {\n x,\n y,\n width: rects.floating.width,\n height: rects.floating.height\n } : rects.reference;\n const offsetParent = await (platform.getOffsetParent == null ? void 0 : platform.getOffsetParent(elements.floating));\n const offsetScale = (await (platform.isElement == null ? void 0 : platform.isElement(offsetParent))) && (await (platform.getScale == null ? void 0 : platform.getScale(offsetParent))) || {\n x: 1,\n y: 1\n };\n const elementClientRect = rectToClientRect(platform.convertOffsetParentRelativeRectToViewportRelativeRect ? await platform.convertOffsetParentRelativeRectToViewportRelativeRect({\n elements,\n rect,\n offsetParent,\n strategy\n }) : rect);\n return {\n top: (clippingClientRect.top - elementClientRect.top + paddingObject.top) / offsetScale.y,\n bottom: (elementClientRect.bottom - clippingClientRect.bottom + paddingObject.bottom) / offsetScale.y,\n left: (clippingClientRect.left - elementClientRect.left + paddingObject.left) / offsetScale.x,\n right: (elementClientRect.right - clippingClientRect.right + paddingObject.right) / offsetScale.x\n };\n}\n\n// Maximum number of resets that can occur before bailing to avoid infinite reset loops.\nconst MAX_RESET_COUNT = 50;\n\n/**\n * Computes the `x` and `y` coordinates that will place the floating element\n * next to a given reference element.\n *\n * This export does not have any `platform` interface logic. You will need to\n * write one for the platform you are using Floating UI with.\n */\nconst computePosition = async (reference, floating, config) => {\n const {\n placement = 'bottom',\n strategy = 'absolute',\n middleware = [],\n platform\n } = config;\n const platformWithDetectOverflow = platform.detectOverflow ? platform : {\n ...platform,\n detectOverflow\n };\n const rtl = await (platform.isRTL == null ? void 0 : platform.isRTL(floating));\n let rects = await platform.getElementRects({\n reference,\n floating,\n strategy\n });\n let {\n x,\n y\n } = computeCoordsFromPlacement(rects, placement, rtl);\n let statefulPlacement = placement;\n let resetCount = 0;\n const middlewareData = {};\n for (let i = 0; i < middleware.length; i++) {\n const currentMiddleware = middleware[i];\n if (!currentMiddleware) {\n continue;\n }\n const {\n name,\n fn\n } = currentMiddleware;\n const {\n x: nextX,\n y: nextY,\n data,\n reset\n } = await fn({\n x,\n y,\n initialPlacement: placement,\n placement: statefulPlacement,\n strategy,\n middlewareData,\n rects,\n platform: platformWithDetectOverflow,\n elements: {\n reference,\n floating\n }\n });\n x = nextX != null ? nextX : x;\n y = nextY != null ? nextY : y;\n middlewareData[name] = {\n ...middlewareData[name],\n ...data\n };\n if (reset && resetCount < MAX_RESET_COUNT) {\n resetCount++;\n if (typeof reset === 'object') {\n if (reset.placement) {\n statefulPlacement = reset.placement;\n }\n if (reset.rects) {\n rects = reset.rects === true ? await platform.getElementRects({\n reference,\n floating,\n strategy\n }) : reset.rects;\n }\n ({\n x,\n y\n } = computeCoordsFromPlacement(rects, statefulPlacement, rtl));\n }\n i = -1;\n }\n }\n return {\n x,\n y,\n placement: statefulPlacement,\n strategy,\n middlewareData\n };\n};\n\n/**\n * Provides data to position an inner element of the floating element so that it\n * appears centered to the reference element.\n * @see https://floating-ui.com/docs/arrow\n */\nconst arrow = options => ({\n name: 'arrow',\n options,\n async fn(state) {\n const {\n x,\n y,\n placement,\n rects,\n platform,\n elements,\n middlewareData\n } = state;\n // Since `element` is required, we don't Partial<> the type.\n const {\n element,\n padding = 0\n } = evaluate(options, state) || {};\n if (element == null) {\n return {};\n }\n const paddingObject = getPaddingObject(padding);\n const coords = {\n x,\n y\n };\n const axis = getAlignmentAxis(placement);\n const length = getAxisLength(axis);\n const arrowDimensions = await platform.getDimensions(element);\n const isYAxis = axis === 'y';\n const minProp = isYAxis ? 'top' : 'left';\n const maxProp = isYAxis ? 'bottom' : 'right';\n const clientProp = isYAxis ? 'clientHeight' : 'clientWidth';\n const endDiff = rects.reference[length] + rects.reference[axis] - coords[axis] - rects.floating[length];\n const startDiff = coords[axis] - rects.reference[axis];\n const arrowOffsetParent = await (platform.getOffsetParent == null ? void 0 : platform.getOffsetParent(element));\n let clientSize = arrowOffsetParent ? arrowOffsetParent[clientProp] : 0;\n\n // DOM platform can return `window` as the `offsetParent`.\n if (!clientSize || !(await (platform.isElement == null ? void 0 : platform.isElement(arrowOffsetParent)))) {\n clientSize = elements.floating[clientProp] || rects.floating[length];\n }\n const centerToReference = endDiff / 2 - startDiff / 2;\n\n // If the padding is large enough that it causes the arrow to no longer be\n // centered, modify the padding so that it is centered.\n const largestPossiblePadding = clientSize / 2 - arrowDimensions[length] / 2 - 1;\n const minPadding = min(paddingObject[minProp], largestPossiblePadding);\n const maxPadding = min(paddingObject[maxProp], largestPossiblePadding);\n\n // Make sure the arrow doesn't overflow the floating element if the center\n // point is outside the floating element's bounds.\n const max = clientSize - arrowDimensions[length] - maxPadding;\n const center = clientSize / 2 - arrowDimensions[length] / 2 + centerToReference;\n const offset = clamp(minPadding, center, max);\n\n // If the reference is small enough that the arrow's padding causes it to\n // to point to nothing for an aligned placement, adjust the offset of the\n // floating element itself. To ensure `shift()` continues to take action,\n // a single reset is performed when this is true.\n const shouldAddOffset = !middlewareData.arrow && getAlignment(placement) != null && center !== offset && rects.reference[length] / 2 - (center < minPadding ? minPadding : maxPadding) - arrowDimensions[length] / 2 < 0;\n const alignmentOffset = shouldAddOffset ? center < minPadding ? center - minPadding : center - max : 0;\n return {\n [axis]: coords[axis] + alignmentOffset,\n data: {\n [axis]: offset,\n centerOffset: center - offset - alignmentOffset,\n ...(shouldAddOffset && {\n alignmentOffset\n })\n },\n reset: shouldAddOffset\n };\n }\n});\n\nfunction getPlacementList(alignment, autoAlignment, allowedPlacements) {\n const allowedPlacementsSortedByAlignment = alignment ? [...allowedPlacements.filter(placement => getAlignment(placement) === alignment), ...allowedPlacements.filter(placement => getAlignment(placement) !== alignment)] : allowedPlacements.filter(placement => getSide(placement) === placement);\n return allowedPlacementsSortedByAlignment.filter(placement => {\n if (alignment) {\n return getAlignment(placement) === alignment || (autoAlignment ? getOppositeAlignmentPlacement(placement) !== placement : false);\n }\n return true;\n });\n}\n/**\n * Optimizes the visibility of the floating element by choosing the placement\n * that has the most space available automatically, without needing to specify a\n * preferred placement. Alternative to `flip`.\n * @see https://floating-ui.com/docs/autoPlacement\n */\nconst autoPlacement = function (options) {\n if (options === void 0) {\n options = {};\n }\n return {\n name: 'autoPlacement',\n options,\n async fn(state) {\n var _middlewareData$autoP, _middlewareData$autoP2, _placementsThatFitOnE;\n const {\n rects,\n middlewareData,\n placement,\n platform,\n elements\n } = state;\n const {\n crossAxis = false,\n alignment,\n allowedPlacements = placements,\n autoAlignment = true,\n ...detectOverflowOptions\n } = evaluate(options, state);\n const placements$1 = alignment !== undefined || allowedPlacements === placements ? getPlacementList(alignment || null, autoAlignment, allowedPlacements) : allowedPlacements;\n const currentIndex = ((_middlewareData$autoP = middlewareData.autoPlacement) == null ? void 0 : _middlewareData$autoP.index) || 0;\n const currentPlacement = placements$1[currentIndex];\n if (currentPlacement == null) {\n return {};\n }\n\n // Make `computeCoords` start from the right place.\n if (placement !== currentPlacement) {\n return {\n reset: {\n placement: placements$1[0]\n }\n };\n }\n const overflow = await platform.detectOverflow(state, detectOverflowOptions);\n const alignmentSides = getAlignmentSides(currentPlacement, rects, await (platform.isRTL == null ? void 0 : platform.isRTL(elements.floating)));\n const currentOverflows = [overflow[getSide(currentPlacement)], overflow[alignmentSides[0]], overflow[alignmentSides[1]]];\n const allOverflows = [...(((_middlewareData$autoP2 = middlewareData.autoPlacement) == null ? void 0 : _middlewareData$autoP2.overflows) || []), {\n placement: currentPlacement,\n overflows: currentOverflows\n }];\n const nextPlacement = placements$1[currentIndex + 1];\n\n // There are more placements to check.\n if (nextPlacement) {\n return {\n data: {\n index: currentIndex + 1,\n overflows: allOverflows\n },\n reset: {\n placement: nextPlacement\n }\n };\n }\n const placementsSortedByMostSpace = allOverflows.map(d => {\n const alignment = getAlignment(d.placement);\n return [d.placement, alignment && crossAxis ?\n // Check along the mainAxis and main crossAxis side.\n d.overflows.slice(0, 2).reduce((acc, v) => acc + v, 0) :\n // Check only the mainAxis.\n d.overflows[0], d.overflows];\n }).sort((a, b) => a[1] - b[1]);\n const placementsThatFitOnEachSide = placementsSortedByMostSpace.filter(d => d[2].slice(0,\n // Aligned placements should not check their opposite crossAxis\n // side.\n getAlignment(d[0]) ? 2 : 3).every(v => v <= 0));\n const resetPlacement = ((_placementsThatFitOnE = placementsThatFitOnEachSide[0]) == null ? void 0 : _placementsThatFitOnE[0]) || placementsSortedByMostSpace[0][0];\n if (resetPlacement !== placement) {\n return {\n data: {\n index: currentIndex + 1,\n overflows: allOverflows\n },\n reset: {\n placement: resetPlacement\n }\n };\n }\n return {};\n }\n };\n};\n\n/**\n * Optimizes the visibility of the floating element by flipping the `placement`\n * in order to keep it in view when the preferred placement(s) will overflow the\n * clipping boundary. Alternative to `autoPlacement`.\n * @see https://floating-ui.com/docs/flip\n */\nconst flip = function (options) {\n if (options === void 0) {\n options = {};\n }\n return {\n name: 'flip',\n options,\n async fn(state) {\n var _middlewareData$arrow, _middlewareData$flip;\n const {\n placement,\n middlewareData,\n rects,\n initialPlacement,\n platform,\n elements\n } = state;\n const {\n mainAxis: checkMainAxis = true,\n crossAxis: checkCrossAxis = true,\n fallbackPlacements: specifiedFallbackPlacements,\n fallbackStrategy = 'bestFit',\n fallbackAxisSideDirection = 'none',\n flipAlignment = true,\n ...detectOverflowOptions\n } = evaluate(options, state);\n\n // If a reset by the arrow was caused due to an alignment offset being\n // added, we should skip any logic now since `flip()` has already done its\n // work.\n // https://github.com/floating-ui/floating-ui/issues/2549#issuecomment-1719601643\n if ((_middlewareData$arrow = middlewareData.arrow) != null && _middlewareData$arrow.alignmentOffset) {\n return {};\n }\n const side = getSide(placement);\n const initialSideAxis = getSideAxis(initialPlacement);\n const isBasePlacement = getSide(initialPlacement) === initialPlacement;\n const rtl = await (platform.isRTL == null ? void 0 : platform.isRTL(elements.floating));\n const fallbackPlacements = specifiedFallbackPlacements || (isBasePlacement || !flipAlignment ? [getOppositePlacement(initialPlacement)] : getExpandedPlacements(initialPlacement));\n const hasFallbackAxisSideDirection = fallbackAxisSideDirection !== 'none';\n if (!specifiedFallbackPlacements && hasFallbackAxisSideDirection) {\n fallbackPlacements.push(...getOppositeAxisPlacements(initialPlacement, flipAlignment, fallbackAxisSideDirection, rtl));\n }\n const placements = [initialPlacement, ...fallbackPlacements];\n const overflow = await platform.detectOverflow(state, detectOverflowOptions);\n const overflows = [];\n let overflowsData = ((_middlewareData$flip = middlewareData.flip) == null ? void 0 : _middlewareData$flip.overflows) || [];\n if (checkMainAxis) {\n overflows.push(overflow[side]);\n }\n if (checkCrossAxis) {\n const sides = getAlignmentSides(placement, rects, rtl);\n overflows.push(overflow[sides[0]], overflow[sides[1]]);\n }\n overflowsData = [...overflowsData, {\n placement,\n overflows\n }];\n\n // One or more sides is overflowing.\n if (!overflows.every(side => side <= 0)) {\n var _middlewareData$flip2, _overflowsData$filter;\n const nextIndex = (((_middlewareData$flip2 = middlewareData.flip) == null ? void 0 : _middlewareData$flip2.index) || 0) + 1;\n const nextPlacement = placements[nextIndex];\n if (nextPlacement) {\n const ignoreCrossAxisOverflow = checkCrossAxis === 'alignment' ? initialSideAxis !== getSideAxis(nextPlacement) : false;\n if (!ignoreCrossAxisOverflow ||\n // We leave the current main axis only if every placement on that axis\n // overflows the main axis.\n overflowsData.every(d => getSideAxis(d.placement) === initialSideAxis ? d.overflows[0] > 0 : true)) {\n // Try next placement and re-run the lifecycle.\n return {\n data: {\n index: nextIndex,\n overflows: overflowsData\n },\n reset: {\n placement: nextPlacement\n }\n };\n }\n }\n\n // First, find the candidates that fit on the mainAxis side of overflow,\n // then find the placement that fits the best on the main crossAxis side.\n let resetPlacement = (_overflowsData$filter = overflowsData.filter(d => d.overflows[0] <= 0).sort((a, b) => a.overflows[1] - b.overflows[1])[0]) == null ? void 0 : _overflowsData$filter.placement;\n\n // Otherwise fallback.\n if (!resetPlacement) {\n switch (fallbackStrategy) {\n case 'bestFit':\n {\n var _overflowsData$filter2;\n const placement = (_overflowsData$filter2 = overflowsData.filter(d => {\n if (hasFallbackAxisSideDirection) {\n const currentSideAxis = getSideAxis(d.placement);\n return currentSideAxis === initialSideAxis ||\n // Create a bias to the `y` side axis due to horizontal\n // reading directions favoring greater width.\n currentSideAxis === 'y';\n }\n return true;\n }).map(d => [d.placement, d.overflows.filter(overflow => overflow > 0).reduce((acc, overflow) => acc + overflow, 0)]).sort((a, b) => a[1] - b[1])[0]) == null ? void 0 : _overflowsData$filter2[0];\n if (placement) {\n resetPlacement = placement;\n }\n break;\n }\n case 'initialPlacement':\n resetPlacement = initialPlacement;\n break;\n }\n }\n if (placement !== resetPlacement) {\n return {\n reset: {\n placement: resetPlacement\n }\n };\n }\n }\n return {};\n }\n };\n};\n\nfunction getSideOffsets(overflow, rect) {\n return {\n top: overflow.top - rect.height,\n right: overflow.right - rect.width,\n bottom: overflow.bottom - rect.height,\n left: overflow.left - rect.width\n };\n}\nfunction isAnySideFullyClipped(overflow) {\n return sides.some(side => overflow[side] >= 0);\n}\n/**\n * Provides data to hide the floating element in applicable situations, such as\n * when it is not in the same clipping context as the reference element.\n * @see https://floating-ui.com/docs/hide\n */\nconst hide = function (options) {\n if (options === void 0) {\n options = {};\n }\n return {\n name: 'hide',\n options,\n async fn(state) {\n const {\n rects,\n platform\n } = state;\n const {\n strategy = 'referenceHidden',\n ...detectOverflowOptions\n } = evaluate(options, state);\n switch (strategy) {\n case 'referenceHidden':\n {\n const overflow = await platform.detectOverflow(state, {\n ...detectOverflowOptions,\n elementContext: 'reference'\n });\n const offsets = getSideOffsets(overflow, rects.reference);\n return {\n data: {\n referenceHiddenOffsets: offsets,\n referenceHidden: isAnySideFullyClipped(offsets)\n }\n };\n }\n case 'escaped':\n {\n const overflow = await platform.detectOverflow(state, {\n ...detectOverflowOptions,\n altBoundary: true\n });\n const offsets = getSideOffsets(overflow, rects.floating);\n return {\n data: {\n escapedOffsets: offsets,\n escaped: isAnySideFullyClipped(offsets)\n }\n };\n }\n default:\n {\n return {};\n }\n }\n }\n };\n};\n\nfunction getBoundingRect(rects) {\n const minX = min(...rects.map(rect => rect.left));\n const minY = min(...rects.map(rect => rect.top));\n const maxX = max(...rects.map(rect => rect.right));\n const maxY = max(...rects.map(rect => rect.bottom));\n return {\n x: minX,\n y: minY,\n width: maxX - minX,\n height: maxY - minY\n };\n}\nfunction getRectsByLine(rects) {\n const sortedRects = rects.slice().sort((a, b) => a.y - b.y);\n const groups = [];\n let prevRect = null;\n for (let i = 0; i < sortedRects.length; i++) {\n const rect = sortedRects[i];\n if (!prevRect || rect.y - prevRect.y > prevRect.height / 2) {\n groups.push([rect]);\n } else {\n groups[groups.length - 1].push(rect);\n }\n prevRect = rect;\n }\n return groups.map(rect => rectToClientRect(getBoundingRect(rect)));\n}\n/**\n * Provides improved positioning for inline reference elements that can span\n * over multiple lines, such as hyperlinks or range selections.\n * @see https://floating-ui.com/docs/inline\n */\nconst inline = function (options) {\n if (options === void 0) {\n options = {};\n }\n return {\n name: 'inline',\n options,\n async fn(state) {\n const {\n placement,\n elements,\n rects,\n platform,\n strategy\n } = state;\n // A MouseEvent's client{X,Y} coords can be up to 2 pixels off a\n // ClientRect's bounds, despite the event listener being triggered. A\n // padding of 2 seems to handle this issue.\n const {\n padding = 2,\n x,\n y\n } = evaluate(options, state);\n const nativeClientRects = Array.from((await (platform.getClientRects == null ? void 0 : platform.getClientRects(elements.reference))) || []);\n\n // No rects (e.g. a hidden or detached reference, or a collapsed range) —\n // keep the existing reference rect rather than resetting to an invalid\n // one with non-finite values.\n if (!nativeClientRects.length) {\n return {};\n }\n const clientRects = getRectsByLine(nativeClientRects);\n const fallback = rectToClientRect(getBoundingRect(nativeClientRects));\n const paddingObject = getPaddingObject(padding);\n function getBoundingClientRect() {\n // There are two rects and they are disjoined.\n if (clientRects.length === 2 && (clientRects[0].left > clientRects[1].right || clientRects[1].left > clientRects[0].right) && x != null && y != null) {\n // Find the first rect in which the point is fully inside.\n return clientRects.find(rect => x > rect.left - paddingObject.left && x < rect.right + paddingObject.right && y > rect.top - paddingObject.top && y < rect.bottom + paddingObject.bottom) || fallback;\n }\n\n // There are 2 or more connected rects.\n if (clientRects.length >= 2) {\n if (getSideAxis(placement) === 'y') {\n const firstRect = clientRects[0];\n const lastRect = clientRects[clientRects.length - 1];\n const isTop = getSide(placement) === 'top';\n const top = firstRect.top;\n const bottom = lastRect.bottom;\n const left = isTop ? firstRect.left : lastRect.left;\n const right = isTop ? firstRect.right : lastRect.right;\n return rectToClientRect({\n x: left,\n y: top,\n width: right - left,\n height: bottom - top\n });\n }\n const isLeftSide = getSide(placement) === 'left';\n const maxRight = max(...clientRects.map(rect => rect.right));\n const minLeft = min(...clientRects.map(rect => rect.left));\n const measureRects = clientRects.filter(rect => isLeftSide ? rect.left === minLeft : rect.right === maxRight);\n const top = measureRects[0].top;\n const bottom = measureRects[measureRects.length - 1].bottom;\n return rectToClientRect({\n x: minLeft,\n y: top,\n width: maxRight - minLeft,\n height: bottom - top\n });\n }\n return fallback;\n }\n const resetRects = await platform.getElementRects({\n reference: {\n getBoundingClientRect\n },\n floating: elements.floating,\n strategy\n });\n if (rects.reference.x !== resetRects.reference.x || rects.reference.y !== resetRects.reference.y || rects.reference.width !== resetRects.reference.width || rects.reference.height !== resetRects.reference.height) {\n return {\n reset: {\n rects: resetRects\n }\n };\n }\n return {};\n }\n };\n};\n\nconst originSides = /*#__PURE__*/new Set(['left', 'top']);\n\n// For type backwards-compatibility, the `OffsetOptions` type was also\n// Derivable.\n\nasync function convertValueToCoords(state, options) {\n const {\n placement,\n platform,\n elements\n } = state;\n const rtl = await (platform.isRTL == null ? void 0 : platform.isRTL(elements.floating));\n const side = getSide(placement);\n const alignment = getAlignment(placement);\n const isVertical = getSideAxis(placement) === 'y';\n const mainAxisMulti = originSides.has(side) ? -1 : 1;\n const crossAxisMulti = rtl && isVertical ? -1 : 1;\n const rawValue = evaluate(options, state);\n\n // eslint-disable-next-line prefer-const\n let {\n mainAxis,\n crossAxis,\n alignmentAxis\n } = typeof rawValue === 'number' ? {\n mainAxis: rawValue,\n crossAxis: 0,\n alignmentAxis: null\n } : {\n mainAxis: rawValue.mainAxis || 0,\n crossAxis: rawValue.crossAxis || 0,\n alignmentAxis: rawValue.alignmentAxis\n };\n if (alignment && typeof alignmentAxis === 'number') {\n crossAxis = alignment === 'end' ? alignmentAxis * -1 : alignmentAxis;\n }\n return isVertical ? {\n x: crossAxis * crossAxisMulti,\n y: mainAxis * mainAxisMulti\n } : {\n x: mainAxis * mainAxisMulti,\n y: crossAxis * crossAxisMulti\n };\n}\n\n/**\n * Modifies the placement by translating the floating element along the\n * specified axes.\n * A number (shorthand for `mainAxis` or distance), or an axes configuration\n * object may be passed.\n * @see https://floating-ui.com/docs/offset\n */\nconst offset = function (options) {\n if (options === void 0) {\n options = 0;\n }\n return {\n name: 'offset',\n options,\n async fn(state) {\n var _middlewareData$offse, _middlewareData$arrow;\n const {\n x,\n y,\n placement,\n middlewareData\n } = state;\n const diffCoords = await convertValueToCoords(state, options);\n\n // If the placement is the same and the arrow caused an alignment offset\n // then we don't need to change the positioning coordinates.\n if (placement === ((_middlewareData$offse = middlewareData.offset) == null ? void 0 : _middlewareData$offse.placement) && (_middlewareData$arrow = middlewareData.arrow) != null && _middlewareData$arrow.alignmentOffset) {\n return {};\n }\n return {\n x: x + diffCoords.x,\n y: y + diffCoords.y,\n data: {\n ...diffCoords,\n placement\n }\n };\n }\n };\n};\n\n/**\n * Optimizes the visibility of the floating element by shifting it in order to\n * keep it in view when it will overflow the clipping boundary.\n * @see https://floating-ui.com/docs/shift\n */\nconst shift = function (options) {\n if (options === void 0) {\n options = {};\n }\n return {\n name: 'shift',\n options,\n async fn(state) {\n const {\n x,\n y,\n placement,\n platform\n } = state;\n const {\n mainAxis: checkMainAxis = true,\n crossAxis: checkCrossAxis = false,\n limiter = {\n fn: _ref => {\n let {\n x,\n y\n } = _ref;\n return {\n x,\n y\n };\n }\n },\n ...detectOverflowOptions\n } = evaluate(options, state);\n const coords = {\n x,\n y\n };\n const overflow = await platform.detectOverflow(state, detectOverflowOptions);\n const crossAxis = getSideAxis(placement);\n const mainAxis = getOppositeAxis(crossAxis);\n let mainAxisCoord = coords[mainAxis];\n let crossAxisCoord = coords[crossAxis];\n const clampCoord = (axis, coord) => clamp(coord + overflow[axis === 'y' ? 'top' : 'left'], coord, coord - overflow[axis === 'y' ? 'bottom' : 'right']);\n if (checkMainAxis) {\n mainAxisCoord = clampCoord(mainAxis, mainAxisCoord);\n }\n if (checkCrossAxis) {\n crossAxisCoord = clampCoord(crossAxis, crossAxisCoord);\n }\n const limitedCoords = limiter.fn({\n ...state,\n [mainAxis]: mainAxisCoord,\n [crossAxis]: crossAxisCoord\n });\n return {\n ...limitedCoords,\n data: {\n x: limitedCoords.x - x,\n y: limitedCoords.y - y,\n enabled: {\n [mainAxis]: checkMainAxis,\n [crossAxis]: checkCrossAxis\n }\n }\n };\n }\n };\n};\n/**\n * Built-in `limiter` that will stop `shift()` at a certain point.\n */\nconst limitShift = function (options) {\n if (options === void 0) {\n options = {};\n }\n return {\n options,\n fn(state) {\n var _rawOffset$mainAxis, _rawOffset$crossAxis;\n const {\n x,\n y,\n placement,\n rects,\n middlewareData\n } = state;\n const {\n offset = 0,\n mainAxis: checkMainAxis = true,\n crossAxis: checkCrossAxis = true\n } = evaluate(options, state);\n const coords = {\n x,\n y\n };\n const crossAxis = getSideAxis(placement);\n const mainAxis = getOppositeAxis(crossAxis);\n let mainAxisCoord = coords[mainAxis];\n let crossAxisCoord = coords[crossAxis];\n const rawOffset = evaluate(offset, state);\n const computedOffset = typeof rawOffset === 'number' ? {\n mainAxis: rawOffset,\n crossAxis: 0\n } : {\n mainAxis: (_rawOffset$mainAxis = rawOffset.mainAxis) != null ? _rawOffset$mainAxis : 0,\n crossAxis: (_rawOffset$crossAxis = rawOffset.crossAxis) != null ? _rawOffset$crossAxis : 0\n };\n if (checkMainAxis) {\n const len = mainAxis === 'y' ? 'height' : 'width';\n const limitMin = rects.reference[mainAxis] - rects.floating[len] + computedOffset.mainAxis;\n const limitMax = rects.reference[mainAxis] + rects.reference[len] - computedOffset.mainAxis;\n if (mainAxisCoord < limitMin) {\n mainAxisCoord = limitMin;\n } else if (mainAxisCoord > limitMax) {\n mainAxisCoord = limitMax;\n }\n }\n if (checkCrossAxis) {\n var _middlewareData$offse, _middlewareData$offse2;\n const len = mainAxis === 'y' ? 'width' : 'height';\n const isOriginSide = originSides.has(getSide(placement));\n const limitMin = rects.reference[crossAxis] - rects.floating[len] + (isOriginSide ? ((_middlewareData$offse = middlewareData.offset) == null ? void 0 : _middlewareData$offse[crossAxis]) || 0 : 0) + (isOriginSide ? 0 : computedOffset.crossAxis);\n const limitMax = rects.reference[crossAxis] + rects.reference[len] + (isOriginSide ? 0 : ((_middlewareData$offse2 = middlewareData.offset) == null ? void 0 : _middlewareData$offse2[crossAxis]) || 0) - (isOriginSide ? computedOffset.crossAxis : 0);\n if (crossAxisCoord < limitMin) {\n crossAxisCoord = limitMin;\n } else if (crossAxisCoord > limitMax) {\n crossAxisCoord = limitMax;\n }\n }\n return {\n [mainAxis]: mainAxisCoord,\n [crossAxis]: crossAxisCoord\n };\n }\n };\n};\n\n// Method syntax keeps callback parameters bivariant, but expressing the\n// explicit `| undefined` required by `exactOptionalPropertyTypes` needs\n// property syntax, which is contravariant under `strictFunctionTypes`.\n// Extracting the function from a method position restores that bivariance so\n// consumers can still assign callbacks with narrower parameter types.\n\n/**\n * Provides data that allows you to change the size of the floating element —\n * for instance, prevent it from overflowing the clipping boundary or match the\n * width of the reference element.\n * @see https://floating-ui.com/docs/size\n */\nconst size = function (options) {\n if (options === void 0) {\n options = {};\n }\n return {\n name: 'size',\n options,\n async fn(state) {\n const {\n placement,\n rects,\n platform,\n elements\n } = state;\n const {\n apply = () => {},\n ...detectOverflowOptions\n } = evaluate(options, state);\n const overflow = await platform.detectOverflow(state, detectOverflowOptions);\n const side = getSide(placement);\n const alignment = getAlignment(placement);\n const isYAxis = getSideAxis(placement) === 'y';\n const {\n width,\n height\n } = rects.floating;\n let heightSide;\n let widthSide;\n if (side === 'top' || side === 'bottom') {\n heightSide = side;\n widthSide = alignment === ((await (platform.isRTL == null ? void 0 : platform.isRTL(elements.floating))) ? 'start' : 'end') ? 'left' : 'right';\n } else {\n widthSide = side;\n heightSide = alignment === 'end' ? 'top' : 'bottom';\n }\n const maximumClippingHeight = height - overflow.top - overflow.bottom;\n const maximumClippingWidth = width - overflow.left - overflow.right;\n const overflowAvailableHeight = min(height - overflow[heightSide], maximumClippingHeight);\n const overflowAvailableWidth = min(width - overflow[widthSide], maximumClippingWidth);\n const shiftData = state.middlewareData.shift;\n const noShift = !shiftData;\n let availableHeight = overflowAvailableHeight;\n let availableWidth = overflowAvailableWidth;\n if (shiftData != null && shiftData.enabled.x) {\n availableWidth = maximumClippingWidth;\n }\n if (shiftData != null && shiftData.enabled.y) {\n availableHeight = maximumClippingHeight;\n }\n if (noShift && !alignment) {\n if (isYAxis) {\n availableWidth = width - 2 * max(overflow.left, overflow.right);\n } else {\n availableHeight = height - 2 * max(overflow.top, overflow.bottom);\n }\n }\n await apply({\n ...state,\n availableWidth,\n availableHeight\n });\n const nextDimensions = await platform.getDimensions(elements.floating);\n if (width !== nextDimensions.width || height !== nextDimensions.height) {\n return {\n reset: {\n rects: true\n }\n };\n }\n return {};\n }\n };\n};\n\nexport { arrow, autoPlacement, computePosition, detectOverflow, flip, hide, inline, limitShift, offset, shift, size };\n","import{rectToClientRect as t,computePosition as e}from\"@floating-ui/core\";export{arrow,autoPlacement,detectOverflow,flip,hide,inline,limitShift,offset,shift,size}from\"@floating-ui/core\";function n(t){var e;return(null==(e=t.ownerDocument)?void 0:e.defaultView)||window}function o(t){return n(t).getComputedStyle(t)}const i=Math.min,r=Math.max,l=Math.round;function c(t){const e=o(t);let n=parseFloat(e.width),i=parseFloat(e.height);const r=t.offsetWidth,c=t.offsetHeight,s=l(n)!==r||l(i)!==c;return s&&(n=r,i=c),{width:n,height:i,fallback:s}}function s(t){return h(t)?(t.nodeName||\"\").toLowerCase():\"\"}let f;function u(){if(f)return f;const t=navigator.userAgentData;return t&&Array.isArray(t.brands)?(f=t.brands.map((t=>t.brand+\"/\"+t.version)).join(\" \"),f):navigator.userAgent}function a(t){return t instanceof n(t).HTMLElement}function d(t){return t instanceof n(t).Element}function h(t){return t instanceof n(t).Node}function p(t){if(\"undefined\"==typeof ShadowRoot)return!1;return t instanceof n(t).ShadowRoot||t instanceof ShadowRoot}function g(t){const{overflow:e,overflowX:n,overflowY:i,display:r}=o(t);return/auto|scroll|overlay|hidden|clip/.test(e+i+n)&&![\"inline\",\"contents\"].includes(r)}function m(t){return[\"table\",\"td\",\"th\"].includes(s(t))}function y(t){const e=/firefox/i.test(u()),n=o(t),i=n.backdropFilter||n.WebkitBackdropFilter;return\"none\"!==n.transform||\"none\"!==n.perspective||!!i&&\"none\"!==i||e&&\"filter\"===n.willChange||e&&!!n.filter&&\"none\"!==n.filter||[\"transform\",\"perspective\"].some((t=>n.willChange.includes(t)))||[\"paint\",\"layout\",\"strict\",\"content\"].some((t=>{const e=n.contain;return null!=e&&e.includes(t)}))}function x(){return!/^((?!chrome|android).)*safari/i.test(u())}function w(t){return[\"html\",\"body\",\"#document\"].includes(s(t))}function v(t){return d(t)?t:t.contextElement}const b={x:1,y:1};function L(t){const e=v(t);if(!a(e))return b;const n=e.getBoundingClientRect(),{width:o,height:i,fallback:r}=c(e);let s=(r?l(n.width):n.width)/o,f=(r?l(n.height):n.height)/i;return s&&Number.isFinite(s)||(s=1),f&&Number.isFinite(f)||(f=1),{x:s,y:f}}function E(t,e,o,i){var r,l;void 0===e&&(e=!1),void 0===o&&(o=!1);const c=t.getBoundingClientRect(),s=v(t);let f=b;e&&(i?d(i)&&(f=L(i)):f=L(t));const u=s?n(s):window,a=!x()&&o;let h=(c.left+(a&&(null==(r=u.visualViewport)?void 0:r.offsetLeft)||0))/f.x,p=(c.top+(a&&(null==(l=u.visualViewport)?void 0:l.offsetTop)||0))/f.y,g=c.width/f.x,m=c.height/f.y;if(s){const t=n(s),e=i&&d(i)?n(i):i;let o=t.frameElement;for(;o&&i&&e!==t;){const t=L(o),e=o.getBoundingClientRect(),i=getComputedStyle(o);e.x+=(o.clientLeft+parseFloat(i.paddingLeft))*t.x,e.y+=(o.clientTop+parseFloat(i.paddingTop))*t.y,h*=t.x,p*=t.y,g*=t.x,m*=t.y,h+=e.x,p+=e.y,o=n(o).frameElement}}return{width:g,height:m,top:p,right:h+g,bottom:p+m,left:h,x:h,y:p}}function R(t){return((h(t)?t.ownerDocument:t.document)||window.document).documentElement}function T(t){return d(t)?{scrollLeft:t.scrollLeft,scrollTop:t.scrollTop}:{scrollLeft:t.pageXOffset,scrollTop:t.pageYOffset}}function C(t){return E(R(t)).left+T(t).scrollLeft}function F(t){if(\"html\"===s(t))return t;const e=t.assignedSlot||t.parentNode||p(t)&&t.host||R(t);return p(e)?e.host:e}function W(t){const e=F(t);return w(e)?e.ownerDocument.body:a(e)&&g(e)?e:W(e)}function D(t,e){var o;void 0===e&&(e=[]);const i=W(t),r=i===(null==(o=t.ownerDocument)?void 0:o.body),l=n(i);return r?e.concat(l,l.visualViewport||[],g(i)?i:[]):e.concat(i,D(i))}function S(e,i,l){return\"viewport\"===i?t(function(t,e){const o=n(t),i=R(t),r=o.visualViewport;let l=i.clientWidth,c=i.clientHeight,s=0,f=0;if(r){l=r.width,c=r.height;const t=x();(t||!t&&\"fixed\"===e)&&(s=r.offsetLeft,f=r.offsetTop)}return{width:l,height:c,x:s,y:f}}(e,l)):d(i)?t(function(t,e){const n=E(t,!0,\"fixed\"===e),o=n.top+t.clientTop,i=n.left+t.clientLeft,r=a(t)?L(t):{x:1,y:1};return{width:t.clientWidth*r.x,height:t.clientHeight*r.y,x:i*r.x,y:o*r.y}}(i,l)):t(function(t){const e=R(t),n=T(t),i=t.ownerDocument.body,l=r(e.scrollWidth,e.clientWidth,i.scrollWidth,i.clientWidth),c=r(e.scrollHeight,e.clientHeight,i.scrollHeight,i.clientHeight);let s=-n.scrollLeft+C(t);const f=-n.scrollTop;return\"rtl\"===o(i).direction&&(s+=r(e.clientWidth,i.clientWidth)-l),{width:l,height:c,x:s,y:f}}(R(e)))}function A(t){return a(t)&&\"fixed\"!==o(t).position?t.offsetParent:null}function H(t){const e=n(t);let i=A(t);for(;i&&m(i)&&\"static\"===o(i).position;)i=A(i);return i&&(\"html\"===s(i)||\"body\"===s(i)&&\"static\"===o(i).position&&!y(i))?e:i||function(t){let e=F(t);for(;a(e)&&!w(e);){if(y(e))return e;e=F(e)}return null}(t)||e}function O(t,e,n){const o=a(e),i=R(e),r=E(t,!0,\"fixed\"===n,e);let l={scrollLeft:0,scrollTop:0};const c={x:0,y:0};if(o||!o&&\"fixed\"!==n)if((\"body\"!==s(e)||g(i))&&(l=T(e)),a(e)){const t=E(e,!0);c.x=t.x+e.clientLeft,c.y=t.y+e.clientTop}else i&&(c.x=C(i));return{x:r.left+l.scrollLeft-c.x,y:r.top+l.scrollTop-c.y,width:r.width,height:r.height}}const P={getClippingRect:function(t){let{element:e,boundary:n,rootBoundary:l,strategy:c}=t;const f=\"clippingAncestors\"===n?function(t,e){const n=e.get(t);if(n)return n;let i=D(t).filter((t=>d(t)&&\"body\"!==s(t))),r=null;const l=\"fixed\"===o(t).position;let c=l?F(t):t;for(;d(c)&&!w(c);){const t=o(c),e=y(c);(l?e||r:e||\"static\"!==t.position||!r||![\"absolute\",\"fixed\"].includes(r.position))?r=t:i=i.filter((t=>t!==c)),c=F(c)}return e.set(t,i),i}(e,this._c):[].concat(n),u=[...f,l],a=u[0],h=u.reduce(((t,n)=>{const o=S(e,n,c);return t.top=r(o.top,t.top),t.right=i(o.right,t.right),t.bottom=i(o.bottom,t.bottom),t.left=r(o.left,t.left),t}),S(e,a,c));return{width:h.right-h.left,height:h.bottom-h.top,x:h.left,y:h.top}},convertOffsetParentRelativeRectToViewportRelativeRect:function(t){let{rect:e,offsetParent:n,strategy:o}=t;const i=a(n),r=R(n);if(n===r)return e;let l={scrollLeft:0,scrollTop:0},c={x:1,y:1};const f={x:0,y:0};if((i||!i&&\"fixed\"!==o)&&((\"body\"!==s(n)||g(r))&&(l=T(n)),a(n))){const t=E(n);c=L(n),f.x=t.x+n.clientLeft,f.y=t.y+n.clientTop}return{width:e.width*c.x,height:e.height*c.y,x:e.x*c.x-l.scrollLeft*c.x+f.x,y:e.y*c.y-l.scrollTop*c.y+f.y}},isElement:d,getDimensions:function(t){return a(t)?c(t):t.getBoundingClientRect()},getOffsetParent:H,getDocumentElement:R,getScale:L,async getElementRects(t){let{reference:e,floating:n,strategy:o}=t;const i=this.getOffsetParent||H,r=this.getDimensions;return{reference:O(e,await i(n),o),floating:{x:0,y:0,...await r(n)}}},getClientRects:t=>Array.from(t.getClientRects()),isRTL:t=>\"rtl\"===o(t).direction};function z(t,e,n,o){void 0===o&&(o={});const{ancestorScroll:i=!0,ancestorResize:r=!0,elementResize:l=!0,animationFrame:c=!1}=o,s=i&&!c,f=s||r?[...d(t)?D(t):t.contextElement?D(t.contextElement):[],...D(e)]:[];f.forEach((t=>{s&&t.addEventListener(\"scroll\",n,{passive:!0}),r&&t.addEventListener(\"resize\",n)}));let u,a=null;if(l){let o=!0;a=new ResizeObserver((()=>{o||n(),o=!1})),d(t)&&!c&&a.observe(t),d(t)||!t.contextElement||c||a.observe(t.contextElement),a.observe(e)}let h=c?E(t):null;return c&&function e(){const o=E(t);!h||o.x===h.x&&o.y===h.y&&o.width===h.width&&o.height===h.height||n();h=o,u=requestAnimationFrame(e)}(),n(),()=>{var t;f.forEach((t=>{s&&t.removeEventListener(\"scroll\",n),r&&t.removeEventListener(\"resize\",n)})),null==(t=a)||t.disconnect(),a=null,c&&cancelAnimationFrame(u)}}const B=(t,n,o)=>{const i=new Map,r={platform:P,...o},l={...r.platform,_c:i};return e(t,n,{...r,platform:l})};export{z as autoUpdate,B as computePosition,D as getOverflowAncestors,P as platform};\n","import { defineComponent as O, openBlock as f, createElementBlock as T, normalizeClass as J, renderSlot as A, normalizeProps as ke, guardReactiveProps as Le, pushScopeId as De, popScopeId as Ie, nextTick as Fe, createBlock as M, withScopeId as Re, resolveComponent as P, normalizeStyle as W, withKeys as je, createElementVNode as w, Fragment as Ve, createCommentVNode as se, mergeProps as $e, withCtx as N, createVNode as ve, toDisplayString as We, ref as U, createApp as Ge, h as qe } from \"vue\";\nimport { offset as xe, autoPlacement as Ue, shift as Ye, flip as Xe, arrow as Ke, size as Je, computePosition as Qe, getOverflowAncestors as ne } from \"@floating-ui/dom\";\nfunction ye(e, t) {\n for (const o in t)\n Object.prototype.hasOwnProperty.call(t, o) && (typeof t[o] == \"object\" && e[o] ? ye(e[o], t[o]) : e[o] = t[o]);\n}\nconst h = {\n // Disable popper components\n disabled: !1,\n // Default position offset along main axis (px)\n distance: 5,\n // Default position offset along cross axis (px)\n skidding: 0,\n // Default container where the tooltip will be appended\n container: \"body\",\n // Element used to compute position and size boundaries\n boundary: void 0,\n // Skip delay & CSS transitions when another popper is shown, so that the popper appear to instanly move to the new position.\n instantMove: !1,\n // Auto destroy tooltip DOM nodes (ms)\n disposeTimeout: 150,\n // Triggers on the popper itself\n popperTriggers: [],\n // Positioning strategy\n strategy: \"absolute\",\n // Prevent overflow\n preventOverflow: !0,\n // Flip to the opposite placement if needed\n flip: !0,\n // Shift on the cross axis to prevent the popper from overflowing\n shift: !0,\n // Overflow padding (px)\n overflowPadding: 0,\n // Arrow padding (px)\n arrowPadding: 0,\n // Compute arrow overflow (useful to hide it)\n arrowOverflow: !0,\n /**\n * By default, compute autohide on 'click'.\n */\n autoHideOnMousedown: !1,\n // Themes\n themes: {\n tooltip: {\n // Default tooltip placement relative to target element\n placement: \"top\",\n // Default events that trigger the tooltip\n triggers: [\"hover\", \"focus\", \"touch\"],\n // Close tooltip on click on tooltip target\n hideTriggers: (e) => [...e, \"click\"],\n // Delay (ms)\n delay: {\n show: 200,\n hide: 0\n },\n // Update popper on content resize\n handleResize: !1,\n // Enable HTML content in directive\n html: !1,\n // Displayed when tooltip content is loading\n loadingContent: \"...\"\n },\n dropdown: {\n // Default dropdown placement relative to target element\n placement: \"bottom\",\n // Default events that trigger the dropdown\n triggers: [\"click\"],\n // Delay (ms)\n delay: 0,\n // Update popper on content resize\n handleResize: !0,\n // Hide on clock outside\n autoHide: !0\n },\n menu: {\n $extend: \"dropdown\",\n triggers: [\"hover\", \"focus\"],\n popperTriggers: [\"hover\"],\n delay: {\n show: 0,\n hide: 400\n }\n }\n }\n};\nfunction S(e, t) {\n let o = h.themes[e] || {}, i;\n do\n i = o[t], typeof i > \"u\" ? o.$extend ? o = h.themes[o.$extend] || {} : (o = null, i = h[t]) : o = null;\n while (o);\n return i;\n}\nfunction Ze(e) {\n const t = [e];\n let o = h.themes[e] || {};\n do\n o.$extend && !o.$resetCss ? (t.push(o.$extend), o = h.themes[o.$extend] || {}) : o = null;\n while (o);\n return t.map((i) => `v-popper--theme-${i}`);\n}\nfunction re(e) {\n const t = [e];\n let o = h.themes[e] || {};\n do\n o.$extend ? (t.push(o.$extend), o = h.themes[o.$extend] || {}) : o = null;\n while (o);\n return t;\n}\nlet $ = !1;\nif (typeof window < \"u\") {\n $ = !1;\n try {\n const e = Object.defineProperty({}, \"passive\", {\n get() {\n $ = !0;\n }\n });\n window.addEventListener(\"test\", null, e);\n } catch {\n }\n}\nlet _e = !1;\ntypeof window < \"u\" && typeof navigator < \"u\" && (_e = /iPad|iPhone|iPod/.test(navigator.userAgent) && !window.MSStream);\nconst Te = [\"auto\", \"top\", \"bottom\", \"left\", \"right\"].reduce((e, t) => e.concat([\n t,\n `${t}-start`,\n `${t}-end`\n]), []), pe = {\n hover: \"mouseenter\",\n focus: \"focus\",\n click: \"click\",\n touch: \"touchstart\",\n pointer: \"pointerdown\"\n}, ae = {\n hover: \"mouseleave\",\n focus: \"blur\",\n click: \"click\",\n touch: \"touchend\",\n pointer: \"pointerup\"\n};\nfunction de(e, t) {\n const o = e.indexOf(t);\n o !== -1 && e.splice(o, 1);\n}\nfunction G() {\n return new Promise((e) => requestAnimationFrame(() => {\n requestAnimationFrame(e);\n }));\n}\nconst d = [];\nlet g = null;\nconst le = {};\nfunction he(e) {\n let t = le[e];\n return t || (t = le[e] = []), t;\n}\nlet Y = function() {\n};\ntypeof window < \"u\" && (Y = window.Element);\nfunction n(e) {\n return function(t) {\n return S(t.theme, e);\n };\n}\nconst q = \"__floating-vue__popper\", Q = () => O({\n name: \"VPopper\",\n provide() {\n return {\n [q]: {\n parentPopper: this\n }\n };\n },\n inject: {\n [q]: { default: null }\n },\n props: {\n theme: {\n type: String,\n required: !0\n },\n targetNodes: {\n type: Function,\n required: !0\n },\n referenceNode: {\n type: Function,\n default: null\n },\n popperNode: {\n type: Function,\n required: !0\n },\n shown: {\n type: Boolean,\n default: !1\n },\n showGroup: {\n type: String,\n default: null\n },\n // eslint-disable-next-line vue/require-prop-types\n ariaId: {\n default: null\n },\n disabled: {\n type: Boolean,\n default: n(\"disabled\")\n },\n positioningDisabled: {\n type: Boolean,\n default: n(\"positioningDisabled\")\n },\n placement: {\n type: String,\n default: n(\"placement\"),\n validator: (e) => Te.includes(e)\n },\n delay: {\n type: [String, Number, Object],\n default: n(\"delay\")\n },\n distance: {\n type: [Number, String],\n default: n(\"distance\")\n },\n skidding: {\n type: [Number, String],\n default: n(\"skidding\")\n },\n triggers: {\n type: Array,\n default: n(\"triggers\")\n },\n showTriggers: {\n type: [Array, Function],\n default: n(\"showTriggers\")\n },\n hideTriggers: {\n type: [Array, Function],\n default: n(\"hideTriggers\")\n },\n popperTriggers: {\n type: Array,\n default: n(\"popperTriggers\")\n },\n popperShowTriggers: {\n type: [Array, Function],\n default: n(\"popperShowTriggers\")\n },\n popperHideTriggers: {\n type: [Array, Function],\n default: n(\"popperHideTriggers\")\n },\n container: {\n type: [String, Object, Y, Boolean],\n default: n(\"container\")\n },\n boundary: {\n type: [String, Y],\n default: n(\"boundary\")\n },\n strategy: {\n type: String,\n validator: (e) => [\"absolute\", \"fixed\"].includes(e),\n default: n(\"strategy\")\n },\n autoHide: {\n type: [Boolean, Function],\n default: n(\"autoHide\")\n },\n handleResize: {\n type: Boolean,\n default: n(\"handleResize\")\n },\n instantMove: {\n type: Boolean,\n default: n(\"instantMove\")\n },\n eagerMount: {\n type: Boolean,\n default: n(\"eagerMount\")\n },\n popperClass: {\n type: [String, Array, Object],\n default: n(\"popperClass\")\n },\n computeTransformOrigin: {\n type: Boolean,\n default: n(\"computeTransformOrigin\")\n },\n /**\n * @deprecated\n */\n autoMinSize: {\n type: Boolean,\n default: n(\"autoMinSize\")\n },\n autoSize: {\n type: [Boolean, String],\n default: n(\"autoSize\")\n },\n /**\n * @deprecated\n */\n autoMaxSize: {\n type: Boolean,\n default: n(\"autoMaxSize\")\n },\n autoBoundaryMaxSize: {\n type: Boolean,\n default: n(\"autoBoundaryMaxSize\")\n },\n preventOverflow: {\n type: Boolean,\n default: n(\"preventOverflow\")\n },\n overflowPadding: {\n type: [Number, String],\n default: n(\"overflowPadding\")\n },\n arrowPadding: {\n type: [Number, String],\n default: n(\"arrowPadding\")\n },\n arrowOverflow: {\n type: Boolean,\n default: n(\"arrowOverflow\")\n },\n flip: {\n type: Boolean,\n default: n(\"flip\")\n },\n shift: {\n type: Boolean,\n default: n(\"shift\")\n },\n shiftCrossAxis: {\n type: Boolean,\n default: n(\"shiftCrossAxis\")\n },\n noAutoFocus: {\n type: Boolean,\n default: n(\"noAutoFocus\")\n },\n disposeTimeout: {\n type: Number,\n default: n(\"disposeTimeout\")\n }\n },\n emits: {\n show: () => !0,\n hide: () => !0,\n \"update:shown\": (e) => !0,\n \"apply-show\": () => !0,\n \"apply-hide\": () => !0,\n \"close-group\": () => !0,\n \"close-directive\": () => !0,\n \"auto-hide\": () => !0,\n resize: () => !0\n },\n data() {\n return {\n isShown: !1,\n isMounted: !1,\n skipTransition: !1,\n classes: {\n showFrom: !1,\n showTo: !1,\n hideFrom: !1,\n hideTo: !0\n },\n result: {\n x: 0,\n y: 0,\n placement: \"\",\n strategy: this.strategy,\n arrow: {\n x: 0,\n y: 0,\n centerOffset: 0\n },\n transformOrigin: null\n },\n randomId: `popper_${[Math.random(), Date.now()].map((e) => e.toString(36).substring(2, 10)).join(\"_\")}`,\n shownChildren: /* @__PURE__ */ new Set(),\n lastAutoHide: !0,\n pendingHide: !1,\n containsGlobalTarget: !1,\n isDisposed: !0,\n mouseDownContains: !1\n };\n },\n computed: {\n popperId() {\n return this.ariaId != null ? this.ariaId : this.randomId;\n },\n shouldMountContent() {\n return this.eagerMount || this.isMounted;\n },\n slotData() {\n return {\n popperId: this.popperId,\n isShown: this.isShown,\n shouldMountContent: this.shouldMountContent,\n skipTransition: this.skipTransition,\n autoHide: typeof this.autoHide == \"function\" ? this.lastAutoHide : this.autoHide,\n show: this.show,\n hide: this.hide,\n handleResize: this.handleResize,\n onResize: this.onResize,\n classes: {\n ...this.classes,\n popperClass: this.popperClass\n },\n result: this.positioningDisabled ? null : this.result,\n attrs: this.$attrs\n };\n },\n parentPopper() {\n var e;\n return (e = this[q]) == null ? void 0 : e.parentPopper;\n },\n hasPopperShowTriggerHover() {\n var e, t;\n return ((e = this.popperTriggers) == null ? void 0 : e.includes(\"hover\")) || ((t = this.popperShowTriggers) == null ? void 0 : t.includes(\"hover\"));\n }\n },\n watch: {\n shown: \"$_autoShowHide\",\n disabled(e) {\n e ? this.dispose() : this.init();\n },\n async container() {\n this.isShown && (this.$_ensureTeleport(), await this.$_computePosition());\n },\n triggers: {\n handler: \"$_refreshListeners\",\n deep: !0\n },\n positioningDisabled: \"$_refreshListeners\",\n ...[\n \"placement\",\n \"distance\",\n \"skidding\",\n \"boundary\",\n \"strategy\",\n \"overflowPadding\",\n \"arrowPadding\",\n \"preventOverflow\",\n \"shift\",\n \"shiftCrossAxis\",\n \"flip\"\n ].reduce((e, t) => (e[t] = \"$_computePosition\", e), {})\n },\n created() {\n this.autoMinSize && console.warn('[floating-vue] `autoMinSize` option is deprecated. Use `autoSize=\"min\"` instead.'), this.autoMaxSize && console.warn(\"[floating-vue] `autoMaxSize` option is deprecated. Use `autoBoundaryMaxSize` instead.\");\n },\n mounted() {\n this.init(), this.$_detachPopperNode();\n },\n activated() {\n this.$_autoShowHide();\n },\n deactivated() {\n this.hide();\n },\n beforeUnmount() {\n this.dispose();\n },\n methods: {\n show({ event: e = null, skipDelay: t = !1, force: o = !1 } = {}) {\n var i, s;\n (i = this.parentPopper) != null && i.lockedChild && this.parentPopper.lockedChild !== this || (this.pendingHide = !1, (o || !this.disabled) && (((s = this.parentPopper) == null ? void 0 : s.lockedChild) === this && (this.parentPopper.lockedChild = null), this.$_scheduleShow(e, t), this.$emit(\"show\"), this.$_showFrameLocked = !0, requestAnimationFrame(() => {\n this.$_showFrameLocked = !1;\n })), this.$emit(\"update:shown\", !0));\n },\n hide({ event: e = null, skipDelay: t = !1 } = {}) {\n var o;\n if (!this.$_hideInProgress) {\n if (this.shownChildren.size > 0) {\n this.pendingHide = !0;\n return;\n }\n if (this.hasPopperShowTriggerHover && this.$_isAimingPopper()) {\n this.parentPopper && (this.parentPopper.lockedChild = this, clearTimeout(this.parentPopper.lockedChildTimer), this.parentPopper.lockedChildTimer = setTimeout(() => {\n this.parentPopper.lockedChild === this && (this.parentPopper.lockedChild.hide({ skipDelay: t }), this.parentPopper.lockedChild = null);\n }, 1e3));\n return;\n }\n ((o = this.parentPopper) == null ? void 0 : o.lockedChild) === this && (this.parentPopper.lockedChild = null), this.pendingHide = !1, this.$_scheduleHide(e, t), this.$emit(\"hide\"), this.$emit(\"update:shown\", !1);\n }\n },\n init() {\n var e;\n this.isDisposed && (this.isDisposed = !1, this.isMounted = !1, this.$_events = [], this.$_preventShow = !1, this.$_referenceNode = ((e = this.referenceNode) == null ? void 0 : e.call(this)) ?? this.$el, this.$_targetNodes = this.targetNodes().filter((t) => t.nodeType === t.ELEMENT_NODE), this.$_popperNode = this.popperNode(), this.$_innerNode = this.$_popperNode.querySelector(\".v-popper__inner\"), this.$_arrowNode = this.$_popperNode.querySelector(\".v-popper__arrow-container\"), this.$_swapTargetAttrs(\"title\", \"data-original-title\"), this.$_detachPopperNode(), this.triggers.length && this.$_addEventListeners(), this.shown && this.show());\n },\n dispose() {\n this.isDisposed || (this.isDisposed = !0, this.$_removeEventListeners(), this.hide({ skipDelay: !0 }), this.$_detachPopperNode(), this.isMounted = !1, this.isShown = !1, this.$_updateParentShownChildren(!1), this.$_swapTargetAttrs(\"data-original-title\", \"title\"));\n },\n async onResize() {\n this.isShown && (await this.$_computePosition(), this.$emit(\"resize\"));\n },\n async $_computePosition() {\n if (this.isDisposed || this.positioningDisabled)\n return;\n const e = {\n strategy: this.strategy,\n middleware: []\n };\n (this.distance || this.skidding) && e.middleware.push(xe({\n mainAxis: this.distance,\n crossAxis: this.skidding\n }));\n const t = this.placement.startsWith(\"auto\");\n if (t ? e.middleware.push(Ue({\n alignment: this.placement.split(\"-\")[1] ?? \"\"\n })) : e.placement = this.placement, this.preventOverflow && (this.shift && e.middleware.push(Ye({\n padding: this.overflowPadding,\n boundary: this.boundary,\n crossAxis: this.shiftCrossAxis\n })), !t && this.flip && e.middleware.push(Xe({\n padding: this.overflowPadding,\n boundary: this.boundary\n }))), e.middleware.push(Ke({\n element: this.$_arrowNode,\n padding: this.arrowPadding\n })), this.arrowOverflow && e.middleware.push({\n name: \"arrowOverflow\",\n fn: ({ placement: i, rects: s, middlewareData: r }) => {\n let p;\n const { centerOffset: a } = r.arrow;\n return i.startsWith(\"top\") || i.startsWith(\"bottom\") ? p = Math.abs(a) > s.reference.width / 2 : p = Math.abs(a) > s.reference.height / 2, {\n data: {\n overflow: p\n }\n };\n }\n }), this.autoMinSize || this.autoSize) {\n const i = this.autoSize ? this.autoSize : this.autoMinSize ? \"min\" : null;\n e.middleware.push({\n name: \"autoSize\",\n fn: ({ rects: s, placement: r, middlewareData: p }) => {\n var u;\n if ((u = p.autoSize) != null && u.skip)\n return {};\n let a, l;\n return r.startsWith(\"top\") || r.startsWith(\"bottom\") ? a = s.reference.width : l = s.reference.height, this.$_innerNode.style[i === \"min\" ? \"minWidth\" : i === \"max\" ? \"maxWidth\" : \"width\"] = a != null ? `${a}px` : null, this.$_innerNode.style[i === \"min\" ? \"minHeight\" : i === \"max\" ? \"maxHeight\" : \"height\"] = l != null ? `${l}px` : null, {\n data: {\n skip: !0\n },\n reset: {\n rects: !0\n }\n };\n }\n });\n }\n (this.autoMaxSize || this.autoBoundaryMaxSize) && (this.$_innerNode.style.maxWidth = null, this.$_innerNode.style.maxHeight = null, e.middleware.push(Je({\n boundary: this.boundary,\n padding: this.overflowPadding,\n apply: ({ availableWidth: i, availableHeight: s }) => {\n this.$_innerNode.style.maxWidth = i != null ? `${i}px` : null, this.$_innerNode.style.maxHeight = s != null ? `${s}px` : null;\n }\n })));\n const o = await Qe(this.$_referenceNode, this.$_popperNode, e);\n Object.assign(this.result, {\n x: o.x,\n y: o.y,\n placement: o.placement,\n strategy: o.strategy,\n arrow: {\n ...o.middlewareData.arrow,\n ...o.middlewareData.arrowOverflow\n }\n });\n },\n $_scheduleShow(e, t = !1) {\n if (this.$_updateParentShownChildren(!0), this.$_hideInProgress = !1, clearTimeout(this.$_scheduleTimer), g && this.instantMove && g.instantMove && g !== this.parentPopper) {\n g.$_applyHide(!0), this.$_applyShow(!0);\n return;\n }\n t ? this.$_applyShow() : this.$_scheduleTimer = setTimeout(this.$_applyShow.bind(this), this.$_computeDelay(\"show\"));\n },\n $_scheduleHide(e, t = !1) {\n if (this.shownChildren.size > 0) {\n this.pendingHide = !0;\n return;\n }\n this.$_updateParentShownChildren(!1), this.$_hideInProgress = !0, clearTimeout(this.$_scheduleTimer), this.isShown && (g = this), t ? this.$_applyHide() : this.$_scheduleTimer = setTimeout(this.$_applyHide.bind(this), this.$_computeDelay(\"hide\"));\n },\n $_computeDelay(e) {\n const t = this.delay;\n return parseInt(t && t[e] || t || 0);\n },\n async $_applyShow(e = !1) {\n clearTimeout(this.$_disposeTimer), clearTimeout(this.$_scheduleTimer), this.skipTransition = e, !this.isShown && (this.$_ensureTeleport(), await G(), await this.$_computePosition(), await this.$_applyShowEffect(), this.positioningDisabled || this.$_registerEventListeners([\n ...ne(this.$_referenceNode),\n ...ne(this.$_popperNode)\n ], \"scroll\", () => {\n this.$_computePosition();\n }));\n },\n async $_applyShowEffect() {\n if (this.$_hideInProgress)\n return;\n if (this.computeTransformOrigin) {\n const t = this.$_referenceNode.getBoundingClientRect(), o = this.$_popperNode.querySelector(\".v-popper__wrapper\"), i = o.parentNode.getBoundingClientRect(), s = t.x + t.width / 2 - (i.left + o.offsetLeft), r = t.y + t.height / 2 - (i.top + o.offsetTop);\n this.result.transformOrigin = `${s}px ${r}px`;\n }\n this.isShown = !0, this.$_applyAttrsToTarget({\n \"aria-describedby\": this.popperId,\n \"data-popper-shown\": \"\"\n });\n const e = this.showGroup;\n if (e) {\n let t;\n for (let o = 0; o < d.length; o++)\n t = d[o], t.showGroup !== e && (t.hide(), t.$emit(\"close-group\"));\n }\n d.push(this), document.body.classList.add(\"v-popper--some-open\");\n for (const t of re(this.theme))\n he(t).push(this), document.body.classList.add(`v-popper--some-open--${t}`);\n this.$emit(\"apply-show\"), this.classes.showFrom = !0, this.classes.showTo = !1, this.classes.hideFrom = !1, this.classes.hideTo = !1, await G(), this.classes.showFrom = !1, this.classes.showTo = !0, this.noAutoFocus || this.$_popperNode.focus();\n },\n async $_applyHide(e = !1) {\n if (this.shownChildren.size > 0) {\n this.pendingHide = !0, this.$_hideInProgress = !1;\n return;\n }\n if (clearTimeout(this.$_scheduleTimer), !this.isShown)\n return;\n this.skipTransition = e, de(d, this), d.length === 0 && document.body.classList.remove(\"v-popper--some-open\");\n for (const o of re(this.theme)) {\n const i = he(o);\n de(i, this), i.length === 0 && document.body.classList.remove(`v-popper--some-open--${o}`);\n }\n g === this && (g = null), this.isShown = !1, this.$_applyAttrsToTarget({\n \"aria-describedby\": void 0,\n \"data-popper-shown\": void 0\n }), clearTimeout(this.$_disposeTimer);\n const t = this.disposeTimeout;\n t !== null && (this.$_disposeTimer = setTimeout(() => {\n this.$_popperNode && (this.$_detachPopperNode(), this.isMounted = !1);\n }, t)), this.$_removeEventListeners(\"scroll\"), this.$emit(\"apply-hide\"), this.classes.showFrom = !1, this.classes.showTo = !1, this.classes.hideFrom = !0, this.classes.hideTo = !1, await G(), this.classes.hideFrom = !1, this.classes.hideTo = !0;\n },\n $_autoShowHide() {\n this.shown ? this.show() : this.hide();\n },\n $_ensureTeleport() {\n if (this.isDisposed)\n return;\n let e = this.container;\n if (typeof e == \"string\" ? e = window.document.querySelector(e) : e === !1 && (e = this.$_targetNodes[0].parentNode), !e)\n throw new Error(\"No container for popover: \" + this.container);\n e.appendChild(this.$_popperNode), this.isMounted = !0;\n },\n $_addEventListeners() {\n const e = (o) => {\n this.isShown && !this.$_hideInProgress || (o.usedByTooltip = !0, !this.$_preventShow && this.show({ event: o }));\n };\n this.$_registerTriggerListeners(this.$_targetNodes, pe, this.triggers, this.showTriggers, e), this.$_registerTriggerListeners([this.$_popperNode], pe, this.popperTriggers, this.popperShowTriggers, e);\n const t = (o) => {\n o.usedByTooltip || this.hide({ event: o });\n };\n this.$_registerTriggerListeners(this.$_targetNodes, ae, this.triggers, this.hideTriggers, t), this.$_registerTriggerListeners([this.$_popperNode], ae, this.popperTriggers, this.popperHideTriggers, t);\n },\n $_registerEventListeners(e, t, o) {\n this.$_events.push({ targetNodes: e, eventType: t, handler: o }), e.forEach((i) => i.addEventListener(t, o, $ ? {\n passive: !0\n } : void 0));\n },\n $_registerTriggerListeners(e, t, o, i, s) {\n let r = o;\n i != null && (r = typeof i == \"function\" ? i(r) : i), r.forEach((p) => {\n const a = t[p];\n a && this.$_registerEventListeners(e, a, s);\n });\n },\n $_removeEventListeners(e) {\n const t = [];\n this.$_events.forEach((o) => {\n const { targetNodes: i, eventType: s, handler: r } = o;\n !e || e === s ? i.forEach((p) => p.removeEventListener(s, r)) : t.push(o);\n }), this.$_events = t;\n },\n $_refreshListeners() {\n this.isDisposed || (this.$_removeEventListeners(), this.$_addEventListeners());\n },\n $_handleGlobalClose(e, t = !1) {\n this.$_showFrameLocked || (this.hide({ event: e }), e.closePopover ? this.$emit(\"close-directive\") : this.$emit(\"auto-hide\"), t && (this.$_preventShow = !0, setTimeout(() => {\n this.$_preventShow = !1;\n }, 300)));\n },\n $_detachPopperNode() {\n this.$_popperNode.parentNode && this.$_popperNode.parentNode.removeChild(this.$_popperNode);\n },\n $_swapTargetAttrs(e, t) {\n for (const o of this.$_targetNodes) {\n const i = o.getAttribute(e);\n i && (o.removeAttribute(e), o.setAttribute(t, i));\n }\n },\n $_applyAttrsToTarget(e) {\n for (const t of this.$_targetNodes)\n for (const o in e) {\n const i = e[o];\n i == null ? t.removeAttribute(o) : t.setAttribute(o, i);\n }\n },\n $_updateParentShownChildren(e) {\n let t = this.parentPopper;\n for (; t; )\n e ? t.shownChildren.add(this.randomId) : (t.shownChildren.delete(this.randomId), t.pendingHide && t.hide()), t = t.parentPopper;\n },\n $_isAimingPopper() {\n const e = this.$_referenceNode.getBoundingClientRect();\n if (y >= e.left && y <= e.right && _ >= e.top && _ <= e.bottom) {\n const t = this.$_popperNode.getBoundingClientRect(), o = y - c, i = _ - m, r = t.left + t.width / 2 - c + (t.top + t.height / 2) - m + t.width + t.height, p = c + o * r, a = m + i * r;\n return C(c, m, p, a, t.left, t.top, t.left, t.bottom) || // Left edge\n C(c, m, p, a, t.left, t.top, t.right, t.top) || // Top edge\n C(c, m, p, a, t.right, t.top, t.right, t.bottom) || // Right edge\n C(c, m, p, a, t.left, t.bottom, t.right, t.bottom);\n }\n return !1;\n }\n },\n render() {\n return this.$slots.default(this.slotData);\n }\n});\nif (typeof document < \"u\" && typeof window < \"u\") {\n if (_e) {\n const e = $ ? {\n passive: !0,\n capture: !0\n } : !0;\n document.addEventListener(\"touchstart\", (t) => ue(t, !0), e), document.addEventListener(\"touchend\", (t) => fe(t, !0), e);\n } else\n window.addEventListener(\"mousedown\", (e) => ue(e, !1), !0), window.addEventListener(\"click\", (e) => fe(e, !1), !0);\n window.addEventListener(\"resize\", tt);\n}\nfunction ue(e, t) {\n if (h.autoHideOnMousedown)\n Pe(e, t);\n else\n for (let o = 0; o < d.length; o++) {\n const i = d[o];\n try {\n i.mouseDownContains = i.popperNode().contains(e.target);\n } catch {\n }\n }\n}\nfunction fe(e, t) {\n h.autoHideOnMousedown || Pe(e, t);\n}\nfunction Pe(e, t) {\n const o = {};\n for (let i = d.length - 1; i >= 0; i--) {\n const s = d[i];\n try {\n const r = s.containsGlobalTarget = s.mouseDownContains || s.popperNode().contains(e.target);\n s.pendingHide = !1, requestAnimationFrame(() => {\n if (s.pendingHide = !1, !o[s.randomId] && ce(s, r, e)) {\n if (s.$_handleGlobalClose(e, t), !e.closeAllPopover && e.closePopover && r) {\n let a = s.parentPopper;\n for (; a; )\n o[a.randomId] = !0, a = a.parentPopper;\n return;\n }\n let p = s.parentPopper;\n for (; p && ce(p, p.containsGlobalTarget, e); ) {\n p.$_handleGlobalClose(e, t);\n p = p.parentPopper;\n }\n }\n });\n } catch {\n }\n }\n}\nfunction ce(e, t, o) {\n return o.closeAllPopover || o.closePopover && t || et(e, o) && !t;\n}\nfunction et(e, t) {\n if (typeof e.autoHide == \"function\") {\n const o = e.autoHide(t);\n return e.lastAutoHide = o, o;\n }\n return e.autoHide;\n}\nfunction tt() {\n for (let e = 0; e < d.length; e++)\n d[e].$_computePosition();\n}\nfunction Nt() {\n for (let e = 0; e < d.length; e++)\n d[e].hide();\n}\nlet c = 0, m = 0, y = 0, _ = 0;\ntypeof window < \"u\" && window.addEventListener(\"mousemove\", (e) => {\n c = y, m = _, y = e.clientX, _ = e.clientY;\n}, $ ? {\n passive: !0\n} : void 0);\nfunction C(e, t, o, i, s, r, p, a) {\n const l = ((p - s) * (t - r) - (a - r) * (e - s)) / ((a - r) * (o - e) - (p - s) * (i - t)), u = ((o - e) * (t - r) - (i - t) * (e - s)) / ((a - r) * (o - e) - (p - s) * (i - t));\n return l >= 0 && l <= 1 && u >= 0 && u <= 1;\n}\nconst ot = {\n extends: Q()\n}, B = (e, t) => {\n const o = e.__vccOpts || e;\n for (const [i, s] of t)\n o[i] = s;\n return o;\n};\nfunction it(e, t, o, i, s, r) {\n return f(), T(\"div\", {\n ref: \"reference\",\n class: J([\"v-popper\", {\n \"v-popper--shown\": e.slotData.isShown\n }])\n }, [\n A(e.$slots, \"default\", ke(Le(e.slotData)))\n ], 2);\n}\nconst st = /* @__PURE__ */ B(ot, [[\"render\", it]]);\nfunction nt() {\n var e = window.navigator.userAgent, t = e.indexOf(\"MSIE \");\n if (t > 0)\n return parseInt(e.substring(t + 5, e.indexOf(\".\", t)), 10);\n var o = e.indexOf(\"Trident/\");\n if (o > 0) {\n var i = e.indexOf(\"rv:\");\n return parseInt(e.substring(i + 3, e.indexOf(\".\", i)), 10);\n }\n var s = e.indexOf(\"Edge/\");\n return s > 0 ? parseInt(e.substring(s + 5, e.indexOf(\".\", s)), 10) : -1;\n}\nlet z;\nfunction X() {\n X.init || (X.init = !0, z = nt() !== -1);\n}\nvar E = {\n name: \"ResizeObserver\",\n props: {\n emitOnMount: {\n type: Boolean,\n default: !1\n },\n ignoreWidth: {\n type: Boolean,\n default: !1\n },\n ignoreHeight: {\n type: Boolean,\n default: !1\n }\n },\n emits: [\n \"notify\"\n ],\n mounted() {\n X(), Fe(() => {\n this._w = this.$el.offsetWidth, this._h = this.$el.offsetHeight, this.emitOnMount && this.emitSize();\n });\n const e = document.createElement(\"object\");\n this._resizeObject = e, e.setAttribute(\"aria-hidden\", \"true\"), e.setAttribute(\"tabindex\", -1), e.onload = this.addResizeHandlers, e.type = \"text/html\", z && this.$el.appendChild(e), e.data = \"about:blank\", z || this.$el.appendChild(e);\n },\n beforeUnmount() {\n this.removeResizeHandlers();\n },\n methods: {\n compareAndNotify() {\n (!this.ignoreWidth && this._w !== this.$el.offsetWidth || !this.ignoreHeight && this._h !== this.$el.offsetHeight) && (this._w = this.$el.offsetWidth, this._h = this.$el.offsetHeight, this.emitSize());\n },\n emitSize() {\n this.$emit(\"notify\", {\n width: this._w,\n height: this._h\n });\n },\n addResizeHandlers() {\n this._resizeObject.contentDocument.defaultView.addEventListener(\"resize\", this.compareAndNotify), this.compareAndNotify();\n },\n removeResizeHandlers() {\n this._resizeObject && this._resizeObject.onload && (!z && this._resizeObject.contentDocument && this._resizeObject.contentDocument.defaultView.removeEventListener(\"resize\", this.compareAndNotify), this.$el.removeChild(this._resizeObject), this._resizeObject.onload = null, this._resizeObject = null);\n }\n }\n};\nconst rt = /* @__PURE__ */ Re(\"data-v-b329ee4c\");\nDe(\"data-v-b329ee4c\");\nconst pt = {\n class: \"resize-observer\",\n tabindex: \"-1\"\n};\nIe();\nconst at = /* @__PURE__ */ rt((e, t, o, i, s, r) => (f(), M(\"div\", pt)));\nE.render = at;\nE.__scopeId = \"data-v-b329ee4c\";\nE.__file = \"src/components/ResizeObserver.vue\";\nconst Z = (e = \"theme\") => ({\n computed: {\n themeClass() {\n return Ze(this[e]);\n }\n }\n}), dt = O({\n name: \"VPopperContent\",\n components: {\n ResizeObserver: E\n },\n mixins: [\n Z()\n ],\n props: {\n popperId: String,\n theme: String,\n shown: Boolean,\n mounted: Boolean,\n skipTransition: Boolean,\n autoHide: Boolean,\n handleResize: Boolean,\n classes: Object,\n result: Object\n },\n emits: [\n \"hide\",\n \"resize\"\n ],\n methods: {\n toPx(e) {\n return e != null && !isNaN(e) ? `${e}px` : null;\n }\n }\n}), lt = [\"id\", \"aria-hidden\", \"tabindex\", \"data-popper-placement\"], ht = {\n ref: \"inner\",\n class: \"v-popper__inner\"\n}, ut = /* @__PURE__ */ w(\"div\", { class: \"v-popper__arrow-outer\" }, null, -1), ft = /* @__PURE__ */ w(\"div\", { class: \"v-popper__arrow-inner\" }, null, -1), ct = [\n ut,\n ft\n];\nfunction mt(e, t, o, i, s, r) {\n const p = P(\"ResizeObserver\");\n return f(), T(\"div\", {\n id: e.popperId,\n ref: \"popover\",\n class: J([\"v-popper__popper\", [\n e.themeClass,\n e.classes.popperClass,\n {\n \"v-popper__popper--shown\": e.shown,\n \"v-popper__popper--hidden\": !e.shown,\n \"v-popper__popper--show-from\": e.classes.showFrom,\n \"v-popper__popper--show-to\": e.classes.showTo,\n \"v-popper__popper--hide-from\": e.classes.hideFrom,\n \"v-popper__popper--hide-to\": e.classes.hideTo,\n \"v-popper__popper--skip-transition\": e.skipTransition,\n \"v-popper__popper--arrow-overflow\": e.result && e.result.arrow.overflow,\n \"v-popper__popper--no-positioning\": !e.result\n }\n ]]),\n style: W(e.result ? {\n position: e.result.strategy,\n transform: `translate3d(${Math.round(e.result.x)}px,${Math.round(e.result.y)}px,0)`\n } : void 0),\n \"aria-hidden\": e.shown ? \"false\" : \"true\",\n tabindex: e.autoHide ? 0 : void 0,\n \"data-popper-placement\": e.result ? e.result.placement : void 0,\n onKeyup: t[2] || (t[2] = je((a) => e.autoHide && e.$emit(\"hide\"), [\"esc\"]))\n }, [\n w(\"div\", {\n class: \"v-popper__backdrop\",\n onClick: t[0] || (t[0] = (a) => e.autoHide && e.$emit(\"hide\"))\n }),\n w(\"div\", {\n class: \"v-popper__wrapper\",\n style: W(e.result ? {\n transformOrigin: e.result.transformOrigin\n } : void 0)\n }, [\n w(\"div\", ht, [\n e.mounted ? (f(), T(Ve, { key: 0 }, [\n w(\"div\", null, [\n A(e.$slots, \"default\")\n ]),\n e.handleResize ? (f(), M(p, {\n key: 0,\n onNotify: t[1] || (t[1] = (a) => e.$emit(\"resize\", a))\n })) : se(\"\", !0)\n ], 64)) : se(\"\", !0)\n ], 512),\n w(\"div\", {\n ref: \"arrow\",\n class: \"v-popper__arrow-container\",\n style: W(e.result ? {\n left: e.toPx(e.result.arrow.x),\n top: e.toPx(e.result.arrow.y)\n } : void 0)\n }, ct, 4)\n ], 4)\n ], 46, lt);\n}\nconst ee = /* @__PURE__ */ B(dt, [[\"render\", mt]]), te = {\n methods: {\n show(...e) {\n return this.$refs.popper.show(...e);\n },\n hide(...e) {\n return this.$refs.popper.hide(...e);\n },\n dispose(...e) {\n return this.$refs.popper.dispose(...e);\n },\n onResize(...e) {\n return this.$refs.popper.onResize(...e);\n }\n }\n};\nlet K = function() {\n};\ntypeof window < \"u\" && (K = window.Element);\nconst gt = O({\n name: \"VPopperWrapper\",\n components: {\n Popper: st,\n PopperContent: ee\n },\n mixins: [\n te,\n Z(\"finalTheme\")\n ],\n props: {\n theme: {\n type: String,\n default: null\n },\n referenceNode: {\n type: Function,\n default: null\n },\n shown: {\n type: Boolean,\n default: !1\n },\n showGroup: {\n type: String,\n default: null\n },\n // eslint-disable-next-line vue/require-prop-types\n ariaId: {\n default: null\n },\n disabled: {\n type: Boolean,\n default: void 0\n },\n positioningDisabled: {\n type: Boolean,\n default: void 0\n },\n placement: {\n type: String,\n default: void 0\n },\n delay: {\n type: [String, Number, Object],\n default: void 0\n },\n distance: {\n type: [Number, String],\n default: void 0\n },\n skidding: {\n type: [Number, String],\n default: void 0\n },\n triggers: {\n type: Array,\n default: void 0\n },\n showTriggers: {\n type: [Array, Function],\n default: void 0\n },\n hideTriggers: {\n type: [Array, Function],\n default: void 0\n },\n popperTriggers: {\n type: Array,\n default: void 0\n },\n popperShowTriggers: {\n type: [Array, Function],\n default: void 0\n },\n popperHideTriggers: {\n type: [Array, Function],\n default: void 0\n },\n container: {\n type: [String, Object, K, Boolean],\n default: void 0\n },\n boundary: {\n type: [String, K],\n default: void 0\n },\n strategy: {\n type: String,\n default: void 0\n },\n autoHide: {\n type: [Boolean, Function],\n default: void 0\n },\n handleResize: {\n type: Boolean,\n default: void 0\n },\n instantMove: {\n type: Boolean,\n default: void 0\n },\n eagerMount: {\n type: Boolean,\n default: void 0\n },\n popperClass: {\n type: [String, Array, Object],\n default: void 0\n },\n computeTransformOrigin: {\n type: Boolean,\n default: void 0\n },\n /**\n * @deprecated\n */\n autoMinSize: {\n type: Boolean,\n default: void 0\n },\n autoSize: {\n type: [Boolean, String],\n default: void 0\n },\n /**\n * @deprecated\n */\n autoMaxSize: {\n type: Boolean,\n default: void 0\n },\n autoBoundaryMaxSize: {\n type: Boolean,\n default: void 0\n },\n preventOverflow: {\n type: Boolean,\n default: void 0\n },\n overflowPadding: {\n type: [Number, String],\n default: void 0\n },\n arrowPadding: {\n type: [Number, String],\n default: void 0\n },\n arrowOverflow: {\n type: Boolean,\n default: void 0\n },\n flip: {\n type: Boolean,\n default: void 0\n },\n shift: {\n type: Boolean,\n default: void 0\n },\n shiftCrossAxis: {\n type: Boolean,\n default: void 0\n },\n noAutoFocus: {\n type: Boolean,\n default: void 0\n },\n disposeTimeout: {\n type: Number,\n default: void 0\n }\n },\n emits: {\n show: () => !0,\n hide: () => !0,\n \"update:shown\": (e) => !0,\n \"apply-show\": () => !0,\n \"apply-hide\": () => !0,\n \"close-group\": () => !0,\n \"close-directive\": () => !0,\n \"auto-hide\": () => !0,\n resize: () => !0\n },\n computed: {\n finalTheme() {\n return this.theme ?? this.$options.vPopperTheme;\n }\n },\n methods: {\n getTargetNodes() {\n return Array.from(this.$el.children).filter((e) => e !== this.$refs.popperContent.$el);\n }\n }\n});\nfunction wt(e, t, o, i, s, r) {\n const p = P(\"PopperContent\"), a = P(\"Popper\");\n return f(), M(a, $e({ ref: \"popper\" }, e.$props, {\n theme: e.finalTheme,\n \"target-nodes\": e.getTargetNodes,\n \"popper-node\": () => e.$refs.popperContent.$el,\n class: [\n e.themeClass\n ],\n onShow: t[0] || (t[0] = () => e.$emit(\"show\")),\n onHide: t[1] || (t[1] = () => e.$emit(\"hide\")),\n \"onUpdate:shown\": t[2] || (t[2] = (l) => e.$emit(\"update:shown\", l)),\n onApplyShow: t[3] || (t[3] = () => e.$emit(\"apply-show\")),\n onApplyHide: t[4] || (t[4] = () => e.$emit(\"apply-hide\")),\n onCloseGroup: t[5] || (t[5] = () => e.$emit(\"close-group\")),\n onCloseDirective: t[6] || (t[6] = () => e.$emit(\"close-directive\")),\n onAutoHide: t[7] || (t[7] = () => e.$emit(\"auto-hide\")),\n onResize: t[8] || (t[8] = () => e.$emit(\"resize\"))\n }), {\n default: N(({\n popperId: l,\n isShown: u,\n shouldMountContent: L,\n skipTransition: D,\n autoHide: I,\n show: F,\n hide: v,\n handleResize: R,\n onResize: j,\n classes: V,\n result: Ee\n }) => [\n A(e.$slots, \"default\", {\n shown: u,\n show: F,\n hide: v\n }),\n ve(p, {\n ref: \"popperContent\",\n \"popper-id\": l,\n theme: e.finalTheme,\n shown: u,\n mounted: L,\n \"skip-transition\": D,\n \"auto-hide\": I,\n \"handle-resize\": R,\n classes: V,\n result: Ee,\n onHide: v,\n onResize: j\n }, {\n default: N(() => [\n A(e.$slots, \"popper\", {\n shown: u,\n hide: v\n })\n ]),\n _: 2\n }, 1032, [\"popper-id\", \"theme\", \"shown\", \"mounted\", \"skip-transition\", \"auto-hide\", \"handle-resize\", \"classes\", \"result\", \"onHide\", \"onResize\"])\n ]),\n _: 3\n }, 16, [\"theme\", \"target-nodes\", \"popper-node\", \"class\"]);\n}\nconst k = /* @__PURE__ */ B(gt, [[\"render\", wt]]), Se = {\n ...k,\n name: \"VDropdown\",\n vPopperTheme: \"dropdown\"\n}, be = {\n ...k,\n name: \"VMenu\",\n vPopperTheme: \"menu\"\n}, Ce = {\n ...k,\n name: \"VTooltip\",\n vPopperTheme: \"tooltip\"\n}, $t = O({\n name: \"VTooltipDirective\",\n components: {\n Popper: Q(),\n PopperContent: ee\n },\n mixins: [\n te\n ],\n inheritAttrs: !1,\n props: {\n theme: {\n type: String,\n default: \"tooltip\"\n },\n html: {\n type: Boolean,\n default: (e) => S(e.theme, \"html\")\n },\n content: {\n type: [String, Number, Function],\n default: null\n },\n loadingContent: {\n type: String,\n default: (e) => S(e.theme, \"loadingContent\")\n },\n targetNodes: {\n type: Function,\n required: !0\n }\n },\n data() {\n return {\n asyncContent: null\n };\n },\n computed: {\n isContentAsync() {\n return typeof this.content == \"function\";\n },\n loading() {\n return this.isContentAsync && this.asyncContent == null;\n },\n finalContent() {\n return this.isContentAsync ? this.loading ? this.loadingContent : this.asyncContent : this.content;\n }\n },\n watch: {\n content: {\n handler() {\n this.fetchContent(!0);\n },\n immediate: !0\n },\n async finalContent() {\n await this.$nextTick(), this.$refs.popper.onResize();\n }\n },\n created() {\n this.$_fetchId = 0;\n },\n methods: {\n fetchContent(e) {\n if (typeof this.content == \"function\" && this.$_isShown && (e || !this.$_loading && this.asyncContent == null)) {\n this.asyncContent = null, this.$_loading = !0;\n const t = ++this.$_fetchId, o = this.content(this);\n o.then ? o.then((i) => this.onResult(t, i)) : this.onResult(t, o);\n }\n },\n onResult(e, t) {\n e === this.$_fetchId && (this.$_loading = !1, this.asyncContent = t);\n },\n onShow() {\n this.$_isShown = !0, this.fetchContent();\n },\n onHide() {\n this.$_isShown = !1;\n }\n }\n}), vt = [\"innerHTML\"], yt = [\"textContent\"];\nfunction _t(e, t, o, i, s, r) {\n const p = P(\"PopperContent\"), a = P(\"Popper\");\n return f(), M(a, $e({ ref: \"popper\" }, e.$attrs, {\n theme: e.theme,\n \"target-nodes\": e.targetNodes,\n \"popper-node\": () => e.$refs.popperContent.$el,\n onApplyShow: e.onShow,\n onApplyHide: e.onHide\n }), {\n default: N(({\n popperId: l,\n isShown: u,\n shouldMountContent: L,\n skipTransition: D,\n autoHide: I,\n hide: F,\n handleResize: v,\n onResize: R,\n classes: j,\n result: V\n }) => [\n ve(p, {\n ref: \"popperContent\",\n class: J({\n \"v-popper--tooltip-loading\": e.loading\n }),\n \"popper-id\": l,\n theme: e.theme,\n shown: u,\n mounted: L,\n \"skip-transition\": D,\n \"auto-hide\": I,\n \"handle-resize\": v,\n classes: j,\n result: V,\n onHide: F,\n onResize: R\n }, {\n default: N(() => [\n e.html ? (f(), T(\"div\", {\n key: 0,\n innerHTML: e.finalContent\n }, null, 8, vt)) : (f(), T(\"div\", {\n key: 1,\n textContent: We(e.finalContent)\n }, null, 8, yt))\n ]),\n _: 2\n }, 1032, [\"class\", \"popper-id\", \"theme\", \"shown\", \"mounted\", \"skip-transition\", \"auto-hide\", \"handle-resize\", \"classes\", \"result\", \"onHide\", \"onResize\"])\n ]),\n _: 1\n }, 16, [\"theme\", \"target-nodes\", \"popper-node\", \"onApplyShow\", \"onApplyHide\"]);\n}\nconst ze = /* @__PURE__ */ B($t, [[\"render\", _t]]), Ae = \"v-popper--has-tooltip\";\nfunction Tt(e, t) {\n let o = e.placement;\n if (!o && t)\n for (const i of Te)\n t[i] && (o = i);\n return o || (o = S(e.theme || \"tooltip\", \"placement\")), o;\n}\nfunction Ne(e, t, o) {\n let i;\n const s = typeof t;\n return s === \"string\" ? i = { content: t } : t && s === \"object\" ? i = t : i = { content: !1 }, i.placement = Tt(i, o), i.targetNodes = () => [e], i.referenceNode = () => e, i;\n}\nlet x, b, Pt = 0;\nfunction St() {\n if (x)\n return;\n b = U([]), x = Ge({\n name: \"VTooltipDirectiveApp\",\n setup() {\n return {\n directives: b\n };\n },\n render() {\n return this.directives.map((t) => qe(ze, {\n ...t.options,\n shown: t.shown || t.options.shown,\n key: t.id\n }));\n },\n devtools: {\n hide: !0\n }\n });\n const e = document.createElement(\"div\");\n document.body.appendChild(e), x.mount(e);\n}\nfunction bt(e, t, o) {\n St();\n const i = U(Ne(e, t, o)), s = U(!1), r = {\n id: Pt++,\n options: i,\n shown: s\n };\n return b.value.push(r), e.classList && e.classList.add(Ae), e.$_popper = {\n options: i,\n item: r,\n show() {\n s.value = !0;\n },\n hide() {\n s.value = !1;\n }\n };\n}\nfunction He(e) {\n if (e.$_popper) {\n const t = b.value.indexOf(e.$_popper.item);\n t !== -1 && b.value.splice(t, 1), delete e.$_popper, delete e.$_popperOldShown, delete e.$_popperMountTarget;\n }\n e.classList && e.classList.remove(Ae);\n}\nfunction me(e, { value: t, modifiers: o }) {\n const i = Ne(e, t, o);\n if (!i.content || S(i.theme || \"tooltip\", \"disabled\"))\n He(e);\n else {\n let s;\n e.$_popper ? (s = e.$_popper, s.options.value = i) : s = bt(e, t, o), typeof t.shown < \"u\" && t.shown !== e.$_popperOldShown && (e.$_popperOldShown = t.shown, t.shown ? s.show() : s.hide());\n }\n}\nconst oe = {\n beforeMount: me,\n updated: me,\n beforeUnmount(e) {\n He(e);\n }\n};\nfunction ge(e) {\n e.addEventListener(\"mousedown\", H), e.addEventListener(\"click\", H), e.addEventListener(\"touchstart\", Oe, $ ? {\n passive: !0\n } : !1);\n}\nfunction we(e) {\n e.removeEventListener(\"mousedown\", H), e.removeEventListener(\"click\", H), e.removeEventListener(\"touchstart\", Oe), e.removeEventListener(\"touchend\", Me), e.removeEventListener(\"touchcancel\", Be);\n}\nfunction H(e) {\n const t = e.currentTarget;\n e.closePopover = !t.$_vclosepopover_touch, e.closeAllPopover = t.$_closePopoverModifiers && !!t.$_closePopoverModifiers.all;\n}\nfunction Oe(e) {\n if (e.changedTouches.length === 1) {\n const t = e.currentTarget;\n t.$_vclosepopover_touch = !0;\n const o = e.changedTouches[0];\n t.$_vclosepopover_touchPoint = o, t.addEventListener(\"touchend\", Me), t.addEventListener(\"touchcancel\", Be);\n }\n}\nfunction Me(e) {\n const t = e.currentTarget;\n if (t.$_vclosepopover_touch = !1, e.changedTouches.length === 1) {\n const o = e.changedTouches[0], i = t.$_vclosepopover_touchPoint;\n e.closePopover = Math.abs(o.screenY - i.screenY) < 20 && Math.abs(o.screenX - i.screenX) < 20, e.closeAllPopover = t.$_closePopoverModifiers && !!t.$_closePopoverModifiers.all;\n }\n}\nfunction Be(e) {\n const t = e.currentTarget;\n t.$_vclosepopover_touch = !1;\n}\nconst ie = {\n beforeMount(e, { value: t, modifiers: o }) {\n e.$_closePopoverModifiers = o, (typeof t > \"u\" || t) && ge(e);\n },\n updated(e, { value: t, oldValue: o, modifiers: i }) {\n e.$_closePopoverModifiers = i, t !== o && (typeof t > \"u\" || t ? ge(e) : we(e));\n },\n beforeUnmount(e) {\n we(e);\n }\n}, Ht = h, Ot = oe, Mt = oe, Bt = ie, Et = ie, kt = Se, Lt = be, Dt = Q, It = ee, Ft = te, Rt = k, jt = Z, Vt = Ce, Wt = ze;\nfunction Ct(e, t = {}) {\n e.$_vTooltipInstalled || (e.$_vTooltipInstalled = !0, ye(h, t), e.directive(\"tooltip\", oe), e.directive(\"close-popper\", ie), e.component(\"VTooltip\", Ce), e.component(\"VDropdown\", Se), e.component(\"VMenu\", be));\n}\nconst Gt = {\n // eslint-disable-next-line no-undef\n version: \"5.2.2\",\n install: Ct,\n options: h\n};\nexport {\n kt as Dropdown,\n ae as HIDE_EVENT_MAP,\n Lt as Menu,\n Dt as Popper,\n It as PopperContent,\n Ft as PopperMethods,\n Rt as PopperWrapper,\n pe as SHOW_EVENT_MAP,\n jt as ThemeClass,\n Vt as Tooltip,\n Wt as TooltipDirective,\n Bt as VClosePopper,\n Ot as VTooltip,\n bt as createTooltip,\n Gt as default,\n He as destroyTooltip,\n Nt as hideAllPoppers,\n Ct as install,\n Ht as options,\n Te as placements,\n tt as recomputeAllPoppers,\n Et as vClosePopper,\n Mt as vTooltip\n};\n","/*!\n* tabbable 6.5.0\n* @license MIT, https://github.com/focus-trap/tabbable/blob/master/LICENSE\n*/\n// NOTE: separate `:not()` selectors has broader browser support than the newer\n// `:not([inert], [inert] *)` (Feb 2023)\nvar candidateSelectors = ['input:not([inert]):not([inert] *)', 'select:not([inert]):not([inert] *)', 'textarea:not([inert]):not([inert] *)', 'a[href]:not([inert]):not([inert] *)', 'area[href]:not([inert]):not([inert] *)', 'button:not([inert]):not([inert] *)', '[tabindex]:not(slot):not([inert]):not([inert] *)', 'audio[controls]:not([inert]):not([inert] *)', 'video[controls]:not([inert]):not([inert] *)', '[contenteditable]:not([contenteditable=\"false\"]):not([inert]):not([inert] *)', 'details>summary:first-of-type:not([inert]):not([inert] *)', 'details:not([inert]):not([inert] *)'];\nvar candidateSelector = /* #__PURE__ */candidateSelectors.join(',');\nvar NoElement = typeof Element === 'undefined';\nvar matches = NoElement ? function () {} : Element.prototype.matches || Element.prototype.msMatchesSelector || Element.prototype.webkitMatchesSelector;\nvar getRootNode = !NoElement && Element.prototype.getRootNode ? function (element) {\n var _element$getRootNode;\n return element === null || element === void 0 ? void 0 : (_element$getRootNode = element.getRootNode) === null || _element$getRootNode === void 0 ? void 0 : _element$getRootNode.call(element);\n} : function (element) {\n return element === null || element === void 0 ? void 0 : element.ownerDocument;\n};\n\n/**\n * Determines if a node is inert or in an inert ancestor.\n * @param {Node} [node]\n * @param {boolean} [lookUp] If true and `node` is not inert, looks up at ancestors to\n * see if any of them are inert. If false, only `node` itself is considered.\n * @returns {boolean} True if inert itself or by way of being in an inert ancestor.\n * False if `node` is falsy.\n */\nvar _isInert = function isInert(node, lookUp) {\n var _node$getAttribute;\n if (lookUp === void 0) {\n lookUp = true;\n }\n // CAREFUL: JSDom does not support inert at all, so we can't use the `HTMLElement.inert`\n // JS API property; we have to check the attribute, which can either be empty or 'true';\n // if it's `null` (not specified) or 'false', it's an active element\n var inertAtt = node === null || node === void 0 ? void 0 : (_node$getAttribute = node.getAttribute) === null || _node$getAttribute === void 0 ? void 0 : _node$getAttribute.call(node, 'inert');\n var inert = inertAtt === '' || inertAtt === 'true';\n\n // NOTE: this could also be handled with `node.matches('[inert], :is([inert] *)')`\n // if it weren't for `matches()` not being a function on shadow roots; the following\n // code works for any kind of node\n var result = inert || lookUp && node && (\n // closest does not exist on shadow roots, so we fall back to a manual\n // lookup upward, in case it is not defined.\n typeof node.closest === 'function' ? node.closest('[inert]') : _isInert(node.parentNode));\n return result;\n};\n\n/**\n * Determines if a node's content is editable.\n * @param {Element} [node]\n * @returns True if it's content-editable; false if it's not or `node` is falsy.\n */\nvar isContentEditable = function isContentEditable(node) {\n var _node$getAttribute2;\n // CAREFUL: JSDom does not support the `HTMLElement.isContentEditable` API so we have\n // to use the attribute directly to check for this, which can either be empty or 'true';\n // if it's `null` (not specified) or 'false', it's a non-editable element\n var attValue = node === null || node === void 0 ? void 0 : (_node$getAttribute2 = node.getAttribute) === null || _node$getAttribute2 === void 0 ? void 0 : _node$getAttribute2.call(node, 'contenteditable');\n return attValue === '' || attValue === 'true';\n};\n\n/**\n * @param {Element} el container to check in\n * @param {boolean} includeContainer add container to check\n * @param {(node: Element) => boolean} filter filter candidates\n * @returns {Element[]}\n */\nvar getCandidates = function getCandidates(el, includeContainer, filter) {\n // even if `includeContainer=false`, we still have to check it for inertness because\n // if it's inert (either by itself or via its parent), then all its children are inert\n if (_isInert(el)) {\n return [];\n }\n var candidates = Array.prototype.slice.apply(el.querySelectorAll(candidateSelector));\n if (includeContainer && matches.call(el, candidateSelector)) {\n candidates.unshift(el);\n }\n candidates = candidates.filter(filter);\n return candidates;\n};\n\n/**\n * @callback GetShadowRoot\n * @param {Element} element to check for shadow root\n * @returns {ShadowRoot|boolean} ShadowRoot if available or boolean indicating if a shadowRoot is attached but not available.\n */\n\n/**\n * @callback ShadowRootFilter\n * @param {Element} shadowHostNode the element which contains shadow content\n * @returns {boolean} true if a shadow root could potentially contain valid candidates.\n */\n\n/**\n * @typedef {Object} CandidateScope\n * @property {Element} scopeParent contains inner candidates\n * @property {Element[]} candidates list of candidates found in the scope parent\n */\n\n/**\n * @typedef {Object} IterativeOptions\n * @property {GetShadowRoot|boolean} getShadowRoot true if shadow support is enabled; falsy if not;\n * if a function, implies shadow support is enabled and either returns the shadow root of an element\n * or a boolean stating if it has an undisclosed shadow root\n * @property {(node: Element) => boolean} filter filter candidates\n * @property {boolean} flatten if true then result will flatten any CandidateScope into the returned list\n * @property {ShadowRootFilter} shadowRootFilter filter shadow roots;\n */\n\n/**\n * @param {Element[]} elements list of element containers to match candidates from\n * @param {boolean} includeContainer add container list to check\n * @param {IterativeOptions} options\n * @returns {Array.<Element|CandidateScope>}\n */\nvar _getCandidatesIteratively = function getCandidatesIteratively(elements, includeContainer, options) {\n var candidates = [];\n var elementsToCheck = Array.from(elements);\n while (elementsToCheck.length) {\n var element = elementsToCheck.shift();\n if (_isInert(element, false)) {\n // no need to look up since we're drilling down\n // anything inside this container will also be inert\n continue;\n }\n if (element.tagName === 'SLOT') {\n // add shadow dom slot scope (slot itself cannot be focusable)\n var assigned = element.assignedElements();\n var content = assigned.length ? assigned : element.children;\n var nestedCandidates = _getCandidatesIteratively(content, true, options);\n if (options.flatten) {\n candidates.push.apply(candidates, nestedCandidates);\n } else {\n candidates.push({\n scopeParent: element,\n candidates: nestedCandidates\n });\n }\n } else {\n // check candidate element\n var validCandidate = matches.call(element, candidateSelector);\n if (validCandidate && options.filter(element) && (includeContainer || !elements.includes(element))) {\n candidates.push(element);\n }\n\n // iterate over shadow content if possible\n var shadowRoot = element.shadowRoot ||\n // check for an undisclosed shadow\n typeof options.getShadowRoot === 'function' && options.getShadowRoot(element);\n\n // no inert look up because we're already drilling down and checking for inertness\n // on the way down, so all containers to this root node should have already been\n // vetted as non-inert\n var validShadowRoot = !_isInert(shadowRoot, false) && (!options.shadowRootFilter || options.shadowRootFilter(element));\n if (shadowRoot && validShadowRoot) {\n // add shadow dom scope IIF a shadow root node was given; otherwise, an undisclosed\n // shadow exists, so look at light dom children as fallback BUT create a scope for any\n // child candidates found because they're likely slotted elements (elements that are\n // children of the web component element (which has the shadow), in the light dom, but\n // slotted somewhere _inside_ the undisclosed shadow) -- the scope is created below,\n // _after_ we return from this recursive call\n var _nestedCandidates = _getCandidatesIteratively(shadowRoot === true ? element.children : shadowRoot.children, true, options);\n if (options.flatten) {\n candidates.push.apply(candidates, _nestedCandidates);\n } else {\n candidates.push({\n scopeParent: element,\n candidates: _nestedCandidates\n });\n }\n } else {\n // there's not shadow so just dig into the element's (light dom) children\n // __without__ giving the element special scope treatment\n elementsToCheck.unshift.apply(elementsToCheck, element.children);\n }\n }\n }\n return candidates;\n};\n\n/**\n * @private\n * Determines if the node has an explicitly specified `tabindex` attribute.\n * @param {HTMLElement} node\n * @returns {boolean} True if so; false if not.\n */\nvar hasTabIndex = function hasTabIndex(node) {\n return !isNaN(parseInt(node.getAttribute('tabindex'), 10));\n};\n\n/**\n * Determine the tab index of a given node.\n * @param {HTMLElement} node\n * @returns {number} Tab order (negative, 0, or positive number).\n * @throws {Error} If `node` is falsy.\n */\nvar getTabIndex = function getTabIndex(node) {\n if (!node) {\n throw new Error('No node provided');\n }\n if (node.tabIndex < 0) {\n // in Chrome, <details/>, <audio controls/> and <video controls/> elements get a default\n // `tabIndex` of -1 when the 'tabindex' attribute isn't specified in the DOM,\n // yet they are still part of the regular tab order; in FF, they get a default\n // `tabIndex` of 0; since Chrome still puts those elements in the regular tab\n // order, consider their tab index to be 0.\n // Also browsers do not return `tabIndex` correctly for contentEditable nodes;\n // so if they don't have a tabindex attribute specifically set, assume it's 0.\n if ((/^(AUDIO|VIDEO|DETAILS)$/.test(node.tagName) || isContentEditable(node)) && !hasTabIndex(node)) {\n return 0;\n }\n }\n return node.tabIndex;\n};\n\n/**\n * Determine the tab index of a given node __for sort order purposes__.\n * @param {HTMLElement} node\n * @param {boolean} [isScope] True for a custom element with shadow root or slot that, by default,\n * has tabIndex -1, but needs to be sorted by document order in order for its content to be\n * inserted into the correct sort position.\n * @returns {number} Tab order (negative, 0, or positive number).\n */\nvar getSortOrderTabIndex = function getSortOrderTabIndex(node, isScope) {\n var tabIndex = getTabIndex(node);\n if (tabIndex < 0 && isScope && !hasTabIndex(node)) {\n return 0;\n }\n return tabIndex;\n};\nvar sortOrderedTabbables = function sortOrderedTabbables(a, b) {\n return a.tabIndex === b.tabIndex ? a.documentOrder - b.documentOrder : a.tabIndex - b.tabIndex;\n};\nvar isInput = function isInput(node) {\n return node.tagName === 'INPUT';\n};\nvar isHiddenInput = function isHiddenInput(node) {\n return isInput(node) && node.type === 'hidden';\n};\nvar isDetailsWithSummary = function isDetailsWithSummary(node) {\n var r = node.tagName === 'DETAILS' && Array.prototype.slice.apply(node.children).some(function (child) {\n return child.tagName === 'SUMMARY';\n });\n return r;\n};\nvar getCheckedRadio = function getCheckedRadio(nodes, form) {\n for (var i = 0; i < nodes.length; i++) {\n if (nodes[i].checked && nodes[i].form === form) {\n return nodes[i];\n }\n }\n};\nvar isTabbableRadio = function isTabbableRadio(node) {\n if (!node.name) {\n return true;\n }\n var radioScope = node.form || getRootNode(node);\n var queryRadios = function queryRadios(name) {\n return radioScope.querySelectorAll('input[type=\"radio\"][name=\"' + name + '\"]');\n };\n var radioSet;\n if (typeof window !== 'undefined' && typeof window.CSS !== 'undefined' && typeof window.CSS.escape === 'function') {\n radioSet = queryRadios(window.CSS.escape(node.name));\n } else {\n try {\n radioSet = queryRadios(node.name);\n } catch (err) {\n // eslint-disable-next-line no-console\n console.error('Looks like you have a radio button with a name attribute containing invalid CSS selector characters and need the CSS.escape polyfill: %s', err.message);\n return false;\n }\n }\n var checked = getCheckedRadio(radioSet, node.form);\n return !checked || checked === node;\n};\nvar isRadio = function isRadio(node) {\n return isInput(node) && node.type === 'radio';\n};\nvar isNonTabbableRadio = function isNonTabbableRadio(node) {\n return isRadio(node) && !isTabbableRadio(node);\n};\n\n// determines if a node is ultimately attached to the window's document\nvar isNodeAttached = function isNodeAttached(node) {\n var _nodeRoot;\n // The root node is the shadow root if the node is in a shadow DOM; some document otherwise\n // (but NOT _the_ document; see second 'If' comment below for more).\n // If rootNode is shadow root, it'll have a host, which is the element to which the shadow\n // is attached, and the one we need to check if it's in the document or not (because the\n // shadow, and all nodes it contains, is never considered in the document since shadows\n // behave like self-contained DOMs; but if the shadow's HOST, which is part of the document,\n // is hidden, or is not in the document itself but is detached, it will affect the shadow's\n // visibility, including all the nodes it contains). The host could be any normal node,\n // or a custom element (i.e. web component). Either way, that's the one that is considered\n // part of the document, not the shadow root, nor any of its children (i.e. the node being\n // tested).\n // To further complicate things, we have to look all the way up until we find a shadow HOST\n // that is attached (or find none) because the node might be in nested shadows...\n // If rootNode is not a shadow root, it won't have a host, and so rootNode should be the\n // document (per the docs) and while it's a Document-type object, that document does not\n // appear to be the same as the node's `ownerDocument` for some reason, so it's safer\n // to ignore the rootNode at this point, and use `node.ownerDocument`. Otherwise,\n // using `rootNode.contains(node)` will _always_ be true we'll get false-positives when\n // node is actually detached.\n // NOTE: If `nodeRootHost` or `node` happens to be the `document` itself (which is possible\n // if a tabbable/focusable node was quickly added to the DOM, focused, and then removed\n // from the DOM as in https://github.com/focus-trap/focus-trap-react/issues/905), then\n // `ownerDocument` will be `null`, hence the optional chaining on it.\n var nodeRoot = node && getRootNode(node);\n var nodeRootHost = (_nodeRoot = nodeRoot) === null || _nodeRoot === void 0 ? void 0 : _nodeRoot.host;\n\n // in some cases, a detached node will return itself as the root instead of a document or\n // shadow root object, in which case, we shouldn't try to look further up the host chain\n var attached = false;\n if (nodeRoot && nodeRoot !== node) {\n var _nodeRootHost, _nodeRootHost$ownerDo, _node$ownerDocument;\n attached = !!((_nodeRootHost = nodeRootHost) !== null && _nodeRootHost !== void 0 && (_nodeRootHost$ownerDo = _nodeRootHost.ownerDocument) !== null && _nodeRootHost$ownerDo !== void 0 && _nodeRootHost$ownerDo.contains(nodeRootHost) || node !== null && node !== void 0 && (_node$ownerDocument = node.ownerDocument) !== null && _node$ownerDocument !== void 0 && _node$ownerDocument.contains(node));\n while (!attached && nodeRootHost) {\n var _nodeRoot2, _nodeRootHost2, _nodeRootHost2$ownerD;\n // since it's not attached and we have a root host, the node MUST be in a nested shadow DOM,\n // which means we need to get the host's host and check if that parent host is contained\n // in (i.e. attached to) the document\n nodeRoot = getRootNode(nodeRootHost);\n nodeRootHost = (_nodeRoot2 = nodeRoot) === null || _nodeRoot2 === void 0 ? void 0 : _nodeRoot2.host;\n attached = !!((_nodeRootHost2 = nodeRootHost) !== null && _nodeRootHost2 !== void 0 && (_nodeRootHost2$ownerD = _nodeRootHost2.ownerDocument) !== null && _nodeRootHost2$ownerD !== void 0 && _nodeRootHost2$ownerD.contains(nodeRootHost));\n }\n }\n return attached;\n};\nvar isZeroArea = function isZeroArea(node) {\n var _node$getBoundingClie = node.getBoundingClientRect(),\n width = _node$getBoundingClie.width,\n height = _node$getBoundingClie.height;\n return width === 0 && height === 0;\n};\nvar isHidden = function isHidden(node, _ref) {\n var displayCheck = _ref.displayCheck,\n getShadowRoot = _ref.getShadowRoot;\n if (displayCheck === 'full-native') {\n if ('checkVisibility' in node) {\n // Chrome >= 105, Edge >= 105, Firefox >= 106, Safari >= 17.4\n // @see https://developer.mozilla.org/en-US/docs/Web/API/Element/checkVisibility#browser_compatibility\n var visible = node.checkVisibility({\n // Checking opacity might be desirable for some use cases, but natively,\n // opacity zero elements _are_ focusable and tabbable.\n checkOpacity: false,\n opacityProperty: false,\n contentVisibilityAuto: true,\n visibilityProperty: true,\n // This is an alias for `visibilityProperty`. Contemporary browsers\n // support both. However, this alias has wider browser support (Chrome\n // >= 105 and Firefox >= 106, vs. Chrome >= 121 and Firefox >= 122), so\n // we include it anyway.\n checkVisibilityCSS: true\n });\n return !visible;\n }\n // Fall through to manual visibility checks\n }\n\n // NOTE: visibility will be `undefined` if node is detached from the document\n // (see notes about this further down), which means we will consider it visible\n // (this is legacy behavior from a very long way back)\n // NOTE: we check this regardless of `displayCheck=\"none\"` because this is a\n // _visibility_ check, not a _display_ check\n var _getComputedStyle = getComputedStyle(node),\n visibility = _getComputedStyle.visibility;\n if (visibility === 'hidden' || visibility === 'collapse') {\n return true;\n }\n var isDirectSummary = matches.call(node, 'details>summary:first-of-type');\n var nodeUnderDetails = isDirectSummary ? node.parentElement : node;\n if (matches.call(nodeUnderDetails, 'details:not([open]) *')) {\n return true;\n }\n if (!displayCheck || displayCheck === 'full' ||\n // full-native can run this branch when it falls through in case\n // Element#checkVisibility is unsupported\n displayCheck === 'full-native' || displayCheck === 'legacy-full') {\n if (typeof getShadowRoot === 'function') {\n // figure out if we should consider the node to be in an undisclosed shadow and use the\n // 'non-zero-area' fallback\n var originalNode = node;\n while (node) {\n var parentElement = node.parentElement;\n var rootNode = getRootNode(node);\n if (parentElement && !parentElement.shadowRoot && getShadowRoot(parentElement) === true // check if there's an undisclosed shadow\n ) {\n // node has an undisclosed shadow which means we can only treat it as a black box, so we\n // fall back to a non-zero-area test\n return isZeroArea(node);\n } else if (node.assignedSlot) {\n // iterate up slot\n node = node.assignedSlot;\n } else if (!parentElement && rootNode !== node.ownerDocument) {\n // cross shadow boundary\n node = rootNode.host;\n } else {\n // iterate up normal dom\n node = parentElement;\n }\n }\n node = originalNode;\n }\n // else, `getShadowRoot` might be true, but all that does is enable shadow DOM support\n // (i.e. it does not also presume that all nodes might have undisclosed shadows); or\n // it might be a falsy value, which means shadow DOM support is disabled\n\n // Since we didn't find it sitting in an undisclosed shadow (or shadows are disabled)\n // now we can just test to see if it would normally be visible or not, provided it's\n // attached to the main document.\n // NOTE: We must consider case where node is inside a shadow DOM and given directly to\n // `isTabbable()` or `isFocusable()` -- regardless of `getShadowRoot` option setting.\n\n if (isNodeAttached(node)) {\n // this works wherever the node is: if there's at least one client rect, it's\n // somehow displayed; it also covers the CSS 'display: contents' case where the\n // node itself is hidden in place of its contents; and there's no need to search\n // up the hierarchy either\n return !node.getClientRects().length;\n }\n\n // Else, the node isn't attached to the document, which means the `getClientRects()`\n // API will __always__ return zero rects (this can happen, for example, if React\n // is used to render nodes onto a detached tree, as confirmed in this thread:\n // https://github.com/facebook/react/issues/9117#issuecomment-284228870)\n //\n // It also means that even window.getComputedStyle(node).display will return `undefined`\n // because styles are only computed for nodes that are in the document.\n //\n // NOTE: THIS HAS BEEN THE CASE FOR YEARS. It is not new, nor is it caused by tabbable\n // somehow. Though it was never stated officially, anyone who has ever used tabbable\n // APIs on nodes in detached containers has actually implicitly used tabbable in what\n // was later (as of v5.2.0 on Apr 9, 2021) called `displayCheck=\"none\"` mode -- essentially\n // considering __everything__ to be visible because of the innability to determine styles.\n //\n // v6.0.0: As of this major release, the default 'full' option __no longer treats detached\n // nodes as visible with the 'none' fallback.__\n if (displayCheck !== 'legacy-full') {\n return true; // hidden\n }\n // else, fallback to 'none' mode and consider the node visible\n } else if (displayCheck === 'non-zero-area') {\n // NOTE: Even though this tests that the node's client rect is non-zero to determine\n // whether it's displayed, and that a detached node will __always__ have a zero-area\n // client rect, we don't special-case for whether the node is attached or not. In\n // this mode, we do want to consider nodes that have a zero area to be hidden at all\n // times, and that includes attached or not.\n return isZeroArea(node);\n }\n\n // visible, as far as we can tell, or per current `displayCheck=none` mode, we assume\n // it's visible\n return false;\n};\n\n// form fields (nested) inside a disabled fieldset are not focusable/tabbable\n// unless they are in the _first_ <legend> element of the top-most disabled\n// fieldset\nvar isDisabledFromFieldset = function isDisabledFromFieldset(node) {\n if (/^(INPUT|BUTTON|SELECT|TEXTAREA)$/.test(node.tagName)) {\n var parentNode = node.parentElement;\n // check if `node` is contained in a disabled <fieldset>\n while (parentNode) {\n if (parentNode.tagName === 'FIELDSET' && parentNode.disabled) {\n // look for the first <legend> among the children of the disabled <fieldset>\n for (var i = 0; i < parentNode.children.length; i++) {\n var child = parentNode.children.item(i);\n // when the first <legend> (in document order) is found\n if (child.tagName === 'LEGEND') {\n // if its parent <fieldset> is not nested in another disabled <fieldset>,\n // return whether `node` is a descendant of its first <legend>\n return matches.call(parentNode, 'fieldset[disabled] *') ? true : !child.contains(node);\n }\n }\n // the disabled <fieldset> containing `node` has no <legend>\n return true;\n }\n parentNode = parentNode.parentElement;\n }\n }\n\n // else, node's tabbable/focusable state should not be affected by a fieldset's\n // enabled/disabled state\n return false;\n};\nvar isNodeMatchingSelectorFocusable = function isNodeMatchingSelectorFocusable(options, node) {\n if (node.disabled || isHiddenInput(node) || isHidden(node, options) ||\n // For a details element with a summary, the summary element gets the focus\n isDetailsWithSummary(node) || isDisabledFromFieldset(node)) {\n return false;\n }\n return true;\n};\nvar isNodeMatchingSelectorTabbable = function isNodeMatchingSelectorTabbable(options, node) {\n if (isNonTabbableRadio(node) || getTabIndex(node) < 0 || !isNodeMatchingSelectorFocusable(options, node)) {\n return false;\n }\n return true;\n};\nvar isShadowRootTabbable = function isShadowRootTabbable(shadowHostNode) {\n var tabIndex = parseInt(shadowHostNode.getAttribute('tabindex'), 10);\n if (isNaN(tabIndex) || tabIndex >= 0) {\n return true;\n }\n // If a custom element has an explicit negative tabindex,\n // browsers will not allow tab targeting said element's children.\n return false;\n};\n\n/**\n * @param {Array.<Element|CandidateScope>} candidates\n * @returns Element[]\n */\nvar _sortByOrder = function sortByOrder(candidates) {\n var regularTabbables = [];\n var orderedTabbables = [];\n candidates.forEach(function (item, i) {\n var isScope = !!item.scopeParent;\n var element = isScope ? item.scopeParent : item;\n var candidateTabindex = getSortOrderTabIndex(element, isScope);\n var elements = isScope ? _sortByOrder(item.candidates) : element;\n if (candidateTabindex === 0) {\n isScope ? regularTabbables.push.apply(regularTabbables, elements) : regularTabbables.push(element);\n } else {\n orderedTabbables.push({\n documentOrder: i,\n tabIndex: candidateTabindex,\n item: item,\n isScope: isScope,\n content: elements\n });\n }\n });\n return orderedTabbables.sort(sortOrderedTabbables).reduce(function (acc, sortable) {\n sortable.isScope ? acc.push.apply(acc, sortable.content) : acc.push(sortable.content);\n return acc;\n }, []).concat(regularTabbables);\n};\nvar tabbable = function tabbable(container, options) {\n options = options || {};\n var candidates;\n if (options.getShadowRoot) {\n candidates = _getCandidatesIteratively([container], options.includeContainer, {\n filter: isNodeMatchingSelectorTabbable.bind(null, options),\n flatten: false,\n getShadowRoot: options.getShadowRoot,\n shadowRootFilter: isShadowRootTabbable\n });\n } else {\n candidates = getCandidates(container, options.includeContainer, isNodeMatchingSelectorTabbable.bind(null, options));\n }\n return _sortByOrder(candidates);\n};\nvar focusable = function focusable(container, options) {\n options = options || {};\n var candidates;\n if (options.getShadowRoot) {\n candidates = _getCandidatesIteratively([container], options.includeContainer, {\n filter: isNodeMatchingSelectorFocusable.bind(null, options),\n flatten: true,\n getShadowRoot: options.getShadowRoot\n });\n } else {\n candidates = getCandidates(container, options.includeContainer, isNodeMatchingSelectorFocusable.bind(null, options));\n }\n return candidates;\n};\nvar isTabbable = function isTabbable(node, options) {\n options = options || {};\n if (!node) {\n throw new Error('No node provided');\n }\n if (matches.call(node, candidateSelector) === false) {\n return false;\n }\n return isNodeMatchingSelectorTabbable(options, node);\n};\nvar focusableCandidateSelector = /* #__PURE__ */candidateSelectors.concat('iframe:not([inert]):not([inert] *)').join(',');\nvar isFocusable = function isFocusable(node, options) {\n options = options || {};\n if (!node) {\n throw new Error('No node provided');\n }\n if (matches.call(node, focusableCandidateSelector) === false) {\n return false;\n }\n return isNodeMatchingSelectorFocusable(options, node);\n};\n\nexport { focusable, getTabIndex, isFocusable, isTabbable, tabbable };\n//# sourceMappingURL=index.esm.js.map\n","/*!\n* focus-trap 8.2.2\n* @license MIT, https://github.com/focus-trap/focus-trap/blob/master/LICENSE\n*/\nimport { tabbable, focusable, isTabbable, getTabIndex, isFocusable } from 'tabbable';\n\nfunction _arrayLikeToArray(r, a) {\n (null == a || a > r.length) && (a = r.length);\n for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e];\n return n;\n}\nfunction _arrayWithoutHoles(r) {\n if (Array.isArray(r)) return _arrayLikeToArray(r);\n}\nfunction _createForOfIteratorHelper(r, e) {\n var t = \"undefined\" != typeof Symbol && r[Symbol.iterator] || r[\"@@iterator\"];\n if (!t) {\n if (Array.isArray(r) || (t = _unsupportedIterableToArray(r)) || e) {\n t && (r = t);\n var n = 0,\n F = function () {};\n return {\n s: F,\n n: function () {\n return n >= r.length ? {\n done: true\n } : {\n done: false,\n value: r[n++]\n };\n },\n e: function (r) {\n throw r;\n },\n f: F\n };\n }\n throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n }\n var o,\n a = true,\n u = false;\n return {\n s: function () {\n t = t.call(r);\n },\n n: function () {\n var r = t.next();\n return a = r.done, r;\n },\n e: function (r) {\n u = true, o = r;\n },\n f: function () {\n try {\n a || null == t.return || t.return();\n } finally {\n if (u) throw o;\n }\n }\n };\n}\nfunction _defineProperty(e, r, t) {\n return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, {\n value: t,\n enumerable: true,\n configurable: true,\n writable: true\n }) : e[r] = t, e;\n}\nfunction _iterableToArray(r) {\n if (\"undefined\" != typeof Symbol && null != r[Symbol.iterator] || null != r[\"@@iterator\"]) return Array.from(r);\n}\nfunction _nonIterableSpread() {\n throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}\nfunction ownKeys(e, r) {\n var t = Object.keys(e);\n if (Object.getOwnPropertySymbols) {\n var o = Object.getOwnPropertySymbols(e);\n r && (o = o.filter(function (r) {\n return Object.getOwnPropertyDescriptor(e, r).enumerable;\n })), t.push.apply(t, o);\n }\n return t;\n}\nfunction _objectSpread2(e) {\n for (var r = 1; r < arguments.length; r++) {\n var t = null != arguments[r] ? arguments[r] : {};\n r % 2 ? ownKeys(Object(t), true).forEach(function (r) {\n _defineProperty(e, r, t[r]);\n }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) {\n Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r));\n });\n }\n return e;\n}\nfunction _toConsumableArray(r) {\n return _arrayWithoutHoles(r) || _iterableToArray(r) || _unsupportedIterableToArray(r) || _nonIterableSpread();\n}\nfunction _toPrimitive(t, r) {\n if (\"object\" != typeof t || !t) return t;\n var e = t[Symbol.toPrimitive];\n if (void 0 !== e) {\n var i = e.call(t, r);\n if (\"object\" != typeof i) return i;\n throw new TypeError(\"@@toPrimitive must return a primitive value.\");\n }\n return (\"string\" === r ? String : Number)(t);\n}\nfunction _toPropertyKey(t) {\n var i = _toPrimitive(t, \"string\");\n return \"symbol\" == typeof i ? i : i + \"\";\n}\nfunction _unsupportedIterableToArray(r, a) {\n if (r) {\n if (\"string\" == typeof r) return _arrayLikeToArray(r, a);\n var t = {}.toString.call(r).slice(8, -1);\n return \"Object\" === t && r.constructor && (t = r.constructor.name), \"Map\" === t || \"Set\" === t ? Array.from(r) : \"Arguments\" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : void 0;\n }\n}\n\nvar activeFocusTraps = {\n // Returns the trap from the top of the stack.\n getActiveTrap: function getActiveTrap(trapStack) {\n if ((trapStack === null || trapStack === void 0 ? void 0 : trapStack.length) > 0) {\n return trapStack[trapStack.length - 1];\n }\n return null;\n },\n // Pauses the currently active trap, then adds a new trap to the stack.\n activateTrap: function activateTrap(trapStack, trap) {\n var activeTrap = activeFocusTraps.getActiveTrap(trapStack);\n if (trap !== activeTrap) {\n activeFocusTraps.pauseTrap(trapStack);\n }\n var trapIndex = trapStack.indexOf(trap);\n if (trapIndex === -1) {\n trapStack.push(trap);\n } else {\n // move this existing trap to the front of the queue\n trapStack.splice(trapIndex, 1);\n trapStack.push(trap);\n }\n },\n // Removes the trap from the top of the stack, then unpauses the next trap down.\n deactivateTrap: function deactivateTrap(trapStack, trap) {\n var trapIndex = trapStack.indexOf(trap);\n if (trapIndex !== -1) {\n trapStack.splice(trapIndex, 1);\n }\n activeFocusTraps.unpauseTrap(trapStack);\n },\n // Pauses the trap at the top of the stack.\n pauseTrap: function pauseTrap(trapStack) {\n var activeTrap = activeFocusTraps.getActiveTrap(trapStack);\n activeTrap === null || activeTrap === void 0 || activeTrap._setPausedState(true);\n },\n // Unpauses the trap at the top of the stack.\n unpauseTrap: function unpauseTrap(trapStack) {\n var activeTrap = activeFocusTraps.getActiveTrap(trapStack);\n if (activeTrap && !activeTrap._isManuallyPaused()) {\n activeTrap._setPausedState(false);\n }\n }\n};\nvar isSelectableInput = function isSelectableInput(node) {\n return node.tagName && node.tagName.toLowerCase() === 'input' && typeof node.select === 'function';\n};\nvar isEscapeEvent = function isEscapeEvent(e) {\n return (e === null || e === void 0 ? void 0 : e.key) === 'Escape' || (e === null || e === void 0 ? void 0 : e.key) === 'Esc' || (e === null || e === void 0 ? void 0 : e.keyCode) === 27;\n};\nvar isTabEvent = function isTabEvent(e) {\n return (e === null || e === void 0 ? void 0 : e.key) === 'Tab' || (e === null || e === void 0 ? void 0 : e.keyCode) === 9;\n};\n\n// checks for TAB by default\nvar isKeyForward = function isKeyForward(e) {\n return isTabEvent(e) && !e.shiftKey;\n};\n\n// checks for SHIFT+TAB by default\nvar isKeyBackward = function isKeyBackward(e) {\n return isTabEvent(e) && e.shiftKey;\n};\nvar delay = function delay(fn) {\n return setTimeout(fn, 0);\n};\n\n/**\n * Get an option's value when it could be a plain value, or a handler that provides\n * the value.\n * @param {*} value Option's value to check.\n * @param {...*} [params] Any parameters to pass to the handler, if `value` is a function.\n * @returns {*} The `value`, or the handler's returned value.\n */\nvar valueOrHandler = function valueOrHandler(value) {\n for (var _len = arguments.length, params = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n params[_key - 1] = arguments[_key];\n }\n return typeof value === 'function' ? value.apply(void 0, params) : value;\n};\nvar getActualTarget = function getActualTarget(event) {\n // NOTE: If the trap is _inside_ a shadow DOM, event.target will always be the\n // shadow host. However, event.target.composedPath() will be an array of\n // nodes \"clicked\" from inner-most (the actual element inside the shadow) to\n // outer-most (the host HTML document). If we have access to composedPath(),\n // then use its first element; otherwise, fall back to event.target (and\n // this only works for an _open_ shadow DOM; otherwise,\n // composedPath()[0] === event.target always).\n return event.target.shadowRoot && typeof event.composedPath === 'function' ? event.composedPath()[0] : event.target;\n};\n\n// NOTE: this must be _outside_ `createFocusTrap()` to make sure all traps in this\n// current instance use the same stack if `userOptions.trapStack` isn't specified\nvar internalTrapStack = [];\nvar createFocusTrap = function createFocusTrap(elements, userOptions) {\n // SSR: a live trap shouldn't be created in this type of environment so this\n // should be safe code to execute if the `document` option isn't specified\n var doc = (userOptions === null || userOptions === void 0 ? void 0 : userOptions.document) || document;\n var trapStack = (userOptions === null || userOptions === void 0 ? void 0 : userOptions.trapStack) || internalTrapStack;\n var config = _objectSpread2({\n returnFocusOnDeactivate: true,\n escapeDeactivates: true,\n delayInitialFocus: true,\n delayReturnFocus: true,\n isolateSubtrees: false,\n isKeyForward: isKeyForward,\n isKeyBackward: isKeyBackward\n }, userOptions);\n var state = {\n // containers given to createFocusTrap()\n /** @type {Array<HTMLElement>} */\n containers: [],\n // list of objects identifying tabbable nodes in `containers` in the trap\n // NOTE: it's possible that a group has no tabbable nodes if nodes get removed while the trap\n // is active, but the trap should never get to a state where there isn't at least one group\n // with at least one tabbable node in it (that would lead to an error condition that would\n // result in an error being thrown)\n /** @type {Array<{\n * container: HTMLElement,\n * tabbableNodes: Array<HTMLElement>, // empty if none\n * focusableNodes: Array<HTMLElement>, // empty if none\n * posTabIndexesFound: boolean,\n * firstTabbableNode: HTMLElement|undefined,\n * lastTabbableNode: HTMLElement|undefined,\n * firstDomTabbableNode: HTMLElement|undefined,\n * lastDomTabbableNode: HTMLElement|undefined,\n * nextTabbableNode: (node: HTMLElement, forward: boolean) => HTMLElement|undefined\n * }>}\n */\n containerGroups: [],\n // same order/length as `containers` list\n\n // references to objects in `containerGroups`, but only those that actually have\n // tabbable nodes in them\n // NOTE: same order as `containers` and `containerGroups`, but __not necessarily__\n // the same length\n tabbableGroups: [],\n // references to nodes that are siblings to the ancestors of this trap's containers.\n /** @type {Set<HTMLElement>} */\n adjacentElements: new Set(),\n // references to nodes that were inert or aria-hidden before the trap was activated.\n /** @type {Set<HTMLElement>} */\n alreadySilent: new Set(),\n nodeFocusedBeforeActivation: null,\n mostRecentlyFocusedNode: null,\n active: false,\n paused: false,\n manuallyPaused: false,\n // timer ID for when delayInitialFocus is true and initial focus in this trap\n // has been delayed during activation\n delayInitialFocusTimer: undefined,\n // the most recent KeyboardEvent for the configured nav key (typically [SHIFT+]TAB), if any\n recentNavEvent: undefined\n };\n var trap; // eslint-disable-line prefer-const -- some private functions reference it, and its methods reference private functions, so we must declare here and define later\n\n /**\n * Gets a configuration option value.\n * @param {Object|undefined} configOverrideOptions If true, and option is defined in this set,\n * value will be taken from this object. Otherwise, value will be taken from base configuration.\n * @param {string} optionName Name of the option whose value is sought.\n * @param {string|undefined} [configOptionName] Name of option to use __instead of__ `optionName`\n * IIF `configOverrideOptions` is not defined. Otherwise, `optionName` is used.\n */\n var getOption = function getOption(configOverrideOptions, optionName, configOptionName) {\n return configOverrideOptions && configOverrideOptions[optionName] !== undefined ? configOverrideOptions[optionName] : config[configOptionName || optionName];\n };\n\n /**\n * Finds the index of the container that contains the element.\n * @param {HTMLElement} element\n * @param {Event} [event] If available, and `element` isn't directly found in any container,\n * the event's composed path is used to see if includes any known trap containers in the\n * case where the element is inside a Shadow DOM.\n * @returns {number} Index of the container in either `state.containers` or\n * `state.containerGroups` (the order/length of these lists are the same); -1\n * if the element isn't found.\n */\n var findContainerIndex = function findContainerIndex(element, event) {\n var composedPath = typeof (event === null || event === void 0 ? void 0 : event.composedPath) === 'function' ? event.composedPath() : undefined;\n // NOTE: search `containerGroups` because it's possible a group contains no tabbable\n // nodes, but still contains focusable nodes (e.g. if they all have `tabindex=-1`)\n // and we still need to find the element in there\n return state.containerGroups.findIndex(function (_ref) {\n var container = _ref.container,\n tabbableNodes = _ref.tabbableNodes;\n return container.contains(element) || (// fall back to explicit tabbable search which will take into consideration any\n // web components if the `tabbableOptions.getShadowRoot` option was used for\n // the trap, enabling shadow DOM support in tabbable (`Node.contains()` doesn't\n // look inside web components even if open)\n composedPath === null || composedPath === void 0 ? void 0 : composedPath.includes(container)) || tabbableNodes.find(function (node) {\n return node === element;\n });\n });\n };\n\n /**\n * Gets the node for the given option, which is expected to be an option that\n * can be either a DOM node, a string that is a selector to get a node, `false`\n * (if a node is explicitly NOT given), or a function that returns any of these\n * values.\n * @param {string} optionName\n * @param {Object} options\n * @param {boolean} [options.hasFallback] True if the option could be a selector string\n * and the option allows for a fallback scenario in the case where the selector is\n * valid but does not match a node (i.e. the queried node doesn't exist in the DOM).\n * @param {Array} [options.params] Params to pass to the option if it's a function.\n * @returns {undefined | null | false | HTMLElement | SVGElement} Returns\n * `undefined` if the option is not specified; `null` if the option didn't resolve\n * to a node but `options.hasFallback=true`, `false` if the option resolved to `false`\n * (node explicitly not given); otherwise, the resolved DOM node.\n * @throws {Error} If the option is set, not `false`, and is not, or does not\n * resolve to a node, unless the option is a selector string and `options.hasFallback=true`.\n */\n var getNodeForOption = function getNodeForOption(optionName) {\n var _ref2 = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {},\n _ref2$hasFallback = _ref2.hasFallback,\n hasFallback = _ref2$hasFallback === void 0 ? false : _ref2$hasFallback,\n _ref2$params = _ref2.params,\n params = _ref2$params === void 0 ? [] : _ref2$params;\n var optionValue = config[optionName];\n if (typeof optionValue === 'function') {\n optionValue = optionValue.apply(void 0, _toConsumableArray(params));\n }\n if (optionValue === true) {\n optionValue = undefined; // use default value\n }\n if (!optionValue) {\n if (optionValue === undefined || optionValue === false) {\n return optionValue;\n }\n // else, empty string (invalid), null (invalid), 0 (invalid)\n\n throw new Error(\"`\".concat(optionName, \"` was specified but was not a node, or did not return a node\"));\n }\n var node = optionValue; // could be HTMLElement, SVGElement, or non-empty string at this point\n\n if (typeof optionValue === 'string') {\n try {\n node = doc.querySelector(optionValue); // resolve to node, or null if fails\n } catch (err) {\n throw new Error(\"`\".concat(optionName, \"` appears to be an invalid selector; error=\\\"\").concat(err.message, \"\\\"\"));\n }\n if (!node) {\n if (!hasFallback) {\n throw new Error(\"`\".concat(optionName, \"` as selector refers to no known node\"));\n }\n // else, `node` MUST be `null` because that's what `Document.querySelector()` returns\n // if the selector is valid but doesn't match anything\n }\n }\n return node;\n };\n\n /**\n * Gets the current activeElement. If it's a web-component and has open shadow-root\n * it will recursively search inside shadow roots for the \"true\" activeElement.\n *\n * @param {Document | ShadowRoot} el\n *\n * @returns {HTMLElement|null} The element that currently has the focus. `null` if a focused element isn't found.\n **/\n var _getActiveElement = function getActiveElement(el) {\n var activeElement = el.activeElement;\n if (!activeElement) {\n return null;\n }\n if (activeElement.shadowRoot && activeElement.shadowRoot.activeElement !== null) {\n return _getActiveElement(activeElement.shadowRoot);\n }\n return activeElement;\n };\n var getInitialFocusNode = function getInitialFocusNode() {\n var node = getNodeForOption('initialFocus', {\n hasFallback: true\n });\n\n // false explicitly indicates we want no initialFocus at all\n if (node === false) {\n return false;\n }\n if (node === undefined || node && !isFocusable(node, config.tabbableOptions)) {\n var activeElement = _getActiveElement(doc);\n\n // option not specified nor focusable: use fallback options\n if (findContainerIndex(activeElement) >= 0) {\n node = activeElement;\n } else {\n var firstTabbableGroup = state.tabbableGroups[0];\n var firstTabbableNode = firstTabbableGroup && firstTabbableGroup.firstTabbableNode;\n\n // NOTE: `fallbackFocus` option function cannot return `false` (not supported)\n node = firstTabbableNode || getNodeForOption('fallbackFocus');\n }\n } else if (node === null) {\n // option is a VALID selector string that doesn't yield a node: use the `fallbackFocus`\n // option instead of the default behavior when the option isn't specified at all\n node = getNodeForOption('fallbackFocus');\n }\n if (!node) {\n throw new Error('Your focus-trap needs to have at least one focusable element');\n }\n return node;\n };\n var updateTabbableNodes = function updateTabbableNodes() {\n state.containerGroups = state.containers.map(function (container) {\n var tabbableNodes = tabbable(container, config.tabbableOptions);\n\n // NOTE: if we have tabbable nodes, we must have focusable nodes; focusable nodes\n // are a superset of tabbable nodes since nodes with negative `tabindex` attributes\n // are focusable but not tabbable\n var focusableNodes = focusable(container, config.tabbableOptions);\n var firstTabbableNode = tabbableNodes.length > 0 ? tabbableNodes[0] : undefined;\n var lastTabbableNode = tabbableNodes.length > 0 ? tabbableNodes[tabbableNodes.length - 1] : undefined;\n var firstDomTabbableNode = focusableNodes.find(function (node) {\n return isTabbable(node);\n });\n var lastDomTabbableNode = focusableNodes.slice().reverse().find(function (node) {\n return isTabbable(node);\n });\n var posTabIndexesFound = !!tabbableNodes.find(function (node) {\n return getTabIndex(node) > 0;\n });\n return {\n container: container,\n tabbableNodes: tabbableNodes,\n focusableNodes: focusableNodes,\n /** True if at least one node with positive `tabindex` was found in this container. */\n posTabIndexesFound: posTabIndexesFound,\n /** First tabbable node in container, __tabindex__ order; `undefined` if none. */\n firstTabbableNode: firstTabbableNode,\n /** Last tabbable node in container, __tabindex__ order; `undefined` if none. */\n lastTabbableNode: lastTabbableNode,\n // NOTE: DOM order is NOT NECESSARILY \"document position\" order, but figuring that out\n // would require more than just https://developer.mozilla.org/en-US/docs/Web/API/Node/compareDocumentPosition\n // because that API doesn't work with Shadow DOM as well as it should (@see\n // https://github.com/whatwg/dom/issues/320) and since this first/last is only needed, so far,\n // to address an edge case related to positive tabindex support, this seems like a much easier,\n // \"close enough most of the time\" alternative for positive tabindexes which should generally\n // be avoided anyway...\n /** First tabbable node in container, __DOM__ order; `undefined` if none. */\n firstDomTabbableNode: firstDomTabbableNode,\n /** Last tabbable node in container, __DOM__ order; `undefined` if none. */\n lastDomTabbableNode: lastDomTabbableNode,\n /**\n * Finds the __tabbable__ node that follows the given node in the specified direction,\n * in this container, if any.\n * @param {HTMLElement} node\n * @param {boolean} [forward] True if going in forward tab order; false if going\n * in reverse.\n * @returns {HTMLElement|undefined} The next tabbable node, if any.\n */\n nextTabbableNode: function nextTabbableNode(node) {\n var forward = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;\n var nodeIdx = tabbableNodes.indexOf(node);\n if (nodeIdx < 0) {\n // either not tabbable nor focusable, or was focused but not tabbable (negative tabindex):\n // since `node` should at least have been focusable, we assume that's the case and mimic\n // what browsers do, which is set focus to the next node in __document position order__,\n // regardless of positive tabindexes, if any -- and for reasons explained in the NOTE\n // above related to `firstDomTabbable` and `lastDomTabbable` properties, we fall back to\n // basic DOM order\n if (forward) {\n return focusableNodes.slice(focusableNodes.indexOf(node) + 1).find(function (el) {\n return isTabbable(el);\n });\n }\n return focusableNodes.slice(0, focusableNodes.indexOf(node)).reverse().find(function (el) {\n return isTabbable(el);\n });\n }\n return tabbableNodes[nodeIdx + (forward ? 1 : -1)];\n }\n };\n });\n state.tabbableGroups = state.containerGroups.filter(function (group) {\n return group.tabbableNodes.length > 0;\n });\n\n // throw if no groups have tabbable nodes and we don't have a fallback focus node either\n if (state.tabbableGroups.length <= 0 && !getNodeForOption('fallbackFocus') // returning false not supported for this option\n ) {\n throw new Error('Your focus-trap must have at least one container with at least one tabbable node in it at all times');\n }\n\n // NOTE: Positive tabindexes are only properly supported in single-container traps because\n // doing it across multiple containers where tabindexes could be all over the place\n // would require Tabbable to support multiple containers, would require additional\n // specialized Shadow DOM support, and would require Tabbable's multi-container support\n // to look at those containers in document position order rather than user-provided\n // order (as they are treated in Focus-trap, for legacy reasons). See discussion on\n // https://github.com/focus-trap/focus-trap/issues/375 for more details.\n if (state.containerGroups.find(function (g) {\n return g.posTabIndexesFound;\n }) && state.containerGroups.length > 1) {\n throw new Error(\"At least one node with a positive tabindex was found in one of your focus-trap's multiple containers. Positive tabindexes are only supported in single-container focus-traps.\");\n }\n };\n var _tryFocus = function tryFocus(node) {\n if (node === false) {\n return;\n }\n if (node === _getActiveElement(document)) {\n return;\n }\n if (!node || !node.focus) {\n _tryFocus(getInitialFocusNode());\n return;\n }\n node.focus({\n preventScroll: !!config.preventScroll\n });\n // NOTE: focus() API does not trigger focusIn event so set MRU node manually\n state.mostRecentlyFocusedNode = node;\n if (isSelectableInput(node)) {\n node.select();\n }\n };\n var getReturnFocusNode = function getReturnFocusNode(previousActiveElement) {\n var node = getNodeForOption('setReturnFocus', {\n params: [previousActiveElement]\n });\n return node ? node : node === false ? false : previousActiveElement;\n };\n\n /**\n * Finds the next node (in either direction) where focus should move according to a\n * keyboard focus-in event.\n * @param {Object} params\n * @param {Node} [params.target] Known target __from which__ to navigate, if any.\n * @param {KeyboardEvent|FocusEvent} [params.event] Event to use if `target` isn't known (event\n * will be used to determine the `target`). Ignored if `target` is specified.\n * @param {boolean} [params.isBackward] True if focus should move backward.\n * @returns {Node|undefined} The next node, or `undefined` if a next node couldn't be\n * determined given the current state of the trap.\n */\n var findNextNavNode = function findNextNavNode(_ref3) {\n var target = _ref3.target,\n event = _ref3.event,\n _ref3$isBackward = _ref3.isBackward,\n isBackward = _ref3$isBackward === void 0 ? false : _ref3$isBackward;\n target = target || getActualTarget(event);\n updateTabbableNodes();\n var destinationNode = null;\n if (state.tabbableGroups.length > 0) {\n // make sure the target is actually contained in a group\n // NOTE: the target may also be the container itself if it's focusable\n // with tabIndex='-1' and was given initial focus\n var containerIndex = findContainerIndex(target, event);\n var containerGroup = containerIndex >= 0 ? state.containerGroups[containerIndex] : undefined;\n if (containerIndex < 0) {\n // target not found in any group: quite possible focus has escaped the trap,\n // so bring it back into...\n if (isBackward) {\n // ...the last node in the last group\n destinationNode = state.tabbableGroups[state.tabbableGroups.length - 1].lastTabbableNode;\n } else {\n // ...the first node in the first group\n destinationNode = state.tabbableGroups[0].firstTabbableNode;\n }\n } else if (isBackward) {\n // REVERSE\n\n // is the target the first tabbable node in a group?\n var startOfGroupIndex = state.tabbableGroups.findIndex(function (_ref4) {\n var firstTabbableNode = _ref4.firstTabbableNode;\n return target === firstTabbableNode;\n });\n if (startOfGroupIndex < 0 && (containerGroup.container === target || isFocusable(target, config.tabbableOptions) && !isTabbable(target, config.tabbableOptions) && !containerGroup.nextTabbableNode(target, false))) {\n // an exception case where the target is either the container itself, or\n // a non-tabbable node that was given focus (i.e. tabindex is negative\n // and user clicked on it or node was programmatically given focus)\n // and is not followed by any other tabbable node, in which\n // case, we should handle shift+tab as if focus were on the container's\n // first tabbable node, and go to the last tabbable node of the LAST group\n startOfGroupIndex = containerIndex;\n }\n if (startOfGroupIndex >= 0) {\n // YES: then shift+tab should go to the last tabbable node in the\n // previous group (and wrap around to the last tabbable node of\n // the LAST group if it's the first tabbable node of the FIRST group)\n var destinationGroupIndex = startOfGroupIndex === 0 ? state.tabbableGroups.length - 1 : startOfGroupIndex - 1;\n var destinationGroup = state.tabbableGroups[destinationGroupIndex];\n destinationNode = getTabIndex(target) >= 0 ? destinationGroup.lastTabbableNode : destinationGroup.lastDomTabbableNode;\n } else if (!isTabEvent(event)) {\n // user must have customized the nav keys so we have to move focus manually _within_\n // the active group: do this based on the order determined by tabbable()\n destinationNode = containerGroup.nextTabbableNode(target, false);\n }\n } else {\n // FORWARD\n\n // is the target the last tabbable node in a group?\n var lastOfGroupIndex = state.tabbableGroups.findIndex(function (_ref5) {\n var lastTabbableNode = _ref5.lastTabbableNode;\n return target === lastTabbableNode;\n });\n if (lastOfGroupIndex < 0 && (containerGroup.container === target || isFocusable(target, config.tabbableOptions) && !isTabbable(target, config.tabbableOptions) && !containerGroup.nextTabbableNode(target))) {\n // an exception case where the target is the container itself, or\n // a non-tabbable node that was given focus (i.e. tabindex is negative\n // and user clicked on it or node was programmatically given focus)\n // and is not followed by any other tabbable node, in which\n // case, we should handle tab as if focus were on the container's\n // last tabbable node, and go to the first tabbable node of the FIRST group\n lastOfGroupIndex = containerIndex;\n }\n if (lastOfGroupIndex >= 0) {\n // YES: then tab should go to the first tabbable node in the next\n // group (and wrap around to the first tabbable node of the FIRST\n // group if it's the last tabbable node of the LAST group)\n var _destinationGroupIndex = lastOfGroupIndex === state.tabbableGroups.length - 1 ? 0 : lastOfGroupIndex + 1;\n var _destinationGroup = state.tabbableGroups[_destinationGroupIndex];\n destinationNode = getTabIndex(target) >= 0 ? _destinationGroup.firstTabbableNode : _destinationGroup.firstDomTabbableNode;\n } else if (!isTabEvent(event)) {\n // user must have customized the nav keys so we have to move focus manually _within_\n // the active group: do this based on the order determined by tabbable()\n destinationNode = containerGroup.nextTabbableNode(target);\n }\n }\n } else {\n // no groups available\n // NOTE: the fallbackFocus option does not support returning false to opt-out\n destinationNode = getNodeForOption('fallbackFocus');\n }\n return destinationNode;\n };\n\n // This needs to be done on mousedown and touchstart instead of click\n // so that it precedes the focus event.\n var checkPointerDown = function checkPointerDown(e) {\n var target = getActualTarget(e);\n if (findContainerIndex(target, e) >= 0) {\n // allow the click since it occurred inside the trap\n return;\n }\n if (valueOrHandler(config.clickOutsideDeactivates, e)) {\n // immediately deactivate the trap\n trap.deactivate({\n // NOTE: by setting `returnFocus: false`, deactivate() will do nothing,\n // which will result in the outside click setting focus to the node\n // that was clicked (and if not focusable, to \"nothing\"); by setting\n // `returnFocus: true`, we'll attempt to re-focus the node originally-focused\n // on activation (or the configured `setReturnFocus` node), whether the\n // outside click was on a focusable node or not\n returnFocus: config.returnFocusOnDeactivate\n });\n return;\n }\n\n // This is needed for mobile devices.\n // (If we'll only let `click` events through,\n // then on mobile they will be blocked anyways if `touchstart` is blocked.)\n if (valueOrHandler(config.allowOutsideClick, e)) {\n // allow the click outside the trap to take place\n return;\n }\n\n // otherwise, prevent the click\n e.preventDefault();\n };\n\n // In case focus escapes the trap for some strange reason, pull it back in.\n // NOTE: the focusIn event is NOT cancelable, so if focus escapes, it may cause unexpected\n // scrolling if the node that got focused was out of view; there's nothing we can do to\n // prevent that from happening by the time we discover that focus escaped\n var checkFocusIn = function checkFocusIn(event) {\n var target = getActualTarget(event);\n var targetContained = findContainerIndex(target, event) >= 0;\n\n // In Firefox when you Tab out of an iframe the Document is briefly focused.\n if (targetContained || target instanceof Document) {\n if (targetContained) {\n state.mostRecentlyFocusedNode = target;\n }\n } else {\n // escaped! pull it back in to where it just left\n event.stopImmediatePropagation();\n\n // focus will escape if the MRU node had a positive tab index and user tried to nav forward;\n // it will also escape if the MRU node had a 0 tab index and user tried to nav backward\n // toward a node with a positive tab index\n var nextNode; // next node to focus, if we find one\n var navAcrossContainers = true;\n if (state.mostRecentlyFocusedNode) {\n if (getTabIndex(state.mostRecentlyFocusedNode) > 0) {\n // MRU container index must be >=0 otherwise we wouldn't have it as an MRU node...\n var mruContainerIdx = findContainerIndex(state.mostRecentlyFocusedNode);\n // there MAY not be any tabbable nodes in the container if there are at least 2 containers\n // and the MRU node is focusable but not tabbable (focus-trap requires at least 1 container\n // with at least one tabbable node in order to function, so this could be the other container\n // with nothing tabbable in it)\n var tabbableNodes = state.containerGroups[mruContainerIdx].tabbableNodes;\n if (tabbableNodes.length > 0) {\n // MRU tab index MAY not be found if the MRU node is focusable but not tabbable\n var mruTabIdx = tabbableNodes.findIndex(function (node) {\n return node === state.mostRecentlyFocusedNode;\n });\n if (mruTabIdx >= 0) {\n if (config.isKeyForward(state.recentNavEvent)) {\n if (mruTabIdx + 1 < tabbableNodes.length) {\n nextNode = tabbableNodes[mruTabIdx + 1];\n navAcrossContainers = false;\n }\n // else, don't wrap within the container as focus should move to next/previous\n // container\n } else {\n if (mruTabIdx - 1 >= 0) {\n nextNode = tabbableNodes[mruTabIdx - 1];\n navAcrossContainers = false;\n }\n // else, don't wrap within the container as focus should move to next/previous\n // container\n }\n // else, don't find in container order without considering direction too\n }\n }\n // else, no tabbable nodes in that container (which means we must have at least one other\n // container with at least one tabbable node in it, otherwise focus-trap would've thrown\n // an error the last time updateTabbableNodes() was run): find next node among all known\n // containers\n } else {\n // check to see if there's at least one tabbable node with a positive tab index inside\n // the trap because focus seems to escape when navigating backward from a tabbable node\n // with tabindex=0 when this is the case (instead of wrapping to the tabbable node with\n // the greatest positive tab index like it should)\n if (!state.containerGroups.some(function (g) {\n return g.tabbableNodes.some(function (n) {\n return getTabIndex(n) > 0;\n });\n })) {\n // no containers with tabbable nodes with positive tab indexes which means the focus\n // escaped for some other reason and we should just execute the fallback to the\n // MRU node or initial focus node, if any\n navAcrossContainers = false;\n }\n }\n } else {\n // no MRU node means we're likely in some initial condition when the trap has just\n // been activated and initial focus hasn't been given yet, in which case we should\n // fall through to trying to focus the initial focus node, which is what should\n // happen below at this point in the logic\n navAcrossContainers = false;\n }\n if (navAcrossContainers) {\n nextNode = findNextNavNode({\n // move FROM the MRU node, not event-related node (which will be the node that is\n // outside the trap causing the focus escape we're trying to fix)\n target: state.mostRecentlyFocusedNode,\n isBackward: config.isKeyBackward(state.recentNavEvent)\n });\n }\n if (nextNode) {\n _tryFocus(nextNode);\n } else {\n _tryFocus(state.mostRecentlyFocusedNode || getInitialFocusNode());\n }\n }\n state.recentNavEvent = undefined; // clear\n };\n\n // Hijack key nav events on the first and last focusable nodes of the trap,\n // in order to prevent focus from escaping. If it escapes for even a\n // moment it can end up scrolling the page and causing confusion so we\n // kind of need to capture the action at the keydown phase.\n var checkKeyNav = function checkKeyNav(event) {\n var isBackward = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n state.recentNavEvent = event;\n var destinationNode = findNextNavNode({\n event: event,\n isBackward: isBackward\n });\n if (destinationNode) {\n if (isTabEvent(event)) {\n // since tab natively moves focus, we wouldn't have a destination node unless we\n // were on the edge of a container and had to move to the next/previous edge, in\n // which case we want to prevent default to keep the browser from moving focus\n // to where it normally would\n event.preventDefault();\n }\n _tryFocus(destinationNode);\n }\n // else, let the browser take care of [shift+]tab and move the focus\n };\n var checkTabKey = function checkTabKey(event) {\n if (config.isKeyForward(event) || config.isKeyBackward(event)) {\n checkKeyNav(event, config.isKeyBackward(event));\n }\n };\n\n // we use a different event phase for the Escape key to allow canceling the event and checking for this in escapeDeactivates\n var checkEscapeKey = function checkEscapeKey(event) {\n if (isEscapeEvent(event) && valueOrHandler(config.escapeDeactivates, event) !== false) {\n event.preventDefault();\n trap.deactivate();\n }\n };\n var checkClick = function checkClick(e) {\n var target = getActualTarget(e);\n if (findContainerIndex(target, e) >= 0) {\n return;\n }\n if (valueOrHandler(config.clickOutsideDeactivates, e)) {\n return;\n }\n if (valueOrHandler(config.allowOutsideClick, e)) {\n return;\n }\n e.preventDefault();\n e.stopImmediatePropagation();\n };\n\n //\n // EVENT LISTENERS\n //\n\n /**\n * Adds listeners to the document necessary for trapping focus and attempts to set focus\n * to the configured initial focus node. Does nothing if the trap isn't active.\n * @returns {Promise<void> | undefined} A promise resolved once the initial focus node has\n * been focused when `delayInitialFocus=true`; `undefined` when focus is set synchronously\n * or the trap isn't active.\n */\n var addListeners = function addListeners() {\n if (!state.active) {\n return;\n }\n\n // There can be only one listening focus trap at a time\n activeFocusTraps.activateTrap(trapStack, trap);\n\n // Delay ensures that the focused element doesn't capture the event\n // that caused the focus trap activation.\n /** @type {Promise<void> | undefined} */\n var promise;\n if (config.delayInitialFocus) {\n // NOTE: Promise constructor callback is called synchronously, which is what we want\n // since we need to capture the timer ID immediately\n promise = new Promise(function (resolve) {\n state.delayInitialFocusTimer = delay(function () {\n _tryFocus(getInitialFocusNode());\n resolve();\n });\n });\n } else {\n _tryFocus(getInitialFocusNode());\n }\n doc.addEventListener('focusin', checkFocusIn, true);\n doc.addEventListener('mousedown', checkPointerDown, {\n capture: true,\n passive: false\n });\n doc.addEventListener('touchstart', checkPointerDown, {\n capture: true,\n passive: false\n });\n doc.addEventListener('click', checkClick, {\n capture: true,\n passive: false\n });\n doc.addEventListener('keydown', checkTabKey, {\n capture: true,\n passive: false\n });\n doc.addEventListener('keydown', checkEscapeKey);\n return promise;\n };\n\n /**\n * Traverses up the DOM from each of `containers`, collecting references to\n * the elements that are siblings to `container` or an ancestor of `container`.\n * @param {Array<HTMLElement>} containers\n */\n var collectAdjacentElements = function collectAdjacentElements(containers) {\n // Re-activate all adjacent elements & clear previous collection.\n if (state.active && !state.paused) {\n trap._setSubtreeIsolation(false);\n }\n state.adjacentElements.clear();\n state.alreadySilent.clear();\n\n // Collect all ancestors of all containers to avoid redundant processing.\n var containerAncestors = new Set();\n var adjacentElements = new Set();\n\n // Compile all elements adjacent to the focus trap containers & lineage.\n var _iterator = _createForOfIteratorHelper(containers),\n _step;\n try {\n for (_iterator.s(); !(_step = _iterator.n()).done;) {\n var container = _step.value;\n containerAncestors.add(container);\n var insideShadowRoot = typeof ShadowRoot !== 'undefined' && container.getRootNode() instanceof ShadowRoot;\n var current = container;\n while (current) {\n containerAncestors.add(current);\n var parent = current.parentElement;\n var siblings = [];\n if (parent) {\n siblings = parent.children;\n } else if (!parent && insideShadowRoot) {\n siblings = current.getRootNode().children;\n parent = current.getRootNode().host;\n insideShadowRoot = typeof ShadowRoot !== 'undefined' && parent.getRootNode() instanceof ShadowRoot;\n }\n\n // Add all the children, we'll remove container lineage later.\n var _iterator2 = _createForOfIteratorHelper(siblings),\n _step2;\n try {\n for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) {\n var child = _step2.value;\n adjacentElements.add(child);\n }\n } catch (err) {\n _iterator2.e(err);\n } finally {\n _iterator2.f();\n }\n current = parent;\n }\n }\n\n // Multi-container traps may overlap.\n // Remove elements within container lineages.\n } catch (err) {\n _iterator.e(err);\n } finally {\n _iterator.f();\n }\n containerAncestors.forEach(function (el) {\n adjacentElements[\"delete\"](el);\n });\n state.adjacentElements = adjacentElements;\n };\n var removeListeners = function removeListeners() {\n if (!state.active) {\n return;\n }\n doc.removeEventListener('focusin', checkFocusIn, true);\n doc.removeEventListener('mousedown', checkPointerDown, true);\n doc.removeEventListener('touchstart', checkPointerDown, true);\n doc.removeEventListener('click', checkClick, true);\n doc.removeEventListener('keydown', checkTabKey, true);\n doc.removeEventListener('keydown', checkEscapeKey);\n return trap;\n };\n\n //\n // MUTATION OBSERVER\n //\n\n var checkDomRemoval = function checkDomRemoval(mutations) {\n var focusedNode = state.mostRecentlyFocusedNode;\n if (!focusedNode) {\n return;\n }\n var isFocusedNodeRemoved = mutations.some(function (mutation) {\n var removedNodes = Array.from(mutation.removedNodes);\n return removedNodes.some(function (node) {\n return node === focusedNode || typeof node.contains === 'function' && node.contains(focusedNode);\n });\n });\n\n // If the currently focused node is removed then browsers will move focus to the\n // <body> element. If this happens, try to move focus back into the trap.\n if (isFocusedNodeRemoved && state.containers.some(function (container) {\n return container === null || container === void 0 ? void 0 : container.isConnected;\n })) {\n // Refresh tabbable state before resolving initial focus because\n // getInitialFocusNode() may fall back to the first tabbable node in the trap.\n updateTabbableNodes();\n var initialFocusNode = getInitialFocusNode();\n _tryFocus(initialFocusNode);\n }\n };\n\n // Use MutationObserver - if supported - to detect if focused node is removed\n // from the DOM.\n var mutationObserver = typeof window !== 'undefined' && 'MutationObserver' in window ? new MutationObserver(checkDomRemoval) : undefined;\n var updateObservedNodes = function updateObservedNodes() {\n if (!mutationObserver) {\n return;\n }\n mutationObserver.disconnect();\n if (state.active && !state.paused) {\n state.containers.map(function (container) {\n mutationObserver.observe(container, {\n subtree: true,\n childList: true\n });\n });\n }\n };\n\n //\n // TRAP DEFINITION\n //\n\n trap = {\n get active() {\n return state.active;\n },\n get paused() {\n return state.paused;\n },\n activate: function activate(activateOptions) {\n if (state.active) {\n return this;\n }\n var onActivate = getOption(activateOptions, 'onActivate');\n var onPostActivate = getOption(activateOptions, 'onPostActivate');\n var checkCanFocusTrap = getOption(activateOptions, 'checkCanFocusTrap');\n\n // If a currently-active trap is isolating its subtree, we need to remove\n // that isolation to allow the new trap to find tabbable nodes.\n var preexistingTrap = activeFocusTraps.getActiveTrap(trapStack);\n var revertState = false;\n if (preexistingTrap && !preexistingTrap.paused) {\n var _preexistingTrap$_set;\n // [#1729] method MAY not exist if using `trapStack` option to share stack with older\n // versions of Focus-trap in the same DOM so use optional chaining here just in case\n // since this is a trap we may not have created from this instance of the library\n (_preexistingTrap$_set = preexistingTrap._setSubtreeIsolation) === null || _preexistingTrap$_set === void 0 || _preexistingTrap$_set.call(preexistingTrap, false);\n revertState = true;\n }\n try {\n if (!checkCanFocusTrap) {\n updateTabbableNodes();\n }\n state.active = true;\n state.paused = false;\n state.nodeFocusedBeforeActivation = _getActiveElement(doc);\n onActivate === null || onActivate === void 0 || onActivate({\n trap: trap\n });\n var finishActivation = function finishActivation() {\n if (checkCanFocusTrap) {\n updateTabbableNodes();\n }\n var afterListeners = function afterListeners() {\n trap._setSubtreeIsolation(true);\n updateObservedNodes();\n onPostActivate === null || onPostActivate === void 0 || onPostActivate({\n trap: trap\n });\n };\n\n // NOTE: wait for initial focus node to get focused (whether activation is fully,\n // partially, or not asynchronous) before we potentially isolate the subtrees\n // with aria-hidden while focus is still in some other subtree and not yet in\n // the trap, resulting in some browsers (e.g. Chrome) logging to the console that\n // they, \"Blocked aria-hidden on an element because its descendant retained focus...\"\n var listenersPromise = addListeners();\n if (listenersPromise) {\n listenersPromise.then(afterListeners);\n } else {\n afterListeners();\n }\n };\n if (checkCanFocusTrap) {\n checkCanFocusTrap(state.containers.concat()).then(finishActivation, finishActivation);\n return this;\n }\n finishActivation();\n } catch (error) {\n // If our activation throws an exception and the stack hasn't changed,\n // we need to re-enable the prior trap's subtree isolation.\n if (preexistingTrap === activeFocusTraps.getActiveTrap(trapStack) && revertState) {\n var _preexistingTrap$_set2;\n // [#1729] method MAY not exist if using `trapStack` option to share stack with older\n // versions of Focus-trap in the same DOM so use optional chaining here just in case\n // since this is a trap we may not have created from this instance of the library\n (_preexistingTrap$_set2 = preexistingTrap._setSubtreeIsolation) === null || _preexistingTrap$_set2 === void 0 || _preexistingTrap$_set2.call(preexistingTrap, true);\n }\n throw error;\n }\n return this;\n },\n deactivate: function deactivate(deactivateOptions) {\n if (!state.active) {\n return this;\n }\n var options = _objectSpread2({\n onDeactivate: config.onDeactivate,\n onPostDeactivate: config.onPostDeactivate,\n checkCanReturnFocus: config.checkCanReturnFocus\n }, deactivateOptions);\n clearTimeout(state.delayInitialFocusTimer); // noop if undefined\n state.delayInitialFocusTimer = undefined;\n\n // Prior to removing this trap from the trapStack, we need to remove any applications of `inert`.\n // This allows the next trap down to update its tabbable nodes properly.\n //\n // If this trap is not top of the stack, don't change any current isolation.\n if (!state.paused) {\n trap._setSubtreeIsolation(false);\n }\n state.alreadySilent.clear();\n removeListeners();\n state.active = false;\n state.paused = false;\n updateObservedNodes();\n activeFocusTraps.deactivateTrap(trapStack, trap);\n var onDeactivate = getOption(options, 'onDeactivate');\n var onPostDeactivate = getOption(options, 'onPostDeactivate');\n var checkCanReturnFocus = getOption(options, 'checkCanReturnFocus');\n var delayReturnFocus = getOption(options, 'delayReturnFocus');\n var returnFocus = getOption(options, 'returnFocus', 'returnFocusOnDeactivate');\n onDeactivate === null || onDeactivate === void 0 || onDeactivate({\n trap: trap\n });\n var completeDeactivation = function completeDeactivation() {\n if (returnFocus) {\n _tryFocus(getReturnFocusNode(state.nodeFocusedBeforeActivation));\n }\n onPostDeactivate === null || onPostDeactivate === void 0 || onPostDeactivate({\n trap: trap\n });\n };\n var finishDeactivation = function finishDeactivation() {\n if (delayReturnFocus && returnFocus) {\n delay(completeDeactivation);\n } else {\n completeDeactivation();\n }\n };\n if (returnFocus && checkCanReturnFocus) {\n checkCanReturnFocus(getReturnFocusNode(state.nodeFocusedBeforeActivation)).then(finishDeactivation, finishDeactivation);\n return this;\n }\n finishDeactivation();\n return this;\n },\n pause: function pause(pauseOptions) {\n if (!state.active) {\n return this;\n }\n state.manuallyPaused = true;\n return this._setPausedState(true, pauseOptions);\n },\n unpause: function unpause(unpauseOptions) {\n if (!state.active) {\n return this;\n }\n state.manuallyPaused = false;\n if (trapStack[trapStack.length - 1] !== this) {\n return this;\n }\n return this._setPausedState(false, unpauseOptions);\n },\n updateContainerElements: function updateContainerElements(containerElements) {\n var elementsAsArray = [].concat(containerElements).filter(Boolean);\n state.containers = elementsAsArray.map(function (element) {\n return typeof element === 'string' ? doc.querySelector(element) : element;\n });\n if (config.isolateSubtrees) {\n collectAdjacentElements(state.containers);\n }\n if (state.active) {\n updateTabbableNodes();\n if (!state.paused) {\n trap._setSubtreeIsolation(true);\n }\n }\n updateObservedNodes();\n return this;\n }\n };\n Object.defineProperties(trap, {\n _isManuallyPaused: {\n value: function value() {\n return state.manuallyPaused;\n }\n },\n _setPausedState: {\n value: function value(paused, options) {\n if (state.paused === paused) {\n return this;\n }\n state.paused = paused;\n if (paused) {\n var onPause = getOption(options, 'onPause');\n var onPostPause = getOption(options, 'onPostPause');\n onPause === null || onPause === void 0 || onPause({\n trap: trap\n });\n removeListeners();\n trap._setSubtreeIsolation(false);\n updateObservedNodes();\n onPostPause === null || onPostPause === void 0 || onPostPause({\n trap: trap\n });\n } else {\n var onUnpause = getOption(options, 'onUnpause');\n var onPostUnpause = getOption(options, 'onPostUnpause');\n onUnpause === null || onUnpause === void 0 || onUnpause({\n trap: trap\n });\n var finishUnpause = function finishUnpause() {\n updateTabbableNodes();\n var afterListeners = function afterListeners() {\n trap._setSubtreeIsolation(true);\n updateObservedNodes();\n onPostUnpause === null || onPostUnpause === void 0 || onPostUnpause({\n trap: trap\n });\n };\n\n // NOTE: wait for initial focus node to get focused (whether activation is fully,\n // partially, or not asynchronous) before we potentially isolate the subtrees\n // with aria-hidden while focus is still in some other subtree and not yet in\n // the trap, resulting in some browsers (e.g. Chrome) logging to the console that\n // they, \"Blocked aria-hidden on an element because its descendant retained focus...\"\n var listenersPromise = addListeners();\n if (listenersPromise) {\n listenersPromise.then(afterListeners);\n } else {\n afterListeners();\n }\n };\n finishUnpause();\n }\n return this;\n }\n },\n _setSubtreeIsolation: {\n value: function value(isEnabled) {\n if (config.isolateSubtrees) {\n state.adjacentElements.forEach(function (el) {\n var _el$getAttribute;\n if (isEnabled) {\n switch (config.isolateSubtrees) {\n case 'aria-hidden':\n // check both attribute and property to ensure initial state is captured\n // correctly across different browsers and test environments (like JSDOM)\n if (el.ariaHidden === 'true' || ((_el$getAttribute = el.getAttribute('aria-hidden')) === null || _el$getAttribute === void 0 ? void 0 : _el$getAttribute.toLowerCase()) === 'true') {\n state.alreadySilent.add(el);\n }\n el.setAttribute('aria-hidden', 'true');\n break;\n default:\n // check both attribute and property to ensure initial state is captured\n // correctly across different browsers and test environments (like JSDOM)\n if (el.inert || el.hasAttribute('inert')) {\n state.alreadySilent.add(el);\n }\n el.setAttribute('inert', true);\n break;\n }\n } else {\n if (state.alreadySilent.has(el)) ; else {\n switch (config.isolateSubtrees) {\n case 'aria-hidden':\n el.removeAttribute('aria-hidden');\n break;\n default:\n el.removeAttribute('inert');\n break;\n }\n }\n }\n });\n }\n }\n }\n });\n\n // initialize container elements\n trap.updateContainerElements(elements);\n return trap;\n};\n\nexport { createFocusTrap };\n//# sourceMappingURL=focus-trap.esm.js.map\n","import '../assets/NcPopover-CAoHhjKa.css';\nimport { options, Dropdown } from \"floating-vue\";\nimport { createFocusTrap } from \"focus-trap\";\nimport { defineComponent, warn, resolveComponent, openBlock, createBlock, withCtx, createVNode, renderSlot, normalizeProps, guardReactiveProps } from \"vue\";\nimport { g as getTrapStack } from \"./focusTrap-HJQ4pqHV.mjs\";\nimport { l as logger } from \"./logger-D3RVzcfQ.mjs\";\nimport { i as isRtl } from \"./rtl-v0UOPAM7.mjs\";\nimport { _ as _export_sfc } from \"./_plugin-vue_export-helper-1tPrXgE0.mjs\";\nconst _sfc_main$1 = defineComponent({\n name: \"NcPopoverTriggerProvider\",\n provide() {\n return {\n \"NcPopover:trigger:shown\": () => this.shown,\n \"NcPopover:trigger:attrs\": () => this.triggerAttrs\n };\n },\n props: {\n /**\n * Is the popover currently shown\n */\n shown: {\n type: Boolean,\n required: true\n },\n /**\n * ARIA Role of the popup\n */\n popupRole: {\n type: String,\n default: void 0\n }\n },\n computed: {\n triggerAttrs() {\n return {\n \"aria-haspopup\": this.popupRole,\n \"aria-expanded\": this.shown.toString()\n };\n }\n },\n render() {\n return this.$slots.default?.({\n attrs: this.triggerAttrs\n });\n }\n});\nconst ncPopover = \"_ncPopover_zfWgY\";\nconst style0 = {\n \"material-design-icon\": \"_material-design-icon_bkeq-\",\n ncPopover\n};\nconst theme = \"nc-popover-9\";\noptions.themes[theme] = structuredClone(options.themes.dropdown);\nconst _sfc_main = {\n name: \"NcPopover\",\n components: {\n Dropdown,\n NcPopoverTriggerProvider: _sfc_main$1\n },\n props: {\n /**\n * Element to use for calculating the popper boundary (size and position).\n * Either a query string or the actual HTMLElement.\n */\n boundary: {\n type: [String, Object],\n default: \"\"\n },\n /**\n * Automatically hide the popover on click outside.\n *\n * @deprecated Use `no-close-on-click-outside` instead (inverted value)\n */\n closeOnClickOutside: {\n type: Boolean,\n // eslint-disable-next-line vue/no-boolean-default\n default: true\n },\n /**\n * Disable the automatic popover hide on click outside.\n */\n noCloseOnClickOutside: {\n type: Boolean,\n default: false\n },\n /**\n * Container where to mount the popover.\n * Either a select query or `false` to mount to the parent node.\n */\n container: {\n type: [Boolean, String],\n default: \"body\"\n },\n /**\n * Delay for showing or hiding the popover.\n *\n * Can either be a number or an object to configure different delays (`{ show: number, hide: number }`).\n */\n delay: {\n type: [Number, Object],\n default: 0\n },\n /**\n * Disable the popover focus trap.\n */\n noFocusTrap: {\n type: Boolean,\n default: false\n },\n /**\n * Where to place the popover.\n *\n * This consists of the vertical placement and the horizontal placement.\n * E.g. `bottom` will place the popover on the bottom of the trigger (horizontally centered),\n * while `buttom-start` will horizontally align the popover on the logical start (e.g. for LTR layout on the left.).\n * The `start` or `end` placement will align the popover on the left or right side or the trigger element.\n *\n * @type {'auto'|'auto-start'|'auto-end'|'top'|'top-start'|'top-end'|'bottom'|'bottom-start'|'bottom-end'|'start'|'end'}\n */\n placement: {\n type: String,\n default: \"bottom\"\n },\n /**\n * Class to be applied to the popover base\n */\n popoverBaseClass: {\n type: String,\n default: \"\"\n },\n /**\n * Events that trigger the popover on the popover container itself.\n * This is useful if you set `triggers` to `hover` and also want the popover to stay open while hovering the popover itself.\n *\n * It is possible to also pass an object to define different triggers for hide and show `{ show: ['hover'], hide: ['click'] }`.\n */\n popoverTriggers: {\n type: [Array, Object],\n default: null\n },\n /**\n * Popup role\n *\n * @see https://developer.mozilla.org/en-US/docs/Web/Accessibility/ARIA/Attributes/aria-haspopup#values\n */\n popupRole: {\n type: String,\n default: void 0,\n validator: (value) => [\"menu\", \"listbox\", \"tree\", \"grid\", \"dialog\", \"true\"].includes(value)\n },\n /**\n * Set element to return focus to after focus trap deactivation\n *\n * @type {SetReturnFocus}\n */\n setReturnFocus: {\n default: void 0,\n type: [Boolean, HTMLElement, SVGElement, String, Function]\n },\n /**\n * Show or hide the popper\n */\n shown: {\n type: Boolean,\n default: false\n },\n /**\n * Events that trigger the popover.\n *\n * If you pass an empty array then only the `shown` prop can control the popover state.\n * Following events are available:\n * - `'hover'`\n * - `'click'`\n * - `'focus'`\n * - `'touch'`\n *\n * It is also possible to pass an object to have different events for show and hide:\n * `{ hide: ['click'], show: ['click', 'hover'] }`\n */\n triggers: {\n type: [Array, Object],\n default: () => [\"click\"]\n }\n },\n emits: [\n \"afterShow\",\n \"afterHide\",\n \"update:shown\"\n ],\n setup() {\n return {\n theme\n };\n },\n data() {\n return {\n internalShown: this.shown\n };\n },\n computed: {\n popperTriggers() {\n if (this.popoverTriggers && Array.isArray(this.popoverTriggers)) {\n return this.popoverTriggers;\n }\n return void 0;\n },\n popperHideTriggers() {\n if (this.popoverTriggers && typeof this.popoverTriggers === \"object\") {\n return this.popoverTriggers.hide;\n }\n return void 0;\n },\n popperShowTriggers() {\n if (this.popoverTriggers && typeof this.popoverTriggers === \"object\") {\n return this.popoverTriggers.show;\n }\n return void 0;\n },\n internalTriggers() {\n if (this.triggers && Array.isArray(this.triggers)) {\n return this.triggers;\n }\n return void 0;\n },\n hideTriggers() {\n if (this.triggers && typeof this.triggers === \"object\") {\n return this.triggers.hide;\n }\n return void 0;\n },\n showTriggers() {\n if (this.triggers && typeof this.triggers === \"object\") {\n return this.triggers.show;\n }\n return void 0;\n },\n internalPlacement() {\n if (this.placement === \"start\") {\n return isRtl ? \"right\" : \"left\";\n } else if (this.placement === \"end\") {\n return isRtl ? \"left\" : \"right\";\n }\n return this.placement;\n }\n },\n watch: {\n shown(value) {\n this.internalShown = value;\n },\n internalShown(value) {\n this.$emit(\"update:shown\", value);\n }\n },\n mounted() {\n this.checkTriggerA11y();\n },\n beforeUnmount() {\n this.clearFocusTrap();\n this.clearEscapeStopPropagation();\n },\n methods: {\n /**\n * Check if the trigger has all required a11y attributes.\n * Important to check custom trigger button.\n */\n checkTriggerA11y() {\n if (window.OC?.debug) {\n const triggerContainer = this.getPopoverTriggerContainerElement();\n const requiredTriggerButton = triggerContainer.querySelector(\"[aria-expanded]\");\n if (!requiredTriggerButton) {\n warn(\"It looks like you are using a custom button as a <NcPopover> or other popover #trigger. If you are not using <NcButton> as a trigger, you need to bind attrs from the #trigger slot props to your custom button. See <NcPopover> docs for an example.\");\n }\n }\n },\n /**\n * Remove incorrect aria-describedby attribute from the trigger.\n *\n * @see https://github.com/Akryum/floating-vue/blob/8d4f7125aae0e3ea00ba4093d6d2001ab15058f1/packages/floating-vue/src/components/Popper.ts#L734\n */\n removeFloatingVueAriaDescribedBy() {\n const triggerContainer = this.getPopoverTriggerContainerElement();\n const triggerElements = triggerContainer.querySelectorAll(\"[data-popper-shown]\");\n for (const el of triggerElements) {\n el.removeAttribute(\"aria-describedby\");\n }\n },\n /**\n * @return {HTMLElement|undefined}\n */\n getPopoverContentElement() {\n return this.$refs.popover?.$refs.popperContent?.$el;\n },\n /**\n * @return {HTMLElement|undefined}\n */\n getPopoverTriggerContainerElement() {\n return this.$refs.popover?.$refs.popper?.$refs.reference;\n },\n /**\n * Add focus trap for accessibility.\n */\n async useFocusTrap() {\n await this.$nextTick();\n if (this.noFocusTrap) {\n return;\n }\n const el = this.getPopoverContentElement();\n el.tabIndex = -1;\n if (!el) {\n return;\n }\n this.$focusTrap = createFocusTrap(el, {\n // Prevents to lose focus using esc key\n // Focus will be release when popover be hide\n escapeDeactivates: false,\n allowOutsideClick: true,\n setReturnFocus: this.setReturnFocus,\n trapStack: getTrapStack(),\n fallBackFocus: el\n });\n this.$focusTrap.activate();\n },\n /**\n * Remove focus trap\n *\n * @param {object} options The configuration options for focusTrap\n */\n clearFocusTrap(options2 = {}) {\n try {\n this.$focusTrap?.deactivate(options2);\n this.$focusTrap = null;\n } catch (error) {\n logger.warn(\"[NcPopover] Failed to clear focus trap\", { error });\n }\n },\n /**\n * Add stopPropagation for Escape.\n * It prevents global Escape handling after closing popover.\n *\n * Manual event handling is used here instead of v-on because there is no direct access to the node.\n * Alternative - wrap <template #popover> in a div wrapper.\n */\n addEscapeStopPropagation() {\n const el = this.getPopoverContentElement();\n el?.addEventListener(\"keydown\", this.stopKeydownEscapeHandler);\n },\n /**\n * Remove stop Escape handler\n */\n clearEscapeStopPropagation() {\n const el = this.getPopoverContentElement();\n el?.removeEventListener(\"keydown\", this.stopKeydownEscapeHandler);\n },\n /**\n * @param {KeyboardEvent} event - native keydown event\n */\n stopKeydownEscapeHandler(event) {\n if (event.type === \"keydown\" && event.key === \"Escape\") {\n event.stopPropagation();\n }\n },\n async afterShow() {\n this.getPopoverContentElement().addEventListener(\"transitionend\", () => {\n this.$emit(\"afterShow\");\n }, { once: true, passive: true });\n this.removeFloatingVueAriaDescribedBy();\n await this.$nextTick();\n await this.useFocusTrap();\n this.addEscapeStopPropagation();\n },\n afterHide() {\n this.getPopoverContentElement()?.addEventListener(\"transitionend\", () => {\n this.$emit(\"afterHide\");\n }, { once: true, passive: true });\n this.clearFocusTrap();\n this.clearEscapeStopPropagation();\n }\n }\n};\nfunction _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {\n const _component_NcPopoverTriggerProvider = resolveComponent(\"NcPopoverTriggerProvider\");\n const _component_Dropdown = resolveComponent(\"Dropdown\");\n return openBlock(), createBlock(_component_Dropdown, {\n ref: \"popover\",\n shown: $data.internalShown,\n \"onUpdate:shown\": [\n _cache[0] || (_cache[0] = ($event) => $data.internalShown = $event),\n _cache[1] || (_cache[1] = ($event) => $data.internalShown = $event)\n ],\n arrowPadding: 10,\n autoHide: !$props.noCloseOnClickOutside && $props.closeOnClickOutside,\n boundary: $props.boundary || void 0,\n container: $props.container,\n delay: $props.delay,\n distance: 10,\n handleResize: \"\",\n noAutoFocus: true,\n placement: $options.internalPlacement,\n popperClass: [_ctx.$style.ncPopover, $props.popoverBaseClass],\n popperTriggers: $options.popperTriggers,\n popperHideTriggers: $options.popperHideTriggers,\n popperShowTriggers: $options.popperShowTriggers,\n theme: $setup.theme,\n triggers: $options.internalTriggers,\n hideTriggers: $options.hideTriggers,\n showTriggers: $options.showTriggers,\n onApplyShow: $options.afterShow,\n onApplyHide: $options.afterHide\n }, {\n popper: withCtx((slotProps) => [\n renderSlot(_ctx.$slots, \"default\", normalizeProps(guardReactiveProps(slotProps)))\n ]),\n default: withCtx(() => [\n createVNode(_component_NcPopoverTriggerProvider, {\n shown: $data.internalShown,\n popupRole: $props.popupRole\n }, {\n default: withCtx((slotProps) => [\n renderSlot(_ctx.$slots, \"trigger\", normalizeProps(guardReactiveProps(slotProps)))\n ]),\n _: 3\n }, 8, [\"shown\", \"popupRole\"])\n ]),\n _: 3\n }, 8, [\"shown\", \"autoHide\", \"boundary\", \"container\", \"delay\", \"placement\", \"popperClass\", \"popperTriggers\", \"popperHideTriggers\", \"popperShowTriggers\", \"theme\", \"triggers\", \"hideTriggers\", \"showTriggers\", \"onApplyShow\", \"onApplyHide\"]);\n}\nconst cssModules = {\n \"$style\": style0\n};\nconst NcPopover = /* @__PURE__ */ _export_sfc(_sfc_main, [[\"render\", _sfc_render], [\"__cssModules\", cssModules]]);\nexport {\n NcPopover as N\n};\n//# sourceMappingURL=NcPopover-B87bEPLq.mjs.map\n","import '../assets/NcActions-y7ehwPSp.css';\nimport { openBlock, createElementBlock, mergeProps, createElementVNode, toDisplayString, createCommentVNode, Comment, Fragment, Text, warn, h, computed } from \"vue\";\nimport { _ as _export_sfc } from \"./_plugin-vue_export-helper-1tPrXgE0.mjs\";\nimport { u as useTrapStackControl } from \"./useTrapStackControl-B6cEicto.mjs\";\nimport { r as register, F as t4, a as t } from \"./_l10n-wdIzZwir.mjs\";\nimport { c as createElementId } from \"./createElementId-DhjFt1I9.mjs\";\nimport { N as NcButton } from \"./NcButton-jvoYS2my.mjs\";\nimport { N as NcPopover } from \"./NcPopover-B87bEPLq.mjs\";\nimport { N as NC_ACTIONS_CLOSE_MENU, a as NC_ACTIONS_IS_SEMANTIC_MENU } from \"./useNcActions-BzPO2c4h.mjs\";\nconst _sfc_main$1 = {\n name: \"DotsHorizontalIcon\",\n emits: [\"click\"],\n props: {\n title: {\n type: String\n },\n fillColor: {\n type: String,\n default: \"currentColor\"\n },\n size: {\n type: Number,\n default: 24\n }\n }\n};\nconst _hoisted_1 = [\"aria-hidden\", \"aria-label\"];\nconst _hoisted_2 = [\"fill\", \"width\", \"height\"];\nconst _hoisted_3 = { d: \"M16,12A2,2 0 0,1 18,10A2,2 0 0,1 20,12A2,2 0 0,1 18,14A2,2 0 0,1 16,12M10,12A2,2 0 0,1 12,10A2,2 0 0,1 14,12A2,2 0 0,1 12,14A2,2 0 0,1 10,12M4,12A2,2 0 0,1 6,10A2,2 0 0,1 8,12A2,2 0 0,1 6,14A2,2 0 0,1 4,12Z\" };\nconst _hoisted_4 = { key: 0 };\nfunction _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {\n return openBlock(), createElementBlock(\"span\", mergeProps(_ctx.$attrs, {\n \"aria-hidden\": $props.title ? null : \"true\",\n \"aria-label\": $props.title,\n class: \"material-design-icon dots-horizontal-icon\",\n role: \"img\",\n onClick: _cache[0] || (_cache[0] = ($event) => _ctx.$emit(\"click\", $event))\n }), [\n (openBlock(), createElementBlock(\"svg\", {\n fill: $props.fillColor,\n class: \"material-design-icon__svg\",\n width: $props.size,\n height: $props.size,\n viewBox: \"0 0 24 24\"\n }, [\n createElementVNode(\"path\", _hoisted_3, [\n $props.title ? (openBlock(), createElementBlock(\"title\", _hoisted_4, toDisplayString($props.title), 1)) : createCommentVNode(\"\", true)\n ])\n ], 8, _hoisted_2))\n ], 16, _hoisted_1);\n}\nconst IconDotsHorizontal = /* @__PURE__ */ _export_sfc(_sfc_main$1, [[\"render\", _sfc_render]]);\nregister(t4);\nfunction isSlotPopulated(vnodes) {\n return Array.isArray(vnodes) && vnodes.some((node) => {\n if (node === null) {\n return false;\n } else if (typeof node === \"object\") {\n const vnode = node;\n if (vnode.type === Comment) {\n return false;\n } else if (vnode.type === Fragment && !isSlotPopulated(vnode.children)) {\n return false;\n } else if (vnode.type === Text && !vnode.children.trim()) {\n return false;\n }\n }\n return true;\n });\n}\nconst focusableSelector = \".focusable\";\nconst _sfc_main = {\n name: \"NcActions\",\n components: {\n NcButton,\n NcPopover\n },\n provide() {\n return {\n /**\n * NcActions can be used as:\n * - Application menu (has menu role)\n * - Navigation (has no specific role, should be used an element with navigation role)\n * - Popover with plain text or text inputs (has no specific role)\n * Depending on the usage (used items), the menu and its items should have different roles for a11y.\n * Provide the role for NcAction* components in the NcActions content.\n *\n * @type {import('vue').ComputedRef<boolean>}\n */\n [NC_ACTIONS_IS_SEMANTIC_MENU]: computed(() => this.actionsMenuSemanticType === \"menu\"),\n [NC_ACTIONS_CLOSE_MENU]: this.closeMenu\n };\n },\n props: {\n /**\n * Specify the open state of the popover menu\n */\n open: {\n type: Boolean,\n default: false\n },\n /**\n * This disables the internal open management,\n * so the actions menu only respects the `open` prop.\n * This is e.g. necessary for the NcAvatar component\n * to only open the actions menu after loading it's entries has finished.\n */\n manualOpen: {\n type: Boolean,\n default: false\n },\n /**\n * Force the actions to display in a three dot menu\n */\n forceMenu: {\n type: Boolean,\n default: false\n },\n /**\n * Force the name to show for single actions\n */\n forceName: {\n type: Boolean,\n default: false\n },\n /**\n * Specify the menu name\n */\n menuName: {\n type: String,\n default: null\n },\n /**\n * Apply primary styling for this menu\n */\n primary: {\n type: Boolean,\n default: false\n },\n /**\n * Icon to show for the toggle menu button\n * when more than one action is inside the actions component.\n * Only replace the default three-dot icon if really necessary.\n */\n defaultIcon: {\n type: String,\n default: \"\"\n },\n /**\n * Aria label for the actions menu.\n *\n * If `menuName` is defined this will not be used to prevent\n * any accessible name conflicts. This ensures that the\n * element can be activated via voice input.\n */\n ariaLabel: {\n type: String,\n default: t(\"Actions\")\n },\n /**\n * Wanted direction of the menu\n */\n placement: {\n type: String,\n default: \"bottom\"\n },\n /**\n * DOM element for the actions' popover boundaries\n */\n boundariesElement: {\n type: Element,\n default: () => document.getElementById(\"content-vue\") ?? document.querySelector(\"body\")\n },\n /**\n * Selector for the actions' popover container\n */\n container: {\n type: [Boolean, String, Object, Element],\n default: \"body\"\n },\n /**\n * Disabled state of the main button (single action or menu toggle)\n */\n disabled: {\n type: Boolean,\n default: false\n },\n /**\n * Display x items inline out of the dropdown menu\n * Will be ignored if `forceMenu` is set\n */\n inline: {\n type: Number,\n default: 0\n },\n /**\n * Specifies the button variant used for trigger and single actions buttons.\n *\n * If left empty, the default button style will be applied.\n *\n * @since 8.23.0\n */\n variant: {\n type: String,\n validator(value) {\n return [\"primary\", \"secondary\", \"tertiary\", \"tertiary-no-background\", \"tertiary-on-primary\", \"error\", \"warning\", \"success\"].includes(value);\n },\n default: null\n },\n /**\n * Specifies whether the button should span all the available width.\n */\n wide: {\n type: Boolean,\n default: false\n },\n /**\n * Specify the size used for trigger and single actions buttons.\n *\n * If left empty, the default button size will be applied.\n */\n size: {\n type: String,\n default: \"normal\",\n validator(value) {\n return [\"small\", \"normal\", \"large\"].includes(value);\n }\n }\n },\n emits: [\n \"click\",\n \"blur\",\n \"focus\",\n \"close\",\n \"closed\",\n \"open\",\n \"opened\",\n \"update:open\"\n ],\n setup() {\n const randomId = createElementId();\n return {\n randomId\n };\n },\n data() {\n return {\n opened: this.open,\n focusIndex: 0,\n /**\n * @type {'menu'|'navigation'|'dialog'|'tooltip'|'unknown'}\n */\n actionsMenuSemanticType: \"unknown\"\n };\n },\n computed: {\n triggerButtonVariant() {\n return this.variant || (this.primary ? \"primary\" : this.menuName ? \"secondary\" : \"tertiary\");\n },\n /**\n * A11y roles and keyboard navigation configuration depending on the semantic type\n */\n config() {\n const configs = {\n menu: {\n popupRole: \"menu\",\n withArrowNavigation: true,\n withTabNavigation: false,\n withFocusTrap: false\n },\n navigation: {\n popupRole: void 0,\n withArrowNavigation: false,\n withTabNavigation: true,\n withFocusTrap: false\n },\n dialog: {\n popupRole: \"dialog\",\n withArrowNavigation: false,\n withTabNavigation: true,\n withFocusTrap: true\n },\n tooltip: {\n popupRole: void 0,\n withArrowNavigation: false,\n withTabNavigation: false,\n withFocusTrap: false\n },\n // Due to Vue limitations, we sometimes cannot determine the true type\n // As a fallback use both arrow navigation and focus trap\n unknown: {\n popupRole: void 0,\n role: void 0,\n withArrowNavigation: true,\n withTabNavigation: false,\n withFocusTrap: true\n }\n };\n return configs[this.actionsMenuSemanticType];\n },\n withFocusTrap() {\n return this.config.withFocusTrap;\n }\n },\n watch: {\n // Watch parent prop\n open(state) {\n if (state === this.opened) {\n return;\n }\n this.opened = state;\n },\n opened() {\n if (this.opened) {\n document.body.addEventListener(\"keydown\", this.handleEscapePressed);\n } else {\n document.body.removeEventListener(\"keydown\", this.handleEscapePressed);\n }\n }\n },\n created() {\n useTrapStackControl(() => this.opened, {\n disabled: () => this.config.withFocusTrap\n });\n if (\"ariaHidden\" in this.$attrs) {\n warn(\"[NcActions]: Do not set the ariaHidden attribute as the root element will inherit the incorrect aria-hidden.\");\n }\n },\n methods: {\n /**\n * Get the name of the action component\n *\n * @param {import('vue').VNode} action - a vnode with a NcAction* component instance\n * @return {string} the name of the action component\n */\n getActionName(action) {\n return action?.type?.name;\n },\n /**\n * Do we have exactly one Action and\n * is it allowed as a standalone element?\n *\n * @param {import('vue').VNode} action The action to check\n * @return {boolean}\n */\n isValidSingleAction(action) {\n return [\"NcActionButton\", \"NcActionLink\", \"NcActionRouter\"].includes(this.getActionName(action));\n },\n isAction(action) {\n return this.getActionName(action)?.startsWith?.(\"NcAction\");\n },\n /**\n * Check whether a icon prop value is an URL or not\n *\n * @param {string} url The icon prop value\n */\n isIconUrl(url) {\n try {\n return !!new URL(url, url.startsWith(\"/\") ? window.location.origin : void 0);\n } catch {\n return false;\n }\n },\n // MENU STATE MANAGEMENT\n toggleMenu(state) {\n if (state) {\n this.openMenu();\n } else {\n this.closeMenu();\n }\n },\n openMenu() {\n if (this.opened) {\n return;\n }\n this.opened = true;\n this.$emit(\"update:open\", true);\n this.$emit(\"open\");\n },\n async closeMenu(returnFocus = true) {\n if (!this.opened) {\n return;\n }\n await this.$nextTick();\n this.opened = false;\n this.$refs.popover?.clearFocusTrap({ returnFocus });\n this.$emit(\"update:open\", false);\n this.$emit(\"close\");\n this.focusIndex = 0;\n if (returnFocus) {\n this.$refs.triggerButton?.$el.focus();\n }\n },\n /**\n * Called when popover is shown after the show delay\n */\n onOpened() {\n this.$nextTick(() => {\n this.focusFirstAction(null);\n this.$emit(\"opened\");\n });\n },\n onClosed() {\n this.$emit(\"closed\");\n },\n // MENU KEYS & FOCUS MANAGEMENT\n /**\n * @return {HTMLElement|null}\n */\n getCurrentActiveMenuItemElement() {\n return this.$refs.menu.querySelector(\"li.active\");\n },\n /**\n * @return {NodeList<HTMLElement>}\n */\n getFocusableMenuItemElements() {\n return this.$refs.menu.querySelectorAll(focusableSelector);\n },\n /**\n * Dispatches the keydown listener to different handlers\n *\n * @param {object} event The keydown event\n */\n onKeydown(event) {\n if (event.key === \"Tab\") {\n if (this.config.withFocusTrap) {\n return;\n }\n if (!this.config.withTabNavigation) {\n this.closeMenu(true);\n return;\n }\n event.preventDefault();\n const focusList = this.getFocusableMenuItemElements();\n const focusIndex = [...focusList].indexOf(document.activeElement);\n if (focusIndex === -1) {\n return;\n }\n const newFocusIndex = event.shiftKey ? focusIndex - 1 : focusIndex + 1;\n if (newFocusIndex < 0 || newFocusIndex === focusList.length) {\n this.closeMenu(true);\n }\n this.focusIndex = newFocusIndex;\n this.focusAction();\n return;\n }\n if (this.config.withArrowNavigation) {\n if (event.key === \"ArrowUp\") {\n this.focusPreviousAction(event);\n }\n if (event.key === \"ArrowDown\") {\n this.focusNextAction(event);\n }\n if (event.key === \"PageUp\") {\n this.focusFirstAction(event);\n }\n if (event.key === \"PageDown\") {\n this.focusLastAction(event);\n }\n }\n this.handleEscapePressed(event);\n },\n onTriggerKeydown(event) {\n if (event.key === \"Escape\") {\n if (this.actionsMenuSemanticType === \"tooltip\") {\n this.closeMenu();\n }\n }\n },\n handleEscapePressed(event) {\n if (event.key === \"Escape\") {\n this.closeMenu();\n event.preventDefault();\n }\n },\n removeCurrentActive() {\n const currentActiveElement = this.$refs.menu.querySelector(\"li.active\");\n if (currentActiveElement) {\n currentActiveElement.classList.remove(\"active\");\n }\n },\n focusAction() {\n const focusElement = this.getFocusableMenuItemElements()[this.focusIndex];\n if (focusElement) {\n this.removeCurrentActive();\n const liMenuParent = focusElement.closest(\"li.action\");\n focusElement.focus();\n if (liMenuParent) {\n liMenuParent.classList.add(\"active\");\n }\n }\n },\n focusPreviousAction(event) {\n if (this.opened) {\n if (this.focusIndex === 0) {\n this.focusLastAction(event);\n } else {\n this.preventIfEvent(event);\n this.focusIndex = this.focusIndex - 1;\n }\n this.focusAction();\n }\n },\n focusNextAction(event) {\n if (this.opened) {\n const indexLength = this.getFocusableMenuItemElements().length - 1;\n if (this.focusIndex === indexLength) {\n this.focusFirstAction(event);\n } else {\n this.preventIfEvent(event);\n this.focusIndex = this.focusIndex + 1;\n }\n this.focusAction();\n }\n },\n focusFirstAction(event) {\n if (this.opened) {\n this.preventIfEvent(event);\n const firstCheckedIndex = [...this.getFocusableMenuItemElements()].findIndex((button) => {\n return button.getAttribute(\"aria-checked\") === \"true\" && button.getAttribute(\"role\") === \"menuitemradio\";\n });\n this.focusIndex = firstCheckedIndex > -1 ? firstCheckedIndex : 0;\n this.focusAction();\n }\n },\n focusLastAction(event) {\n if (this.opened) {\n this.preventIfEvent(event);\n this.focusIndex = this.getFocusableMenuItemElements().length - 1;\n this.focusAction();\n }\n },\n preventIfEvent(event) {\n if (event) {\n event.preventDefault();\n event.stopPropagation();\n }\n },\n onFocus(event) {\n this.$emit(\"focus\", event);\n },\n onBlur(event) {\n this.$emit(\"blur\", event);\n if (this.actionsMenuSemanticType === \"tooltip\") {\n if (this.$refs.menu && this.getFocusableMenuItemElements().length === 0) {\n this.closeMenu(false);\n }\n }\n },\n onClick(event) {\n this.$emit(\"click\", event);\n }\n },\n /**\n * The render function to display the component\n *\n * @return {object|undefined} The created VNode\n */\n render() {\n const actions = [];\n const findActions = (vnodes, actions2) => {\n vnodes.forEach((vnode) => {\n if (this.isAction(vnode)) {\n actions2.push(vnode);\n return;\n }\n if (vnode.type === Fragment) {\n findActions(vnode.children, actions2);\n }\n });\n };\n findActions(this.$slots.default?.(), actions);\n if (actions.length === 0) {\n return;\n }\n let validInlineActions = actions.filter(this.isValidSingleAction);\n if (this.forceMenu && validInlineActions.length > 0 && this.inline > 0) {\n warn(\"Specifying forceMenu will ignore any inline actions rendering.\");\n validInlineActions = [];\n }\n const inlineActions = validInlineActions.slice(0, this.inline);\n const menuActions = actions.filter((action) => !inlineActions.includes(action));\n const menuItemsActions = [\"NcActionButton\", \"NcActionButtonGroup\", \"NcActionCheckbox\", \"NcActionRadio\"];\n const textInputActions = [\"NcActionInput\", \"NcActionTextEditable\"];\n const linkActions = [\"NcActionLink\", \"NcActionRouter\"];\n const hasTextInputAction = menuActions.some((action) => textInputActions.includes(this.getActionName(action)));\n const hasMenuItemAction = menuActions.some((action) => menuItemsActions.includes(this.getActionName(action)));\n const hasLinkAction = menuActions.some((action) => linkActions.includes(this.getActionName(action)));\n if (hasTextInputAction) {\n this.actionsMenuSemanticType = \"dialog\";\n } else if (hasMenuItemAction) {\n this.actionsMenuSemanticType = \"menu\";\n } else if (hasLinkAction) {\n this.actionsMenuSemanticType = \"navigation\";\n } else {\n const ncActions = actions.filter((action) => this.getActionName(action).startsWith(\"NcAction\"));\n if (ncActions.length === actions.length) {\n this.actionsMenuSemanticType = \"tooltip\";\n } else {\n this.actionsMenuSemanticType = \"unknown\";\n }\n }\n const renderInlineAction = (action) => {\n const iconProp = action?.props?.icon;\n const icon = action?.children?.icon?.()?.[0] ?? (this.isIconUrl(iconProp) ? h(\"img\", { class: \"action-item__menutoggle__icon\", src: iconProp, alt: \"\" }) : h(\"span\", { class: [\"icon\", iconProp] }));\n const text = action?.children?.default?.()?.[0]?.children?.trim();\n const buttonText = this.forceName ? text : \"\";\n let title = action?.props?.title;\n if (!(this.forceName || title)) {\n title = text;\n }\n const propsToForward = { ...action?.props ?? {} };\n const type = [\"submit\", \"reset\"].includes(propsToForward.type) ? propsToForward.modelValue : \"button\";\n delete propsToForward.modelValue;\n delete propsToForward.type;\n return h(\n NcButton,\n mergeProps(\n propsToForward,\n {\n class: [\n \"action-item action-item--single\",\n {\n \"action-item--wide\": this.wide\n }\n ],\n \"aria-label\": action?.props?.[\"aria-label\"] || text,\n title,\n disabled: this.disabled || action?.props?.disabled,\n pressed: action?.props?.modelValue,\n size: this.size,\n type,\n wide: this.wide,\n // If it has a menuName, we use a secondary button\n variant: this.variant || (buttonText ? \"secondary\" : \"tertiary\"),\n onFocus: this.onFocus,\n onBlur: this.onBlur,\n // forward any pressed state from NcButton just like NcActionButton does\n \"onUpdate:pressed\": action?.props?.[\"onUpdate:modelValue\"] ?? (() => {\n })\n }\n ),\n {\n default: () => buttonText,\n icon: () => icon\n }\n );\n };\n const renderActionsPopover = (actions2) => {\n const triggerIcon = isSlotPopulated(this.$slots.icon?.()) ? this.$slots.icon?.() : this.defaultIcon ? h(\"span\", { class: [\"icon\", this.defaultIcon] }) : h(IconDotsHorizontal, { size: 20 });\n const triggerRandomId = `${this.randomId}-trigger`;\n return h(\n NcPopover,\n {\n ref: \"popover\",\n delay: 0,\n shown: this.opened,\n placement: this.placement,\n boundary: this.boundariesElement,\n autoBoundaryMaxSize: true,\n container: this.container,\n ...this.manualOpen && {\n triggers: []\n },\n noCloseOnClickOutside: this.manualOpen,\n popoverBaseClass: \"action-item__popper\",\n popupRole: this.config.popupRole,\n setReturnFocus: this.config.withFocusTrap ? this.$refs.triggerButton?.$el : void 0,\n noFocusTrap: !this.config.withFocusTrap,\n \"onUpdate:shown\": this.toggleMenu,\n onAfterShow: this.onOpened,\n onAfterClose: this.onClosed\n },\n {\n trigger: () => h(NcButton, {\n id: triggerRandomId,\n class: \"action-item__menutoggle\",\n disabled: this.disabled,\n size: this.size,\n variant: this.triggerButtonVariant,\n wide: this.wide,\n ref: \"triggerButton\",\n \"aria-label\": this.menuName ? null : this.ariaLabel,\n // 'aria-controls' should only present together with a valid aria-haspopup\n \"aria-controls\": this.opened && this.config.popupRole ? this.randomId : null,\n onFocus: this.onFocus,\n onBlur: this.onBlur,\n onClick: this.onClick,\n onKeydown: this.onTriggerKeydown\n }, {\n icon: () => triggerIcon,\n default: () => this.menuName\n }),\n default: () => h(\"div\", {\n class: {\n open: this.opened\n },\n tabindex: \"-1\",\n onKeydown: this.onKeydown,\n ref: \"menu\"\n }, [\n h(\"ul\", {\n id: this.randomId,\n tabindex: \"-1\",\n ref: \"menuList\",\n role: this.config.popupRole,\n // For most roles a label is required (dialog, menu), but also in general nothing speaks against labelling a list.\n // It is even recommended to do so.\n \"aria-labelledby\": triggerRandomId,\n \"aria-modal\": this.actionsMenuSemanticType === \"dialog\" ? \"true\" : void 0\n }, [\n actions2\n ])\n ])\n }\n );\n };\n if (actions.length === 1 && validInlineActions.length === 1 && !this.forceMenu) {\n return renderInlineAction(actions[0]);\n }\n this.$nextTick(() => {\n if (this.opened && this.$refs.menu) {\n const isAnyActive = this.$refs.menu.querySelector(\"li.active\") || [];\n if (isAnyActive.length === 0) {\n this.focusFirstAction();\n }\n }\n });\n if (inlineActions.length > 0 && this.inline > 0) {\n return h(\n \"div\",\n {\n class: [\n \"action-items\",\n `action-item--${this.triggerButtonVariant}`\n ]\n },\n [\n // Render inline actions\n ...inlineActions.map(renderInlineAction),\n // render the rest within the popover menu\n menuActions.length > 0 ? h(\n \"div\",\n {\n class: [\n \"action-item\",\n {\n \"action-item--open\": this.opened\n }\n ]\n },\n [renderActionsPopover(menuActions)]\n ) : null\n ]\n );\n }\n return h(\n \"div\",\n {\n class: [\n \"action-item action-item--default-popover\",\n `action-item--${this.triggerButtonVariant}`,\n {\n \"action-item--open\": this.opened,\n \"action-item--wide\": this.wide\n }\n ]\n },\n [\n renderActionsPopover(actions)\n ]\n );\n }\n};\nconst NcActions = /* @__PURE__ */ _export_sfc(_sfc_main, [[\"__scopeId\", \"data-v-23e5cae7\"]]);\nexport {\n IconDotsHorizontal as I,\n NcActions as N,\n isSlotPopulated as i\n};\n//# sourceMappingURL=NcActions-C-wDqSrv.mjs.map\n","import { formatRelativeTime, getCanonicalLocale } from \"@nextcloud/l10n\";\nimport { computed, toValue, ref, watchEffect, onUnmounted, readonly } from \"vue\";\nimport { r as register, d as t2, a as t } from \"../../chunks/_l10n-wdIzZwir.mjs\";\nregister(t2);\nconst FEW_SECONDS_AGO = {\n long: t(\"a few seconds ago\"),\n short: t(\"seconds ago\"),\n // FOR TRANSLATORS: Shorter version of 'a few seconds ago'\n narrow: t(\"sec. ago\")\n // FOR TRANSLATORS: If possible in your language an even shorter version of 'a few seconds ago'\n};\nfunction useFormatRelativeTime(timestamp = Date.now(), opts = {}) {\n let timeoutId;\n const date = computed(() => new Date(toValue(timestamp)));\n const options = computed(() => {\n const { language, relativeTime: relativeTime2, ignoreSeconds } = toValue(opts);\n return {\n ...language && { language },\n ...relativeTime2 && { relativeTime: relativeTime2 },\n ignoreSeconds: ignoreSeconds ? FEW_SECONDS_AGO[relativeTime2 || \"long\"] : false\n };\n });\n const relativeTime = ref(\"\");\n watchEffect(() => updateRelativeTime());\n function updateRelativeTime() {\n relativeTime.value = formatRelativeTime(date.value, options.value);\n if (toValue(opts).update !== false) {\n const diff = Math.abs(Date.now() - new Date(toValue(timestamp)).getTime());\n const interval = diff > 12e4 || options.value.ignoreSeconds ? Math.min(diff / 60, 18e5) : 1e3;\n timeoutId = window.setTimeout(updateRelativeTime, interval);\n }\n }\n onUnmounted(() => timeoutId && window.clearTimeout(timeoutId));\n return readonly(relativeTime);\n}\nfunction useFormatTime(timestamp, opts) {\n const options = computed(() => ({\n locale: getCanonicalLocale(),\n format: { dateStyle: \"short\", timeStyle: \"medium\" },\n ...toValue(opts)\n }));\n const formatter = computed(() => new Intl.DateTimeFormat(options.value.locale, options.value.format));\n return computed(() => formatter.value.format(toValue(timestamp)));\n}\nexport {\n useFormatRelativeTime,\n useFormatTime\n};\n//# sourceMappingURL=index.mjs.map\n","const isMac = /mac|ipad|iphone|darwin/i.test(navigator.userAgent);\nexport {\n isMac as i\n};\n//# sourceMappingURL=platform-CC2ecGvV.mjs.map\n","import { onKeyStroke } from \"@vueuse/core\";\nimport { i as isMac } from \"../../chunks/platform-CC2ecGvV.mjs\";\nconst disableKeyboardShortcuts = window.OCP?.Accessibility?.disableKeyboardShortcuts?.();\nconst derivedKeysRegex = /^[a-zA-Z0-9]$/;\nconst nonAsciiPrintableRegex = /^[^\\x20-\\x7F]$/;\nfunction shouldIgnoreEvent(event, options) {\n if (!(event.target instanceof HTMLElement) || event.target instanceof HTMLInputElement || event.target instanceof HTMLTextAreaElement || event.target instanceof HTMLSelectElement || event.target.isContentEditable) {\n return true;\n }\n if (options.allowInModal) {\n return false;\n }\n return Array.from(document.getElementsByClassName(\"modal-mask\")).filter((el) => el.checkVisibility()).length > 0;\n}\nfunction eventHandler(callback, options) {\n return (event) => {\n const ctrlKeyPressed = isMac ? event.metaKey : event.ctrlKey;\n if (ctrlKeyPressed !== Boolean(options.ctrl)) {\n return;\n } else if (event.altKey !== Boolean(options.alt)) {\n return;\n } else if (options.shift !== void 0 && event.shiftKey !== Boolean(options.shift)) {\n return;\n } else if (shouldIgnoreEvent(event, options)) {\n return;\n }\n if (options.prevent) {\n event.preventDefault();\n }\n if (options.stop) {\n event.stopPropagation();\n }\n callback(event);\n };\n}\nfunction useHotKey(keysOrFilter, callback = () => {\n}, options = {}) {\n if (disableKeyboardShortcuts) {\n return () => {\n };\n }\n const validateKeyEvent = (event, key) => {\n if (event.key === key) {\n return true;\n }\n if (options.caseSensitive) {\n const isKeyInLowerCase = key === key.toLowerCase();\n const isEventKeyInLowerCase = event.key === event.key.toLowerCase();\n if (isKeyInLowerCase !== isEventKeyInLowerCase) {\n return false;\n }\n }\n if (derivedKeysRegex.test(key) && nonAsciiPrintableRegex.test(event.key)) {\n return event.code.replace(/^(?:Key|Digit|Numpad)/, \"\") === key.toUpperCase();\n }\n return event.key.toLowerCase() === key.toLowerCase();\n };\n const keyFilter = (event) => {\n if (typeof keysOrFilter === \"function\") {\n return keysOrFilter(event);\n } else if (typeof keysOrFilter === \"string\") {\n return validateKeyEvent(event, keysOrFilter);\n } else if (Array.isArray(keysOrFilter)) {\n return keysOrFilter.some((key) => validateKeyEvent(event, key));\n } else {\n return true;\n }\n };\n const stopKeyDown = onKeyStroke(keyFilter, eventHandler(callback, options), {\n eventName: \"keydown\",\n dedupe: true,\n passive: !options.prevent\n });\n const stopKeyUp = options.push ? onKeyStroke(keyFilter, eventHandler(callback, options), {\n eventName: \"keyup\",\n passive: !options.prevent\n }) : () => {\n };\n return () => {\n stopKeyDown();\n stopKeyUp();\n };\n}\nexport {\n useHotKey\n};\n//# sourceMappingURL=index.mjs.map\n","function checkIfDarkTheme(el = document.body) {\n const backgroundInvertIfDark = window.getComputedStyle(el).getPropertyValue(\"--background-invert-if-dark\");\n if (backgroundInvertIfDark !== void 0) {\n return backgroundInvertIfDark === \"invert(100%)\";\n }\n return false;\n}\nconst isDarkTheme = checkIfDarkTheme();\nexport {\n checkIfDarkTheme,\n isDarkTheme\n};\n//# sourceMappingURL=index.mjs.map\n","import { ref, readonly } from \"vue\";\nconst isFullscreen = ref(checkIfIsFullscreen());\nwindow.addEventListener(\"resize\", () => {\n isFullscreen.value = checkIfIsFullscreen();\n});\nfunction checkIfIsFullscreen() {\n return window.outerHeight === window.screen.height;\n}\nfunction useIsFullscreen() {\n return readonly(isFullscreen);\n}\nexport {\n useIsFullscreen\n};\n//# sourceMappingURL=index.mjs.map\n","import '../assets/NcModal-D81luiuU.css';\nimport { getCurrentInstance, warn, defineComponent, useCssVars, useModel, useTemplateRef, onUnmounted, watch, toRef, ref, watchEffect, computed, useSlots, onMounted, openBlock, createBlock, Teleport, createVNode, Transition, withCtx, withDirectives, createElementVNode, mergeProps, unref, createElementBlock, toDisplayString, createCommentVNode, normalizeClass, renderSlot, withModifiers, vShow, mergeModels, nextTick } from \"vue\";\nimport { E as mdiPause, F as mdiPlay, b as mdiClose, z as mdiChevronLeft, c as mdiChevronRight } from \"./mdi-CpchYUUV.mjs\";\nimport { useIntervalFn, useSwipe } from \"@vueuse/core\";\nimport { createFocusTrap } from \"focus-trap\";\nimport { N as NcActions } from \"./NcActions-C-wDqSrv.mjs\";\nimport { N as NcButton } from \"./NcButton-jvoYS2my.mjs\";\nimport { N as NcIconSvgWrapper } from \"./NcIconSvgWrapper-g8ubWhoz.mjs\";\nimport \"../composables/useFormatDateTime/index.mjs\";\nimport { useHotKey } from \"../composables/useHotKey/index.mjs\";\nimport \"../composables/useIsDarkTheme/index.mjs\";\nimport \"../composables/useIsFullscreen/index.mjs\";\nimport \"../composables/useIsMobile/index.mjs\";\nimport { r as register, D as t36, A as t19, a as t } from \"./_l10n-wdIzZwir.mjs\";\nimport { c as createElementId } from \"./createElementId-DhjFt1I9.mjs\";\nimport { g as getTrapStack } from \"./focusTrap-HJQ4pqHV.mjs\";\nimport { i as isRtl } from \"./rtl-v0UOPAM7.mjs\";\nimport { _ as _export_sfc } from \"./_plugin-vue_export-helper-1tPrXgE0.mjs\";\n/*!\n * SPDX-FileCopyrightText: 2025 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\nfunction getSameNodeParent(instance) {\n if (!instance.parent) {\n return null;\n }\n if (\"vapor\" in instance || \"vapor\" in instance.parent) {\n warn(\"Vapor instances are not supported in useScopeIdAttrs :(\");\n return null;\n }\n if (instance.parent.subTree !== instance.vnode) {\n return null;\n }\n return instance.parent;\n}\nfunction getSameNodeAncestors(instance) {\n const ancestors = [instance];\n let parent = getSameNodeParent(instance);\n while (parent) {\n ancestors.push(parent);\n parent = getSameNodeParent(parent);\n }\n return ancestors;\n}\nfunction useScopeIdAttrs() {\n const instance = getCurrentInstance();\n if (!instance) {\n throw new Error(\"useScopeId must be called within a setup context\");\n }\n const sameNodeAncestors = getSameNodeAncestors(instance);\n const scopeIds = sameNodeAncestors.map((instance2) => instance2.vnode.scopeId).filter(Boolean);\n const scopeIdAttrs = Object.fromEntries(scopeIds.map((scopeId) => [scopeId, \"\"]));\n return scopeIdAttrs;\n}\nregister(t19, t36);\nconst _hoisted_1 = [\"aria-labelledby\", \"aria-describedby\"];\nconst _hoisted_2 = [\"data-theme-light\", \"data-theme-dark\"];\nconst _hoisted_3 = [\"id\"];\nconst _hoisted_4 = { class: \"icons-menu\" };\nconst _hoisted_5 = [\"title\"];\nconst _hoisted_6 = [\"id\"];\nconst _hoisted_7 = { class: \"modal-container__content\" };\nconst _sfc_main = /* @__PURE__ */ defineComponent({\n ...{ inheritAttrs: false },\n __name: \"NcModal\",\n props: /* @__PURE__ */ mergeModels({\n name: { default: \"\" },\n hasPrevious: { type: Boolean },\n hasNext: { type: Boolean },\n outTransition: { type: Boolean },\n enableSlideshow: { type: Boolean },\n slideshowDelay: { default: 5e3 },\n slideshowPaused: { type: Boolean },\n disableSwipe: { type: Boolean },\n spreadNavigation: { type: Boolean },\n size: { default: \"normal\" },\n noClose: { type: Boolean },\n closeOnClickOutside: { type: Boolean },\n dark: { type: Boolean },\n lightBackdrop: { type: Boolean },\n container: { default: \"body\" },\n closeButtonOutside: { type: Boolean },\n additionalTrapElements: { default: () => [] },\n inlineActions: { default: 0 },\n labelId: { default: \"\" },\n setReturnFocus: { default: void 0 }\n }, {\n \"show\": { type: Boolean, ...{ default: true } },\n \"showModifiers\": {}\n }),\n emits: /* @__PURE__ */ mergeModels([\"next\", \"previous\", \"close\", \"update:show\"], [\"update:show\"]),\n setup(__props, { emit: __emit }) {\n useCssVars((_ctx) => ({\n \"v046d2bb2\": numHeaderActions.value,\n \"v71f7c020\": cssSlideshowDelay.value\n }));\n const showModal = useModel(__props, \"show\");\n const props = __props;\n const emit = __emit;\n const scopeIdAttrs = useScopeIdAttrs();\n const modalId = createElementId();\n const maskElement = useTemplateRef(\"mask\");\n let focusTrap;\n onUnmounted(() => clearFocusTrap());\n watch(() => props.additionalTrapElements, (elements) => {\n if (focusTrap) {\n focusTrap.updateContainerElements([maskElement.value, ...elements]);\n }\n });\n const {\n isActive: isPlaying,\n pause: stopSlideshow,\n resume: startSlideshow\n } = useIntervalFn(nextSlide, toRef(() => props.slideshowDelay), { immediate: false });\n const animationKey = ref(0);\n const runSlideshow = ref(false);\n watchEffect(() => {\n if (runSlideshow.value && !props.slideshowPaused) {\n startSlideshow();\n } else if (isPlaying.value) {\n stopSlideshow();\n }\n });\n const cssSlideshowDelay = computed(() => `${props.slideshowDelay}ms`);\n const { stop: stopSwipe } = useSwipe(maskElement, {\n onSwipeEnd: handleSwipe\n });\n onUnmounted(stopSwipe);\n useHotKey(\"Escape\", () => {\n const trapStack = getTrapStack();\n if (trapStack.at(-1) === focusTrap) {\n close();\n }\n }, { allowInModal: true });\n useHotKey([\"ArrowLeft\", \"ArrowRight\"], (event) => {\n if (document.activeElement && !maskElement.value.contains(document.activeElement)) {\n return;\n }\n if (event.key === \"ArrowLeft\" !== isRtl) {\n previousSlide();\n } else {\n nextSlide();\n }\n }, { allowInModal: true });\n const slots = useSlots();\n const numHeaderActions = computed(() => {\n let actions = 0;\n if (props.hasNext && props.enableSlideshow) {\n actions++;\n }\n if (!props.noClose && props.closeButtonOutside) {\n actions++;\n }\n if (slots.actions) {\n actions++;\n }\n return actions;\n });\n onMounted(() => {\n if (!props.name && !props.labelId) {\n warn(\"[NcModal] You need either set the name or set a `labelId` for accessibility.\");\n }\n });\n function nextSlide(event) {\n if (!props.hasNext) {\n runSlideshow.value = false;\n return;\n }\n if (event && isPlaying.value) {\n restartSlideshow();\n }\n emit(\"next\", event);\n }\n function previousSlide(event) {\n if (!props.hasPrevious) {\n return;\n }\n if (event && isPlaying.value) {\n restartSlideshow();\n }\n emit(\"previous\", event);\n }\n function handleSwipe(e, direction) {\n if (!props.disableSwipe) {\n if (direction !== \"left\" && direction !== \"right\") {\n return;\n }\n if (direction === \"left\" !== isRtl) {\n nextSlide(e);\n } else {\n previousSlide(e);\n }\n }\n }\n function restartSlideshow() {\n stopSlideshow();\n startSlideshow();\n animationKey.value++;\n }\n function close(event) {\n if (props.noClose) {\n return;\n }\n showModal.value = false;\n setTimeout(() => {\n emit(\"close\", event);\n }, 300);\n }\n function handleClickModalWrapper(event) {\n if (props.closeOnClickOutside) {\n close(event);\n }\n }\n async function useFocusTrap() {\n if (focusTrap) {\n return;\n }\n await nextTick();\n const options = {\n allowOutsideClick: true,\n fallbackFocus: maskElement.value,\n trapStack: getTrapStack(),\n // Esc can be used without stop in content or additionalTrapElements where it should not deactivate modal's focus trap.\n // Focus trap is deactivated on modal close anyway.\n escapeDeactivates: false,\n setReturnFocus: props.setReturnFocus\n };\n focusTrap = createFocusTrap([maskElement.value, ...props.additionalTrapElements], options);\n focusTrap.activate();\n }\n function clearFocusTrap() {\n if (!focusTrap) {\n return;\n }\n focusTrap?.deactivate();\n focusTrap = void 0;\n }\n return (_ctx, _cache) => {\n return openBlock(), createBlock(Teleport, {\n disabled: __props.container === null,\n to: __props.container\n }, [\n createVNode(Transition, {\n name: \"fade\",\n appear: \"\",\n onAfterEnter: useFocusTrap,\n onBeforeLeave: clearFocusTrap\n }, {\n default: withCtx(() => [\n withDirectives(createElementVNode(\"div\", mergeProps({ ..._ctx.$attrs, ...unref(scopeIdAttrs) }, {\n ref: \"mask\",\n class: [\"modal-mask\", {\n \"modal-mask--opaque\": __props.dark || __props.closeButtonOutside || __props.hasPrevious || __props.hasNext,\n \"modal-mask--light\": __props.lightBackdrop\n }],\n role: \"dialog\",\n \"aria-modal\": \"true\",\n \"aria-labelledby\": __props.labelId || `modal-name-${unref(modalId)}`,\n \"aria-describedby\": \"modal-description-\" + unref(modalId),\n tabindex: \"-1\"\n }), [\n createVNode(Transition, {\n name: \"fade-visibility\",\n appear: \"\"\n }, {\n default: withCtx(() => [\n createElementVNode(\"div\", {\n class: \"modal-header\",\n \"data-theme-light\": __props.lightBackdrop,\n \"data-theme-dark\": !__props.lightBackdrop\n }, [\n __props.name.trim() !== \"\" ? (openBlock(), createElementBlock(\"h2\", {\n key: 0,\n id: \"modal-name-\" + unref(modalId),\n class: \"modal-header__name\"\n }, toDisplayString(__props.name), 9, _hoisted_3)) : createCommentVNode(\"\", true),\n createElementVNode(\"div\", _hoisted_4, [\n __props.hasNext && __props.enableSlideshow ? (openBlock(), createElementBlock(\"button\", {\n key: 0,\n class: normalizeClass([\"play-pause-icons\", { \"play-pause-icons--paused\": __props.slideshowPaused }]),\n title: unref(isPlaying) ? unref(t)(\"Pause slideshow\") : unref(t)(\"Start slideshow\"),\n type: \"button\",\n onClick: _cache[0] || (_cache[0] = ($event) => runSlideshow.value = !runSlideshow.value)\n }, [\n createVNode(NcIconSvgWrapper, {\n class: \"play-pause-icons__icon\",\n inline: \"\",\n name: unref(isPlaying) ? unref(t)(\"Pause slideshow\") : unref(t)(\"Start slideshow\"),\n path: unref(isPlaying) ? unref(mdiPause) : unref(mdiPlay)\n }, null, 8, [\"name\", \"path\"]),\n unref(isPlaying) ? (openBlock(), createElementBlock(\"svg\", {\n key: `${unref(modalId)}-animation-${animationKey.value}`,\n class: \"progress-ring\",\n height: \"50\",\n width: \"50\"\n }, [..._cache[1] || (_cache[1] = [\n createElementVNode(\"circle\", {\n class: \"progress-ring__circle\",\n stroke: \"white\",\n \"stroke-width\": \"2\",\n fill: \"transparent\",\n r: \"15\",\n cx: \"25\",\n cy: \"25\"\n }, null, -1)\n ])])) : createCommentVNode(\"\", true)\n ], 10, _hoisted_5)) : createCommentVNode(\"\", true),\n createVNode(NcActions, {\n class: \"header-actions\",\n inline: __props.inlineActions\n }, {\n default: withCtx(() => [\n renderSlot(_ctx.$slots, \"actions\", {}, void 0, true)\n ]),\n _: 3\n }, 8, [\"inline\"]),\n !__props.noClose && __props.closeButtonOutside ? (openBlock(), createBlock(NcButton, {\n key: 1,\n \"aria-label\": unref(t)(\"Close\"),\n class: \"header-close\",\n variant: \"tertiary\",\n onClick: close\n }, {\n icon: withCtx(() => [\n createVNode(NcIconSvgWrapper, { path: unref(mdiClose) }, null, 8, [\"path\"])\n ]),\n _: 1\n }, 8, [\"aria-label\"])) : createCommentVNode(\"\", true)\n ])\n ], 8, _hoisted_2)\n ]),\n _: 3\n }),\n createVNode(Transition, {\n name: `modal-${__props.outTransition ? \"out\" : \"in\"}`,\n appear: \"\"\n }, {\n default: withCtx(() => [\n withDirectives(createElementVNode(\"div\", {\n class: normalizeClass([\"modal-wrapper\", [\n `modal-wrapper--${__props.size}`,\n { \"modal-wrapper--spread-navigation\": __props.spreadNavigation }\n ]]),\n onMousedown: withModifiers(handleClickModalWrapper, [\"self\"])\n }, [\n createVNode(Transition, {\n name: \"fade-visibility\",\n appear: \"\"\n }, {\n default: withCtx(() => [\n withDirectives(createVNode(NcButton, {\n \"aria-label\": unref(t)(\"Previous\"),\n class: \"prev\",\n variant: \"tertiary-no-background\",\n onClick: previousSlide\n }, {\n icon: withCtx(() => [\n createVNode(NcIconSvgWrapper, {\n directional: \"\",\n path: unref(mdiChevronLeft),\n size: 40\n }, null, 8, [\"path\"])\n ]),\n _: 1\n }, 8, [\"aria-label\"]), [\n [vShow, __props.hasPrevious]\n ])\n ]),\n _: 1\n }),\n createElementVNode(\"div\", {\n id: \"modal-description-\" + unref(modalId),\n class: \"modal-container\"\n }, [\n createElementVNode(\"div\", _hoisted_7, [\n renderSlot(_ctx.$slots, \"default\", {}, void 0, true)\n ]),\n !__props.noClose && !__props.closeButtonOutside ? (openBlock(), createBlock(NcButton, {\n key: 0,\n \"aria-label\": unref(t)(\"Close\"),\n class: \"modal-container__close\",\n variant: \"tertiary\",\n onClick: close\n }, {\n icon: withCtx(() => [\n createVNode(NcIconSvgWrapper, { path: unref(mdiClose) }, null, 8, [\"path\"])\n ]),\n _: 1\n }, 8, [\"aria-label\"])) : createCommentVNode(\"\", true)\n ], 8, _hoisted_6),\n createVNode(Transition, {\n name: \"fade-visibility\",\n appear: \"\"\n }, {\n default: withCtx(() => [\n withDirectives(createVNode(NcButton, {\n \"aria-label\": unref(t)(\"Next\"),\n class: \"next\",\n variant: \"tertiary-no-background\",\n onClick: nextSlide\n }, {\n icon: withCtx(() => [\n createVNode(NcIconSvgWrapper, {\n directional: \"\",\n path: unref(mdiChevronRight),\n size: 40\n }, null, 8, [\"path\"])\n ]),\n _: 1\n }, 8, [\"aria-label\"]), [\n [vShow, __props.hasNext]\n ])\n ]),\n _: 1\n })\n ], 34), [\n [vShow, showModal.value]\n ])\n ]),\n _: 3\n }, 8, [\"name\"])\n ], 16, _hoisted_1), [\n [vShow, showModal.value]\n ])\n ]),\n _: 3\n })\n ], 8, [\"disabled\", \"to\"]);\n };\n }\n});\nconst NcModal = /* @__PURE__ */ _export_sfc(_sfc_main, [[\"__scopeId\", \"data-v-3c357e2d\"]]);\nexport {\n NcModal as N\n};\n//# sourceMappingURL=NcModal-DiDvgcU8.mjs.map\n"],"names":["getFirstDay","intl","getCanonicalLocale","weekInfo","getDayNames","locale","getDayNamesMin","formatRelativeTime","timestamp","opts","options","getLanguage","date","formatter","seconds","minutes","hours","days","weeks","months","format","createDisposableDirective","origin","isFunc","fn","normalisedOrigin","mounted","unmounted","scopeWeakMap","el","binding","vNode","prevNode","_scopeWeakMap$get","scope","effectScope","_scopeWeakMap$get2","tryOnScopeDispose","failSilently","getCurrentScope","onScopeDispose","localProvidedStateMap","injectLocal","args","_getCurrentInstance","key","instance","getCurrentInstance","owner","hasInjectionContext","inject","isClient","notNullish","val","toString","isObject","noop","createFilterWrapper","filter","wrapper","resolve","reject","bypassFilter","invoke","debounceFilter","ms","timer","maxTimer","lastRejector","_clearTimeout","lastInvoker","duration","toValue","maxDuration","pxValue","px","toArray","value","getLifeCycleTarget","target","createSharedComposable","composable","subscribers","state","dispose","useDebounceFn","watchWithFilter","source","cb","eventFilter","watchOptions","watch","tryOnMounted","sync","onMounted","nextTick","useIntervalFn","interval","immediate","immediateCallback","isActive","shallowRef","clean","pause","resume","intervalValue","isRef","shallowReadonly","watchDebounced","debounce","maxWait","watchImmediate","watchOnce","defaultWindow","defaultDocument","unrefElement","elRef","_$el","plain","useEventListener","register","event","listener","firstParamTargets","computed","test","e","_firstParamTargets$va","_firstParamTargets$va2","unref","raw_targets","raw_events","raw_listeners","raw_options","_","onCleanup","optionsClone","cleanups","onClickOutside","handler","window","ignore","capture","detectIframe","controls","shouldListen","shouldIgnore","hasMultipleRoots","vm","checkMultipleRoots","children","child","isProcessingClick","cleanup","activeEl","stop","useMounted","isMounted","useSupported","callback","useMutationObserver","mutationOptions","observer","isSupported","stopWatch","items","newTargets","takeRecords","onElementRemoval","document","flush","stopFn","cleanupAndUpdate","watchEffect","mutationsList","mutation","node","stopHandle","createKeyPredicate","keyFilter","onKeyStroke","eventName","passive","dedupe","predicate","useActiveElement","_options$document","deep","triggerOnRemoval","getDeepActiveElement","element","_element$shadowRoot","activeElement","trigger","listenerOptions","ssrWidthSymbol","useSSRWidth","ssrWidth","useMediaQuery","query","ssrSupport","mediaQuery","matches","queryString","not","minWidth","maxWidth","res","usePreferredDark","useResizeObserver","observerOptions","_targets","els","_el","useElementSize","initialSize","box","isSVG","_unrefElement","width","height","stop1","entry","boxSize","$elem","rect","formatBoxSize","acc","inlineSize","blockSize","ele","stop2","useIntersectionObserver","root","rootMargin","threshold","targets","useElementVisibility","scrollTarget","once","initialValue","isVisible","observerController","intersectionObserverEntries","isIntersecting","latestTime","EVENT_FOCUS_IN","EVENT_FOCUS_OUT","PSEUDO_CLASS_FOCUS_WITHIN","useFocusWithin","targetElement","_focused","focused","_targetElement$value$","_targetElement$value","_targetElement$value$2","useSwipe","onSwipe","onSwipeEnd","onSwipeStart","coordsStart","reactive","coordsEnd","diffX","diffY","max","abs","isThresholdExceeded","isSwiping","direction","getTouchEventCoords","updateCoordsStart","x","y","updateCoordsEnd","onTouchEnd","stops","s","MOBILE_BREAKPOINT","MOBILE_SMALL_BREAKPOINT","isLessThanBreakpoint","breakpoint","isMobile","ref","isSmallMobile","useIsMobile","readonly","useIsSmallMobile","isRtl","isRTL","NC_ACTIONS_IS_SEMANTIC_MENU","NC_ACTIONS_CLOSE_MENU","getTrapStack","createTrapStackController","pausedStack","trap","useTrapStackControl","shouldPause","trapStackController","onUnmounted","sides","alignments","placements","side","min","round","floor","createCoords","v","oppositeSideMap","clamp","start","end","evaluate","param","getSide","placement","getAlignment","getOppositeAxis","axis","getAxisLength","getSideAxis","firstChar","getAlignmentAxis","getAlignmentSides","rects","rtl","alignment","alignmentAxis","length","mainAlignmentSide","getOppositePlacement","getExpandedPlacements","oppositePlacement","getOppositeAlignmentPlacement","lrPlacement","rlPlacement","tbPlacement","btPlacement","getSideList","isStart","getOppositeAxisPlacements","flipAlignment","list","expandPaddingObject","padding","_padding$top","_padding$right","_padding$bottom","_padding$left","getPaddingObject","rectToClientRect","computeCoordsFromPlacement","_ref","reference","floating","sideAxis","alignLength","isVertical","commonX","commonY","commonAlign","coords","detectOverflow","_await$platform$isEle","platform","elements","strategy","boundary","rootBoundary","elementContext","altBoundary","paddingObject","clippingClientRect","offsetParent","offsetScale","elementClientRect","MAX_RESET_COUNT","computePosition","config","middleware","platformWithDetectOverflow","statefulPlacement","resetCount","middlewareData","i","currentMiddleware","name","nextX","nextY","data","reset","arrow","arrowDimensions","isYAxis","minProp","maxProp","clientProp","endDiff","startDiff","arrowOffsetParent","clientSize","centerToReference","largestPossiblePadding","minPadding","maxPadding","center","offset","shouldAddOffset","alignmentOffset","getPlacementList","autoAlignment","allowedPlacements","autoPlacement","_middlewareData$autoP","_middlewareData$autoP2","_placementsThatFitOnE","crossAxis","detectOverflowOptions","placements$1","currentIndex","currentPlacement","overflow","alignmentSides","currentOverflows","allOverflows","nextPlacement","placementsSortedByMostSpace","d","a","b","resetPlacement","flip","_middlewareData$arrow","_middlewareData$flip","initialPlacement","checkMainAxis","checkCrossAxis","specifiedFallbackPlacements","fallbackStrategy","fallbackAxisSideDirection","initialSideAxis","isBasePlacement","fallbackPlacements","hasFallbackAxisSideDirection","overflows","overflowsData","_middlewareData$flip2","_overflowsData$filter","nextIndex","_overflowsData$filter2","currentSideAxis","originSides","convertValueToCoords","mainAxisMulti","crossAxisMulti","rawValue","mainAxis","_middlewareData$offse","diffCoords","shift","limiter","mainAxisCoord","crossAxisCoord","clampCoord","coord","limitedCoords","limitShift","_rawOffset$mainAxis","_rawOffset$crossAxis","rawOffset","computedOffset","len","limitMin","limitMax","_middlewareData$offse2","isOriginSide","size","apply","heightSide","widthSide","maximumClippingHeight","maximumClippingWidth","overflowAvailableHeight","overflowAvailableWidth","shiftData","noShift","availableHeight","availableWidth","nextDimensions","n","t","o","r","l","c","h","f","u","p","g","m","w","L","E","R","T","C","F","W","D","S","A","H","O","P","B","Ze","re","$","_e","Te","pe","ae","de","G","le","he","Y","q","Q","xe","Ue","Ye","Xe","Ke","Je","Qe","ne","ue","fe","tt","Pe","ce","et","ot","it","J","ke","Le","st","nt","z","X","Fe","rt","Re","De","pt","Ie","at","M","Z","dt","lt","ht","ut","ft","ct","mt","je","Ve","se","ee","te","K","gt","wt","$e","N","I","j","V","Ee","ve","k","Se","Ht","kt","candidateSelectors","candidateSelector","NoElement","getRootNode","_element$getRootNode","_isInert","lookUp","_node$getAttribute","inertAtt","inert","result","isContentEditable","_node$getAttribute2","attValue","getCandidates","includeContainer","candidates","_getCandidatesIteratively","elementsToCheck","assigned","content","nestedCandidates","validCandidate","shadowRoot","validShadowRoot","_nestedCandidates","hasTabIndex","getTabIndex","getSortOrderTabIndex","isScope","tabIndex","sortOrderedTabbables","isInput","isHiddenInput","isDetailsWithSummary","getCheckedRadio","nodes","form","isTabbableRadio","radioScope","queryRadios","radioSet","err","checked","isRadio","isNonTabbableRadio","isNodeAttached","_nodeRoot","nodeRoot","nodeRootHost","attached","_nodeRootHost","_nodeRootHost$ownerDo","_node$ownerDocument","_nodeRoot2","_nodeRootHost2","_nodeRootHost2$ownerD","isZeroArea","_node$getBoundingClie","isHidden","displayCheck","getShadowRoot","visible","_getComputedStyle","visibility","isDirectSummary","nodeUnderDetails","originalNode","parentElement","rootNode","isDisabledFromFieldset","parentNode","isNodeMatchingSelectorFocusable","isNodeMatchingSelectorTabbable","isShadowRootTabbable","shadowHostNode","_sortByOrder","regularTabbables","orderedTabbables","item","candidateTabindex","sortable","tabbable","container","focusable","isTabbable","focusableCandidateSelector","isFocusable","_arrayLikeToArray","_arrayWithoutHoles","_createForOfIteratorHelper","_unsupportedIterableToArray","_defineProperty","_toPropertyKey","_iterableToArray","_nonIterableSpread","ownKeys","_objectSpread2","_toConsumableArray","_toPrimitive","activeFocusTraps","trapStack","activeTrap","trapIndex","isSelectableInput","isEscapeEvent","isTabEvent","isKeyForward","isKeyBackward","delay","valueOrHandler","_len","params","_key","getActualTarget","internalTrapStack","createFocusTrap","userOptions","doc","getOption","configOverrideOptions","optionName","configOptionName","findContainerIndex","composedPath","tabbableNodes","getNodeForOption","_ref2","_ref2$hasFallback","hasFallback","_ref2$params","optionValue","_getActiveElement","getInitialFocusNode","firstTabbableGroup","firstTabbableNode","updateTabbableNodes","focusableNodes","lastTabbableNode","firstDomTabbableNode","lastDomTabbableNode","posTabIndexesFound","forward","nodeIdx","group","_tryFocus","getReturnFocusNode","previousActiveElement","findNextNavNode","_ref3","_ref3$isBackward","isBackward","destinationNode","containerIndex","containerGroup","startOfGroupIndex","_ref4","destinationGroupIndex","destinationGroup","lastOfGroupIndex","_ref5","_destinationGroupIndex","_destinationGroup","checkPointerDown","checkFocusIn","targetContained","nextNode","navAcrossContainers","mruContainerIdx","mruTabIdx","checkKeyNav","checkTabKey","checkEscapeKey","checkClick","addListeners","promise","collectAdjacentElements","containers","containerAncestors","adjacentElements","_iterator","_step","insideShadowRoot","current","parent","siblings","_iterator2","_step2","removeListeners","checkDomRemoval","mutations","focusedNode","isFocusedNodeRemoved","removedNodes","initialFocusNode","mutationObserver","updateObservedNodes","activateOptions","onActivate","onPostActivate","checkCanFocusTrap","preexistingTrap","revertState","_preexistingTrap$_set","finishActivation","afterListeners","listenersPromise","error","_preexistingTrap$_set2","deactivateOptions","onDeactivate","onPostDeactivate","checkCanReturnFocus","delayReturnFocus","returnFocus","completeDeactivation","finishDeactivation","pauseOptions","unpauseOptions","containerElements","elementsAsArray","paused","onPause","onPostPause","onUnpause","onPostUnpause","finishUnpause","isEnabled","_el$getAttribute","_sfc_main$1","defineComponent","ncPopover","style0","theme","_sfc_main","Dropdown","triggerElements","options2","logger","_sfc_render","_ctx","_cache","$props","$setup","$data","$options","_component_NcPopoverTriggerProvider","resolveComponent","_component_Dropdown","openBlock","createBlock","$event","withCtx","slotProps","renderSlot","normalizeProps","guardReactiveProps","createVNode","cssModules","NcPopover","_export_sfc","_hoisted_1","_hoisted_2","_hoisted_3","_hoisted_4","createElementBlock","mergeProps","createElementVNode","toDisplayString","createCommentVNode","IconDotsHorizontal","t4","isSlotPopulated","vnodes","vnode","Comment","Fragment","Text","focusableSelector","NcButton","createElementId","action","url","focusList","focusIndex","newFocusIndex","currentActiveElement","focusElement","liMenuParent","indexLength","firstCheckedIndex","button","actions","findActions","actions2","validInlineActions","inlineActions","menuActions","menuItemsActions","textInputActions","linkActions","hasTextInputAction","hasMenuItemAction","hasLinkAction","renderInlineAction","iconProp","icon","text","buttonText","title","propsToForward","type","renderActionsPopover","triggerIcon","triggerRandomId","NcActions","t2","FEW_SECONDS_AGO","useFormatRelativeTime","timeoutId","language","relativeTime2","ignoreSeconds","relativeTime","updateRelativeTime","diff","useFormatTime","isMac","disableKeyboardShortcuts","derivedKeysRegex","nonAsciiPrintableRegex","shouldIgnoreEvent","eventHandler","useHotKey","keysOrFilter","validateKeyEvent","isKeyInLowerCase","isEventKeyInLowerCase","stopKeyDown","stopKeyUp","checkIfDarkTheme","backgroundInvertIfDark","isFullscreen","checkIfIsFullscreen","getSameNodeParent","getSameNodeAncestors","ancestors","useScopeIdAttrs","scopeIds","instance2","scopeId","t19","t36","_hoisted_5","_hoisted_6","_hoisted_7","mergeModels","__props","__emit","useCssVars","numHeaderActions","cssSlideshowDelay","showModal","useModel","props","emit","scopeIdAttrs","modalId","maskElement","useTemplateRef","focusTrap","clearFocusTrap","isPlaying","stopSlideshow","startSlideshow","nextSlide","toRef","animationKey","runSlideshow","stopSwipe","handleSwipe","close","previousSlide","slots","useSlots","restartSlideshow","handleClickModalWrapper","useFocusTrap","Teleport","Transition","withDirectives","normalizeClass","NcIconSvgWrapper","mdiPause","mdiPlay","mdiClose","withModifiers","mdiChevronLeft","vShow","mdiChevronRight","NcModal"],"mappings":"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","x_google_ignoreList":[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21]} \ No newline at end of file +{"version":3,"file":"NcModal-DiDvgcU8-Cb_C64qI.chunk.mjs","sources":["../node_modules/@nextcloud/l10n/dist/index.mjs","../node_modules/@vueuse/shared/dist/index.js","../node_modules/@vueuse/core/dist/index.js","../node_modules/@nextcloud/vue/dist/composables/useIsMobile/index.mjs","../node_modules/@nextcloud/vue/dist/chunks/rtl-v0UOPAM7.mjs","../node_modules/@nextcloud/vue/dist/chunks/useNcActions-BzPO2c4h.mjs","../node_modules/@nextcloud/vue/dist/chunks/focusTrap-HJQ4pqHV.mjs","../node_modules/@nextcloud/vue/dist/chunks/useTrapStackControl-B6cEicto.mjs","../node_modules/@floating-ui/utils/dist/floating-ui.utils.mjs","../node_modules/@floating-ui/core/dist/floating-ui.core.mjs","../node_modules/floating-vue/node_modules/@floating-ui/dom/dist/floating-ui.dom.browser.min.mjs","../node_modules/floating-vue/dist/floating-vue.mjs","../node_modules/tabbable/dist/index.esm.js","../node_modules/focus-trap/dist/focus-trap.esm.js","../node_modules/@nextcloud/vue/dist/chunks/NcPopover-B87bEPLq.mjs","../node_modules/@nextcloud/vue/dist/chunks/NcActions-C-wDqSrv.mjs","../node_modules/@nextcloud/vue/dist/composables/useFormatDateTime/index.mjs","../node_modules/@nextcloud/vue/dist/chunks/platform-CC2ecGvV.mjs","../node_modules/@nextcloud/vue/dist/composables/useHotKey/index.mjs","../node_modules/@nextcloud/vue/dist/functions/isDarkTheme/index.mjs","../node_modules/@nextcloud/vue/dist/composables/useIsFullscreen/index.mjs","../node_modules/@nextcloud/vue/dist/chunks/NcModal-DiDvgcU8.mjs"],"sourcesContent":["import { g as getCanonicalLocale, a as getLanguage } from \"./chunks/translation-DoG5ZELJ.mjs\";\nimport { b, e, i, l, d, r, c, s, t, t as t2, d as d2, u } from \"./chunks/translation-DoG5ZELJ.mjs\";\n/*!\n * SPDX-FileCopyrightText: 2022 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: GPL-3.0-or-later\n */\nfunction getFirstDay() {\n if (typeof globalThis.firstDay !== \"undefined\") {\n return globalThis.firstDay;\n }\n const intl = new Intl.Locale(getCanonicalLocale());\n const weekInfo = intl.getWeekInfo?.() ?? intl.weekInfo;\n if (weekInfo) {\n return weekInfo.firstDay % 7;\n }\n return 1;\n}\nfunction getDayNames() {\n if (typeof globalThis.dayNames !== \"undefined\") {\n return globalThis.dayNames;\n }\n const locale = getCanonicalLocale();\n return [\n new Date(1970, 0, 4).toLocaleDateString(locale, { weekday: \"long\" }),\n new Date(1970, 0, 5).toLocaleDateString(locale, { weekday: \"long\" }),\n new Date(1970, 0, 6).toLocaleDateString(locale, { weekday: \"long\" }),\n new Date(1970, 0, 7).toLocaleDateString(locale, { weekday: \"long\" }),\n new Date(1970, 0, 8).toLocaleDateString(locale, { weekday: \"long\" }),\n new Date(1970, 0, 9).toLocaleDateString(locale, { weekday: \"long\" }),\n new Date(1970, 0, 10).toLocaleDateString(locale, { weekday: \"long\" })\n ];\n}\nfunction getDayNamesShort() {\n if (typeof globalThis.dayNamesShort !== \"undefined\") {\n return globalThis.dayNamesShort;\n }\n const locale = getCanonicalLocale();\n return [\n new Date(1970, 0, 4).toLocaleDateString(locale, { weekday: \"short\" }),\n new Date(1970, 0, 5).toLocaleDateString(locale, { weekday: \"short\" }),\n new Date(1970, 0, 6).toLocaleDateString(locale, { weekday: \"short\" }),\n new Date(1970, 0, 7).toLocaleDateString(locale, { weekday: \"short\" }),\n new Date(1970, 0, 8).toLocaleDateString(locale, { weekday: \"short\" }),\n new Date(1970, 0, 9).toLocaleDateString(locale, { weekday: \"short\" }),\n new Date(1970, 0, 10).toLocaleDateString(locale, { weekday: \"short\" })\n ];\n}\nfunction getDayNamesMin() {\n if (typeof globalThis.dayNamesMin !== \"undefined\") {\n return globalThis.dayNamesMin;\n }\n const locale = getCanonicalLocale();\n return [\n new Date(1970, 0, 4).toLocaleDateString(locale, { weekday: \"narrow\" }),\n new Date(1970, 0, 5).toLocaleDateString(locale, { weekday: \"narrow\" }),\n new Date(1970, 0, 6).toLocaleDateString(locale, { weekday: \"narrow\" }),\n new Date(1970, 0, 7).toLocaleDateString(locale, { weekday: \"narrow\" }),\n new Date(1970, 0, 8).toLocaleDateString(locale, { weekday: \"narrow\" }),\n new Date(1970, 0, 9).toLocaleDateString(locale, { weekday: \"narrow\" }),\n new Date(1970, 0, 10).toLocaleDateString(locale, { weekday: \"narrow\" })\n ];\n}\nfunction getMonthNames() {\n if (typeof globalThis.monthNames !== \"undefined\") {\n return globalThis.monthNames;\n }\n const locale = getCanonicalLocale();\n return [\n new Date(1970, 0).toLocaleDateString(locale, { month: \"long\" }),\n new Date(1970, 1).toLocaleDateString(locale, { month: \"long\" }),\n new Date(1970, 2).toLocaleDateString(locale, { month: \"long\" }),\n new Date(1970, 3).toLocaleDateString(locale, { month: \"long\" }),\n new Date(1970, 4).toLocaleDateString(locale, { month: \"long\" }),\n new Date(1970, 5).toLocaleDateString(locale, { month: \"long\" }),\n new Date(1970, 6).toLocaleDateString(locale, { month: \"long\" }),\n new Date(1970, 7).toLocaleDateString(locale, { month: \"long\" }),\n new Date(1970, 8).toLocaleDateString(locale, { month: \"long\" }),\n new Date(1970, 9).toLocaleDateString(locale, { month: \"long\" }),\n new Date(1970, 10).toLocaleDateString(locale, { month: \"long\" }),\n new Date(1970, 11).toLocaleDateString(locale, { month: \"long\" })\n ];\n}\nfunction getMonthNamesShort() {\n if (typeof globalThis.monthNamesShort !== \"undefined\") {\n return globalThis.monthNamesShort;\n }\n const locale = getCanonicalLocale();\n return [\n new Date(1970, 0).toLocaleDateString(locale, { month: \"short\" }),\n new Date(1970, 1).toLocaleDateString(locale, { month: \"short\" }),\n new Date(1970, 2).toLocaleDateString(locale, { month: \"short\" }),\n new Date(1970, 3).toLocaleDateString(locale, { month: \"short\" }),\n new Date(1970, 4).toLocaleDateString(locale, { month: \"short\" }),\n new Date(1970, 5).toLocaleDateString(locale, { month: \"short\" }),\n new Date(1970, 6).toLocaleDateString(locale, { month: \"short\" }),\n new Date(1970, 7).toLocaleDateString(locale, { month: \"short\" }),\n new Date(1970, 8).toLocaleDateString(locale, { month: \"short\" }),\n new Date(1970, 9).toLocaleDateString(locale, { month: \"short\" }),\n new Date(1970, 10).toLocaleDateString(locale, { month: \"short\" }),\n new Date(1970, 11).toLocaleDateString(locale, { month: \"short\" })\n ];\n}\n/*!\n * SPDX-FileCopyrightText: 2025 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: GPL-3.0-or-later\n */\nfunction formatRelativeTime(timestamp = Date.now(), opts = {}) {\n const options = {\n ignoreSeconds: false,\n language: getLanguage(),\n relativeTime: \"long\",\n ...opts\n };\n const date = new Date(timestamp);\n const formatter = new Intl.RelativeTimeFormat([options.language, getLanguage()], { numeric: \"auto\", style: options.relativeTime });\n const diff = date.getTime() - Date.now();\n const seconds = diff / 1e3;\n if (Math.abs(seconds) < 59.5) {\n return options.ignoreSeconds || formatter.format(Math.round(seconds), \"second\");\n }\n const minutes = seconds / 60;\n if (Math.abs(minutes) <= 59) {\n return formatter.format(Math.round(minutes), \"minute\");\n }\n const hours = minutes / 60;\n if (Math.abs(hours) < 23.5) {\n return formatter.format(Math.round(hours), \"hour\");\n }\n const days = hours / 24;\n if (Math.abs(days) < 6.5) {\n return formatter.format(Math.round(days), \"day\");\n }\n if (Math.abs(days) < 27.5) {\n const weeks = days / 7;\n return formatter.format(Math.round(weeks), \"week\");\n }\n const months = days / 30;\n const format = Math.abs(months) < 11 ? { month: options.relativeTime, day: \"numeric\" } : { year: options.relativeTime === \"narrow\" ? \"2-digit\" : \"numeric\", month: options.relativeTime };\n const dateTimeFormatter = new Intl.DateTimeFormat([options.language, getLanguage()], format);\n return dateTimeFormatter.format(date);\n}\nexport {\n formatRelativeTime,\n getCanonicalLocale,\n getDayNames,\n getDayNamesMin,\n getDayNamesShort,\n getFirstDay,\n getLanguage,\n b as getLocale,\n getMonthNames,\n getMonthNamesShort,\n e as getPlural,\n i as isRTL,\n l as loadTranslations,\n d as n,\n r as register,\n c as setLanguage,\n s as setLocale,\n t,\n t2 as translate,\n d2 as translatePlural,\n u as unregister\n};\n//# sourceMappingURL=index.mjs.map\n","import { computed, customRef, effectScope, getCurrentInstance, getCurrentScope, hasInjectionContext, inject, isReactive, isRef, nextTick, onBeforeMount, onBeforeUnmount, onMounted, onScopeDispose, onUnmounted, provide, reactive, readonly, ref, shallowReadonly, shallowRef, toRef as toRef$1, toRefs as toRefs$1, toValue, unref, watch, watchEffect } from \"vue\";\n//#region computedEager/index.ts\n/**\n*\n* @deprecated This function will be removed in future version.\n*\n* Note: If you are using Vue 3.4+, you can straight use computed instead.\n* Because in Vue 3.4+, if computed new value does not change,\n* computed, effect, watch, watchEffect, render dependencies will not be triggered.\n* refer: https://github.com/vuejs/core/pull/5912\n*\n* @param fn effect function\n* @param options WatchOptionsBase\n* @returns readonly shallowRef\n*/\nfunction computedEager(fn, options) {\n\tvar _options$flush;\n\tconst result = shallowRef();\n\twatchEffect(() => {\n\t\tresult.value = fn();\n\t}, {\n\t\t...options,\n\t\tflush: (_options$flush = options === null || options === void 0 ? void 0 : options.flush) !== null && _options$flush !== void 0 ? _options$flush : \"sync\"\n\t});\n\treturn readonly(result);\n}\n/** @deprecated use `computedEager` instead */\nconst eagerComputed = computedEager;\n//#endregion\n//#region computedWithControl/index.ts\n/**\n* Explicitly define the deps of computed.\n*\n* @param source\n* @param fn\n*/\nfunction computedWithControl(source, fn, options = {}) {\n\tlet v = void 0;\n\tlet track;\n\tlet trigger;\n\tlet dirty = true;\n\tconst update = () => {\n\t\tdirty = true;\n\t\ttrigger();\n\t};\n\twatch(source, update, {\n\t\tflush: \"sync\",\n\t\t...options\n\t});\n\tconst get = typeof fn === \"function\" ? fn : fn.get;\n\tconst set = typeof fn === \"function\" ? void 0 : fn.set;\n\tconst result = customRef((_track, _trigger) => {\n\t\ttrack = _track;\n\t\ttrigger = _trigger;\n\t\treturn {\n\t\t\tget() {\n\t\t\t\tif (dirty) {\n\t\t\t\t\tv = get(v);\n\t\t\t\t\tdirty = false;\n\t\t\t\t}\n\t\t\t\ttrack();\n\t\t\t\treturn v;\n\t\t\t},\n\t\t\tset(v) {\n\t\t\t\tset === null || set === void 0 || set(v);\n\t\t\t}\n\t\t};\n\t});\n\tresult.trigger = update;\n\treturn result;\n}\n/** @deprecated use `computedWithControl` instead */\nconst controlledComputed = computedWithControl;\n//#endregion\n//#region createDisposableDirective/index.ts\n/**\n* Utility for authoring disposable directives. Reactive effects created within `mounted` directive hook will be tracked and automatically disposed when directive is unmounted.\n*\n* @see https://vueuse.org/createDisposableDirective\n*\n* @__NO_SIDE_EFFECTS__\n*/\nfunction createDisposableDirective(origin = {}) {\n\tfunction isFunc(fn) {\n\t\treturn typeof fn === \"function\";\n\t}\n\tconst normalisedOrigin = isFunc(origin) ? {\n\t\tmounted: origin,\n\t\tupdated: origin\n\t} : origin;\n\tconst { mounted, unmounted } = normalisedOrigin;\n\tif (!isFunc(mounted)) return origin;\n\tconst scopeWeakMap = /* @__PURE__ */ new WeakMap();\n\treturn {\n\t\t...normalisedOrigin,\n\t\tmounted(el, binding, vNode, prevNode) {\n\t\t\tvar _scopeWeakMap$get;\n\t\t\tconst scope = (_scopeWeakMap$get = scopeWeakMap.get(el)) !== null && _scopeWeakMap$get !== void 0 ? _scopeWeakMap$get : effectScope();\n\t\t\tscopeWeakMap.set(el, scope);\n\t\t\tscope.run(() => {\n\t\t\t\tmounted === null || mounted === void 0 || mounted(el, binding, vNode, prevNode);\n\t\t\t});\n\t\t},\n\t\tunmounted(el, binding, vNode, prevNode) {\n\t\t\tvar _scopeWeakMap$get2;\n\t\t\t(_scopeWeakMap$get2 = scopeWeakMap.get(el)) === null || _scopeWeakMap$get2 === void 0 || _scopeWeakMap$get2.stop();\n\t\t\tscopeWeakMap.delete(el);\n\t\t\tif (isFunc(unmounted)) unmounted(el, binding, vNode, prevNode);\n\t\t}\n\t};\n}\n//#endregion\n//#region tryOnScopeDispose/index.ts\n/**\n* Call onScopeDispose() if it's inside an effect scope lifecycle, if not, do nothing\n*\n* @param fn\n*/\nfunction tryOnScopeDispose(fn, failSilently) {\n\tif (getCurrentScope()) {\n\t\tonScopeDispose(fn, failSilently);\n\t\treturn true;\n\t}\n\treturn false;\n}\n//#endregion\n//#region createEventHook/index.ts\n/**\n* Utility for creating event hooks\n*\n* @see https://vueuse.org/createEventHook\n*\n* @__NO_SIDE_EFFECTS__\n*/\nfunction createEventHook() {\n\tconst fns = /* @__PURE__ */ new Set();\n\tconst off = (fn) => {\n\t\tfns.delete(fn);\n\t};\n\tconst clear = () => {\n\t\tfns.clear();\n\t};\n\tconst on = (fn) => {\n\t\tfns.add(fn);\n\t\tconst offFn = () => off(fn);\n\t\ttryOnScopeDispose(offFn);\n\t\treturn { off: offFn };\n\t};\n\tconst trigger = (...args) => {\n\t\treturn Promise.all(Array.from(fns).map((fn) => fn(...args)));\n\t};\n\treturn {\n\t\ton,\n\t\toff,\n\t\ttrigger,\n\t\tclear\n\t};\n}\n//#endregion\n//#region createGlobalState/index.ts\n/**\n* Keep states in the global scope to be reusable across Vue instances.\n*\n* @see https://vueuse.org/createGlobalState\n* @param stateFactory A factory function to create the state\n*\n* @__NO_SIDE_EFFECTS__\n*/\nfunction createGlobalState(stateFactory) {\n\tlet initialized = false;\n\tlet state;\n\tconst scope = effectScope(true);\n\treturn ((...args) => {\n\t\tif (!initialized) {\n\t\t\tstate = scope.run(() => stateFactory(...args));\n\t\t\tinitialized = true;\n\t\t}\n\t\treturn state;\n\t});\n}\n//#endregion\n//#region provideLocal/map.ts\nconst localProvidedStateMap = /* @__PURE__ */ new WeakMap();\n//#endregion\n//#region injectLocal/index.ts\n/**\n* On the basis of `inject`, it is allowed to directly call inject to obtain the value after call provide in the same component.\n*\n* @example\n* ```ts\n* injectLocal('MyInjectionKey', 1)\n* const injectedValue = injectLocal('MyInjectionKey') // injectedValue === 1\n* ```\n*\n* @__NO_SIDE_EFFECTS__\n*/\nconst injectLocal = (...args) => {\n\tvar _getCurrentInstance;\n\tconst key = args[0];\n\tconst instance = (_getCurrentInstance = getCurrentInstance()) === null || _getCurrentInstance === void 0 ? void 0 : _getCurrentInstance.proxy;\n\tconst owner = instance !== null && instance !== void 0 ? instance : getCurrentScope();\n\tif (owner == null && !hasInjectionContext()) throw new Error(\"injectLocal must be called in setup\");\n\tif (owner && localProvidedStateMap.has(owner) && key in localProvidedStateMap.get(owner)) return localProvidedStateMap.get(owner)[key];\n\treturn inject(...args);\n};\n//#endregion\n//#region provideLocal/index.ts\n/**\n* On the basis of `provide`, it is allowed to directly call inject to obtain the value after call provide in the same component.\n*\n* @example\n* ```ts\n* provideLocal('MyInjectionKey', 1)\n* const injectedValue = injectLocal('MyInjectionKey') // injectedValue === 1\n* ```\n*/\nfunction provideLocal(key, value) {\n\tvar _getCurrentInstance;\n\tconst instance = (_getCurrentInstance = getCurrentInstance()) === null || _getCurrentInstance === void 0 ? void 0 : _getCurrentInstance.proxy;\n\tconst owner = instance !== null && instance !== void 0 ? instance : getCurrentScope();\n\tif (owner == null) throw new Error(\"provideLocal must be called in setup\");\n\tif (!localProvidedStateMap.has(owner)) localProvidedStateMap.set(owner, Object.create(null));\n\tconst localProvidedState = localProvidedStateMap.get(owner);\n\tlocalProvidedState[key] = value;\n\treturn provide(key, value);\n}\n//#endregion\n//#region createInjectionState/index.ts\nfunction createInjectionState(composable, options) {\n\tconst key = (options === null || options === void 0 ? void 0 : options.injectionKey) || Symbol(composable.name || \"InjectionState\");\n\tconst defaultValue = options === null || options === void 0 ? void 0 : options.defaultValue;\n\tconst useProvidingState = (...args) => {\n\t\tconst state = composable(...args);\n\t\tprovideLocal(key, state);\n\t\treturn state;\n\t};\n\tconst useInjectedState = () => injectLocal(key, defaultValue);\n\treturn [useProvidingState, useInjectedState];\n}\n//#endregion\n//#region createRef/index.ts\n/**\n* Returns a `deepRef` or `shallowRef` depending on the `deep` param.\n*\n* @example createRef(1) // ShallowRef<number>\n* @example createRef(1, false) // ShallowRef<number>\n* @example createRef(1, true) // Ref<number>\n* @example createRef(\"string\") // ShallowRef<string>\n* @example createRef<\"A\"|\"B\">(\"A\", true) // Ref<\"A\"|\"B\">\n*\n* @param value\n* @param deep\n* @returns the `deepRef` or `shallowRef`\n*\n* @__NO_SIDE_EFFECTS__\n*/\nfunction createRef(value, deep) {\n\tif (deep === true) return ref(value);\n\telse return shallowRef(value);\n}\n//#endregion\n//#region utils/is.ts\nconst isClient = typeof window !== \"undefined\" && typeof document !== \"undefined\";\nconst isWorker = typeof WorkerGlobalScope !== \"undefined\" && globalThis instanceof WorkerGlobalScope;\nconst isDef = (val) => typeof val !== \"undefined\";\nconst notNullish = (val) => val != null;\nconst assert = (condition, ...infos) => {\n\tif (!condition) console.warn(...infos);\n};\nconst toString = Object.prototype.toString;\nconst isObject = (val) => toString.call(val) === \"[object Object]\";\nconst now = () => Date.now();\nconst timestamp = () => +Date.now();\nconst clamp = (n, min, max) => Math.min(max, Math.max(min, n));\nconst noop = () => {};\nconst rand = (min, max) => {\n\tmin = Math.ceil(min);\n\tmax = Math.floor(max);\n\treturn Math.floor(Math.random() * (max - min + 1)) + min;\n};\nconst hasOwn = (val, key) => Object.hasOwn(val, key);\nconst isIOS = /* @__PURE__ */ getIsIOS();\nfunction getIsIOS() {\n\tvar _window, _window2, _window3;\n\treturn isClient && !!((_window = window) === null || _window === void 0 || (_window = _window.navigator) === null || _window === void 0 ? void 0 : _window.userAgent) && (/iP(?:ad|hone|od)/.test(window.navigator.userAgent) || ((_window2 = window) === null || _window2 === void 0 || (_window2 = _window2.navigator) === null || _window2 === void 0 ? void 0 : _window2.maxTouchPoints) > 2 && /iPad|Macintosh/.test((_window3 = window) === null || _window3 === void 0 ? void 0 : _window3.navigator.userAgent));\n}\n//#endregion\n//#region toRef/index.ts\nfunction toRef(...args) {\n\tif (args.length !== 1) return toRef$1(...args);\n\tconst r = args[0];\n\treturn typeof r === \"function\" ? readonly(customRef(() => ({\n\t\tget: r,\n\t\tset: noop\n\t}))) : ref(r);\n}\n//#endregion\n//#region utils/filters.ts\n/**\n* @internal\n*/\nfunction createFilterWrapper(filter, fn) {\n\tfunction wrapper(...args) {\n\t\treturn new Promise((resolve, reject) => {\n\t\t\tPromise.resolve(filter(() => fn.apply(this, args), {\n\t\t\t\tfn,\n\t\t\t\tthisArg: this,\n\t\t\t\targs\n\t\t\t})).then(resolve).catch(reject);\n\t\t});\n\t}\n\treturn wrapper;\n}\nconst bypassFilter = (invoke) => {\n\treturn invoke();\n};\n/**\n* Create an EventFilter that debounce the events\n*/\nfunction debounceFilter(ms, options = {}) {\n\tlet timer;\n\tlet maxTimer;\n\tlet lastRejector = noop;\n\tconst _clearTimeout = (timer) => {\n\t\tclearTimeout(timer);\n\t\tlastRejector();\n\t\tlastRejector = noop;\n\t};\n\tlet lastInvoker;\n\tconst filter = (invoke) => {\n\t\tconst duration = toValue(ms);\n\t\tconst maxDuration = toValue(options.maxWait);\n\t\tif (timer) _clearTimeout(timer);\n\t\tif (duration <= 0 || maxDuration !== void 0 && maxDuration <= 0) {\n\t\t\tif (maxTimer) {\n\t\t\t\t_clearTimeout(maxTimer);\n\t\t\t\tmaxTimer = void 0;\n\t\t\t}\n\t\t\treturn Promise.resolve(invoke());\n\t\t}\n\t\treturn new Promise((resolve, reject) => {\n\t\t\tlastRejector = options.rejectOnCancel ? reject : resolve;\n\t\t\tlastInvoker = invoke;\n\t\t\tif (maxDuration && !maxTimer) maxTimer = setTimeout(() => {\n\t\t\t\tif (timer) _clearTimeout(timer);\n\t\t\t\tmaxTimer = void 0;\n\t\t\t\tresolve(lastInvoker());\n\t\t\t}, maxDuration);\n\t\t\ttimer = setTimeout(() => {\n\t\t\t\tif (maxTimer) _clearTimeout(maxTimer);\n\t\t\t\tmaxTimer = void 0;\n\t\t\t\tresolve(invoke());\n\t\t\t}, duration);\n\t\t});\n\t};\n\treturn filter;\n}\nfunction throttleFilter(...args) {\n\tlet lastExec = 0;\n\tlet timer;\n\tlet isLeading = true;\n\tlet lastRejector = noop;\n\tlet lastValue;\n\tlet ms;\n\tlet trailing;\n\tlet leading;\n\tlet rejectOnCancel;\n\tif (!isRef(args[0]) && typeof args[0] === \"object\") ({delay: ms, trailing = true, leading = true, rejectOnCancel = false} = args[0]);\n\telse [ms, trailing = true, leading = true, rejectOnCancel = false] = args;\n\tconst clear = () => {\n\t\tif (timer) {\n\t\t\tclearTimeout(timer);\n\t\t\ttimer = void 0;\n\t\t\tlastRejector();\n\t\t\tlastRejector = noop;\n\t\t}\n\t};\n\tconst filter = (_invoke) => {\n\t\tconst duration = toValue(ms);\n\t\tconst elapsed = Date.now() - lastExec;\n\t\tconst invoke = () => {\n\t\t\treturn lastValue = _invoke();\n\t\t};\n\t\tclear();\n\t\tif (duration <= 0) {\n\t\t\tlastExec = Date.now();\n\t\t\treturn invoke();\n\t\t}\n\t\tif (elapsed > duration) {\n\t\t\tlastExec = Date.now();\n\t\t\tif (leading || !isLeading) invoke();\n\t\t} else if (trailing) lastValue = new Promise((resolve, reject) => {\n\t\t\tlastRejector = rejectOnCancel ? reject : resolve;\n\t\t\ttimer = setTimeout(() => {\n\t\t\t\tlastExec = Date.now();\n\t\t\t\tisLeading = true;\n\t\t\t\tresolve(invoke());\n\t\t\t\tclear();\n\t\t\t}, Math.max(0, duration - elapsed));\n\t\t});\n\t\tif (!leading && !timer) timer = setTimeout(() => isLeading = true, duration);\n\t\tisLeading = false;\n\t\treturn lastValue;\n\t};\n\treturn filter;\n}\n/**\n* EventFilter that gives extra controls to pause and resume the filter\n*\n* @param extendFilter Extra filter to apply when the PausableFilter is active, default to none\n* @param options Options to configure the filter\n*/\nfunction pausableFilter(extendFilter = bypassFilter, options = {}) {\n\tconst { initialState = \"active\" } = options;\n\tconst isActive = toRef(initialState === \"active\");\n\tfunction pause() {\n\t\tisActive.value = false;\n\t}\n\tfunction resume() {\n\t\tisActive.value = true;\n\t}\n\tconst eventFilter = (...args) => {\n\t\tif (isActive.value) extendFilter(...args);\n\t};\n\treturn {\n\t\tisActive: shallowReadonly(isActive),\n\t\tpause,\n\t\tresume,\n\t\teventFilter\n\t};\n}\n//#endregion\n//#region utils/general.ts\nfunction promiseTimeout(ms, throwOnTimeout = false, reason = \"Timeout\") {\n\treturn new Promise((resolve, reject) => {\n\t\tif (throwOnTimeout) setTimeout(reject, ms, reason);\n\t\telse setTimeout(resolve, ms);\n\t});\n}\nfunction identity(arg) {\n\treturn arg;\n}\n/**\n* Create singleton promise function\n*\n* @example\n* ```\n* const promise = createSingletonPromise(async () => { ... })\n*\n* await promise()\n* await promise() // all of them will be bind to a single promise instance\n* await promise() // and be resolved together\n* ```\n*/\nfunction createSingletonPromise(fn) {\n\tlet _promise;\n\tfunction wrapper() {\n\t\tif (!_promise) _promise = fn();\n\t\treturn _promise;\n\t}\n\twrapper.reset = async () => {\n\t\tconst _prev = _promise;\n\t\t_promise = void 0;\n\t\tif (_prev) await _prev;\n\t};\n\treturn wrapper;\n}\nfunction invoke(fn) {\n\treturn fn();\n}\nfunction containsProp(obj, ...props) {\n\treturn props.some((k) => k in obj);\n}\nfunction increaseWithUnit(target, delta) {\n\tvar _target$match;\n\tif (typeof target === \"number\") return target + delta;\n\tconst value = ((_target$match = target.match(/^-?\\d+\\.?\\d*/)) === null || _target$match === void 0 ? void 0 : _target$match[0]) || \"\";\n\tconst unit = target.slice(value.length);\n\tconst result = Number.parseFloat(value) + delta;\n\tif (Number.isNaN(result)) return target;\n\treturn result + unit;\n}\n/**\n* Get a px value for SSR use, do not rely on this method outside of SSR as REM unit is assumed at 16px, which might not be the case on the client\n*/\nfunction pxValue(px) {\n\treturn px.endsWith(\"rem\") ? Number.parseFloat(px) * 16 : Number.parseFloat(px);\n}\n/**\n* Create a new subset object by giving keys\n*/\nfunction objectPick(obj, keys, omitUndefined = false) {\n\treturn keys.reduce((n, k) => {\n\t\tif (k in obj) {\n\t\t\tif (!omitUndefined || obj[k] !== void 0) n[k] = obj[k];\n\t\t}\n\t\treturn n;\n\t}, {});\n}\n/**\n* Create a new subset object by omit giving keys\n*/\nfunction objectOmit(obj, keys, omitUndefined = false) {\n\treturn Object.fromEntries(Object.entries(obj).filter(([key, value]) => {\n\t\treturn (!omitUndefined || value !== void 0) && !keys.includes(key);\n\t}));\n}\nfunction objectEntries(obj) {\n\treturn Object.entries(obj);\n}\nfunction toArray(value) {\n\treturn Array.isArray(value) ? value : [value];\n}\n//#endregion\n//#region utils/port.ts\nfunction cacheStringFunction(fn) {\n\tconst cache = Object.create(null);\n\treturn ((str) => {\n\t\treturn cache[str] || (cache[str] = fn(str));\n\t});\n}\nconst hyphenateRE = /\\B([A-Z])/g;\nconst hyphenate = cacheStringFunction((str) => str.replace(hyphenateRE, \"-$1\").toLowerCase());\nconst camelizeRE = /-(\\w)/g;\nconst camelize = cacheStringFunction((str) => {\n\treturn str.replace(camelizeRE, (_, c) => c ? c.toUpperCase() : \"\");\n});\n//#endregion\n//#region utils/vue.ts\nfunction getLifeCycleTarget(target) {\n\treturn target || getCurrentInstance();\n}\n//#endregion\n//#region createSharedComposable/index.ts\n/**\n* Make a composable function usable with multiple Vue instances.\n*\n* @see https://vueuse.org/createSharedComposable\n*\n* @__NO_SIDE_EFFECTS__\n*/\nfunction createSharedComposable(composable) {\n\tif (!isClient) return composable;\n\tlet subscribers = 0;\n\tlet state;\n\tlet scope;\n\tconst dispose = () => {\n\t\tsubscribers -= 1;\n\t\tif (scope && subscribers <= 0) {\n\t\t\tscope.stop();\n\t\t\tstate = void 0;\n\t\t\tscope = void 0;\n\t\t}\n\t};\n\treturn ((...args) => {\n\t\tsubscribers += 1;\n\t\tif (!scope) {\n\t\t\tscope = effectScope(true);\n\t\t\tstate = scope.run(() => composable(...args));\n\t\t}\n\t\ttryOnScopeDispose(dispose);\n\t\treturn state;\n\t});\n}\n//#endregion\n//#region extendRef/index.ts\nfunction extendRef(ref, extend, { enumerable = false, unwrap = true } = {}) {\n\tfor (const [key, value] of Object.entries(extend)) {\n\t\tif (key === \"value\") continue;\n\t\tif (isRef(value) && unwrap) Object.defineProperty(ref, key, {\n\t\t\tget() {\n\t\t\t\treturn value.value;\n\t\t\t},\n\t\t\tset(v) {\n\t\t\t\tvalue.value = v;\n\t\t\t},\n\t\t\tenumerable\n\t\t});\n\t\telse Object.defineProperty(ref, key, {\n\t\t\tvalue,\n\t\t\tenumerable\n\t\t});\n\t}\n\treturn ref;\n}\n//#endregion\n//#region get/index.ts\nfunction get(obj, key) {\n\tif (key == null) return unref(obj);\n\treturn unref(obj)[key];\n}\n//#endregion\n//#region isDefined/index.ts\nfunction isDefined(v) {\n\treturn unref(v) != null;\n}\n//#endregion\n//#region makeDestructurable/index.ts\n/* @__NO_SIDE_EFFECTS__ */\nfunction makeDestructurable(obj, arr) {\n\tif (typeof Symbol !== \"undefined\") {\n\t\tconst clone = { ...obj };\n\t\tObject.defineProperty(clone, Symbol.iterator, {\n\t\t\tenumerable: false,\n\t\t\tvalue() {\n\t\t\t\tlet index = 0;\n\t\t\t\treturn { next: () => ({\n\t\t\t\t\tvalue: arr[index++],\n\t\t\t\t\tdone: index > arr.length\n\t\t\t\t}) };\n\t\t\t}\n\t\t});\n\t\treturn clone;\n\t} else return Object.assign([...arr], obj);\n}\n//#endregion\n//#region reactify/index.ts\n/**\n* Converts plain function into a reactive function.\n* The converted function accepts refs as it's arguments\n* and returns a ComputedRef, with proper typing.\n*\n* @param fn - Source function\n* @param options - Options\n*\n* @__NO_SIDE_EFFECTS__\n*/\nfunction reactify(fn, options) {\n\tconst unrefFn = (options === null || options === void 0 ? void 0 : options.computedGetter) === false ? unref : toValue;\n\treturn function(...args) {\n\t\treturn computed(() => fn.apply(this, args.map((i) => unrefFn(i))));\n\t};\n}\n/** @deprecated use `reactify` instead */\nconst createReactiveFn = reactify;\n//#endregion\n//#region reactifyObject/index.ts\n/**\n* Apply `reactify` to an object\n*\n* @__NO_SIDE_EFFECTS__\n*/\nfunction reactifyObject(obj, optionsOrKeys = {}) {\n\tlet keys = [];\n\tlet options;\n\tif (Array.isArray(optionsOrKeys)) keys = optionsOrKeys;\n\telse {\n\t\toptions = optionsOrKeys;\n\t\tconst { includeOwnProperties = true } = optionsOrKeys;\n\t\tkeys.push(...Object.keys(obj));\n\t\tif (includeOwnProperties) keys.push(...Object.getOwnPropertyNames(obj));\n\t}\n\treturn Object.fromEntries(keys.map((key) => {\n\t\tconst value = obj[key];\n\t\treturn [key, typeof value === \"function\" ? reactify(value.bind(obj), options) : value];\n\t}));\n}\n//#endregion\n//#region toReactive/index.ts\n/**\n* Converts ref to reactive.\n*\n* @see https://vueuse.org/toReactive\n* @param objectRef A ref of object\n*/\nfunction toReactive(objectRef) {\n\tif (!isRef(objectRef)) return reactive(objectRef);\n\treturn reactive(new Proxy({}, {\n\t\tget(_, p, receiver) {\n\t\t\treturn unref(Reflect.get(objectRef.value, p, receiver));\n\t\t},\n\t\tset(_, p, value) {\n\t\t\tif (isRef(objectRef.value[p]) && !isRef(value)) objectRef.value[p].value = value;\n\t\t\telse objectRef.value[p] = value;\n\t\t\treturn true;\n\t\t},\n\t\tdeleteProperty(_, p) {\n\t\t\treturn Reflect.deleteProperty(objectRef.value, p);\n\t\t},\n\t\thas(_, p) {\n\t\t\treturn Reflect.has(objectRef.value, p);\n\t\t},\n\t\townKeys() {\n\t\t\treturn Object.keys(objectRef.value);\n\t\t},\n\t\tgetOwnPropertyDescriptor() {\n\t\t\treturn {\n\t\t\t\tenumerable: true,\n\t\t\t\tconfigurable: true\n\t\t\t};\n\t\t}\n\t}));\n}\n//#endregion\n//#region reactiveComputed/index.ts\n/**\n* Computed reactive object.\n*/\nfunction reactiveComputed(fn) {\n\treturn toReactive(computed(fn));\n}\n//#endregion\n//#region reactiveOmit/index.ts\n/**\n* Reactively omit fields from a reactive object\n*\n* @see https://vueuse.org/reactiveOmit\n*/\nfunction reactiveOmit(obj, ...keys) {\n\tconst flatKeys = keys.flat();\n\tconst predicate = flatKeys[0];\n\treturn reactiveComputed(() => typeof predicate === \"function\" ? Object.fromEntries(Object.entries(toRefs$1(obj)).filter(([k, v]) => !predicate(toValue(v), k))) : Object.fromEntries(Object.entries(toRefs$1(obj)).filter((e) => !flatKeys.includes(e[0]))));\n}\n//#endregion\n//#region reactivePick/index.ts\n/**\n* Reactively pick fields from a reactive object\n*\n* @see https://vueuse.org/reactivePick\n*/\nfunction reactivePick(obj, ...keys) {\n\tconst flatKeys = keys.flat();\n\tconst predicate = flatKeys[0];\n\treturn reactiveComputed(() => typeof predicate === \"function\" ? Object.fromEntries(Object.entries(toRefs$1(obj)).filter(([k, v]) => predicate(toValue(v), k))) : Object.fromEntries(flatKeys.map((k) => [k, toRef(obj, k)])));\n}\n//#endregion\n//#region refAutoReset/index.ts\n/**\n* Create a ref which will be reset to the default value after some time.\n*\n* @see https://vueuse.org/refAutoReset\n* @param defaultValue The value which will be set.\n* @param afterMs A zero-or-greater delay in milliseconds.\n*/\nfunction refAutoReset(defaultValue, afterMs = 1e4) {\n\treturn customRef((track, trigger) => {\n\t\tlet value = toValue(defaultValue);\n\t\tlet timer;\n\t\tconst resetAfter = () => setTimeout(() => {\n\t\t\tvalue = toValue(defaultValue);\n\t\t\ttrigger();\n\t\t}, toValue(afterMs));\n\t\ttryOnScopeDispose(() => {\n\t\t\tclearTimeout(timer);\n\t\t});\n\t\treturn {\n\t\t\tget() {\n\t\t\t\ttrack();\n\t\t\t\treturn value;\n\t\t\t},\n\t\t\tset(newValue) {\n\t\t\t\tvalue = newValue;\n\t\t\t\ttrigger();\n\t\t\t\tclearTimeout(timer);\n\t\t\t\ttimer = resetAfter();\n\t\t\t}\n\t\t};\n\t});\n}\n/** @deprecated use `refAutoReset` instead */\nconst autoResetRef = refAutoReset;\n//#endregion\n//#region useDebounceFn/index.ts\n/**\n* Debounce execution of a function.\n*\n* @see https://vueuse.org/useDebounceFn\n* @param fn A function to be executed after delay milliseconds debounced.\n* @param ms A zero-or-greater delay in milliseconds. For event callbacks, values around 100 or 250 (or even higher) are most useful.\n* @param options Options\n*\n* @return A new, debounce, function.\n*\n* @__NO_SIDE_EFFECTS__\n*/\nfunction useDebounceFn(fn, ms = 200, options = {}) {\n\treturn createFilterWrapper(debounceFilter(ms, options), fn);\n}\n//#endregion\n//#region refDebounced/index.ts\n/**\n* Debounce updates of a ref.\n*\n* @return A new debounced ref.\n*/\nfunction refDebounced(value, ms = 200, options = {}) {\n\tconst debounced = ref(toValue(value));\n\tconst updater = useDebounceFn(() => {\n\t\tdebounced.value = value.value;\n\t}, ms, options);\n\twatch(value, () => updater());\n\treturn shallowReadonly(debounced);\n}\n/** @deprecated use `refDebounced` instead */\nconst debouncedRef = refDebounced;\n/** @deprecated use `refDebounced` instead */\nconst useDebounce = refDebounced;\n//#endregion\n//#region refDefault/index.ts\n/**\n* Apply default value to a ref.\n*\n* @__NO_SIDE_EFFECTS__\n*/\nfunction refDefault(source, defaultValue) {\n\treturn computed({\n\t\tget() {\n\t\t\tvar _source$value;\n\t\t\treturn (_source$value = source.value) !== null && _source$value !== void 0 ? _source$value : defaultValue;\n\t\t},\n\t\tset(value) {\n\t\t\tsource.value = value;\n\t\t}\n\t});\n}\n//#endregion\n//#region refManualReset/index.ts\n/**\n* Create a ref with manual reset functionality.\n*\n* @see https://vueuse.org/refManualReset\n* @param defaultValue The value which will be set.\n*/\nfunction refManualReset(defaultValue) {\n\tlet value = toValue(defaultValue);\n\tlet trigger;\n\tconst reset = () => {\n\t\tvalue = toValue(defaultValue);\n\t\ttrigger();\n\t};\n\tconst refValue = customRef((track, _trigger) => {\n\t\ttrigger = _trigger;\n\t\treturn {\n\t\t\tget() {\n\t\t\t\ttrack();\n\t\t\t\treturn value;\n\t\t\t},\n\t\t\tset(newValue) {\n\t\t\t\tvalue = newValue;\n\t\t\t\ttrigger();\n\t\t\t}\n\t\t};\n\t});\n\trefValue.reset = reset;\n\treturn refValue;\n}\n//#endregion\n//#region useThrottleFn/index.ts\n/**\n* Throttle execution of a function. Especially useful for rate limiting\n* execution of handlers on events like resize and scroll.\n*\n* @param fn A function to be executed after delay milliseconds. The `this` context and all arguments are passed through, as-is,\n* to `callback` when the throttled-function is executed.\n* @param ms A zero-or-greater delay in milliseconds. For event callbacks, values around 100 or 250 (or even higher) are most useful.\n* (default value: 200)\n*\n* @param [trailing] if true, call fn again after the time is up (default value: false)\n*\n* @param [leading] if true, call fn on the leading edge of the ms timeout (default value: true)\n*\n* @param [rejectOnCancel] if true, reject the last call if it's been cancel (default value: false)\n*\n* @return A new, throttled, function.\n*\n* @__NO_SIDE_EFFECTS__\n*/\nfunction useThrottleFn(fn, ms = 200, trailing = false, leading = true, rejectOnCancel = false) {\n\treturn createFilterWrapper(throttleFilter(ms, trailing, leading, rejectOnCancel), fn);\n}\n//#endregion\n//#region refThrottled/index.ts\n/**\n* Throttle execution of a function. Especially useful for rate limiting\n* execution of handlers on events like resize and scroll.\n*\n* @param value Ref value to be watched with throttle effect\n* @param delay A zero-or-greater delay in milliseconds. For event callbacks, values around 100 or 250 (or even higher) are most useful.\n* @param trailing if true, update the value again after the delay time is up\n* @param leading if true, update the value on the leading edge of the ms timeout\n*/\nfunction refThrottled(value, delay = 200, trailing = true, leading = true) {\n\tif (delay <= 0) return value;\n\tconst throttled = ref(toValue(value));\n\tconst updater = useThrottleFn(() => {\n\t\tthrottled.value = value.value;\n\t}, delay, trailing, leading);\n\twatch(value, () => updater());\n\treturn throttled;\n}\n/** @deprecated use `refThrottled` instead */\nconst throttledRef = refThrottled;\n/** @deprecated use `refThrottled` instead */\nconst useThrottle = refThrottled;\n//#endregion\n//#region refWithControl/index.ts\n/**\n* Fine-grained controls over ref and its reactivity.\n*\n* @__NO_SIDE_EFFECTS__\n*/\nfunction refWithControl(initial, options = {}) {\n\tlet source = initial;\n\tlet track;\n\tlet trigger;\n\tconst ref = customRef((_track, _trigger) => {\n\t\ttrack = _track;\n\t\ttrigger = _trigger;\n\t\treturn {\n\t\t\tget() {\n\t\t\t\treturn get();\n\t\t\t},\n\t\t\tset(v) {\n\t\t\t\tset(v);\n\t\t\t}\n\t\t};\n\t});\n\tfunction get(tracking = true) {\n\t\tif (tracking) track();\n\t\treturn source;\n\t}\n\tfunction set(value, triggering = true) {\n\t\tvar _options$onBeforeChan, _options$onChanged;\n\t\tif (value === source) return;\n\t\tconst old = source;\n\t\tif (((_options$onBeforeChan = options.onBeforeChange) === null || _options$onBeforeChan === void 0 ? void 0 : _options$onBeforeChan.call(options, value, old)) === false) return;\n\t\tsource = value;\n\t\t(_options$onChanged = options.onChanged) === null || _options$onChanged === void 0 || _options$onChanged.call(options, value, old);\n\t\tif (triggering) trigger();\n\t}\n\t/**\n\t* Get the value without tracked in the reactivity system\n\t*/\n\tconst untrackedGet = () => get(false);\n\t/**\n\t* Set the value without triggering the reactivity system\n\t*/\n\tconst silentSet = (v) => set(v, false);\n\t/**\n\t* Get the value without tracked in the reactivity system.\n\t*\n\t* Alias for `untrackedGet()`\n\t*/\n\tconst peek = () => get(false);\n\t/**\n\t* Set the value without triggering the reactivity system\n\t*\n\t* Alias for `silentSet(v)`\n\t*/\n\tconst lay = (v) => set(v, false);\n\treturn extendRef(ref, {\n\t\tget,\n\t\tset,\n\t\tuntrackedGet,\n\t\tsilentSet,\n\t\tpeek,\n\t\tlay\n\t}, { enumerable: true });\n}\n/** @deprecated use `refWithControl` instead */\nconst controlledRef = refWithControl;\n//#endregion\n//#region set/index.ts\n/**\n* Shorthand for `ref.value = x`\n*/\nfunction set(...args) {\n\tif (args.length === 2) {\n\t\tconst [ref, value] = args;\n\t\tref.value = value;\n\t}\n\tif (args.length === 3) {\n\t\tconst [target, key, value] = args;\n\t\ttarget[key] = value;\n\t}\n}\n//#endregion\n//#region watchWithFilter/index.ts\nfunction watchWithFilter(source, cb, options = {}) {\n\tconst { eventFilter = bypassFilter, ...watchOptions } = options;\n\treturn watch(source, createFilterWrapper(eventFilter, cb), watchOptions);\n}\n//#endregion\n//#region watchPausable/index.ts\n/** @deprecated Use Vue's built-in `watch` instead. This function will be removed in future version. */\nfunction watchPausable(source, cb, options = {}) {\n\tconst { eventFilter: filter, initialState = \"active\", ...watchOptions } = options;\n\tconst { eventFilter, pause, resume, isActive } = pausableFilter(filter, { initialState });\n\treturn {\n\t\tstop: watchWithFilter(source, cb, {\n\t\t\t...watchOptions,\n\t\t\teventFilter\n\t\t}),\n\t\tpause,\n\t\tresume,\n\t\tisActive\n\t};\n}\n/** @deprecated Use Vue's built-in `watch` instead. This function will be removed in future version. */\nconst pausableWatch = watchPausable;\n//#endregion\n//#region syncRef/index.ts\n/**\n* Two-way refs synchronization.\n* From the set theory perspective to restrict the option's type\n* Check in the following order:\n* 1. L = R\n* 2. L ∩ R ≠ ∅\n* 3. L ⊆ R\n* 4. L ∩ R = ∅\n*/\nfunction syncRef(left, right, ...[options]) {\n\tconst { flush = \"sync\", deep = false, immediate = true, direction = \"both\", transform = {} } = options || {};\n\tconst watchers = [];\n\tconst transformLTR = \"ltr\" in transform && transform.ltr || ((v) => v);\n\tconst transformRTL = \"rtl\" in transform && transform.rtl || ((v) => v);\n\tif (direction === \"both\" || direction === \"ltr\") watchers.push(watchPausable(left, (newValue) => {\n\t\twatchers.forEach((w) => w.pause());\n\t\tright.value = transformLTR(newValue);\n\t\twatchers.forEach((w) => w.resume());\n\t}, {\n\t\tflush,\n\t\tdeep,\n\t\timmediate\n\t}));\n\tif (direction === \"both\" || direction === \"rtl\") watchers.push(watchPausable(right, (newValue) => {\n\t\twatchers.forEach((w) => w.pause());\n\t\tleft.value = transformRTL(newValue);\n\t\twatchers.forEach((w) => w.resume());\n\t}, {\n\t\tflush,\n\t\tdeep,\n\t\timmediate\n\t}));\n\tconst stop = () => {\n\t\twatchers.forEach((w) => w.stop());\n\t};\n\treturn stop;\n}\n//#endregion\n//#region syncRefs/index.ts\n/**\n* Keep target ref(s) in sync with the source ref\n*\n* @param source source ref\n* @param targets\n*/\nfunction syncRefs(source, targets, options = {}) {\n\tconst { flush = \"sync\", deep = false, immediate = true } = options;\n\tconst targetsArray = toArray(targets);\n\treturn watch(source, (newValue) => targetsArray.forEach((target) => target.value = newValue), {\n\t\tflush,\n\t\tdeep,\n\t\timmediate\n\t});\n}\n//#endregion\n//#region toRefs/index.ts\n/**\n* Extended `toRefs` that also accepts refs of an object.\n*\n* @see https://vueuse.org/toRefs\n* @param objectRef A ref or normal object or array.\n* @param options Options\n*/\nfunction toRefs(objectRef, options = {}) {\n\tif (!isRef(objectRef)) return toRefs$1(objectRef);\n\tconst result = Array.isArray(objectRef.value) ? Array.from({ length: objectRef.value.length }) : {};\n\tfor (const key in objectRef.value) result[key] = customRef(() => ({\n\t\tget() {\n\t\t\treturn objectRef.value[key];\n\t\t},\n\t\tset(v) {\n\t\t\tvar _toValue;\n\t\t\tif ((_toValue = toValue(options.replaceRef)) !== null && _toValue !== void 0 ? _toValue : true) if (Array.isArray(objectRef.value)) {\n\t\t\t\tconst copy = [...objectRef.value];\n\t\t\t\tcopy[key] = v;\n\t\t\t\tobjectRef.value = copy;\n\t\t\t} else {\n\t\t\t\tconst newObject = {\n\t\t\t\t\t...objectRef.value,\n\t\t\t\t\t[key]: v\n\t\t\t\t};\n\t\t\t\tObject.setPrototypeOf(newObject, Object.getPrototypeOf(objectRef.value));\n\t\t\t\tobjectRef.value = newObject;\n\t\t\t}\n\t\t\telse objectRef.value[key] = v;\n\t\t}\n\t}));\n\treturn result;\n}\n//#endregion\n//#region tryOnBeforeMount/index.ts\n/**\n* Call onBeforeMount() if it's inside a component lifecycle, if not, just call the function\n*\n* @param fn\n* @param sync if set to false, it will run in the nextTick() of Vue\n* @param target\n*/\nfunction tryOnBeforeMount(fn, sync = true, target) {\n\tif (getLifeCycleTarget(target)) onBeforeMount(fn, target);\n\telse if (sync) fn();\n\telse nextTick(fn);\n}\n//#endregion\n//#region tryOnBeforeUnmount/index.ts\n/**\n* Call onBeforeUnmount() if it's inside a component lifecycle, if not, do nothing\n*\n* @param fn\n* @param target\n*/\nfunction tryOnBeforeUnmount(fn, target) {\n\tif (getLifeCycleTarget(target)) onBeforeUnmount(fn, target);\n}\n//#endregion\n//#region tryOnMounted/index.ts\n/**\n* Call onMounted() if it's inside a component lifecycle, if not, just call the function\n*\n* @param fn\n* @param sync if set to false, it will run in the nextTick() of Vue\n* @param target\n*/\nfunction tryOnMounted(fn, sync = true, target) {\n\tif (getLifeCycleTarget(target)) onMounted(fn, target);\n\telse if (sync) fn();\n\telse nextTick(fn);\n}\n//#endregion\n//#region tryOnUnmounted/index.ts\n/**\n* Call onUnmounted() if it's inside a component lifecycle, if not, do nothing\n*\n* @param fn\n* @param target\n*/\nfunction tryOnUnmounted(fn, target) {\n\tif (getLifeCycleTarget(target)) onUnmounted(fn, target);\n}\n//#endregion\n//#region until/index.ts\nfunction createUntil(r, isNot = false) {\n\tfunction toMatch(condition, { flush = \"sync\", deep = false, timeout, throwOnTimeout } = {}) {\n\t\tlet stop = null;\n\t\tconst promises = [new Promise((resolve) => {\n\t\t\tstop = watch(r, (v) => {\n\t\t\t\tif (condition(v) !== isNot) {\n\t\t\t\t\tif (stop) stop();\n\t\t\t\t\telse nextTick(() => stop === null || stop === void 0 ? void 0 : stop());\n\t\t\t\t\tresolve(v);\n\t\t\t\t}\n\t\t\t}, {\n\t\t\t\tflush,\n\t\t\t\tdeep,\n\t\t\t\timmediate: true\n\t\t\t});\n\t\t})];\n\t\tif (timeout != null) promises.push(promiseTimeout(timeout, throwOnTimeout).then(() => toValue(r)).finally(() => stop === null || stop === void 0 ? void 0 : stop()));\n\t\treturn Promise.race(promises);\n\t}\n\tfunction toBe(value, options) {\n\t\tif (!isRef(value)) return toMatch((v) => v === value, options);\n\t\tconst { flush = \"sync\", deep = false, timeout, throwOnTimeout } = options !== null && options !== void 0 ? options : {};\n\t\tlet stop = null;\n\t\tconst promises = [new Promise((resolve) => {\n\t\t\tstop = watch([r, value], ([v1, v2]) => {\n\t\t\t\tif (isNot !== (v1 === v2)) {\n\t\t\t\t\tif (stop) stop();\n\t\t\t\t\telse nextTick(() => stop === null || stop === void 0 ? void 0 : stop());\n\t\t\t\t\tresolve(v1);\n\t\t\t\t}\n\t\t\t}, {\n\t\t\t\tflush,\n\t\t\t\tdeep,\n\t\t\t\timmediate: true\n\t\t\t});\n\t\t})];\n\t\tif (timeout != null) promises.push(promiseTimeout(timeout, throwOnTimeout).then(() => toValue(r)).finally(() => {\n\t\t\tstop === null || stop === void 0 || stop();\n\t\t\treturn toValue(r);\n\t\t}));\n\t\treturn Promise.race(promises);\n\t}\n\tfunction toBeTruthy(options) {\n\t\treturn toMatch((v) => Boolean(v), options);\n\t}\n\tfunction toBeNull(options) {\n\t\treturn toBe(null, options);\n\t}\n\tfunction toBeUndefined(options) {\n\t\treturn toBe(void 0, options);\n\t}\n\tfunction toBeNaN(options) {\n\t\treturn toMatch(Number.isNaN, options);\n\t}\n\tfunction toContains(value, options) {\n\t\treturn toMatch((v) => {\n\t\t\tconst array = Array.from(v);\n\t\t\treturn array.includes(value) || array.includes(toValue(value));\n\t\t}, options);\n\t}\n\tfunction changed(options) {\n\t\treturn changedTimes(1, options);\n\t}\n\tfunction changedTimes(n = 1, options) {\n\t\tlet count = -1;\n\t\treturn toMatch(() => {\n\t\t\tcount += 1;\n\t\t\treturn count >= n;\n\t\t}, options);\n\t}\n\tif (Array.isArray(toValue(r))) return {\n\t\ttoMatch,\n\t\ttoContains,\n\t\tchanged,\n\t\tchangedTimes,\n\t\tget not() {\n\t\t\treturn createUntil(r, !isNot);\n\t\t}\n\t};\n\telse return {\n\t\ttoMatch,\n\t\ttoBe,\n\t\ttoBeTruthy,\n\t\ttoBeNull,\n\t\ttoBeNaN,\n\t\ttoBeUndefined,\n\t\tchanged,\n\t\tchangedTimes,\n\t\tget not() {\n\t\t\treturn createUntil(r, !isNot);\n\t\t}\n\t};\n}\nfunction until(r) {\n\treturn createUntil(r);\n}\n//#endregion\n//#region useArrayDifference/index.ts\nfunction defaultComparator(value, othVal) {\n\treturn value === othVal;\n}\n/**\n* Reactive get array difference of two array\n* @see https://vueuse.org/useArrayDifference\n* @returns - the difference of two array\n* @param args\n*\n* @__NO_SIDE_EFFECTS__\n*/\nfunction useArrayDifference(...args) {\n\tvar _args$, _args$2;\n\tconst list = args[0];\n\tconst values = args[1];\n\tlet compareFn = (_args$ = args[2]) !== null && _args$ !== void 0 ? _args$ : defaultComparator;\n\tconst { symmetric = false } = (_args$2 = args[3]) !== null && _args$2 !== void 0 ? _args$2 : {};\n\tif (typeof compareFn === \"string\") {\n\t\tconst key = compareFn;\n\t\tcompareFn = (value, othVal) => value[key] === othVal[key];\n\t}\n\tconst diff1 = computed(() => toValue(list).filter((x) => toValue(values).findIndex((y) => compareFn(x, y)) === -1));\n\tif (symmetric) {\n\t\tconst diff2 = computed(() => toValue(values).filter((x) => toValue(list).findIndex((y) => compareFn(x, y)) === -1));\n\t\treturn computed(() => symmetric ? [...toValue(diff1), ...toValue(diff2)] : toValue(diff1));\n\t} else return diff1;\n}\n//#endregion\n//#region useArrayEvery/index.ts\n/**\n* Reactive `Array.every`\n*\n* @see https://vueuse.org/useArrayEvery\n* @param list - the array was called upon.\n* @param fn - a function to test each element.\n*\n* @returns **true** if the `fn` function returns a **truthy** value for every element from the array. Otherwise, **false**.\n*\n* @__NO_SIDE_EFFECTS__\n*/\nfunction useArrayEvery(list, fn) {\n\treturn computed(() => toValue(list).every((element, index, array) => fn(toValue(element), index, array)));\n}\n//#endregion\n//#region useArrayFilter/index.ts\n/**\n* Reactive `Array.filter`\n*\n* @see https://vueuse.org/useArrayFilter\n* @param list - the array was called upon.\n* @param fn - a function that is called for every element of the given `list`. Each time `fn` executes, the returned value is added to the new array.\n*\n* @returns a shallow copy of a portion of the given array, filtered down to just the elements from the given array that pass the test implemented by the provided function. If no elements pass the test, an empty array will be returned.\n*\n* @__NO_SIDE_EFFECTS__\n*/\nfunction useArrayFilter(list, fn) {\n\treturn computed(() => toValue(list).map((i) => toValue(i)).filter(fn));\n}\n//#endregion\n//#region useArrayFind/index.ts\n/**\n* Reactive `Array.find`\n*\n* @see https://vueuse.org/useArrayFind\n* @param list - the array was called upon.\n* @param fn - a function to test each element.\n*\n* @returns the first element in the array that satisfies the provided testing function. Otherwise, undefined is returned.\n*\n* @__NO_SIDE_EFFECTS__\n*/\nfunction useArrayFind(list, fn) {\n\treturn computed(() => toValue(toValue(list).find((element, index, array) => fn(toValue(element), index, array))));\n}\n//#endregion\n//#region useArrayFindIndex/index.ts\n/**\n* Reactive `Array.findIndex`\n*\n* @see https://vueuse.org/useArrayFindIndex\n* @param list - the array was called upon.\n* @param fn - a function to test each element.\n*\n* @returns the index of the first element in the array that passes the test. Otherwise, \"-1\".\n*\n* @__NO_SIDE_EFFECTS__\n*/\nfunction useArrayFindIndex(list, fn) {\n\treturn computed(() => toValue(list).findIndex((element, index, array) => fn(toValue(element), index, array)));\n}\n//#endregion\n//#region useArrayFindLast/index.ts\nfunction findLast(arr, cb) {\n\tlet index = arr.length;\n\twhile (index-- > 0) if (cb(arr[index], index, arr)) return arr[index];\n}\n/**\n* Reactive `Array.findLast`\n*\n* @see https://vueuse.org/useArrayFindLast\n* @param list - the array was called upon.\n* @param fn - a function to test each element.\n*\n* @returns the last element in the array that satisfies the provided testing function. Otherwise, undefined is returned.\n*\n* @__NO_SIDE_EFFECTS__\n*/\nfunction useArrayFindLast(list, fn) {\n\treturn computed(() => toValue(!Array.prototype.findLast ? findLast(toValue(list), (element, index, array) => fn(toValue(element), index, array)) : toValue(list).findLast((element, index, array) => fn(toValue(element), index, array))));\n}\n//#endregion\n//#region useArrayIncludes/index.ts\nfunction isArrayIncludesOptions(obj) {\n\treturn isObject(obj) && containsProp(obj, \"formIndex\", \"comparator\");\n}\n/**\n* Reactive `Array.includes`\n*\n* @see https://vueuse.org/useArrayIncludes\n*\n* @returns true if the `value` is found in the array. Otherwise, false.\n*\n* @__NO_SIDE_EFFECTS__\n*/\nfunction useArrayIncludes(...args) {\n\tvar _comparator;\n\tconst list = args[0];\n\tconst value = args[1];\n\tlet comparator = args[2];\n\tlet formIndex = 0;\n\tif (isArrayIncludesOptions(comparator)) {\n\t\tvar _comparator$fromIndex;\n\t\tformIndex = (_comparator$fromIndex = comparator.fromIndex) !== null && _comparator$fromIndex !== void 0 ? _comparator$fromIndex : 0;\n\t\tcomparator = comparator.comparator;\n\t}\n\tif (typeof comparator === \"string\") {\n\t\tconst key = comparator;\n\t\tcomparator = (element, value) => element[key] === toValue(value);\n\t}\n\tcomparator = (_comparator = comparator) !== null && _comparator !== void 0 ? _comparator : ((element, value) => element === toValue(value));\n\treturn computed(() => toValue(list).slice(formIndex).some((element, index, array) => comparator(toValue(element), toValue(value), index, toValue(array))));\n}\n//#endregion\n//#region useArrayJoin/index.ts\n/**\n* Reactive `Array.join`\n*\n* @see https://vueuse.org/useArrayJoin\n* @param list - the array was called upon.\n* @param separator - a string to separate each pair of adjacent elements of the array. If omitted, the array elements are separated with a comma (\",\").\n*\n* @returns a string with all array elements joined. If arr.length is 0, the empty string is returned.\n*\n* @__NO_SIDE_EFFECTS__\n*/\nfunction useArrayJoin(list, separator) {\n\treturn computed(() => toValue(list).map((i) => toValue(i)).join(toValue(separator)));\n}\n//#endregion\n//#region useArrayMap/index.ts\n/**\n* Reactive `Array.map`\n*\n* @see https://vueuse.org/useArrayMap\n* @param list - the array was called upon.\n* @param fn - a function that is called for every element of the given `list`. Each time `fn` executes, the returned value is added to the new array.\n*\n* @returns a new array with each element being the result of the callback function.\n*\n* @__NO_SIDE_EFFECTS__\n*/\nfunction useArrayMap(list, fn) {\n\treturn computed(() => toValue(list).map((i) => toValue(i)).map(fn));\n}\n//#endregion\n//#region useArrayReduce/index.ts\n/**\n* Reactive `Array.reduce`\n*\n* @see https://vueuse.org/useArrayReduce\n* @param list - the array was called upon.\n* @param reducer - a \"reducer\" function.\n* @param args\n*\n* @returns the value that results from running the \"reducer\" callback function to completion over the entire array.\n*\n* @__NO_SIDE_EFFECTS__\n*/\nfunction useArrayReduce(list, reducer, ...args) {\n\tconst reduceCallback = (sum, value, index) => reducer(toValue(sum), toValue(value), index);\n\treturn computed(() => {\n\t\tconst resolved = toValue(list);\n\t\treturn args.length ? resolved.reduce(reduceCallback, typeof args[0] === \"function\" ? toValue(args[0]()) : toValue(args[0])) : resolved.reduce(reduceCallback);\n\t});\n}\n//#endregion\n//#region useArraySome/index.ts\n/**\n* Reactive `Array.some`\n*\n* @see https://vueuse.org/useArraySome\n* @param list - the array was called upon.\n* @param fn - a function to test each element.\n*\n* @returns **true** if the `fn` function returns a **truthy** value for any element from the array. Otherwise, **false**.\n*\n* @__NO_SIDE_EFFECTS__\n*/\nfunction useArraySome(list, fn) {\n\treturn computed(() => toValue(list).some((element, index, array) => fn(toValue(element), index, array)));\n}\n//#endregion\n//#region useArrayUnique/index.ts\nfunction uniq(array) {\n\treturn Array.from(new Set(array));\n}\nfunction uniqueElementsBy(array, fn) {\n\treturn array.reduce((acc, v) => {\n\t\tif (!acc.some((x) => fn(v, x, array))) acc.push(v);\n\t\treturn acc;\n\t}, []);\n}\n/**\n* reactive unique array\n* @see https://vueuse.org/useArrayUnique\n* @param list - the array was called upon.\n* @param compareFn\n* @returns A computed ref that returns a unique array of items.\n*\n* @__NO_SIDE_EFFECTS__\n*/\nfunction useArrayUnique(list, compareFn) {\n\treturn computed(() => {\n\t\tconst resolvedList = toValue(list).map((element) => toValue(element));\n\t\treturn compareFn ? uniqueElementsBy(resolvedList, compareFn) : uniq(resolvedList);\n\t});\n}\n//#endregion\n//#region useCounter/index.ts\n/**\n* Basic counter with utility functions.\n*\n* @see https://vueuse.org/useCounter\n* @param [initialValue]\n* @param options\n*/\nfunction useCounter(initialValue = 0, options = {}) {\n\tlet _initialValue = unref(initialValue);\n\tconst count = shallowRef(initialValue);\n\tconst { max = Number.POSITIVE_INFINITY, min = Number.NEGATIVE_INFINITY } = options;\n\tconst inc = (delta = 1) => count.value = Math.max(Math.min(max, count.value + delta), min);\n\tconst dec = (delta = 1) => count.value = Math.min(Math.max(min, count.value - delta), max);\n\tconst get = () => count.value;\n\tconst set = (val) => count.value = Math.max(min, Math.min(max, val));\n\tconst reset = (val = _initialValue) => {\n\t\t_initialValue = val;\n\t\treturn set(val);\n\t};\n\treturn {\n\t\tcount: shallowReadonly(count),\n\t\tinc,\n\t\tdec,\n\t\tget,\n\t\tset,\n\t\treset\n\t};\n}\n//#endregion\n//#region useDateFormat/index.ts\nconst REGEX_PARSE = /^(\\d{4})[-/]?(\\d{1,2})?[-/]?(\\d{0,2})[T\\s]*(\\d{1,2})?:?(\\d{1,2})?:?(\\d{1,2})?[.:]?(\\d+)?$/i;\nconst REGEX_FORMAT = /[YMDHhms]o|\\[([^\\]]+)\\]|Y{1,4}|M{1,4}|D{1,2}|d{1,4}|H{1,2}|h{1,2}|a{1,2}|A{1,2}|m{1,2}|s{1,2}|Z{1,2}|z{1,4}|SSS/g;\nfunction defaultMeridiem(hours, minutes, isLowercase, hasPeriod) {\n\tlet m = hours < 12 ? \"AM\" : \"PM\";\n\tif (hasPeriod) m = m.split(\"\").reduce((acc, curr) => acc += `${curr}.`, \"\");\n\treturn isLowercase ? m.toLowerCase() : m;\n}\nfunction formatOrdinal(num) {\n\tconst suffixes = [\n\t\t\"th\",\n\t\t\"st\",\n\t\t\"nd\",\n\t\t\"rd\"\n\t];\n\tconst v = num % 100;\n\treturn num + (suffixes[(v - 20) % 10] || suffixes[v] || suffixes[0]);\n}\nfunction formatDate(date, formatStr, options = {}) {\n\tvar _options$customMeridi;\n\tconst years = date.getFullYear();\n\tconst month = date.getMonth();\n\tconst days = date.getDate();\n\tconst hours = date.getHours();\n\tconst minutes = date.getMinutes();\n\tconst seconds = date.getSeconds();\n\tconst milliseconds = date.getMilliseconds();\n\tconst day = date.getDay();\n\tconst meridiem = (_options$customMeridi = options.customMeridiem) !== null && _options$customMeridi !== void 0 ? _options$customMeridi : defaultMeridiem;\n\tconst stripTimeZone = (dateString) => {\n\t\tvar _dateString$split$;\n\t\treturn (_dateString$split$ = dateString.split(\" \")[1]) !== null && _dateString$split$ !== void 0 ? _dateString$split$ : \"\";\n\t};\n\tconst matches = {\n\t\tYo: () => formatOrdinal(years),\n\t\tYY: () => String(years).slice(-2),\n\t\tYYYY: () => years,\n\t\tM: () => month + 1,\n\t\tMo: () => formatOrdinal(month + 1),\n\t\tMM: () => `${month + 1}`.padStart(2, \"0\"),\n\t\tMMM: () => date.toLocaleDateString(toValue(options.locales), { month: \"short\" }),\n\t\tMMMM: () => date.toLocaleDateString(toValue(options.locales), { month: \"long\" }),\n\t\tD: () => String(days),\n\t\tDo: () => formatOrdinal(days),\n\t\tDD: () => `${days}`.padStart(2, \"0\"),\n\t\tH: () => String(hours),\n\t\tHo: () => formatOrdinal(hours),\n\t\tHH: () => `${hours}`.padStart(2, \"0\"),\n\t\th: () => `${hours % 12 || 12}`.padStart(1, \"0\"),\n\t\tho: () => formatOrdinal(hours % 12 || 12),\n\t\thh: () => `${hours % 12 || 12}`.padStart(2, \"0\"),\n\t\tm: () => String(minutes),\n\t\tmo: () => formatOrdinal(minutes),\n\t\tmm: () => `${minutes}`.padStart(2, \"0\"),\n\t\ts: () => String(seconds),\n\t\tso: () => formatOrdinal(seconds),\n\t\tss: () => `${seconds}`.padStart(2, \"0\"),\n\t\tSSS: () => `${milliseconds}`.padStart(3, \"0\"),\n\t\td: () => day,\n\t\tdd: () => date.toLocaleDateString(toValue(options.locales), { weekday: \"narrow\" }),\n\t\tddd: () => date.toLocaleDateString(toValue(options.locales), { weekday: \"short\" }),\n\t\tdddd: () => date.toLocaleDateString(toValue(options.locales), { weekday: \"long\" }),\n\t\tA: () => meridiem(hours, minutes),\n\t\tAA: () => meridiem(hours, minutes, false, true),\n\t\ta: () => meridiem(hours, minutes, true),\n\t\taa: () => meridiem(hours, minutes, true, true),\n\t\tz: () => stripTimeZone(date.toLocaleDateString(toValue(options.locales), { timeZoneName: \"shortOffset\" })),\n\t\tzz: () => stripTimeZone(date.toLocaleDateString(toValue(options.locales), { timeZoneName: \"shortOffset\" })),\n\t\tzzz: () => stripTimeZone(date.toLocaleDateString(toValue(options.locales), { timeZoneName: \"shortOffset\" })),\n\t\tzzzz: () => stripTimeZone(date.toLocaleDateString(toValue(options.locales), { timeZoneName: \"longOffset\" }))\n\t};\n\treturn formatStr.replace(REGEX_FORMAT, (match, $1) => {\n\t\tvar _ref, _matches$match;\n\t\treturn (_ref = $1 !== null && $1 !== void 0 ? $1 : (_matches$match = matches[match]) === null || _matches$match === void 0 ? void 0 : _matches$match.call(matches)) !== null && _ref !== void 0 ? _ref : match;\n\t});\n}\nfunction normalizeDate(date) {\n\tif (date === null) return /* @__PURE__ */ new Date(NaN);\n\tif (date === void 0) return /* @__PURE__ */ new Date();\n\tif (date instanceof Date) return new Date(date);\n\tif (typeof date === \"string\" && !/Z$/i.test(date)) {\n\t\tconst d = date.match(REGEX_PARSE);\n\t\tif (d) {\n\t\t\tconst m = d[2] - 1 || 0;\n\t\t\tconst ms = (d[7] || \"0\").substring(0, 3);\n\t\t\treturn new Date(d[1], m, d[3] || 1, d[4] || 0, d[5] || 0, d[6] || 0, ms);\n\t\t}\n\t}\n\treturn new Date(date);\n}\n/**\n* Get the formatted date according to the string of tokens passed in.\n*\n* @see https://vueuse.org/useDateFormat\n* @param date - The date to format, can either be a `Date` object, a timestamp, or a string\n* @param formatStr - The combination of tokens to format the date\n* @param options - UseDateFormatOptions\n*\n* @__NO_SIDE_EFFECTS__\n*/\nfunction useDateFormat(date, formatStr = \"HH:mm:ss\", options = {}) {\n\treturn computed(() => formatDate(normalizeDate(toValue(date)), toValue(formatStr), options));\n}\n//#endregion\n//#region useIntervalFn/index.ts\n/**\n* Wrapper for `setInterval` with controls\n*\n* @see https://vueuse.org/useIntervalFn\n* @param cb\n* @param interval\n* @param options\n*/\nfunction useIntervalFn(cb, interval = 1e3, options = {}) {\n\tconst { immediate = true, immediateCallback = false } = options;\n\tlet timer = null;\n\tconst isActive = shallowRef(false);\n\tfunction clean() {\n\t\tif (timer) {\n\t\t\tclearInterval(timer);\n\t\t\ttimer = null;\n\t\t}\n\t}\n\tfunction pause() {\n\t\tisActive.value = false;\n\t\tclean();\n\t}\n\tfunction resume() {\n\t\tconst intervalValue = toValue(interval);\n\t\tif (intervalValue <= 0) return;\n\t\tisActive.value = true;\n\t\tif (immediateCallback) cb();\n\t\tclean();\n\t\tif (isActive.value) timer = setInterval(cb, intervalValue);\n\t}\n\tif (immediate && isClient) resume();\n\tif (isRef(interval) || typeof interval === \"function\") tryOnScopeDispose(watch(interval, () => {\n\t\tif (isActive.value && isClient) resume();\n\t}));\n\ttryOnScopeDispose(pause);\n\treturn {\n\t\tisActive: shallowReadonly(isActive),\n\t\tpause,\n\t\tresume\n\t};\n}\n//#endregion\n//#region useInterval/index.ts\nfunction useInterval(interval = 1e3, options = {}) {\n\tconst { controls: exposeControls = false, immediate = true, callback } = options;\n\tconst counter = shallowRef(0);\n\tconst update = () => counter.value += 1;\n\tconst reset = () => {\n\t\tcounter.value = 0;\n\t};\n\tconst controls = useIntervalFn(callback ? () => {\n\t\tupdate();\n\t\tcallback(counter.value);\n\t} : update, interval, { immediate });\n\tif (exposeControls) return {\n\t\tcounter: shallowReadonly(counter),\n\t\treset,\n\t\t...controls\n\t};\n\telse return shallowReadonly(counter);\n}\n//#endregion\n//#region useLastChanged/index.ts\nfunction useLastChanged(source, options = {}) {\n\tvar _options$initialValue;\n\tconst ms = shallowRef((_options$initialValue = options.initialValue) !== null && _options$initialValue !== void 0 ? _options$initialValue : null);\n\twatch(source, () => ms.value = timestamp(), options);\n\treturn shallowReadonly(ms);\n}\n//#endregion\n//#region useTimeoutFn/index.ts\n/**\n* Wrapper for `setTimeout` with controls.\n*\n* @param cb\n* @param interval\n* @param options\n*/\nfunction useTimeoutFn(cb, interval, options = {}) {\n\tconst { immediate = true, immediateCallback = false } = options;\n\tconst isPending = shallowRef(false);\n\tlet timer;\n\tfunction clear() {\n\t\tif (timer) {\n\t\t\tclearTimeout(timer);\n\t\t\ttimer = void 0;\n\t\t}\n\t}\n\tfunction stop() {\n\t\tisPending.value = false;\n\t\tclear();\n\t}\n\tfunction start(...args) {\n\t\tif (immediateCallback) cb();\n\t\tclear();\n\t\tisPending.value = true;\n\t\ttimer = setTimeout(() => {\n\t\t\tisPending.value = false;\n\t\t\ttimer = void 0;\n\t\t\tcb(...args);\n\t\t}, toValue(interval));\n\t}\n\tif (immediate) {\n\t\tisPending.value = true;\n\t\tif (isClient) start();\n\t}\n\ttryOnScopeDispose(stop);\n\treturn {\n\t\tisPending: shallowReadonly(isPending),\n\t\tstart,\n\t\tstop\n\t};\n}\n//#endregion\n//#region useTimeout/index.ts\nfunction useTimeout(interval = 1e3, options = {}) {\n\tconst { controls: exposeControls = false, callback } = options;\n\tconst controls = useTimeoutFn(callback !== null && callback !== void 0 ? callback : noop, interval, options);\n\tconst ready = computed(() => !controls.isPending.value);\n\tif (exposeControls) return {\n\t\tready,\n\t\t...controls\n\t};\n\telse return ready;\n}\n//#endregion\n//#region useToNumber/index.ts\n/**\n* Reactively convert a string ref to number.\n*\n* @__NO_SIDE_EFFECTS__\n*/\nfunction useToNumber(value, options = {}) {\n\tconst { method = \"parseFloat\", radix, nanToZero } = options;\n\treturn computed(() => {\n\t\tlet resolved = toValue(value);\n\t\tif (typeof method === \"function\") resolved = method(resolved);\n\t\telse if (typeof resolved === \"string\") resolved = Number[method](resolved, radix);\n\t\tif (nanToZero && Number.isNaN(resolved)) resolved = 0;\n\t\treturn resolved;\n\t});\n}\n//#endregion\n//#region useToString/index.ts\n/**\n* Reactively convert a ref to string.\n*\n* @see https://vueuse.org/useToString\n*\n* @__NO_SIDE_EFFECTS__\n*/\nfunction useToString(value) {\n\treturn computed(() => `${toValue(value)}`);\n}\n//#endregion\n//#region useToggle/index.ts\n/**\n* A boolean ref with a toggler\n*\n* @see https://vueuse.org/useToggle\n* @param [initialValue]\n* @param options\n*\n* @__NO_SIDE_EFFECTS__\n*/\nfunction useToggle(initialValue = false, options = {}) {\n\tconst { truthyValue = true, falsyValue = false } = options;\n\tconst valueIsRef = isRef(initialValue);\n\tconst _value = shallowRef(initialValue);\n\tfunction toggle(value) {\n\t\tif (arguments.length) {\n\t\t\t_value.value = value;\n\t\t\treturn _value.value;\n\t\t} else {\n\t\t\tconst truthy = toValue(truthyValue);\n\t\t\t_value.value = _value.value === truthy ? toValue(falsyValue) : truthy;\n\t\t\treturn _value.value;\n\t\t}\n\t}\n\tif (valueIsRef) return toggle;\n\telse return [_value, toggle];\n}\n//#endregion\n//#region watchArray/index.ts\n/**\n* Watch for an array with additions and removals.\n*\n* @see https://vueuse.org/watchArray\n*/\nfunction watchArray(source, cb, options) {\n\tlet oldList = (options === null || options === void 0 ? void 0 : options.immediate) ? [] : [...typeof source === \"function\" ? source() : Array.isArray(source) ? source : toValue(source)];\n\treturn watch(source, (newList, _, onCleanup) => {\n\t\tconst oldListRemains = Array.from({ length: oldList.length });\n\t\tconst added = [];\n\t\tfor (const obj of newList) {\n\t\t\tlet found = false;\n\t\t\tfor (let i = 0; i < oldList.length; i++) if (!oldListRemains[i] && obj === oldList[i]) {\n\t\t\t\toldListRemains[i] = true;\n\t\t\t\tfound = true;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tif (!found) added.push(obj);\n\t\t}\n\t\tconst removed = oldList.filter((_, i) => !oldListRemains[i]);\n\t\tcb(newList, oldList, added, removed, onCleanup);\n\t\toldList = [...newList];\n\t}, options);\n}\n//#endregion\n//#region watchAtMost/index.ts\nfunction watchAtMost(source, cb, options) {\n\tconst { count, ...watchOptions } = options;\n\tconst current = shallowRef(0);\n\tconst { stop, resume, pause } = watchWithFilter(source, (...args) => {\n\t\tcurrent.value += 1;\n\t\tif (current.value >= toValue(count)) nextTick(() => stop());\n\t\tcb(...args);\n\t}, watchOptions);\n\treturn {\n\t\tcount: current,\n\t\tstop,\n\t\tresume,\n\t\tpause\n\t};\n}\n//#endregion\n//#region watchDebounced/index.ts\nfunction watchDebounced(source, cb, options = {}) {\n\tconst { debounce = 0, maxWait = void 0, ...watchOptions } = options;\n\treturn watchWithFilter(source, cb, {\n\t\t...watchOptions,\n\t\teventFilter: debounceFilter(debounce, { maxWait })\n\t});\n}\n/** @deprecated use `watchDebounced` instead */\nconst debouncedWatch = watchDebounced;\n//#endregion\n//#region watchDeep/index.ts\n/**\n* Shorthand for watching value with {deep: true}\n*\n* @see https://vueuse.org/watchDeep\n*/\nfunction watchDeep(source, cb, options) {\n\treturn watch(source, cb, {\n\t\t...options,\n\t\tdeep: true\n\t});\n}\n//#endregion\n//#region watchIgnorable/index.ts\nfunction watchIgnorable(source, cb, options = {}) {\n\tconst { eventFilter = bypassFilter, ...watchOptions } = options;\n\tconst filteredCb = createFilterWrapper(eventFilter, cb);\n\tlet ignoreUpdates;\n\tlet ignorePrevAsyncUpdates;\n\tlet stop;\n\tif (watchOptions.flush === \"sync\") {\n\t\tlet ignore = false;\n\t\tignorePrevAsyncUpdates = () => {};\n\t\tignoreUpdates = (updater) => {\n\t\t\tignore = true;\n\t\t\tupdater();\n\t\t\tignore = false;\n\t\t};\n\t\tstop = watch(source, (...args) => {\n\t\t\tif (!ignore) filteredCb(...args);\n\t\t}, watchOptions);\n\t} else {\n\t\tconst disposables = [];\n\t\tlet ignoreCounter = 0;\n\t\tlet syncCounter = 0;\n\t\tignorePrevAsyncUpdates = () => {\n\t\t\tignoreCounter = syncCounter;\n\t\t};\n\t\tdisposables.push(watch(source, () => {\n\t\t\tsyncCounter++;\n\t\t}, {\n\t\t\t...watchOptions,\n\t\t\tflush: \"sync\"\n\t\t}));\n\t\tignoreUpdates = (updater) => {\n\t\t\tconst syncCounterPrev = syncCounter;\n\t\t\tupdater();\n\t\t\tignoreCounter += syncCounter - syncCounterPrev;\n\t\t};\n\t\tdisposables.push(watch(source, (...args) => {\n\t\t\tconst ignore = ignoreCounter > 0 && ignoreCounter === syncCounter;\n\t\t\tignoreCounter = 0;\n\t\t\tsyncCounter = 0;\n\t\t\tif (ignore) return;\n\t\t\tfilteredCb(...args);\n\t\t}, watchOptions));\n\t\tstop = () => {\n\t\t\tdisposables.forEach((fn) => fn());\n\t\t};\n\t}\n\treturn {\n\t\tstop,\n\t\tignoreUpdates,\n\t\tignorePrevAsyncUpdates\n\t};\n}\n/** @deprecated use `watchIgnorable` instead */\nconst ignorableWatch = watchIgnorable;\n//#endregion\n//#region watchImmediate/index.ts\n/**\n* Shorthand for watching value with {immediate: true}\n*\n* @see https://vueuse.org/watchImmediate\n*/\nfunction watchImmediate(source, cb, options) {\n\treturn watch(source, cb, {\n\t\t...options,\n\t\timmediate: true\n\t});\n}\n//#endregion\n//#region watchOnce/index.ts\n/**\n* Shorthand for watching value with { once: true }\n*\n* @see https://vueuse.org/watchOnce\n*/\nfunction watchOnce(source, cb, options) {\n\treturn watch(source, cb, {\n\t\t...options,\n\t\tonce: true\n\t});\n}\n//#endregion\n//#region watchThrottled/index.ts\nfunction watchThrottled(source, cb, options = {}) {\n\tconst { throttle = 0, trailing = true, leading = true, ...watchOptions } = options;\n\treturn watchWithFilter(source, cb, {\n\t\t...watchOptions,\n\t\teventFilter: throttleFilter(throttle, trailing, leading)\n\t});\n}\n/** @deprecated use `watchThrottled` instead */\nconst throttledWatch = watchThrottled;\n//#endregion\n//#region watchTriggerable/index.ts\nfunction watchTriggerable(source, cb, options = {}) {\n\tlet cleanupFn;\n\tfunction onEffect() {\n\t\tif (!cleanupFn) return;\n\t\tconst fn = cleanupFn;\n\t\tcleanupFn = void 0;\n\t\tfn();\n\t}\n\t/** Register the function `cleanupFn` */\n\tfunction onCleanup(callback) {\n\t\tcleanupFn = callback;\n\t}\n\tconst _cb = (value, oldValue) => {\n\t\tonEffect();\n\t\treturn cb(value, oldValue, onCleanup);\n\t};\n\tconst res = watchIgnorable(source, _cb, options);\n\tconst { ignoreUpdates } = res;\n\tconst trigger = () => {\n\t\tlet res;\n\t\tignoreUpdates(() => {\n\t\t\tres = _cb(getWatchSources(source), getOldValue(source));\n\t\t});\n\t\treturn res;\n\t};\n\treturn {\n\t\t...res,\n\t\ttrigger\n\t};\n}\nfunction getWatchSources(sources) {\n\tif (isReactive(sources)) return sources;\n\tif (Array.isArray(sources)) return sources.map((item) => toValue(item));\n\treturn toValue(sources);\n}\nfunction getOldValue(source) {\n\treturn Array.isArray(source) ? source.map(() => void 0) : void 0;\n}\n//#endregion\n//#region whenever/index.ts\nfunction whenever(source, cb, options) {\n\tconst stop = watch(source, (v, ov, onInvalidate) => {\n\t\tif (v) {\n\t\t\tif (options === null || options === void 0 ? void 0 : options.once) nextTick(() => stop());\n\t\t\tcb(v, ov, onInvalidate);\n\t\t}\n\t}, {\n\t\t...options,\n\t\tonce: false\n\t});\n\treturn stop;\n}\n//#endregion\nexport { assert, autoResetRef, bypassFilter, camelize, clamp, computedEager, computedWithControl, containsProp, controlledComputed, controlledRef, createDisposableDirective, createEventHook, createFilterWrapper, createGlobalState, createInjectionState, createReactiveFn, createRef, createSharedComposable, createSingletonPromise, debounceFilter, debouncedRef, debouncedWatch, eagerComputed, extendRef, formatDate, get, getLifeCycleTarget, hasOwn, hyphenate, identity, ignorableWatch, increaseWithUnit, injectLocal, invoke, isClient, isDef, isDefined, isIOS, isObject, isWorker, makeDestructurable, noop, normalizeDate, notNullish, now, objectEntries, objectOmit, objectPick, pausableFilter, pausableWatch, promiseTimeout, provideLocal, pxValue, rand, reactify, reactifyObject, reactiveComputed, reactiveOmit, reactivePick, refAutoReset, refDebounced, refDefault, refManualReset, refThrottled, refWithControl, set, syncRef, syncRefs, throttleFilter, throttledRef, throttledWatch, timestamp, toArray, toReactive, toRef, toRefs, tryOnBeforeMount, tryOnBeforeUnmount, tryOnMounted, tryOnScopeDispose, tryOnUnmounted, until, useArrayDifference, useArrayEvery, useArrayFilter, useArrayFind, useArrayFindIndex, useArrayFindLast, useArrayIncludes, useArrayJoin, useArrayMap, useArrayReduce, useArraySome, useArrayUnique, useCounter, useDateFormat, useDebounce, useDebounceFn, useInterval, useIntervalFn, useLastChanged, useThrottle, useThrottleFn, useTimeout, useTimeoutFn, useToNumber, useToString, useToggle, watchArray, watchAtMost, watchDebounced, watchDeep, watchIgnorable, watchImmediate, watchOnce, watchPausable, watchThrottled, watchTriggerable, watchWithFilter, whenever };\n","import { bypassFilter, camelize, clamp, computedWithControl, containsProp, createEventHook, createFilterWrapper, createRef, createSingletonPromise, debounceFilter, hasOwn, identity, increaseWithUnit, injectLocal, isClient, isDef, isIOS, isObject, isWorker, makeDestructurable, noop, notNullish, objectEntries, objectOmit, objectPick, pausableFilter, promiseTimeout, provideLocal, pxValue, syncRef, throttleFilter, timestamp, toArray, toRef, toRefs, tryOnMounted, tryOnScopeDispose, tryOnUnmounted, until, useDebounceFn, useIntervalFn, useThrottleFn, useTimeoutFn, watchIgnorable, watchImmediate, watchOnce, watchPausable, watchWithFilter, whenever } from \"@vueuse/shared\";\nimport { Fragment, TransitionGroup, computed, customRef, defineComponent, getCurrentInstance, getCurrentScope, h, hasInjectionContext, inject, isReadonly, isRef, markRaw, nextTick, onBeforeUpdate, onMounted, onUpdated, reactive, readonly, ref, shallowReactive, shallowReadonly, shallowRef, toRaw, toValue, unref, watch, watchEffect } from \"vue\";\nexport * from \"@vueuse/shared\";\n//#region computedAsync/index.ts\nfunction computedAsync(evaluationCallback, initialState, optionsOrRef) {\n\tvar _globalThis$reportErr;\n\tlet options;\n\tif (isRef(optionsOrRef)) options = { evaluating: optionsOrRef };\n\telse options = optionsOrRef || {};\n\tconst { lazy = false, flush = \"sync\", evaluating = void 0, shallow = true, onError = (_globalThis$reportErr = globalThis.reportError) !== null && _globalThis$reportErr !== void 0 ? _globalThis$reportErr : noop } = options;\n\tconst started = shallowRef(!lazy);\n\tconst current = shallow ? shallowRef(initialState) : ref(initialState);\n\tlet counter = 0;\n\twatchEffect(async (onInvalidate) => {\n\t\tif (!started.value) return;\n\t\tcounter++;\n\t\tconst counterAtBeginning = counter;\n\t\tlet hasFinished = false;\n\t\tif (evaluating) Promise.resolve().then(() => {\n\t\t\tevaluating.value = true;\n\t\t});\n\t\ttry {\n\t\t\tconst result = await evaluationCallback((cancelCallback) => {\n\t\t\t\tonInvalidate(() => {\n\t\t\t\t\tif (evaluating) evaluating.value = false;\n\t\t\t\t\tif (!hasFinished) cancelCallback();\n\t\t\t\t});\n\t\t\t});\n\t\t\tif (counterAtBeginning === counter) current.value = result;\n\t\t} catch (e) {\n\t\t\tonError(e);\n\t\t} finally {\n\t\t\tif (evaluating && counterAtBeginning === counter) evaluating.value = false;\n\t\t\thasFinished = true;\n\t\t}\n\t}, { flush });\n\tif (lazy) return computed(() => {\n\t\tstarted.value = true;\n\t\treturn current.value;\n\t});\n\telse return current;\n}\n/** @deprecated use `computedAsync` instead */\nconst asyncComputed = computedAsync;\n//#endregion\n//#region computedInject/index.ts\nfunction computedInject(key, options, defaultSource, treatDefaultAsFactory) {\n\tlet source = inject(key);\n\tif (defaultSource) source = inject(key, defaultSource);\n\tif (treatDefaultAsFactory) source = inject(key, defaultSource, treatDefaultAsFactory);\n\tif (typeof options === \"function\") return computed((oldValue) => options(source, oldValue));\n\telse return computed({\n\t\tget: (oldValue) => options.get(source, oldValue),\n\t\tset: options.set\n\t});\n}\n//#endregion\n//#region createReusableTemplate/index.ts\n/**\n* This function creates `define` and `reuse` components in pair,\n* It also allow to pass a generic to bind with type.\n*\n* @see https://vueuse.org/createReusableTemplate\n*\n* @__NO_SIDE_EFFECTS__\n*/\nfunction createReusableTemplate(options = {}) {\n\tconst { inheritAttrs = true, name = \"ReusableTemplate\" } = options;\n\tconst render = shallowRef();\n\tconst define = defineComponent({\n\t\tname: `${name}.define`,\n\t\tsetup(_, { slots }) {\n\t\t\treturn () => {\n\t\t\t\trender.value = slots.default;\n\t\t\t};\n\t\t}\n\t});\n\tconst reuse = defineComponent({\n\t\tinheritAttrs,\n\t\tname: `${name}.reuse`,\n\t\tprops: options.props,\n\t\tsetup(props, { attrs, slots }) {\n\t\t\treturn () => {\n\t\t\t\tvar _render$value;\n\t\t\t\tif (!render.value && true) throw new Error(\"[VueUse] Failed to find the definition of reusable template\");\n\t\t\t\tconst vnode = (_render$value = render.value) === null || _render$value === void 0 ? void 0 : _render$value.call(render, {\n\t\t\t\t\t...options.props == null ? keysToCamelKebabCase(attrs) : props,\n\t\t\t\t\t$slots: slots\n\t\t\t\t});\n\t\t\t\treturn inheritAttrs && (vnode === null || vnode === void 0 ? void 0 : vnode.length) === 1 ? vnode[0] : vnode;\n\t\t\t};\n\t\t}\n\t});\n\treturn makeDestructurable({\n\t\tdefine,\n\t\treuse\n\t}, [define, reuse]);\n}\nfunction keysToCamelKebabCase(obj) {\n\tconst newObj = {};\n\tfor (const key in obj) newObj[camelize(key)] = obj[key];\n\treturn newObj;\n}\n//#endregion\n//#region createTemplatePromise/index.ts\n/**\n* Creates a template promise component.\n*\n* @see https://vueuse.org/createTemplatePromise\n*\n* @__NO_SIDE_EFFECTS__\n*/\nfunction createTemplatePromise(options = {}) {\n\tlet index = 0;\n\tconst instances = ref([]);\n\tfunction create(...args) {\n\t\tconst props = shallowReactive({\n\t\t\tkey: index++,\n\t\t\targs,\n\t\t\tpromise: void 0,\n\t\t\tresolve: () => {},\n\t\t\treject: () => {},\n\t\t\tisResolving: false,\n\t\t\toptions\n\t\t});\n\t\tinstances.value.push(props);\n\t\tprops.promise = new Promise((_resolve, _reject) => {\n\t\t\tprops.resolve = (v) => {\n\t\t\t\tprops.isResolving = true;\n\t\t\t\treturn _resolve(v);\n\t\t\t};\n\t\t\tprops.reject = _reject;\n\t\t}).finally(() => {\n\t\t\tprops.promise = void 0;\n\t\t\tconst index = instances.value.indexOf(props);\n\t\t\tif (index !== -1) instances.value.splice(index, 1);\n\t\t});\n\t\treturn props.promise;\n\t}\n\tfunction start(...args) {\n\t\tif (options.singleton && instances.value.length > 0) return instances.value[0].promise;\n\t\treturn create(...args);\n\t}\n\tconst component = defineComponent((_, { slots }) => {\n\t\tconst renderList = () => instances.value.map((props) => {\n\t\t\tvar _slots$default;\n\t\t\treturn h(Fragment, { key: props.key }, (_slots$default = slots.default) === null || _slots$default === void 0 ? void 0 : _slots$default.call(slots, props));\n\t\t});\n\t\tif (options.transition) return () => h(TransitionGroup, options.transition, renderList);\n\t\treturn renderList;\n\t});\n\tcomponent.start = start;\n\treturn component;\n}\n//#endregion\n//#region createUnrefFn/index.ts\n/**\n* Make a plain function accepting ref and raw values as arguments.\n* Returns the same value the unconverted function returns, with proper typing.\n*\n* @__NO_SIDE_EFFECTS__\n*/\nfunction createUnrefFn(fn) {\n\treturn function(...args) {\n\t\treturn fn.apply(this, args.map((i) => toValue(i)));\n\t};\n}\n//#endregion\n//#region _configurable.ts\nconst defaultWindow = isClient ? window : void 0;\nconst defaultDocument = isClient ? window.document : void 0;\nconst defaultNavigator = isClient ? window.navigator : void 0;\nconst defaultLocation = isClient ? window.location : void 0;\n//#endregion\n//#region unrefElement/index.ts\n/**\n* Get the dom element of a ref of element or Vue component instance\n*\n* @param elRef\n*/\nfunction unrefElement(elRef) {\n\tvar _$el;\n\tconst plain = toValue(elRef);\n\treturn (_$el = plain === null || plain === void 0 ? void 0 : plain.$el) !== null && _$el !== void 0 ? _$el : plain;\n}\n//#endregion\n//#region useEventListener/index.ts\nfunction useEventListener(...args) {\n\tconst register = (el, event, listener, options) => {\n\t\tel.addEventListener(event, listener, options);\n\t\treturn () => el.removeEventListener(event, listener, options);\n\t};\n\tconst firstParamTargets = computed(() => {\n\t\tconst test = toArray(toValue(args[0])).filter((e) => e != null);\n\t\treturn test.every((e) => typeof e !== \"string\") ? test : void 0;\n\t});\n\treturn watchImmediate(() => {\n\t\tvar _firstParamTargets$va, _firstParamTargets$va2;\n\t\treturn [\n\t\t\t(_firstParamTargets$va = (_firstParamTargets$va2 = firstParamTargets.value) === null || _firstParamTargets$va2 === void 0 ? void 0 : _firstParamTargets$va2.map((e) => unrefElement(e))) !== null && _firstParamTargets$va !== void 0 ? _firstParamTargets$va : [defaultWindow].filter((e) => e != null),\n\t\t\ttoArray(toValue(firstParamTargets.value ? args[1] : args[0])),\n\t\t\ttoArray(unref(firstParamTargets.value ? args[2] : args[1])),\n\t\t\ttoValue(firstParamTargets.value ? args[3] : args[2])\n\t\t];\n\t}, ([raw_targets, raw_events, raw_listeners, raw_options], _, onCleanup) => {\n\t\tif (!(raw_targets === null || raw_targets === void 0 ? void 0 : raw_targets.length) || !(raw_events === null || raw_events === void 0 ? void 0 : raw_events.length) || !(raw_listeners === null || raw_listeners === void 0 ? void 0 : raw_listeners.length)) return;\n\t\tconst optionsClone = isObject(raw_options) ? { ...raw_options } : raw_options;\n\t\tconst cleanups = raw_targets.flatMap((el) => raw_events.flatMap((event) => raw_listeners.map((listener) => register(el, event, listener, optionsClone))));\n\t\tonCleanup(() => {\n\t\t\tcleanups.forEach((fn) => fn());\n\t\t});\n\t}, { flush: \"post\" });\n}\n//#endregion\n//#region onClickOutside/index.ts\nlet _iOSWorkaround = false;\nfunction onClickOutside(target, handler, options = {}) {\n\tconst { window = defaultWindow, ignore = [], capture = true, detectIframe = false, controls = false } = options;\n\tif (!window) return controls ? {\n\t\tstop: noop,\n\t\tcancel: noop,\n\t\ttrigger: noop\n\t} : noop;\n\tif (isIOS && !_iOSWorkaround) {\n\t\t_iOSWorkaround = true;\n\t\tconst listenerOptions = { passive: true };\n\t\tArray.from(window.document.body.children).forEach((el) => el.addEventListener(\"click\", noop, listenerOptions));\n\t\twindow.document.documentElement.addEventListener(\"click\", noop, listenerOptions);\n\t}\n\tlet shouldListen = true;\n\tconst shouldIgnore = (event) => {\n\t\treturn toValue(ignore).some((target) => {\n\t\t\tif (typeof target === \"string\") return Array.from(window.document.querySelectorAll(target)).some((el) => el === event.target || event.composedPath().includes(el));\n\t\t\telse {\n\t\t\t\tconst el = unrefElement(target);\n\t\t\t\treturn el && (event.target === el || event.composedPath().includes(el));\n\t\t\t}\n\t\t});\n\t};\n\t/**\n\t* Determines if the given target has multiple root elements.\n\t* Referenced from: https://github.com/vuejs/test-utils/blob/ccb460be55f9f6be05ab708500a41ec8adf6f4bc/src/vue-wrapper.ts#L21\n\t*/\n\tfunction hasMultipleRoots(target) {\n\t\tconst vm = toValue(target);\n\t\treturn vm && vm.$.subTree.shapeFlag === 16;\n\t}\n\tfunction checkMultipleRoots(target, event) {\n\t\tconst vm = toValue(target);\n\t\tconst children = vm.$.subTree && vm.$.subTree.children;\n\t\tif (children == null || !Array.isArray(children)) return false;\n\t\treturn children.some((child) => child.el === event.target || event.composedPath().includes(child.el));\n\t}\n\tconst listener = (event) => {\n\t\tconst el = unrefElement(target);\n\t\tif (event.target == null) return;\n\t\tif (!(el instanceof Element) && hasMultipleRoots(target) && checkMultipleRoots(target, event)) return;\n\t\tif (!el || el === event.target || event.composedPath().includes(el)) return;\n\t\tif (\"detail\" in event && event.detail === 0) shouldListen = !shouldIgnore(event);\n\t\tif (!shouldListen) {\n\t\t\tshouldListen = true;\n\t\t\treturn;\n\t\t}\n\t\thandler(event);\n\t};\n\tlet isProcessingClick = false;\n\tconst cleanup = [\n\t\tuseEventListener(window, \"click\", (event) => {\n\t\t\tif (!isProcessingClick) {\n\t\t\t\tisProcessingClick = true;\n\t\t\t\tsetTimeout(() => {\n\t\t\t\t\tisProcessingClick = false;\n\t\t\t\t}, 0);\n\t\t\t\tlistener(event);\n\t\t\t}\n\t\t}, {\n\t\t\tpassive: true,\n\t\t\tcapture\n\t\t}),\n\t\tuseEventListener(window, \"pointerdown\", (e) => {\n\t\t\tconst el = unrefElement(target);\n\t\t\tshouldListen = !shouldIgnore(e) && !!(el && !e.composedPath().includes(el));\n\t\t}, { passive: true }),\n\t\tdetectIframe && useEventListener(window, \"blur\", (event) => {\n\t\t\tsetTimeout(() => {\n\t\t\t\tconst el = unrefElement(target);\n\t\t\t\tlet activeEl = window.document.activeElement;\n\t\t\t\twhile (activeEl === null || activeEl === void 0 ? void 0 : activeEl.shadowRoot) activeEl = activeEl.shadowRoot.activeElement;\n\t\t\t\tif ((activeEl === null || activeEl === void 0 ? void 0 : activeEl.tagName) === \"IFRAME\" && !(el === null || el === void 0 ? void 0 : el.contains(window.document.activeElement))) handler(event);\n\t\t\t}, 0);\n\t\t}, { passive: true })\n\t].filter(Boolean);\n\tconst stop = () => cleanup.forEach((fn) => fn());\n\tif (controls) return {\n\t\tstop,\n\t\tcancel: () => {\n\t\t\tshouldListen = false;\n\t\t},\n\t\ttrigger: (event) => {\n\t\t\tshouldListen = true;\n\t\t\tlistener(event);\n\t\t\tshouldListen = false;\n\t\t}\n\t};\n\treturn stop;\n}\n//#endregion\n//#region useMounted/index.ts\n/**\n* Mounted state in ref.\n*\n* @see https://vueuse.org/useMounted\n*\n* @__NO_SIDE_EFFECTS__\n*/\nfunction useMounted() {\n\tconst isMounted = shallowRef(false);\n\tconst instance = getCurrentInstance();\n\tif (instance) onMounted(() => {\n\t\tisMounted.value = true;\n\t}, instance);\n\treturn isMounted;\n}\n//#endregion\n//#region useSupported/index.ts\n/* @__NO_SIDE_EFFECTS__ */\nfunction useSupported(callback) {\n\tconst isMounted = useMounted();\n\treturn computed(() => {\n\t\tisMounted.value;\n\t\treturn Boolean(callback());\n\t});\n}\n//#endregion\n//#region useMutationObserver/index.ts\n/**\n* Watch for changes being made to the DOM tree.\n*\n* @see https://vueuse.org/useMutationObserver\n* @see https://developer.mozilla.org/en-US/docs/Web/API/MutationObserver MutationObserver MDN\n* @param target\n* @param callback\n* @param options\n*/\nfunction useMutationObserver(target, callback, options = {}) {\n\tconst { window = defaultWindow, ...mutationOptions } = options;\n\tlet observer;\n\tconst isSupported = /* @__PURE__ */ useSupported(() => window && \"MutationObserver\" in window);\n\tconst cleanup = () => {\n\t\tif (observer) {\n\t\t\tobserver.disconnect();\n\t\t\tobserver = void 0;\n\t\t}\n\t};\n\tconst stopWatch = watch(computed(() => {\n\t\tconst items = toArray(toValue(target)).map(unrefElement).filter(notNullish);\n\t\treturn new Set(items);\n\t}), (newTargets) => {\n\t\tcleanup();\n\t\tif (isSupported.value && newTargets.size) {\n\t\t\tobserver = new MutationObserver(callback);\n\t\t\tnewTargets.forEach((el) => observer.observe(el, mutationOptions));\n\t\t}\n\t}, {\n\t\timmediate: true,\n\t\tflush: \"post\"\n\t});\n\tconst takeRecords = () => {\n\t\treturn observer === null || observer === void 0 ? void 0 : observer.takeRecords();\n\t};\n\tconst stop = () => {\n\t\tstopWatch();\n\t\tcleanup();\n\t};\n\ttryOnScopeDispose(stop);\n\treturn {\n\t\tisSupported,\n\t\tstop,\n\t\ttakeRecords\n\t};\n}\n//#endregion\n//#region onElementRemoval/index.ts\n/**\n* Fires when the element or any element containing it is removed.\n*\n* @param target\n* @param callback\n* @param options\n*/\nfunction onElementRemoval(target, callback, options = {}) {\n\tconst { window = defaultWindow, document = window === null || window === void 0 ? void 0 : window.document, flush = \"sync\" } = options;\n\tif (!window || !document) return noop;\n\tlet stopFn;\n\tconst cleanupAndUpdate = (fn) => {\n\t\tstopFn === null || stopFn === void 0 || stopFn();\n\t\tstopFn = fn;\n\t};\n\tconst stopWatch = watchEffect(() => {\n\t\tconst el = unrefElement(target);\n\t\tif (el) {\n\t\t\tconst { stop } = useMutationObserver(document, (mutationsList) => {\n\t\t\t\tif (mutationsList.map((mutation) => [...mutation.removedNodes]).flat().some((node) => node === el || node.contains(el))) callback(mutationsList);\n\t\t\t}, {\n\t\t\t\twindow,\n\t\t\t\tchildList: true,\n\t\t\t\tsubtree: true\n\t\t\t});\n\t\t\tcleanupAndUpdate(stop);\n\t\t}\n\t}, { flush });\n\tconst stopHandle = () => {\n\t\tstopWatch();\n\t\tcleanupAndUpdate();\n\t};\n\ttryOnScopeDispose(stopHandle);\n\treturn stopHandle;\n}\n//#endregion\n//#region onKeyStroke/index.ts\nfunction createKeyPredicate(keyFilter) {\n\tif (typeof keyFilter === \"function\") return keyFilter;\n\telse if (typeof keyFilter === \"string\") return (event) => event.key === keyFilter;\n\telse if (Array.isArray(keyFilter)) return (event) => keyFilter.includes(event.key);\n\treturn () => true;\n}\nfunction onKeyStroke(...args) {\n\tlet key;\n\tlet handler;\n\tlet options = {};\n\tif (args.length === 3) {\n\t\tkey = args[0];\n\t\thandler = args[1];\n\t\toptions = args[2];\n\t} else if (args.length === 2) if (typeof args[1] === \"object\") {\n\t\tkey = true;\n\t\thandler = args[0];\n\t\toptions = args[1];\n\t} else {\n\t\tkey = args[0];\n\t\thandler = args[1];\n\t}\n\telse {\n\t\tkey = true;\n\t\thandler = args[0];\n\t}\n\tconst { target = defaultWindow, eventName = \"keydown\", passive = false, dedupe = false } = options;\n\tconst predicate = createKeyPredicate(key);\n\tconst listener = (e) => {\n\t\tif (e.repeat && toValue(dedupe)) return;\n\t\tif (predicate(e)) handler(e);\n\t};\n\treturn useEventListener(target, eventName, listener, passive);\n}\n/**\n* Listen to the keydown event of the given key.\n*\n* @see https://vueuse.org/onKeyStroke\n* @param key\n* @param handler\n* @param options\n*/\nfunction onKeyDown(key, handler, options = {}) {\n\treturn onKeyStroke(key, handler, {\n\t\t...options,\n\t\teventName: \"keydown\"\n\t});\n}\n/**\n* Listen to the keypress event of the given key.\n*\n* @see https://vueuse.org/onKeyStroke\n* @param key\n* @param handler\n* @param options\n*/\nfunction onKeyPressed(key, handler, options = {}) {\n\treturn onKeyStroke(key, handler, {\n\t\t...options,\n\t\teventName: \"keypress\"\n\t});\n}\n/**\n* Listen to the keyup event of the given key.\n*\n* @see https://vueuse.org/onKeyStroke\n* @param key\n* @param handler\n* @param options\n*/\nfunction onKeyUp(key, handler, options = {}) {\n\treturn onKeyStroke(key, handler, {\n\t\t...options,\n\t\teventName: \"keyup\"\n\t});\n}\n//#endregion\n//#region onLongPress/index.ts\nconst DEFAULT_DELAY = 500;\nconst DEFAULT_THRESHOLD = 10;\nfunction onLongPress(target, handler, options) {\n\tvar _options$modifiers10, _options$modifiers11;\n\tconst elementRef = computed(() => unrefElement(target));\n\tlet timeout;\n\tlet posStart;\n\tlet startTimestamp;\n\tlet hasLongPressed = false;\n\tfunction clear() {\n\t\tif (timeout) {\n\t\t\tclearTimeout(timeout);\n\t\t\ttimeout = void 0;\n\t\t}\n\t\tposStart = void 0;\n\t\tstartTimestamp = void 0;\n\t\thasLongPressed = false;\n\t}\n\tfunction getDelay(ev) {\n\t\tconst delay = options === null || options === void 0 ? void 0 : options.delay;\n\t\tif (typeof delay === \"function\") return delay(ev);\n\t\treturn delay !== null && delay !== void 0 ? delay : DEFAULT_DELAY;\n\t}\n\tfunction onRelease(ev) {\n\t\tvar _options$modifiers, _options$modifiers2, _options$modifiers3;\n\t\tconst [_startTimestamp, _posStart, _hasLongPressed] = [\n\t\t\tstartTimestamp,\n\t\t\tposStart,\n\t\t\thasLongPressed\n\t\t];\n\t\tclear();\n\t\tif (!(options === null || options === void 0 ? void 0 : options.onMouseUp) || !_posStart || !_startTimestamp) return;\n\t\tif ((options === null || options === void 0 || (_options$modifiers = options.modifiers) === null || _options$modifiers === void 0 ? void 0 : _options$modifiers.self) && ev.target !== elementRef.value) return;\n\t\tif (options === null || options === void 0 || (_options$modifiers2 = options.modifiers) === null || _options$modifiers2 === void 0 ? void 0 : _options$modifiers2.prevent) ev.preventDefault();\n\t\tif (options === null || options === void 0 || (_options$modifiers3 = options.modifiers) === null || _options$modifiers3 === void 0 ? void 0 : _options$modifiers3.stop) ev.stopPropagation();\n\t\tconst dx = ev.x - _posStart.x;\n\t\tconst dy = ev.y - _posStart.y;\n\t\tconst distance = Math.sqrt(dx * dx + dy * dy);\n\t\toptions.onMouseUp(ev.timeStamp - _startTimestamp, distance, _hasLongPressed, ev);\n\t}\n\tfunction onDown(ev) {\n\t\tvar _options$modifiers4, _options$modifiers5, _options$modifiers6;\n\t\tif ((options === null || options === void 0 || (_options$modifiers4 = options.modifiers) === null || _options$modifiers4 === void 0 ? void 0 : _options$modifiers4.self) && ev.target !== elementRef.value) return;\n\t\tclear();\n\t\tif (options === null || options === void 0 || (_options$modifiers5 = options.modifiers) === null || _options$modifiers5 === void 0 ? void 0 : _options$modifiers5.prevent) ev.preventDefault();\n\t\tif (options === null || options === void 0 || (_options$modifiers6 = options.modifiers) === null || _options$modifiers6 === void 0 ? void 0 : _options$modifiers6.stop) ev.stopPropagation();\n\t\tposStart = {\n\t\t\tx: ev.x,\n\t\t\ty: ev.y\n\t\t};\n\t\tstartTimestamp = ev.timeStamp;\n\t\ttimeout = setTimeout(() => {\n\t\t\thasLongPressed = true;\n\t\t\thandler(ev);\n\t\t}, getDelay(ev));\n\t}\n\tfunction onMove(ev) {\n\t\tvar _options$modifiers7, _options$modifiers8, _options$modifiers9, _options$distanceThre;\n\t\tif ((options === null || options === void 0 || (_options$modifiers7 = options.modifiers) === null || _options$modifiers7 === void 0 ? void 0 : _options$modifiers7.self) && ev.target !== elementRef.value) return;\n\t\tif (!posStart || (options === null || options === void 0 ? void 0 : options.distanceThreshold) === false) return;\n\t\tif (options === null || options === void 0 || (_options$modifiers8 = options.modifiers) === null || _options$modifiers8 === void 0 ? void 0 : _options$modifiers8.prevent) ev.preventDefault();\n\t\tif (options === null || options === void 0 || (_options$modifiers9 = options.modifiers) === null || _options$modifiers9 === void 0 ? void 0 : _options$modifiers9.stop) ev.stopPropagation();\n\t\tconst dx = ev.x - posStart.x;\n\t\tconst dy = ev.y - posStart.y;\n\t\tif (Math.sqrt(dx * dx + dy * dy) >= ((_options$distanceThre = options === null || options === void 0 ? void 0 : options.distanceThreshold) !== null && _options$distanceThre !== void 0 ? _options$distanceThre : DEFAULT_THRESHOLD)) clear();\n\t}\n\tconst listenerOptions = {\n\t\tcapture: options === null || options === void 0 || (_options$modifiers10 = options.modifiers) === null || _options$modifiers10 === void 0 ? void 0 : _options$modifiers10.capture,\n\t\tonce: options === null || options === void 0 || (_options$modifiers11 = options.modifiers) === null || _options$modifiers11 === void 0 ? void 0 : _options$modifiers11.once\n\t};\n\tconst cleanup = [\n\t\tuseEventListener(elementRef, \"pointerdown\", onDown, listenerOptions),\n\t\tuseEventListener(elementRef, \"pointermove\", onMove, listenerOptions),\n\t\tuseEventListener(elementRef, [\"pointerup\", \"pointerleave\"], onRelease, listenerOptions)\n\t];\n\tconst stop = () => cleanup.forEach((fn) => fn());\n\treturn stop;\n}\n//#endregion\n//#region onStartTyping/index.ts\nfunction isFocusedElementEditable() {\n\tconst { activeElement, body } = document;\n\tif (!activeElement) return false;\n\tif (activeElement === body) return false;\n\tswitch (activeElement.tagName) {\n\t\tcase \"INPUT\":\n\t\tcase \"TEXTAREA\": return true;\n\t}\n\treturn activeElement.hasAttribute(\"contenteditable\");\n}\nfunction isTypedCharValid({ keyCode, metaKey, ctrlKey, altKey }) {\n\tif (metaKey || ctrlKey || altKey) return false;\n\tif (keyCode >= 48 && keyCode <= 57 || keyCode >= 96 && keyCode <= 105) return true;\n\tif (keyCode >= 65 && keyCode <= 90) return true;\n\treturn false;\n}\n/**\n* Fires when users start typing on non-editable elements.\n*\n* @see https://vueuse.org/onStartTyping\n* @param callback\n* @param options\n*/\nfunction onStartTyping(callback, options = {}) {\n\tconst { document = defaultDocument } = options;\n\tconst keydown = (event) => {\n\t\tif (!isFocusedElementEditable() && isTypedCharValid(event)) callback(event);\n\t};\n\tif (document) useEventListener(document, \"keydown\", keydown, { passive: true });\n}\n//#endregion\n//#region templateRef/index.ts\n/**\n* @deprecated Use Vue's built-in `useTemplateRef` instead.\n*\n* Shorthand for binding ref to template element.\n*\n* @see https://vueuse.org/templateRef\n* @param key\n* @param initialValue\n*\n* @__NO_SIDE_EFFECTS__\n*/\nfunction templateRef(key, initialValue = null) {\n\tconst instance = getCurrentInstance();\n\tlet _trigger = () => {};\n\tconst element = customRef((track, trigger) => {\n\t\t_trigger = trigger;\n\t\treturn {\n\t\t\tget() {\n\t\t\t\tvar _instance$proxy$$refs, _instance$proxy;\n\t\t\t\ttrack();\n\t\t\t\treturn (_instance$proxy$$refs = instance === null || instance === void 0 || (_instance$proxy = instance.proxy) === null || _instance$proxy === void 0 ? void 0 : _instance$proxy.$refs[key]) !== null && _instance$proxy$$refs !== void 0 ? _instance$proxy$$refs : initialValue;\n\t\t\t},\n\t\t\tset() {}\n\t\t};\n\t});\n\ttryOnMounted(_trigger);\n\tonUpdated(_trigger);\n\treturn element;\n}\n//#endregion\n//#region useActiveElement/index.ts\n/**\n* Reactive `document.activeElement`\n*\n* @see https://vueuse.org/useActiveElement\n* @param options\n*\n* @__NO_SIDE_EFFECTS__\n*/\nfunction useActiveElement(options = {}) {\n\tvar _options$document;\n\tconst { window = defaultWindow, deep = true, triggerOnRemoval = false } = options;\n\tconst document = (_options$document = options.document) !== null && _options$document !== void 0 ? _options$document : window === null || window === void 0 ? void 0 : window.document;\n\tconst getDeepActiveElement = () => {\n\t\tlet element = document === null || document === void 0 ? void 0 : document.activeElement;\n\t\tif (deep) {\n\t\t\tvar _element$shadowRoot;\n\t\t\twhile (element === null || element === void 0 ? void 0 : element.shadowRoot) element = element === null || element === void 0 || (_element$shadowRoot = element.shadowRoot) === null || _element$shadowRoot === void 0 ? void 0 : _element$shadowRoot.activeElement;\n\t\t}\n\t\treturn element;\n\t};\n\tconst activeElement = shallowRef();\n\tconst trigger = () => {\n\t\tactiveElement.value = getDeepActiveElement();\n\t};\n\tif (window) {\n\t\tconst listenerOptions = {\n\t\t\tcapture: true,\n\t\t\tpassive: true\n\t\t};\n\t\tuseEventListener(window, \"blur\", (event) => {\n\t\t\tif (event.relatedTarget !== null) return;\n\t\t\ttrigger();\n\t\t}, listenerOptions);\n\t\tuseEventListener(window, \"focus\", trigger, listenerOptions);\n\t}\n\tif (triggerOnRemoval) onElementRemoval(activeElement, trigger, { document });\n\ttrigger();\n\treturn activeElement;\n}\n//#endregion\n//#region useRafFn/index.ts\n/**\n* Call function on every `requestAnimationFrame`. With controls of pausing and resuming.\n*\n* @see https://vueuse.org/useRafFn\n* @param fn\n* @param options\n*/\nfunction useRafFn(fn, options = {}) {\n\tconst { immediate = true, fpsLimit = null, window = defaultWindow, once = false } = options;\n\tconst isActive = shallowRef(false);\n\tconst intervalLimit = computed(() => {\n\t\tconst limit = toValue(fpsLimit);\n\t\treturn limit ? 1e3 / limit : null;\n\t});\n\tlet previousFrameTimestamp = 0;\n\tlet rafId = null;\n\tfunction loop(timestamp) {\n\t\tif (!isActive.value || !window) return;\n\t\tif (!previousFrameTimestamp) previousFrameTimestamp = timestamp;\n\t\tconst delta = timestamp - previousFrameTimestamp;\n\t\tif (intervalLimit.value && delta < intervalLimit.value) {\n\t\t\trafId = window.requestAnimationFrame(loop);\n\t\t\treturn;\n\t\t}\n\t\tpreviousFrameTimestamp = timestamp;\n\t\tfn({\n\t\t\tdelta,\n\t\t\ttimestamp\n\t\t});\n\t\tif (once) {\n\t\t\tisActive.value = false;\n\t\t\trafId = null;\n\t\t\treturn;\n\t\t}\n\t\trafId = window.requestAnimationFrame(loop);\n\t}\n\tfunction resume() {\n\t\tif (!isActive.value && window) {\n\t\t\tisActive.value = true;\n\t\t\tpreviousFrameTimestamp = 0;\n\t\t\trafId = window.requestAnimationFrame(loop);\n\t\t}\n\t}\n\tfunction pause() {\n\t\tisActive.value = false;\n\t\tif (rafId != null && window) {\n\t\t\twindow.cancelAnimationFrame(rafId);\n\t\t\trafId = null;\n\t\t}\n\t}\n\tif (immediate) resume();\n\ttryOnScopeDispose(pause);\n\treturn {\n\t\tisActive: shallowReadonly(isActive),\n\t\tpause,\n\t\tresume\n\t};\n}\n//#endregion\n//#region useAnimate/index.ts\n/**\n* Reactive Web Animations API\n*\n* @see https://vueuse.org/useAnimate\n* @param target\n* @param keyframes\n* @param options\n*/\nfunction useAnimate(target, keyframes, options) {\n\tlet config;\n\tlet animateOptions;\n\tif (isObject(options)) {\n\t\tconfig = options;\n\t\tanimateOptions = objectOmit(options, [\n\t\t\t\"window\",\n\t\t\t\"immediate\",\n\t\t\t\"commitStyles\",\n\t\t\t\"persist\",\n\t\t\t\"onReady\",\n\t\t\t\"onError\"\n\t\t]);\n\t} else {\n\t\tconfig = { duration: options };\n\t\tanimateOptions = options;\n\t}\n\tconst { window = defaultWindow, immediate = true, commitStyles, persist, playbackRate: _playbackRate = 1, onReady, onError = (e) => {\n\t\tconsole.error(e);\n\t} } = config;\n\tconst isSupported = /* @__PURE__ */ useSupported(() => window && HTMLElement && \"animate\" in HTMLElement.prototype);\n\tconst animate = shallowRef(void 0);\n\tconst store = shallowReactive({\n\t\tstartTime: null,\n\t\tcurrentTime: null,\n\t\ttimeline: null,\n\t\tplaybackRate: _playbackRate,\n\t\tpending: false,\n\t\tplayState: immediate ? \"idle\" : \"paused\",\n\t\treplaceState: \"active\"\n\t});\n\tconst pending = computed(() => store.pending);\n\tconst playState = computed(() => store.playState);\n\tconst replaceState = computed(() => store.replaceState);\n\tconst startTime = computed({\n\t\tget() {\n\t\t\treturn store.startTime;\n\t\t},\n\t\tset(value) {\n\t\t\tstore.startTime = value;\n\t\t\tif (animate.value) animate.value.startTime = value;\n\t\t}\n\t});\n\tconst currentTime = computed({\n\t\tget() {\n\t\t\treturn store.currentTime;\n\t\t},\n\t\tset(value) {\n\t\t\tstore.currentTime = value;\n\t\t\tif (animate.value) {\n\t\t\t\tanimate.value.currentTime = value;\n\t\t\t\tsyncResume();\n\t\t\t}\n\t\t}\n\t});\n\tconst timeline = computed({\n\t\tget() {\n\t\t\treturn store.timeline;\n\t\t},\n\t\tset(value) {\n\t\t\tstore.timeline = value;\n\t\t\tif (animate.value) animate.value.timeline = value;\n\t\t}\n\t});\n\tconst playbackRate = computed({\n\t\tget() {\n\t\t\treturn store.playbackRate;\n\t\t},\n\t\tset(value) {\n\t\t\tstore.playbackRate = value;\n\t\t\tif (animate.value) animate.value.playbackRate = value;\n\t\t}\n\t});\n\tconst play = () => {\n\t\tif (animate.value) try {\n\t\t\tanimate.value.play();\n\t\t\tsyncResume();\n\t\t} catch (e) {\n\t\t\tsyncPause();\n\t\t\tonError(e);\n\t\t}\n\t\telse update();\n\t};\n\tconst pause = () => {\n\t\ttry {\n\t\t\tvar _animate$value;\n\t\t\t(_animate$value = animate.value) === null || _animate$value === void 0 || _animate$value.pause();\n\t\t\tsyncPause();\n\t\t} catch (e) {\n\t\t\tonError(e);\n\t\t}\n\t};\n\tconst reverse = () => {\n\t\tif (!animate.value) update();\n\t\ttry {\n\t\t\tvar _animate$value2;\n\t\t\t(_animate$value2 = animate.value) === null || _animate$value2 === void 0 || _animate$value2.reverse();\n\t\t\tsyncResume();\n\t\t} catch (e) {\n\t\t\tsyncPause();\n\t\t\tonError(e);\n\t\t}\n\t};\n\tconst finish = () => {\n\t\ttry {\n\t\t\tvar _animate$value3;\n\t\t\t(_animate$value3 = animate.value) === null || _animate$value3 === void 0 || _animate$value3.finish();\n\t\t\tsyncPause();\n\t\t} catch (e) {\n\t\t\tonError(e);\n\t\t}\n\t};\n\tconst cancel = () => {\n\t\ttry {\n\t\t\tvar _animate$value4;\n\t\t\t(_animate$value4 = animate.value) === null || _animate$value4 === void 0 || _animate$value4.cancel();\n\t\t\tsyncPause();\n\t\t} catch (e) {\n\t\t\tonError(e);\n\t\t}\n\t};\n\twatch(() => unrefElement(target), (el) => {\n\t\tif (el) update(true);\n\t\telse animate.value = void 0;\n\t});\n\twatch(() => keyframes, (value) => {\n\t\tif (animate.value) {\n\t\t\tupdate();\n\t\t\tconst targetEl = unrefElement(target);\n\t\t\tif (targetEl) animate.value.effect = new KeyframeEffect(targetEl, toValue(value), animateOptions);\n\t\t}\n\t}, { deep: true });\n\ttryOnMounted(() => update(true), false);\n\ttryOnScopeDispose(cancel);\n\tfunction update(init) {\n\t\tconst el = unrefElement(target);\n\t\tif (!isSupported.value || !el) return;\n\t\tif (!animate.value) animate.value = el.animate(toValue(keyframes), animateOptions);\n\t\tif (persist) animate.value.persist();\n\t\tif (_playbackRate !== 1) animate.value.playbackRate = _playbackRate;\n\t\tif (init && !immediate) animate.value.pause();\n\t\telse syncResume();\n\t\tonReady === null || onReady === void 0 || onReady(animate.value);\n\t}\n\tconst listenerOptions = { passive: true };\n\tuseEventListener(animate, [\n\t\t\"cancel\",\n\t\t\"finish\",\n\t\t\"remove\"\n\t], syncPause, listenerOptions);\n\tuseEventListener(animate, \"finish\", () => {\n\t\tvar _animate$value5;\n\t\tif (commitStyles) (_animate$value5 = animate.value) === null || _animate$value5 === void 0 || _animate$value5.commitStyles();\n\t}, listenerOptions);\n\tconst { resume: resumeRef, pause: pauseRef } = useRafFn(() => {\n\t\tif (!animate.value) return;\n\t\tstore.pending = animate.value.pending;\n\t\tstore.playState = animate.value.playState;\n\t\tstore.replaceState = animate.value.replaceState;\n\t\tstore.startTime = animate.value.startTime;\n\t\tstore.currentTime = animate.value.currentTime;\n\t\tstore.timeline = animate.value.timeline;\n\t\tstore.playbackRate = animate.value.playbackRate;\n\t}, { immediate: false });\n\tfunction syncResume() {\n\t\tif (isSupported.value) resumeRef();\n\t}\n\tfunction syncPause() {\n\t\tif (isSupported.value && window) window.requestAnimationFrame(pauseRef);\n\t}\n\treturn {\n\t\tisSupported,\n\t\tanimate,\n\t\tplay,\n\t\tpause,\n\t\treverse,\n\t\tfinish,\n\t\tcancel,\n\t\tpending,\n\t\tplayState,\n\t\treplaceState,\n\t\tstartTime,\n\t\tcurrentTime,\n\t\ttimeline,\n\t\tplaybackRate\n\t};\n}\n//#endregion\n//#region useAsyncQueue/index.ts\n/**\n* Asynchronous queue task controller.\n*\n* @see https://vueuse.org/useAsyncQueue\n* @param tasks\n* @param options\n*/\nfunction useAsyncQueue(tasks, options) {\n\tconst { interrupt = true, onError = noop, onFinished = noop, signal } = options || {};\n\tconst promiseState = {\n\t\taborted: \"aborted\",\n\t\tfulfilled: \"fulfilled\",\n\t\tpending: \"pending\",\n\t\trejected: \"rejected\"\n\t};\n\tconst result = reactive(Array.from(Array.from({ length: tasks.length }), () => ({\n\t\tstate: promiseState.pending,\n\t\tdata: null\n\t})));\n\tconst activeIndex = shallowRef(-1);\n\tif (!tasks || tasks.length === 0) {\n\t\tonFinished();\n\t\treturn {\n\t\t\tactiveIndex,\n\t\t\tresult\n\t\t};\n\t}\n\tfunction updateResult(state, res) {\n\t\tactiveIndex.value++;\n\t\tresult[activeIndex.value].data = res;\n\t\tresult[activeIndex.value].state = state;\n\t}\n\ttasks.reduce((prev, curr) => {\n\t\treturn prev.then((prevRes) => {\n\t\t\tvar _result$activeIndex$v;\n\t\t\tif (signal === null || signal === void 0 ? void 0 : signal.aborted) {\n\t\t\t\tupdateResult(promiseState.aborted, /* @__PURE__ */ new Error(\"aborted\"));\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tif (((_result$activeIndex$v = result[activeIndex.value]) === null || _result$activeIndex$v === void 0 ? void 0 : _result$activeIndex$v.state) === promiseState.rejected && interrupt) {\n\t\t\t\tonFinished();\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tconst done = curr(prevRes).then((currentRes) => {\n\t\t\t\tupdateResult(promiseState.fulfilled, currentRes);\n\t\t\t\tif (activeIndex.value === tasks.length - 1) onFinished();\n\t\t\t\treturn currentRes;\n\t\t\t});\n\t\t\tif (!signal) return done;\n\t\t\treturn Promise.race([done, whenAborted(signal)]);\n\t\t}).catch((e) => {\n\t\t\tif (signal === null || signal === void 0 ? void 0 : signal.aborted) {\n\t\t\t\tupdateResult(promiseState.aborted, e);\n\t\t\t\treturn e;\n\t\t\t}\n\t\t\tupdateResult(promiseState.rejected, e);\n\t\t\tonError();\n\t\t\tif (activeIndex.value === tasks.length - 1) onFinished();\n\t\t\treturn e;\n\t\t});\n\t}, Promise.resolve());\n\treturn {\n\t\tactiveIndex,\n\t\tresult\n\t};\n}\nfunction whenAborted(signal) {\n\treturn new Promise((resolve, reject) => {\n\t\tconst error = /* @__PURE__ */ new Error(\"aborted\");\n\t\tif (signal.aborted) reject(error);\n\t\telse signal.addEventListener(\"abort\", () => reject(error), { once: true });\n\t});\n}\n//#endregion\n//#region useAsyncState/index.ts\n/**\n* Reactive async state. Will not block your setup function and will trigger changes once\n* the promise is ready.\n*\n* @see https://vueuse.org/useAsyncState\n* @param promise The promise / async function to be resolved\n* @param initialState The initial state, used until the first evaluation finishes\n* @param options\n*/\nfunction useAsyncState(promise, initialState, options) {\n\tvar _globalThis$reportErr;\n\tconst { immediate = true, delay = 0, onError = (_globalThis$reportErr = globalThis.reportError) !== null && _globalThis$reportErr !== void 0 ? _globalThis$reportErr : noop, onSuccess = noop, resetOnExecute = true, shallow = true, throwError } = options !== null && options !== void 0 ? options : {};\n\tconst state = shallow ? shallowRef(initialState) : ref(initialState);\n\tconst isReady = shallowRef(false);\n\tconst isLoading = shallowRef(false);\n\tconst error = shallowRef(void 0);\n\tlet executionsCount = 0;\n\tasync function execute(delay = 0, ...args) {\n\t\tconst executionId = executionsCount += 1;\n\t\tif (resetOnExecute) state.value = toValue(initialState);\n\t\terror.value = void 0;\n\t\tisReady.value = false;\n\t\tisLoading.value = true;\n\t\tif (delay > 0) await promiseTimeout(delay);\n\t\tconst _promise = typeof promise === \"function\" ? promise(...args) : promise;\n\t\ttry {\n\t\t\tconst data = await _promise;\n\t\t\tif (executionId === executionsCount) {\n\t\t\t\tstate.value = data;\n\t\t\t\tisReady.value = true;\n\t\t\t}\n\t\t\tonSuccess(data);\n\t\t\treturn data;\n\t\t} catch (e) {\n\t\t\tif (executionId === executionsCount) error.value = e;\n\t\t\tonError(e);\n\t\t\tif (throwError) throw e;\n\t\t} finally {\n\t\t\tif (executionId === executionsCount) isLoading.value = false;\n\t\t}\n\t}\n\tif (immediate) execute(delay);\n\tconst shell = {\n\t\tstate,\n\t\tisReady,\n\t\tisLoading,\n\t\terror,\n\t\texecute,\n\t\texecuteImmediate: (...args) => execute(0, ...args)\n\t};\n\tfunction waitUntilIsLoaded() {\n\t\treturn new Promise((resolve, reject) => {\n\t\t\tuntil(isLoading).toBe(false).then(() => resolve(shell)).catch(reject);\n\t\t});\n\t}\n\treturn {\n\t\t...shell,\n\t\tthen(onFulfilled, onRejected) {\n\t\t\treturn waitUntilIsLoaded().then(onFulfilled, onRejected);\n\t\t}\n\t};\n}\n//#endregion\n//#region useBase64/serialization.ts\nconst defaults = {\n\tarray: (v) => JSON.stringify(v),\n\tobject: (v) => JSON.stringify(v),\n\tset: (v) => JSON.stringify(Array.from(v)),\n\tmap: (v) => JSON.stringify(Object.fromEntries(v)),\n\tnull: () => \"\"\n};\nfunction getDefaultSerialization(target) {\n\tif (!target) return defaults.null;\n\tif (target instanceof Map) return defaults.map;\n\telse if (target instanceof Set) return defaults.set;\n\telse if (Array.isArray(target)) return defaults.array;\n\telse return defaults.object;\n}\n//#endregion\n//#region useBase64/index.ts\nfunction useBase64(target, options) {\n\tconst base64 = shallowRef(\"\");\n\tconst promise = shallowRef();\n\tfunction execute() {\n\t\tif (!isClient) return;\n\t\tpromise.value = new Promise((resolve, reject) => {\n\t\t\ttry {\n\t\t\t\tconst _target = toValue(target);\n\t\t\t\tif (_target == null) resolve(\"\");\n\t\t\t\telse if (typeof _target === \"string\") resolve(blobToBase64(new Blob([_target], { type: \"text/plain\" })));\n\t\t\t\telse if (_target instanceof Blob) resolve(blobToBase64(_target));\n\t\t\t\telse if (_target instanceof ArrayBuffer) resolve(window.btoa(String.fromCharCode(...new Uint8Array(_target))));\n\t\t\t\telse if (_target instanceof HTMLCanvasElement) resolve(_target.toDataURL(options === null || options === void 0 ? void 0 : options.type, options === null || options === void 0 ? void 0 : options.quality));\n\t\t\t\telse if (_target instanceof HTMLImageElement) {\n\t\t\t\t\tconst img = _target.cloneNode(false);\n\t\t\t\t\timg.crossOrigin = \"Anonymous\";\n\t\t\t\t\timgLoaded(img).then(() => {\n\t\t\t\t\t\tconst canvas = document.createElement(\"canvas\");\n\t\t\t\t\t\tconst ctx = canvas.getContext(\"2d\");\n\t\t\t\t\t\tcanvas.width = img.width;\n\t\t\t\t\t\tcanvas.height = img.height;\n\t\t\t\t\t\tctx.drawImage(img, 0, 0, canvas.width, canvas.height);\n\t\t\t\t\t\tresolve(canvas.toDataURL(options === null || options === void 0 ? void 0 : options.type, options === null || options === void 0 ? void 0 : options.quality));\n\t\t\t\t\t}).catch(reject);\n\t\t\t\t} else if (typeof _target === \"object\") {\n\t\t\t\t\tconst serialized = ((options === null || options === void 0 ? void 0 : options.serializer) || getDefaultSerialization(_target))(_target);\n\t\t\t\t\treturn resolve(blobToBase64(new Blob([serialized], { type: \"application/json\" })));\n\t\t\t\t} else reject(/* @__PURE__ */ new Error(\"target is unsupported types\"));\n\t\t\t} catch (error) {\n\t\t\t\treject(error);\n\t\t\t}\n\t\t});\n\t\tpromise.value.then((res) => {\n\t\t\tbase64.value = (options === null || options === void 0 ? void 0 : options.dataUrl) === false ? res.replace(/^data:.*?;base64,/, \"\") : res;\n\t\t});\n\t\treturn promise.value;\n\t}\n\tif (isRef(target) || typeof target === \"function\") watch(target, execute, { immediate: true });\n\telse execute();\n\treturn {\n\t\tbase64,\n\t\tpromise,\n\t\texecute\n\t};\n}\nfunction imgLoaded(img) {\n\treturn new Promise((resolve, reject) => {\n\t\tif (!img.complete) {\n\t\t\timg.onload = () => {\n\t\t\t\tresolve();\n\t\t\t};\n\t\t\timg.onerror = reject;\n\t\t} else resolve();\n\t});\n}\nfunction blobToBase64(blob) {\n\treturn new Promise((resolve, reject) => {\n\t\tconst fr = new FileReader();\n\t\tfr.onload = (e) => {\n\t\t\tresolve(e.target.result);\n\t\t};\n\t\tfr.onerror = reject;\n\t\tfr.readAsDataURL(blob);\n\t});\n}\n//#endregion\n//#region useBattery/index.ts\n/**\n* Reactive Battery Status API.\n*\n* @see https://vueuse.org/useBattery\n*\n* @__NO_SIDE_EFFECTS__\n*/\nfunction useBattery(options = {}) {\n\tconst { navigator = defaultNavigator } = options;\n\tconst events = [\n\t\t\"chargingchange\",\n\t\t\"chargingtimechange\",\n\t\t\"dischargingtimechange\",\n\t\t\"levelchange\"\n\t];\n\tconst isSupported = /* @__PURE__ */ useSupported(() => navigator && \"getBattery\" in navigator && typeof navigator.getBattery === \"function\");\n\tconst charging = shallowRef(false);\n\tconst chargingTime = shallowRef(0);\n\tconst dischargingTime = shallowRef(0);\n\tconst level = shallowRef(1);\n\tlet battery;\n\tfunction updateBatteryInfo() {\n\t\tcharging.value = this.charging;\n\t\tchargingTime.value = this.chargingTime || 0;\n\t\tdischargingTime.value = this.dischargingTime || 0;\n\t\tlevel.value = this.level;\n\t}\n\tif (isSupported.value) navigator.getBattery().then((_battery) => {\n\t\tbattery = _battery;\n\t\tupdateBatteryInfo.call(battery);\n\t\tuseEventListener(battery, events, updateBatteryInfo, { passive: true });\n\t});\n\treturn {\n\t\tisSupported,\n\t\tcharging,\n\t\tchargingTime,\n\t\tdischargingTime,\n\t\tlevel\n\t};\n}\n//#endregion\n//#region useBluetooth/index.ts\n/* @__NO_SIDE_EFFECTS__ */\nfunction useBluetooth(options) {\n\tlet { acceptAllDevices = false } = options || {};\n\tconst { filters = void 0, optionalServices = void 0, navigator = defaultNavigator } = options || {};\n\tconst isSupported = /* @__PURE__ */ useSupported(() => navigator && \"bluetooth\" in navigator);\n\tconst device = shallowRef();\n\tconst error = shallowRef(null);\n\twatch(device, () => {\n\t\tconnectToBluetoothGATTServer();\n\t});\n\tasync function requestDevice() {\n\t\tif (!isSupported.value) return;\n\t\terror.value = null;\n\t\tif (filters && filters.length > 0) acceptAllDevices = false;\n\t\ttry {\n\t\t\tdevice.value = await (navigator === null || navigator === void 0 ? void 0 : navigator.bluetooth.requestDevice({\n\t\t\t\tacceptAllDevices,\n\t\t\t\tfilters,\n\t\t\t\toptionalServices\n\t\t\t}));\n\t\t} catch (err) {\n\t\t\terror.value = err;\n\t\t}\n\t}\n\tconst server = shallowRef();\n\tconst isConnected = shallowRef(false);\n\tfunction reset() {\n\t\tisConnected.value = false;\n\t\tdevice.value = void 0;\n\t\tserver.value = void 0;\n\t}\n\tasync function connectToBluetoothGATTServer() {\n\t\terror.value = null;\n\t\tif (device.value && device.value.gatt) {\n\t\t\tuseEventListener(device, \"gattserverdisconnected\", reset, { passive: true });\n\t\t\ttry {\n\t\t\t\tserver.value = await device.value.gatt.connect();\n\t\t\t\tisConnected.value = server.value.connected;\n\t\t\t} catch (err) {\n\t\t\t\terror.value = err;\n\t\t\t}\n\t\t}\n\t}\n\ttryOnMounted(() => {\n\t\tvar _device$value$gatt;\n\t\tif (device.value) (_device$value$gatt = device.value.gatt) === null || _device$value$gatt === void 0 || _device$value$gatt.connect();\n\t});\n\ttryOnScopeDispose(() => {\n\t\tvar _device$value$gatt2;\n\t\tif (device.value) (_device$value$gatt2 = device.value.gatt) === null || _device$value$gatt2 === void 0 || _device$value$gatt2.disconnect();\n\t});\n\treturn {\n\t\tisSupported,\n\t\tisConnected: shallowReadonly(isConnected),\n\t\tdevice,\n\t\trequestDevice,\n\t\tserver,\n\t\terror\n\t};\n}\n//#endregion\n//#region useSSRWidth/index.ts\nconst ssrWidthSymbol = Symbol(\"vueuse-ssr-width\");\n/* @__NO_SIDE_EFFECTS__ */\nfunction useSSRWidth() {\n\tconst ssrWidth = hasInjectionContext() ? injectLocal(ssrWidthSymbol, null) : null;\n\treturn typeof ssrWidth === \"number\" ? ssrWidth : void 0;\n}\nfunction provideSSRWidth(width, app) {\n\tif (app !== void 0) app.provide(ssrWidthSymbol, width);\n\telse provideLocal(ssrWidthSymbol, width);\n}\n//#endregion\n//#region useMediaQuery/index.ts\n/**\n* Reactive Media Query.\n*\n* @see https://vueuse.org/useMediaQuery\n* @param query\n* @param options\n*/\nfunction useMediaQuery(query, options = {}) {\n\tconst { window = defaultWindow, ssrWidth = /* @__PURE__ */ useSSRWidth() } = options;\n\tconst isSupported = /* @__PURE__ */ useSupported(() => window && \"matchMedia\" in window && typeof window.matchMedia === \"function\");\n\tconst ssrSupport = shallowRef(typeof ssrWidth === \"number\");\n\tconst mediaQuery = shallowRef();\n\tconst matches = shallowRef(false);\n\tconst handler = (event) => {\n\t\tmatches.value = event.matches;\n\t};\n\twatchEffect(() => {\n\t\tif (ssrSupport.value) {\n\t\t\tssrSupport.value = !isSupported.value;\n\t\t\tmatches.value = toValue(query).split(\",\").some((queryString) => {\n\t\t\t\tconst not = queryString.includes(\"not all\");\n\t\t\t\tconst minWidth = queryString.match(/\\(\\s*min-width:\\s*(-?\\d+(?:\\.\\d*)?[a-z]+\\s*)\\)/);\n\t\t\t\tconst maxWidth = queryString.match(/\\(\\s*max-width:\\s*(-?\\d+(?:\\.\\d*)?[a-z]+\\s*)\\)/);\n\t\t\t\tlet res = Boolean(minWidth || maxWidth);\n\t\t\t\tif (minWidth && res) res = ssrWidth >= pxValue(minWidth[1]);\n\t\t\t\tif (maxWidth && res) res = ssrWidth <= pxValue(maxWidth[1]);\n\t\t\t\treturn not ? !res : res;\n\t\t\t});\n\t\t\treturn;\n\t\t}\n\t\tif (!isSupported.value) return;\n\t\tmediaQuery.value = window.matchMedia(toValue(query));\n\t\tmatches.value = mediaQuery.value.matches;\n\t});\n\tuseEventListener(mediaQuery, \"change\", handler, { passive: true });\n\treturn computed(() => matches.value);\n}\n//#endregion\n//#region useBreakpoints/breakpoints.ts\n/**\n* Breakpoints from Tailwind V2\n*\n* @see https://tailwindcss.com/docs/breakpoints\n*/\nconst breakpointsTailwind = {\n\t\"sm\": 640,\n\t\"md\": 768,\n\t\"lg\": 1024,\n\t\"xl\": 1280,\n\t\"2xl\": 1536\n};\n/**\n* Breakpoints from Bootstrap V5\n*\n* @see https://getbootstrap.com/docs/5.0/layout/breakpoints\n*/\nconst breakpointsBootstrapV5 = {\n\txs: 0,\n\tsm: 576,\n\tmd: 768,\n\tlg: 992,\n\txl: 1200,\n\txxl: 1400\n};\n/**\n* Breakpoints from Vuetify V2\n*\n* @see https://v2.vuetifyjs.com/en/features/breakpoints/\n*/\nconst breakpointsVuetifyV2 = {\n\txs: 0,\n\tsm: 600,\n\tmd: 960,\n\tlg: 1264,\n\txl: 1904\n};\n/**\n* Breakpoints from Vuetify V3\n*\n* @see https://vuetifyjs.com/en/styles/float/#overview\n*/\nconst breakpointsVuetifyV3 = {\n\txs: 0,\n\tsm: 600,\n\tmd: 960,\n\tlg: 1280,\n\txl: 1920,\n\txxl: 2560\n};\n/**\n* Alias to `breakpointsVuetifyV2`\n*\n* @deprecated explictly use `breakpointsVuetifyV2` or `breakpointsVuetifyV3` instead\n*/\nconst breakpointsVuetify = breakpointsVuetifyV2;\n/**\n* Breakpoints from Ant Design\n*\n* @see https://ant.design/components/layout/#breakpoint-width\n*/\nconst breakpointsAntDesign = {\n\txs: 480,\n\tsm: 576,\n\tmd: 768,\n\tlg: 992,\n\txl: 1200,\n\txxl: 1600\n};\n/**\n* Breakpoints from Quasar V2\n*\n* @see https://quasar.dev/style/breakpoints\n*/\nconst breakpointsQuasar = {\n\txs: 0,\n\tsm: 600,\n\tmd: 1024,\n\tlg: 1440,\n\txl: 1920\n};\n/**\n* Sematic Breakpoints\n*/\nconst breakpointsSematic = {\n\tmobileS: 320,\n\tmobileM: 375,\n\tmobileL: 425,\n\ttablet: 768,\n\tlaptop: 1024,\n\tlaptopL: 1440,\n\tdesktop4K: 2560\n};\n/**\n* Breakpoints from Master CSS\n*\n* @see https://docs.master.co/css/breakpoints\n*/\nconst breakpointsMasterCss = {\n\t\"3xs\": 360,\n\t\"2xs\": 480,\n\t\"xs\": 600,\n\t\"sm\": 768,\n\t\"md\": 1024,\n\t\"lg\": 1280,\n\t\"xl\": 1440,\n\t\"2xl\": 1600,\n\t\"3xl\": 1920,\n\t\"4xl\": 2560\n};\n/**\n* Breakpoints from PrimeFlex\n*\n* @see https://primeflex.org/installation\n*/\nconst breakpointsPrimeFlex = {\n\tsm: 576,\n\tmd: 768,\n\tlg: 992,\n\txl: 1200\n};\n/**\n* Breakpoints from ElementUI/ElementPlus\n*\n* @see https://element.eleme.io/#/en-US/component/layout\n* @see https://element-plus.org/en-US/component/layout.html\n*/\nconst breakpointsElement = {\n\txs: 0,\n\tsm: 768,\n\tmd: 992,\n\tlg: 1200,\n\txl: 1920\n};\n//#endregion\n//#region useBreakpoints/index.ts\n/**\n* Reactively viewport breakpoints\n*\n* @see https://vueuse.org/useBreakpoints\n*\n* @__NO_SIDE_EFFECTS__\n*/\nfunction useBreakpoints(breakpoints, options = {}) {\n\tfunction getValue(k, delta) {\n\t\tlet v = toValue(breakpoints[toValue(k)]);\n\t\tif (delta != null) v = increaseWithUnit(v, delta);\n\t\tif (typeof v === \"number\") v = `${v}px`;\n\t\treturn v;\n\t}\n\tconst { window = defaultWindow, strategy = \"min-width\", ssrWidth = /* @__PURE__ */ useSSRWidth() } = options;\n\tconst ssrSupport = typeof ssrWidth === \"number\";\n\tconst mounted = ssrSupport ? shallowRef(false) : { value: true };\n\tif (ssrSupport) tryOnMounted(() => mounted.value = !!window);\n\tfunction match(query, size) {\n\t\tif (!mounted.value && ssrSupport) return query === \"min\" ? ssrWidth >= pxValue(size) : ssrWidth <= pxValue(size);\n\t\tif (!window) return false;\n\t\treturn window.matchMedia(`(${query}-width: ${size})`).matches;\n\t}\n\tconst greaterOrEqual = (k) => {\n\t\treturn useMediaQuery(() => `(min-width: ${getValue(k)})`, options);\n\t};\n\tconst smallerOrEqual = (k) => {\n\t\treturn useMediaQuery(() => `(max-width: ${getValue(k)})`, options);\n\t};\n\tconst shortcutMethods = Object.keys(breakpoints).reduce((shortcuts, k) => {\n\t\tObject.defineProperty(shortcuts, k, {\n\t\t\tget: () => strategy === \"min-width\" ? greaterOrEqual(k) : smallerOrEqual(k),\n\t\t\tenumerable: true,\n\t\t\tconfigurable: true\n\t\t});\n\t\treturn shortcuts;\n\t}, {});\n\tfunction current() {\n\t\tconst points = Object.keys(breakpoints).map((k) => [\n\t\t\tk,\n\t\t\tshortcutMethods[k],\n\t\t\tpxValue(getValue(k))\n\t\t]).sort((a, b) => a[2] - b[2]);\n\t\treturn computed(() => points.filter(([, v]) => v.value).map(([k]) => k));\n\t}\n\treturn Object.assign(shortcutMethods, {\n\t\tgreaterOrEqual,\n\t\tsmallerOrEqual,\n\t\tgreater(k) {\n\t\t\treturn useMediaQuery(() => `(min-width: ${getValue(k, .1)})`, options);\n\t\t},\n\t\tsmaller(k) {\n\t\t\treturn useMediaQuery(() => `(max-width: ${getValue(k, -.1)})`, options);\n\t\t},\n\t\tbetween(a, b) {\n\t\t\treturn useMediaQuery(() => `(min-width: ${getValue(a)}) and (max-width: ${getValue(b, -.1)})`, options);\n\t\t},\n\t\tisGreater(k) {\n\t\t\treturn match(\"min\", getValue(k, .1));\n\t\t},\n\t\tisGreaterOrEqual(k) {\n\t\t\treturn match(\"min\", getValue(k));\n\t\t},\n\t\tisSmaller(k) {\n\t\t\treturn match(\"max\", getValue(k, -.1));\n\t\t},\n\t\tisSmallerOrEqual(k) {\n\t\t\treturn match(\"max\", getValue(k));\n\t\t},\n\t\tisInBetween(a, b) {\n\t\t\treturn match(\"min\", getValue(a)) && match(\"max\", getValue(b, -.1));\n\t\t},\n\t\tcurrent,\n\t\tactive() {\n\t\t\tconst bps = current();\n\t\t\treturn computed(() => bps.value.length === 0 ? \"\" : bps.value.at(strategy === \"min-width\" ? -1 : 0));\n\t\t}\n\t});\n}\n//#endregion\n//#region useBroadcastChannel/index.ts\n/**\n* Reactive BroadcastChannel\n*\n* @see https://vueuse.org/useBroadcastChannel\n* @see https://developer.mozilla.org/en-US/docs/Web/API/BroadcastChannel\n* @param options\n*\n*/\nfunction useBroadcastChannel(options) {\n\tconst { name, window = defaultWindow } = options;\n\tconst isSupported = /* @__PURE__ */ useSupported(() => window && \"BroadcastChannel\" in window);\n\tconst isClosed = shallowRef(false);\n\tconst channel = shallowRef();\n\tconst data = shallowRef();\n\tconst error = shallowRef(null);\n\tconst post = (data) => {\n\t\tif (channel.value) channel.value.postMessage(data);\n\t};\n\tconst close = () => {\n\t\tif (channel.value) channel.value.close();\n\t\tisClosed.value = true;\n\t};\n\tif (isSupported.value) tryOnMounted(() => {\n\t\terror.value = null;\n\t\tchannel.value = new BroadcastChannel(name);\n\t\tconst listenerOptions = { passive: true };\n\t\tuseEventListener(channel, \"message\", (e) => {\n\t\t\tdata.value = e.data;\n\t\t}, listenerOptions);\n\t\tuseEventListener(channel, \"messageerror\", (e) => {\n\t\t\terror.value = e;\n\t\t}, listenerOptions);\n\t\tuseEventListener(channel, \"close\", () => {\n\t\t\tisClosed.value = true;\n\t\t}, listenerOptions);\n\t});\n\ttryOnScopeDispose(() => {\n\t\tclose();\n\t});\n\treturn {\n\t\tisSupported,\n\t\tchannel,\n\t\tdata,\n\t\tpost,\n\t\tclose,\n\t\terror,\n\t\tisClosed\n\t};\n}\n//#endregion\n//#region useBrowserLocation/index.ts\nconst WRITABLE_PROPERTIES = [\n\t\"hash\",\n\t\"host\",\n\t\"hostname\",\n\t\"href\",\n\t\"pathname\",\n\t\"port\",\n\t\"protocol\",\n\t\"search\"\n];\n/**\n* Reactive browser location.\n*\n* @see https://vueuse.org/useBrowserLocation\n*\n* @__NO_SIDE_EFFECTS__\n*/\nfunction useBrowserLocation(options = {}) {\n\tconst { window = defaultWindow } = options;\n\tconst refs = Object.fromEntries(WRITABLE_PROPERTIES.map((key) => [key, ref()]));\n\tfor (const [key, ref] of objectEntries(refs)) watch(ref, (value) => {\n\t\tif (!(window === null || window === void 0 ? void 0 : window.location) || window.location[key] === value) return;\n\t\twindow.location[key] = value;\n\t});\n\tconst buildState = (trigger) => {\n\t\tvar _window$location;\n\t\tconst { state, length } = (window === null || window === void 0 ? void 0 : window.history) || {};\n\t\tconst { origin } = (window === null || window === void 0 ? void 0 : window.location) || {};\n\t\tfor (const key of WRITABLE_PROPERTIES) refs[key].value = window === null || window === void 0 || (_window$location = window.location) === null || _window$location === void 0 ? void 0 : _window$location[key];\n\t\treturn reactive({\n\t\t\ttrigger,\n\t\t\tstate,\n\t\t\tlength,\n\t\t\torigin,\n\t\t\t...refs\n\t\t});\n\t};\n\tconst state = ref(buildState(\"load\"));\n\tif (window) {\n\t\tconst listenerOptions = { passive: true };\n\t\tuseEventListener(window, \"popstate\", () => state.value = buildState(\"popstate\"), listenerOptions);\n\t\tuseEventListener(window, \"hashchange\", () => state.value = buildState(\"hashchange\"), listenerOptions);\n\t}\n\treturn state;\n}\n//#endregion\n//#region useCached/index.ts\nfunction useCached(refValue, comparator = (newSourceValue, cachedValue) => newSourceValue === cachedValue, options) {\n\tconst { deepRefs = true, ...watchOptions } = options || {};\n\tconst cachedValue = createRef(refValue.value, deepRefs);\n\twatch(() => refValue.value, (value) => {\n\t\tif (!comparator(value, cachedValue.value)) cachedValue.value = value;\n\t}, watchOptions);\n\treturn cachedValue;\n}\n//#endregion\n//#region usePermission/index.ts\n/**\n* Reactive Permissions API.\n*\n* @see https://vueuse.org/usePermission\n*\n* @__NO_SIDE_EFFECTS__\n*/\nfunction usePermission(permissionDesc, options = {}) {\n\tconst { controls = false, navigator = defaultNavigator } = options;\n\tconst isSupported = /* @__PURE__ */ useSupported(() => navigator && \"permissions\" in navigator);\n\tconst permissionStatus = shallowRef();\n\tconst desc = typeof permissionDesc === \"string\" ? { name: permissionDesc } : permissionDesc;\n\tconst state = shallowRef();\n\tconst update = () => {\n\t\tvar _permissionStatus$val, _permissionStatus$val2;\n\t\tstate.value = (_permissionStatus$val = (_permissionStatus$val2 = permissionStatus.value) === null || _permissionStatus$val2 === void 0 ? void 0 : _permissionStatus$val2.state) !== null && _permissionStatus$val !== void 0 ? _permissionStatus$val : \"prompt\";\n\t};\n\tuseEventListener(permissionStatus, \"change\", update, { passive: true });\n\tconst query = createSingletonPromise(async () => {\n\t\tif (!isSupported.value) return;\n\t\tif (!permissionStatus.value) try {\n\t\t\tpermissionStatus.value = await navigator.permissions.query(desc);\n\t\t} catch (_unused) {\n\t\t\tpermissionStatus.value = void 0;\n\t\t} finally {\n\t\t\tupdate();\n\t\t}\n\t\tif (controls) return toRaw(permissionStatus.value);\n\t});\n\tquery();\n\tif (controls) return {\n\t\tstate,\n\t\tisSupported,\n\t\tquery\n\t};\n\telse return state;\n}\n//#endregion\n//#region useClipboard/index.ts\nfunction useClipboard(options = {}) {\n\tconst { navigator = defaultNavigator, read = false, source, copiedDuring = 1500, legacy = false } = options;\n\tconst isClipboardApiSupported = /* @__PURE__ */ useSupported(() => navigator && \"clipboard\" in navigator);\n\tconst permissionRead = usePermission(\"clipboard-read\");\n\tconst permissionWrite = usePermission(\"clipboard-write\");\n\tconst isSupported = computed(() => isClipboardApiSupported.value || legacy);\n\tconst text = shallowRef(\"\");\n\tconst copied = shallowRef(false);\n\tconst copyPending = shallowRef(false);\n\tconst timeout = useTimeoutFn(() => copied.value = false, copiedDuring, { immediate: false });\n\tlet lastLegacyId = 0;\n\tasync function updateText() {\n\t\tlet useLegacy = !(isClipboardApiSupported.value && isAllowed(permissionRead.value));\n\t\tif (!useLegacy) try {\n\t\t\ttext.value = await navigator.clipboard.readText();\n\t\t} catch (_unused) {\n\t\t\tuseLegacy = true;\n\t\t}\n\t\tif (useLegacy) text.value = legacyRead();\n\t}\n\tif (isSupported.value && read) useEventListener([\"copy\", \"cut\"], updateText, { passive: true });\n\tasync function copy(value) {\n\t\tconst resolvedValue = value !== null && value !== void 0 ? value : toValue(source);\n\t\tif (isSupported.value && resolvedValue != null) {\n\t\t\tcopyPending.value = true;\n\t\t\tlet useLegacy = !(isClipboardApiSupported.value && isAllowed(permissionWrite.value));\n\t\t\tif (!useLegacy) try {\n\t\t\t\tconst clipboardItem = createClipboardItem(resolvedValue);\n\t\t\t\tawait navigator.clipboard.write([clipboardItem]);\n\t\t\t} catch (_unused2) {\n\t\t\t\tuseLegacy = true;\n\t\t\t}\n\t\t\tif (useLegacy) if (typeof resolvedValue === \"string\") {\n\t\t\t\ttext.value = resolvedValue;\n\t\t\t\tlegacyCopy(resolvedValue);\n\t\t\t} else {\n\t\t\t\tconst currentId = ++lastLegacyId;\n\t\t\t\tconst resolvedText = await resolvedValue();\n\t\t\t\tif (resolvedText != null && currentId === lastLegacyId) {\n\t\t\t\t\ttext.value = resolvedText;\n\t\t\t\t\tlegacyCopy(resolvedText);\n\t\t\t\t}\n\t\t\t}\n\t\t\tcopied.value = true;\n\t\t\ttimeout.start();\n\t\t\tcopyPending.value = false;\n\t\t}\n\t}\n\tfunction createClipboardItem(value) {\n\t\tif (typeof value === \"string\") {\n\t\t\ttext.value = value;\n\t\t\treturn new ClipboardItem({ \"text/plain\": value });\n\t\t} else return new ClipboardItem({ \"text/plain\": value().then((resolvedText = \"\") => {\n\t\t\ttext.value = resolvedText;\n\t\t\treturn new Blob([resolvedText], { type: \"text/plain\" });\n\t\t}) });\n\t}\n\tfunction legacyCopy(value) {\n\t\tconst ta = document.createElement(\"textarea\");\n\t\tta.value = value;\n\t\tta.style.position = \"absolute\";\n\t\tta.style.opacity = \"0\";\n\t\tta.setAttribute(\"readonly\", \"\");\n\t\tdocument.body.appendChild(ta);\n\t\tta.select();\n\t\tdocument.execCommand(\"copy\");\n\t\tta.remove();\n\t}\n\tfunction legacyRead() {\n\t\tvar _document$getSelectio, _document, _document$getSelectio2;\n\t\treturn (_document$getSelectio = (_document = document) === null || _document === void 0 || (_document$getSelectio2 = _document.getSelection) === null || _document$getSelectio2 === void 0 || (_document$getSelectio2 = _document$getSelectio2.call(_document)) === null || _document$getSelectio2 === void 0 ? void 0 : _document$getSelectio2.toString()) !== null && _document$getSelectio !== void 0 ? _document$getSelectio : \"\";\n\t}\n\tfunction isAllowed(status) {\n\t\treturn status === \"granted\" || status === \"prompt\";\n\t}\n\treturn {\n\t\tcopyPending: shallowReadonly(copyPending),\n\t\tisSupported,\n\t\ttext: shallowReadonly(text),\n\t\tcopied: shallowReadonly(copied),\n\t\tcopy\n\t};\n}\n//#endregion\n//#region useClipboardItems/index.ts\nfunction useClipboardItems(options = {}) {\n\tconst { navigator = defaultNavigator, read = false, source, copiedDuring = 1500 } = options;\n\tconst isSupported = /* @__PURE__ */ useSupported(() => navigator && \"clipboard\" in navigator);\n\tconst content = shallowRef([]);\n\tconst copied = shallowRef(false);\n\tconst timeout = useTimeoutFn(() => copied.value = false, copiedDuring, { immediate: false });\n\tfunction updateContent() {\n\t\tif (isSupported.value) navigator.clipboard.read().then((items) => {\n\t\t\tcontent.value = items;\n\t\t});\n\t}\n\tif (isSupported.value && read) useEventListener([\"copy\", \"cut\"], updateContent, { passive: true });\n\tasync function copy(value = toValue(source)) {\n\t\tif (isSupported.value && value != null) {\n\t\t\tawait navigator.clipboard.write(value);\n\t\t\tcontent.value = value;\n\t\t\tcopied.value = true;\n\t\t\ttimeout.start();\n\t\t}\n\t}\n\treturn {\n\t\tisSupported,\n\t\tcontent: shallowReadonly(content),\n\t\tcopied: shallowReadonly(copied),\n\t\tcopy,\n\t\tread: updateContent\n\t};\n}\n//#endregion\n//#region useCloned/index.ts\nfunction cloneFnJSON(source) {\n\treturn JSON.parse(JSON.stringify(source));\n}\nfunction useCloned(source, options = {}) {\n\tconst cloned = ref({});\n\tconst isModified = shallowRef(false);\n\tlet _lastSync = false;\n\tconst { manual, clone = cloneFnJSON, deep = true, immediate = true } = options;\n\twatch(cloned, () => {\n\t\tif (_lastSync) {\n\t\t\t_lastSync = false;\n\t\t\treturn;\n\t\t}\n\t\tisModified.value = true;\n\t}, {\n\t\tdeep: true,\n\t\tflush: \"sync\"\n\t});\n\tfunction sync() {\n\t\t_lastSync = true;\n\t\tisModified.value = false;\n\t\tcloned.value = clone(toValue(source));\n\t}\n\tif (!manual && (isRef(source) || typeof source === \"function\")) watch(source, sync, {\n\t\t...options,\n\t\tdeep,\n\t\timmediate\n\t});\n\telse sync();\n\treturn {\n\t\tcloned,\n\t\tisModified,\n\t\tsync\n\t};\n}\n//#endregion\n//#region ssr-handlers.ts\nconst _global = typeof globalThis !== \"undefined\" ? globalThis : typeof window !== \"undefined\" ? window : typeof global !== \"undefined\" ? global : typeof self !== \"undefined\" ? self : {};\nconst globalKey = \"__vueuse_ssr_handlers__\";\nconst handlers = /* @__PURE__ */ getHandlers();\nfunction getHandlers() {\n\tif (!(globalKey in _global)) _global[globalKey] = _global[globalKey] || {};\n\treturn _global[globalKey];\n}\nfunction getSSRHandler(key, fallback) {\n\treturn handlers[key] || fallback;\n}\nfunction setSSRHandler(key, fn) {\n\thandlers[key] = fn;\n}\n//#endregion\n//#region usePreferredDark/index.ts\n/**\n* Reactive dark theme preference.\n*\n* @see https://vueuse.org/usePreferredDark\n* @param [options]\n*\n* @__NO_SIDE_EFFECTS__\n*/\nfunction usePreferredDark(options) {\n\treturn useMediaQuery(\"(prefers-color-scheme: dark)\", options);\n}\n//#endregion\n//#region useStorage/guess.ts\nfunction guessSerializerType(rawInit) {\n\treturn rawInit == null ? \"any\" : rawInit instanceof Set ? \"set\" : rawInit instanceof Map ? \"map\" : rawInit instanceof Date ? \"date\" : typeof rawInit === \"boolean\" ? \"boolean\" : typeof rawInit === \"string\" ? \"string\" : typeof rawInit === \"object\" ? \"object\" : !Number.isNaN(rawInit) ? \"number\" : \"any\";\n}\n//#endregion\n//#region useStorage/index.ts\nconst StorageSerializers = {\n\tboolean: {\n\t\tread: (v) => v === \"true\",\n\t\twrite: (v) => String(v)\n\t},\n\tobject: {\n\t\tread: (v) => JSON.parse(v),\n\t\twrite: (v) => JSON.stringify(v)\n\t},\n\tnumber: {\n\t\tread: (v) => Number.parseFloat(v),\n\t\twrite: (v) => String(v)\n\t},\n\tany: {\n\t\tread: (v) => v,\n\t\twrite: (v) => String(v)\n\t},\n\tstring: {\n\t\tread: (v) => v,\n\t\twrite: (v) => String(v)\n\t},\n\tmap: {\n\t\tread: (v) => new Map(JSON.parse(v)),\n\t\twrite: (v) => JSON.stringify(Array.from(v.entries()))\n\t},\n\tset: {\n\t\tread: (v) => new Set(JSON.parse(v)),\n\t\twrite: (v) => JSON.stringify(Array.from(v))\n\t},\n\tdate: {\n\t\tread: (v) => new Date(v),\n\t\twrite: (v) => v.toISOString()\n\t}\n};\nconst customStorageEventName = \"vueuse-storage\";\n/**\n* Reactive LocalStorage/SessionStorage.\n*\n* @see https://vueuse.org/useStorage\n*/\nfunction useStorage(key, defaults, storage, options = {}) {\n\tvar _options$serializer;\n\tconst { flush = \"pre\", deep = true, listenToStorageChanges = true, writeDefaults = true, mergeDefaults = false, shallow, window = defaultWindow, eventFilter, onError = (e) => {\n\t\tconsole.error(e);\n\t}, initOnMounted } = options;\n\tconst data = (shallow ? shallowRef : ref)(typeof defaults === \"function\" ? defaults() : defaults);\n\tconst keyComputed = computed(() => toValue(key));\n\tif (!storage) try {\n\t\tstorage = getSSRHandler(\"getDefaultStorage\", () => defaultWindow === null || defaultWindow === void 0 ? void 0 : defaultWindow.localStorage)();\n\t} catch (e) {\n\t\tonError(e);\n\t}\n\tif (!storage) return data;\n\tconst rawInit = toValue(defaults);\n\tconst type = guessSerializerType(rawInit);\n\tconst serializer = (_options$serializer = options.serializer) !== null && _options$serializer !== void 0 ? _options$serializer : StorageSerializers[type];\n\tconst { pause: pauseWatch, resume: resumeWatch } = watchPausable(data, (newValue) => write(newValue), {\n\t\tflush,\n\t\tdeep,\n\t\teventFilter\n\t});\n\twatch(keyComputed, () => update(), { flush });\n\tlet firstMounted = false;\n\tconst onStorageEvent = (ev) => {\n\t\tif (initOnMounted && !firstMounted) return;\n\t\tupdate(ev);\n\t};\n\tconst onStorageCustomEvent = (ev) => {\n\t\tif (initOnMounted && !firstMounted) return;\n\t\tupdateFromCustomEvent(ev);\n\t};\n\t/**\n\t* The custom event is needed for same-document syncing when using custom\n\t* storage backends, but it doesn't work across different documents.\n\t*\n\t* TODO: Consider implementing a BroadcastChannel-based solution that fixes this.\n\t*/\n\tif (window && listenToStorageChanges) if (storage instanceof Storage) useEventListener(window, \"storage\", onStorageEvent, { passive: true });\n\telse useEventListener(window, customStorageEventName, onStorageCustomEvent);\n\tif (initOnMounted) tryOnMounted(() => {\n\t\tfirstMounted = true;\n\t\tupdate();\n\t});\n\telse update();\n\tfunction dispatchWriteEvent(oldValue, newValue) {\n\t\tif (window) {\n\t\t\tconst payload = {\n\t\t\t\tkey: keyComputed.value,\n\t\t\t\toldValue,\n\t\t\t\tnewValue,\n\t\t\t\tstorageArea: storage\n\t\t\t};\n\t\t\twindow.dispatchEvent(storage instanceof Storage ? new StorageEvent(\"storage\", payload) : new CustomEvent(customStorageEventName, { detail: payload }));\n\t\t}\n\t}\n\tfunction write(v) {\n\t\ttry {\n\t\t\tconst oldValue = storage.getItem(keyComputed.value);\n\t\t\tif (v == null) {\n\t\t\t\tdispatchWriteEvent(oldValue, null);\n\t\t\t\tstorage.removeItem(keyComputed.value);\n\t\t\t} else {\n\t\t\t\tconst serialized = serializer.write(v);\n\t\t\t\tif (oldValue !== serialized) {\n\t\t\t\t\tstorage.setItem(keyComputed.value, serialized);\n\t\t\t\t\tdispatchWriteEvent(oldValue, serialized);\n\t\t\t\t}\n\t\t\t}\n\t\t} catch (e) {\n\t\t\tonError(e);\n\t\t}\n\t}\n\tfunction read(event) {\n\t\tconst rawValue = event ? event.newValue : storage.getItem(keyComputed.value);\n\t\tif (rawValue == null) {\n\t\t\tif (writeDefaults && rawInit != null) storage.setItem(keyComputed.value, serializer.write(rawInit));\n\t\t\treturn rawInit;\n\t\t} else if (!event && mergeDefaults) {\n\t\t\tconst value = serializer.read(rawValue);\n\t\t\tif (typeof mergeDefaults === \"function\") return mergeDefaults(value, rawInit);\n\t\t\telse if (type === \"object\" && !Array.isArray(value)) return {\n\t\t\t\t...rawInit,\n\t\t\t\t...value\n\t\t\t};\n\t\t\treturn value;\n\t\t} else if (typeof rawValue !== \"string\") return rawValue;\n\t\telse return serializer.read(rawValue);\n\t}\n\tfunction update(event) {\n\t\tif (event && event.storageArea !== storage) return;\n\t\tif (event && event.key == null) {\n\t\t\tdata.value = rawInit;\n\t\t\treturn;\n\t\t}\n\t\tif (event && event.key !== keyComputed.value) return;\n\t\tpauseWatch();\n\t\ttry {\n\t\t\tconst serializedData = serializer.write(data.value);\n\t\t\tif (event === void 0 || (event === null || event === void 0 ? void 0 : event.newValue) !== serializedData) data.value = read(event);\n\t\t} catch (e) {\n\t\t\tonError(e);\n\t\t} finally {\n\t\t\tif (event) nextTick(resumeWatch);\n\t\t\telse resumeWatch();\n\t\t}\n\t}\n\tfunction updateFromCustomEvent(event) {\n\t\tupdate(event.detail);\n\t}\n\treturn data;\n}\n//#endregion\n//#region useColorMode/index.ts\nconst CSS_DISABLE_TRANS = \"*,*::before,*::after{-webkit-transition:none!important;-moz-transition:none!important;-o-transition:none!important;-ms-transition:none!important;transition:none!important}\";\n/**\n* Reactive color mode with auto data persistence.\n*\n* @see https://vueuse.org/useColorMode\n* @param options\n*/\nfunction useColorMode(options = {}) {\n\tconst { selector = \"html\", attribute = \"class\", initialValue = \"auto\", window = defaultWindow, storage, storageKey = \"vueuse-color-scheme\", listenToStorageChanges = true, storageRef, emitAuto, disableTransition = true } = options;\n\tconst modes = {\n\t\tauto: \"\",\n\t\tlight: \"light\",\n\t\tdark: \"dark\",\n\t\t...options.modes || {}\n\t};\n\tconst preferredDark = usePreferredDark({ window });\n\tconst system = computed(() => preferredDark.value ? \"dark\" : \"light\");\n\tconst store = storageRef || (storageKey == null ? toRef(initialValue) : useStorage(storageKey, initialValue, storage, {\n\t\twindow,\n\t\tlistenToStorageChanges\n\t}));\n\tconst state = computed(() => store.value === \"auto\" ? system.value : store.value);\n\tconst updateHTMLAttrs = getSSRHandler(\"updateHTMLAttrs\", (selector, attribute, value) => {\n\t\tconst el = typeof selector === \"string\" ? window === null || window === void 0 ? void 0 : window.document.querySelector(selector) : unrefElement(selector);\n\t\tif (!el) return;\n\t\tconst classesToAdd = /* @__PURE__ */ new Set();\n\t\tconst classesToRemove = /* @__PURE__ */ new Set();\n\t\tlet attributeToChange = null;\n\t\tif (attribute === \"class\") {\n\t\t\tconst current = value.split(/\\s/g);\n\t\t\tObject.values(modes).flatMap((i) => (i || \"\").split(/\\s/g)).filter(Boolean).forEach((v) => {\n\t\t\t\tif (current.includes(v)) classesToAdd.add(v);\n\t\t\t\telse classesToRemove.add(v);\n\t\t\t});\n\t\t} else attributeToChange = {\n\t\t\tkey: attribute,\n\t\t\tvalue\n\t\t};\n\t\tif (classesToAdd.size === 0 && classesToRemove.size === 0 && attributeToChange === null) return;\n\t\tlet style;\n\t\tif (disableTransition) {\n\t\t\tstyle = window.document.createElement(\"style\");\n\t\t\tstyle.appendChild(document.createTextNode(CSS_DISABLE_TRANS));\n\t\t\twindow.document.head.appendChild(style);\n\t\t}\n\t\tfor (const c of classesToAdd) el.classList.add(c);\n\t\tfor (const c of classesToRemove) el.classList.remove(c);\n\t\tif (attributeToChange) el.setAttribute(attributeToChange.key, attributeToChange.value);\n\t\tif (disableTransition) {\n\t\t\twindow.getComputedStyle(style).opacity;\n\t\t\tdocument.head.removeChild(style);\n\t\t}\n\t});\n\tfunction defaultOnChanged(mode) {\n\t\tvar _modes$mode;\n\t\tupdateHTMLAttrs(selector, attribute, (_modes$mode = modes[mode]) !== null && _modes$mode !== void 0 ? _modes$mode : mode);\n\t}\n\tfunction onChanged(mode) {\n\t\tif (options.onChanged) options.onChanged(mode, defaultOnChanged);\n\t\telse defaultOnChanged(mode);\n\t}\n\twatch(state, onChanged, {\n\t\tflush: \"post\",\n\t\timmediate: true\n\t});\n\ttryOnMounted(() => onChanged(state.value));\n\tconst auto = computed({\n\t\tget() {\n\t\t\treturn emitAuto ? store.value : state.value;\n\t\t},\n\t\tset(v) {\n\t\t\tstore.value = v;\n\t\t}\n\t});\n\treturn Object.assign(auto, {\n\t\tstore,\n\t\tsystem,\n\t\tstate\n\t});\n}\n//#endregion\n//#region useConfirmDialog/index.ts\n/**\n* Hooks for creating confirm dialogs. Useful for modal windows, popups and logins.\n*\n* @see https://vueuse.org/useConfirmDialog/\n* @param revealed `boolean` `ref` that handles a modal window\n*\n* @__NO_SIDE_EFFECTS__\n*/\nfunction useConfirmDialog(revealed = shallowRef(false)) {\n\tconst confirmHook = createEventHook();\n\tconst cancelHook = createEventHook();\n\tconst revealHook = createEventHook();\n\tlet _resolve = noop;\n\tconst reveal = (data) => {\n\t\trevealHook.trigger(data);\n\t\trevealed.value = true;\n\t\treturn new Promise((resolve) => {\n\t\t\t_resolve = resolve;\n\t\t});\n\t};\n\tconst confirm = (data) => {\n\t\trevealed.value = false;\n\t\tconfirmHook.trigger(data);\n\t\t_resolve({\n\t\t\tdata,\n\t\t\tisCanceled: false\n\t\t});\n\t};\n\tconst cancel = (data) => {\n\t\trevealed.value = false;\n\t\tcancelHook.trigger(data);\n\t\t_resolve({\n\t\t\tdata,\n\t\t\tisCanceled: true\n\t\t});\n\t};\n\treturn {\n\t\tisRevealed: computed(() => revealed.value),\n\t\treveal,\n\t\tconfirm,\n\t\tcancel,\n\t\tonReveal: revealHook.on,\n\t\tonConfirm: confirmHook.on,\n\t\tonCancel: cancelHook.on\n\t};\n}\n//#endregion\n//#region useCountdown/index.ts\nfunction getDefaultScheduler$8(options) {\n\tif (\"interval\" in options || \"immediate\" in options) {\n\t\tconst { interval = 1e3, immediate = false } = options;\n\t\treturn (cb) => useIntervalFn(cb, interval, { immediate });\n\t}\n\treturn (cb) => useIntervalFn(cb, 1e3, { immediate: false });\n}\n/**\n* Reactive countdown timer in seconds.\n*\n* @param initialCountdown\n* @param options\n*\n* @see https://vueuse.org/useCountdown\n*/\nfunction useCountdown(initialCountdown, options = {}) {\n\tconst remaining = shallowRef(toValue(initialCountdown));\n\tconst { scheduler = getDefaultScheduler$8(options), onTick, onComplete } = options;\n\tconst controls = scheduler(() => {\n\t\tconst value = remaining.value - 1;\n\t\tremaining.value = value < 0 ? 0 : value;\n\t\tonTick === null || onTick === void 0 || onTick();\n\t\tif (remaining.value <= 0) {\n\t\t\tcontrols.pause();\n\t\t\tonComplete === null || onComplete === void 0 || onComplete();\n\t\t}\n\t});\n\tconst reset = (countdown) => {\n\t\tvar _toValue;\n\t\tremaining.value = (_toValue = toValue(countdown)) !== null && _toValue !== void 0 ? _toValue : toValue(initialCountdown);\n\t};\n\tconst stop = () => {\n\t\tcontrols.pause();\n\t\treset();\n\t};\n\tconst resume = () => {\n\t\tif (!controls.isActive.value) {\n\t\t\tif (remaining.value > 0) controls.resume();\n\t\t}\n\t};\n\tconst start = (countdown) => {\n\t\treset(countdown);\n\t\tcontrols.resume();\n\t};\n\treturn {\n\t\tremaining,\n\t\treset,\n\t\tstop,\n\t\tstart,\n\t\tpause: controls.pause,\n\t\tresume,\n\t\tisActive: controls.isActive\n\t};\n}\n//#endregion\n//#region useCssSupports/index.ts\nfunction useCssSupports(...args) {\n\tlet options = {};\n\tif (typeof toValue(args.at(-1)) === \"object\") options = args.pop();\n\tconst [prop, value] = args;\n\tconst { window = defaultWindow, ssrValue = false } = options;\n\tconst isMounted = useMounted();\n\treturn { isSupported: computed(() => {\n\t\tif (!isClient || !isMounted.value) return ssrValue;\n\t\treturn args.length === 2 ? window === null || window === void 0 ? void 0 : window.CSS.supports(toValue(prop), toValue(value)) : window === null || window === void 0 ? void 0 : window.CSS.supports(toValue(prop));\n\t}) };\n}\n//#endregion\n//#region useCssVar/index.ts\n/**\n* Manipulate CSS variables.\n*\n* @see https://vueuse.org/useCssVar\n* @param prop\n* @param target\n* @param options\n*/\nfunction useCssVar(prop, target, options = {}) {\n\tconst { window = defaultWindow, initialValue, observe = false } = options;\n\tconst variable = shallowRef(initialValue);\n\tconst elRef = computed(() => {\n\t\tvar _window$document;\n\t\treturn unrefElement(target) || (window === null || window === void 0 || (_window$document = window.document) === null || _window$document === void 0 ? void 0 : _window$document.documentElement);\n\t});\n\tfunction updateCssVar() {\n\t\tconst key = toValue(prop);\n\t\tconst el = toValue(elRef);\n\t\tif (el && window && key) {\n\t\t\tvar _window$getComputedSt;\n\t\t\tvariable.value = ((_window$getComputedSt = window.getComputedStyle(el).getPropertyValue(key)) === null || _window$getComputedSt === void 0 ? void 0 : _window$getComputedSt.trim()) || variable.value || initialValue;\n\t\t}\n\t}\n\tif (observe) useMutationObserver(elRef, updateCssVar, {\n\t\tattributeFilter: [\"style\", \"class\"],\n\t\twindow\n\t});\n\twatch([elRef, () => toValue(prop)], (_, old) => {\n\t\tif (old[0] && old[1]) old[0].style.removeProperty(old[1]);\n\t\tupdateCssVar();\n\t}, { immediate: true });\n\twatch([variable, elRef], ([val, el]) => {\n\t\tconst raw_prop = toValue(prop);\n\t\tif ((el === null || el === void 0 ? void 0 : el.style) && raw_prop) if (val == null) el.style.removeProperty(raw_prop);\n\t\telse el.style.setProperty(raw_prop, val);\n\t}, { immediate: true });\n\treturn variable;\n}\n//#endregion\n//#region useCurrentElement/index.ts\nfunction useCurrentElement(rootComponent) {\n\tconst vm = getCurrentInstance();\n\tconst currentElement = computedWithControl(() => null, () => rootComponent ? unrefElement(rootComponent) : vm.proxy.$el);\n\tonUpdated(currentElement.trigger);\n\tonMounted(currentElement.trigger);\n\treturn currentElement;\n}\n//#endregion\n//#region useCycleList/index.ts\n/**\n* Cycle through a list of items\n*\n* @see https://vueuse.org/useCycleList\n*/\nfunction useCycleList(list, options) {\n\tconst state = shallowRef(getInitialValue());\n\tconst listRef = toRef(list);\n\tconst index = computed({\n\t\tget() {\n\t\t\tvar _options$fallbackInde;\n\t\t\tconst targetList = listRef.value;\n\t\t\tlet index = (options === null || options === void 0 ? void 0 : options.getIndexOf) ? options.getIndexOf(state.value, targetList) : targetList.indexOf(state.value);\n\t\t\tif (index < 0) index = (_options$fallbackInde = options === null || options === void 0 ? void 0 : options.fallbackIndex) !== null && _options$fallbackInde !== void 0 ? _options$fallbackInde : 0;\n\t\t\treturn index;\n\t\t},\n\t\tset(v) {\n\t\t\tset(v);\n\t\t}\n\t});\n\tfunction set(i) {\n\t\tconst targetList = listRef.value;\n\t\tconst length = targetList.length;\n\t\tconst value = targetList[(i % length + length) % length];\n\t\tstate.value = value;\n\t\treturn value;\n\t}\n\tfunction shift(delta = 1) {\n\t\treturn set(index.value + delta);\n\t}\n\tfunction next(n = 1) {\n\t\treturn shift(n);\n\t}\n\tfunction prev(n = 1) {\n\t\treturn shift(-n);\n\t}\n\tfunction getInitialValue() {\n\t\tvar _toValue, _options$initialValue;\n\t\treturn (_toValue = toValue((_options$initialValue = options === null || options === void 0 ? void 0 : options.initialValue) !== null && _options$initialValue !== void 0 ? _options$initialValue : toValue(list)[0])) !== null && _toValue !== void 0 ? _toValue : void 0;\n\t}\n\twatch(listRef, () => set(index.value));\n\treturn {\n\t\tstate,\n\t\tindex,\n\t\tnext,\n\t\tprev,\n\t\tgo: set\n\t};\n}\n//#endregion\n//#region useDark/index.ts\n/**\n* Reactive dark mode with auto data persistence.\n*\n* @see https://vueuse.org/useDark\n* @param options\n*/\nfunction useDark(options = {}) {\n\tconst { valueDark = \"dark\", valueLight = \"\" } = options;\n\tconst mode = useColorMode({\n\t\t...options,\n\t\tonChanged: (mode, defaultHandler) => {\n\t\t\tvar _options$onChanged;\n\t\t\tif (options.onChanged) (_options$onChanged = options.onChanged) === null || _options$onChanged === void 0 || _options$onChanged.call(options, mode === \"dark\", defaultHandler, mode);\n\t\t\telse defaultHandler(mode);\n\t\t},\n\t\tmodes: {\n\t\t\tdark: valueDark,\n\t\t\tlight: valueLight\n\t\t}\n\t});\n\tconst system = computed(() => mode.system.value);\n\treturn computed({\n\t\tget() {\n\t\t\treturn mode.value === \"dark\";\n\t\t},\n\t\tset(v) {\n\t\t\tconst modeVal = v ? \"dark\" : \"light\";\n\t\t\tif (system.value === modeVal) mode.value = \"auto\";\n\t\t\telse mode.value = modeVal;\n\t\t}\n\t});\n}\n//#endregion\n//#region useManualRefHistory/index.ts\nfunction fnBypass(v) {\n\treturn v;\n}\nfunction fnSetSource(source, value) {\n\treturn source.value = value;\n}\nfunction defaultDump(clone) {\n\treturn clone ? typeof clone === \"function\" ? clone : cloneFnJSON : fnBypass;\n}\nfunction defaultParse(clone) {\n\treturn clone ? typeof clone === \"function\" ? clone : cloneFnJSON : fnBypass;\n}\n/**\n* Track the change history of a ref, also provides undo and redo functionality.\n*\n* @see https://vueuse.org/useManualRefHistory\n* @param source\n* @param options\n*/\nfunction useManualRefHistory(source, options = {}) {\n\tconst { clone = false, dump = defaultDump(clone), parse = defaultParse(clone), setSource = fnSetSource } = options;\n\tfunction _createHistoryRecord() {\n\t\treturn markRaw({\n\t\t\tsnapshot: dump(source.value),\n\t\t\ttimestamp: timestamp()\n\t\t});\n\t}\n\tconst last = ref(_createHistoryRecord());\n\tconst undoStack = ref([]);\n\tconst redoStack = ref([]);\n\tconst _setSource = (record) => {\n\t\tsetSource(source, parse(record.snapshot));\n\t\tlast.value = record;\n\t};\n\tconst commit = () => {\n\t\tundoStack.value.unshift(last.value);\n\t\tlast.value = _createHistoryRecord();\n\t\tif (options.capacity && undoStack.value.length > options.capacity) undoStack.value.splice(options.capacity, Number.POSITIVE_INFINITY);\n\t\tif (redoStack.value.length) redoStack.value.splice(0, redoStack.value.length);\n\t};\n\tconst clear = () => {\n\t\tundoStack.value.splice(0, undoStack.value.length);\n\t\tredoStack.value.splice(0, redoStack.value.length);\n\t};\n\tconst undo = () => {\n\t\tconst state = undoStack.value.shift();\n\t\tif (state) {\n\t\t\tredoStack.value.unshift(last.value);\n\t\t\t_setSource(state);\n\t\t}\n\t};\n\tconst redo = () => {\n\t\tconst state = redoStack.value.shift();\n\t\tif (state) {\n\t\t\tundoStack.value.unshift(last.value);\n\t\t\t_setSource(state);\n\t\t}\n\t};\n\tconst reset = () => {\n\t\t_setSource(last.value);\n\t};\n\treturn {\n\t\tsource,\n\t\tundoStack,\n\t\tredoStack,\n\t\tlast,\n\t\thistory: computed(() => [last.value, ...undoStack.value]),\n\t\tcanUndo: computed(() => undoStack.value.length > 0),\n\t\tcanRedo: computed(() => redoStack.value.length > 0),\n\t\tclear,\n\t\tcommit,\n\t\treset,\n\t\tundo,\n\t\tredo\n\t};\n}\n//#endregion\n//#region useRefHistory/index.ts\n/**\n* Track the change history of a ref, also provides undo and redo functionality.\n*\n* @see https://vueuse.org/useRefHistory\n* @param source\n* @param options\n*/\nfunction useRefHistory(source, options = {}) {\n\tconst { deep = false, flush = \"pre\", eventFilter, shouldCommit = () => true } = options;\n\tconst { eventFilter: composedFilter, pause, resume: resumeTracking, isActive: isTracking } = pausableFilter(eventFilter);\n\tlet lastRawValue = source.value;\n\tconst { ignoreUpdates, ignorePrevAsyncUpdates, stop } = watchIgnorable(source, commit, {\n\t\tdeep,\n\t\tflush,\n\t\teventFilter: composedFilter\n\t});\n\tfunction setSource(source, value) {\n\t\tignorePrevAsyncUpdates();\n\t\tignoreUpdates(() => {\n\t\t\tsource.value = value;\n\t\t\tlastRawValue = value;\n\t\t});\n\t}\n\tconst manualHistory = useManualRefHistory(source, {\n\t\t...options,\n\t\tclone: options.clone || deep,\n\t\tsetSource\n\t});\n\tconst { clear, commit: manualCommit } = manualHistory;\n\tfunction commit() {\n\t\tignorePrevAsyncUpdates();\n\t\tif (!shouldCommit(lastRawValue, source.value)) return;\n\t\tlastRawValue = source.value;\n\t\tmanualCommit();\n\t}\n\tfunction resume(commitNow) {\n\t\tresumeTracking();\n\t\tif (commitNow) commit();\n\t}\n\tfunction batch(fn) {\n\t\tlet canceled = false;\n\t\tconst cancel = () => canceled = true;\n\t\tignoreUpdates(() => {\n\t\t\tfn(cancel);\n\t\t});\n\t\tif (!canceled) commit();\n\t}\n\tfunction dispose() {\n\t\tstop();\n\t\tclear();\n\t}\n\treturn {\n\t\t...manualHistory,\n\t\tisTracking,\n\t\tpause,\n\t\tresume,\n\t\tcommit,\n\t\tbatch,\n\t\tdispose\n\t};\n}\n//#endregion\n//#region useDebouncedRefHistory/index.ts\n/**\n* Shorthand for [useRefHistory](https://vueuse.org/useRefHistory) with debounce filter.\n*\n* @see https://vueuse.org/useDebouncedRefHistory\n* @param source\n* @param options\n*/\nfunction useDebouncedRefHistory(source, options = {}) {\n\tconst filter = options.debounce ? debounceFilter(options.debounce) : void 0;\n\treturn { ...useRefHistory(source, {\n\t\t...options,\n\t\teventFilter: filter\n\t}) };\n}\n//#endregion\n//#region useDeviceMotion/index.ts\n/**\n* Reactive DeviceMotionEvent.\n*\n* @see https://vueuse.org/useDeviceMotion\n* @param options\n*/\nfunction useDeviceMotion(options = {}) {\n\tconst { window = defaultWindow, requestPermissions = false, eventFilter = bypassFilter } = options;\n\tconst isSupported = /* @__PURE__ */ useSupported(() => typeof DeviceMotionEvent !== \"undefined\");\n\tconst requirePermissions = /* @__PURE__ */ useSupported(() => isSupported.value && \"requestPermission\" in DeviceMotionEvent && typeof DeviceMotionEvent.requestPermission === \"function\");\n\tconst permissionGranted = shallowRef(false);\n\tconst acceleration = ref({\n\t\tx: null,\n\t\ty: null,\n\t\tz: null\n\t});\n\tconst rotationRate = ref({\n\t\talpha: null,\n\t\tbeta: null,\n\t\tgamma: null\n\t});\n\tconst interval = shallowRef(0);\n\tconst accelerationIncludingGravity = ref({\n\t\tx: null,\n\t\ty: null,\n\t\tz: null\n\t});\n\tfunction init() {\n\t\tif (window) useEventListener(window, \"devicemotion\", createFilterWrapper(eventFilter, (event) => {\n\t\t\tvar _event$acceleration, _event$acceleration2, _event$acceleration3, _event$accelerationIn, _event$accelerationIn2, _event$accelerationIn3, _event$rotationRate, _event$rotationRate2, _event$rotationRate3;\n\t\t\tacceleration.value = {\n\t\t\t\tx: ((_event$acceleration = event.acceleration) === null || _event$acceleration === void 0 ? void 0 : _event$acceleration.x) || null,\n\t\t\t\ty: ((_event$acceleration2 = event.acceleration) === null || _event$acceleration2 === void 0 ? void 0 : _event$acceleration2.y) || null,\n\t\t\t\tz: ((_event$acceleration3 = event.acceleration) === null || _event$acceleration3 === void 0 ? void 0 : _event$acceleration3.z) || null\n\t\t\t};\n\t\t\taccelerationIncludingGravity.value = {\n\t\t\t\tx: ((_event$accelerationIn = event.accelerationIncludingGravity) === null || _event$accelerationIn === void 0 ? void 0 : _event$accelerationIn.x) || null,\n\t\t\t\ty: ((_event$accelerationIn2 = event.accelerationIncludingGravity) === null || _event$accelerationIn2 === void 0 ? void 0 : _event$accelerationIn2.y) || null,\n\t\t\t\tz: ((_event$accelerationIn3 = event.accelerationIncludingGravity) === null || _event$accelerationIn3 === void 0 ? void 0 : _event$accelerationIn3.z) || null\n\t\t\t};\n\t\t\trotationRate.value = {\n\t\t\t\talpha: ((_event$rotationRate = event.rotationRate) === null || _event$rotationRate === void 0 ? void 0 : _event$rotationRate.alpha) || null,\n\t\t\t\tbeta: ((_event$rotationRate2 = event.rotationRate) === null || _event$rotationRate2 === void 0 ? void 0 : _event$rotationRate2.beta) || null,\n\t\t\t\tgamma: ((_event$rotationRate3 = event.rotationRate) === null || _event$rotationRate3 === void 0 ? void 0 : _event$rotationRate3.gamma) || null\n\t\t\t};\n\t\t\tinterval.value = event.interval;\n\t\t}), { passive: true });\n\t}\n\tconst ensurePermissions = async () => {\n\t\tif (!requirePermissions.value) permissionGranted.value = true;\n\t\tif (permissionGranted.value) return;\n\t\tif (requirePermissions.value) {\n\t\t\tconst requestPermission = DeviceMotionEvent.requestPermission;\n\t\t\ttry {\n\t\t\t\tif (await requestPermission() === \"granted\") {\n\t\t\t\t\tpermissionGranted.value = true;\n\t\t\t\t\tinit();\n\t\t\t\t}\n\t\t\t} catch (error) {\n\t\t\t\tconsole.error(error);\n\t\t\t}\n\t\t}\n\t};\n\tif (isSupported.value) if (requestPermissions && requirePermissions.value) ensurePermissions().then(() => init());\n\telse init();\n\treturn {\n\t\tacceleration,\n\t\taccelerationIncludingGravity,\n\t\trotationRate,\n\t\tinterval,\n\t\tisSupported,\n\t\trequirePermissions,\n\t\tensurePermissions,\n\t\tpermissionGranted\n\t};\n}\n//#endregion\n//#region useDeviceOrientation/index.ts\n/**\n* Reactive DeviceOrientationEvent.\n*\n* @see https://vueuse.org/useDeviceOrientation\n* @param options\n*\n* @__NO_SIDE_EFFECTS__\n*/\nfunction useDeviceOrientation(options = {}) {\n\tconst { window = defaultWindow } = options;\n\tconst isSupported = /* @__PURE__ */ useSupported(() => window && \"DeviceOrientationEvent\" in window);\n\tconst isAbsolute = shallowRef(false);\n\tconst alpha = shallowRef(null);\n\tconst beta = shallowRef(null);\n\tconst gamma = shallowRef(null);\n\tif (window && isSupported.value) useEventListener(window, \"deviceorientation\", (event) => {\n\t\tisAbsolute.value = event.absolute;\n\t\talpha.value = event.alpha;\n\t\tbeta.value = event.beta;\n\t\tgamma.value = event.gamma;\n\t}, { passive: true });\n\treturn {\n\t\tisSupported,\n\t\tisAbsolute,\n\t\talpha,\n\t\tbeta,\n\t\tgamma\n\t};\n}\n//#endregion\n//#region useDevicePixelRatio/index.ts\n/**\n* Reactively track `window.devicePixelRatio`.\n*\n* @see https://vueuse.org/useDevicePixelRatio\n*\n* @__NO_SIDE_EFFECTS__\n*/\nfunction useDevicePixelRatio(options = {}) {\n\tconst { window = defaultWindow } = options;\n\tconst pixelRatio = shallowRef(1);\n\tconst query = useMediaQuery(() => `(resolution: ${pixelRatio.value}dppx)`, options);\n\tlet stop = noop;\n\tif (window) stop = watchImmediate(query, () => pixelRatio.value = window.devicePixelRatio);\n\treturn {\n\t\tpixelRatio: shallowReadonly(pixelRatio),\n\t\tstop\n\t};\n}\n//#endregion\n//#region useDevicesList/index.ts\n/**\n* Reactive `enumerateDevices` listing available input/output devices\n*\n* @see https://vueuse.org/useDevicesList\n* @param options\n*/\nfunction useDevicesList(options = {}) {\n\tconst { navigator = defaultNavigator, requestPermissions = false, constraints = {\n\t\taudio: true,\n\t\tvideo: true\n\t}, onUpdated } = options;\n\tconst devices = shallowRef([]);\n\tconst videoInputs = computed(() => devices.value.filter((i) => i.kind === \"videoinput\"));\n\tconst audioInputs = computed(() => devices.value.filter((i) => i.kind === \"audioinput\"));\n\tconst audioOutputs = computed(() => devices.value.filter((i) => i.kind === \"audiooutput\"));\n\tconst isSupported = /* @__PURE__ */ useSupported(() => navigator && navigator.mediaDevices && navigator.mediaDevices.enumerateDevices);\n\tconst permissionGranted = shallowRef(false);\n\tlet stream;\n\tasync function update() {\n\t\tif (!isSupported.value) return;\n\t\tdevices.value = await navigator.mediaDevices.enumerateDevices();\n\t\tonUpdated === null || onUpdated === void 0 || onUpdated(devices.value);\n\t\tif (stream) {\n\t\t\tstream.getTracks().forEach((t) => t.stop());\n\t\t\tstream = null;\n\t\t}\n\t}\n\tasync function ensurePermissions() {\n\t\tconst deviceName = constraints.video ? \"camera\" : \"microphone\";\n\t\tif (!isSupported.value) return false;\n\t\tif (permissionGranted.value) return true;\n\t\tconst { state, query } = usePermission(deviceName, { controls: true });\n\t\tawait query();\n\t\tif (state.value !== \"granted\") {\n\t\t\tlet granted = true;\n\t\t\ttry {\n\t\t\t\tconst allDevices = await navigator.mediaDevices.enumerateDevices();\n\t\t\t\tconst hasCamera = allDevices.some((device) => device.kind === \"videoinput\");\n\t\t\t\tconst hasMicrophone = allDevices.some((device) => device.kind === \"audioinput\" || device.kind === \"audiooutput\");\n\t\t\t\tconstraints.video = hasCamera ? constraints.video : false;\n\t\t\t\tconstraints.audio = hasMicrophone ? constraints.audio : false;\n\t\t\t\tstream = await navigator.mediaDevices.getUserMedia(constraints);\n\t\t\t} catch (_unused) {\n\t\t\t\tstream = null;\n\t\t\t\tgranted = false;\n\t\t\t}\n\t\t\tupdate();\n\t\t\tpermissionGranted.value = granted;\n\t\t} else permissionGranted.value = true;\n\t\treturn permissionGranted.value;\n\t}\n\tif (isSupported.value) {\n\t\tif (requestPermissions) ensurePermissions();\n\t\tuseEventListener(navigator.mediaDevices, \"devicechange\", update, { passive: true });\n\t\tupdate();\n\t}\n\treturn {\n\t\tdevices,\n\t\tensurePermissions,\n\t\tpermissionGranted,\n\t\tvideoInputs,\n\t\taudioInputs,\n\t\taudioOutputs,\n\t\tisSupported\n\t};\n}\n//#endregion\n//#region useDisplayMedia/index.ts\n/**\n* Reactive `mediaDevices.getDisplayMedia` streaming\n*\n* @see https://vueuse.org/useDisplayMedia\n* @param options\n*/\nfunction useDisplayMedia(options = {}) {\n\tvar _options$enabled;\n\tconst enabled = shallowRef((_options$enabled = options.enabled) !== null && _options$enabled !== void 0 ? _options$enabled : false);\n\tconst video = options.video;\n\tconst audio = options.audio;\n\tconst { navigator = defaultNavigator } = options;\n\tconst isSupported = /* @__PURE__ */ useSupported(() => {\n\t\tvar _navigator$mediaDevic;\n\t\treturn navigator === null || navigator === void 0 || (_navigator$mediaDevic = navigator.mediaDevices) === null || _navigator$mediaDevic === void 0 ? void 0 : _navigator$mediaDevic.getDisplayMedia;\n\t});\n\tconst constraint = {\n\t\taudio,\n\t\tvideo\n\t};\n\tconst stream = shallowRef();\n\tasync function _start() {\n\t\tvar _stream$value;\n\t\tif (!isSupported.value || stream.value) return;\n\t\tstream.value = await navigator.mediaDevices.getDisplayMedia(constraint);\n\t\t(_stream$value = stream.value) === null || _stream$value === void 0 || _stream$value.getTracks().forEach((t) => useEventListener(t, \"ended\", stop, { passive: true }));\n\t\treturn stream.value;\n\t}\n\tasync function _stop() {\n\t\tvar _stream$value2;\n\t\t(_stream$value2 = stream.value) === null || _stream$value2 === void 0 || _stream$value2.getTracks().forEach((t) => t.stop());\n\t\tstream.value = void 0;\n\t}\n\tfunction stop() {\n\t\t_stop();\n\t\tenabled.value = false;\n\t}\n\tasync function start() {\n\t\tawait _start();\n\t\tif (stream.value) enabled.value = true;\n\t\treturn stream.value;\n\t}\n\twatch(enabled, (v) => {\n\t\tif (v) _start();\n\t\telse _stop();\n\t}, { immediate: true });\n\treturn {\n\t\tisSupported,\n\t\tstream,\n\t\tstart,\n\t\tstop,\n\t\tenabled\n\t};\n}\n//#endregion\n//#region useDocumentVisibility/index.ts\n/**\n* Reactively track `document.visibilityState`.\n*\n* @see https://vueuse.org/useDocumentVisibility\n*\n* @__NO_SIDE_EFFECTS__\n*/\nfunction useDocumentVisibility(options = {}) {\n\tconst { document = defaultDocument } = options;\n\tif (!document) return shallowRef(\"visible\");\n\tconst visibility = shallowRef(document.visibilityState);\n\tuseEventListener(document, \"visibilitychange\", () => {\n\t\tvisibility.value = document.visibilityState;\n\t}, { passive: true });\n\treturn visibility;\n}\n//#endregion\n//#region useDraggable/index.ts\nconst defaultScrollConfig = {\n\tspeed: 2,\n\tmargin: 30,\n\tdirection: \"both\"\n};\nfunction clampContainerScroll(container) {\n\tif (container.scrollLeft > container.scrollWidth - container.clientWidth) container.scrollLeft = Math.max(0, container.scrollWidth - container.clientWidth);\n\tif (container.scrollTop > container.scrollHeight - container.clientHeight) container.scrollTop = Math.max(0, container.scrollHeight - container.clientHeight);\n}\n/**\n* Make elements draggable.\n*\n* @see https://vueuse.org/useDraggable\n* @param target\n* @param options\n*/\nfunction useDraggable(target, options = {}) {\n\tvar _toValue, _toValue2, _toValue3, _scrollConfig$directi;\n\tconst { pointerTypes, preventDefault, stopPropagation, exact, onMove, onEnd, onStart, initialValue, axis = \"both\", draggingElement = defaultWindow, containerElement, handle: draggingHandle = target, buttons = [0], restrictInView, autoScroll = false } = options;\n\tconst position = ref((_toValue = toValue(initialValue)) !== null && _toValue !== void 0 ? _toValue : {\n\t\tx: 0,\n\t\ty: 0\n\t});\n\tconst pressedDelta = ref();\n\tconst filterEvent = (e) => {\n\t\tif (pointerTypes) return pointerTypes.includes(e.pointerType);\n\t\treturn true;\n\t};\n\tconst handleEvent = (e) => {\n\t\tif (toValue(preventDefault)) e.preventDefault();\n\t\tif (toValue(stopPropagation)) e.stopPropagation();\n\t};\n\tconst scrollConfig = toValue(autoScroll);\n\tconst scrollSettings = typeof scrollConfig === \"object\" ? {\n\t\tspeed: (_toValue2 = toValue(scrollConfig.speed)) !== null && _toValue2 !== void 0 ? _toValue2 : defaultScrollConfig.speed,\n\t\tmargin: (_toValue3 = toValue(scrollConfig.margin)) !== null && _toValue3 !== void 0 ? _toValue3 : defaultScrollConfig.margin,\n\t\tdirection: (_scrollConfig$directi = scrollConfig.direction) !== null && _scrollConfig$directi !== void 0 ? _scrollConfig$directi : defaultScrollConfig.direction\n\t} : defaultScrollConfig;\n\tconst getScrollAxisValues = (value) => typeof value === \"number\" ? [value, value] : [value.x, value.y];\n\tconst handleAutoScroll = (container, targetRect, position) => {\n\t\tconst { clientWidth, clientHeight, scrollLeft, scrollTop, scrollWidth, scrollHeight } = container;\n\t\tconst [marginX, marginY] = getScrollAxisValues(scrollSettings.margin);\n\t\tconst [speedX, speedY] = getScrollAxisValues(scrollSettings.speed);\n\t\tlet deltaX = 0;\n\t\tlet deltaY = 0;\n\t\tif (scrollSettings.direction === \"x\" || scrollSettings.direction === \"both\") {\n\t\t\tif (position.x < marginX && scrollLeft > 0) deltaX = -speedX;\n\t\t\telse if (position.x + targetRect.width > clientWidth - marginX && scrollLeft < scrollWidth - clientWidth) deltaX = speedX;\n\t\t}\n\t\tif (scrollSettings.direction === \"y\" || scrollSettings.direction === \"both\") {\n\t\t\tif (position.y < marginY && scrollTop > 0) deltaY = -speedY;\n\t\t\telse if (position.y + targetRect.height > clientHeight - marginY && scrollTop < scrollHeight - clientHeight) deltaY = speedY;\n\t\t}\n\t\tif (deltaX || deltaY) container.scrollBy({\n\t\t\tleft: deltaX,\n\t\t\ttop: deltaY,\n\t\t\tbehavior: \"auto\"\n\t\t});\n\t};\n\tlet autoScrollInterval = null;\n\tconst startAutoScroll = () => {\n\t\tconst container = toValue(containerElement);\n\t\tif (container && !autoScrollInterval) autoScrollInterval = setInterval(() => {\n\t\t\tconst targetRect = toValue(target).getBoundingClientRect();\n\t\t\tconst { x, y } = position.value;\n\t\t\tconst relativePosition = {\n\t\t\t\tx: x - container.scrollLeft,\n\t\t\t\ty: y - container.scrollTop\n\t\t\t};\n\t\t\tif (relativePosition.x >= 0 && relativePosition.y >= 0) {\n\t\t\t\thandleAutoScroll(container, targetRect, relativePosition);\n\t\t\t\trelativePosition.x += container.scrollLeft;\n\t\t\t\trelativePosition.y += container.scrollTop;\n\t\t\t\tposition.value = relativePosition;\n\t\t\t}\n\t\t}, 1e3 / 60);\n\t};\n\tconst stopAutoScroll = () => {\n\t\tif (autoScrollInterval) {\n\t\t\tclearInterval(autoScrollInterval);\n\t\t\tautoScrollInterval = null;\n\t\t}\n\t};\n\tconst isPointerNearEdge = (pointer, container, margin, targetRect) => {\n\t\tconst [marginX, marginY] = typeof margin === \"number\" ? [margin, margin] : [margin.x, margin.y];\n\t\tconst { clientWidth, clientHeight } = container;\n\t\treturn pointer.x < marginX || pointer.x + targetRect.width > clientWidth - marginX || pointer.y < marginY || pointer.y + targetRect.height > clientHeight - marginY;\n\t};\n\tconst checkAutoScroll = () => {\n\t\tif (toValue(options.disabled) || !pressedDelta.value) return;\n\t\tconst container = toValue(containerElement);\n\t\tif (!container) return;\n\t\tconst targetRect = toValue(target).getBoundingClientRect();\n\t\tconst { x, y } = position.value;\n\t\tif (isPointerNearEdge({\n\t\t\tx: x - container.scrollLeft,\n\t\t\ty: y - container.scrollTop\n\t\t}, container, scrollSettings.margin, targetRect)) startAutoScroll();\n\t\telse stopAutoScroll();\n\t};\n\tif (toValue(autoScroll)) watch(position, checkAutoScroll);\n\tconst start = (e) => {\n\t\tvar _container$getBoundin;\n\t\tif (!toValue(buttons).includes(e.button)) return;\n\t\tif (toValue(options.disabled) || !filterEvent(e)) return;\n\t\tif (toValue(exact) && e.target !== toValue(target)) return;\n\t\tconst container = toValue(containerElement);\n\t\tconst containerRect = container === null || container === void 0 || (_container$getBoundin = container.getBoundingClientRect) === null || _container$getBoundin === void 0 ? void 0 : _container$getBoundin.call(container);\n\t\tconst targetRect = toValue(target).getBoundingClientRect();\n\t\tconst pos = {\n\t\t\tx: e.clientX - (container ? targetRect.left - containerRect.left + (autoScroll ? 0 : container.scrollLeft) : targetRect.left),\n\t\t\ty: e.clientY - (container ? targetRect.top - containerRect.top + (autoScroll ? 0 : container.scrollTop) : targetRect.top)\n\t\t};\n\t\tif ((onStart === null || onStart === void 0 ? void 0 : onStart(pos, e)) === false) return;\n\t\tpressedDelta.value = pos;\n\t\thandleEvent(e);\n\t};\n\tconst move = (e) => {\n\t\tif (toValue(options.disabled) || !filterEvent(e)) return;\n\t\tif (!pressedDelta.value) return;\n\t\tconst container = toValue(containerElement);\n\t\tif (container instanceof HTMLElement) clampContainerScroll(container);\n\t\tconst targetRect = toValue(target).getBoundingClientRect();\n\t\tlet { x, y } = position.value;\n\t\tif (axis === \"x\" || axis === \"both\") {\n\t\t\tx = e.clientX - pressedDelta.value.x;\n\t\t\tif (container) x = Math.min(Math.max(0, x), container.scrollWidth - targetRect.width);\n\t\t}\n\t\tif (axis === \"y\" || axis === \"both\") {\n\t\t\ty = e.clientY - pressedDelta.value.y;\n\t\t\tif (container) y = Math.min(Math.max(0, y), container.scrollHeight - targetRect.height);\n\t\t}\n\t\tif (toValue(autoScroll) && container) {\n\t\t\tif (autoScrollInterval === null) handleAutoScroll(container, targetRect, {\n\t\t\t\tx,\n\t\t\t\ty\n\t\t\t});\n\t\t\tx += container.scrollLeft;\n\t\t\ty += container.scrollTop;\n\t\t}\n\t\tif (container && (restrictInView || autoScroll)) {\n\t\t\tif (axis !== \"y\") {\n\t\t\t\tconst relativeX = x - container.scrollLeft;\n\t\t\t\tif (relativeX < 0) x = container.scrollLeft;\n\t\t\t\telse if (relativeX > container.clientWidth - targetRect.width) x = container.clientWidth - targetRect.width + container.scrollLeft;\n\t\t\t}\n\t\t\tif (axis !== \"x\") {\n\t\t\t\tconst relativeY = y - container.scrollTop;\n\t\t\t\tif (relativeY < 0) y = container.scrollTop;\n\t\t\t\telse if (relativeY > container.clientHeight - targetRect.height) y = container.clientHeight - targetRect.height + container.scrollTop;\n\t\t\t}\n\t\t}\n\t\tposition.value = {\n\t\t\tx,\n\t\t\ty\n\t\t};\n\t\tonMove === null || onMove === void 0 || onMove(position.value, e);\n\t\thandleEvent(e);\n\t};\n\tconst end = (e) => {\n\t\tif (toValue(options.disabled) || !filterEvent(e)) return;\n\t\tif (!pressedDelta.value) return;\n\t\tpressedDelta.value = void 0;\n\t\tif (autoScroll) stopAutoScroll();\n\t\tonEnd === null || onEnd === void 0 || onEnd(position.value, e);\n\t\thandleEvent(e);\n\t};\n\tif (isClient) {\n\t\tconst config = () => {\n\t\t\tvar _options$capture;\n\t\t\treturn {\n\t\t\t\tcapture: (_options$capture = options.capture) !== null && _options$capture !== void 0 ? _options$capture : true,\n\t\t\t\tpassive: !toValue(preventDefault)\n\t\t\t};\n\t\t};\n\t\tuseEventListener(draggingHandle, \"pointerdown\", start, config);\n\t\tuseEventListener(draggingElement, \"pointermove\", move, config);\n\t\tuseEventListener(draggingElement, \"pointerup\", end, config);\n\t}\n\treturn {\n\t\t...toRefs(position),\n\t\tposition,\n\t\tisDragging: computed(() => !!pressedDelta.value),\n\t\tstyle: computed(() => `\n left: ${position.value.x}px;\n top: ${position.value.y}px;\n ${autoScroll ? \"text-wrap: nowrap;\" : \"\"}\n `)\n\t};\n}\n//#endregion\n//#region useDropZone/index.ts\nfunction useDropZone(target, options = {}) {\n\tconst isOverDropZone = shallowRef(false);\n\tconst files = shallowRef(null);\n\tlet counter = 0;\n\tlet isValid = true;\n\tif (isClient) {\n\t\tvar _options$multiple, _options$preventDefau;\n\t\tconst _options = typeof options === \"function\" ? { onDrop: options } : options;\n\t\tconst multiple = (_options$multiple = _options.multiple) !== null && _options$multiple !== void 0 ? _options$multiple : true;\n\t\tconst preventDefaultForUnhandled = (_options$preventDefau = _options.preventDefaultForUnhandled) !== null && _options$preventDefau !== void 0 ? _options$preventDefau : false;\n\t\tconst getFiles = (event) => {\n\t\t\tvar _event$dataTransfer$f, _event$dataTransfer;\n\t\t\tconst list = Array.from((_event$dataTransfer$f = (_event$dataTransfer = event.dataTransfer) === null || _event$dataTransfer === void 0 ? void 0 : _event$dataTransfer.files) !== null && _event$dataTransfer$f !== void 0 ? _event$dataTransfer$f : []);\n\t\t\treturn list.length === 0 ? null : multiple ? list : [list[0]];\n\t\t};\n\t\tconst checkDataTypes = (types) => {\n\t\t\tconst dataTypes = unref(_options.dataTypes);\n\t\t\tif (typeof dataTypes === \"function\") return dataTypes(types);\n\t\t\tif (!(dataTypes === null || dataTypes === void 0 ? void 0 : dataTypes.length)) return true;\n\t\t\tif (types.length === 0) return false;\n\t\t\treturn types.every((type) => dataTypes.some((allowedType) => type.includes(allowedType)));\n\t\t};\n\t\tconst checkValidity = (items) => {\n\t\t\tif (_options.checkValidity) return _options.checkValidity(items);\n\t\t\tconst dataTypesValid = checkDataTypes(Array.from(items !== null && items !== void 0 ? items : []).map((item) => item.type));\n\t\t\tconst multipleFilesValid = multiple || items.length <= 1;\n\t\t\treturn dataTypesValid && multipleFilesValid;\n\t\t};\n\t\tconst isSafari = () => /^(?:(?!chrome|android).)*safari/i.test(navigator.userAgent) && !(\"chrome\" in window);\n\t\tconst handleDragEvent = (event, eventType) => {\n\t\t\tvar _event$dataTransfer2, _ref;\n\t\t\tconst dataTransferItemList = (_event$dataTransfer2 = event.dataTransfer) === null || _event$dataTransfer2 === void 0 ? void 0 : _event$dataTransfer2.items;\n\t\t\tisValid = (_ref = dataTransferItemList && checkValidity(dataTransferItemList)) !== null && _ref !== void 0 ? _ref : false;\n\t\t\tif (preventDefaultForUnhandled) event.preventDefault();\n\t\t\tif (!isSafari() && !isValid) {\n\t\t\t\tif (event.dataTransfer) event.dataTransfer.dropEffect = \"none\";\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tevent.preventDefault();\n\t\t\tif (event.dataTransfer) event.dataTransfer.dropEffect = \"copy\";\n\t\t\tconst currentFiles = getFiles(event);\n\t\t\tswitch (eventType) {\n\t\t\t\tcase \"enter\":\n\t\t\t\t\tvar _options$onEnter;\n\t\t\t\t\tcounter += 1;\n\t\t\t\t\tisOverDropZone.value = true;\n\t\t\t\t\t(_options$onEnter = _options.onEnter) === null || _options$onEnter === void 0 || _options$onEnter.call(_options, null, event);\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"over\":\n\t\t\t\t\tvar _options$onOver;\n\t\t\t\t\t(_options$onOver = _options.onOver) === null || _options$onOver === void 0 || _options$onOver.call(_options, null, event);\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"leave\":\n\t\t\t\t\tvar _options$onLeave;\n\t\t\t\t\tcounter -= 1;\n\t\t\t\t\tif (counter === 0) isOverDropZone.value = false;\n\t\t\t\t\t(_options$onLeave = _options.onLeave) === null || _options$onLeave === void 0 || _options$onLeave.call(_options, null, event);\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"drop\":\n\t\t\t\t\tcounter = 0;\n\t\t\t\t\tisOverDropZone.value = false;\n\t\t\t\t\tif (isValid) {\n\t\t\t\t\t\tvar _options$onDrop;\n\t\t\t\t\t\tfiles.value = currentFiles;\n\t\t\t\t\t\t(_options$onDrop = _options.onDrop) === null || _options$onDrop === void 0 || _options$onDrop.call(_options, currentFiles, event);\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\t\t\t}\n\t\t};\n\t\tuseEventListener(target, \"dragenter\", (event) => handleDragEvent(event, \"enter\"));\n\t\tuseEventListener(target, \"dragover\", (event) => handleDragEvent(event, \"over\"));\n\t\tuseEventListener(target, \"dragleave\", (event) => handleDragEvent(event, \"leave\"));\n\t\tuseEventListener(target, \"drop\", (event) => handleDragEvent(event, \"drop\"));\n\t}\n\treturn {\n\t\tfiles,\n\t\tisOverDropZone\n\t};\n}\n//#endregion\n//#region useResizeObserver/index.ts\n/**\n* Reports changes to the dimensions of an Element's content or the border-box\n*\n* @see https://vueuse.org/useResizeObserver\n* @param target\n* @param callback\n* @param options\n*/\nfunction useResizeObserver(target, callback, options = {}) {\n\tconst { window = defaultWindow, ...observerOptions } = options;\n\tlet observer;\n\tconst isSupported = /* @__PURE__ */ useSupported(() => window && \"ResizeObserver\" in window);\n\tconst cleanup = () => {\n\t\tif (observer) {\n\t\t\tobserver.disconnect();\n\t\t\tobserver = void 0;\n\t\t}\n\t};\n\tconst stopWatch = watch(computed(() => {\n\t\tconst _targets = toValue(target);\n\t\treturn Array.isArray(_targets) ? _targets.map((el) => unrefElement(el)) : [unrefElement(_targets)];\n\t}), (els) => {\n\t\tcleanup();\n\t\tif (isSupported.value && window) {\n\t\t\tobserver = new ResizeObserver(callback);\n\t\t\tfor (const _el of els) if (_el) observer.observe(_el, observerOptions);\n\t\t}\n\t}, {\n\t\timmediate: true,\n\t\tflush: \"post\"\n\t});\n\tconst stop = () => {\n\t\tcleanup();\n\t\tstopWatch();\n\t};\n\ttryOnScopeDispose(stop);\n\treturn {\n\t\tisSupported,\n\t\tstop\n\t};\n}\n//#endregion\n//#region useElementBounding/index.ts\n/**\n* Reactive bounding box of an HTML element.\n*\n* @see https://vueuse.org/useElementBounding\n* @param target\n*/\nfunction useElementBounding(target, options = {}) {\n\tconst { reset = true, windowResize = true, windowScroll = true, immediate = true, updateTiming = \"sync\" } = options;\n\tconst height = shallowRef(0);\n\tconst bottom = shallowRef(0);\n\tconst left = shallowRef(0);\n\tconst right = shallowRef(0);\n\tconst top = shallowRef(0);\n\tconst width = shallowRef(0);\n\tconst x = shallowRef(0);\n\tconst y = shallowRef(0);\n\tfunction recalculate() {\n\t\tconst el = unrefElement(target);\n\t\tif (!el) {\n\t\t\tif (reset) {\n\t\t\t\theight.value = 0;\n\t\t\t\tbottom.value = 0;\n\t\t\t\tleft.value = 0;\n\t\t\t\tright.value = 0;\n\t\t\t\ttop.value = 0;\n\t\t\t\twidth.value = 0;\n\t\t\t\tx.value = 0;\n\t\t\t\ty.value = 0;\n\t\t\t}\n\t\t\treturn;\n\t\t}\n\t\tconst rect = el.getBoundingClientRect();\n\t\theight.value = rect.height;\n\t\tbottom.value = rect.bottom;\n\t\tleft.value = rect.left;\n\t\tright.value = rect.right;\n\t\ttop.value = rect.top;\n\t\twidth.value = rect.width;\n\t\tx.value = rect.x;\n\t\ty.value = rect.y;\n\t}\n\tfunction update() {\n\t\tif (updateTiming === \"sync\") recalculate();\n\t\telse if (updateTiming === \"next-frame\") requestAnimationFrame(() => recalculate());\n\t}\n\tuseResizeObserver(target, update);\n\twatch(() => unrefElement(target), (ele) => !ele && update());\n\tuseMutationObserver(target, update, { attributeFilter: [\"style\", \"class\"] });\n\tif (windowScroll) useEventListener(\"scroll\", update, {\n\t\tcapture: true,\n\t\tpassive: true\n\t});\n\tif (windowResize) useEventListener(\"resize\", update, { passive: true });\n\ttryOnMounted(() => {\n\t\tif (immediate) update();\n\t});\n\treturn {\n\t\theight,\n\t\tbottom,\n\t\tleft,\n\t\tright,\n\t\ttop,\n\t\twidth,\n\t\tx,\n\t\ty,\n\t\tupdate\n\t};\n}\n//#endregion\n//#region useElementByPoint/index.ts\nfunction getDefaultScheduler$7(options) {\n\tif (\"interval\" in options || \"immediate\" in options) {\n\t\tconst { interval = \"requestAnimationFrame\", immediate = true } = options;\n\t\treturn interval === \"requestAnimationFrame\" ? (cb) => useRafFn(cb, { immediate }) : (cb) => useIntervalFn(cb, interval, { immediate });\n\t}\n\treturn useRafFn;\n}\n/**\n* Reactive element by point.\n*\n* @see https://vueuse.org/useElementByPoint\n* @param options - UseElementByPointOptions\n*/\nfunction useElementByPoint(options) {\n\tconst { x, y, document = defaultDocument, multiple, scheduler = getDefaultScheduler$7(options) } = options;\n\tconst isSupported = /* @__PURE__ */ useSupported(() => {\n\t\tif (toValue(multiple)) return document && \"elementsFromPoint\" in document;\n\t\treturn document && \"elementFromPoint\" in document;\n\t});\n\tconst element = shallowRef(null);\n\treturn {\n\t\tisSupported,\n\t\telement,\n\t\t...scheduler(() => {\n\t\t\tvar _document$elementsFro, _document$elementFrom;\n\t\t\telement.value = toValue(multiple) ? (_document$elementsFro = document === null || document === void 0 ? void 0 : document.elementsFromPoint(toValue(x), toValue(y))) !== null && _document$elementsFro !== void 0 ? _document$elementsFro : [] : (_document$elementFrom = document === null || document === void 0 ? void 0 : document.elementFromPoint(toValue(x), toValue(y))) !== null && _document$elementFrom !== void 0 ? _document$elementFrom : null;\n\t\t})\n\t};\n}\n//#endregion\n//#region useElementHover/index.ts\nfunction useElementHover(el, options = {}) {\n\tconst { delayEnter = 0, delayLeave = 0, triggerOnRemoval = false, window = defaultWindow } = options;\n\tconst isHovered = shallowRef(false);\n\tlet timer;\n\tconst toggle = (entering) => {\n\t\tconst delay = entering ? delayEnter : delayLeave;\n\t\tif (timer) {\n\t\t\tclearTimeout(timer);\n\t\t\ttimer = void 0;\n\t\t}\n\t\tif (delay) timer = setTimeout(() => isHovered.value = entering, delay);\n\t\telse isHovered.value = entering;\n\t};\n\tif (!window) return isHovered;\n\tuseEventListener(el, \"mouseenter\", () => toggle(true), { passive: true });\n\tuseEventListener(el, \"mouseleave\", () => toggle(false), { passive: true });\n\tif (triggerOnRemoval) onElementRemoval(computed(() => unrefElement(el)), () => toggle(false));\n\treturn isHovered;\n}\n//#endregion\n//#region useElementSize/index.ts\n/**\n* Reactive size of an HTML element.\n*\n* @see https://vueuse.org/useElementSize\n*/\nfunction useElementSize(target, initialSize = {\n\twidth: 0,\n\theight: 0\n}, options = {}) {\n\tconst { window = defaultWindow, box = \"content-box\" } = options;\n\tconst isSVG = computed(() => {\n\t\tvar _unrefElement;\n\t\treturn (_unrefElement = unrefElement(target)) === null || _unrefElement === void 0 || (_unrefElement = _unrefElement.namespaceURI) === null || _unrefElement === void 0 ? void 0 : _unrefElement.includes(\"svg\");\n\t});\n\tconst width = shallowRef(initialSize.width);\n\tconst height = shallowRef(initialSize.height);\n\tconst { stop: stop1 } = useResizeObserver(target, ([entry]) => {\n\t\tconst boxSize = box === \"border-box\" ? entry.borderBoxSize : box === \"content-box\" ? entry.contentBoxSize : entry.devicePixelContentBoxSize;\n\t\tif (window && isSVG.value) {\n\t\t\tconst $elem = unrefElement(target);\n\t\t\tif ($elem) {\n\t\t\t\tconst rect = $elem.getBoundingClientRect();\n\t\t\t\twidth.value = rect.width;\n\t\t\t\theight.value = rect.height;\n\t\t\t}\n\t\t} else if (boxSize) {\n\t\t\tconst formatBoxSize = toArray(boxSize);\n\t\t\twidth.value = formatBoxSize.reduce((acc, { inlineSize }) => acc + inlineSize, 0);\n\t\t\theight.value = formatBoxSize.reduce((acc, { blockSize }) => acc + blockSize, 0);\n\t\t} else {\n\t\t\twidth.value = entry.contentRect.width;\n\t\t\theight.value = entry.contentRect.height;\n\t\t}\n\t}, options);\n\ttryOnMounted(() => {\n\t\tconst ele = unrefElement(target);\n\t\tif (ele) {\n\t\t\twidth.value = \"offsetWidth\" in ele ? ele.offsetWidth : initialSize.width;\n\t\t\theight.value = \"offsetHeight\" in ele ? ele.offsetHeight : initialSize.height;\n\t\t}\n\t});\n\tconst stop2 = watch(() => unrefElement(target), (ele) => {\n\t\twidth.value = ele ? initialSize.width : 0;\n\t\theight.value = ele ? initialSize.height : 0;\n\t});\n\tfunction stop() {\n\t\tstop1();\n\t\tstop2();\n\t}\n\treturn {\n\t\twidth,\n\t\theight,\n\t\tstop\n\t};\n}\n//#endregion\n//#region useIntersectionObserver/index.ts\n/**\n* Detects changes to a target element's visibility.\n*\n* @see https://vueuse.org/useIntersectionObserver\n* @param target\n* @param callback\n* @param options\n*/\nfunction useIntersectionObserver(target, callback, options = {}) {\n\tconst { root, rootMargin, threshold = 0, window = defaultWindow, immediate = true } = options;\n\tconst isSupported = /* @__PURE__ */ useSupported(() => window && \"IntersectionObserver\" in window);\n\tconst targets = computed(() => {\n\t\treturn toArray(toValue(target)).map(unrefElement).filter(notNullish);\n\t});\n\tlet cleanup = noop;\n\tconst isActive = shallowRef(immediate);\n\tconst stopWatch = isSupported.value ? watch(() => [\n\t\ttargets.value,\n\t\tunrefElement(root),\n\t\ttoValue(rootMargin),\n\t\tisActive.value\n\t], ([targets, root, rootMargin]) => {\n\t\tcleanup();\n\t\tif (!isActive.value) return;\n\t\tif (!targets.length) return;\n\t\tconst observer = new IntersectionObserver(callback, {\n\t\t\troot: unrefElement(root),\n\t\t\trootMargin,\n\t\t\tthreshold\n\t\t});\n\t\ttargets.forEach((el) => el && observer.observe(el));\n\t\tcleanup = () => {\n\t\t\tobserver.disconnect();\n\t\t\tcleanup = noop;\n\t\t};\n\t}, {\n\t\timmediate,\n\t\tflush: \"post\"\n\t}) : noop;\n\tconst stop = () => {\n\t\tcleanup();\n\t\tstopWatch();\n\t\tisActive.value = false;\n\t};\n\ttryOnScopeDispose(stop);\n\treturn {\n\t\tisSupported,\n\t\tisActive,\n\t\tpause() {\n\t\t\tcleanup();\n\t\t\tisActive.value = false;\n\t\t},\n\t\tresume() {\n\t\t\tisActive.value = true;\n\t\t},\n\t\tstop\n\t};\n}\n//#endregion\n//#region useElementVisibility/index.ts\nfunction useElementVisibility(element, options = {}) {\n\tconst { window = defaultWindow, scrollTarget, threshold = 0, rootMargin, once = false, initialValue = false } = options;\n\tconst isVisible = shallowRef(initialValue);\n\tconst observerController = useIntersectionObserver(element, (intersectionObserverEntries) => {\n\t\tlet isIntersecting = isVisible.value;\n\t\tlet latestTime = 0;\n\t\tfor (const entry of intersectionObserverEntries) if (entry.time >= latestTime) {\n\t\t\tlatestTime = entry.time;\n\t\t\tisIntersecting = entry.isIntersecting;\n\t\t}\n\t\tisVisible.value = isIntersecting;\n\t\tif (once) watchOnce(isVisible, () => {\n\t\t\tobserverController.stop();\n\t\t});\n\t}, {\n\t\troot: scrollTarget,\n\t\twindow,\n\t\tthreshold,\n\t\trootMargin\n\t});\n\treturn options.controls ? {\n\t\t...observerController,\n\t\tisVisible\n\t} : isVisible;\n}\n//#endregion\n//#region useEventBus/internal.ts\n/* #__PURE__ */\nconst events = /* @__PURE__ */ new Map();\n//#endregion\n//#region useEventBus/index.ts\n/* @__NO_SIDE_EFFECTS__ */\nfunction useEventBus(key) {\n\tconst scope = getCurrentScope();\n\tfunction on(listener) {\n\t\tvar _scope$cleanups;\n\t\tconst listeners = events.get(key) || /* @__PURE__ */ new Set();\n\t\tlisteners.add(listener);\n\t\tevents.set(key, listeners);\n\t\tconst _off = () => off(listener);\n\t\tscope === null || scope === void 0 || (_scope$cleanups = scope.cleanups) === null || _scope$cleanups === void 0 || _scope$cleanups.push(_off);\n\t\treturn _off;\n\t}\n\tfunction once(listener) {\n\t\tfunction _listener(...args) {\n\t\t\toff(_listener);\n\t\t\tlistener(...args);\n\t\t}\n\t\treturn on(_listener);\n\t}\n\tfunction off(listener) {\n\t\tconst listeners = events.get(key);\n\t\tif (!listeners) return;\n\t\tlisteners.delete(listener);\n\t\tif (!listeners.size) reset();\n\t}\n\tfunction reset() {\n\t\tevents.delete(key);\n\t}\n\tfunction emit(event, payload) {\n\t\tvar _events$get;\n\t\t(_events$get = events.get(key)) === null || _events$get === void 0 || _events$get.forEach((v) => v(event, payload));\n\t}\n\treturn {\n\t\ton,\n\t\tonce,\n\t\toff,\n\t\temit,\n\t\treset\n\t};\n}\n//#endregion\n//#region useEventSource/index.ts\nfunction resolveNestedOptions$1(options) {\n\tif (options === true) return {};\n\treturn options;\n}\n/**\n* Reactive wrapper for EventSource.\n*\n* @see https://vueuse.org/useEventSource\n* @see https://developer.mozilla.org/en-US/docs/Web/API/EventSource/EventSource EventSource\n* @param url\n* @param events\n* @param options\n*/\nfunction useEventSource(url, events = [], options = {}) {\n\tconst event = shallowRef(null);\n\tconst data = shallowRef(null);\n\tconst status = shallowRef(\"CONNECTING\");\n\tconst eventSource = shallowRef(null);\n\tconst error = shallowRef(null);\n\tconst urlRef = toRef(url);\n\tconst lastEventId = shallowRef(null);\n\tlet explicitlyClosed = false;\n\tlet retried = 0;\n\tconst { withCredentials = false, immediate = true, autoConnect = true, autoReconnect, serializer = { read: (v) => v } } = options;\n\tconst close = () => {\n\t\tif (isClient && eventSource.value) {\n\t\t\teventSource.value.close();\n\t\t\teventSource.value = null;\n\t\t\tstatus.value = \"CLOSED\";\n\t\t\texplicitlyClosed = true;\n\t\t}\n\t};\n\tconst _init = () => {\n\t\tif (explicitlyClosed || typeof urlRef.value === \"undefined\") return;\n\t\tconst es = new EventSource(urlRef.value, { withCredentials });\n\t\tstatus.value = \"CONNECTING\";\n\t\teventSource.value = es;\n\t\tes.onopen = () => {\n\t\t\tstatus.value = \"OPEN\";\n\t\t\terror.value = null;\n\t\t};\n\t\tes.onerror = (e) => {\n\t\t\tstatus.value = \"CLOSED\";\n\t\t\terror.value = e;\n\t\t\tif (es.readyState === 2 && !explicitlyClosed && autoReconnect) {\n\t\t\t\tes.close();\n\t\t\t\tconst { retries = -1, delay = 1e3, onFailed } = resolveNestedOptions$1(autoReconnect);\n\t\t\t\tretried += 1;\n\t\t\t\tif (typeof retries === \"number\" && (retries < 0 || retried < retries)) setTimeout(_init, delay);\n\t\t\t\telse if (typeof retries === \"function\" && retries()) setTimeout(_init, delay);\n\t\t\t\telse onFailed === null || onFailed === void 0 || onFailed();\n\t\t\t}\n\t\t};\n\t\tes.onmessage = (e) => {\n\t\t\tvar _serializer$read;\n\t\t\tevent.value = null;\n\t\t\tdata.value = (_serializer$read = serializer.read(e.data)) !== null && _serializer$read !== void 0 ? _serializer$read : null;\n\t\t\tlastEventId.value = e.lastEventId;\n\t\t};\n\t\tfor (const event_name of events) useEventListener(es, event_name, (e) => {\n\t\t\tvar _serializer$read2, _e$lastEventId;\n\t\t\tevent.value = event_name;\n\t\t\tdata.value = (_serializer$read2 = serializer.read(e.data)) !== null && _serializer$read2 !== void 0 ? _serializer$read2 : null;\n\t\t\tlastEventId.value = (_e$lastEventId = e.lastEventId) !== null && _e$lastEventId !== void 0 ? _e$lastEventId : null;\n\t\t}, { passive: true });\n\t};\n\tconst open = () => {\n\t\tif (!isClient) return;\n\t\tclose();\n\t\texplicitlyClosed = false;\n\t\tretried = 0;\n\t\t_init();\n\t};\n\tif (immediate) open();\n\tif (autoConnect) watch(urlRef, open);\n\ttryOnScopeDispose(close);\n\treturn {\n\t\teventSource,\n\t\tevent,\n\t\tdata,\n\t\tstatus,\n\t\terror,\n\t\topen,\n\t\tclose,\n\t\tlastEventId\n\t};\n}\n//#endregion\n//#region useEyeDropper/index.ts\n/**\n* Reactive [EyeDropper API](https://developer.mozilla.org/en-US/docs/Web/API/EyeDropper_API)\n*\n* @see https://vueuse.org/useEyeDropper\n*\n* @__NO_SIDE_EFFECTS__\n*/\nfunction useEyeDropper(options = {}) {\n\tconst { initialValue = \"\" } = options;\n\tconst isSupported = /* @__PURE__ */ useSupported(() => typeof window !== \"undefined\" && \"EyeDropper\" in window);\n\tconst sRGBHex = shallowRef(initialValue);\n\tasync function open(openOptions) {\n\t\tif (!isSupported.value) return;\n\t\tconst result = await new window.EyeDropper().open(openOptions);\n\t\tsRGBHex.value = result.sRGBHex;\n\t\treturn result;\n\t}\n\treturn {\n\t\tisSupported,\n\t\tsRGBHex,\n\t\topen\n\t};\n}\n//#endregion\n//#region useFavicon/index.ts\nfunction useFavicon(newIcon = null, options = {}) {\n\tconst { baseUrl = \"\", rel = \"icon\", document = defaultDocument } = options;\n\tconst favicon = toRef(newIcon);\n\tconst applyIcon = (icon) => {\n\t\tconst elements = document === null || document === void 0 ? void 0 : document.head.querySelectorAll(`link[rel*=\"${rel}\"]`);\n\t\tif (!elements || elements.length === 0) {\n\t\t\tconst link = document === null || document === void 0 ? void 0 : document.createElement(\"link\");\n\t\t\tif (link) {\n\t\t\t\tlink.rel = rel;\n\t\t\t\tlink.href = `${baseUrl}${icon}`;\n\t\t\t\tlink.type = `image/${icon.split(\".\").pop()}`;\n\t\t\t\tdocument === null || document === void 0 || document.head.append(link);\n\t\t\t}\n\t\t\treturn;\n\t\t}\n\t\telements === null || elements === void 0 || elements.forEach((el) => el.href = `${baseUrl}${icon}`);\n\t};\n\twatch(favicon, (i, o) => {\n\t\tif (typeof i === \"string\" && i !== o) applyIcon(i);\n\t}, { immediate: true });\n\treturn favicon;\n}\n//#endregion\n//#region useFetch/index.ts\nconst payloadMapping = {\n\tjson: \"application/json\",\n\ttext: \"text/plain\"\n};\n/**\n* !!!IMPORTANT!!!\n*\n* If you update the UseFetchOptions interface, be sure to update this object\n* to include the new options\n*/\nfunction isFetchOptions(obj) {\n\treturn obj && containsProp(obj, \"immediate\", \"refetch\", \"initialData\", \"timeout\", \"beforeFetch\", \"afterFetch\", \"onFetchError\", \"fetch\", \"updateDataOnError\");\n}\nconst reAbsolute = /^(?:[a-z][a-z\\d+\\-.]*:)?\\/\\//i;\nfunction isAbsoluteURL(url) {\n\treturn reAbsolute.test(url);\n}\nfunction headersToObject(headers) {\n\tif (typeof Headers !== \"undefined\" && headers instanceof Headers) return Object.fromEntries(headers.entries());\n\treturn headers;\n}\nfunction combineCallbacks(combination, ...callbacks) {\n\tif (combination === \"overwrite\") return async (ctx) => {\n\t\tlet callback;\n\t\tfor (let i = callbacks.length - 1; i >= 0; i--) if (callbacks[i] != null) {\n\t\t\tcallback = callbacks[i];\n\t\t\tbreak;\n\t\t}\n\t\tif (callback) return {\n\t\t\t...ctx,\n\t\t\t...await callback(ctx)\n\t\t};\n\t\treturn ctx;\n\t};\n\telse return async (ctx) => {\n\t\tfor (const callback of callbacks) if (callback) ctx = {\n\t\t\t...ctx,\n\t\t\t...await callback(ctx)\n\t\t};\n\t\treturn ctx;\n\t};\n}\nfunction createFetch(config = {}) {\n\tconst _combination = config.combination || \"chain\";\n\tconst _options = config.options || {};\n\tconst _fetchOptions = config.fetchOptions || {};\n\tfunction useFactoryFetch(url, ...args) {\n\t\tconst computedUrl = computed(() => {\n\t\t\tconst baseUrl = toValue(config.baseUrl);\n\t\t\tconst targetUrl = toValue(url);\n\t\t\treturn baseUrl && !isAbsoluteURL(targetUrl) ? joinPaths(baseUrl, targetUrl) : targetUrl;\n\t\t});\n\t\tlet options = _options;\n\t\tlet fetchOptions = _fetchOptions;\n\t\tif (args.length > 0) if (isFetchOptions(args[0])) options = {\n\t\t\t...options,\n\t\t\t...args[0],\n\t\t\tbeforeFetch: combineCallbacks(_combination, _options.beforeFetch, args[0].beforeFetch),\n\t\t\tafterFetch: combineCallbacks(_combination, _options.afterFetch, args[0].afterFetch),\n\t\t\tonFetchError: combineCallbacks(_combination, _options.onFetchError, args[0].onFetchError)\n\t\t};\n\t\telse fetchOptions = {\n\t\t\t...fetchOptions,\n\t\t\t...args[0],\n\t\t\theaders: {\n\t\t\t\t...headersToObject(fetchOptions.headers) || {},\n\t\t\t\t...headersToObject(args[0].headers) || {}\n\t\t\t}\n\t\t};\n\t\tif (args.length > 1 && isFetchOptions(args[1])) options = {\n\t\t\t...options,\n\t\t\t...args[1],\n\t\t\tbeforeFetch: combineCallbacks(_combination, _options.beforeFetch, args[1].beforeFetch),\n\t\t\tafterFetch: combineCallbacks(_combination, _options.afterFetch, args[1].afterFetch),\n\t\t\tonFetchError: combineCallbacks(_combination, _options.onFetchError, args[1].onFetchError)\n\t\t};\n\t\treturn useFetch(computedUrl, fetchOptions, options);\n\t}\n\treturn useFactoryFetch;\n}\nfunction useFetch(url, ...args) {\n\tvar _defaultWindow$fetch, _globalThis;\n\tconst supportsAbort = typeof AbortController === \"function\";\n\tlet fetchOptions = {};\n\tlet options = {\n\t\timmediate: true,\n\t\trefetch: false,\n\t\ttimeout: 0,\n\t\tupdateDataOnError: false\n\t};\n\tconst config = {\n\t\tmethod: \"GET\",\n\t\ttype: \"text\",\n\t\tpayload: void 0\n\t};\n\tif (args.length > 0) if (isFetchOptions(args[0])) options = {\n\t\t...options,\n\t\t...args[0]\n\t};\n\telse fetchOptions = args[0];\n\tif (args.length > 1) {\n\t\tif (isFetchOptions(args[1])) options = {\n\t\t\t...options,\n\t\t\t...args[1]\n\t\t};\n\t}\n\tconst { fetch = (_defaultWindow$fetch = defaultWindow === null || defaultWindow === void 0 ? void 0 : defaultWindow.fetch) !== null && _defaultWindow$fetch !== void 0 ? _defaultWindow$fetch : (_globalThis = globalThis) === null || _globalThis === void 0 ? void 0 : _globalThis.fetch, initialData, timeout } = options;\n\tconst responseEvent = createEventHook();\n\tconst errorEvent = createEventHook();\n\tconst finallyEvent = createEventHook();\n\tconst isFinished = shallowRef(false);\n\tconst isFetching = shallowRef(false);\n\tconst aborted = shallowRef(false);\n\tconst statusCode = shallowRef(null);\n\tconst response = shallowRef(null);\n\tconst error = shallowRef(null);\n\tconst data = shallowRef(initialData || null);\n\tconst canAbort = computed(() => supportsAbort && isFetching.value);\n\tlet controller;\n\tlet timer;\n\tconst abort = (reason) => {\n\t\tif (supportsAbort) {\n\t\t\tcontroller === null || controller === void 0 || controller.abort(reason);\n\t\t\tcontroller = new AbortController();\n\t\t\tcontroller.signal.onabort = () => aborted.value = true;\n\t\t\tfetchOptions = {\n\t\t\t\t...fetchOptions,\n\t\t\t\tsignal: controller.signal\n\t\t\t};\n\t\t}\n\t};\n\tconst loading = (isLoading) => {\n\t\tisFetching.value = isLoading;\n\t\tisFinished.value = !isLoading;\n\t};\n\tif (timeout) timer = useTimeoutFn(abort, timeout, { immediate: false });\n\tlet executeCounter = 0;\n\tconst execute = async (throwOnFailed = false) => {\n\t\tvar _context$options;\n\t\tabort();\n\t\tloading(true);\n\t\terror.value = null;\n\t\tstatusCode.value = null;\n\t\taborted.value = false;\n\t\texecuteCounter += 1;\n\t\tconst currentExecuteCounter = executeCounter;\n\t\tconst defaultFetchOptions = {\n\t\t\tmethod: config.method,\n\t\t\theaders: {}\n\t\t};\n\t\tconst payload = toValue(config.payload);\n\t\tif (payload) {\n\t\t\tvar _payloadMapping$confi;\n\t\t\tconst headers = headersToObject(defaultFetchOptions.headers);\n\t\t\tconst proto = Object.getPrototypeOf(payload);\n\t\t\tif (!config.payloadType && payload && (proto === Object.prototype || Array.isArray(proto)) && !(payload instanceof FormData)) config.payloadType = \"json\";\n\t\t\tif (config.payloadType) headers[\"Content-Type\"] = (_payloadMapping$confi = payloadMapping[config.payloadType]) !== null && _payloadMapping$confi !== void 0 ? _payloadMapping$confi : config.payloadType;\n\t\t\tdefaultFetchOptions.body = config.payloadType === \"json\" ? JSON.stringify(payload) : payload;\n\t\t}\n\t\tlet isCanceled = false;\n\t\tconst context = {\n\t\t\turl: toValue(url),\n\t\t\toptions: {\n\t\t\t\t...defaultFetchOptions,\n\t\t\t\t...fetchOptions\n\t\t\t},\n\t\t\tcancel: () => {\n\t\t\t\tisCanceled = true;\n\t\t\t}\n\t\t};\n\t\tif (options.beforeFetch) Object.assign(context, await options.beforeFetch(context));\n\t\tif (isCanceled || !fetch) {\n\t\t\tloading(false);\n\t\t\treturn Promise.resolve(null);\n\t\t}\n\t\tlet responseData = null;\n\t\tif (timer) timer.start();\n\t\treturn fetch(context.url, {\n\t\t\t...defaultFetchOptions,\n\t\t\t...context.options,\n\t\t\theaders: {\n\t\t\t\t...headersToObject(defaultFetchOptions.headers),\n\t\t\t\t...headersToObject((_context$options = context.options) === null || _context$options === void 0 ? void 0 : _context$options.headers)\n\t\t\t}\n\t\t}).then(async (fetchResponse) => {\n\t\t\tresponse.value = fetchResponse;\n\t\t\tstatusCode.value = fetchResponse.status;\n\t\t\tresponseData = await fetchResponse.clone()[config.type]();\n\t\t\tif (!fetchResponse.ok) {\n\t\t\t\tdata.value = initialData || null;\n\t\t\t\tthrow new Error(fetchResponse.statusText);\n\t\t\t}\n\t\t\tif (options.afterFetch) ({data: responseData} = await options.afterFetch({\n\t\t\t\tdata: responseData,\n\t\t\t\tresponse: fetchResponse,\n\t\t\t\tcontext,\n\t\t\t\texecute\n\t\t\t}));\n\t\t\tdata.value = responseData;\n\t\t\tresponseEvent.trigger(fetchResponse);\n\t\t\treturn fetchResponse;\n\t\t}).catch(async (fetchError) => {\n\t\t\tlet errorData = fetchError.message || fetchError.name;\n\t\t\tif (options.onFetchError) ({error: errorData, data: responseData} = await options.onFetchError({\n\t\t\t\tdata: responseData,\n\t\t\t\terror: fetchError,\n\t\t\t\tresponse: response.value,\n\t\t\t\tcontext,\n\t\t\t\texecute\n\t\t\t}));\n\t\t\terror.value = errorData;\n\t\t\tif (options.updateDataOnError) data.value = responseData;\n\t\t\terrorEvent.trigger(fetchError);\n\t\t\tif (throwOnFailed) throw fetchError;\n\t\t\treturn null;\n\t\t}).finally(() => {\n\t\t\tif (currentExecuteCounter === executeCounter) loading(false);\n\t\t\tif (timer) timer.stop();\n\t\t\tfinallyEvent.trigger(null);\n\t\t});\n\t};\n\tconst refetch = toRef(options.refetch);\n\twatch([refetch, toRef(url)], ([refetch]) => refetch && execute(), { deep: true });\n\tconst shell = {\n\t\tisFinished: shallowReadonly(isFinished),\n\t\tisFetching: shallowReadonly(isFetching),\n\t\tstatusCode,\n\t\tresponse,\n\t\terror,\n\t\tdata,\n\t\tcanAbort,\n\t\taborted,\n\t\tabort,\n\t\texecute,\n\t\tonFetchResponse: responseEvent.on,\n\t\tonFetchError: errorEvent.on,\n\t\tonFetchFinally: finallyEvent.on,\n\t\tget: setMethod(\"GET\"),\n\t\tput: setMethod(\"PUT\"),\n\t\tpost: setMethod(\"POST\"),\n\t\tdelete: setMethod(\"DELETE\"),\n\t\tpatch: setMethod(\"PATCH\"),\n\t\thead: setMethod(\"HEAD\"),\n\t\toptions: setMethod(\"OPTIONS\"),\n\t\tjson: setType(\"json\"),\n\t\ttext: setType(\"text\"),\n\t\tblob: setType(\"blob\"),\n\t\tarrayBuffer: setType(\"arrayBuffer\"),\n\t\tformData: setType(\"formData\")\n\t};\n\tfunction setMethod(method) {\n\t\treturn (payload, payloadType) => {\n\t\t\tif (!isFetching.value) {\n\t\t\t\tconfig.method = method;\n\t\t\t\tconfig.payload = payload;\n\t\t\t\tconfig.payloadType = payloadType;\n\t\t\t\tif (isRef(config.payload)) watch([refetch, toRef(config.payload)], ([refetch]) => refetch && execute(), { deep: true });\n\t\t\t\treturn {\n\t\t\t\t\t...shell,\n\t\t\t\t\tthen(onFulfilled, onRejected) {\n\t\t\t\t\t\treturn waitUntilFinished().then(onFulfilled, onRejected);\n\t\t\t\t\t}\n\t\t\t\t};\n\t\t\t}\n\t\t};\n\t}\n\tfunction waitUntilFinished() {\n\t\treturn new Promise((resolve, reject) => {\n\t\t\tuntil(isFinished).toBe(true).then(() => resolve(shell)).catch(reject);\n\t\t});\n\t}\n\tfunction setType(type) {\n\t\treturn () => {\n\t\t\tif (!isFetching.value) {\n\t\t\t\tconfig.type = type;\n\t\t\t\treturn {\n\t\t\t\t\t...shell,\n\t\t\t\t\tthen(onFulfilled, onRejected) {\n\t\t\t\t\t\treturn waitUntilFinished().then(onFulfilled, onRejected);\n\t\t\t\t\t}\n\t\t\t\t};\n\t\t\t}\n\t\t};\n\t}\n\tif (options.immediate) Promise.resolve().then(() => execute());\n\treturn {\n\t\t...shell,\n\t\tthen(onFulfilled, onRejected) {\n\t\t\treturn waitUntilFinished().then(onFulfilled, onRejected);\n\t\t}\n\t};\n}\nfunction joinPaths(start, end) {\n\tif (!start.endsWith(\"/\") && !end.startsWith(\"/\")) return `${start}/${end}`;\n\tif (start.endsWith(\"/\") && end.startsWith(\"/\")) return `${start.slice(0, -1)}${end}`;\n\treturn `${start}${end}`;\n}\n//#endregion\n//#region useFileDialog/index.ts\nconst DEFAULT_OPTIONS = {\n\tmultiple: true,\n\taccept: \"*\",\n\treset: false,\n\tdirectory: false\n};\nfunction prepareInitialFiles(files) {\n\tif (!files) return null;\n\tif (files instanceof FileList) return files;\n\tconst dt = new DataTransfer();\n\tfor (const file of files) dt.items.add(file);\n\treturn dt.files;\n}\n/**\n* Open file dialog with ease.\n*\n* @see https://vueuse.org/useFileDialog\n* @param options\n*/\nfunction useFileDialog(options = {}) {\n\tconst { document = defaultDocument } = options;\n\tconst files = ref(prepareInitialFiles(options.initialFiles));\n\tconst { on: onChange, trigger: changeTrigger } = createEventHook();\n\tconst { on: onCancel, trigger: cancelTrigger } = createEventHook();\n\tconst inputRef = computed(() => {\n\t\tvar _unrefElement;\n\t\tconst input = (_unrefElement = unrefElement(options.input)) !== null && _unrefElement !== void 0 ? _unrefElement : document ? document.createElement(\"input\") : void 0;\n\t\tif (input) {\n\t\t\tinput.type = \"file\";\n\t\t\tinput.onchange = (event) => {\n\t\t\t\tfiles.value = event.target.files;\n\t\t\t\tchangeTrigger(files.value);\n\t\t\t};\n\t\t\tinput.oncancel = () => {\n\t\t\t\tcancelTrigger();\n\t\t\t};\n\t\t}\n\t\treturn input;\n\t});\n\tconst reset = () => {\n\t\tfiles.value = null;\n\t\tif (inputRef.value && inputRef.value.value) {\n\t\t\tinputRef.value.value = \"\";\n\t\t\tchangeTrigger(null);\n\t\t}\n\t};\n\tconst applyOptions = (options) => {\n\t\tconst el = inputRef.value;\n\t\tif (!el) return;\n\t\tel.multiple = toValue(options.multiple);\n\t\tel.accept = toValue(options.accept);\n\t\tel.webkitdirectory = toValue(options.directory);\n\t\tif (hasOwn(options, \"capture\")) el.capture = toValue(options.capture);\n\t};\n\tconst open = (localOptions) => {\n\t\tconst el = inputRef.value;\n\t\tif (!el) return;\n\t\tconst mergedOptions = {\n\t\t\t...DEFAULT_OPTIONS,\n\t\t\t...options,\n\t\t\t...localOptions\n\t\t};\n\t\tapplyOptions(mergedOptions);\n\t\tif (toValue(mergedOptions.reset)) reset();\n\t\tel.click();\n\t};\n\twatchEffect(() => {\n\t\tapplyOptions(options);\n\t});\n\treturn {\n\t\tfiles: readonly(files),\n\t\topen,\n\t\treset,\n\t\tonCancel,\n\t\tonChange\n\t};\n}\n//#endregion\n//#region useFileSystemAccess/index.ts\nfunction useFileSystemAccess(options = {}) {\n\tconst { window: _window = defaultWindow, dataType = \"Text\" } = options;\n\tconst window = _window;\n\tconst isSupported = /* @__PURE__ */ useSupported(() => window && \"showSaveFilePicker\" in window && \"showOpenFilePicker\" in window);\n\tconst fileHandle = shallowRef();\n\tconst data = shallowRef();\n\tconst file = shallowRef();\n\tconst fileName = computed(() => {\n\t\tvar _file$value$name, _file$value;\n\t\treturn (_file$value$name = (_file$value = file.value) === null || _file$value === void 0 ? void 0 : _file$value.name) !== null && _file$value$name !== void 0 ? _file$value$name : \"\";\n\t});\n\tconst fileMIME = computed(() => {\n\t\tvar _file$value$type, _file$value2;\n\t\treturn (_file$value$type = (_file$value2 = file.value) === null || _file$value2 === void 0 ? void 0 : _file$value2.type) !== null && _file$value$type !== void 0 ? _file$value$type : \"\";\n\t});\n\tconst fileSize = computed(() => {\n\t\tvar _file$value$size, _file$value3;\n\t\treturn (_file$value$size = (_file$value3 = file.value) === null || _file$value3 === void 0 ? void 0 : _file$value3.size) !== null && _file$value$size !== void 0 ? _file$value$size : 0;\n\t});\n\tconst fileLastModified = computed(() => {\n\t\tvar _file$value$lastModif, _file$value4;\n\t\treturn (_file$value$lastModif = (_file$value4 = file.value) === null || _file$value4 === void 0 ? void 0 : _file$value4.lastModified) !== null && _file$value$lastModif !== void 0 ? _file$value$lastModif : 0;\n\t});\n\tasync function open(_options = {}) {\n\t\tif (!isSupported.value) return;\n\t\tconst [handle] = await window.showOpenFilePicker({\n\t\t\t...toValue(options),\n\t\t\t..._options\n\t\t});\n\t\tfileHandle.value = handle;\n\t\tawait updateData();\n\t}\n\tasync function create(_options = {}) {\n\t\tif (!isSupported.value) return;\n\t\tfileHandle.value = await window.showSaveFilePicker({\n\t\t\t...options,\n\t\t\t..._options\n\t\t});\n\t\tdata.value = void 0;\n\t\tawait updateData();\n\t}\n\tasync function save(_options = {}) {\n\t\tif (!isSupported.value) return;\n\t\tif (!fileHandle.value) return saveAs(_options);\n\t\tif (data.value) {\n\t\t\tconst writableStream = await fileHandle.value.createWritable();\n\t\t\tawait writableStream.write(data.value);\n\t\t\tawait writableStream.close();\n\t\t}\n\t\tawait updateFile();\n\t}\n\tasync function saveAs(_options = {}) {\n\t\tif (!isSupported.value) return;\n\t\tfileHandle.value = await window.showSaveFilePicker({\n\t\t\t...options,\n\t\t\t..._options\n\t\t});\n\t\tif (data.value) {\n\t\t\tconst writableStream = await fileHandle.value.createWritable();\n\t\t\tawait writableStream.write(data.value);\n\t\t\tawait writableStream.close();\n\t\t}\n\t\tawait updateFile();\n\t}\n\tasync function updateFile() {\n\t\tvar _fileHandle$value;\n\t\tfile.value = await ((_fileHandle$value = fileHandle.value) === null || _fileHandle$value === void 0 ? void 0 : _fileHandle$value.getFile());\n\t}\n\tasync function updateData() {\n\t\tvar _file$value5, _file$value6;\n\t\tawait updateFile();\n\t\tconst type = toValue(dataType);\n\t\tif (type === \"Text\") data.value = await ((_file$value5 = file.value) === null || _file$value5 === void 0 ? void 0 : _file$value5.text());\n\t\telse if (type === \"ArrayBuffer\") data.value = await ((_file$value6 = file.value) === null || _file$value6 === void 0 ? void 0 : _file$value6.arrayBuffer());\n\t\telse if (type === \"Blob\") data.value = file.value;\n\t}\n\twatch(() => toValue(dataType), updateData);\n\treturn {\n\t\tisSupported,\n\t\tdata,\n\t\tfile,\n\t\tfileName,\n\t\tfileMIME,\n\t\tfileSize,\n\t\tfileLastModified,\n\t\topen,\n\t\tcreate,\n\t\tsave,\n\t\tsaveAs,\n\t\tupdateData\n\t};\n}\n//#endregion\n//#region useFocus/index.ts\n/**\n* Track or set the focus state of a DOM element.\n*\n* @see https://vueuse.org/useFocus\n* @param target The target element for the focus and blur events.\n* @param options\n*/\nfunction useFocus(target, options = {}) {\n\tconst { initialValue = false, focusVisible = false, preventScroll = false } = options;\n\tconst innerFocused = shallowRef(false);\n\tconst targetElement = computed(() => unrefElement(target));\n\tconst listenerOptions = { passive: true };\n\tuseEventListener(targetElement, \"focus\", (event) => {\n\t\tvar _matches, _ref;\n\t\tif (!focusVisible || ((_matches = (_ref = event.target).matches) === null || _matches === void 0 ? void 0 : _matches.call(_ref, \":focus-visible\"))) innerFocused.value = true;\n\t}, listenerOptions);\n\tuseEventListener(targetElement, \"blur\", () => innerFocused.value = false, listenerOptions);\n\tconst focused = computed({\n\t\tget: () => innerFocused.value,\n\t\tset(value) {\n\t\t\tvar _targetElement$value, _targetElement$value2;\n\t\t\tif (!value && innerFocused.value) (_targetElement$value = targetElement.value) === null || _targetElement$value === void 0 || _targetElement$value.blur();\n\t\t\telse if (value && !innerFocused.value) (_targetElement$value2 = targetElement.value) === null || _targetElement$value2 === void 0 || _targetElement$value2.focus({ preventScroll });\n\t\t}\n\t});\n\twatch(targetElement, () => {\n\t\tfocused.value = initialValue;\n\t}, {\n\t\timmediate: true,\n\t\tflush: \"post\"\n\t});\n\treturn { focused };\n}\n//#endregion\n//#region useFocusWithin/index.ts\nconst EVENT_FOCUS_IN = \"focusin\";\nconst EVENT_FOCUS_OUT = \"focusout\";\nconst PSEUDO_CLASS_FOCUS_WITHIN = \":focus-within\";\n/**\n* Track if focus is contained within the target element\n*\n* @see https://vueuse.org/useFocusWithin\n* @param target The target element to track\n* @param options Focus within options\n*/\nfunction useFocusWithin(target, options = {}) {\n\tconst { window = defaultWindow } = options;\n\tconst targetElement = computed(() => unrefElement(target));\n\tconst _focused = shallowRef(false);\n\tconst focused = computed(() => _focused.value);\n\tconst activeElement = useActiveElement(options);\n\tif (!window || !activeElement.value) return { focused };\n\tconst listenerOptions = { passive: true };\n\tuseEventListener(targetElement, EVENT_FOCUS_IN, () => _focused.value = true, listenerOptions);\n\tuseEventListener(targetElement, EVENT_FOCUS_OUT, () => {\n\t\tvar _targetElement$value$, _targetElement$value, _targetElement$value$2;\n\t\treturn _focused.value = (_targetElement$value$ = (_targetElement$value = targetElement.value) === null || _targetElement$value === void 0 || (_targetElement$value$2 = _targetElement$value.matches) === null || _targetElement$value$2 === void 0 ? void 0 : _targetElement$value$2.call(_targetElement$value, PSEUDO_CLASS_FOCUS_WITHIN)) !== null && _targetElement$value$ !== void 0 ? _targetElement$value$ : false;\n\t}, listenerOptions);\n\treturn { focused };\n}\n//#endregion\n//#region useFps/index.ts\n/* @__NO_SIDE_EFFECTS__ */\nfunction useFps(options) {\n\tvar _options$every;\n\tconst fps = shallowRef(0);\n\tif (typeof performance === \"undefined\") return fps;\n\tconst every = (_options$every = options === null || options === void 0 ? void 0 : options.every) !== null && _options$every !== void 0 ? _options$every : 10;\n\tlet last = performance.now();\n\tlet ticks = 0;\n\tuseRafFn(() => {\n\t\tticks += 1;\n\t\tif (ticks >= every) {\n\t\t\tconst now = performance.now();\n\t\t\tconst diff = now - last;\n\t\t\tfps.value = Math.round(1e3 / (diff / ticks));\n\t\t\tlast = now;\n\t\t\tticks = 0;\n\t\t}\n\t});\n\treturn fps;\n}\n//#endregion\n//#region useFullscreen/index.ts\nconst eventHandlers = [\n\t\"fullscreenchange\",\n\t\"webkitfullscreenchange\",\n\t\"webkitendfullscreen\",\n\t\"mozfullscreenchange\",\n\t\"MSFullscreenChange\"\n];\n/**\n* Reactive Fullscreen API.\n*\n* @see https://vueuse.org/useFullscreen\n* @param target\n* @param options\n*/\nfunction useFullscreen(target, options = {}) {\n\tconst { document = defaultDocument, autoExit = false } = options;\n\tconst targetRef = computed(() => {\n\t\tvar _unrefElement;\n\t\treturn (_unrefElement = unrefElement(target)) !== null && _unrefElement !== void 0 ? _unrefElement : document === null || document === void 0 ? void 0 : document.documentElement;\n\t});\n\tconst isFullscreen = shallowRef(false);\n\tconst requestMethod = computed(() => {\n\t\treturn [\n\t\t\t\"requestFullscreen\",\n\t\t\t\"webkitRequestFullscreen\",\n\t\t\t\"webkitEnterFullscreen\",\n\t\t\t\"webkitEnterFullScreen\",\n\t\t\t\"webkitRequestFullScreen\",\n\t\t\t\"mozRequestFullScreen\",\n\t\t\t\"msRequestFullscreen\"\n\t\t].find((m) => document && m in document || targetRef.value && m in targetRef.value);\n\t});\n\tconst exitMethod = computed(() => {\n\t\treturn [\n\t\t\t\"exitFullscreen\",\n\t\t\t\"webkitExitFullscreen\",\n\t\t\t\"webkitExitFullScreen\",\n\t\t\t\"webkitCancelFullScreen\",\n\t\t\t\"mozCancelFullScreen\",\n\t\t\t\"msExitFullscreen\"\n\t\t].find((m) => document && m in document || targetRef.value && m in targetRef.value);\n\t});\n\tconst fullscreenEnabled = computed(() => {\n\t\treturn [\n\t\t\t\"fullScreen\",\n\t\t\t\"webkitIsFullScreen\",\n\t\t\t\"webkitDisplayingFullscreen\",\n\t\t\t\"mozFullScreen\",\n\t\t\t\"msFullscreenElement\"\n\t\t].find((m) => document && m in document || targetRef.value && m in targetRef.value);\n\t});\n\tconst fullscreenElementMethod = [\n\t\t\"fullscreenElement\",\n\t\t\"webkitFullscreenElement\",\n\t\t\"mozFullScreenElement\",\n\t\t\"msFullscreenElement\"\n\t].find((m) => document && m in document);\n\tconst isSupported = /* @__PURE__ */ useSupported(() => targetRef.value && document && requestMethod.value !== void 0 && exitMethod.value !== void 0 && fullscreenEnabled.value !== void 0);\n\tconst isCurrentElementFullScreen = () => {\n\t\tif (fullscreenElementMethod) return (document === null || document === void 0 ? void 0 : document[fullscreenElementMethod]) === targetRef.value;\n\t\treturn false;\n\t};\n\tconst isElementFullScreen = () => {\n\t\tif (fullscreenEnabled.value) if (document && document[fullscreenEnabled.value] != null) return document[fullscreenEnabled.value];\n\t\telse {\n\t\t\tconst target = targetRef.value;\n\t\t\tif ((target === null || target === void 0 ? void 0 : target[fullscreenEnabled.value]) != null) return Boolean(target[fullscreenEnabled.value]);\n\t\t}\n\t\treturn false;\n\t};\n\tasync function exit() {\n\t\tif (!isSupported.value || !isFullscreen.value) return;\n\t\tif (exitMethod.value) if ((document === null || document === void 0 ? void 0 : document[exitMethod.value]) != null) await document[exitMethod.value]();\n\t\telse {\n\t\t\tconst target = targetRef.value;\n\t\t\tif ((target === null || target === void 0 ? void 0 : target[exitMethod.value]) != null) await target[exitMethod.value]();\n\t\t}\n\t\tisFullscreen.value = false;\n\t}\n\tasync function enter() {\n\t\tif (!isSupported.value || isFullscreen.value) return;\n\t\tif (isElementFullScreen()) await exit();\n\t\tconst target = targetRef.value;\n\t\tif (requestMethod.value && (target === null || target === void 0 ? void 0 : target[requestMethod.value]) != null) {\n\t\t\tawait target[requestMethod.value]();\n\t\t\tisFullscreen.value = true;\n\t\t}\n\t}\n\tasync function toggle() {\n\t\tawait (isFullscreen.value ? exit() : enter());\n\t}\n\tconst handlerCallback = () => {\n\t\tconst isElementFullScreenValue = isElementFullScreen();\n\t\tif (!isElementFullScreenValue || isElementFullScreenValue && isCurrentElementFullScreen()) isFullscreen.value = isElementFullScreenValue;\n\t};\n\tconst listenerOptions = {\n\t\tcapture: false,\n\t\tpassive: true\n\t};\n\tuseEventListener(document, eventHandlers, handlerCallback, listenerOptions);\n\tuseEventListener(() => unrefElement(targetRef), eventHandlers, handlerCallback, listenerOptions);\n\ttryOnMounted(handlerCallback, false);\n\tif (autoExit) tryOnScopeDispose(exit);\n\treturn {\n\t\tisSupported,\n\t\tisFullscreen,\n\t\tenter,\n\t\texit,\n\t\ttoggle\n\t};\n}\n//#endregion\n//#region useGamepad/index.ts\n/**\n* Maps a standard standard gamepad to an Xbox 360 Controller.\n*/\nfunction mapGamepadToXbox360Controller(gamepad) {\n\treturn computed(() => {\n\t\tif (gamepad.value) return {\n\t\t\tbuttons: {\n\t\t\t\ta: gamepad.value.buttons[0],\n\t\t\t\tb: gamepad.value.buttons[1],\n\t\t\t\tx: gamepad.value.buttons[2],\n\t\t\t\ty: gamepad.value.buttons[3]\n\t\t\t},\n\t\t\tbumper: {\n\t\t\t\tleft: gamepad.value.buttons[4],\n\t\t\t\tright: gamepad.value.buttons[5]\n\t\t\t},\n\t\t\ttriggers: {\n\t\t\t\tleft: gamepad.value.buttons[6],\n\t\t\t\tright: gamepad.value.buttons[7]\n\t\t\t},\n\t\t\tstick: {\n\t\t\t\tleft: {\n\t\t\t\t\thorizontal: gamepad.value.axes[0],\n\t\t\t\t\tvertical: gamepad.value.axes[1],\n\t\t\t\t\tbutton: gamepad.value.buttons[10]\n\t\t\t\t},\n\t\t\t\tright: {\n\t\t\t\t\thorizontal: gamepad.value.axes[2],\n\t\t\t\t\tvertical: gamepad.value.axes[3],\n\t\t\t\t\tbutton: gamepad.value.buttons[11]\n\t\t\t\t}\n\t\t\t},\n\t\t\tdpad: {\n\t\t\t\tup: gamepad.value.buttons[12],\n\t\t\t\tdown: gamepad.value.buttons[13],\n\t\t\t\tleft: gamepad.value.buttons[14],\n\t\t\t\tright: gamepad.value.buttons[15]\n\t\t\t},\n\t\t\tback: gamepad.value.buttons[8],\n\t\t\tstart: gamepad.value.buttons[9]\n\t\t};\n\t\treturn null;\n\t});\n}\n/* @__NO_SIDE_EFFECTS__ */\nfunction useGamepad(options = {}) {\n\tconst { navigator = defaultNavigator } = options;\n\tconst isSupported = /* @__PURE__ */ useSupported(() => navigator && \"getGamepads\" in navigator);\n\tconst gamepads = ref([]);\n\tconst onConnectedHook = createEventHook();\n\tconst onDisconnectedHook = createEventHook();\n\tconst stateFromGamepad = (gamepad) => {\n\t\tconst hapticActuators = [];\n\t\tconst vibrationActuator = \"vibrationActuator\" in gamepad ? gamepad.vibrationActuator : null;\n\t\tif (vibrationActuator) hapticActuators.push(vibrationActuator);\n\t\tif (gamepad.hapticActuators) hapticActuators.push(...gamepad.hapticActuators);\n\t\treturn {\n\t\t\tid: gamepad.id,\n\t\t\tindex: gamepad.index,\n\t\t\tconnected: gamepad.connected,\n\t\t\tmapping: gamepad.mapping,\n\t\t\ttimestamp: gamepad.timestamp,\n\t\t\tvibrationActuator: gamepad.vibrationActuator,\n\t\t\thapticActuators,\n\t\t\taxes: gamepad.axes.map((axes) => axes),\n\t\t\tbuttons: gamepad.buttons.map((button) => ({\n\t\t\t\tpressed: button.pressed,\n\t\t\t\ttouched: button.touched,\n\t\t\t\tvalue: button.value\n\t\t\t}))\n\t\t};\n\t};\n\tconst updateGamepadState = () => {\n\t\tconst _gamepads = (navigator === null || navigator === void 0 ? void 0 : navigator.getGamepads()) || [];\n\t\tfor (const gamepad of _gamepads) if (gamepad && gamepads.value[gamepad.index]) gamepads.value[gamepad.index] = stateFromGamepad(gamepad);\n\t};\n\tconst { isActive, pause, resume } = useRafFn(updateGamepadState);\n\tconst onGamepadConnected = (gamepad) => {\n\t\tif (!gamepads.value.some(({ index }) => index === gamepad.index)) {\n\t\t\tgamepads.value.push(stateFromGamepad(gamepad));\n\t\t\tonConnectedHook.trigger(gamepad.index);\n\t\t}\n\t\tresume();\n\t};\n\tconst onGamepadDisconnected = (gamepad) => {\n\t\tgamepads.value = gamepads.value.filter((x) => x.index !== gamepad.index);\n\t\tonDisconnectedHook.trigger(gamepad.index);\n\t};\n\tconst listenerOptions = { passive: true };\n\tuseEventListener(\"gamepadconnected\", (e) => onGamepadConnected(e.gamepad), listenerOptions);\n\tuseEventListener(\"gamepaddisconnected\", (e) => onGamepadDisconnected(e.gamepad), listenerOptions);\n\ttryOnMounted(() => {\n\t\tconst _gamepads = (navigator === null || navigator === void 0 ? void 0 : navigator.getGamepads()) || [];\n\t\tfor (const gamepad of _gamepads) if (gamepad && gamepads.value[gamepad.index]) onGamepadConnected(gamepad);\n\t});\n\tpause();\n\treturn {\n\t\tisSupported,\n\t\tonConnected: onConnectedHook.on,\n\t\tonDisconnected: onDisconnectedHook.on,\n\t\tgamepads,\n\t\tpause,\n\t\tresume,\n\t\tisActive\n\t};\n}\n//#endregion\n//#region useGeolocation/index.ts\n/**\n* Reactive Geolocation API.\n*\n* @see https://vueuse.org/useGeolocation\n* @param options\n*/\nfunction useGeolocation(options = {}) {\n\tconst { enableHighAccuracy = true, maximumAge = 3e4, timeout = 27e3, navigator = defaultNavigator, immediate = true } = options;\n\tconst isSupported = /* @__PURE__ */ useSupported(() => navigator && \"geolocation\" in navigator);\n\tconst locatedAt = shallowRef(null);\n\tconst error = shallowRef(null);\n\tconst coords = shallowRef({\n\t\taccuracy: 0,\n\t\tlatitude: Number.POSITIVE_INFINITY,\n\t\tlongitude: Number.POSITIVE_INFINITY,\n\t\taltitude: null,\n\t\taltitudeAccuracy: null,\n\t\theading: null,\n\t\tspeed: null\n\t});\n\tfunction updatePosition(position) {\n\t\tlocatedAt.value = position.timestamp;\n\t\tcoords.value = position.coords;\n\t\terror.value = null;\n\t}\n\tlet watcher;\n\tfunction resume() {\n\t\tif (isSupported.value) watcher = navigator.geolocation.watchPosition(updatePosition, (err) => error.value = err, {\n\t\t\tenableHighAccuracy,\n\t\t\tmaximumAge,\n\t\t\ttimeout\n\t\t});\n\t}\n\tif (immediate) resume();\n\tfunction pause() {\n\t\tif (watcher && navigator) navigator.geolocation.clearWatch(watcher);\n\t}\n\ttryOnScopeDispose(() => {\n\t\tpause();\n\t});\n\treturn {\n\t\tisSupported,\n\t\tcoords,\n\t\tlocatedAt,\n\t\terror,\n\t\tresume,\n\t\tpause\n\t};\n}\n//#endregion\n//#region useIdle/index.ts\nconst defaultEvents$1 = [\n\t\"mousemove\",\n\t\"mousedown\",\n\t\"resize\",\n\t\"keydown\",\n\t\"touchstart\",\n\t\"wheel\"\n];\nconst oneMinute = 6e4;\n/**\n* Tracks whether the user is being inactive.\n*\n* @see https://vueuse.org/useIdle\n* @param timeout default to 1 minute\n* @param options IdleOptions\n*/\nfunction useIdle(timeout = oneMinute, options = {}) {\n\tconst { initialState = false, listenForVisibilityChange = true, events = defaultEvents$1, window = defaultWindow, eventFilter = throttleFilter(50) } = options;\n\tconst idle = shallowRef(initialState);\n\tconst lastActive = shallowRef(timestamp());\n\tconst isPending = shallowRef(false);\n\tlet timer;\n\tconst reset = () => {\n\t\tidle.value = false;\n\t\tclearTimeout(timer);\n\t\ttimer = setTimeout(() => idle.value = true, timeout);\n\t};\n\tconst onEvent = createFilterWrapper(eventFilter, () => {\n\t\tlastActive.value = timestamp();\n\t\treset();\n\t});\n\tif (window) {\n\t\tconst document = window.document;\n\t\tconst listenerOptions = { passive: true };\n\t\tfor (const event of events) useEventListener(window, event, () => {\n\t\t\tif (!isPending.value) return;\n\t\t\tonEvent();\n\t\t}, listenerOptions);\n\t\tif (listenForVisibilityChange) useEventListener(document, \"visibilitychange\", () => {\n\t\t\tif (document.hidden || !isPending.value) return;\n\t\t\tonEvent();\n\t\t}, listenerOptions);\n\t\tstart();\n\t}\n\tfunction start() {\n\t\tif (isPending.value) return;\n\t\tisPending.value = true;\n\t\tif (!initialState) reset();\n\t}\n\tfunction stop() {\n\t\tidle.value = initialState;\n\t\tclearTimeout(timer);\n\t\tisPending.value = false;\n\t}\n\treturn {\n\t\tidle,\n\t\tlastActive,\n\t\treset,\n\t\tstop,\n\t\tstart,\n\t\tisPending: shallowReadonly(isPending)\n\t};\n}\n//#endregion\n//#region useImage/index.ts\nasync function loadImage(options) {\n\treturn new Promise((resolve, reject) => {\n\t\tconst img = new Image();\n\t\tconst { src, srcset, sizes, class: clazz, loading, crossorigin, referrerPolicy, width, height, decoding, fetchPriority, ismap, usemap } = options;\n\t\timg.src = src;\n\t\tif (srcset != null) img.srcset = srcset;\n\t\tif (sizes != null) img.sizes = sizes;\n\t\tif (clazz != null) img.className = clazz;\n\t\tif (loading != null) img.loading = loading;\n\t\tif (crossorigin != null) img.crossOrigin = crossorigin;\n\t\tif (referrerPolicy != null) img.referrerPolicy = referrerPolicy;\n\t\tif (width != null) img.width = width;\n\t\tif (height != null) img.height = height;\n\t\tif (decoding != null) img.decoding = decoding;\n\t\tif (fetchPriority != null) img.fetchPriority = fetchPriority;\n\t\tif (ismap != null) img.isMap = ismap;\n\t\tif (usemap != null) img.useMap = usemap;\n\t\timg.onload = () => resolve(img);\n\t\timg.onerror = reject;\n\t});\n}\n/**\n* Reactive load an image in the browser, you can wait the result to display it or show a fallback.\n*\n* @see https://vueuse.org/useImage\n* @param options Image attributes, as used in the <img> tag\n* @param asyncStateOptions\n*/\nfunction useImage(options, asyncStateOptions = {}) {\n\tconst state = useAsyncState(() => loadImage(toValue(options)), void 0, {\n\t\tresetOnExecute: true,\n\t\t...asyncStateOptions\n\t});\n\twatch(() => toValue(options), () => state.execute(asyncStateOptions.delay), { deep: true });\n\treturn state;\n}\n//#endregion\n//#region _resolve-element.ts\n/**\n* Resolves an element from a given element, window, or document.\n*\n* @internal\n*/\nfunction resolveElement(el) {\n\tif (typeof Window !== \"undefined\" && el instanceof Window) return el.document.documentElement;\n\tif (typeof Document !== \"undefined\" && el instanceof Document) return el.documentElement;\n\treturn el;\n}\n//#endregion\n//#region useScroll/index.ts\n/**\n* We have to check if the scroll amount is close enough to some threshold in order to\n* more accurately calculate arrivedState. This is because scrollTop/scrollLeft are non-rounded\n* numbers, while scrollHeight/scrollWidth and clientHeight/clientWidth are rounded.\n* https://developer.mozilla.org/en-US/docs/Web/API/Element/scrollHeight#determine_if_an_element_has_been_totally_scrolled\n*/\nconst ARRIVED_STATE_THRESHOLD_PIXELS = 1;\n/**\n* Reactive scroll.\n*\n* @see https://vueuse.org/useScroll\n* @param element\n* @param options\n*/\nfunction useScroll(element, options = {}) {\n\tconst { throttle = 0, idle = 200, onStop = noop, onScroll = noop, offset = {\n\t\tleft: 0,\n\t\tright: 0,\n\t\ttop: 0,\n\t\tbottom: 0\n\t}, observe: _observe = { mutation: false }, eventListenerOptions = {\n\t\tcapture: false,\n\t\tpassive: true\n\t}, behavior = \"auto\", window = defaultWindow, onError = (e) => {\n\t\tconsole.error(e);\n\t} } = options;\n\tconst observe = typeof _observe === \"boolean\" ? { mutation: _observe } : _observe;\n\tconst internalX = shallowRef(0);\n\tconst internalY = shallowRef(0);\n\tconst x = computed({\n\t\tget() {\n\t\t\treturn internalX.value;\n\t\t},\n\t\tset(x) {\n\t\t\tscrollTo(x, void 0);\n\t\t}\n\t});\n\tconst y = computed({\n\t\tget() {\n\t\t\treturn internalY.value;\n\t\t},\n\t\tset(y) {\n\t\t\tscrollTo(void 0, y);\n\t\t}\n\t});\n\tfunction scrollTo(_x, _y) {\n\t\tvar _ref, _toValue, _toValue2, _document;\n\t\tif (!window) return;\n\t\tconst _element = toValue(element);\n\t\tif (!_element) return;\n\t\t(_ref = _element instanceof Document ? window.document.body : _element) === null || _ref === void 0 || _ref.scrollTo({\n\t\t\ttop: (_toValue = toValue(_y)) !== null && _toValue !== void 0 ? _toValue : y.value,\n\t\t\tleft: (_toValue2 = toValue(_x)) !== null && _toValue2 !== void 0 ? _toValue2 : x.value,\n\t\t\tbehavior: toValue(behavior)\n\t\t});\n\t\tconst scrollContainer = (_element === null || _element === void 0 || (_document = _element.document) === null || _document === void 0 ? void 0 : _document.documentElement) || (_element === null || _element === void 0 ? void 0 : _element.documentElement) || _element;\n\t\tif (x != null) internalX.value = scrollContainer.scrollLeft;\n\t\tif (y != null) internalY.value = scrollContainer.scrollTop;\n\t}\n\tconst isScrolling = shallowRef(false);\n\tconst arrivedState = reactive({\n\t\tleft: true,\n\t\tright: false,\n\t\ttop: true,\n\t\tbottom: false\n\t});\n\tconst directions = reactive({\n\t\tleft: false,\n\t\tright: false,\n\t\ttop: false,\n\t\tbottom: false\n\t});\n\tconst onScrollEnd = (e) => {\n\t\tif (!isScrolling.value) return;\n\t\tisScrolling.value = false;\n\t\tdirections.left = false;\n\t\tdirections.right = false;\n\t\tdirections.top = false;\n\t\tdirections.bottom = false;\n\t\tonStop(e);\n\t};\n\tconst onScrollEndDebounced = useDebounceFn(onScrollEnd, throttle + idle);\n\tconst setArrivedState = (target) => {\n\t\tvar _document2;\n\t\tif (!window) return;\n\t\tconst el = (target === null || target === void 0 || (_document2 = target.document) === null || _document2 === void 0 ? void 0 : _document2.documentElement) || (target === null || target === void 0 ? void 0 : target.documentElement) || unrefElement(target);\n\t\tconst { display, flexDirection, direction } = window.getComputedStyle(el);\n\t\tconst directionMultipler = direction === \"rtl\" ? -1 : 1;\n\t\tconst scrollLeft = el.scrollLeft;\n\t\tdirections.left = scrollLeft < internalX.value;\n\t\tdirections.right = scrollLeft > internalX.value;\n\t\tconst left = Math.abs(scrollLeft * directionMultipler) <= (offset.left || 0);\n\t\tconst right = Math.abs(scrollLeft * directionMultipler) + el.clientWidth >= el.scrollWidth - (offset.right || 0) - ARRIVED_STATE_THRESHOLD_PIXELS;\n\t\tif (display === \"flex\" && flexDirection === \"row-reverse\") {\n\t\t\tarrivedState.left = right;\n\t\t\tarrivedState.right = left;\n\t\t} else {\n\t\t\tarrivedState.left = left;\n\t\t\tarrivedState.right = right;\n\t\t}\n\t\tinternalX.value = scrollLeft;\n\t\tlet scrollTop = el.scrollTop;\n\t\tif (target === window.document && !scrollTop) scrollTop = window.document.body.scrollTop;\n\t\tdirections.top = scrollTop < internalY.value;\n\t\tdirections.bottom = scrollTop > internalY.value;\n\t\tconst top = Math.abs(scrollTop) <= (offset.top || 0);\n\t\tconst bottom = Math.abs(scrollTop) + el.clientHeight >= el.scrollHeight - (offset.bottom || 0) - ARRIVED_STATE_THRESHOLD_PIXELS;\n\t\t/**\n\t\t* reverse columns and rows behave exactly the other way around,\n\t\t* bottom is treated as top and top is treated as the negative version of bottom\n\t\t*/\n\t\tif (display === \"flex\" && flexDirection === \"column-reverse\") {\n\t\t\tarrivedState.top = bottom;\n\t\t\tarrivedState.bottom = top;\n\t\t} else {\n\t\t\tarrivedState.top = top;\n\t\t\tarrivedState.bottom = bottom;\n\t\t}\n\t\tinternalY.value = scrollTop;\n\t};\n\tconst onScrollHandler = (e) => {\n\t\tvar _documentElement;\n\t\tif (!window) return;\n\t\tsetArrivedState((_documentElement = e.target.documentElement) !== null && _documentElement !== void 0 ? _documentElement : e.target);\n\t\tisScrolling.value = true;\n\t\tonScrollEndDebounced(e);\n\t\tonScroll(e);\n\t};\n\tuseEventListener(element, \"scroll\", throttle ? useThrottleFn(onScrollHandler, throttle, true, false) : onScrollHandler, eventListenerOptions);\n\ttryOnMounted(() => {\n\t\ttry {\n\t\t\tconst _element = toValue(element);\n\t\t\tif (!_element) return;\n\t\t\tsetArrivedState(_element);\n\t\t} catch (e) {\n\t\t\tonError(e);\n\t\t}\n\t});\n\tif ((observe === null || observe === void 0 ? void 0 : observe.mutation) && element != null && element !== window && element !== document) useMutationObserver(element, () => {\n\t\tconst _element = toValue(element);\n\t\tif (!_element) return;\n\t\tsetArrivedState(_element);\n\t}, {\n\t\tattributes: true,\n\t\tchildList: true,\n\t\tsubtree: true\n\t});\n\tuseEventListener(element, \"scrollend\", onScrollEnd, eventListenerOptions);\n\treturn {\n\t\tx,\n\t\ty,\n\t\tisScrolling,\n\t\tarrivedState,\n\t\tdirections,\n\t\tmeasure() {\n\t\t\tconst _element = toValue(element);\n\t\t\tif (window && _element) setArrivedState(_element);\n\t\t}\n\t};\n}\n//#endregion\n//#region useInfiniteScroll/index.ts\n/**\n* Reactive infinite scroll.\n*\n* @see https://vueuse.org/useInfiniteScroll\n*/\nfunction useInfiniteScroll(element, onLoadMore, options = {}) {\n\tvar _options$distance;\n\tconst { direction = \"bottom\", interval = 100, canLoadMore = () => true } = options;\n\tconst state = reactive(useScroll(element, {\n\t\t...options,\n\t\toffset: {\n\t\t\t[direction]: (_options$distance = options.distance) !== null && _options$distance !== void 0 ? _options$distance : 0,\n\t\t\t...options.offset\n\t\t}\n\t}));\n\tconst promise = shallowRef();\n\tconst isLoading = computed(() => !!promise.value);\n\tconst observedElement = computed(() => {\n\t\treturn resolveElement(toValue(element));\n\t});\n\tconst isElementVisible = useElementVisibility(observedElement);\n\tconst canLoad = computed(() => {\n\t\tif (!observedElement.value) return false;\n\t\treturn canLoadMore(observedElement.value);\n\t});\n\tfunction checkAndLoad() {\n\t\tstate.measure();\n\t\tif (!observedElement.value || !isElementVisible.value || !canLoad.value || promise.value) return;\n\t\tconst { scrollHeight, clientHeight, scrollWidth, clientWidth } = observedElement.value;\n\t\tconst isNarrower = direction === \"bottom\" || direction === \"top\" ? scrollHeight <= clientHeight : scrollWidth <= clientWidth;\n\t\tif (state.arrivedState[direction] || isNarrower) promise.value = Promise.all([onLoadMore(state), new Promise((resolve) => setTimeout(resolve, interval))]).finally(() => {\n\t\t\tpromise.value = null;\n\t\t\tnextTick(() => checkAndLoad());\n\t\t});\n\t}\n\ttryOnUnmounted(watch(() => [\n\t\tstate.arrivedState[direction],\n\t\tisElementVisible.value,\n\t\tcanLoad.value\n\t], checkAndLoad, {\n\t\timmediate: true,\n\t\tflush: \"post\"\n\t}));\n\treturn {\n\t\tisLoading,\n\t\treset() {\n\t\t\tnextTick(() => checkAndLoad());\n\t\t}\n\t};\n}\n//#endregion\n//#region useKeyModifier/index.ts\nconst defaultEvents = [\n\t\"mousedown\",\n\t\"mouseup\",\n\t\"keydown\",\n\t\"keyup\"\n];\n/* @__NO_SIDE_EFFECTS__ */\nfunction useKeyModifier(modifier, options = {}) {\n\tconst { events = defaultEvents, document = defaultDocument, initial = null } = options;\n\tconst state = shallowRef(initial);\n\tif (document) events.forEach((listenerEvent) => {\n\t\tuseEventListener(document, listenerEvent, (evt) => {\n\t\t\tif (typeof evt.getModifierState === \"function\") state.value = evt.getModifierState(modifier);\n\t\t}, { passive: true });\n\t});\n\treturn state;\n}\n//#endregion\n//#region useLocalStorage/index.ts\n/**\n* Reactive LocalStorage.\n*\n* @see https://vueuse.org/useLocalStorage\n* @param key\n* @param initialValue\n* @param options\n*/\nfunction useLocalStorage(key, initialValue, options = {}) {\n\tconst { window = defaultWindow } = options;\n\treturn useStorage(key, initialValue, window === null || window === void 0 ? void 0 : window.localStorage, options);\n}\n//#endregion\n//#region useMagicKeys/aliasMap.ts\nconst DefaultMagicKeysAliasMap = {\n\tctrl: \"control\",\n\tcommand: \"meta\",\n\tcmd: \"meta\",\n\toption: \"alt\",\n\tup: \"arrowup\",\n\tdown: \"arrowdown\",\n\tleft: \"arrowleft\",\n\tright: \"arrowright\"\n};\n//#endregion\n//#region useMagicKeys/index.ts\n/**\n* Reactive keys pressed state, with magical keys combination support.\n*\n* @see https://vueuse.org/useMagicKeys\n*/\nfunction useMagicKeys(options = {}) {\n\tconst { reactive: useReactive = false, target = defaultWindow, aliasMap = DefaultMagicKeysAliasMap, passive = true, onEventFired = noop } = options;\n\tconst current = reactive(/* @__PURE__ */ new Set());\n\tconst obj = {\n\t\ttoJSON() {\n\t\t\treturn {};\n\t\t},\n\t\tcurrent\n\t};\n\tconst refs = useReactive ? reactive(obj) : obj;\n\tconst metaDeps = /* @__PURE__ */ new Set();\n\tconst depsMap = new Map([\n\t\t[\"Meta\", metaDeps],\n\t\t[\"Shift\", /* @__PURE__ */ new Set()],\n\t\t[\"Alt\", /* @__PURE__ */ new Set()]\n\t]);\n\tconst usedKeys = /* @__PURE__ */ new Set();\n\tfunction setRefs(key, value) {\n\t\tif (key in refs) if (useReactive) refs[key] = value;\n\t\telse refs[key].value = value;\n\t}\n\tfunction reset() {\n\t\tcurrent.clear();\n\t\tfor (const key of usedKeys) setRefs(key, false);\n\t}\n\tfunction updateDeps(value, e, keys) {\n\t\tif (!value || typeof e.getModifierState !== \"function\") return;\n\t\tfor (const [modifier, depsSet] of depsMap) if (e.getModifierState(modifier)) {\n\t\t\tkeys.forEach((key) => depsSet.add(key));\n\t\t\tbreak;\n\t\t}\n\t}\n\tfunction clearDeps(value, key) {\n\t\tif (value) return;\n\t\tconst depsMapKey = `${key[0].toUpperCase()}${key.slice(1)}`;\n\t\tconst deps = depsMap.get(depsMapKey);\n\t\tif (![\"shift\", \"alt\"].includes(key) || !deps) return;\n\t\tconst depsArray = Array.from(deps);\n\t\tconst depsIndex = depsArray.indexOf(key);\n\t\tdepsArray.forEach((key, index) => {\n\t\t\tif (index >= depsIndex) {\n\t\t\t\tcurrent.delete(key);\n\t\t\t\tsetRefs(key, false);\n\t\t\t}\n\t\t});\n\t\tdeps.clear();\n\t}\n\tfunction updateRefs(e, value) {\n\t\tvar _e$key, _e$code;\n\t\tconst key = (_e$key = e.key) === null || _e$key === void 0 ? void 0 : _e$key.toLowerCase();\n\t\tconst values = [(_e$code = e.code) === null || _e$code === void 0 ? void 0 : _e$code.toLowerCase(), key].filter(Boolean);\n\t\tif (!key) return;\n\t\tif (key) if (value) current.add(key);\n\t\telse current.delete(key);\n\t\tfor (const key of values) {\n\t\t\tusedKeys.add(key);\n\t\t\tsetRefs(key, value);\n\t\t}\n\t\tupdateDeps(value, e, [...current, ...values]);\n\t\tclearDeps(value, key);\n\t\tif (key === \"meta\" && !value) {\n\t\t\tmetaDeps.forEach((key) => {\n\t\t\t\tcurrent.delete(key);\n\t\t\t\tsetRefs(key, false);\n\t\t\t});\n\t\t\tmetaDeps.clear();\n\t\t}\n\t}\n\tuseEventListener(target, \"keydown\", (e) => {\n\t\tupdateRefs(e, true);\n\t\treturn onEventFired(e);\n\t}, { passive });\n\tuseEventListener(target, \"keyup\", (e) => {\n\t\tupdateRefs(e, false);\n\t\treturn onEventFired(e);\n\t}, { passive });\n\tuseEventListener(\"blur\", reset, { passive });\n\tuseEventListener(\"focus\", reset, { passive });\n\tconst proxy = new Proxy(refs, { get(target, prop, rec) {\n\t\tif (typeof prop !== \"string\") return Reflect.get(target, prop, rec);\n\t\tprop = prop.toLowerCase();\n\t\tif (prop in aliasMap) prop = aliasMap[prop];\n\t\tif (!(prop in refs)) if (/[+_-]/.test(prop)) {\n\t\t\tconst keys = prop.split(/[+_-]/g).map((i) => i.trim());\n\t\t\trefs[prop] = computed(() => keys.map((key) => toValue(proxy[key])).every(Boolean));\n\t\t} else refs[prop] = shallowRef(false);\n\t\tconst r = Reflect.get(target, prop, rec);\n\t\treturn useReactive ? toValue(r) : r;\n\t} });\n\treturn proxy;\n}\n//#endregion\n//#region useMediaControls/index.ts\n/**\n* Automatically check if the ref exists and if it does run the cb fn\n*/\nfunction usingElRef(source, cb) {\n\tif (toValue(source)) cb(toValue(source));\n}\n/**\n* Converts a TimeRange object to an array\n*/\nfunction timeRangeToArray(timeRanges) {\n\tlet ranges = [];\n\tfor (let i = 0; i < timeRanges.length; ++i) ranges = [...ranges, [timeRanges.start(i), timeRanges.end(i)]];\n\treturn ranges;\n}\n/**\n* Converts a TextTrackList object to an array of `UseMediaTextTrack`\n*/\nfunction tracksToArray(tracks) {\n\treturn Array.from(tracks).map(({ label, kind, language, mode, activeCues, cues, inBandMetadataTrackDispatchType }, id) => ({\n\t\tid,\n\t\tlabel,\n\t\tkind,\n\t\tlanguage,\n\t\tmode,\n\t\tactiveCues,\n\t\tcues,\n\t\tinBandMetadataTrackDispatchType\n\t}));\n}\nconst defaultOptions = {\n\tsrc: \"\",\n\ttracks: []\n};\nfunction useMediaControls(target, options = {}) {\n\ttarget = toRef(target);\n\toptions = {\n\t\t...defaultOptions,\n\t\t...options\n\t};\n\tconst { document = defaultDocument } = options;\n\tconst listenerOptions = { passive: true };\n\tconst currentTime = shallowRef(0);\n\tconst duration = shallowRef(0);\n\tconst seeking = shallowRef(false);\n\tconst volume = shallowRef(1);\n\tconst waiting = shallowRef(false);\n\tconst ended = shallowRef(false);\n\tconst playing = shallowRef(false);\n\tconst rate = shallowRef(1);\n\tconst stalled = shallowRef(false);\n\tconst buffered = shallowRef([]);\n\tconst tracks = shallowRef([]);\n\tconst selectedTrack = shallowRef(-1);\n\tconst isPictureInPicture = shallowRef(false);\n\tconst muted = shallowRef(false);\n\tconst supportsPictureInPicture = Boolean(document && \"pictureInPictureEnabled\" in document);\n\tconst sourceErrorEvent = createEventHook();\n\tconst playbackErrorEvent = createEventHook();\n\t/**\n\t* Disables the specified track. If no track is specified then\n\t* all tracks will be disabled\n\t*\n\t* @param track The id of the track to disable\n\t*/\n\tconst disableTrack = (track) => {\n\t\tusingElRef(target, (el) => {\n\t\t\tif (track) {\n\t\t\t\tconst id = typeof track === \"number\" ? track : track.id;\n\t\t\t\tel.textTracks[id].mode = \"disabled\";\n\t\t\t} else for (let i = 0; i < el.textTracks.length; ++i) el.textTracks[i].mode = \"disabled\";\n\t\t\tselectedTrack.value = -1;\n\t\t});\n\t};\n\t/**\n\t* Enables the specified track and disables the\n\t* other tracks unless otherwise specified\n\t*\n\t* @param track The track of the id of the track to enable\n\t* @param disableTracks Disable all other tracks\n\t*/\n\tconst enableTrack = (track, disableTracks = true) => {\n\t\tusingElRef(target, (el) => {\n\t\t\tconst id = typeof track === \"number\" ? track : track.id;\n\t\t\tif (disableTracks) disableTrack();\n\t\t\tel.textTracks[id].mode = \"showing\";\n\t\t\tselectedTrack.value = id;\n\t\t});\n\t};\n\t/**\n\t* Toggle picture in picture mode for the player.\n\t*/\n\tconst togglePictureInPicture = () => {\n\t\treturn new Promise((resolve, reject) => {\n\t\t\tusingElRef(target, async (el) => {\n\t\t\t\tif (supportsPictureInPicture) if (!isPictureInPicture.value) el.requestPictureInPicture().then(resolve).catch(reject);\n\t\t\t\telse document.exitPictureInPicture().then(resolve).catch(reject);\n\t\t\t});\n\t\t});\n\t};\n\t/**\n\t* This will automatically inject sources to the media element. The sources will be\n\t* appended as children to the media element as `<source>` elements.\n\t*/\n\twatchEffect(() => {\n\t\tif (!document) return;\n\t\tconst el = toValue(target);\n\t\tif (!el) return;\n\t\tconst src = toValue(options.src);\n\t\tlet sources = [];\n\t\tif (!src) return;\n\t\tif (typeof src === \"string\") sources = [{ src }];\n\t\telse if (Array.isArray(src)) sources = src;\n\t\telse if (isObject(src)) sources = [src];\n\t\tel.querySelectorAll(\"source\").forEach((e) => {\n\t\t\te.remove();\n\t\t});\n\t\tsources.forEach(({ src, type, media }) => {\n\t\t\tconst source = document.createElement(\"source\");\n\t\t\tsource.setAttribute(\"src\", src);\n\t\t\tsource.setAttribute(\"type\", type || \"\");\n\t\t\tsource.setAttribute(\"media\", media || \"\");\n\t\t\tuseEventListener(source, \"error\", sourceErrorEvent.trigger, listenerOptions);\n\t\t\tel.appendChild(source);\n\t\t});\n\t\tel.load();\n\t});\n\t/**\n\t* Apply composable state to the element, also when element is changed\n\t*/\n\twatch([target, volume], () => {\n\t\tconst el = toValue(target);\n\t\tif (!el) return;\n\t\tel.volume = volume.value;\n\t});\n\twatch([target, muted], () => {\n\t\tconst el = toValue(target);\n\t\tif (!el) return;\n\t\tel.muted = muted.value;\n\t});\n\twatch([target, rate], () => {\n\t\tconst el = toValue(target);\n\t\tif (!el) return;\n\t\tel.playbackRate = rate.value;\n\t});\n\t/**\n\t* Load Tracks\n\t*/\n\twatchEffect(() => {\n\t\tif (!document) return;\n\t\tconst textTracks = toValue(options.tracks);\n\t\tconst el = toValue(target);\n\t\tif (!textTracks || !textTracks.length || !el) return;\n\t\t/**\n\t\t* The MediaAPI provides an API for adding text tracks, but they don't currently\n\t\t* have an API for removing text tracks, so instead we will just create and remove\n\t\t* the tracks manually using the HTML api.\n\t\t*/\n\t\tel.querySelectorAll(\"track\").forEach((e) => e.remove());\n\t\ttextTracks.forEach(({ default: isDefault, kind, label, src, srcLang }, i) => {\n\t\t\tconst track = document.createElement(\"track\");\n\t\t\ttrack.default = isDefault || false;\n\t\t\ttrack.kind = kind;\n\t\t\ttrack.label = label;\n\t\t\ttrack.src = src;\n\t\t\ttrack.srclang = srcLang;\n\t\t\tif (track.default) selectedTrack.value = i;\n\t\t\tel.appendChild(track);\n\t\t});\n\t});\n\t/**\n\t* This will allow us to update the current time from the timeupdate event\n\t* without setting the medias current position, but if the user changes the\n\t* current time via the ref, then the media will seek.\n\t*\n\t* If we did not use an ignorable watch, then the current time update from\n\t* the timeupdate event would cause the media to stutter.\n\t*/\n\tconst { ignoreUpdates: ignoreCurrentTimeUpdates } = watchIgnorable(currentTime, (time) => {\n\t\tconst el = toValue(target);\n\t\tif (!el) return;\n\t\tel.currentTime = time;\n\t});\n\t/**\n\t* Using an ignorable watch so we can control the play state using a ref and not\n\t* a function\n\t*/\n\tconst { ignoreUpdates: ignorePlayingUpdates } = watchIgnorable(playing, (isPlaying) => {\n\t\tconst el = toValue(target);\n\t\tif (!el) return;\n\t\tif (isPlaying) el.play().catch((e) => {\n\t\t\tplaybackErrorEvent.trigger(e);\n\t\t\tthrow e;\n\t\t});\n\t\telse el.pause();\n\t});\n\tuseEventListener(target, \"timeupdate\", () => ignoreCurrentTimeUpdates(() => currentTime.value = toValue(target).currentTime), listenerOptions);\n\tuseEventListener(target, \"durationchange\", () => duration.value = toValue(target).duration, listenerOptions);\n\tuseEventListener(target, \"progress\", () => buffered.value = timeRangeToArray(toValue(target).buffered), listenerOptions);\n\tuseEventListener(target, \"seeking\", () => seeking.value = true, listenerOptions);\n\tuseEventListener(target, \"seeked\", () => seeking.value = false, listenerOptions);\n\tuseEventListener(target, [\"waiting\", \"loadstart\"], () => {\n\t\twaiting.value = true;\n\t\tignorePlayingUpdates(() => playing.value = false);\n\t}, listenerOptions);\n\tuseEventListener(target, \"loadeddata\", () => waiting.value = false, listenerOptions);\n\tuseEventListener(target, \"playing\", () => {\n\t\twaiting.value = false;\n\t\tended.value = false;\n\t\tignorePlayingUpdates(() => playing.value = true);\n\t}, listenerOptions);\n\tuseEventListener(target, \"ratechange\", () => rate.value = toValue(target).playbackRate, listenerOptions);\n\tuseEventListener(target, \"stalled\", () => stalled.value = true, listenerOptions);\n\tuseEventListener(target, \"ended\", () => ended.value = true, listenerOptions);\n\tuseEventListener(target, \"pause\", () => ignorePlayingUpdates(() => playing.value = false), listenerOptions);\n\tuseEventListener(target, \"play\", () => ignorePlayingUpdates(() => playing.value = true), listenerOptions);\n\tuseEventListener(target, \"enterpictureinpicture\", () => isPictureInPicture.value = true, listenerOptions);\n\tuseEventListener(target, \"leavepictureinpicture\", () => isPictureInPicture.value = false, listenerOptions);\n\tuseEventListener(target, \"volumechange\", () => {\n\t\tconst el = toValue(target);\n\t\tif (!el) return;\n\t\tvolume.value = el.volume;\n\t\tmuted.value = el.muted;\n\t}, listenerOptions);\n\t/**\n\t* The following listeners need to listen to a nested\n\t* object on the target, so we will have to use a nested\n\t* watch and manually remove the listeners\n\t*/\n\tconst listeners = [];\n\tconst stop = watch([target], () => {\n\t\tconst el = toValue(target);\n\t\tif (!el) return;\n\t\tstop();\n\t\tlisteners[0] = useEventListener(el.textTracks, \"addtrack\", () => tracks.value = tracksToArray(el.textTracks), listenerOptions);\n\t\tlisteners[1] = useEventListener(el.textTracks, \"removetrack\", () => tracks.value = tracksToArray(el.textTracks), listenerOptions);\n\t\tlisteners[2] = useEventListener(el.textTracks, \"change\", () => tracks.value = tracksToArray(el.textTracks), listenerOptions);\n\t});\n\ttryOnScopeDispose(() => listeners.forEach((listener) => listener()));\n\treturn {\n\t\tcurrentTime,\n\t\tduration,\n\t\twaiting,\n\t\tseeking,\n\t\tended,\n\t\tstalled,\n\t\tbuffered,\n\t\tplaying,\n\t\trate,\n\t\tvolume,\n\t\tmuted,\n\t\ttracks,\n\t\tselectedTrack,\n\t\tenableTrack,\n\t\tdisableTrack,\n\t\tsupportsPictureInPicture,\n\t\ttogglePictureInPicture,\n\t\tisPictureInPicture,\n\t\tonSourceError: sourceErrorEvent.on,\n\t\tonPlaybackError: playbackErrorEvent.on\n\t};\n}\n//#endregion\n//#region useMemoize/index.ts\n/**\n* Reactive function result cache based on arguments\n*\n* @__NO_SIDE_EFFECTS__\n*/\nfunction useMemoize(resolver, options) {\n\tconst initCache = () => {\n\t\tif (options === null || options === void 0 ? void 0 : options.cache) return shallowReactive(options.cache);\n\t\treturn shallowReactive(/* @__PURE__ */ new Map());\n\t};\n\tconst cache = initCache();\n\t/**\n\t* Generate key from args\n\t*/\n\tconst generateKey = (...args) => (options === null || options === void 0 ? void 0 : options.getKey) ? options.getKey(...args) : JSON.stringify(args);\n\t/**\n\t* Load data and save in cache\n\t*/\n\tconst _loadData = (key, ...args) => {\n\t\tcache.set(key, resolver(...args));\n\t\treturn cache.get(key);\n\t};\n\tconst loadData = (...args) => _loadData(generateKey(...args), ...args);\n\t/**\n\t* Delete key from cache\n\t*/\n\tconst deleteData = (...args) => {\n\t\tcache.delete(generateKey(...args));\n\t};\n\t/**\n\t* Clear cached data\n\t*/\n\tconst clearData = () => {\n\t\tcache.clear();\n\t};\n\tconst memoized = (...args) => {\n\t\tconst key = generateKey(...args);\n\t\tif (cache.has(key)) return cache.get(key);\n\t\treturn _loadData(key, ...args);\n\t};\n\tmemoized.load = loadData;\n\tmemoized.delete = deleteData;\n\tmemoized.clear = clearData;\n\tmemoized.generateKey = generateKey;\n\tmemoized.cache = cache;\n\treturn memoized;\n}\n//#endregion\n//#region useMemory/index.ts\nfunction getDefaultScheduler$6(options) {\n\tif (\"interval\" in options || \"immediate\" in options || \"immediateCallback\" in options) {\n\t\tconst { interval = 1e3, immediate, immediateCallback } = options;\n\t\treturn (cb) => useIntervalFn(cb, interval, {\n\t\t\timmediate,\n\t\t\timmediateCallback\n\t\t});\n\t}\n\treturn useIntervalFn;\n}\n/**\n* Reactive Memory Info.\n*\n* @see https://vueuse.org/useMemory\n* @param options\n*\n* @__NO_SIDE_EFFECTS__\n*/\nfunction useMemory(options = {}) {\n\tconst memory = shallowRef();\n\tconst isSupported = /* @__PURE__ */ useSupported(() => typeof performance !== \"undefined\" && \"memory\" in performance);\n\tif (isSupported.value) {\n\t\tconst { scheduler = getDefaultScheduler$6 } = options;\n\t\tscheduler(() => {\n\t\t\tmemory.value = performance.memory;\n\t\t});\n\t}\n\treturn {\n\t\tisSupported,\n\t\tmemory\n\t};\n}\n//#endregion\n//#region useMouse/index.ts\nconst UseMouseBuiltinExtractors = {\n\tpage: (event) => [event.pageX, event.pageY],\n\tclient: (event) => [event.clientX, event.clientY],\n\tscreen: (event) => [event.screenX, event.screenY],\n\tmovement: (event) => event instanceof MouseEvent ? [event.movementX, event.movementY] : null\n};\n/**\n* Reactive mouse position.\n*\n* @see https://vueuse.org/useMouse\n* @param options\n*/\nfunction useMouse(options = {}) {\n\tconst { type = \"page\", touch = true, resetOnTouchEnds = false, initialValue = {\n\t\tx: 0,\n\t\ty: 0\n\t}, window = defaultWindow, target = window, scroll = true, eventFilter } = options;\n\tlet _prevMouseEvent = null;\n\tlet _prevScrollX = 0;\n\tlet _prevScrollY = 0;\n\tconst x = shallowRef(initialValue.x);\n\tconst y = shallowRef(initialValue.y);\n\tconst sourceType = shallowRef(null);\n\tconst extractor = typeof type === \"function\" ? type : UseMouseBuiltinExtractors[type];\n\tconst mouseHandler = (event) => {\n\t\tconst result = extractor(event);\n\t\t_prevMouseEvent = event;\n\t\tif (result) {\n\t\t\t[x.value, y.value] = result;\n\t\t\tsourceType.value = \"mouse\";\n\t\t}\n\t\tif (window) {\n\t\t\t_prevScrollX = window.scrollX;\n\t\t\t_prevScrollY = window.scrollY;\n\t\t}\n\t};\n\tconst touchHandler = (event) => {\n\t\tif (event.touches.length > 0) {\n\t\t\tconst result = extractor(event.touches[0]);\n\t\t\tif (result) {\n\t\t\t\t[x.value, y.value] = result;\n\t\t\t\tsourceType.value = \"touch\";\n\t\t\t}\n\t\t}\n\t};\n\tconst scrollHandler = () => {\n\t\tif (!_prevMouseEvent || !window) return;\n\t\tconst pos = extractor(_prevMouseEvent);\n\t\tif (_prevMouseEvent instanceof MouseEvent && pos) {\n\t\t\tx.value = pos[0] + window.scrollX - _prevScrollX;\n\t\t\ty.value = pos[1] + window.scrollY - _prevScrollY;\n\t\t}\n\t};\n\tconst reset = () => {\n\t\tx.value = initialValue.x;\n\t\ty.value = initialValue.y;\n\t};\n\tconst mouseHandlerWrapper = eventFilter ? (event) => eventFilter(() => mouseHandler(event), {}) : (event) => mouseHandler(event);\n\tconst touchHandlerWrapper = eventFilter ? (event) => eventFilter(() => touchHandler(event), {}) : (event) => touchHandler(event);\n\tconst scrollHandlerWrapper = eventFilter ? () => eventFilter(() => scrollHandler(), {}) : () => scrollHandler();\n\tif (target) {\n\t\tconst listenerOptions = { passive: true };\n\t\tuseEventListener(target, [\"mousemove\", \"dragover\"], mouseHandlerWrapper, listenerOptions);\n\t\tif (touch && type !== \"movement\") {\n\t\t\tuseEventListener(target, [\"touchstart\", \"touchmove\"], touchHandlerWrapper, listenerOptions);\n\t\t\tif (resetOnTouchEnds) useEventListener(target, \"touchend\", reset, listenerOptions);\n\t\t}\n\t\tif (scroll && type === \"page\") useEventListener(window, \"scroll\", scrollHandlerWrapper, listenerOptions);\n\t}\n\treturn {\n\t\tx,\n\t\ty,\n\t\tsourceType\n\t};\n}\n//#endregion\n//#region useMouseInElement/index.ts\n/**\n* Reactive mouse position related to an element.\n*\n* @see https://vueuse.org/useMouseInElement\n* @param target\n* @param options\n*/\nfunction useMouseInElement(target, options = {}) {\n\tconst { windowResize = true, windowScroll = true, handleOutside = true, window = defaultWindow } = options;\n\tconst type = options.type || \"page\";\n\tconst { x, y, sourceType } = useMouse(options);\n\tconst targetRef = shallowRef(target !== null && target !== void 0 ? target : window === null || window === void 0 ? void 0 : window.document.body);\n\tconst elementX = shallowRef(0);\n\tconst elementY = shallowRef(0);\n\tconst elementPositionX = shallowRef(0);\n\tconst elementPositionY = shallowRef(0);\n\tconst elementHeight = shallowRef(0);\n\tconst elementWidth = shallowRef(0);\n\tconst isOutside = shallowRef(true);\n\tfunction update() {\n\t\tif (!window) return;\n\t\tconst el = unrefElement(targetRef);\n\t\tif (!el || !(el instanceof Element)) return;\n\t\tfor (const rect of el.getClientRects()) {\n\t\t\tconst { left, top, width, height } = rect;\n\t\t\telementPositionX.value = left + (type === \"page\" ? window.pageXOffset : 0);\n\t\t\telementPositionY.value = top + (type === \"page\" ? window.pageYOffset : 0);\n\t\t\telementHeight.value = height;\n\t\t\telementWidth.value = width;\n\t\t\tconst elX = x.value - elementPositionX.value;\n\t\t\tconst elY = y.value - elementPositionY.value;\n\t\t\tisOutside.value = width === 0 || height === 0 || elX < 0 || elY < 0 || elX > width || elY > height;\n\t\t\tif (handleOutside || !isOutside.value) {\n\t\t\t\telementX.value = elX;\n\t\t\t\telementY.value = elY;\n\t\t\t}\n\t\t\tif (!isOutside.value) break;\n\t\t}\n\t}\n\tconst stopFnList = [];\n\tfunction stop() {\n\t\tstopFnList.forEach((fn) => fn());\n\t\tstopFnList.length = 0;\n\t}\n\ttryOnMounted(() => {\n\t\tupdate();\n\t});\n\tif (window) {\n\t\tconst { stop: stopResizeObserver } = useResizeObserver(targetRef, update);\n\t\tconst { stop: stopMutationObserver } = useMutationObserver(targetRef, update, { attributeFilter: [\"style\", \"class\"] });\n\t\tconst stopWatch = watch([\n\t\t\ttargetRef,\n\t\t\tx,\n\t\t\ty\n\t\t], update);\n\t\tstopFnList.push(stopResizeObserver, stopMutationObserver, stopWatch);\n\t\tuseEventListener(document, \"mouseleave\", () => isOutside.value = true, { passive: true });\n\t\tif (windowScroll) stopFnList.push(useEventListener(\"scroll\", update, {\n\t\t\tcapture: true,\n\t\t\tpassive: true\n\t\t}));\n\t\tif (windowResize) stopFnList.push(useEventListener(\"resize\", update, { passive: true }));\n\t}\n\treturn {\n\t\tx,\n\t\ty,\n\t\tsourceType,\n\t\telementX,\n\t\telementY,\n\t\telementPositionX,\n\t\telementPositionY,\n\t\telementHeight,\n\t\telementWidth,\n\t\tisOutside,\n\t\tstop\n\t};\n}\n//#endregion\n//#region useMousePressed/index.ts\n/**\n* Reactive mouse pressing state.\n*\n* @see https://vueuse.org/useMousePressed\n* @param options\n*/\nfunction useMousePressed(options = {}) {\n\tconst { touch = true, drag = true, capture = false, initialValue = false, window = defaultWindow } = options;\n\tconst pressed = shallowRef(initialValue);\n\tconst sourceType = shallowRef(null);\n\tif (!window) return {\n\t\tpressed,\n\t\tsourceType\n\t};\n\tconst onPressed = (srcType) => (event) => {\n\t\tvar _options$onPressed;\n\t\tpressed.value = true;\n\t\tsourceType.value = srcType;\n\t\t(_options$onPressed = options.onPressed) === null || _options$onPressed === void 0 || _options$onPressed.call(options, event);\n\t};\n\tconst onReleased = (event) => {\n\t\tvar _options$onReleased;\n\t\tpressed.value = false;\n\t\tsourceType.value = null;\n\t\t(_options$onReleased = options.onReleased) === null || _options$onReleased === void 0 || _options$onReleased.call(options, event);\n\t};\n\tconst target = computed(() => unrefElement(options.target) || window);\n\tconst listenerOptions = {\n\t\tpassive: true,\n\t\tcapture\n\t};\n\tuseEventListener(target, \"mousedown\", onPressed(\"mouse\"), listenerOptions);\n\tuseEventListener(window, \"mouseleave\", onReleased, listenerOptions);\n\tuseEventListener(window, \"mouseup\", onReleased, listenerOptions);\n\tif (drag) {\n\t\tuseEventListener(target, \"dragstart\", onPressed(\"mouse\"), listenerOptions);\n\t\tuseEventListener(window, \"drop\", onReleased, listenerOptions);\n\t\tuseEventListener(window, \"dragend\", onReleased, listenerOptions);\n\t}\n\tif (touch) {\n\t\tuseEventListener(target, \"touchstart\", onPressed(\"touch\"), listenerOptions);\n\t\tuseEventListener(window, \"touchend\", onReleased, listenerOptions);\n\t\tuseEventListener(window, \"touchcancel\", onReleased, listenerOptions);\n\t}\n\treturn {\n\t\tpressed,\n\t\tsourceType\n\t};\n}\n//#endregion\n//#region useNavigatorLanguage/index.ts\n/**\n*\n* Reactive useNavigatorLanguage\n*\n* Detects the currently selected user language and returns a reactive language\n* @see https://vueuse.org/useNavigatorLanguage\n*\n* @__NO_SIDE_EFFECTS__\n*/\nfunction useNavigatorLanguage(options = {}) {\n\tconst { window = defaultWindow } = options;\n\tconst navigator = window === null || window === void 0 ? void 0 : window.navigator;\n\tconst isSupported = /* @__PURE__ */ useSupported(() => navigator && \"language\" in navigator);\n\tconst language = shallowRef(navigator === null || navigator === void 0 ? void 0 : navigator.language);\n\tuseEventListener(window, \"languagechange\", () => {\n\t\tif (navigator) language.value = navigator.language;\n\t}, { passive: true });\n\treturn {\n\t\tisSupported,\n\t\tlanguage\n\t};\n}\n//#endregion\n//#region useNetwork/index.ts\n/**\n* Reactive Network status.\n*\n* @see https://vueuse.org/useNetwork\n* @param options\n*\n* @__NO_SIDE_EFFECTS__\n*/\nfunction useNetwork(options = {}) {\n\tconst { window = defaultWindow } = options;\n\tconst navigator = window === null || window === void 0 ? void 0 : window.navigator;\n\tconst isSupported = /* @__PURE__ */ useSupported(() => navigator && \"connection\" in navigator);\n\tconst isOnline = shallowRef(true);\n\tconst saveData = shallowRef(false);\n\tconst offlineAt = shallowRef(void 0);\n\tconst onlineAt = shallowRef(void 0);\n\tconst downlink = shallowRef(void 0);\n\tconst downlinkMax = shallowRef(void 0);\n\tconst rtt = shallowRef(void 0);\n\tconst effectiveType = shallowRef(void 0);\n\tconst type = shallowRef(\"unknown\");\n\tconst connection = isSupported.value && navigator.connection;\n\tfunction updateNetworkInformation() {\n\t\tif (!navigator) return;\n\t\tisOnline.value = navigator.onLine;\n\t\tofflineAt.value = isOnline.value ? void 0 : Date.now();\n\t\tonlineAt.value = isOnline.value ? Date.now() : void 0;\n\t\tif (connection) {\n\t\t\tdownlink.value = connection.downlink;\n\t\t\tdownlinkMax.value = connection.downlinkMax;\n\t\t\teffectiveType.value = connection.effectiveType;\n\t\t\trtt.value = connection.rtt;\n\t\t\tsaveData.value = connection.saveData;\n\t\t\ttype.value = connection.type;\n\t\t}\n\t}\n\tconst listenerOptions = { passive: true };\n\tif (window) {\n\t\tuseEventListener(window, \"offline\", () => {\n\t\t\tisOnline.value = false;\n\t\t\tofflineAt.value = Date.now();\n\t\t}, listenerOptions);\n\t\tuseEventListener(window, \"online\", () => {\n\t\t\tisOnline.value = true;\n\t\t\tonlineAt.value = Date.now();\n\t\t}, listenerOptions);\n\t}\n\tif (connection) useEventListener(connection, \"change\", updateNetworkInformation, listenerOptions);\n\tupdateNetworkInformation();\n\treturn {\n\t\tisSupported,\n\t\tisOnline: shallowReadonly(isOnline),\n\t\tsaveData: shallowReadonly(saveData),\n\t\tofflineAt: shallowReadonly(offlineAt),\n\t\tonlineAt: shallowReadonly(onlineAt),\n\t\tdownlink: shallowReadonly(downlink),\n\t\tdownlinkMax: shallowReadonly(downlinkMax),\n\t\teffectiveType: shallowReadonly(effectiveType),\n\t\trtt: shallowReadonly(rtt),\n\t\ttype: shallowReadonly(type)\n\t};\n}\n//#endregion\n//#region useNow/index.ts\nfunction getDefaultScheduler$5(options) {\n\tif (\"interval\" in options || \"immediate\" in options) {\n\t\tconst { interval = \"requestAnimationFrame\", immediate = true } = options;\n\t\treturn interval === \"requestAnimationFrame\" ? (fn) => useRafFn(fn, { immediate }) : (fn) => useIntervalFn(fn, interval, options);\n\t}\n\treturn useRafFn;\n}\n/**\n* Reactive current Date instance.\n*\n* @see https://vueuse.org/useNow\n* @param options\n*\n* @__NO_SIDE_EFFECTS__\n*/\nfunction useNow(options = {}) {\n\tconst { controls: exposeControls = false, scheduler = getDefaultScheduler$5(options) } = options;\n\tconst now = shallowRef(/* @__PURE__ */ new Date());\n\tconst update = () => now.value = /* @__PURE__ */ new Date();\n\tconst controls = scheduler(update);\n\tif (exposeControls) return {\n\t\tnow,\n\t\t...controls\n\t};\n\telse return now;\n}\n//#endregion\n//#region useObjectUrl/index.ts\n/**\n* Reactive URL representing an object.\n*\n* @see https://vueuse.org/useObjectUrl\n* @param object\n*/\nfunction useObjectUrl(object) {\n\tconst url = shallowRef();\n\tconst release = () => {\n\t\tif (url.value) URL.revokeObjectURL(url.value);\n\t\turl.value = void 0;\n\t};\n\twatch(() => toValue(object), (newObject) => {\n\t\trelease();\n\t\tif (newObject) url.value = URL.createObjectURL(newObject);\n\t}, { immediate: true });\n\ttryOnScopeDispose(release);\n\treturn shallowReadonly(url);\n}\n//#endregion\n//#region ../math/useClamp/index.ts\n/**\n* Reactively clamp a value between two other values.\n*\n* @see https://vueuse.org/useClamp\n* @param value number\n* @param min\n* @param max\n*\n* @__NO_SIDE_EFFECTS__\n*/\nfunction useClamp(value, min, max) {\n\tif (typeof value === \"function\" || isReadonly(value)) return computed(() => clamp(toValue(value), toValue(min), toValue(max)));\n\tconst _value = ref(value);\n\treturn computed({\n\t\tget() {\n\t\t\treturn _value.value = clamp(_value.value, toValue(min), toValue(max));\n\t\t},\n\t\tset(value) {\n\t\t\t_value.value = clamp(value, toValue(min), toValue(max));\n\t\t}\n\t});\n}\n//#endregion\n//#region useOffsetPagination/index.ts\nfunction useOffsetPagination(options) {\n\tconst { total = Number.POSITIVE_INFINITY, pageSize = 10, page = 1, onPageChange = noop, onPageSizeChange = noop, onPageCountChange = noop } = options;\n\tconst currentPageSize = useClamp(pageSize, 1, Number.POSITIVE_INFINITY);\n\tconst pageCount = computed(() => Math.max(1, Math.ceil(toValue(total) / toValue(currentPageSize))));\n\tconst currentPage = useClamp(page, 1, pageCount);\n\tconst isFirstPage = computed(() => currentPage.value === 1);\n\tconst isLastPage = computed(() => currentPage.value === pageCount.value);\n\tif (isRef(page)) syncRef(page, currentPage, { direction: isReadonly(page) ? \"ltr\" : \"both\" });\n\tif (isRef(pageSize)) syncRef(pageSize, currentPageSize, { direction: isReadonly(pageSize) ? \"ltr\" : \"both\" });\n\tfunction prev() {\n\t\tcurrentPage.value--;\n\t}\n\tfunction next() {\n\t\tcurrentPage.value++;\n\t}\n\tconst returnValue = {\n\t\tcurrentPage,\n\t\tcurrentPageSize,\n\t\tpageCount,\n\t\tisFirstPage,\n\t\tisLastPage,\n\t\tprev,\n\t\tnext\n\t};\n\twatch(currentPage, () => {\n\t\tonPageChange(reactive(returnValue));\n\t});\n\twatch(currentPageSize, () => {\n\t\tonPageSizeChange(reactive(returnValue));\n\t});\n\twatch(pageCount, () => {\n\t\tonPageCountChange(reactive(returnValue));\n\t});\n\treturn returnValue;\n}\n//#endregion\n//#region useOnline/index.ts\n/**\n* Reactive online state.\n*\n* @see https://vueuse.org/useOnline\n* @param options\n*\n* @__NO_SIDE_EFFECTS__\n*/\nfunction useOnline(options = {}) {\n\tconst { isOnline } = useNetwork(options);\n\treturn isOnline;\n}\n//#endregion\n//#region usePageLeave/index.ts\n/**\n* Reactive state to show whether mouse leaves the page.\n*\n* @see https://vueuse.org/usePageLeave\n* @param options\n*\n* @__NO_SIDE_EFFECTS__\n*/\nfunction usePageLeave(options = {}) {\n\tconst { window = defaultWindow } = options;\n\tconst isLeft = shallowRef(false);\n\tconst handler = (event) => {\n\t\tif (!window) return;\n\t\tevent = event || window.event;\n\t\tisLeft.value = !(event.relatedTarget || event.toElement);\n\t};\n\tif (window) {\n\t\tconst listenerOptions = { passive: true };\n\t\tuseEventListener(window, \"mouseout\", handler, listenerOptions);\n\t\tuseEventListener(window.document, \"mouseleave\", handler, listenerOptions);\n\t\tuseEventListener(window.document, \"mouseenter\", handler, listenerOptions);\n\t}\n\treturn isLeft;\n}\n//#endregion\n//#region useScreenOrientation/index.ts\n/**\n* Reactive screen orientation\n*\n* @see https://vueuse.org/useScreenOrientation\n*\n* @__NO_SIDE_EFFECTS__\n*/\nfunction useScreenOrientation(options = {}) {\n\tconst { window = defaultWindow } = options;\n\tconst isSupported = /* @__PURE__ */ useSupported(() => window && \"screen\" in window && \"orientation\" in window.screen);\n\tconst screenOrientation = isSupported.value ? window.screen.orientation : {};\n\tconst orientation = shallowRef(screenOrientation.type);\n\tconst angle = shallowRef(screenOrientation.angle || 0);\n\tif (isSupported.value) useEventListener(window, \"orientationchange\", () => {\n\t\torientation.value = screenOrientation.type;\n\t\tangle.value = screenOrientation.angle;\n\t}, { passive: true });\n\tconst lockOrientation = (type) => {\n\t\tif (isSupported.value && typeof screenOrientation.lock === \"function\") return screenOrientation.lock(type);\n\t\treturn Promise.reject(/* @__PURE__ */ new Error(\"Not supported\"));\n\t};\n\tconst unlockOrientation = () => {\n\t\tif (isSupported.value && typeof screenOrientation.unlock === \"function\") screenOrientation.unlock();\n\t};\n\treturn {\n\t\tisSupported,\n\t\torientation,\n\t\tangle,\n\t\tlockOrientation,\n\t\tunlockOrientation\n\t};\n}\n//#endregion\n//#region useParallax/index.ts\n/**\n* Create parallax effect easily. It uses `useDeviceOrientation` and fallback to `useMouse`\n* if orientation is not supported.\n*\n* @param target\n* @param options\n*/\nfunction useParallax(target, options = {}) {\n\tconst { deviceOrientationTiltAdjust = (i) => i, deviceOrientationRollAdjust = (i) => i, mouseTiltAdjust = (i) => i, mouseRollAdjust = (i) => i, window = defaultWindow } = options;\n\tconst orientation = reactive(useDeviceOrientation({ window }));\n\tconst screenOrientation = reactive(useScreenOrientation({ window }));\n\tconst { elementX: x, elementY: y, elementWidth: width, elementHeight: height } = useMouseInElement(target, {\n\t\thandleOutside: false,\n\t\twindow\n\t});\n\tconst source = computed(() => {\n\t\tif (orientation.isSupported && (orientation.alpha != null && orientation.alpha !== 0 || orientation.gamma != null && orientation.gamma !== 0)) return \"deviceOrientation\";\n\t\treturn \"mouse\";\n\t});\n\treturn {\n\t\troll: computed(() => {\n\t\t\tif (source.value === \"deviceOrientation\") {\n\t\t\t\tlet value;\n\t\t\t\tswitch (screenOrientation.orientation) {\n\t\t\t\t\tcase \"landscape-primary\":\n\t\t\t\t\t\tvalue = orientation.gamma / 90;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase \"landscape-secondary\":\n\t\t\t\t\t\tvalue = -orientation.gamma / 90;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase \"portrait-primary\":\n\t\t\t\t\t\tvalue = -orientation.beta / 90;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase \"portrait-secondary\":\n\t\t\t\t\t\tvalue = orientation.beta / 90;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault: value = -orientation.beta / 90;\n\t\t\t\t}\n\t\t\t\treturn deviceOrientationRollAdjust(value);\n\t\t\t} else return mouseRollAdjust(-(y.value - height.value / 2) / height.value);\n\t\t}),\n\t\ttilt: computed(() => {\n\t\t\tif (source.value === \"deviceOrientation\") {\n\t\t\t\tlet value;\n\t\t\t\tswitch (screenOrientation.orientation) {\n\t\t\t\t\tcase \"landscape-primary\":\n\t\t\t\t\t\tvalue = orientation.beta / 90;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase \"landscape-secondary\":\n\t\t\t\t\t\tvalue = -orientation.beta / 90;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase \"portrait-primary\":\n\t\t\t\t\t\tvalue = orientation.gamma / 90;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase \"portrait-secondary\":\n\t\t\t\t\t\tvalue = -orientation.gamma / 90;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault: value = orientation.gamma / 90;\n\t\t\t\t}\n\t\t\t\treturn deviceOrientationTiltAdjust(value);\n\t\t\t} else return mouseTiltAdjust((x.value - width.value / 2) / width.value);\n\t\t}),\n\t\tsource\n\t};\n}\n//#endregion\n//#region useParentElement/index.ts\nfunction useParentElement(element = useCurrentElement()) {\n\tconst parentElement = shallowRef();\n\tconst update = () => {\n\t\tconst el = unrefElement(element);\n\t\tif (el) parentElement.value = el.parentElement;\n\t};\n\ttryOnMounted(update);\n\twatch(() => toValue(element), update);\n\treturn parentElement;\n}\n//#endregion\n//#region usePerformanceObserver/index.ts\n/**\n* Observe performance metrics.\n*\n* @see https://vueuse.org/usePerformanceObserver\n* @param options\n*/\nfunction usePerformanceObserver(options, callback) {\n\tconst { window = defaultWindow, immediate = true, ...performanceOptions } = options;\n\tconst isSupported = /* @__PURE__ */ useSupported(() => window && \"PerformanceObserver\" in window);\n\tlet observer;\n\tconst stop = () => {\n\t\tobserver === null || observer === void 0 || observer.disconnect();\n\t};\n\tconst start = () => {\n\t\tif (isSupported.value) {\n\t\t\tstop();\n\t\t\tobserver = new PerformanceObserver(callback);\n\t\t\tobserver.observe(performanceOptions);\n\t\t}\n\t};\n\ttryOnScopeDispose(stop);\n\tif (immediate) start();\n\treturn {\n\t\tisSupported,\n\t\tstart,\n\t\tstop\n\t};\n}\n//#endregion\n//#region usePointer/index.ts\nconst defaultState = (/* #__PURE__ */ {\n\tx: 0,\n\ty: 0,\n\tpointerId: 0,\n\tpressure: 0,\n\ttiltX: 0,\n\ttiltY: 0,\n\twidth: 0,\n\theight: 0,\n\ttwist: 0,\n\tpointerType: null\n});\nconst keys = /* @__PURE__ */ Object.keys(defaultState);\n/**\n* Reactive pointer state.\n*\n* @see https://vueuse.org/usePointer\n* @param options\n*/\nfunction usePointer(options = {}) {\n\tconst { target = defaultWindow } = options;\n\tconst isInside = shallowRef(false);\n\tconst state = shallowRef(options.initialValue || {});\n\tObject.assign(state.value, defaultState, state.value);\n\tconst handler = (event) => {\n\t\tisInside.value = true;\n\t\tif (options.pointerTypes && !options.pointerTypes.includes(event.pointerType)) return;\n\t\tstate.value = objectPick(event, keys, false);\n\t};\n\tif (target) {\n\t\tconst listenerOptions = { passive: true };\n\t\tuseEventListener(target, [\n\t\t\t\"pointerdown\",\n\t\t\t\"pointermove\",\n\t\t\t\"pointerup\"\n\t\t], handler, listenerOptions);\n\t\tuseEventListener(target, \"pointerleave\", () => isInside.value = false, listenerOptions);\n\t}\n\treturn {\n\t\t...toRefs(state),\n\t\tisInside\n\t};\n}\n//#endregion\n//#region usePointerLock/index.ts\n/**\n* Reactive pointer lock.\n*\n* @see https://vueuse.org/usePointerLock\n* @param target\n* @param options\n*\n* @__NO_SIDE_EFFECTS__\n*/\nfunction usePointerLock(target, options = {}) {\n\tconst { document = defaultDocument } = options;\n\tconst isSupported = /* @__PURE__ */ useSupported(() => document && \"pointerLockElement\" in document);\n\tconst element = shallowRef();\n\tconst triggerElement = shallowRef();\n\tlet targetElement;\n\tif (isSupported.value) {\n\t\tconst listenerOptions = { passive: true };\n\t\tuseEventListener(document, \"pointerlockchange\", () => {\n\t\t\tvar _pointerLockElement;\n\t\t\tconst currentElement = (_pointerLockElement = document.pointerLockElement) !== null && _pointerLockElement !== void 0 ? _pointerLockElement : element.value;\n\t\t\tif (targetElement && currentElement === targetElement) {\n\t\t\t\telement.value = document.pointerLockElement;\n\t\t\t\tif (!element.value) targetElement = triggerElement.value = null;\n\t\t\t}\n\t\t}, listenerOptions);\n\t\tuseEventListener(document, \"pointerlockerror\", () => {\n\t\t\tvar _pointerLockElement2;\n\t\t\tconst currentElement = (_pointerLockElement2 = document.pointerLockElement) !== null && _pointerLockElement2 !== void 0 ? _pointerLockElement2 : element.value;\n\t\t\tif (targetElement && currentElement === targetElement) {\n\t\t\t\tconst action = document.pointerLockElement ? \"release\" : \"acquire\";\n\t\t\t\tthrow new Error(`Failed to ${action} pointer lock.`);\n\t\t\t}\n\t\t}, listenerOptions);\n\t}\n\tasync function lock(e) {\n\t\tvar _unrefElement;\n\t\tif (!isSupported.value) throw new Error(\"Pointer Lock API is not supported by your browser.\");\n\t\ttriggerElement.value = e instanceof Event ? e.currentTarget : null;\n\t\ttargetElement = e instanceof Event ? (_unrefElement = unrefElement(target)) !== null && _unrefElement !== void 0 ? _unrefElement : triggerElement.value : unrefElement(e);\n\t\tif (!targetElement) throw new Error(\"Target element undefined.\");\n\t\ttargetElement.requestPointerLock();\n\t\treturn await until(element).toBe(targetElement);\n\t}\n\tasync function unlock() {\n\t\tif (!element.value) return false;\n\t\tdocument.exitPointerLock();\n\t\tawait until(element).toBeNull();\n\t\treturn true;\n\t}\n\treturn {\n\t\tisSupported,\n\t\telement,\n\t\ttriggerElement,\n\t\tlock,\n\t\tunlock\n\t};\n}\n//#endregion\n//#region usePointerSwipe/index.ts\n/**\n* Reactive swipe detection based on PointerEvents.\n*\n* @see https://vueuse.org/usePointerSwipe\n* @param target\n* @param options\n*/\nfunction usePointerSwipe(target, options = {}) {\n\tconst targetRef = toRef(target);\n\tconst { threshold = 50, onSwipe, onSwipeEnd, onSwipeStart, disableTextSelect = false } = options;\n\tconst posStart = reactive({\n\t\tx: 0,\n\t\ty: 0\n\t});\n\tconst updatePosStart = (x, y) => {\n\t\tposStart.x = x;\n\t\tposStart.y = y;\n\t};\n\tconst posEnd = reactive({\n\t\tx: 0,\n\t\ty: 0\n\t});\n\tconst updatePosEnd = (x, y) => {\n\t\tposEnd.x = x;\n\t\tposEnd.y = y;\n\t};\n\tconst distanceX = computed(() => posStart.x - posEnd.x);\n\tconst distanceY = computed(() => posStart.y - posEnd.y);\n\tconst { max, abs } = Math;\n\tconst isThresholdExceeded = computed(() => max(abs(distanceX.value), abs(distanceY.value)) >= threshold);\n\tconst isSwiping = shallowRef(false);\n\tconst isPointerDown = shallowRef(false);\n\tconst direction = computed(() => {\n\t\tif (!isThresholdExceeded.value) return \"none\";\n\t\tif (abs(distanceX.value) > abs(distanceY.value)) return distanceX.value > 0 ? \"left\" : \"right\";\n\t\telse return distanceY.value > 0 ? \"up\" : \"down\";\n\t});\n\tconst eventIsAllowed = (e) => {\n\t\tvar _ref, _options$pointerTypes, _options$pointerTypes2;\n\t\tconst isReleasingButton = e.buttons === 0;\n\t\tconst isPrimaryButton = e.buttons === 1;\n\t\treturn (_ref = (_options$pointerTypes = (_options$pointerTypes2 = options.pointerTypes) === null || _options$pointerTypes2 === void 0 ? void 0 : _options$pointerTypes2.includes(e.pointerType)) !== null && _options$pointerTypes !== void 0 ? _options$pointerTypes : isReleasingButton || isPrimaryButton) !== null && _ref !== void 0 ? _ref : true;\n\t};\n\tconst listenerOptions = { passive: true };\n\tconst stops = [\n\t\tuseEventListener(target, \"pointerdown\", (e) => {\n\t\t\tif (!eventIsAllowed(e)) return;\n\t\t\tisPointerDown.value = true;\n\t\t\tconst eventTarget = e.target;\n\t\t\teventTarget === null || eventTarget === void 0 || eventTarget.setPointerCapture(e.pointerId);\n\t\t\tconst { clientX: x, clientY: y } = e;\n\t\t\tupdatePosStart(x, y);\n\t\t\tupdatePosEnd(x, y);\n\t\t\tonSwipeStart === null || onSwipeStart === void 0 || onSwipeStart(e);\n\t\t}, listenerOptions),\n\t\tuseEventListener(target, \"pointermove\", (e) => {\n\t\t\tif (!eventIsAllowed(e)) return;\n\t\t\tif (!isPointerDown.value) return;\n\t\t\tconst { clientX: x, clientY: y } = e;\n\t\t\tupdatePosEnd(x, y);\n\t\t\tif (!isSwiping.value && isThresholdExceeded.value) isSwiping.value = true;\n\t\t\tif (isSwiping.value) onSwipe === null || onSwipe === void 0 || onSwipe(e);\n\t\t}, listenerOptions),\n\t\tuseEventListener(target, \"pointerup\", (e) => {\n\t\t\tif (!eventIsAllowed(e)) return;\n\t\t\tif (isSwiping.value) onSwipeEnd === null || onSwipeEnd === void 0 || onSwipeEnd(e, direction.value);\n\t\t\tisPointerDown.value = false;\n\t\t\tisSwiping.value = false;\n\t\t}, listenerOptions)\n\t];\n\ttryOnMounted(() => {\n\t\tvar _targetRef$value;\n\t\t(_targetRef$value = targetRef.value) === null || _targetRef$value === void 0 || (_targetRef$value = _targetRef$value.style) === null || _targetRef$value === void 0 || _targetRef$value.setProperty(\"touch-action\", \"pan-y\");\n\t\tif (disableTextSelect) {\n\t\t\tvar _targetRef$value2, _targetRef$value3, _targetRef$value4;\n\t\t\t(_targetRef$value2 = targetRef.value) === null || _targetRef$value2 === void 0 || (_targetRef$value2 = _targetRef$value2.style) === null || _targetRef$value2 === void 0 || _targetRef$value2.setProperty(\"-webkit-user-select\", \"none\");\n\t\t\t(_targetRef$value3 = targetRef.value) === null || _targetRef$value3 === void 0 || (_targetRef$value3 = _targetRef$value3.style) === null || _targetRef$value3 === void 0 || _targetRef$value3.setProperty(\"-ms-user-select\", \"none\");\n\t\t\t(_targetRef$value4 = targetRef.value) === null || _targetRef$value4 === void 0 || (_targetRef$value4 = _targetRef$value4.style) === null || _targetRef$value4 === void 0 || _targetRef$value4.setProperty(\"user-select\", \"none\");\n\t\t}\n\t});\n\tconst stop = () => stops.forEach((s) => s());\n\treturn {\n\t\tisSwiping: shallowReadonly(isSwiping),\n\t\tdirection: shallowReadonly(direction),\n\t\tposStart: readonly(posStart),\n\t\tposEnd: readonly(posEnd),\n\t\tdistanceX,\n\t\tdistanceY,\n\t\tstop\n\t};\n}\n//#endregion\n//#region usePreferredColorScheme/index.ts\n/**\n* Reactive prefers-color-scheme media query.\n*\n* @see https://vueuse.org/usePreferredColorScheme\n* @param [options]\n*\n* @__NO_SIDE_EFFECTS__\n*/\nfunction usePreferredColorScheme(options) {\n\tconst isLight = useMediaQuery(\"(prefers-color-scheme: light)\", options);\n\tconst isDark = useMediaQuery(\"(prefers-color-scheme: dark)\", options);\n\treturn computed(() => {\n\t\tif (isDark.value) return \"dark\";\n\t\tif (isLight.value) return \"light\";\n\t\treturn \"no-preference\";\n\t});\n}\n//#endregion\n//#region usePreferredContrast/index.ts\n/**\n* Reactive prefers-contrast media query.\n*\n* @see https://vueuse.org/usePreferredContrast\n* @param [options]\n*\n* @__NO_SIDE_EFFECTS__\n*/\nfunction usePreferredContrast(options) {\n\tconst isMore = useMediaQuery(\"(prefers-contrast: more)\", options);\n\tconst isLess = useMediaQuery(\"(prefers-contrast: less)\", options);\n\tconst isCustom = useMediaQuery(\"(prefers-contrast: custom)\", options);\n\treturn computed(() => {\n\t\tif (isMore.value) return \"more\";\n\t\tif (isLess.value) return \"less\";\n\t\tif (isCustom.value) return \"custom\";\n\t\treturn \"no-preference\";\n\t});\n}\n//#endregion\n//#region usePreferredLanguages/index.ts\n/**\n* Reactive Navigator Languages.\n*\n* @see https://vueuse.org/usePreferredLanguages\n* @param options\n*\n* @__NO_SIDE_EFFECTS__\n*/\nfunction usePreferredLanguages(options = {}) {\n\tconst { window = defaultWindow } = options;\n\tif (!window) return shallowRef([\"en\"]);\n\tconst navigator = window.navigator;\n\tconst value = shallowRef(navigator.languages);\n\tuseEventListener(window, \"languagechange\", () => {\n\t\tvalue.value = navigator.languages;\n\t}, { passive: true });\n\treturn value;\n}\n//#endregion\n//#region usePreferredReducedMotion/index.ts\n/**\n* Reactive prefers-reduced-motion media query.\n*\n* @see https://vueuse.org/usePreferredReducedMotion\n* @param [options]\n*\n* @__NO_SIDE_EFFECTS__\n*/\nfunction usePreferredReducedMotion(options) {\n\tconst isReduced = useMediaQuery(\"(prefers-reduced-motion: reduce)\", options);\n\treturn computed(() => {\n\t\tif (isReduced.value) return \"reduce\";\n\t\treturn \"no-preference\";\n\t});\n}\n//#endregion\n//#region usePreferredReducedTransparency/index.ts\n/**\n* Reactive prefers-reduced-transparency media query.\n*\n* @see https://vueuse.org/usePreferredReducedTransparency\n* @param [options]\n*\n* @__NO_SIDE_EFFECTS__\n*/\nfunction usePreferredReducedTransparency(options) {\n\tconst isReduced = useMediaQuery(\"(prefers-reduced-transparency: reduce)\", options);\n\treturn computed(() => {\n\t\tif (isReduced.value) return \"reduce\";\n\t\treturn \"no-preference\";\n\t});\n}\n//#endregion\n//#region usePrevious/index.ts\nfunction usePrevious(value, initialValue) {\n\tconst previous = shallowRef(initialValue);\n\twatch(toRef(value), (_, oldValue) => {\n\t\tprevious.value = oldValue;\n\t}, { flush: \"sync\" });\n\treturn readonly(previous);\n}\n//#endregion\n//#region useScreenSafeArea/index.ts\nconst topVarName = \"--vueuse-safe-area-top\";\nconst rightVarName = \"--vueuse-safe-area-right\";\nconst bottomVarName = \"--vueuse-safe-area-bottom\";\nconst leftVarName = \"--vueuse-safe-area-left\";\n/**\n* Reactive `env(safe-area-inset-*)`\n*\n* @see https://vueuse.org/useScreenSafeArea\n*/\nfunction useScreenSafeArea() {\n\tconst top = shallowRef(\"\");\n\tconst right = shallowRef(\"\");\n\tconst bottom = shallowRef(\"\");\n\tconst left = shallowRef(\"\");\n\tif (isClient) {\n\t\tconst topCssVar = useCssVar(topVarName);\n\t\tconst rightCssVar = useCssVar(rightVarName);\n\t\tconst bottomCssVar = useCssVar(bottomVarName);\n\t\tconst leftCssVar = useCssVar(leftVarName);\n\t\ttopCssVar.value = \"env(safe-area-inset-top, 0px)\";\n\t\trightCssVar.value = \"env(safe-area-inset-right, 0px)\";\n\t\tbottomCssVar.value = \"env(safe-area-inset-bottom, 0px)\";\n\t\tleftCssVar.value = \"env(safe-area-inset-left, 0px)\";\n\t\ttryOnMounted(update);\n\t\tuseEventListener(\"resize\", useDebounceFn(update), { passive: true });\n\t}\n\tfunction update() {\n\t\ttop.value = getValue(topVarName);\n\t\tright.value = getValue(rightVarName);\n\t\tbottom.value = getValue(bottomVarName);\n\t\tleft.value = getValue(leftVarName);\n\t}\n\treturn {\n\t\ttop,\n\t\tright,\n\t\tbottom,\n\t\tleft,\n\t\tupdate\n\t};\n}\nfunction getValue(position) {\n\treturn getComputedStyle(document.documentElement).getPropertyValue(position);\n}\n//#endregion\n//#region useScriptTag/index.ts\n/**\n* Async script tag loading.\n*\n* @see https://vueuse.org/useScriptTag\n* @param src\n* @param onLoaded\n* @param options\n*/\nfunction useScriptTag(src, onLoaded = noop, options = {}) {\n\tconst { immediate = true, manual = false, type = \"text/javascript\", async = true, crossOrigin, referrerPolicy, noModule, defer, document = defaultDocument, attrs = {}, nonce = void 0 } = options;\n\tconst scriptTag = shallowRef(null);\n\tlet _promise = null;\n\t/**\n\t* Load the script specified via `src`.\n\t*\n\t* @param waitForScriptLoad Whether if the Promise should resolve once the \"load\" event is emitted by the <script> attribute, or right after appending it to the DOM.\n\t* @returns Promise<HTMLScriptElement>\n\t*/\n\tconst loadScript = (waitForScriptLoad) => new Promise((resolve, reject) => {\n\t\tconst resolveWithElement = (el) => {\n\t\t\tscriptTag.value = el;\n\t\t\tresolve(el);\n\t\t\treturn el;\n\t\t};\n\t\tif (!document) {\n\t\t\tresolve(false);\n\t\t\treturn;\n\t\t}\n\t\tlet shouldAppend = false;\n\t\tlet el = document.querySelector(`script[src=\"${toValue(src)}\"]`);\n\t\tif (!el) {\n\t\t\tel = document.createElement(\"script\");\n\t\t\tel.type = type;\n\t\t\tel.async = async;\n\t\t\tel.src = toValue(src);\n\t\t\tif (defer) el.defer = defer;\n\t\t\tif (crossOrigin) el.crossOrigin = crossOrigin;\n\t\t\tif (noModule) el.noModule = noModule;\n\t\t\tif (referrerPolicy) el.referrerPolicy = referrerPolicy;\n\t\t\tif (nonce) el.nonce = nonce;\n\t\t\tObject.entries(attrs).forEach(([name, value]) => el === null || el === void 0 ? void 0 : el.setAttribute(name, value));\n\t\t\tshouldAppend = true;\n\t\t} else if (el.hasAttribute(\"data-loaded\")) resolveWithElement(el);\n\t\tconst listenerOptions = { passive: true };\n\t\tuseEventListener(el, \"error\", (event) => reject(event), listenerOptions);\n\t\tuseEventListener(el, \"abort\", (event) => reject(event), listenerOptions);\n\t\tuseEventListener(el, \"load\", () => {\n\t\t\tel.setAttribute(\"data-loaded\", \"true\");\n\t\t\tonLoaded(el);\n\t\t\tresolveWithElement(el);\n\t\t}, listenerOptions);\n\t\tif (shouldAppend) el = document.head.appendChild(el);\n\t\tif (!waitForScriptLoad) resolveWithElement(el);\n\t});\n\t/**\n\t* Exposed singleton wrapper for `loadScript`, avoiding calling it twice.\n\t*\n\t* @param waitForScriptLoad Whether if the Promise should resolve once the \"load\" event is emitted by the <script> attribute, or right after appending it to the DOM.\n\t* @returns Promise<HTMLScriptElement>\n\t*/\n\tconst load = (waitForScriptLoad = true) => {\n\t\tif (!_promise) _promise = loadScript(waitForScriptLoad);\n\t\treturn _promise;\n\t};\n\t/**\n\t* Unload the script specified by `src`.\n\t*/\n\tconst unload = () => {\n\t\tif (!document) return;\n\t\t_promise = null;\n\t\tif (scriptTag.value) scriptTag.value = null;\n\t\tconst el = document.querySelector(`script[src=\"${toValue(src)}\"]`);\n\t\tif (el) document.head.removeChild(el);\n\t};\n\tif (immediate && !manual) tryOnMounted(load);\n\tif (!manual) tryOnUnmounted(unload);\n\treturn {\n\t\tscriptTag,\n\t\tload,\n\t\tunload\n\t};\n}\n//#endregion\n//#region useScrollLock/index.ts\nfunction checkOverflowScroll(ele) {\n\tconst style = window.getComputedStyle(ele);\n\tif (style.overflowX === \"scroll\" || style.overflowY === \"scroll\" || style.overflowX === \"auto\" && ele.clientWidth < ele.scrollWidth || style.overflowY === \"auto\" && ele.clientHeight < ele.scrollHeight) return true;\n\telse {\n\t\tconst parent = ele.parentNode;\n\t\tif (!parent || parent.tagName === \"BODY\") return false;\n\t\treturn checkOverflowScroll(parent);\n\t}\n}\nfunction preventDefault(rawEvent) {\n\tconst e = rawEvent || window.event;\n\tconst _target = e.target;\n\tif (checkOverflowScroll(_target)) return false;\n\tif (e.touches.length > 1) return true;\n\tif (e.preventDefault) e.preventDefault();\n\treturn false;\n}\nconst elInitialOverflow = /* @__PURE__ */ new WeakMap();\n/**\n* Lock scrolling of the element.\n*\n* @see https://vueuse.org/useScrollLock\n* @param element\n*/\nfunction useScrollLock(element, initialState = false) {\n\tconst isLocked = shallowRef(initialState);\n\tlet stopTouchMoveListener = null;\n\tlet initialOverflow = \"\";\n\twatch(toRef(element), (el) => {\n\t\tconst target = resolveElement(toValue(el));\n\t\tif (target) {\n\t\t\tconst ele = target;\n\t\t\tif (!elInitialOverflow.get(ele)) elInitialOverflow.set(ele, ele.style.overflow);\n\t\t\tif (ele.style.overflow !== \"hidden\") initialOverflow = ele.style.overflow;\n\t\t\tif (ele.style.overflow === \"hidden\") return isLocked.value = true;\n\t\t\tif (isLocked.value) return ele.style.overflow = \"hidden\";\n\t\t}\n\t}, { immediate: true });\n\tconst lock = () => {\n\t\tconst el = resolveElement(toValue(element));\n\t\tif (!el || isLocked.value) return;\n\t\tif (isIOS) stopTouchMoveListener = useEventListener(el, \"touchmove\", (e) => {\n\t\t\tpreventDefault(e);\n\t\t}, { passive: false });\n\t\tel.style.overflow = \"hidden\";\n\t\tisLocked.value = true;\n\t};\n\tconst unlock = () => {\n\t\tconst el = resolveElement(toValue(element));\n\t\tif (!el || !isLocked.value) return;\n\t\tif (isIOS) stopTouchMoveListener === null || stopTouchMoveListener === void 0 || stopTouchMoveListener();\n\t\tel.style.overflow = initialOverflow;\n\t\telInitialOverflow.delete(el);\n\t\tisLocked.value = false;\n\t};\n\ttryOnScopeDispose(unlock);\n\treturn computed({\n\t\tget() {\n\t\t\treturn isLocked.value;\n\t\t},\n\t\tset(v) {\n\t\t\tif (v) lock();\n\t\t\telse unlock();\n\t\t}\n\t});\n}\n//#endregion\n//#region useSessionStorage/index.ts\n/**\n* Reactive SessionStorage.\n*\n* @see https://vueuse.org/useSessionStorage\n* @param key\n* @param initialValue\n* @param options\n*/\nfunction useSessionStorage(key, initialValue, options = {}) {\n\tconst { window = defaultWindow } = options;\n\treturn useStorage(key, initialValue, window === null || window === void 0 ? void 0 : window.sessionStorage, options);\n}\n//#endregion\n//#region useShare/index.ts\n/**\n* Reactive Web Share API.\n*\n* @see https://vueuse.org/useShare\n* @param shareOptions\n* @param options\n*\n* @__NO_SIDE_EFFECTS__\n*/\nfunction useShare(shareOptions = {}, options = {}) {\n\tconst { navigator = defaultNavigator } = options;\n\tconst _navigator = navigator;\n\tconst isSupported = /* @__PURE__ */ useSupported(() => _navigator && \"canShare\" in _navigator);\n\tconst share = async (overrideOptions = {}) => {\n\t\tif (isSupported.value) {\n\t\t\tconst data = {\n\t\t\t\t...toValue(shareOptions),\n\t\t\t\t...toValue(overrideOptions)\n\t\t\t};\n\t\t\tlet granted = false;\n\t\t\tif (_navigator.canShare) granted = _navigator.canShare(data);\n\t\t\tif (granted) return _navigator.share(data);\n\t\t}\n\t};\n\treturn {\n\t\tisSupported,\n\t\tshare\n\t};\n}\n//#endregion\n//#region useSorted/index.ts\nconst defaultSortFn = (source, compareFn) => source.sort(compareFn);\nconst defaultCompare = (a, b) => a - b;\nfunction useSorted(...args) {\n\tconst [source] = args;\n\tlet compareFn = defaultCompare;\n\tlet options = {};\n\tif (args.length === 2) if (typeof args[1] === \"object\") {\n\t\tvar _options$compareFn;\n\t\toptions = args[1];\n\t\tcompareFn = (_options$compareFn = options.compareFn) !== null && _options$compareFn !== void 0 ? _options$compareFn : defaultCompare;\n\t} else {\n\t\tvar _args$;\n\t\tcompareFn = (_args$ = args[1]) !== null && _args$ !== void 0 ? _args$ : defaultCompare;\n\t}\n\telse if (args.length > 2) {\n\t\tvar _args$2, _args$3;\n\t\tcompareFn = (_args$2 = args[1]) !== null && _args$2 !== void 0 ? _args$2 : defaultCompare;\n\t\toptions = (_args$3 = args[2]) !== null && _args$3 !== void 0 ? _args$3 : {};\n\t}\n\tconst { dirty = false, sortFn = defaultSortFn } = options;\n\tif (!dirty) return computed(() => sortFn([...toValue(source)], compareFn));\n\twatchEffect(() => {\n\t\tconst result = sortFn(toValue(source), compareFn);\n\t\tif (isRef(source)) source.value = result;\n\t\telse source.splice(0, source.length, ...result);\n\t});\n\treturn source;\n}\n//#endregion\n//#region useSpeechRecognition/index.ts\n/**\n* Reactive SpeechRecognition.\n*\n* @see https://vueuse.org/useSpeechRecognition\n* @see https://developer.mozilla.org/en-US/docs/Web/API/SpeechRecognition SpeechRecognition\n* @param options\n*/\nfunction useSpeechRecognition(options = {}) {\n\tconst { interimResults = true, continuous = true, maxAlternatives = 1, window = defaultWindow } = options;\n\tconst lang = toRef(options.lang || \"en-US\");\n\tconst isListening = shallowRef(false);\n\tconst isFinal = shallowRef(false);\n\tconst result = shallowRef(\"\");\n\tconst error = shallowRef(void 0);\n\tlet recognition;\n\tconst start = () => {\n\t\tisListening.value = true;\n\t};\n\tconst stop = () => {\n\t\tisListening.value = false;\n\t};\n\tconst toggle = (value = !isListening.value) => {\n\t\tif (value) start();\n\t\telse stop();\n\t};\n\tconst SpeechRecognition = window && (window.SpeechRecognition || window.webkitSpeechRecognition);\n\tconst isSupported = /* @__PURE__ */ useSupported(() => SpeechRecognition);\n\tif (isSupported.value) {\n\t\trecognition = new SpeechRecognition();\n\t\trecognition.continuous = continuous;\n\t\trecognition.interimResults = interimResults;\n\t\trecognition.lang = toValue(lang);\n\t\trecognition.maxAlternatives = maxAlternatives;\n\t\trecognition.onstart = () => {\n\t\t\tisListening.value = true;\n\t\t\tisFinal.value = false;\n\t\t};\n\t\twatch(lang, (lang) => {\n\t\t\tif (recognition && !isListening.value) recognition.lang = lang;\n\t\t});\n\t\trecognition.onresult = (event) => {\n\t\t\tconst currentResult = event.results[event.resultIndex];\n\t\t\tconst { transcript } = currentResult[0];\n\t\t\tisFinal.value = currentResult.isFinal;\n\t\t\tresult.value = transcript;\n\t\t\terror.value = void 0;\n\t\t};\n\t\trecognition.onerror = (event) => {\n\t\t\terror.value = event;\n\t\t};\n\t\trecognition.onend = () => {\n\t\t\tisListening.value = false;\n\t\t\trecognition.lang = toValue(lang);\n\t\t};\n\t\twatch(isListening, (newValue, oldValue) => {\n\t\t\tif (newValue === oldValue) return;\n\t\t\ttry {\n\t\t\t\tif (newValue) recognition.start();\n\t\t\t\telse recognition.stop();\n\t\t\t} catch (err) {\n\t\t\t\terror.value = err;\n\t\t\t}\n\t\t});\n\t}\n\ttryOnScopeDispose(() => {\n\t\tstop();\n\t});\n\treturn {\n\t\tisSupported,\n\t\tisListening,\n\t\tisFinal,\n\t\trecognition,\n\t\tresult,\n\t\terror,\n\t\ttoggle,\n\t\tstart,\n\t\tstop\n\t};\n}\n//#endregion\n//#region useSpeechSynthesis/index.ts\n/**\n* Reactive SpeechSynthesis.\n*\n* @see https://vueuse.org/useSpeechSynthesis\n* @see https://developer.mozilla.org/en-US/docs/Web/API/SpeechSynthesis SpeechSynthesis\n*/\nfunction useSpeechSynthesis(text, options = {}) {\n\tconst { pitch = 1, rate = 1, volume = 1, window = defaultWindow, onBoundary } = options;\n\tconst synth = window && window.speechSynthesis;\n\tconst isSupported = /* @__PURE__ */ useSupported(() => synth);\n\tconst isPlaying = shallowRef(false);\n\tconst status = shallowRef(\"init\");\n\tconst spokenText = toRef(text || \"\");\n\tconst lang = toRef(options.lang || \"en-US\");\n\tconst error = shallowRef(void 0);\n\tconst toggle = (value = !isPlaying.value) => {\n\t\tisPlaying.value = value;\n\t};\n\tconst bindEventsForUtterance = (utterance) => {\n\t\tutterance.lang = toValue(lang);\n\t\tutterance.voice = toValue(options.voice) || null;\n\t\tutterance.pitch = toValue(pitch);\n\t\tutterance.rate = toValue(rate);\n\t\tutterance.volume = toValue(volume);\n\t\tutterance.onstart = () => {\n\t\t\tisPlaying.value = true;\n\t\t\tstatus.value = \"play\";\n\t\t};\n\t\tutterance.onpause = () => {\n\t\t\tisPlaying.value = false;\n\t\t\tstatus.value = \"pause\";\n\t\t};\n\t\tutterance.onresume = () => {\n\t\t\tisPlaying.value = true;\n\t\t\tstatus.value = \"play\";\n\t\t};\n\t\tutterance.onend = () => {\n\t\t\tisPlaying.value = false;\n\t\t\tstatus.value = \"end\";\n\t\t};\n\t\tutterance.onerror = (event) => {\n\t\t\terror.value = event;\n\t\t};\n\t\tutterance.onboundary = (event) => {\n\t\t\tonBoundary === null || onBoundary === void 0 || onBoundary(event);\n\t\t};\n\t};\n\tconst utterance = computed(() => {\n\t\tisPlaying.value = false;\n\t\tstatus.value = \"init\";\n\t\tconst newUtterance = new SpeechSynthesisUtterance(spokenText.value);\n\t\tbindEventsForUtterance(newUtterance);\n\t\treturn newUtterance;\n\t});\n\tconst speak = () => {\n\t\tsynth.cancel();\n\t\tif (utterance) synth.speak(utterance.value);\n\t};\n\tconst stop = () => {\n\t\tsynth.cancel();\n\t\tisPlaying.value = false;\n\t};\n\tif (isSupported.value) {\n\t\tbindEventsForUtterance(utterance.value);\n\t\twatch(lang, (lang) => {\n\t\t\tif (utterance.value && !isPlaying.value) utterance.value.lang = lang;\n\t\t});\n\t\tif (options.voice) watch(options.voice, () => {\n\t\t\tsynth.cancel();\n\t\t});\n\t\twatch(isPlaying, () => {\n\t\t\tif (isPlaying.value) synth.resume();\n\t\t\telse synth.pause();\n\t\t});\n\t}\n\ttryOnScopeDispose(() => {\n\t\tisPlaying.value = false;\n\t});\n\treturn {\n\t\tisSupported,\n\t\tisPlaying,\n\t\tstatus,\n\t\tutterance,\n\t\terror,\n\t\tstop,\n\t\ttoggle,\n\t\tspeak\n\t};\n}\n//#endregion\n//#region useStepper/index.ts\n/* @__NO_SIDE_EFFECTS__ */\nfunction useStepper(steps, initialStep) {\n\tconst stepsRef = ref(steps);\n\tconst stepNames = computed(() => Array.isArray(stepsRef.value) ? stepsRef.value : Object.keys(stepsRef.value));\n\tconst index = ref(stepNames.value.indexOf(initialStep !== null && initialStep !== void 0 ? initialStep : stepNames.value[0]));\n\tconst current = computed(() => at(index.value));\n\tconst isFirst = computed(() => index.value === 0);\n\tconst isLast = computed(() => index.value === stepNames.value.length - 1);\n\tconst next = computed(() => stepNames.value[index.value + 1]);\n\tconst previous = computed(() => stepNames.value[index.value - 1]);\n\tfunction at(index) {\n\t\tif (Array.isArray(stepsRef.value)) return stepsRef.value[index];\n\t\treturn stepsRef.value[stepNames.value[index]];\n\t}\n\tfunction get(step) {\n\t\tif (!stepNames.value.includes(step)) return;\n\t\treturn at(stepNames.value.indexOf(step));\n\t}\n\tfunction goTo(step) {\n\t\tif (stepNames.value.includes(step)) index.value = stepNames.value.indexOf(step);\n\t}\n\tfunction goToNext() {\n\t\tif (isLast.value) return;\n\t\tindex.value++;\n\t}\n\tfunction goToPrevious() {\n\t\tif (isFirst.value) return;\n\t\tindex.value--;\n\t}\n\tfunction goBackTo(step) {\n\t\tif (isAfter(step)) goTo(step);\n\t}\n\tfunction isNext(step) {\n\t\treturn stepNames.value.indexOf(step) === index.value + 1;\n\t}\n\tfunction isPrevious(step) {\n\t\treturn stepNames.value.indexOf(step) === index.value - 1;\n\t}\n\tfunction isCurrent(step) {\n\t\treturn stepNames.value.indexOf(step) === index.value;\n\t}\n\tfunction isBefore(step) {\n\t\treturn index.value < stepNames.value.indexOf(step);\n\t}\n\tfunction isAfter(step) {\n\t\treturn index.value > stepNames.value.indexOf(step);\n\t}\n\treturn {\n\t\tsteps: stepsRef,\n\t\tstepNames,\n\t\tindex,\n\t\tcurrent,\n\t\tnext,\n\t\tprevious,\n\t\tisFirst,\n\t\tisLast,\n\t\tat,\n\t\tget,\n\t\tgoTo,\n\t\tgoToNext,\n\t\tgoToPrevious,\n\t\tgoBackTo,\n\t\tisNext,\n\t\tisPrevious,\n\t\tisCurrent,\n\t\tisBefore,\n\t\tisAfter\n\t};\n}\n//#endregion\n//#region useStorageAsync/index.ts\n/**\n* Reactive Storage with async support.\n*\n* @see https://vueuse.org/useStorageAsync\n* @param key\n* @param initialValue\n* @param storage\n* @param options\n*/\nfunction useStorageAsync(key, initialValue, storage, options = {}) {\n\tvar _options$serializer;\n\tconst { flush = \"pre\", deep = true, listenToStorageChanges = true, writeDefaults = true, mergeDefaults = false, shallow, window = defaultWindow, eventFilter, onError = (e) => {\n\t\tconsole.error(e);\n\t}, onReady } = options;\n\tconst rawInit = toValue(initialValue);\n\tconst type = guessSerializerType(rawInit);\n\tconst data = (shallow ? shallowRef : ref)(toValue(initialValue));\n\tconst serializer = (_options$serializer = options.serializer) !== null && _options$serializer !== void 0 ? _options$serializer : StorageSerializers[type];\n\tif (!storage) try {\n\t\tstorage = getSSRHandler(\"getDefaultStorageAsync\", () => defaultWindow === null || defaultWindow === void 0 ? void 0 : defaultWindow.localStorage)();\n\t} catch (e) {\n\t\tonError(e);\n\t}\n\tasync function read(event) {\n\t\tif (!storage || event && event.key !== key) return;\n\t\ttry {\n\t\t\tconst rawValue = event ? event.newValue : await storage.getItem(key);\n\t\t\tif (rawValue == null) {\n\t\t\t\tdata.value = rawInit;\n\t\t\t\tif (writeDefaults && rawInit !== null) await storage.setItem(key, await serializer.write(rawInit));\n\t\t\t} else if (mergeDefaults) {\n\t\t\t\tconst value = await serializer.read(rawValue);\n\t\t\t\tif (typeof mergeDefaults === \"function\") data.value = mergeDefaults(value, rawInit);\n\t\t\t\telse if (type === \"object\" && !Array.isArray(value)) data.value = {\n\t\t\t\t\t...rawInit,\n\t\t\t\t\t...value\n\t\t\t\t};\n\t\t\t\telse data.value = value;\n\t\t\t} else data.value = await serializer.read(rawValue);\n\t\t} catch (e) {\n\t\t\tonError(e);\n\t\t}\n\t}\n\tconst promise = new Promise((resolve) => {\n\t\tread().then(() => {\n\t\t\tonReady === null || onReady === void 0 || onReady(data.value);\n\t\t\tresolve(data);\n\t\t});\n\t});\n\tif (window && listenToStorageChanges) useEventListener(window, \"storage\", (e) => Promise.resolve().then(() => read(e)), { passive: true });\n\tif (storage) watchWithFilter(data, async () => {\n\t\ttry {\n\t\t\tif (data.value == null) await storage.removeItem(key);\n\t\t\telse await storage.setItem(key, await serializer.write(data.value));\n\t\t} catch (e) {\n\t\t\tonError(e);\n\t\t}\n\t}, {\n\t\tflush,\n\t\tdeep,\n\t\teventFilter\n\t});\n\tObject.assign(data, {\n\t\tthen: promise.then.bind(promise),\n\t\tcatch: promise.catch.bind(promise)\n\t});\n\treturn data;\n}\n//#endregion\n//#region useStyleTag/index.ts\nlet _id = 0;\n/**\n* Inject <style> element in head.\n*\n* Overload: Omitted id\n*\n* @see https://vueuse.org/useStyleTag\n* @param css\n* @param options\n*/\nfunction useStyleTag(css, options = {}) {\n\tconst isLoaded = shallowRef(false);\n\tconst { document = defaultDocument, immediate = true, manual = false, id = `vueuse_styletag_${++_id}` } = options;\n\tconst cssRef = shallowRef(css);\n\tlet stop = () => {};\n\tconst load = () => {\n\t\tif (!document) return;\n\t\tconst el = document.getElementById(id) || document.createElement(\"style\");\n\t\tif (!el.isConnected) {\n\t\t\tel.id = id;\n\t\t\tif (options.nonce) el.nonce = options.nonce;\n\t\t\tif (options.media) el.media = options.media;\n\t\t\tdocument.head.appendChild(el);\n\t\t}\n\t\tif (isLoaded.value) return;\n\t\tstop = watch(cssRef, (value) => {\n\t\t\tel.textContent = value;\n\t\t}, { immediate: true });\n\t\tisLoaded.value = true;\n\t};\n\tconst unload = () => {\n\t\tif (!document || !isLoaded.value) return;\n\t\tstop();\n\t\tdocument.head.removeChild(document.getElementById(id));\n\t\tisLoaded.value = false;\n\t};\n\tif (immediate && !manual) tryOnMounted(load);\n\tif (!manual) tryOnScopeDispose(unload);\n\treturn {\n\t\tid,\n\t\tcss: cssRef,\n\t\tunload,\n\t\tload,\n\t\tisLoaded: shallowReadonly(isLoaded)\n\t};\n}\n//#endregion\n//#region useSwipe/index.ts\n/**\n* Reactive swipe detection.\n*\n* @see https://vueuse.org/useSwipe\n* @param target\n* @param options\n*/\nfunction useSwipe(target, options = {}) {\n\tconst { threshold = 50, onSwipe, onSwipeEnd, onSwipeStart, passive = true } = options;\n\tconst coordsStart = reactive({\n\t\tx: 0,\n\t\ty: 0\n\t});\n\tconst coordsEnd = reactive({\n\t\tx: 0,\n\t\ty: 0\n\t});\n\tconst diffX = computed(() => coordsStart.x - coordsEnd.x);\n\tconst diffY = computed(() => coordsStart.y - coordsEnd.y);\n\tconst { max, abs } = Math;\n\tconst isThresholdExceeded = computed(() => max(abs(diffX.value), abs(diffY.value)) >= threshold);\n\tconst isSwiping = shallowRef(false);\n\tconst direction = computed(() => {\n\t\tif (!isThresholdExceeded.value) return \"none\";\n\t\tif (abs(diffX.value) > abs(diffY.value)) return diffX.value > 0 ? \"left\" : \"right\";\n\t\telse return diffY.value > 0 ? \"up\" : \"down\";\n\t});\n\tconst getTouchEventCoords = (e) => [e.touches[0].clientX, e.touches[0].clientY];\n\tconst updateCoordsStart = (x, y) => {\n\t\tcoordsStart.x = x;\n\t\tcoordsStart.y = y;\n\t};\n\tconst updateCoordsEnd = (x, y) => {\n\t\tcoordsEnd.x = x;\n\t\tcoordsEnd.y = y;\n\t};\n\tconst listenerOptions = {\n\t\tpassive,\n\t\tcapture: !passive\n\t};\n\tconst onTouchEnd = (e) => {\n\t\tif (isSwiping.value) onSwipeEnd === null || onSwipeEnd === void 0 || onSwipeEnd(e, direction.value);\n\t\tisSwiping.value = false;\n\t};\n\tconst stops = [\n\t\tuseEventListener(target, \"touchstart\", (e) => {\n\t\t\tif (e.touches.length !== 1) return;\n\t\t\tconst [x, y] = getTouchEventCoords(e);\n\t\t\tupdateCoordsStart(x, y);\n\t\t\tupdateCoordsEnd(x, y);\n\t\t\tonSwipeStart === null || onSwipeStart === void 0 || onSwipeStart(e);\n\t\t}, listenerOptions),\n\t\tuseEventListener(target, \"touchmove\", (e) => {\n\t\t\tif (e.touches.length !== 1) return;\n\t\t\tconst [x, y] = getTouchEventCoords(e);\n\t\t\tupdateCoordsEnd(x, y);\n\t\t\tif (listenerOptions.capture && !listenerOptions.passive && Math.abs(diffX.value) > Math.abs(diffY.value)) e.preventDefault();\n\t\t\tif (!isSwiping.value && isThresholdExceeded.value) isSwiping.value = true;\n\t\t\tif (isSwiping.value) onSwipe === null || onSwipe === void 0 || onSwipe(e);\n\t\t}, listenerOptions),\n\t\tuseEventListener(target, [\"touchend\", \"touchcancel\"], onTouchEnd, listenerOptions)\n\t];\n\tconst stop = () => stops.forEach((s) => s());\n\treturn {\n\t\tisSwiping,\n\t\tdirection,\n\t\tcoordsStart,\n\t\tcoordsEnd,\n\t\tlengthX: diffX,\n\t\tlengthY: diffY,\n\t\tstop\n\t};\n}\n//#endregion\n//#region useTemplateRefsList/index.ts\n/* @__NO_SIDE_EFFECTS__ */\nfunction useTemplateRefsList() {\n\tconst refs = ref([]);\n\trefs.value.set = (el) => {\n\t\tif (el) refs.value.push(el);\n\t};\n\tonBeforeUpdate(() => {\n\t\trefs.value.length = 0;\n\t});\n\treturn refs;\n}\n//#endregion\n//#region useTextDirection/index.ts\n/**\n* Reactive dir of the element's text.\n*\n* @see https://vueuse.org/useTextDirection\n*\n* @__NO_SIDE_EFFECTS__\n*/\nfunction useTextDirection(options = {}) {\n\tconst { document = defaultDocument, selector = \"html\", observe = false, initialValue = \"ltr\" } = options;\n\tfunction getValue() {\n\t\tvar _ref, _document$querySelect;\n\t\treturn (_ref = document === null || document === void 0 || (_document$querySelect = document.querySelector(selector)) === null || _document$querySelect === void 0 ? void 0 : _document$querySelect.getAttribute(\"dir\")) !== null && _ref !== void 0 ? _ref : initialValue;\n\t}\n\tconst dir = shallowRef(getValue());\n\ttryOnMounted(() => dir.value = getValue());\n\tif (observe && document) useMutationObserver(document.querySelector(selector), () => dir.value = getValue(), { attributes: true });\n\treturn computed({\n\t\tget() {\n\t\t\treturn dir.value;\n\t\t},\n\t\tset(v) {\n\t\t\tvar _document$querySelect2, _document$querySelect3;\n\t\t\tdir.value = v;\n\t\t\tif (!document) return;\n\t\t\tif (dir.value) (_document$querySelect2 = document.querySelector(selector)) === null || _document$querySelect2 === void 0 || _document$querySelect2.setAttribute(\"dir\", dir.value);\n\t\t\telse (_document$querySelect3 = document.querySelector(selector)) === null || _document$querySelect3 === void 0 || _document$querySelect3.removeAttribute(\"dir\");\n\t\t}\n\t});\n}\n//#endregion\n//#region useTextSelection/index.ts\nfunction getRangesFromSelection(selection) {\n\tvar _selection$rangeCount;\n\tconst rangeCount = (_selection$rangeCount = selection.rangeCount) !== null && _selection$rangeCount !== void 0 ? _selection$rangeCount : 0;\n\treturn Array.from({ length: rangeCount }, (_, i) => selection.getRangeAt(i));\n}\n/**\n* Reactively track user text selection based on [`Window.getSelection`](https://developer.mozilla.org/en-US/docs/Web/API/Window/getSelection).\n*\n* @see https://vueuse.org/useTextSelection\n*\n* @__NO_SIDE_EFFECTS__\n*/\nfunction useTextSelection(options = {}) {\n\tvar _window$getSelection;\n\tconst { window = defaultWindow } = options;\n\tconst selection = shallowRef((_window$getSelection = window === null || window === void 0 ? void 0 : window.getSelection()) !== null && _window$getSelection !== void 0 ? _window$getSelection : null);\n\tconst text = computed(() => {\n\t\tvar _selection$value$toSt, _selection$value;\n\t\treturn (_selection$value$toSt = (_selection$value = selection.value) === null || _selection$value === void 0 ? void 0 : _selection$value.toString()) !== null && _selection$value$toSt !== void 0 ? _selection$value$toSt : \"\";\n\t});\n\tconst ranges = computed(() => selection.value ? getRangesFromSelection(selection.value) : []);\n\tconst rects = computed(() => ranges.value.map((range) => range.getBoundingClientRect()));\n\tfunction onSelectionChange() {\n\t\tselection.value = null;\n\t\tif (window) selection.value = window.getSelection();\n\t}\n\tif (window) useEventListener(window.document, \"selectionchange\", onSelectionChange, { passive: true });\n\treturn {\n\t\ttext,\n\t\trects,\n\t\tranges,\n\t\tselection\n\t};\n}\n//#endregion\n//#region useTextareaAutosize/index.ts\n/**\n* Call window.requestAnimationFrame(), if not available, just call the function\n*\n* @param window\n* @param fn\n*/\nfunction tryRequestAnimationFrame(window = defaultWindow, fn) {\n\tif (window && typeof window.requestAnimationFrame === \"function\") window.requestAnimationFrame(fn);\n\telse fn();\n}\nfunction useTextareaAutosize(options = {}) {\n\tvar _options$input, _options$styleProp;\n\tconst { window = defaultWindow } = options;\n\tconst textarea = toRef(options === null || options === void 0 ? void 0 : options.element);\n\tconst input = toRef((_options$input = options === null || options === void 0 ? void 0 : options.input) !== null && _options$input !== void 0 ? _options$input : \"\");\n\tconst styleProp = (_options$styleProp = options === null || options === void 0 ? void 0 : options.styleProp) !== null && _options$styleProp !== void 0 ? _options$styleProp : \"height\";\n\tconst textareaScrollHeight = shallowRef(1);\n\tconst textareaOldWidth = shallowRef(0);\n\tfunction triggerResize() {\n\t\tvar _textarea$value;\n\t\tif (!textarea.value) return;\n\t\tlet height = \"\";\n\t\tconst maxHeight = options === null || options === void 0 ? void 0 : options.maxHeight;\n\t\ttextarea.value.style[styleProp] = \"1px\";\n\t\ttextareaScrollHeight.value = (_textarea$value = textarea.value) === null || _textarea$value === void 0 ? void 0 : _textarea$value.scrollHeight;\n\t\tconst _styleTarget = toValue(options === null || options === void 0 ? void 0 : options.styleTarget);\n\t\tconst styleHeight = maxHeight != null ? `${Math.min(textareaScrollHeight.value, maxHeight)}px` : `${textareaScrollHeight.value}px`;\n\t\tif (_styleTarget) _styleTarget.style[styleProp] = styleHeight;\n\t\telse height = styleHeight;\n\t\ttextarea.value.style[styleProp] = height;\n\t}\n\twatch([input, textarea], () => nextTick(triggerResize), { immediate: true });\n\twatch(textareaScrollHeight, () => {\n\t\tvar _options$onResize;\n\t\treturn options === null || options === void 0 || (_options$onResize = options.onResize) === null || _options$onResize === void 0 ? void 0 : _options$onResize.call(options);\n\t});\n\tuseResizeObserver(textarea, ([{ contentRect }]) => {\n\t\tif (textareaOldWidth.value === contentRect.width) return;\n\t\ttryRequestAnimationFrame(window, () => {\n\t\t\ttextareaOldWidth.value = contentRect.width;\n\t\t\ttriggerResize();\n\t\t});\n\t});\n\tif (options === null || options === void 0 ? void 0 : options.watch) watch(options.watch, triggerResize, {\n\t\timmediate: true,\n\t\tdeep: true\n\t});\n\treturn {\n\t\ttextarea,\n\t\tinput,\n\t\ttriggerResize\n\t};\n}\n//#endregion\n//#region useThrottledRefHistory/index.ts\n/**\n* Shorthand for [useRefHistory](https://vueuse.org/useRefHistory) with throttled filter.\n*\n* @see https://vueuse.org/useThrottledRefHistory\n* @param source\n* @param options\n*/\nfunction useThrottledRefHistory(source, options = {}) {\n\tconst { throttle = 200, trailing = true } = options;\n\tconst filter = throttleFilter(throttle, trailing);\n\treturn { ...useRefHistory(source, {\n\t\t...options,\n\t\teventFilter: filter\n\t}) };\n}\n//#endregion\n//#region useTimeAgo/index.ts\nconst DEFAULT_UNITS = [\n\t{\n\t\tmax: 6e4,\n\t\tvalue: 1e3,\n\t\tname: \"second\"\n\t},\n\t{\n\t\tmax: 276e4,\n\t\tvalue: 6e4,\n\t\tname: \"minute\"\n\t},\n\t{\n\t\tmax: 72e6,\n\t\tvalue: 36e5,\n\t\tname: \"hour\"\n\t},\n\t{\n\t\tmax: 5184e5,\n\t\tvalue: 864e5,\n\t\tname: \"day\"\n\t},\n\t{\n\t\tmax: 24192e5,\n\t\tvalue: 6048e5,\n\t\tname: \"week\"\n\t},\n\t{\n\t\tmax: 28512e6,\n\t\tvalue: 2592e6,\n\t\tname: \"month\"\n\t},\n\t{\n\t\tmax: Number.POSITIVE_INFINITY,\n\t\tvalue: 31536e6,\n\t\tname: \"year\"\n\t}\n];\nconst DEFAULT_MESSAGES = {\n\tjustNow: \"just now\",\n\tpast: (n) => /\\d/.test(n) ? `${n} ago` : n,\n\tfuture: (n) => /\\d/.test(n) ? `in ${n}` : n,\n\tmonth: (n, past) => n === 1 ? past ? \"last month\" : \"next month\" : `${n} month${n > 1 ? \"s\" : \"\"}`,\n\tyear: (n, past) => n === 1 ? past ? \"last year\" : \"next year\" : `${n} year${n > 1 ? \"s\" : \"\"}`,\n\tday: (n, past) => n === 1 ? past ? \"yesterday\" : \"tomorrow\" : `${n} day${n > 1 ? \"s\" : \"\"}`,\n\tweek: (n, past) => n === 1 ? past ? \"last week\" : \"next week\" : `${n} week${n > 1 ? \"s\" : \"\"}`,\n\thour: (n) => `${n} hour${n > 1 ? \"s\" : \"\"}`,\n\tminute: (n) => `${n} minute${n > 1 ? \"s\" : \"\"}`,\n\tsecond: (n) => `${n} second${n > 1 ? \"s\" : \"\"}`,\n\tinvalid: \"\"\n};\nfunction DEFAULT_FORMATTER(date) {\n\treturn date.toISOString().slice(0, 10);\n}\nfunction getDefaultScheduler$4(options) {\n\tif (\"updateInterval\" in options) {\n\t\tconst { updateInterval = 3e4 } = options;\n\t\treturn (cb) => useIntervalFn(cb, updateInterval);\n\t}\n\treturn (cb) => useIntervalFn(cb, 3e4);\n}\n/**\n* Reactive time ago formatter.\n*\n* @see https://vueuse.org/useTimeAgo\n*\n* @__NO_SIDE_EFFECTS__\n*/\nfunction useTimeAgo(time, options = {}) {\n\tconst { controls: exposeControls = false, scheduler = getDefaultScheduler$4(options) } = options;\n\tconst { now, ...controls } = useNow({\n\t\tscheduler,\n\t\tcontrols: true\n\t});\n\tconst timeAgo = computed(() => formatTimeAgo(new Date(toValue(time)), options, toValue(now)));\n\tif (exposeControls) return {\n\t\ttimeAgo,\n\t\t...controls\n\t};\n\telse return timeAgo;\n}\nfunction formatTimeAgo(from, options = {}, now = Date.now()) {\n\tconst { max, messages = DEFAULT_MESSAGES, fullDateFormatter = DEFAULT_FORMATTER, units = DEFAULT_UNITS, showSecond = false, rounding = \"round\" } = options;\n\tconst roundFn = typeof rounding === \"number\" ? (n) => +n.toFixed(rounding) : Math[rounding];\n\tconst diff = +now - +from;\n\tconst absDiff = Math.abs(diff);\n\tfunction getValue(diff, unit) {\n\t\treturn roundFn(Math.abs(diff) / unit.value);\n\t}\n\tfunction format(diff, unit) {\n\t\tconst val = getValue(diff, unit);\n\t\tconst past = diff > 0;\n\t\tconst str = applyFormat(unit.name, val, past);\n\t\treturn applyFormat(past ? \"past\" : \"future\", str, past);\n\t}\n\tfunction applyFormat(name, val, isPast) {\n\t\tconst formatter = messages[name];\n\t\tif (typeof formatter === \"function\") return formatter(val, isPast);\n\t\treturn formatter.replace(\"{0}\", val.toString());\n\t}\n\tif (absDiff < 6e4 && !showSecond) return messages.justNow;\n\tif (typeof max === \"number\" && absDiff > max) return fullDateFormatter(new Date(from));\n\tif (typeof max === \"string\") {\n\t\tvar _units$find;\n\t\tconst unitMax = (_units$find = units.find((i) => i.name === max)) === null || _units$find === void 0 ? void 0 : _units$find.max;\n\t\tif (unitMax && absDiff > unitMax) return fullDateFormatter(new Date(from));\n\t}\n\tfor (const [idx, unit] of units.entries()) {\n\t\tif (getValue(diff, unit) <= 0 && units[idx - 1]) return format(diff, units[idx - 1]);\n\t\tif (absDiff < unit.max) return format(diff, unit);\n\t}\n\treturn messages.invalid;\n}\n//#endregion\n//#region useTimeAgoIntl/index.ts\nconst UNITS = [\n\t{\n\t\tname: \"year\",\n\t\tms: 31536e6\n\t},\n\t{\n\t\tname: \"month\",\n\t\tms: 2592e6\n\t},\n\t{\n\t\tname: \"week\",\n\t\tms: 6048e5\n\t},\n\t{\n\t\tname: \"day\",\n\t\tms: 864e5\n\t},\n\t{\n\t\tname: \"hour\",\n\t\tms: 36e5\n\t},\n\t{\n\t\tname: \"minute\",\n\t\tms: 6e4\n\t},\n\t{\n\t\tname: \"second\",\n\t\tms: 1e3\n\t}\n];\nfunction getDefaultScheduler$3(options) {\n\tif (\"updateInterval\" in options) {\n\t\tconst { updateInterval = 3e4 } = options;\n\t\treturn (cb) => useIntervalFn(cb, updateInterval);\n\t}\n\treturn (cb) => useIntervalFn(cb, 3e4);\n}\nfunction useTimeAgoIntl(time, options = {}) {\n\tconst { controls: exposeControls = false, scheduler = getDefaultScheduler$3(options) } = options;\n\tconst { now, ...controls } = useNow({\n\t\tscheduler,\n\t\tcontrols: true\n\t});\n\tconst result = computed(() => getTimeAgoIntlResult(new Date(toValue(time)), options, toValue(now)));\n\tconst parts = computed(() => result.value.parts);\n\tconst timeAgoIntl = computed(() => formatTimeAgoIntlParts(parts.value, {\n\t\t...options,\n\t\tlocale: result.value.resolvedLocale\n\t}));\n\treturn exposeControls ? {\n\t\ttimeAgoIntl,\n\t\tparts,\n\t\t...controls\n\t} : timeAgoIntl;\n}\n/**\n* Non-reactive version of useTimeAgoIntl\n*/\nfunction formatTimeAgoIntl(from, options = {}, now = Date.now()) {\n\tconst { parts, resolvedLocale } = getTimeAgoIntlResult(from, options, now);\n\treturn formatTimeAgoIntlParts(parts, {\n\t\t...options,\n\t\tlocale: resolvedLocale\n\t});\n}\n/**\n* Get parts from `Intl.RelativeTimeFormat.formatToParts`.\n*/\nfunction getTimeAgoIntlResult(from, options = {}, now = Date.now()) {\n\tvar _options$units;\n\tconst { locale, relativeTimeFormatOptions = { numeric: \"auto\" } } = options;\n\tconst rtf = new Intl.RelativeTimeFormat(locale, relativeTimeFormatOptions);\n\tconst { locale: resolvedLocale } = rtf.resolvedOptions();\n\tconst diff = +from - +now;\n\tconst absDiff = Math.abs(diff);\n\tconst units = (_options$units = options.units) !== null && _options$units !== void 0 ? _options$units : UNITS;\n\tfor (const { name, ms } of units) if (absDiff >= ms) return {\n\t\tresolvedLocale,\n\t\tparts: rtf.formatToParts(Math.round(diff / ms), name)\n\t};\n\treturn {\n\t\tresolvedLocale,\n\t\tparts: rtf.formatToParts(0, units[units.length - 1].name)\n\t};\n}\n/**\n* Format parts into a string\n*/\nfunction formatTimeAgoIntlParts(parts, options = {}) {\n\tconst { insertSpace = true, joinParts, locale } = options;\n\tif (typeof joinParts === \"function\") return joinParts(parts, locale);\n\tif (!insertSpace) return parts.map((part) => part.value).join(\"\");\n\treturn parts.map((part) => part.value.trim()).join(\" \");\n}\n//#endregion\n//#region useTimeoutPoll/index.ts\nfunction useTimeoutPoll(fn, interval, options = {}) {\n\tconst { immediate = true, immediateCallback = false } = options;\n\tconst { start } = useTimeoutFn(loop, interval, { immediate });\n\tconst isActive = shallowRef(false);\n\tasync function loop() {\n\t\tif (!isActive.value) return;\n\t\tawait fn();\n\t\tstart();\n\t}\n\tfunction resume() {\n\t\tif (!isActive.value) {\n\t\t\tisActive.value = true;\n\t\t\tif (immediateCallback) fn();\n\t\t\tstart();\n\t\t}\n\t}\n\tfunction pause() {\n\t\tisActive.value = false;\n\t}\n\tif (immediate && isClient) resume();\n\ttryOnScopeDispose(pause);\n\treturn {\n\t\tisActive,\n\t\tpause,\n\t\tresume\n\t};\n}\n//#endregion\n//#region useTimestamp/index.ts\nfunction getDefaultScheduler$2(options) {\n\tif (\"interval\" in options || \"immediate\" in options) {\n\t\tconst { interval = \"requestAnimationFrame\", immediate = true } = options;\n\t\treturn interval === \"requestAnimationFrame\" ? (cb) => useRafFn(cb, { immediate }) : (cb) => useIntervalFn(cb, interval, { immediate });\n\t}\n\treturn useRafFn;\n}\nfunction useTimestamp(options = {}) {\n\tconst { controls: exposeControls = false, offset = 0, scheduler = getDefaultScheduler$2(options), callback } = options;\n\tconst ts = shallowRef(timestamp() + offset);\n\tconst update = () => ts.value = timestamp() + offset;\n\tconst controls = scheduler(callback ? () => {\n\t\tupdate();\n\t\tcallback(ts.value);\n\t} : update);\n\tif (exposeControls) return {\n\t\ttimestamp: ts,\n\t\t...controls\n\t};\n\telse return ts;\n}\n//#endregion\n//#region useTitle/index.ts\nfunction useTitle(newTitle = null, options = {}) {\n\tvar _document$title, _ref;\n\tconst { document = defaultDocument, restoreOnUnmount = (t) => t } = options;\n\tconst originalTitle = (_document$title = document === null || document === void 0 ? void 0 : document.title) !== null && _document$title !== void 0 ? _document$title : \"\";\n\tconst title = toRef((_ref = newTitle !== null && newTitle !== void 0 ? newTitle : document === null || document === void 0 ? void 0 : document.title) !== null && _ref !== void 0 ? _ref : null);\n\tconst isReadonly = !!(newTitle && typeof newTitle === \"function\");\n\tfunction format(t) {\n\t\tif (!(\"titleTemplate\" in options)) return t;\n\t\tconst template = options.titleTemplate || \"%s\";\n\t\treturn typeof template === \"function\" ? template(t) : toValue(template).replace(/%s/g, t);\n\t}\n\twatch(title, (newValue, oldValue) => {\n\t\tif (newValue !== oldValue && document) document.title = format(newValue !== null && newValue !== void 0 ? newValue : \"\");\n\t}, { immediate: true });\n\tif (options.observe && !options.titleTemplate && document && !isReadonly) {\n\t\tvar _document$head;\n\t\tuseMutationObserver((_document$head = document.head) === null || _document$head === void 0 ? void 0 : _document$head.querySelector(\"title\"), () => {\n\t\t\tif (document && document.title !== title.value) title.value = format(document.title);\n\t\t}, { childList: true });\n\t}\n\ttryOnScopeDispose(() => {\n\t\tif (restoreOnUnmount) {\n\t\t\tconst restoredTitle = restoreOnUnmount(originalTitle, title.value || \"\");\n\t\t\tif (restoredTitle != null && document) document.title = restoredTitle;\n\t\t}\n\t});\n\treturn title;\n}\n/**\n* Common transitions\n*\n* @see https://easings.net\n*/\nconst TransitionPresets = /* @__PURE__ */ Object.assign({}, { linear: identity }, {\n\teaseInSine: [\n\t\t.12,\n\t\t0,\n\t\t.39,\n\t\t0\n\t],\n\teaseOutSine: [\n\t\t.61,\n\t\t1,\n\t\t.88,\n\t\t1\n\t],\n\teaseInOutSine: [\n\t\t.37,\n\t\t0,\n\t\t.63,\n\t\t1\n\t],\n\teaseInQuad: [\n\t\t.11,\n\t\t0,\n\t\t.5,\n\t\t0\n\t],\n\teaseOutQuad: [\n\t\t.5,\n\t\t1,\n\t\t.89,\n\t\t1\n\t],\n\teaseInOutQuad: [\n\t\t.45,\n\t\t0,\n\t\t.55,\n\t\t1\n\t],\n\teaseInCubic: [\n\t\t.32,\n\t\t0,\n\t\t.67,\n\t\t0\n\t],\n\teaseOutCubic: [\n\t\t.33,\n\t\t1,\n\t\t.68,\n\t\t1\n\t],\n\teaseInOutCubic: [\n\t\t.65,\n\t\t0,\n\t\t.35,\n\t\t1\n\t],\n\teaseInQuart: [\n\t\t.5,\n\t\t0,\n\t\t.75,\n\t\t0\n\t],\n\teaseOutQuart: [\n\t\t.25,\n\t\t1,\n\t\t.5,\n\t\t1\n\t],\n\teaseInOutQuart: [\n\t\t.76,\n\t\t0,\n\t\t.24,\n\t\t1\n\t],\n\teaseInQuint: [\n\t\t.64,\n\t\t0,\n\t\t.78,\n\t\t0\n\t],\n\teaseOutQuint: [\n\t\t.22,\n\t\t1,\n\t\t.36,\n\t\t1\n\t],\n\teaseInOutQuint: [\n\t\t.83,\n\t\t0,\n\t\t.17,\n\t\t1\n\t],\n\teaseInExpo: [\n\t\t.7,\n\t\t0,\n\t\t.84,\n\t\t0\n\t],\n\teaseOutExpo: [\n\t\t.16,\n\t\t1,\n\t\t.3,\n\t\t1\n\t],\n\teaseInOutExpo: [\n\t\t.87,\n\t\t0,\n\t\t.13,\n\t\t1\n\t],\n\teaseInCirc: [\n\t\t.55,\n\t\t0,\n\t\t1,\n\t\t.45\n\t],\n\teaseOutCirc: [\n\t\t0,\n\t\t.55,\n\t\t.45,\n\t\t1\n\t],\n\teaseInOutCirc: [\n\t\t.85,\n\t\t0,\n\t\t.15,\n\t\t1\n\t],\n\teaseInBack: [\n\t\t.36,\n\t\t0,\n\t\t.66,\n\t\t-.56\n\t],\n\teaseOutBack: [\n\t\t.34,\n\t\t1.56,\n\t\t.64,\n\t\t1\n\t],\n\teaseInOutBack: [\n\t\t.68,\n\t\t-.6,\n\t\t.32,\n\t\t1.6\n\t]\n});\n/**\n* Create an easing function from cubic bezier points.\n*/\nfunction createEasingFunction([p0, p1, p2, p3]) {\n\tconst a = (a1, a2) => 1 - 3 * a2 + 3 * a1;\n\tconst b = (a1, a2) => 3 * a2 - 6 * a1;\n\tconst c = (a1) => 3 * a1;\n\tconst calcBezier = (t, a1, a2) => ((a(a1, a2) * t + b(a1, a2)) * t + c(a1)) * t;\n\tconst getSlope = (t, a1, a2) => 3 * a(a1, a2) * t * t + 2 * b(a1, a2) * t + c(a1);\n\tconst getTforX = (x) => {\n\t\tlet aGuessT = x;\n\t\tfor (let i = 0; i < 4; ++i) {\n\t\t\tconst currentSlope = getSlope(aGuessT, p0, p2);\n\t\t\tif (currentSlope === 0) return aGuessT;\n\t\t\tconst currentX = calcBezier(aGuessT, p0, p2) - x;\n\t\t\taGuessT -= currentX / currentSlope;\n\t\t}\n\t\treturn aGuessT;\n\t};\n\treturn (x) => p0 === p1 && p2 === p3 ? x : calcBezier(getTforX(x), p1, p3);\n}\nfunction lerp(a, b, alpha) {\n\treturn a + alpha * (b - a);\n}\nfunction defaultInterpolation(a, b, t) {\n\tconst aVal = toValue(a);\n\tconst bVal = toValue(b);\n\tif (typeof aVal === \"number\" && typeof bVal === \"number\") return lerp(aVal, bVal, t);\n\tif (Array.isArray(aVal) && Array.isArray(bVal)) return aVal.map((v, i) => lerp(v, toValue(bVal[i]), t));\n\tthrow new TypeError(\"Unknown transition type, specify an interpolation function.\");\n}\nfunction normalizeEasing(easing) {\n\tvar _toValue;\n\treturn typeof easing === \"function\" ? easing : (_toValue = toValue(easing)) !== null && _toValue !== void 0 ? _toValue : identity;\n}\n/**\n* Transition from one value to another.\n*\n* @param source\n* @param from\n* @param to\n* @param options\n*/\nfunction transition(source, from, to, options = {}) {\n\tvar _toValue2;\n\tconst { window = defaultWindow } = options;\n\tconst fromVal = toValue(from);\n\tconst toVal = toValue(to);\n\tconst duration = (_toValue2 = toValue(options.duration)) !== null && _toValue2 !== void 0 ? _toValue2 : 1e3;\n\tconst startedAt = Date.now();\n\tconst endAt = Date.now() + duration;\n\tconst interpolation = typeof options.interpolation === \"function\" ? options.interpolation : defaultInterpolation;\n\tconst trans = typeof options.easing !== \"undefined\" ? normalizeEasing(options.easing) : normalizeEasing(options.transition);\n\tconst ease = typeof trans === \"function\" ? trans : createEasingFunction(trans);\n\treturn new Promise((resolve) => {\n\t\tsource.value = fromVal;\n\t\tconst tick = () => {\n\t\t\tvar _options$abort;\n\t\t\tif ((_options$abort = options.abort) === null || _options$abort === void 0 ? void 0 : _options$abort.call(options)) {\n\t\t\t\tresolve();\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tconst now = Date.now();\n\t\t\tsource.value = interpolation(fromVal, toVal, ease((now - startedAt) / duration));\n\t\t\tif (now < endAt) window === null || window === void 0 || window.requestAnimationFrame(tick);\n\t\t\telse {\n\t\t\t\tsource.value = toVal;\n\t\t\t\tresolve();\n\t\t\t}\n\t\t};\n\t\ttick();\n\t});\n}\n/**\n* Transition from one value to another.\n* @deprecated The `executeTransition` function is deprecated, use `transition` instead.\n*\n* @param source\n* @param from\n* @param to\n* @param options\n*/\nfunction executeTransition(source, from, to, options = {}) {\n\treturn transition(source, from, to, options);\n}\n/**\n* Follow value with a transition.\n*\n* @see https://vueuse.org/useTransition\n* @param source\n* @param options\n*/\nfunction useTransition(source, options = {}) {\n\tlet currentId = 0;\n\tconst sourceVal = () => {\n\t\tconst v = toValue(source);\n\t\treturn typeof options.interpolation === \"undefined\" && Array.isArray(v) ? v.map(toValue) : v;\n\t};\n\tconst outputRef = shallowRef(sourceVal());\n\twatch(sourceVal, async (to) => {\n\t\tvar _options$onStarted, _options$onFinished;\n\t\tif (toValue(options.disabled)) return;\n\t\tconst id = ++currentId;\n\t\tif (options.delay) await promiseTimeout(toValue(options.delay));\n\t\tif (id !== currentId) return;\n\t\t(_options$onStarted = options.onStarted) === null || _options$onStarted === void 0 || _options$onStarted.call(options);\n\t\tawait transition(outputRef, outputRef.value, to, {\n\t\t\t...options,\n\t\t\tabort: () => {\n\t\t\t\tvar _options$abort2;\n\t\t\t\treturn id !== currentId || ((_options$abort2 = options.abort) === null || _options$abort2 === void 0 ? void 0 : _options$abort2.call(options));\n\t\t\t}\n\t\t});\n\t\t(_options$onFinished = options.onFinished) === null || _options$onFinished === void 0 || _options$onFinished.call(options);\n\t}, { deep: true });\n\twatch(() => toValue(options.disabled), (disabled) => {\n\t\tif (disabled) {\n\t\t\tcurrentId++;\n\t\t\toutputRef.value = sourceVal();\n\t\t}\n\t});\n\ttryOnScopeDispose(() => {\n\t\tcurrentId++;\n\t});\n\treturn computed(() => toValue(options.disabled) ? sourceVal() : outputRef.value);\n}\n//#endregion\n//#region useUrlSearchParams/index.ts\n/**\n* Reactive URLSearchParams\n*\n* @see https://vueuse.org/useUrlSearchParams\n* @param mode\n* @param options\n*/\nfunction useUrlSearchParams(mode = \"history\", options = {}) {\n\tconst { initialValue = {}, removeNullishValues = true, removeFalsyValues = false, write: enableWrite = true, writeMode = \"replace\", window = defaultWindow, stringify = (params) => params.toString() } = options;\n\tif (!window) return reactive(initialValue);\n\tconst state = reactive({});\n\tfunction getRawParams() {\n\t\tif (mode === \"history\") return window.location.search || \"\";\n\t\telse if (mode === \"hash\") {\n\t\t\tconst hash = window.location.hash || \"\";\n\t\t\tconst index = hash.indexOf(\"?\");\n\t\t\treturn index > 0 ? hash.slice(index) : \"\";\n\t\t} else return (window.location.hash || \"\").replace(/^#/, \"\");\n\t}\n\tfunction constructQuery(params) {\n\t\tconst stringified = stringify(params);\n\t\tif (mode === \"history\") return `${stringified ? `?${stringified}` : \"\"}${window.location.hash || \"\"}`;\n\t\tif (mode === \"hash-params\") return `${window.location.search || \"\"}${stringified ? `#${stringified}` : \"\"}`;\n\t\tconst hash = window.location.hash || \"#\";\n\t\tconst index = hash.indexOf(\"?\");\n\t\tif (index > 0) return `${window.location.search || \"\"}${hash.slice(0, index)}${stringified ? `?${stringified}` : \"\"}`;\n\t\treturn `${window.location.search || \"\"}${hash}${stringified ? `?${stringified}` : \"\"}`;\n\t}\n\tfunction read() {\n\t\treturn new URLSearchParams(getRawParams());\n\t}\n\tfunction updateState(params) {\n\t\tconst unusedKeys = new Set(Object.keys(state));\n\t\tfor (const key of params.keys()) {\n\t\t\tconst paramsForKey = params.getAll(key);\n\t\t\tstate[key] = paramsForKey.length > 1 ? paramsForKey : params.get(key) || \"\";\n\t\t\tunusedKeys.delete(key);\n\t\t}\n\t\tArray.from(unusedKeys).forEach((key) => delete state[key]);\n\t}\n\tconst { pause, resume } = watchPausable(state, () => {\n\t\tconst params = new URLSearchParams(\"\");\n\t\tObject.keys(state).forEach((key) => {\n\t\t\tconst mapEntry = state[key];\n\t\t\tif (Array.isArray(mapEntry)) mapEntry.forEach((value) => params.append(key, value));\n\t\t\telse if (removeNullishValues && mapEntry == null) params.delete(key);\n\t\t\telse if (removeFalsyValues && !mapEntry) params.delete(key);\n\t\t\telse params.set(key, mapEntry);\n\t\t});\n\t\twrite(params, false);\n\t}, { deep: true });\n\tfunction write(params, shouldUpdate, shouldWriteHistory = true) {\n\t\tpause();\n\t\tif (shouldUpdate) updateState(params);\n\t\tif (writeMode === \"replace\") window.history.replaceState(window.history.state, window.document.title, window.location.pathname + constructQuery(params));\n\t\telse if (shouldWriteHistory) window.history.pushState(window.history.state, window.document.title, window.location.pathname + constructQuery(params));\n\t\tnextTick(() => resume());\n\t}\n\tfunction onChanged() {\n\t\tif (!enableWrite) return;\n\t\twrite(read(), true, false);\n\t}\n\tconst listenerOptions = { passive: true };\n\tuseEventListener(window, \"popstate\", onChanged, listenerOptions);\n\tif (mode !== \"history\") useEventListener(window, \"hashchange\", onChanged, listenerOptions);\n\tconst initial = read();\n\tif (initial.keys().next().value) updateState(initial);\n\telse Object.assign(state, initialValue);\n\treturn state;\n}\n//#endregion\n//#region useUserMedia/index.ts\n/**\n* Reactive `mediaDevices.getUserMedia` streaming\n*\n* @see https://vueuse.org/useUserMedia\n* @param options\n*/\nfunction useUserMedia(options = {}) {\n\tvar _options$enabled, _options$autoSwitch;\n\tconst enabled = shallowRef((_options$enabled = options.enabled) !== null && _options$enabled !== void 0 ? _options$enabled : false);\n\tconst autoSwitch = shallowRef((_options$autoSwitch = options.autoSwitch) !== null && _options$autoSwitch !== void 0 ? _options$autoSwitch : true);\n\tconst constraints = ref(options.constraints);\n\tconst { navigator = defaultNavigator } = options;\n\tconst isSupported = /* @__PURE__ */ useSupported(() => {\n\t\tvar _navigator$mediaDevic;\n\t\treturn navigator === null || navigator === void 0 || (_navigator$mediaDevic = navigator.mediaDevices) === null || _navigator$mediaDevic === void 0 ? void 0 : _navigator$mediaDevic.getUserMedia;\n\t});\n\tconst stream = shallowRef();\n\tfunction getDeviceOptions(type) {\n\t\tswitch (type) {\n\t\t\tcase \"video\":\n\t\t\t\tif (constraints.value) return constraints.value.video || false;\n\t\t\t\tbreak;\n\t\t\tcase \"audio\":\n\t\t\t\tif (constraints.value) return constraints.value.audio || false;\n\t\t\t\tbreak;\n\t\t}\n\t}\n\tasync function _start() {\n\t\tif (!isSupported.value || stream.value) return;\n\t\tstream.value = await navigator.mediaDevices.getUserMedia({\n\t\t\tvideo: getDeviceOptions(\"video\"),\n\t\t\taudio: getDeviceOptions(\"audio\")\n\t\t});\n\t\treturn stream.value;\n\t}\n\tfunction _stop() {\n\t\tvar _stream$value;\n\t\t(_stream$value = stream.value) === null || _stream$value === void 0 || _stream$value.getTracks().forEach((t) => t.stop());\n\t\tstream.value = void 0;\n\t}\n\tfunction stop() {\n\t\t_stop();\n\t\tenabled.value = false;\n\t}\n\tasync function start() {\n\t\tawait _start();\n\t\tif (stream.value) enabled.value = true;\n\t\treturn stream.value;\n\t}\n\tasync function restart() {\n\t\t_stop();\n\t\treturn await start();\n\t}\n\twatch(enabled, (v) => {\n\t\tif (v) _start();\n\t\telse _stop();\n\t}, { immediate: true });\n\twatch(constraints, () => {\n\t\tif (autoSwitch.value && stream.value) restart();\n\t}, {\n\t\timmediate: true,\n\t\tdeep: true\n\t});\n\ttryOnScopeDispose(() => {\n\t\tstop();\n\t});\n\treturn {\n\t\tisSupported,\n\t\tstream,\n\t\tstart,\n\t\tstop,\n\t\trestart,\n\t\tconstraints,\n\t\tenabled,\n\t\tautoSwitch\n\t};\n}\n//#endregion\n//#region useVModel/index.ts\n/**\n* Shorthand for v-model binding, props + emit -> ref\n*\n* @see https://vueuse.org/useVModel\n* @param props\n* @param key (default 'modelValue')\n* @param emit\n* @param options\n*\n* @__NO_SIDE_EFFECTS__\n*/\nfunction useVModel(props, key, emit, options = {}) {\n\tvar _vm$$emit, _vm$proxy;\n\tconst { clone = false, passive = false, eventName, deep = false, defaultValue, shouldEmit } = options;\n\tconst vm = getCurrentInstance();\n\tconst _emit = emit || (vm === null || vm === void 0 ? void 0 : vm.emit) || (vm === null || vm === void 0 || (_vm$$emit = vm.$emit) === null || _vm$$emit === void 0 ? void 0 : _vm$$emit.bind(vm)) || (vm === null || vm === void 0 || (_vm$proxy = vm.proxy) === null || _vm$proxy === void 0 || (_vm$proxy = _vm$proxy.$emit) === null || _vm$proxy === void 0 ? void 0 : _vm$proxy.bind(vm === null || vm === void 0 ? void 0 : vm.proxy));\n\tlet event = eventName;\n\tif (!key) key = \"modelValue\";\n\tevent = event || `update:${key.toString()}`;\n\tconst cloneFn = (val) => !clone ? val : typeof clone === \"function\" ? clone(val) : cloneFnJSON(val);\n\tconst getValue = () => isDef(props[key]) ? cloneFn(props[key]) : defaultValue;\n\tconst triggerEmit = (value) => {\n\t\tif (shouldEmit) {\n\t\t\tif (shouldEmit(value)) _emit(event, value);\n\t\t} else _emit(event, value);\n\t};\n\tif (passive) {\n\t\tconst proxy = ref(getValue());\n\t\tlet isUpdating = false;\n\t\twatch(() => props[key], (v) => {\n\t\t\tif (!isUpdating) {\n\t\t\t\tisUpdating = true;\n\t\t\t\tproxy.value = cloneFn(v);\n\t\t\t\tnextTick(() => isUpdating = false);\n\t\t\t}\n\t\t});\n\t\twatch(proxy, (v) => {\n\t\t\tif (!isUpdating && (v !== props[key] || deep)) triggerEmit(v);\n\t\t}, { deep });\n\t\treturn proxy;\n\t} else return computed({\n\t\tget() {\n\t\t\treturn getValue();\n\t\t},\n\t\tset(value) {\n\t\t\ttriggerEmit(value);\n\t\t}\n\t});\n}\n//#endregion\n//#region useVModels/index.ts\n/**\n* Shorthand for props v-model binding. Think like `toRefs(props)` but changes will also emit out.\n*\n* @see https://vueuse.org/useVModels\n* @param props\n* @param emit\n* @param options\n*\n* @__NO_SIDE_EFFECTS__\n*/\nfunction useVModels(props, emit, options = {}) {\n\tconst ret = {};\n\tfor (const key in props) ret[key] = useVModel(props, key, emit, options);\n\treturn ret;\n}\n//#endregion\n//#region useVibrate/index.ts\nfunction getDefaultScheduler$1(options = { interval: 0 }) {\n\tconst { interval } = options;\n\tif (interval === 0) return;\n\treturn (fn) => useIntervalFn(fn, interval, {\n\t\timmediate: false,\n\t\timmediateCallback: false\n\t});\n}\n/**\n* Reactive vibrate\n*\n* @see https://vueuse.org/useVibrate\n* @see https://developer.mozilla.org/en-US/docs/Web/API/Vibration_API\n* @param options\n*\n* @__NO_SIDE_EFFECTS__\n*/\nfunction useVibrate(options) {\n\tconst { pattern = [], scheduler = getDefaultScheduler$1(options), navigator = defaultNavigator } = options || {};\n\tconst isSupported = /* @__PURE__ */ useSupported(() => typeof navigator !== \"undefined\" && \"vibrate\" in navigator);\n\tconst patternRef = toRef(pattern);\n\tconst vibrate = (pattern = patternRef.value) => {\n\t\tif (isSupported.value) navigator.vibrate(pattern);\n\t};\n\tconst intervalControls = scheduler === null || scheduler === void 0 ? void 0 : scheduler(vibrate);\n\tconst stop = () => {\n\t\tif (isSupported.value) navigator.vibrate(0);\n\t\tintervalControls === null || intervalControls === void 0 || intervalControls.pause();\n\t};\n\treturn {\n\t\tisSupported,\n\t\tpattern,\n\t\tintervalControls,\n\t\tvibrate,\n\t\tstop\n\t};\n}\n//#endregion\n//#region useVirtualList/index.ts\n/**\n* Please consider using [`vue-virtual-scroller`](https://github.com/Akryum/vue-virtual-scroller) if you are looking for more features.\n*/\nfunction useVirtualList(list, options) {\n\tconst { containerStyle, wrapperProps, scrollTo, calculateRange, currentList, containerRef } = \"itemHeight\" in options ? useVerticalVirtualList(options, list) : useHorizontalVirtualList(options, list);\n\treturn {\n\t\tlist: currentList,\n\t\tscrollTo,\n\t\tcontainerProps: {\n\t\t\tref: containerRef,\n\t\t\tonScroll: () => {\n\t\t\t\tcalculateRange();\n\t\t\t},\n\t\t\tstyle: containerStyle\n\t\t},\n\t\twrapperProps\n\t};\n}\nfunction useVirtualListResources(list) {\n\tconst containerRef = shallowRef(null);\n\tconst size = useElementSize(containerRef);\n\tconst currentList = ref([]);\n\tconst source = shallowRef(list);\n\treturn {\n\t\tstate: ref({\n\t\t\tstart: 0,\n\t\t\tend: 10\n\t\t}),\n\t\tsource,\n\t\tcurrentList,\n\t\tsize,\n\t\tcontainerRef\n\t};\n}\nfunction createGetViewCapacity(state, source, itemSize) {\n\treturn (containerSize) => {\n\t\tif (typeof itemSize === \"number\") return Math.ceil(containerSize / itemSize);\n\t\tconst { start = 0 } = state.value;\n\t\tlet sum = 0;\n\t\tlet capacity = 0;\n\t\tfor (let i = start; i < source.value.length; i++) {\n\t\t\tconst size = itemSize(i);\n\t\t\tsum += size;\n\t\t\tcapacity = i;\n\t\t\tif (sum > containerSize) break;\n\t\t}\n\t\treturn capacity - start;\n\t};\n}\nfunction createGetOffset(source, itemSize) {\n\treturn (scrollDirection) => {\n\t\tif (typeof itemSize === \"number\") return Math.floor(scrollDirection / itemSize) + 1;\n\t\tlet sum = 0;\n\t\tlet offset = 0;\n\t\tfor (let i = 0; i < source.value.length; i++) {\n\t\t\tconst size = itemSize(i);\n\t\t\tsum += size;\n\t\t\tif (sum >= scrollDirection) {\n\t\t\t\toffset = i;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t\treturn offset + 1;\n\t};\n}\nfunction createCalculateRange(type, overscan, getOffset, getViewCapacity, { containerRef, state, currentList, source }) {\n\treturn () => {\n\t\tconst element = containerRef.value;\n\t\tif (element) {\n\t\t\tconst offset = getOffset(type === \"vertical\" ? element.scrollTop : element.scrollLeft);\n\t\t\tconst viewCapacity = getViewCapacity(type === \"vertical\" ? element.clientHeight : element.clientWidth);\n\t\t\tconst from = offset - overscan;\n\t\t\tconst to = offset + viewCapacity + overscan;\n\t\t\tstate.value = {\n\t\t\t\tstart: from < 0 ? 0 : from,\n\t\t\t\tend: to > source.value.length ? source.value.length : to\n\t\t\t};\n\t\t\tcurrentList.value = source.value.slice(state.value.start, state.value.end).map((ele, index) => ({\n\t\t\t\tdata: ele,\n\t\t\t\tindex: index + state.value.start\n\t\t\t}));\n\t\t}\n\t};\n}\nfunction createGetDistance(itemSize, source) {\n\treturn (index) => {\n\t\tif (typeof itemSize === \"number\") return index * itemSize;\n\t\treturn source.value.slice(0, index).reduce((sum, _, i) => sum + itemSize(i), 0);\n\t};\n}\nfunction useWatchForSizes(size, listRef, containerRef, calculateRange) {\n\twatch([\n\t\tsize.width,\n\t\tsize.height,\n\t\tlistRef,\n\t\tcontainerRef\n\t], () => {\n\t\tcalculateRange();\n\t});\n}\nfunction createComputedTotalSize(itemSize, source) {\n\treturn computed(() => {\n\t\tif (typeof itemSize === \"number\") return source.value.length * itemSize;\n\t\treturn source.value.reduce((sum, _, index) => sum + itemSize(index), 0);\n\t});\n}\nconst scrollToDictionaryForElementScrollKey = {\n\thorizontal: \"scrollLeft\",\n\tvertical: \"scrollTop\"\n};\nfunction createScrollTo(type, calculateRange, getDistance, containerRef) {\n\treturn (index) => {\n\t\tif (containerRef.value) {\n\t\t\tcontainerRef.value[scrollToDictionaryForElementScrollKey[type]] = getDistance(index);\n\t\t\tcalculateRange();\n\t\t}\n\t};\n}\nfunction useHorizontalVirtualList(options, list) {\n\tconst resources = useVirtualListResources(list);\n\tconst { state, source, currentList, size, containerRef } = resources;\n\tconst containerStyle = { overflowX: \"auto\" };\n\tconst { itemWidth, overscan = 5 } = options;\n\tconst getViewCapacity = createGetViewCapacity(state, source, itemWidth);\n\tconst calculateRange = createCalculateRange(\"horizontal\", overscan, createGetOffset(source, itemWidth), getViewCapacity, resources);\n\tconst getDistanceLeft = createGetDistance(itemWidth, source);\n\tconst offsetLeft = computed(() => getDistanceLeft(state.value.start));\n\tconst totalWidth = createComputedTotalSize(itemWidth, source);\n\tuseWatchForSizes(size, source, containerRef, calculateRange);\n\treturn {\n\t\tscrollTo: createScrollTo(\"horizontal\", calculateRange, getDistanceLeft, containerRef),\n\t\tcalculateRange,\n\t\twrapperProps: computed(() => {\n\t\t\treturn { style: {\n\t\t\t\theight: \"100%\",\n\t\t\t\twidth: `${totalWidth.value - offsetLeft.value}px`,\n\t\t\t\tmarginLeft: `${offsetLeft.value}px`,\n\t\t\t\tdisplay: \"flex\"\n\t\t\t} };\n\t\t}),\n\t\tcontainerStyle,\n\t\tcurrentList,\n\t\tcontainerRef\n\t};\n}\nfunction useVerticalVirtualList(options, list) {\n\tconst resources = useVirtualListResources(list);\n\tconst { state, source, currentList, size, containerRef } = resources;\n\tconst containerStyle = { overflowY: \"auto\" };\n\tconst { itemHeight, overscan = 5 } = options;\n\tconst getViewCapacity = createGetViewCapacity(state, source, itemHeight);\n\tconst calculateRange = createCalculateRange(\"vertical\", overscan, createGetOffset(source, itemHeight), getViewCapacity, resources);\n\tconst getDistanceTop = createGetDistance(itemHeight, source);\n\tconst offsetTop = computed(() => getDistanceTop(state.value.start));\n\tconst totalHeight = createComputedTotalSize(itemHeight, source);\n\tuseWatchForSizes(size, source, containerRef, calculateRange);\n\treturn {\n\t\tcalculateRange,\n\t\tscrollTo: createScrollTo(\"vertical\", calculateRange, getDistanceTop, containerRef),\n\t\tcontainerStyle,\n\t\twrapperProps: computed(() => {\n\t\t\treturn { style: {\n\t\t\t\twidth: \"100%\",\n\t\t\t\theight: `${totalHeight.value - offsetTop.value}px`,\n\t\t\t\tmarginTop: `${offsetTop.value}px`\n\t\t\t} };\n\t\t}),\n\t\tcurrentList,\n\t\tcontainerRef\n\t};\n}\n//#endregion\n//#region useWakeLock/index.ts\n/**\n* Reactive Screen Wake Lock API.\n*\n* @see https://vueuse.org/useWakeLock\n* @param options\n*\n* @__NO_SIDE_EFFECTS__\n*/\nfunction useWakeLock(options = {}) {\n\tconst { navigator = defaultNavigator, document = defaultDocument } = options;\n\tconst requestedType = shallowRef(false);\n\tconst sentinel = shallowRef(null);\n\tconst documentVisibility = useDocumentVisibility({ document });\n\tconst isSupported = /* @__PURE__ */ useSupported(() => navigator && \"wakeLock\" in navigator);\n\tconst isActive = computed(() => !!sentinel.value && documentVisibility.value === \"visible\");\n\tif (isSupported.value) {\n\t\tuseEventListener(sentinel, \"release\", () => {\n\t\t\tvar _sentinel$value$type, _sentinel$value;\n\t\t\trequestedType.value = (_sentinel$value$type = (_sentinel$value = sentinel.value) === null || _sentinel$value === void 0 ? void 0 : _sentinel$value.type) !== null && _sentinel$value$type !== void 0 ? _sentinel$value$type : false;\n\t\t}, { passive: true });\n\t\twhenever(() => documentVisibility.value === \"visible\" && (document === null || document === void 0 ? void 0 : document.visibilityState) === \"visible\" && requestedType.value, (type) => {\n\t\t\trequestedType.value = false;\n\t\t\tforceRequest(type);\n\t\t});\n\t}\n\tasync function forceRequest(type) {\n\t\tvar _sentinel$value2;\n\t\tawait ((_sentinel$value2 = sentinel.value) === null || _sentinel$value2 === void 0 ? void 0 : _sentinel$value2.release());\n\t\tsentinel.value = isSupported.value ? await navigator.wakeLock.request(type) : null;\n\t}\n\tasync function request(type) {\n\t\tif (documentVisibility.value === \"visible\") await forceRequest(type);\n\t\telse requestedType.value = type;\n\t}\n\tasync function release() {\n\t\trequestedType.value = false;\n\t\tconst s = sentinel.value;\n\t\tsentinel.value = null;\n\t\tawait (s === null || s === void 0 ? void 0 : s.release());\n\t}\n\ttryOnScopeDispose(() => {\n\t\trelease();\n\t});\n\treturn {\n\t\tsentinel,\n\t\tisSupported,\n\t\tisActive,\n\t\trequest,\n\t\tforceRequest,\n\t\trelease\n\t};\n}\n//#endregion\n//#region useWebNotification/index.ts\n/**\n* Reactive useWebNotification\n*\n* @see https://vueuse.org/useWebNotification\n* @see https://developer.mozilla.org/en-US/docs/Web/API/notification\n*/\nfunction useWebNotification(options = {}) {\n\tconst { window = defaultWindow, requestPermissions: _requestForPermissions = true } = options;\n\tconst defaultWebNotificationOptions = options;\n\tconst isSupported = /* @__PURE__ */ useSupported(() => {\n\t\tif (!window || !(\"Notification\" in window)) return false;\n\t\tif (Notification.permission === \"granted\") return true;\n\t\ttry {\n\t\t\tconst notification = new Notification(\"\");\n\t\t\tnotification.onshow = () => {\n\t\t\t\tnotification.close();\n\t\t\t};\n\t\t} catch (e) {\n\t\t\tif (e.name === \"TypeError\") return false;\n\t\t}\n\t\treturn true;\n\t});\n\tconst permissionGranted = shallowRef(isSupported.value && \"permission\" in Notification && Notification.permission === \"granted\");\n\tconst notification = shallowRef(null);\n\tconst ensurePermissions = async () => {\n\t\tif (!isSupported.value) return;\n\t\tif (!permissionGranted.value && Notification.permission !== \"denied\") {\n\t\t\tif (await Notification.requestPermission() === \"granted\") permissionGranted.value = true;\n\t\t}\n\t\treturn permissionGranted.value;\n\t};\n\tconst { on: onClick, trigger: clickTrigger } = createEventHook();\n\tconst { on: onShow, trigger: showTrigger } = createEventHook();\n\tconst { on: onError, trigger: errorTrigger } = createEventHook();\n\tconst { on: onClose, trigger: closeTrigger } = createEventHook();\n\tconst show = async (overrides) => {\n\t\tif (!isSupported.value || !permissionGranted.value) return;\n\t\tconst options = Object.assign({}, defaultWebNotificationOptions, overrides);\n\t\tnotification.value = new Notification(options.title || \"\", options);\n\t\tnotification.value.onclick = clickTrigger;\n\t\tnotification.value.onshow = showTrigger;\n\t\tnotification.value.onerror = errorTrigger;\n\t\tnotification.value.onclose = closeTrigger;\n\t\treturn notification.value;\n\t};\n\tconst close = () => {\n\t\tif (notification.value) notification.value.close();\n\t\tnotification.value = null;\n\t};\n\tif (_requestForPermissions) tryOnMounted(ensurePermissions);\n\ttryOnScopeDispose(close);\n\tif (isSupported.value && window) {\n\t\tconst document = window.document;\n\t\tuseEventListener(document, \"visibilitychange\", (e) => {\n\t\t\te.preventDefault();\n\t\t\tif (document.visibilityState === \"visible\") close();\n\t\t});\n\t}\n\treturn {\n\t\tisSupported,\n\t\tnotification,\n\t\tensurePermissions,\n\t\tpermissionGranted,\n\t\tshow,\n\t\tclose,\n\t\tonClick,\n\t\tonShow,\n\t\tonError,\n\t\tonClose\n\t};\n}\n//#endregion\n//#region useWebSocket/index.ts\nconst DEFAULT_PING_MESSAGE = \"ping\";\nfunction resolveNestedOptions(options) {\n\tif (options === true) return {};\n\treturn options;\n}\nfunction getDefaultScheduler(options) {\n\tif (\"interval\" in options) {\n\t\tconst { interval = 1e3 } = options;\n\t\treturn (cb) => useIntervalFn(cb, interval, { immediate: false });\n\t}\n\treturn (cb) => useIntervalFn(cb, 1e3, { immediate: false });\n}\n/**\n* Reactive WebSocket client.\n*\n* @see https://vueuse.org/useWebSocket\n* @param url\n*/\nfunction useWebSocket(url, options = {}) {\n\tconst { onConnected, onDisconnected, onError, onMessage, immediate = true, autoConnect = true, autoClose = true, protocols = [] } = options;\n\tconst data = shallowRef(null);\n\tconst status = shallowRef(\"CLOSED\");\n\tconst wsRef = shallowRef();\n\tconst urlRef = toRef(url);\n\tlet heartbeatPause;\n\tlet heartbeatResume;\n\tlet explicitlyClosed = false;\n\tlet retried = 0;\n\tlet bufferedData = [];\n\tlet retryTimeout;\n\tlet pongTimeoutWait;\n\tconst _sendBuffer = () => {\n\t\tif (bufferedData.length && wsRef.value && status.value === \"OPEN\") {\n\t\t\tfor (const buffer of bufferedData) wsRef.value.send(buffer);\n\t\t\tbufferedData = [];\n\t\t}\n\t};\n\tconst resetRetry = () => {\n\t\tif (retryTimeout != null) {\n\t\t\tclearTimeout(retryTimeout);\n\t\t\tretryTimeout = void 0;\n\t\t}\n\t};\n\tconst resetHeartbeat = () => {\n\t\tclearTimeout(pongTimeoutWait);\n\t\tpongTimeoutWait = void 0;\n\t};\n\tconst close = (code = 1e3, reason) => {\n\t\tresetRetry();\n\t\tif (!isClient && !isWorker || !wsRef.value) return;\n\t\texplicitlyClosed = true;\n\t\tresetHeartbeat();\n\t\theartbeatPause === null || heartbeatPause === void 0 || heartbeatPause();\n\t\twsRef.value.close(code, reason);\n\t\twsRef.value = void 0;\n\t};\n\tconst send = (data, useBuffer = true) => {\n\t\tif (!wsRef.value || status.value !== \"OPEN\") {\n\t\t\tif (useBuffer) bufferedData.push(data);\n\t\t\treturn false;\n\t\t}\n\t\t_sendBuffer();\n\t\twsRef.value.send(data);\n\t\treturn true;\n\t};\n\tconst _init = () => {\n\t\tif (explicitlyClosed || typeof urlRef.value === \"undefined\") return;\n\t\tconst ws = new WebSocket(urlRef.value, protocols);\n\t\twsRef.value = ws;\n\t\tstatus.value = \"CONNECTING\";\n\t\tws.onopen = () => {\n\t\t\tif (wsRef.value !== ws) return;\n\t\t\tstatus.value = \"OPEN\";\n\t\t\tretried = 0;\n\t\t\tonConnected === null || onConnected === void 0 || onConnected(ws);\n\t\t\theartbeatResume === null || heartbeatResume === void 0 || heartbeatResume();\n\t\t\t_sendBuffer();\n\t\t};\n\t\tws.onclose = (ev) => {\n\t\t\tif (wsRef.value === ws) status.value = \"CLOSED\";\n\t\t\tresetHeartbeat();\n\t\t\theartbeatPause === null || heartbeatPause === void 0 || heartbeatPause();\n\t\t\tonDisconnected === null || onDisconnected === void 0 || onDisconnected(ws, ev);\n\t\t\tif (!explicitlyClosed && options.autoReconnect && (wsRef.value == null || ws === wsRef.value)) {\n\t\t\t\tconst { retries = -1, delay = 1e3, onFailed } = resolveNestedOptions(options.autoReconnect);\n\t\t\t\tif ((typeof retries === \"function\" ? retries : () => typeof retries === \"number\" && (retries < 0 || retried < retries))(retried)) {\n\t\t\t\t\tretried += 1;\n\t\t\t\t\tconst delayTime = typeof delay === \"function\" ? delay(retried) : delay;\n\t\t\t\t\tretryTimeout = setTimeout(_init, delayTime);\n\t\t\t\t} else onFailed === null || onFailed === void 0 || onFailed();\n\t\t\t}\n\t\t};\n\t\tws.onerror = (e) => {\n\t\t\tonError === null || onError === void 0 || onError(ws, e);\n\t\t};\n\t\tws.onmessage = (e) => {\n\t\t\tif (options.heartbeat) {\n\t\t\t\tresetHeartbeat();\n\t\t\t\tconst { message = DEFAULT_PING_MESSAGE, responseMessage = message } = resolveNestedOptions(options.heartbeat);\n\t\t\t\tif (e.data === toValue(responseMessage)) return;\n\t\t\t}\n\t\t\tdata.value = e.data;\n\t\t\tonMessage === null || onMessage === void 0 || onMessage(ws, e);\n\t\t};\n\t};\n\tif (options.heartbeat) {\n\t\tconst { message = DEFAULT_PING_MESSAGE, scheduler = getDefaultScheduler(resolveNestedOptions(options.heartbeat)), pongTimeout = 1e3 } = resolveNestedOptions(options.heartbeat);\n\t\tconst { pause, resume } = scheduler(() => {\n\t\t\tsend(toValue(message), false);\n\t\t\tif (pongTimeoutWait != null) return;\n\t\t\tpongTimeoutWait = setTimeout(() => {\n\t\t\t\tclose();\n\t\t\t\texplicitlyClosed = false;\n\t\t\t}, pongTimeout);\n\t\t});\n\t\theartbeatPause = pause;\n\t\theartbeatResume = resume;\n\t}\n\tif (autoClose) {\n\t\tif (isClient) useEventListener(\"beforeunload\", () => close(), { passive: true });\n\t\ttryOnScopeDispose(close);\n\t}\n\tconst open = () => {\n\t\tif (!isClient && !isWorker) return;\n\t\tclose();\n\t\texplicitlyClosed = false;\n\t\tretried = 0;\n\t\t_init();\n\t};\n\tif (immediate) open();\n\tif (autoConnect) watch(urlRef, open);\n\treturn {\n\t\tdata,\n\t\tstatus,\n\t\tclose,\n\t\tsend,\n\t\topen,\n\t\tws: wsRef\n\t};\n}\n//#endregion\n//#region useWebWorker/index.ts\nfunction useWebWorker(arg0, workerOptions, options) {\n\tconst { window = defaultWindow } = options !== null && options !== void 0 ? options : {};\n\tconst data = shallowRef(null);\n\tconst worker = shallowRef();\n\tconst post = (...args) => {\n\t\tif (!worker.value) return;\n\t\tworker.value.postMessage(...args);\n\t};\n\tconst terminate = function terminate() {\n\t\tif (!worker.value) return;\n\t\tworker.value.terminate();\n\t};\n\tif (window) {\n\t\tif (typeof arg0 === \"string\") worker.value = new Worker(arg0, workerOptions);\n\t\telse if (typeof arg0 === \"function\") worker.value = arg0();\n\t\telse worker.value = arg0;\n\t\tworker.value.onmessage = (e) => {\n\t\t\tdata.value = e.data;\n\t\t};\n\t\ttryOnScopeDispose(() => {\n\t\t\tif (worker.value) worker.value.terminate();\n\t\t});\n\t}\n\treturn {\n\t\tdata,\n\t\tpost,\n\t\tterminate,\n\t\tworker\n\t};\n}\n//#endregion\n//#region useWebWorkerFn/lib/depsParser.ts\n/**\n*\n* Concatenates the dependencies into a comma separated string.\n* this string will then be passed as an argument to the \"importScripts\" function\n*\n* @param deps array of string\n* @param localDeps array of function\n* @returns a string composed by the concatenation of the array\n* elements \"deps\" and \"importScripts\".\n*\n* @example\n* depsParser(['demo1', 'demo2']) // return importScripts('demo1', 'demo2')\n*/\nfunction depsParser(deps, localDeps) {\n\tif (deps.length === 0 && localDeps.length === 0) return \"\";\n\tconst depsString = deps.map((dep) => `'${dep}'`).toString();\n\tconst depsFunctionString = localDeps.filter((dep) => typeof dep === \"function\").map((fn) => {\n\t\tconst str = fn.toString();\n\t\tif (str.trim().startsWith(\"function\")) return str;\n\t\telse return `const ${fn.name} = ${str}`;\n\t}).join(\";\");\n\tconst importString = `importScripts(${depsString});`;\n\treturn `${depsString.trim() === \"\" ? \"\" : importString} ${depsFunctionString}`;\n}\n//#endregion\n//#region useWebWorkerFn/lib/jobRunner.ts\n/**\n* This function accepts as a parameter a function \"userFunc\"\n* And as a result returns an anonymous function.\n* This anonymous function, accepts as arguments,\n* the parameters to pass to the function \"useArgs\" and returns a Promise\n* This function can be used as a wrapper, only inside a Worker\n* because it depends by \"postMessage\".\n*\n* @param userFunc {Function} fn the function to run with web worker\n*\n* @returns returns a function that accepts the parameters\n* to be passed to the \"userFunc\" function\n*/\nfunction jobRunner(userFunc) {\n\treturn (e) => {\n\t\tconst userFuncArgs = e.data[0];\n\t\treturn Promise.resolve(userFunc.apply(void 0, userFuncArgs)).then((result) => {\n\t\t\tpostMessage([\"SUCCESS\", result]);\n\t\t}).catch((error) => {\n\t\t\tpostMessage([\"ERROR\", error]);\n\t\t});\n\t};\n}\n//#endregion\n//#region useWebWorkerFn/lib/createWorkerBlobUrl.ts\n/**\n* Converts the \"fn\" function into the syntax needed to be executed within a web worker\n*\n* @param fn the function to run with web worker\n* @param deps array of strings, imported into the worker through \"importScripts\"\n* @param localDeps array of function, local dependencies\n*\n* @returns a blob url, containing the code of \"fn\" as a string\n*\n* @example\n* createWorkerBlobUrl((a,b) => a+b, [])\n* // return \"onmessage=return Promise.resolve((a,b) => a + b)\n* .then(postMessage(['SUCCESS', result]))\n* .catch(postMessage(['ERROR', error])\"\n*/\nfunction createWorkerBlobUrl(fn, deps, localDeps) {\n\tconst blobCode = `${depsParser(deps, localDeps)}; onmessage=(${jobRunner})(${fn})`;\n\tconst blob = new Blob([blobCode], { type: \"text/javascript\" });\n\treturn URL.createObjectURL(blob);\n}\n//#endregion\n//#region useWebWorkerFn/index.ts\n/**\n* Run expensive function without blocking the UI, using a simple syntax that makes use of Promise.\n*\n* @see https://vueuse.org/useWebWorkerFn\n* @param fn\n* @param options\n*/\nfunction useWebWorkerFn(fn, options = {}) {\n\tconst { dependencies = [], localDependencies = [], timeout, window = defaultWindow } = options;\n\tlet worker;\n\tconst workerStatus = shallowRef(\"PENDING\");\n\tconst promise = shallowRef({});\n\tconst timeoutId = shallowRef();\n\tconst workerTerminate = (status = \"PENDING\") => {\n\t\tif (worker && worker._url && window) {\n\t\t\tworker.terminate();\n\t\t\tURL.revokeObjectURL(worker._url);\n\t\t\tpromise.value = {};\n\t\t\tworker = void 0;\n\t\t\twindow.clearTimeout(timeoutId.value);\n\t\t\tworkerStatus.value = status;\n\t\t}\n\t};\n\tworkerTerminate();\n\ttryOnScopeDispose(workerTerminate);\n\tconst generateWorker = () => {\n\t\tconst blobUrl = createWorkerBlobUrl(fn, dependencies, localDependencies);\n\t\tconst newWorker = new Worker(blobUrl);\n\t\tnewWorker._url = blobUrl;\n\t\tnewWorker.onmessage = (e) => {\n\t\t\tconst { resolve = () => {}, reject = () => {} } = promise.value;\n\t\t\tconst [status, result] = e.data;\n\t\t\tswitch (status) {\n\t\t\t\tcase \"SUCCESS\":\n\t\t\t\t\tresolve(result);\n\t\t\t\t\tworkerTerminate(status);\n\t\t\t\t\tbreak;\n\t\t\t\tdefault:\n\t\t\t\t\treject(result);\n\t\t\t\t\tworkerTerminate(\"ERROR\");\n\t\t\t\t\tbreak;\n\t\t\t}\n\t\t};\n\t\tnewWorker.onerror = (e) => {\n\t\t\tconst { reject = () => {} } = promise.value;\n\t\t\te.preventDefault();\n\t\t\treject(e);\n\t\t\tworkerTerminate(\"ERROR\");\n\t\t};\n\t\tif (timeout) timeoutId.value = setTimeout(workerTerminate, timeout, \"TIMEOUT_EXPIRED\");\n\t\treturn newWorker;\n\t};\n\tconst callWorker = (...fnArgs) => new Promise((resolve, reject) => {\n\t\tpromise.value = {\n\t\t\tresolve,\n\t\t\treject\n\t\t};\n\t\tworker === null || worker === void 0 || worker.postMessage([[...fnArgs]]);\n\t\tworkerStatus.value = \"RUNNING\";\n\t});\n\tconst workerFn = (...fnArgs) => {\n\t\tif (workerStatus.value === \"RUNNING\") {\n\t\t\tconsole.error(\"[useWebWorkerFn] You can only run one instance of the worker at a time.\");\n\t\t\treturn Promise.reject();\n\t\t}\n\t\tworker = generateWorker();\n\t\treturn callWorker(...fnArgs);\n\t};\n\treturn {\n\t\tworkerFn,\n\t\tworkerStatus,\n\t\tworkerTerminate\n\t};\n}\n//#endregion\n//#region useWindowFocus/index.ts\n/**\n* Reactively track window focus with `window.onfocus` and `window.onblur`.\n*\n* @see https://vueuse.org/useWindowFocus\n*\n* @__NO_SIDE_EFFECTS__\n*/\nfunction useWindowFocus(options = {}) {\n\tconst { window = defaultWindow } = options;\n\tif (!window) return shallowRef(false);\n\tconst focused = shallowRef(window.document.hasFocus());\n\tconst listenerOptions = { passive: true };\n\tuseEventListener(window, \"blur\", () => {\n\t\tfocused.value = false;\n\t}, listenerOptions);\n\tuseEventListener(window, \"focus\", () => {\n\t\tfocused.value = true;\n\t}, listenerOptions);\n\treturn focused;\n}\n//#endregion\n//#region useWindowScroll/index.ts\n/**\n* Reactive window scroll.\n*\n* @see https://vueuse.org/useWindowScroll\n* @param options\n*/\nfunction useWindowScroll(options = {}) {\n\tconst { window = defaultWindow, ...rest } = options;\n\treturn useScroll(window, rest);\n}\n//#endregion\n//#region useWindowSize/index.ts\n/**\n* Reactive window size.\n*\n* @see https://vueuse.org/useWindowSize\n* @param options\n*\n* @__NO_SIDE_EFFECTS__\n*/\nfunction useWindowSize(options = {}) {\n\tconst { window = defaultWindow, initialWidth = Number.POSITIVE_INFINITY, initialHeight = Number.POSITIVE_INFINITY, listenOrientation = true, includeScrollbar = true, type = \"inner\" } = options;\n\tconst width = shallowRef(initialWidth);\n\tconst height = shallowRef(initialHeight);\n\tconst update = () => {\n\t\tif (window) if (type === \"outer\") {\n\t\t\twidth.value = window.outerWidth;\n\t\t\theight.value = window.outerHeight;\n\t\t} else if (type === \"visual\" && window.visualViewport) {\n\t\t\tconst { width: visualViewportWidth, height: visualViewportHeight, scale } = window.visualViewport;\n\t\t\twidth.value = Math.round(visualViewportWidth * scale);\n\t\t\theight.value = Math.round(visualViewportHeight * scale);\n\t\t} else if (includeScrollbar) {\n\t\t\twidth.value = window.innerWidth;\n\t\t\theight.value = window.innerHeight;\n\t\t} else {\n\t\t\twidth.value = window.document.documentElement.clientWidth;\n\t\t\theight.value = window.document.documentElement.clientHeight;\n\t\t}\n\t};\n\tupdate();\n\ttryOnMounted(update);\n\tconst listenerOptions = { passive: true };\n\tuseEventListener(\"resize\", update, listenerOptions);\n\tif (window && type === \"visual\" && window.visualViewport) useEventListener(window.visualViewport, \"resize\", update, listenerOptions);\n\tif (listenOrientation) watch(useMediaQuery(\"(orientation: portrait)\"), () => update());\n\treturn {\n\t\twidth,\n\t\theight\n\t};\n}\n//#endregion\nexport { DefaultMagicKeysAliasMap, StorageSerializers, TransitionPresets, asyncComputed, breakpointsAntDesign, breakpointsBootstrapV5, breakpointsElement, breakpointsMasterCss, breakpointsPrimeFlex, breakpointsQuasar, breakpointsSematic, breakpointsTailwind, breakpointsVuetify, breakpointsVuetifyV2, breakpointsVuetifyV3, cloneFnJSON, computedAsync, computedInject, createFetch, createReusableTemplate, createTemplatePromise, createUnrefFn, customStorageEventName, defaultDocument, defaultLocation, defaultNavigator, defaultWindow, executeTransition, formatTimeAgo, formatTimeAgoIntl, formatTimeAgoIntlParts, getSSRHandler, mapGamepadToXbox360Controller, onClickOutside, onElementRemoval, onKeyDown, onKeyPressed, onKeyStroke, onKeyUp, onLongPress, onStartTyping, provideSSRWidth, setSSRHandler, templateRef, transition, unrefElement, useActiveElement, useAnimate, useAsyncQueue, useAsyncState, useBase64, useBattery, useBluetooth, useBreakpoints, useBroadcastChannel, useBrowserLocation, useCached, useClipboard, useClipboardItems, useCloned, useColorMode, useConfirmDialog, useCountdown, useCssSupports, useCssVar, useCurrentElement, useCycleList, useDark, useDebouncedRefHistory, useDeviceMotion, useDeviceOrientation, useDevicePixelRatio, useDevicesList, useDisplayMedia, useDocumentVisibility, useDraggable, useDropZone, useElementBounding, useElementByPoint, useElementHover, useElementSize, useElementVisibility, useEventBus, useEventListener, useEventSource, useEyeDropper, useFavicon, useFetch, useFileDialog, useFileSystemAccess, useFocus, useFocusWithin, useFps, useFullscreen, useGamepad, useGeolocation, useIdle, useImage, useInfiniteScroll, useIntersectionObserver, useKeyModifier, useLocalStorage, useMagicKeys, useManualRefHistory, useMediaControls, useMediaQuery, useMemoize, useMemory, useMounted, useMouse, useMouseInElement, useMousePressed, useMutationObserver, useNavigatorLanguage, useNetwork, useNow, useObjectUrl, useOffsetPagination, useOnline, usePageLeave, useParallax, useParentElement, usePerformanceObserver, usePermission, usePointer, usePointerLock, usePointerSwipe, usePreferredColorScheme, usePreferredContrast, usePreferredDark, usePreferredLanguages, usePreferredReducedMotion, usePreferredReducedTransparency, usePrevious, useRafFn, useRefHistory, useResizeObserver, useSSRWidth, useScreenOrientation, useScreenSafeArea, useScriptTag, useScroll, useScrollLock, useSessionStorage, useShare, useSorted, useSpeechRecognition, useSpeechSynthesis, useStepper, useStorage, useStorageAsync, useStyleTag, useSupported, useSwipe, useTemplateRefsList, useTextDirection, useTextSelection, useTextareaAutosize, useThrottledRefHistory, useTimeAgo, useTimeAgoIntl, useTimeoutPoll, useTimestamp, useTitle, useTransition, useUrlSearchParams, useUserMedia, useVModel, useVModels, useVibrate, useVirtualList, useWakeLock, useWebNotification, useWebSocket, useWebWorker, useWebWorkerFn, useWindowFocus, useWindowScroll, useWindowSize };\n","import { ref, readonly } from \"vue\";\nconst MOBILE_BREAKPOINT = 1024;\nconst MOBILE_SMALL_BREAKPOINT = MOBILE_BREAKPOINT / 2;\nconst isLessThanBreakpoint = (breakpoint) => document.documentElement.clientWidth < breakpoint;\nconst isMobile = ref(isLessThanBreakpoint(MOBILE_BREAKPOINT));\nconst isSmallMobile = ref(isLessThanBreakpoint(MOBILE_SMALL_BREAKPOINT));\nwindow.addEventListener(\"resize\", () => {\n isMobile.value = isLessThanBreakpoint(MOBILE_BREAKPOINT);\n isSmallMobile.value = isLessThanBreakpoint(MOBILE_SMALL_BREAKPOINT);\n}, { passive: true });\nfunction useIsMobile() {\n return readonly(isMobile);\n}\nfunction useIsSmallMobile() {\n return readonly(isSmallMobile);\n}\nexport {\n MOBILE_BREAKPOINT,\n MOBILE_SMALL_BREAKPOINT,\n useIsMobile,\n useIsSmallMobile\n};\n//# sourceMappingURL=index.mjs.map\n","import { isRTL } from \"@nextcloud/l10n\";\nconst isRtl = isRTL();\nexport {\n isRtl as i\n};\n//# sourceMappingURL=rtl-v0UOPAM7.mjs.map\n","const NC_ACTIONS_IS_SEMANTIC_MENU = /* @__PURE__ */ Symbol.for(\"NcActions:isSemanticMenu\");\nconst NC_ACTIONS_CLOSE_MENU = /* @__PURE__ */ Symbol.for(\"NcActions:closeMenu\");\nexport {\n NC_ACTIONS_CLOSE_MENU as N,\n NC_ACTIONS_IS_SEMANTIC_MENU as a\n};\n//# sourceMappingURL=useNcActions-BzPO2c4h.mjs.map\n","function getTrapStack() {\n window._nc_focus_trap ??= [];\n return window._nc_focus_trap;\n}\nfunction createTrapStackController() {\n let pausedStack = [];\n return {\n /**\n * Pause the current focus-trap stack\n */\n pause() {\n pausedStack = [...getTrapStack()];\n for (const trap of pausedStack) {\n trap.pause();\n }\n },\n /**\n * Unpause the paused focus trap stack\n * If the actual stack is different from the paused one, ignore unpause.\n */\n unpause() {\n if (pausedStack.length === getTrapStack().length) {\n for (const trap of pausedStack) {\n trap.unpause();\n }\n }\n pausedStack = [];\n }\n };\n}\nexport {\n createTrapStackController as c,\n getTrapStack as g\n};\n//# sourceMappingURL=focusTrap-HJQ4pqHV.mjs.map\n","import { watch, toValue, onUnmounted } from \"vue\";\nimport { c as createTrapStackController } from \"./focusTrap-HJQ4pqHV.mjs\";\nfunction useTrapStackControl(shouldPause, options = {}) {\n const trapStackController = createTrapStackController();\n watch(shouldPause, () => {\n if (toValue(options.disabled)) {\n return;\n }\n if (toValue(shouldPause)) {\n trapStackController.pause();\n } else {\n trapStackController.unpause();\n }\n });\n onUnmounted(() => {\n trapStackController.unpause();\n });\n}\nexport {\n useTrapStackControl as u\n};\n//# sourceMappingURL=useTrapStackControl-B6cEicto.mjs.map\n","/**\n * Custom positioning reference element.\n * @see https://floating-ui.com/docs/virtual-elements\n */\n\nconst sides = ['top', 'right', 'bottom', 'left'];\nconst alignments = ['start', 'end'];\nconst placements = /*#__PURE__*/sides.reduce((acc, side) => acc.concat(side, side + \"-\" + alignments[0], side + \"-\" + alignments[1]), []);\nconst min = Math.min;\nconst max = Math.max;\nconst round = Math.round;\nconst floor = Math.floor;\nconst createCoords = v => ({\n x: v,\n y: v\n});\nconst oppositeSideMap = {\n left: 'right',\n right: 'left',\n bottom: 'top',\n top: 'bottom'\n};\nfunction clamp(start, value, end) {\n return max(start, min(value, end));\n}\nfunction evaluate(value, param) {\n return typeof value === 'function' ? value(param) : value;\n}\nfunction getSide(placement) {\n return placement.split('-')[0];\n}\nfunction getAlignment(placement) {\n return placement.split('-')[1];\n}\nfunction getOppositeAxis(axis) {\n return axis === 'x' ? 'y' : 'x';\n}\nfunction getAxisLength(axis) {\n return axis === 'y' ? 'height' : 'width';\n}\nfunction getSideAxis(placement) {\n const firstChar = placement[0];\n return firstChar === 't' || firstChar === 'b' ? 'y' : 'x';\n}\nfunction getAlignmentAxis(placement) {\n return getOppositeAxis(getSideAxis(placement));\n}\nfunction getAlignmentSides(placement, rects, rtl) {\n if (rtl === void 0) {\n rtl = false;\n }\n const alignment = getAlignment(placement);\n const alignmentAxis = getAlignmentAxis(placement);\n const length = getAxisLength(alignmentAxis);\n let mainAlignmentSide = alignmentAxis === 'x' ? alignment === (rtl ? 'end' : 'start') ? 'right' : 'left' : alignment === 'start' ? 'bottom' : 'top';\n if (rects.reference[length] > rects.floating[length]) {\n mainAlignmentSide = getOppositePlacement(mainAlignmentSide);\n }\n return [mainAlignmentSide, getOppositePlacement(mainAlignmentSide)];\n}\nfunction getExpandedPlacements(placement) {\n const oppositePlacement = getOppositePlacement(placement);\n return [getOppositeAlignmentPlacement(placement), oppositePlacement, getOppositeAlignmentPlacement(oppositePlacement)];\n}\nfunction getOppositeAlignmentPlacement(placement) {\n return placement.includes('start') ? placement.replace('start', 'end') : placement.replace('end', 'start');\n}\nconst lrPlacement = ['left', 'right'];\nconst rlPlacement = ['right', 'left'];\nconst tbPlacement = ['top', 'bottom'];\nconst btPlacement = ['bottom', 'top'];\nfunction getSideList(side, isStart, rtl) {\n switch (side) {\n case 'top':\n case 'bottom':\n if (rtl) return isStart ? rlPlacement : lrPlacement;\n return isStart ? lrPlacement : rlPlacement;\n case 'left':\n case 'right':\n return isStart ? tbPlacement : btPlacement;\n default:\n return [];\n }\n}\nfunction getOppositeAxisPlacements(placement, flipAlignment, direction, rtl) {\n const alignment = getAlignment(placement);\n let list = getSideList(getSide(placement), direction === 'start', rtl);\n if (alignment) {\n list = list.map(side => side + \"-\" + alignment);\n if (flipAlignment) {\n list = list.concat(list.map(getOppositeAlignmentPlacement));\n }\n }\n return list;\n}\nfunction getOppositePlacement(placement) {\n const side = getSide(placement);\n return oppositeSideMap[side] + placement.slice(side.length);\n}\nfunction expandPaddingObject(padding) {\n var _padding$top, _padding$right, _padding$bottom, _padding$left;\n return {\n top: (_padding$top = padding.top) != null ? _padding$top : 0,\n right: (_padding$right = padding.right) != null ? _padding$right : 0,\n bottom: (_padding$bottom = padding.bottom) != null ? _padding$bottom : 0,\n left: (_padding$left = padding.left) != null ? _padding$left : 0\n };\n}\nfunction getPaddingObject(padding) {\n return typeof padding !== 'number' ? expandPaddingObject(padding) : {\n top: padding,\n right: padding,\n bottom: padding,\n left: padding\n };\n}\nfunction rectToClientRect(rect) {\n const {\n x,\n y,\n width,\n height\n } = rect;\n return {\n width,\n height,\n top: y,\n left: x,\n right: x + width,\n bottom: y + height,\n x,\n y\n };\n}\n\nexport { alignments, clamp, createCoords, evaluate, expandPaddingObject, floor, getAlignment, getAlignmentAxis, getAlignmentSides, getAxisLength, getExpandedPlacements, getOppositeAlignmentPlacement, getOppositeAxis, getOppositeAxisPlacements, getOppositePlacement, getPaddingObject, getSide, getSideAxis, max, min, placements, rectToClientRect, round, sides };\n","import { getSideAxis, getAlignmentAxis, getAxisLength, getSide, getAlignment, evaluate, getPaddingObject, rectToClientRect, min, clamp, placements, getAlignmentSides, getOppositeAlignmentPlacement, getOppositePlacement, getExpandedPlacements, getOppositeAxisPlacements, sides, max, getOppositeAxis } from '@floating-ui/utils';\nexport { rectToClientRect } from '@floating-ui/utils';\n\nfunction computeCoordsFromPlacement(_ref, placement, rtl) {\n let {\n reference,\n floating\n } = _ref;\n const sideAxis = getSideAxis(placement);\n const alignmentAxis = getAlignmentAxis(placement);\n const alignLength = getAxisLength(alignmentAxis);\n const side = getSide(placement);\n const isVertical = sideAxis === 'y';\n const commonX = reference.x + reference.width / 2 - floating.width / 2;\n const commonY = reference.y + reference.height / 2 - floating.height / 2;\n const commonAlign = reference[alignLength] / 2 - floating[alignLength] / 2;\n let coords;\n switch (side) {\n case 'top':\n coords = {\n x: commonX,\n y: reference.y - floating.height\n };\n break;\n case 'bottom':\n coords = {\n x: commonX,\n y: reference.y + reference.height\n };\n break;\n case 'right':\n coords = {\n x: reference.x + reference.width,\n y: commonY\n };\n break;\n case 'left':\n coords = {\n x: reference.x - floating.width,\n y: commonY\n };\n break;\n default:\n coords = {\n x: reference.x,\n y: reference.y\n };\n }\n const alignment = getAlignment(placement);\n if (alignment) {\n coords[alignmentAxis] += commonAlign * (alignment === 'end' ? 1 : -1) * (rtl && isVertical ? -1 : 1);\n }\n return coords;\n}\n\n/**\n * Resolves with an object of overflow side offsets that determine how much the\n * element is overflowing a given clipping boundary on each side.\n * - positive = overflowing the boundary by that number of pixels\n * - negative = how many pixels left before it will overflow\n * - 0 = lies flush with the boundary\n * @see https://floating-ui.com/docs/detectOverflow\n */\nasync function detectOverflow(state, options) {\n var _await$platform$isEle;\n if (options === void 0) {\n options = {};\n }\n const {\n x,\n y,\n platform,\n rects,\n elements,\n strategy\n } = state;\n const {\n boundary = 'clippingAncestors',\n rootBoundary = 'viewport',\n elementContext = 'floating',\n altBoundary = false,\n padding = 0\n } = evaluate(options, state);\n const paddingObject = getPaddingObject(padding);\n const altContext = elementContext === 'floating' ? 'reference' : 'floating';\n const element = elements[altBoundary ? altContext : elementContext];\n const clippingClientRect = rectToClientRect(await platform.getClippingRect({\n element: ((_await$platform$isEle = await (platform.isElement == null ? void 0 : platform.isElement(element))) != null ? _await$platform$isEle : true) ? element : element.contextElement || (await (platform.getDocumentElement == null ? void 0 : platform.getDocumentElement(elements.floating))),\n boundary,\n rootBoundary,\n strategy\n }));\n const rect = elementContext === 'floating' ? {\n x,\n y,\n width: rects.floating.width,\n height: rects.floating.height\n } : rects.reference;\n const offsetParent = await (platform.getOffsetParent == null ? void 0 : platform.getOffsetParent(elements.floating));\n const offsetScale = (await (platform.isElement == null ? void 0 : platform.isElement(offsetParent))) && (await (platform.getScale == null ? void 0 : platform.getScale(offsetParent))) || {\n x: 1,\n y: 1\n };\n const elementClientRect = rectToClientRect(platform.convertOffsetParentRelativeRectToViewportRelativeRect ? await platform.convertOffsetParentRelativeRectToViewportRelativeRect({\n elements,\n rect,\n offsetParent,\n strategy\n }) : rect);\n return {\n top: (clippingClientRect.top - elementClientRect.top + paddingObject.top) / offsetScale.y,\n bottom: (elementClientRect.bottom - clippingClientRect.bottom + paddingObject.bottom) / offsetScale.y,\n left: (clippingClientRect.left - elementClientRect.left + paddingObject.left) / offsetScale.x,\n right: (elementClientRect.right - clippingClientRect.right + paddingObject.right) / offsetScale.x\n };\n}\n\n// Maximum number of resets that can occur before bailing to avoid infinite reset loops.\nconst MAX_RESET_COUNT = 50;\n\n/**\n * Computes the `x` and `y` coordinates that will place the floating element\n * next to a given reference element.\n *\n * This export does not have any `platform` interface logic. You will need to\n * write one for the platform you are using Floating UI with.\n */\nconst computePosition = async (reference, floating, config) => {\n const {\n placement = 'bottom',\n strategy = 'absolute',\n middleware = [],\n platform\n } = config;\n const platformWithDetectOverflow = platform.detectOverflow ? platform : {\n ...platform,\n detectOverflow\n };\n const rtl = await (platform.isRTL == null ? void 0 : platform.isRTL(floating));\n let rects = await platform.getElementRects({\n reference,\n floating,\n strategy\n });\n let {\n x,\n y\n } = computeCoordsFromPlacement(rects, placement, rtl);\n let statefulPlacement = placement;\n let resetCount = 0;\n const middlewareData = {};\n for (let i = 0; i < middleware.length; i++) {\n const currentMiddleware = middleware[i];\n if (!currentMiddleware) {\n continue;\n }\n const {\n name,\n fn\n } = currentMiddleware;\n const {\n x: nextX,\n y: nextY,\n data,\n reset\n } = await fn({\n x,\n y,\n initialPlacement: placement,\n placement: statefulPlacement,\n strategy,\n middlewareData,\n rects,\n platform: platformWithDetectOverflow,\n elements: {\n reference,\n floating\n }\n });\n x = nextX != null ? nextX : x;\n y = nextY != null ? nextY : y;\n middlewareData[name] = {\n ...middlewareData[name],\n ...data\n };\n if (reset && resetCount < MAX_RESET_COUNT) {\n resetCount++;\n if (typeof reset === 'object') {\n if (reset.placement) {\n statefulPlacement = reset.placement;\n }\n if (reset.rects) {\n rects = reset.rects === true ? await platform.getElementRects({\n reference,\n floating,\n strategy\n }) : reset.rects;\n }\n ({\n x,\n y\n } = computeCoordsFromPlacement(rects, statefulPlacement, rtl));\n }\n i = -1;\n }\n }\n return {\n x,\n y,\n placement: statefulPlacement,\n strategy,\n middlewareData\n };\n};\n\n/**\n * Provides data to position an inner element of the floating element so that it\n * appears centered to the reference element.\n * @see https://floating-ui.com/docs/arrow\n */\nconst arrow = options => ({\n name: 'arrow',\n options,\n async fn(state) {\n const {\n x,\n y,\n placement,\n rects,\n platform,\n elements,\n middlewareData\n } = state;\n // Since `element` is required, we don't Partial<> the type.\n const {\n element,\n padding = 0\n } = evaluate(options, state) || {};\n if (element == null) {\n return {};\n }\n const paddingObject = getPaddingObject(padding);\n const coords = {\n x,\n y\n };\n const axis = getAlignmentAxis(placement);\n const length = getAxisLength(axis);\n const arrowDimensions = await platform.getDimensions(element);\n const isYAxis = axis === 'y';\n const minProp = isYAxis ? 'top' : 'left';\n const maxProp = isYAxis ? 'bottom' : 'right';\n const clientProp = isYAxis ? 'clientHeight' : 'clientWidth';\n const endDiff = rects.reference[length] + rects.reference[axis] - coords[axis] - rects.floating[length];\n const startDiff = coords[axis] - rects.reference[axis];\n const arrowOffsetParent = await (platform.getOffsetParent == null ? void 0 : platform.getOffsetParent(element));\n let clientSize = arrowOffsetParent ? arrowOffsetParent[clientProp] : 0;\n\n // DOM platform can return `window` as the `offsetParent`.\n if (!clientSize || !(await (platform.isElement == null ? void 0 : platform.isElement(arrowOffsetParent)))) {\n clientSize = elements.floating[clientProp] || rects.floating[length];\n }\n const centerToReference = endDiff / 2 - startDiff / 2;\n\n // If the padding is large enough that it causes the arrow to no longer be\n // centered, modify the padding so that it is centered.\n const largestPossiblePadding = clientSize / 2 - arrowDimensions[length] / 2 - 1;\n const minPadding = min(paddingObject[minProp], largestPossiblePadding);\n const maxPadding = min(paddingObject[maxProp], largestPossiblePadding);\n\n // Make sure the arrow doesn't overflow the floating element if the center\n // point is outside the floating element's bounds.\n const max = clientSize - arrowDimensions[length] - maxPadding;\n const center = clientSize / 2 - arrowDimensions[length] / 2 + centerToReference;\n const offset = clamp(minPadding, center, max);\n\n // If the reference is small enough that the arrow's padding causes it to\n // to point to nothing for an aligned placement, adjust the offset of the\n // floating element itself. To ensure `shift()` continues to take action,\n // a single reset is performed when this is true.\n const shouldAddOffset = !middlewareData.arrow && getAlignment(placement) != null && center !== offset && rects.reference[length] / 2 - (center < minPadding ? minPadding : maxPadding) - arrowDimensions[length] / 2 < 0;\n const alignmentOffset = shouldAddOffset ? center < minPadding ? center - minPadding : center - max : 0;\n return {\n [axis]: coords[axis] + alignmentOffset,\n data: {\n [axis]: offset,\n centerOffset: center - offset - alignmentOffset,\n ...(shouldAddOffset && {\n alignmentOffset\n })\n },\n reset: shouldAddOffset\n };\n }\n});\n\nfunction getPlacementList(alignment, autoAlignment, allowedPlacements) {\n const allowedPlacementsSortedByAlignment = alignment ? [...allowedPlacements.filter(placement => getAlignment(placement) === alignment), ...allowedPlacements.filter(placement => getAlignment(placement) !== alignment)] : allowedPlacements.filter(placement => getSide(placement) === placement);\n return allowedPlacementsSortedByAlignment.filter(placement => {\n if (alignment) {\n return getAlignment(placement) === alignment || (autoAlignment ? getOppositeAlignmentPlacement(placement) !== placement : false);\n }\n return true;\n });\n}\n/**\n * Optimizes the visibility of the floating element by choosing the placement\n * that has the most space available automatically, without needing to specify a\n * preferred placement. Alternative to `flip`.\n * @see https://floating-ui.com/docs/autoPlacement\n */\nconst autoPlacement = function (options) {\n if (options === void 0) {\n options = {};\n }\n return {\n name: 'autoPlacement',\n options,\n async fn(state) {\n var _middlewareData$autoP, _middlewareData$autoP2, _placementsThatFitOnE;\n const {\n rects,\n middlewareData,\n placement,\n platform,\n elements\n } = state;\n const {\n crossAxis = false,\n alignment,\n allowedPlacements = placements,\n autoAlignment = true,\n ...detectOverflowOptions\n } = evaluate(options, state);\n const placements$1 = alignment !== undefined || allowedPlacements === placements ? getPlacementList(alignment || null, autoAlignment, allowedPlacements) : allowedPlacements;\n const currentIndex = ((_middlewareData$autoP = middlewareData.autoPlacement) == null ? void 0 : _middlewareData$autoP.index) || 0;\n const currentPlacement = placements$1[currentIndex];\n if (currentPlacement == null) {\n return {};\n }\n\n // Make `computeCoords` start from the right place.\n if (placement !== currentPlacement) {\n return {\n reset: {\n placement: placements$1[0]\n }\n };\n }\n const overflow = await platform.detectOverflow(state, detectOverflowOptions);\n const alignmentSides = getAlignmentSides(currentPlacement, rects, await (platform.isRTL == null ? void 0 : platform.isRTL(elements.floating)));\n const currentOverflows = [overflow[getSide(currentPlacement)], overflow[alignmentSides[0]], overflow[alignmentSides[1]]];\n const allOverflows = [...(((_middlewareData$autoP2 = middlewareData.autoPlacement) == null ? void 0 : _middlewareData$autoP2.overflows) || []), {\n placement: currentPlacement,\n overflows: currentOverflows\n }];\n const nextPlacement = placements$1[currentIndex + 1];\n\n // There are more placements to check.\n if (nextPlacement) {\n return {\n data: {\n index: currentIndex + 1,\n overflows: allOverflows\n },\n reset: {\n placement: nextPlacement\n }\n };\n }\n const placementsSortedByMostSpace = allOverflows.map(d => {\n const alignment = getAlignment(d.placement);\n return [d.placement, alignment && crossAxis ?\n // Check along the mainAxis and main crossAxis side.\n d.overflows.slice(0, 2).reduce((acc, v) => acc + v, 0) :\n // Check only the mainAxis.\n d.overflows[0], d.overflows];\n }).sort((a, b) => a[1] - b[1]);\n const placementsThatFitOnEachSide = placementsSortedByMostSpace.filter(d => d[2].slice(0,\n // Aligned placements should not check their opposite crossAxis\n // side.\n getAlignment(d[0]) ? 2 : 3).every(v => v <= 0));\n const resetPlacement = ((_placementsThatFitOnE = placementsThatFitOnEachSide[0]) == null ? void 0 : _placementsThatFitOnE[0]) || placementsSortedByMostSpace[0][0];\n if (resetPlacement !== placement) {\n return {\n data: {\n index: currentIndex + 1,\n overflows: allOverflows\n },\n reset: {\n placement: resetPlacement\n }\n };\n }\n return {};\n }\n };\n};\n\n/**\n * Optimizes the visibility of the floating element by flipping the `placement`\n * in order to keep it in view when the preferred placement(s) will overflow the\n * clipping boundary. Alternative to `autoPlacement`.\n * @see https://floating-ui.com/docs/flip\n */\nconst flip = function (options) {\n if (options === void 0) {\n options = {};\n }\n return {\n name: 'flip',\n options,\n async fn(state) {\n var _middlewareData$arrow, _middlewareData$flip;\n const {\n placement,\n middlewareData,\n rects,\n initialPlacement,\n platform,\n elements\n } = state;\n const {\n mainAxis: checkMainAxis = true,\n crossAxis: checkCrossAxis = true,\n fallbackPlacements: specifiedFallbackPlacements,\n fallbackStrategy = 'bestFit',\n fallbackAxisSideDirection = 'none',\n flipAlignment = true,\n ...detectOverflowOptions\n } = evaluate(options, state);\n\n // If a reset by the arrow was caused due to an alignment offset being\n // added, we should skip any logic now since `flip()` has already done its\n // work.\n // https://github.com/floating-ui/floating-ui/issues/2549#issuecomment-1719601643\n if ((_middlewareData$arrow = middlewareData.arrow) != null && _middlewareData$arrow.alignmentOffset) {\n return {};\n }\n const side = getSide(placement);\n const initialSideAxis = getSideAxis(initialPlacement);\n const isBasePlacement = getSide(initialPlacement) === initialPlacement;\n const rtl = await (platform.isRTL == null ? void 0 : platform.isRTL(elements.floating));\n const fallbackPlacements = specifiedFallbackPlacements || (isBasePlacement || !flipAlignment ? [getOppositePlacement(initialPlacement)] : getExpandedPlacements(initialPlacement));\n const hasFallbackAxisSideDirection = fallbackAxisSideDirection !== 'none';\n if (!specifiedFallbackPlacements && hasFallbackAxisSideDirection) {\n fallbackPlacements.push(...getOppositeAxisPlacements(initialPlacement, flipAlignment, fallbackAxisSideDirection, rtl));\n }\n const placements = [initialPlacement, ...fallbackPlacements];\n const overflow = await platform.detectOverflow(state, detectOverflowOptions);\n const overflows = [];\n let overflowsData = ((_middlewareData$flip = middlewareData.flip) == null ? void 0 : _middlewareData$flip.overflows) || [];\n if (checkMainAxis) {\n overflows.push(overflow[side]);\n }\n if (checkCrossAxis) {\n const sides = getAlignmentSides(placement, rects, rtl);\n overflows.push(overflow[sides[0]], overflow[sides[1]]);\n }\n overflowsData = [...overflowsData, {\n placement,\n overflows\n }];\n\n // One or more sides is overflowing.\n if (!overflows.every(side => side <= 0)) {\n var _middlewareData$flip2, _overflowsData$filter;\n const nextIndex = (((_middlewareData$flip2 = middlewareData.flip) == null ? void 0 : _middlewareData$flip2.index) || 0) + 1;\n const nextPlacement = placements[nextIndex];\n if (nextPlacement) {\n const ignoreCrossAxisOverflow = checkCrossAxis === 'alignment' ? initialSideAxis !== getSideAxis(nextPlacement) : false;\n if (!ignoreCrossAxisOverflow ||\n // We leave the current main axis only if every placement on that axis\n // overflows the main axis.\n overflowsData.every(d => getSideAxis(d.placement) === initialSideAxis ? d.overflows[0] > 0 : true)) {\n // Try next placement and re-run the lifecycle.\n return {\n data: {\n index: nextIndex,\n overflows: overflowsData\n },\n reset: {\n placement: nextPlacement\n }\n };\n }\n }\n\n // First, find the candidates that fit on the mainAxis side of overflow,\n // then find the placement that fits the best on the main crossAxis side.\n let resetPlacement = (_overflowsData$filter = overflowsData.filter(d => d.overflows[0] <= 0).sort((a, b) => a.overflows[1] - b.overflows[1])[0]) == null ? void 0 : _overflowsData$filter.placement;\n\n // Otherwise fallback.\n if (!resetPlacement) {\n switch (fallbackStrategy) {\n case 'bestFit':\n {\n var _overflowsData$filter2;\n const placement = (_overflowsData$filter2 = overflowsData.filter(d => {\n if (hasFallbackAxisSideDirection) {\n const currentSideAxis = getSideAxis(d.placement);\n return currentSideAxis === initialSideAxis ||\n // Create a bias to the `y` side axis due to horizontal\n // reading directions favoring greater width.\n currentSideAxis === 'y';\n }\n return true;\n }).map(d => [d.placement, d.overflows.filter(overflow => overflow > 0).reduce((acc, overflow) => acc + overflow, 0)]).sort((a, b) => a[1] - b[1])[0]) == null ? void 0 : _overflowsData$filter2[0];\n if (placement) {\n resetPlacement = placement;\n }\n break;\n }\n case 'initialPlacement':\n resetPlacement = initialPlacement;\n break;\n }\n }\n if (placement !== resetPlacement) {\n return {\n reset: {\n placement: resetPlacement\n }\n };\n }\n }\n return {};\n }\n };\n};\n\nfunction getSideOffsets(overflow, rect) {\n return {\n top: overflow.top - rect.height,\n right: overflow.right - rect.width,\n bottom: overflow.bottom - rect.height,\n left: overflow.left - rect.width\n };\n}\nfunction isAnySideFullyClipped(overflow) {\n return sides.some(side => overflow[side] >= 0);\n}\n/**\n * Provides data to hide the floating element in applicable situations, such as\n * when it is not in the same clipping context as the reference element.\n * @see https://floating-ui.com/docs/hide\n */\nconst hide = function (options) {\n if (options === void 0) {\n options = {};\n }\n return {\n name: 'hide',\n options,\n async fn(state) {\n const {\n rects,\n platform\n } = state;\n const {\n strategy = 'referenceHidden',\n ...detectOverflowOptions\n } = evaluate(options, state);\n switch (strategy) {\n case 'referenceHidden':\n {\n const overflow = await platform.detectOverflow(state, {\n ...detectOverflowOptions,\n elementContext: 'reference'\n });\n const offsets = getSideOffsets(overflow, rects.reference);\n return {\n data: {\n referenceHiddenOffsets: offsets,\n referenceHidden: isAnySideFullyClipped(offsets)\n }\n };\n }\n case 'escaped':\n {\n const overflow = await platform.detectOverflow(state, {\n ...detectOverflowOptions,\n altBoundary: true\n });\n const offsets = getSideOffsets(overflow, rects.floating);\n return {\n data: {\n escapedOffsets: offsets,\n escaped: isAnySideFullyClipped(offsets)\n }\n };\n }\n default:\n {\n return {};\n }\n }\n }\n };\n};\n\nfunction getBoundingRect(rects) {\n const minX = min(...rects.map(rect => rect.left));\n const minY = min(...rects.map(rect => rect.top));\n const maxX = max(...rects.map(rect => rect.right));\n const maxY = max(...rects.map(rect => rect.bottom));\n return {\n x: minX,\n y: minY,\n width: maxX - minX,\n height: maxY - minY\n };\n}\nfunction getRectsByLine(rects) {\n const sortedRects = rects.slice().sort((a, b) => a.y - b.y);\n const groups = [];\n let prevRect = null;\n for (let i = 0; i < sortedRects.length; i++) {\n const rect = sortedRects[i];\n if (!prevRect || rect.y - prevRect.y > prevRect.height / 2) {\n groups.push([rect]);\n } else {\n groups[groups.length - 1].push(rect);\n }\n prevRect = rect;\n }\n return groups.map(rect => rectToClientRect(getBoundingRect(rect)));\n}\n/**\n * Provides improved positioning for inline reference elements that can span\n * over multiple lines, such as hyperlinks or range selections.\n * @see https://floating-ui.com/docs/inline\n */\nconst inline = function (options) {\n if (options === void 0) {\n options = {};\n }\n return {\n name: 'inline',\n options,\n async fn(state) {\n const {\n placement,\n elements,\n rects,\n platform,\n strategy\n } = state;\n // A MouseEvent's client{X,Y} coords can be up to 2 pixels off a\n // ClientRect's bounds, despite the event listener being triggered. A\n // padding of 2 seems to handle this issue.\n const {\n padding = 2,\n x,\n y\n } = evaluate(options, state);\n const nativeClientRects = Array.from((await (platform.getClientRects == null ? void 0 : platform.getClientRects(elements.reference))) || []);\n\n // No rects (e.g. a hidden or detached reference, or a collapsed range) —\n // keep the existing reference rect rather than resetting to an invalid\n // one with non-finite values.\n if (!nativeClientRects.length) {\n return {};\n }\n const clientRects = getRectsByLine(nativeClientRects);\n const fallback = rectToClientRect(getBoundingRect(nativeClientRects));\n const paddingObject = getPaddingObject(padding);\n function getBoundingClientRect() {\n // There are two rects and they are disjoined.\n if (clientRects.length === 2 && (clientRects[0].left > clientRects[1].right || clientRects[1].left > clientRects[0].right) && x != null && y != null) {\n // Find the first rect in which the point is fully inside.\n return clientRects.find(rect => x > rect.left - paddingObject.left && x < rect.right + paddingObject.right && y > rect.top - paddingObject.top && y < rect.bottom + paddingObject.bottom) || fallback;\n }\n\n // There are 2 or more connected rects.\n if (clientRects.length >= 2) {\n if (getSideAxis(placement) === 'y') {\n const firstRect = clientRects[0];\n const lastRect = clientRects[clientRects.length - 1];\n const isTop = getSide(placement) === 'top';\n const top = firstRect.top;\n const bottom = lastRect.bottom;\n const left = isTop ? firstRect.left : lastRect.left;\n const right = isTop ? firstRect.right : lastRect.right;\n return rectToClientRect({\n x: left,\n y: top,\n width: right - left,\n height: bottom - top\n });\n }\n const isLeftSide = getSide(placement) === 'left';\n const maxRight = max(...clientRects.map(rect => rect.right));\n const minLeft = min(...clientRects.map(rect => rect.left));\n const measureRects = clientRects.filter(rect => isLeftSide ? rect.left === minLeft : rect.right === maxRight);\n const top = measureRects[0].top;\n const bottom = measureRects[measureRects.length - 1].bottom;\n return rectToClientRect({\n x: minLeft,\n y: top,\n width: maxRight - minLeft,\n height: bottom - top\n });\n }\n return fallback;\n }\n const resetRects = await platform.getElementRects({\n reference: {\n getBoundingClientRect\n },\n floating: elements.floating,\n strategy\n });\n if (rects.reference.x !== resetRects.reference.x || rects.reference.y !== resetRects.reference.y || rects.reference.width !== resetRects.reference.width || rects.reference.height !== resetRects.reference.height) {\n return {\n reset: {\n rects: resetRects\n }\n };\n }\n return {};\n }\n };\n};\n\nconst originSides = /*#__PURE__*/new Set(['left', 'top']);\n\n// For type backwards-compatibility, the `OffsetOptions` type was also\n// Derivable.\n\nasync function convertValueToCoords(state, options) {\n const {\n placement,\n platform,\n elements\n } = state;\n const rtl = await (platform.isRTL == null ? void 0 : platform.isRTL(elements.floating));\n const side = getSide(placement);\n const alignment = getAlignment(placement);\n const isVertical = getSideAxis(placement) === 'y';\n const mainAxisMulti = originSides.has(side) ? -1 : 1;\n const crossAxisMulti = rtl && isVertical ? -1 : 1;\n const rawValue = evaluate(options, state);\n\n // eslint-disable-next-line prefer-const\n let {\n mainAxis,\n crossAxis,\n alignmentAxis\n } = typeof rawValue === 'number' ? {\n mainAxis: rawValue,\n crossAxis: 0,\n alignmentAxis: null\n } : {\n mainAxis: rawValue.mainAxis || 0,\n crossAxis: rawValue.crossAxis || 0,\n alignmentAxis: rawValue.alignmentAxis\n };\n if (alignment && typeof alignmentAxis === 'number') {\n crossAxis = alignment === 'end' ? alignmentAxis * -1 : alignmentAxis;\n }\n return isVertical ? {\n x: crossAxis * crossAxisMulti,\n y: mainAxis * mainAxisMulti\n } : {\n x: mainAxis * mainAxisMulti,\n y: crossAxis * crossAxisMulti\n };\n}\n\n/**\n * Modifies the placement by translating the floating element along the\n * specified axes.\n * A number (shorthand for `mainAxis` or distance), or an axes configuration\n * object may be passed.\n * @see https://floating-ui.com/docs/offset\n */\nconst offset = function (options) {\n if (options === void 0) {\n options = 0;\n }\n return {\n name: 'offset',\n options,\n async fn(state) {\n var _middlewareData$offse, _middlewareData$arrow;\n const {\n x,\n y,\n placement,\n middlewareData\n } = state;\n const diffCoords = await convertValueToCoords(state, options);\n\n // If the placement is the same and the arrow caused an alignment offset\n // then we don't need to change the positioning coordinates.\n if (placement === ((_middlewareData$offse = middlewareData.offset) == null ? void 0 : _middlewareData$offse.placement) && (_middlewareData$arrow = middlewareData.arrow) != null && _middlewareData$arrow.alignmentOffset) {\n return {};\n }\n return {\n x: x + diffCoords.x,\n y: y + diffCoords.y,\n data: {\n ...diffCoords,\n placement\n }\n };\n }\n };\n};\n\n/**\n * Optimizes the visibility of the floating element by shifting it in order to\n * keep it in view when it will overflow the clipping boundary.\n * @see https://floating-ui.com/docs/shift\n */\nconst shift = function (options) {\n if (options === void 0) {\n options = {};\n }\n return {\n name: 'shift',\n options,\n async fn(state) {\n const {\n x,\n y,\n placement,\n platform\n } = state;\n const {\n mainAxis: checkMainAxis = true,\n crossAxis: checkCrossAxis = false,\n limiter = {\n fn: _ref => {\n let {\n x,\n y\n } = _ref;\n return {\n x,\n y\n };\n }\n },\n ...detectOverflowOptions\n } = evaluate(options, state);\n const coords = {\n x,\n y\n };\n const overflow = await platform.detectOverflow(state, detectOverflowOptions);\n const crossAxis = getSideAxis(placement);\n const mainAxis = getOppositeAxis(crossAxis);\n let mainAxisCoord = coords[mainAxis];\n let crossAxisCoord = coords[crossAxis];\n const clampCoord = (axis, coord) => clamp(coord + overflow[axis === 'y' ? 'top' : 'left'], coord, coord - overflow[axis === 'y' ? 'bottom' : 'right']);\n if (checkMainAxis) {\n mainAxisCoord = clampCoord(mainAxis, mainAxisCoord);\n }\n if (checkCrossAxis) {\n crossAxisCoord = clampCoord(crossAxis, crossAxisCoord);\n }\n const limitedCoords = limiter.fn({\n ...state,\n [mainAxis]: mainAxisCoord,\n [crossAxis]: crossAxisCoord\n });\n return {\n ...limitedCoords,\n data: {\n x: limitedCoords.x - x,\n y: limitedCoords.y - y,\n enabled: {\n [mainAxis]: checkMainAxis,\n [crossAxis]: checkCrossAxis\n }\n }\n };\n }\n };\n};\n/**\n * Built-in `limiter` that will stop `shift()` at a certain point.\n */\nconst limitShift = function (options) {\n if (options === void 0) {\n options = {};\n }\n return {\n options,\n fn(state) {\n var _rawOffset$mainAxis, _rawOffset$crossAxis;\n const {\n x,\n y,\n placement,\n rects,\n middlewareData\n } = state;\n const {\n offset = 0,\n mainAxis: checkMainAxis = true,\n crossAxis: checkCrossAxis = true\n } = evaluate(options, state);\n const coords = {\n x,\n y\n };\n const crossAxis = getSideAxis(placement);\n const mainAxis = getOppositeAxis(crossAxis);\n let mainAxisCoord = coords[mainAxis];\n let crossAxisCoord = coords[crossAxis];\n const rawOffset = evaluate(offset, state);\n const computedOffset = typeof rawOffset === 'number' ? {\n mainAxis: rawOffset,\n crossAxis: 0\n } : {\n mainAxis: (_rawOffset$mainAxis = rawOffset.mainAxis) != null ? _rawOffset$mainAxis : 0,\n crossAxis: (_rawOffset$crossAxis = rawOffset.crossAxis) != null ? _rawOffset$crossAxis : 0\n };\n if (checkMainAxis) {\n const len = mainAxis === 'y' ? 'height' : 'width';\n const limitMin = rects.reference[mainAxis] - rects.floating[len] + computedOffset.mainAxis;\n const limitMax = rects.reference[mainAxis] + rects.reference[len] - computedOffset.mainAxis;\n if (mainAxisCoord < limitMin) {\n mainAxisCoord = limitMin;\n } else if (mainAxisCoord > limitMax) {\n mainAxisCoord = limitMax;\n }\n }\n if (checkCrossAxis) {\n var _middlewareData$offse, _middlewareData$offse2;\n const len = mainAxis === 'y' ? 'width' : 'height';\n const isOriginSide = originSides.has(getSide(placement));\n const limitMin = rects.reference[crossAxis] - rects.floating[len] + (isOriginSide ? ((_middlewareData$offse = middlewareData.offset) == null ? void 0 : _middlewareData$offse[crossAxis]) || 0 : 0) + (isOriginSide ? 0 : computedOffset.crossAxis);\n const limitMax = rects.reference[crossAxis] + rects.reference[len] + (isOriginSide ? 0 : ((_middlewareData$offse2 = middlewareData.offset) == null ? void 0 : _middlewareData$offse2[crossAxis]) || 0) - (isOriginSide ? computedOffset.crossAxis : 0);\n if (crossAxisCoord < limitMin) {\n crossAxisCoord = limitMin;\n } else if (crossAxisCoord > limitMax) {\n crossAxisCoord = limitMax;\n }\n }\n return {\n [mainAxis]: mainAxisCoord,\n [crossAxis]: crossAxisCoord\n };\n }\n };\n};\n\n// Method syntax keeps callback parameters bivariant, but expressing the\n// explicit `| undefined` required by `exactOptionalPropertyTypes` needs\n// property syntax, which is contravariant under `strictFunctionTypes`.\n// Extracting the function from a method position restores that bivariance so\n// consumers can still assign callbacks with narrower parameter types.\n\n/**\n * Provides data that allows you to change the size of the floating element —\n * for instance, prevent it from overflowing the clipping boundary or match the\n * width of the reference element.\n * @see https://floating-ui.com/docs/size\n */\nconst size = function (options) {\n if (options === void 0) {\n options = {};\n }\n return {\n name: 'size',\n options,\n async fn(state) {\n const {\n placement,\n rects,\n platform,\n elements\n } = state;\n const {\n apply = () => {},\n ...detectOverflowOptions\n } = evaluate(options, state);\n const overflow = await platform.detectOverflow(state, detectOverflowOptions);\n const side = getSide(placement);\n const alignment = getAlignment(placement);\n const isYAxis = getSideAxis(placement) === 'y';\n const {\n width,\n height\n } = rects.floating;\n let heightSide;\n let widthSide;\n if (side === 'top' || side === 'bottom') {\n heightSide = side;\n widthSide = alignment === ((await (platform.isRTL == null ? void 0 : platform.isRTL(elements.floating))) ? 'start' : 'end') ? 'left' : 'right';\n } else {\n widthSide = side;\n heightSide = alignment === 'end' ? 'top' : 'bottom';\n }\n const maximumClippingHeight = height - overflow.top - overflow.bottom;\n const maximumClippingWidth = width - overflow.left - overflow.right;\n const overflowAvailableHeight = min(height - overflow[heightSide], maximumClippingHeight);\n const overflowAvailableWidth = min(width - overflow[widthSide], maximumClippingWidth);\n const shiftData = state.middlewareData.shift;\n const noShift = !shiftData;\n let availableHeight = overflowAvailableHeight;\n let availableWidth = overflowAvailableWidth;\n if (shiftData != null && shiftData.enabled.x) {\n availableWidth = maximumClippingWidth;\n }\n if (shiftData != null && shiftData.enabled.y) {\n availableHeight = maximumClippingHeight;\n }\n if (noShift && !alignment) {\n if (isYAxis) {\n availableWidth = width - 2 * max(overflow.left, overflow.right);\n } else {\n availableHeight = height - 2 * max(overflow.top, overflow.bottom);\n }\n }\n await apply({\n ...state,\n availableWidth,\n availableHeight\n });\n const nextDimensions = await platform.getDimensions(elements.floating);\n if (width !== nextDimensions.width || height !== nextDimensions.height) {\n return {\n reset: {\n rects: true\n }\n };\n }\n return {};\n }\n };\n};\n\nexport { arrow, autoPlacement, computePosition, detectOverflow, flip, hide, inline, limitShift, offset, shift, size };\n","import{rectToClientRect as t,computePosition as e}from\"@floating-ui/core\";export{arrow,autoPlacement,detectOverflow,flip,hide,inline,limitShift,offset,shift,size}from\"@floating-ui/core\";function n(t){var e;return(null==(e=t.ownerDocument)?void 0:e.defaultView)||window}function o(t){return n(t).getComputedStyle(t)}const i=Math.min,r=Math.max,l=Math.round;function c(t){const e=o(t);let n=parseFloat(e.width),i=parseFloat(e.height);const r=t.offsetWidth,c=t.offsetHeight,s=l(n)!==r||l(i)!==c;return s&&(n=r,i=c),{width:n,height:i,fallback:s}}function s(t){return h(t)?(t.nodeName||\"\").toLowerCase():\"\"}let f;function u(){if(f)return f;const t=navigator.userAgentData;return t&&Array.isArray(t.brands)?(f=t.brands.map((t=>t.brand+\"/\"+t.version)).join(\" \"),f):navigator.userAgent}function a(t){return t instanceof n(t).HTMLElement}function d(t){return t instanceof n(t).Element}function h(t){return t instanceof n(t).Node}function p(t){if(\"undefined\"==typeof ShadowRoot)return!1;return t instanceof n(t).ShadowRoot||t instanceof ShadowRoot}function g(t){const{overflow:e,overflowX:n,overflowY:i,display:r}=o(t);return/auto|scroll|overlay|hidden|clip/.test(e+i+n)&&![\"inline\",\"contents\"].includes(r)}function m(t){return[\"table\",\"td\",\"th\"].includes(s(t))}function y(t){const e=/firefox/i.test(u()),n=o(t),i=n.backdropFilter||n.WebkitBackdropFilter;return\"none\"!==n.transform||\"none\"!==n.perspective||!!i&&\"none\"!==i||e&&\"filter\"===n.willChange||e&&!!n.filter&&\"none\"!==n.filter||[\"transform\",\"perspective\"].some((t=>n.willChange.includes(t)))||[\"paint\",\"layout\",\"strict\",\"content\"].some((t=>{const e=n.contain;return null!=e&&e.includes(t)}))}function x(){return!/^((?!chrome|android).)*safari/i.test(u())}function w(t){return[\"html\",\"body\",\"#document\"].includes(s(t))}function v(t){return d(t)?t:t.contextElement}const b={x:1,y:1};function L(t){const e=v(t);if(!a(e))return b;const n=e.getBoundingClientRect(),{width:o,height:i,fallback:r}=c(e);let s=(r?l(n.width):n.width)/o,f=(r?l(n.height):n.height)/i;return s&&Number.isFinite(s)||(s=1),f&&Number.isFinite(f)||(f=1),{x:s,y:f}}function E(t,e,o,i){var r,l;void 0===e&&(e=!1),void 0===o&&(o=!1);const c=t.getBoundingClientRect(),s=v(t);let f=b;e&&(i?d(i)&&(f=L(i)):f=L(t));const u=s?n(s):window,a=!x()&&o;let h=(c.left+(a&&(null==(r=u.visualViewport)?void 0:r.offsetLeft)||0))/f.x,p=(c.top+(a&&(null==(l=u.visualViewport)?void 0:l.offsetTop)||0))/f.y,g=c.width/f.x,m=c.height/f.y;if(s){const t=n(s),e=i&&d(i)?n(i):i;let o=t.frameElement;for(;o&&i&&e!==t;){const t=L(o),e=o.getBoundingClientRect(),i=getComputedStyle(o);e.x+=(o.clientLeft+parseFloat(i.paddingLeft))*t.x,e.y+=(o.clientTop+parseFloat(i.paddingTop))*t.y,h*=t.x,p*=t.y,g*=t.x,m*=t.y,h+=e.x,p+=e.y,o=n(o).frameElement}}return{width:g,height:m,top:p,right:h+g,bottom:p+m,left:h,x:h,y:p}}function R(t){return((h(t)?t.ownerDocument:t.document)||window.document).documentElement}function T(t){return d(t)?{scrollLeft:t.scrollLeft,scrollTop:t.scrollTop}:{scrollLeft:t.pageXOffset,scrollTop:t.pageYOffset}}function C(t){return E(R(t)).left+T(t).scrollLeft}function F(t){if(\"html\"===s(t))return t;const e=t.assignedSlot||t.parentNode||p(t)&&t.host||R(t);return p(e)?e.host:e}function W(t){const e=F(t);return w(e)?e.ownerDocument.body:a(e)&&g(e)?e:W(e)}function D(t,e){var o;void 0===e&&(e=[]);const i=W(t),r=i===(null==(o=t.ownerDocument)?void 0:o.body),l=n(i);return r?e.concat(l,l.visualViewport||[],g(i)?i:[]):e.concat(i,D(i))}function S(e,i,l){return\"viewport\"===i?t(function(t,e){const o=n(t),i=R(t),r=o.visualViewport;let l=i.clientWidth,c=i.clientHeight,s=0,f=0;if(r){l=r.width,c=r.height;const t=x();(t||!t&&\"fixed\"===e)&&(s=r.offsetLeft,f=r.offsetTop)}return{width:l,height:c,x:s,y:f}}(e,l)):d(i)?t(function(t,e){const n=E(t,!0,\"fixed\"===e),o=n.top+t.clientTop,i=n.left+t.clientLeft,r=a(t)?L(t):{x:1,y:1};return{width:t.clientWidth*r.x,height:t.clientHeight*r.y,x:i*r.x,y:o*r.y}}(i,l)):t(function(t){const e=R(t),n=T(t),i=t.ownerDocument.body,l=r(e.scrollWidth,e.clientWidth,i.scrollWidth,i.clientWidth),c=r(e.scrollHeight,e.clientHeight,i.scrollHeight,i.clientHeight);let s=-n.scrollLeft+C(t);const f=-n.scrollTop;return\"rtl\"===o(i).direction&&(s+=r(e.clientWidth,i.clientWidth)-l),{width:l,height:c,x:s,y:f}}(R(e)))}function A(t){return a(t)&&\"fixed\"!==o(t).position?t.offsetParent:null}function H(t){const e=n(t);let i=A(t);for(;i&&m(i)&&\"static\"===o(i).position;)i=A(i);return i&&(\"html\"===s(i)||\"body\"===s(i)&&\"static\"===o(i).position&&!y(i))?e:i||function(t){let e=F(t);for(;a(e)&&!w(e);){if(y(e))return e;e=F(e)}return null}(t)||e}function O(t,e,n){const o=a(e),i=R(e),r=E(t,!0,\"fixed\"===n,e);let l={scrollLeft:0,scrollTop:0};const c={x:0,y:0};if(o||!o&&\"fixed\"!==n)if((\"body\"!==s(e)||g(i))&&(l=T(e)),a(e)){const t=E(e,!0);c.x=t.x+e.clientLeft,c.y=t.y+e.clientTop}else i&&(c.x=C(i));return{x:r.left+l.scrollLeft-c.x,y:r.top+l.scrollTop-c.y,width:r.width,height:r.height}}const P={getClippingRect:function(t){let{element:e,boundary:n,rootBoundary:l,strategy:c}=t;const f=\"clippingAncestors\"===n?function(t,e){const n=e.get(t);if(n)return n;let i=D(t).filter((t=>d(t)&&\"body\"!==s(t))),r=null;const l=\"fixed\"===o(t).position;let c=l?F(t):t;for(;d(c)&&!w(c);){const t=o(c),e=y(c);(l?e||r:e||\"static\"!==t.position||!r||![\"absolute\",\"fixed\"].includes(r.position))?r=t:i=i.filter((t=>t!==c)),c=F(c)}return e.set(t,i),i}(e,this._c):[].concat(n),u=[...f,l],a=u[0],h=u.reduce(((t,n)=>{const o=S(e,n,c);return t.top=r(o.top,t.top),t.right=i(o.right,t.right),t.bottom=i(o.bottom,t.bottom),t.left=r(o.left,t.left),t}),S(e,a,c));return{width:h.right-h.left,height:h.bottom-h.top,x:h.left,y:h.top}},convertOffsetParentRelativeRectToViewportRelativeRect:function(t){let{rect:e,offsetParent:n,strategy:o}=t;const i=a(n),r=R(n);if(n===r)return e;let l={scrollLeft:0,scrollTop:0},c={x:1,y:1};const f={x:0,y:0};if((i||!i&&\"fixed\"!==o)&&((\"body\"!==s(n)||g(r))&&(l=T(n)),a(n))){const t=E(n);c=L(n),f.x=t.x+n.clientLeft,f.y=t.y+n.clientTop}return{width:e.width*c.x,height:e.height*c.y,x:e.x*c.x-l.scrollLeft*c.x+f.x,y:e.y*c.y-l.scrollTop*c.y+f.y}},isElement:d,getDimensions:function(t){return a(t)?c(t):t.getBoundingClientRect()},getOffsetParent:H,getDocumentElement:R,getScale:L,async getElementRects(t){let{reference:e,floating:n,strategy:o}=t;const i=this.getOffsetParent||H,r=this.getDimensions;return{reference:O(e,await i(n),o),floating:{x:0,y:0,...await r(n)}}},getClientRects:t=>Array.from(t.getClientRects()),isRTL:t=>\"rtl\"===o(t).direction};function z(t,e,n,o){void 0===o&&(o={});const{ancestorScroll:i=!0,ancestorResize:r=!0,elementResize:l=!0,animationFrame:c=!1}=o,s=i&&!c,f=s||r?[...d(t)?D(t):t.contextElement?D(t.contextElement):[],...D(e)]:[];f.forEach((t=>{s&&t.addEventListener(\"scroll\",n,{passive:!0}),r&&t.addEventListener(\"resize\",n)}));let u,a=null;if(l){let o=!0;a=new ResizeObserver((()=>{o||n(),o=!1})),d(t)&&!c&&a.observe(t),d(t)||!t.contextElement||c||a.observe(t.contextElement),a.observe(e)}let h=c?E(t):null;return c&&function e(){const o=E(t);!h||o.x===h.x&&o.y===h.y&&o.width===h.width&&o.height===h.height||n();h=o,u=requestAnimationFrame(e)}(),n(),()=>{var t;f.forEach((t=>{s&&t.removeEventListener(\"scroll\",n),r&&t.removeEventListener(\"resize\",n)})),null==(t=a)||t.disconnect(),a=null,c&&cancelAnimationFrame(u)}}const B=(t,n,o)=>{const i=new Map,r={platform:P,...o},l={...r.platform,_c:i};return e(t,n,{...r,platform:l})};export{z as autoUpdate,B as computePosition,D as getOverflowAncestors,P as platform};\n","import { defineComponent as O, openBlock as f, createElementBlock as T, normalizeClass as J, renderSlot as A, normalizeProps as ke, guardReactiveProps as Le, pushScopeId as De, popScopeId as Ie, nextTick as Fe, createBlock as M, withScopeId as Re, resolveComponent as P, normalizeStyle as W, withKeys as je, createElementVNode as w, Fragment as Ve, createCommentVNode as se, mergeProps as $e, withCtx as N, createVNode as ve, toDisplayString as We, ref as U, createApp as Ge, h as qe } from \"vue\";\nimport { offset as xe, autoPlacement as Ue, shift as Ye, flip as Xe, arrow as Ke, size as Je, computePosition as Qe, getOverflowAncestors as ne } from \"@floating-ui/dom\";\nfunction ye(e, t) {\n for (const o in t)\n Object.prototype.hasOwnProperty.call(t, o) && (typeof t[o] == \"object\" && e[o] ? ye(e[o], t[o]) : e[o] = t[o]);\n}\nconst h = {\n // Disable popper components\n disabled: !1,\n // Default position offset along main axis (px)\n distance: 5,\n // Default position offset along cross axis (px)\n skidding: 0,\n // Default container where the tooltip will be appended\n container: \"body\",\n // Element used to compute position and size boundaries\n boundary: void 0,\n // Skip delay & CSS transitions when another popper is shown, so that the popper appear to instanly move to the new position.\n instantMove: !1,\n // Auto destroy tooltip DOM nodes (ms)\n disposeTimeout: 150,\n // Triggers on the popper itself\n popperTriggers: [],\n // Positioning strategy\n strategy: \"absolute\",\n // Prevent overflow\n preventOverflow: !0,\n // Flip to the opposite placement if needed\n flip: !0,\n // Shift on the cross axis to prevent the popper from overflowing\n shift: !0,\n // Overflow padding (px)\n overflowPadding: 0,\n // Arrow padding (px)\n arrowPadding: 0,\n // Compute arrow overflow (useful to hide it)\n arrowOverflow: !0,\n /**\n * By default, compute autohide on 'click'.\n */\n autoHideOnMousedown: !1,\n // Themes\n themes: {\n tooltip: {\n // Default tooltip placement relative to target element\n placement: \"top\",\n // Default events that trigger the tooltip\n triggers: [\"hover\", \"focus\", \"touch\"],\n // Close tooltip on click on tooltip target\n hideTriggers: (e) => [...e, \"click\"],\n // Delay (ms)\n delay: {\n show: 200,\n hide: 0\n },\n // Update popper on content resize\n handleResize: !1,\n // Enable HTML content in directive\n html: !1,\n // Displayed when tooltip content is loading\n loadingContent: \"...\"\n },\n dropdown: {\n // Default dropdown placement relative to target element\n placement: \"bottom\",\n // Default events that trigger the dropdown\n triggers: [\"click\"],\n // Delay (ms)\n delay: 0,\n // Update popper on content resize\n handleResize: !0,\n // Hide on clock outside\n autoHide: !0\n },\n menu: {\n $extend: \"dropdown\",\n triggers: [\"hover\", \"focus\"],\n popperTriggers: [\"hover\"],\n delay: {\n show: 0,\n hide: 400\n }\n }\n }\n};\nfunction S(e, t) {\n let o = h.themes[e] || {}, i;\n do\n i = o[t], typeof i > \"u\" ? o.$extend ? o = h.themes[o.$extend] || {} : (o = null, i = h[t]) : o = null;\n while (o);\n return i;\n}\nfunction Ze(e) {\n const t = [e];\n let o = h.themes[e] || {};\n do\n o.$extend && !o.$resetCss ? (t.push(o.$extend), o = h.themes[o.$extend] || {}) : o = null;\n while (o);\n return t.map((i) => `v-popper--theme-${i}`);\n}\nfunction re(e) {\n const t = [e];\n let o = h.themes[e] || {};\n do\n o.$extend ? (t.push(o.$extend), o = h.themes[o.$extend] || {}) : o = null;\n while (o);\n return t;\n}\nlet $ = !1;\nif (typeof window < \"u\") {\n $ = !1;\n try {\n const e = Object.defineProperty({}, \"passive\", {\n get() {\n $ = !0;\n }\n });\n window.addEventListener(\"test\", null, e);\n } catch {\n }\n}\nlet _e = !1;\ntypeof window < \"u\" && typeof navigator < \"u\" && (_e = /iPad|iPhone|iPod/.test(navigator.userAgent) && !window.MSStream);\nconst Te = [\"auto\", \"top\", \"bottom\", \"left\", \"right\"].reduce((e, t) => e.concat([\n t,\n `${t}-start`,\n `${t}-end`\n]), []), pe = {\n hover: \"mouseenter\",\n focus: \"focus\",\n click: \"click\",\n touch: \"touchstart\",\n pointer: \"pointerdown\"\n}, ae = {\n hover: \"mouseleave\",\n focus: \"blur\",\n click: \"click\",\n touch: \"touchend\",\n pointer: \"pointerup\"\n};\nfunction de(e, t) {\n const o = e.indexOf(t);\n o !== -1 && e.splice(o, 1);\n}\nfunction G() {\n return new Promise((e) => requestAnimationFrame(() => {\n requestAnimationFrame(e);\n }));\n}\nconst d = [];\nlet g = null;\nconst le = {};\nfunction he(e) {\n let t = le[e];\n return t || (t = le[e] = []), t;\n}\nlet Y = function() {\n};\ntypeof window < \"u\" && (Y = window.Element);\nfunction n(e) {\n return function(t) {\n return S(t.theme, e);\n };\n}\nconst q = \"__floating-vue__popper\", Q = () => O({\n name: \"VPopper\",\n provide() {\n return {\n [q]: {\n parentPopper: this\n }\n };\n },\n inject: {\n [q]: { default: null }\n },\n props: {\n theme: {\n type: String,\n required: !0\n },\n targetNodes: {\n type: Function,\n required: !0\n },\n referenceNode: {\n type: Function,\n default: null\n },\n popperNode: {\n type: Function,\n required: !0\n },\n shown: {\n type: Boolean,\n default: !1\n },\n showGroup: {\n type: String,\n default: null\n },\n // eslint-disable-next-line vue/require-prop-types\n ariaId: {\n default: null\n },\n disabled: {\n type: Boolean,\n default: n(\"disabled\")\n },\n positioningDisabled: {\n type: Boolean,\n default: n(\"positioningDisabled\")\n },\n placement: {\n type: String,\n default: n(\"placement\"),\n validator: (e) => Te.includes(e)\n },\n delay: {\n type: [String, Number, Object],\n default: n(\"delay\")\n },\n distance: {\n type: [Number, String],\n default: n(\"distance\")\n },\n skidding: {\n type: [Number, String],\n default: n(\"skidding\")\n },\n triggers: {\n type: Array,\n default: n(\"triggers\")\n },\n showTriggers: {\n type: [Array, Function],\n default: n(\"showTriggers\")\n },\n hideTriggers: {\n type: [Array, Function],\n default: n(\"hideTriggers\")\n },\n popperTriggers: {\n type: Array,\n default: n(\"popperTriggers\")\n },\n popperShowTriggers: {\n type: [Array, Function],\n default: n(\"popperShowTriggers\")\n },\n popperHideTriggers: {\n type: [Array, Function],\n default: n(\"popperHideTriggers\")\n },\n container: {\n type: [String, Object, Y, Boolean],\n default: n(\"container\")\n },\n boundary: {\n type: [String, Y],\n default: n(\"boundary\")\n },\n strategy: {\n type: String,\n validator: (e) => [\"absolute\", \"fixed\"].includes(e),\n default: n(\"strategy\")\n },\n autoHide: {\n type: [Boolean, Function],\n default: n(\"autoHide\")\n },\n handleResize: {\n type: Boolean,\n default: n(\"handleResize\")\n },\n instantMove: {\n type: Boolean,\n default: n(\"instantMove\")\n },\n eagerMount: {\n type: Boolean,\n default: n(\"eagerMount\")\n },\n popperClass: {\n type: [String, Array, Object],\n default: n(\"popperClass\")\n },\n computeTransformOrigin: {\n type: Boolean,\n default: n(\"computeTransformOrigin\")\n },\n /**\n * @deprecated\n */\n autoMinSize: {\n type: Boolean,\n default: n(\"autoMinSize\")\n },\n autoSize: {\n type: [Boolean, String],\n default: n(\"autoSize\")\n },\n /**\n * @deprecated\n */\n autoMaxSize: {\n type: Boolean,\n default: n(\"autoMaxSize\")\n },\n autoBoundaryMaxSize: {\n type: Boolean,\n default: n(\"autoBoundaryMaxSize\")\n },\n preventOverflow: {\n type: Boolean,\n default: n(\"preventOverflow\")\n },\n overflowPadding: {\n type: [Number, String],\n default: n(\"overflowPadding\")\n },\n arrowPadding: {\n type: [Number, String],\n default: n(\"arrowPadding\")\n },\n arrowOverflow: {\n type: Boolean,\n default: n(\"arrowOverflow\")\n },\n flip: {\n type: Boolean,\n default: n(\"flip\")\n },\n shift: {\n type: Boolean,\n default: n(\"shift\")\n },\n shiftCrossAxis: {\n type: Boolean,\n default: n(\"shiftCrossAxis\")\n },\n noAutoFocus: {\n type: Boolean,\n default: n(\"noAutoFocus\")\n },\n disposeTimeout: {\n type: Number,\n default: n(\"disposeTimeout\")\n }\n },\n emits: {\n show: () => !0,\n hide: () => !0,\n \"update:shown\": (e) => !0,\n \"apply-show\": () => !0,\n \"apply-hide\": () => !0,\n \"close-group\": () => !0,\n \"close-directive\": () => !0,\n \"auto-hide\": () => !0,\n resize: () => !0\n },\n data() {\n return {\n isShown: !1,\n isMounted: !1,\n skipTransition: !1,\n classes: {\n showFrom: !1,\n showTo: !1,\n hideFrom: !1,\n hideTo: !0\n },\n result: {\n x: 0,\n y: 0,\n placement: \"\",\n strategy: this.strategy,\n arrow: {\n x: 0,\n y: 0,\n centerOffset: 0\n },\n transformOrigin: null\n },\n randomId: `popper_${[Math.random(), Date.now()].map((e) => e.toString(36).substring(2, 10)).join(\"_\")}`,\n shownChildren: /* @__PURE__ */ new Set(),\n lastAutoHide: !0,\n pendingHide: !1,\n containsGlobalTarget: !1,\n isDisposed: !0,\n mouseDownContains: !1\n };\n },\n computed: {\n popperId() {\n return this.ariaId != null ? this.ariaId : this.randomId;\n },\n shouldMountContent() {\n return this.eagerMount || this.isMounted;\n },\n slotData() {\n return {\n popperId: this.popperId,\n isShown: this.isShown,\n shouldMountContent: this.shouldMountContent,\n skipTransition: this.skipTransition,\n autoHide: typeof this.autoHide == \"function\" ? this.lastAutoHide : this.autoHide,\n show: this.show,\n hide: this.hide,\n handleResize: this.handleResize,\n onResize: this.onResize,\n classes: {\n ...this.classes,\n popperClass: this.popperClass\n },\n result: this.positioningDisabled ? null : this.result,\n attrs: this.$attrs\n };\n },\n parentPopper() {\n var e;\n return (e = this[q]) == null ? void 0 : e.parentPopper;\n },\n hasPopperShowTriggerHover() {\n var e, t;\n return ((e = this.popperTriggers) == null ? void 0 : e.includes(\"hover\")) || ((t = this.popperShowTriggers) == null ? void 0 : t.includes(\"hover\"));\n }\n },\n watch: {\n shown: \"$_autoShowHide\",\n disabled(e) {\n e ? this.dispose() : this.init();\n },\n async container() {\n this.isShown && (this.$_ensureTeleport(), await this.$_computePosition());\n },\n triggers: {\n handler: \"$_refreshListeners\",\n deep: !0\n },\n positioningDisabled: \"$_refreshListeners\",\n ...[\n \"placement\",\n \"distance\",\n \"skidding\",\n \"boundary\",\n \"strategy\",\n \"overflowPadding\",\n \"arrowPadding\",\n \"preventOverflow\",\n \"shift\",\n \"shiftCrossAxis\",\n \"flip\"\n ].reduce((e, t) => (e[t] = \"$_computePosition\", e), {})\n },\n created() {\n this.autoMinSize && console.warn('[floating-vue] `autoMinSize` option is deprecated. Use `autoSize=\"min\"` instead.'), this.autoMaxSize && console.warn(\"[floating-vue] `autoMaxSize` option is deprecated. Use `autoBoundaryMaxSize` instead.\");\n },\n mounted() {\n this.init(), this.$_detachPopperNode();\n },\n activated() {\n this.$_autoShowHide();\n },\n deactivated() {\n this.hide();\n },\n beforeUnmount() {\n this.dispose();\n },\n methods: {\n show({ event: e = null, skipDelay: t = !1, force: o = !1 } = {}) {\n var i, s;\n (i = this.parentPopper) != null && i.lockedChild && this.parentPopper.lockedChild !== this || (this.pendingHide = !1, (o || !this.disabled) && (((s = this.parentPopper) == null ? void 0 : s.lockedChild) === this && (this.parentPopper.lockedChild = null), this.$_scheduleShow(e, t), this.$emit(\"show\"), this.$_showFrameLocked = !0, requestAnimationFrame(() => {\n this.$_showFrameLocked = !1;\n })), this.$emit(\"update:shown\", !0));\n },\n hide({ event: e = null, skipDelay: t = !1 } = {}) {\n var o;\n if (!this.$_hideInProgress) {\n if (this.shownChildren.size > 0) {\n this.pendingHide = !0;\n return;\n }\n if (this.hasPopperShowTriggerHover && this.$_isAimingPopper()) {\n this.parentPopper && (this.parentPopper.lockedChild = this, clearTimeout(this.parentPopper.lockedChildTimer), this.parentPopper.lockedChildTimer = setTimeout(() => {\n this.parentPopper.lockedChild === this && (this.parentPopper.lockedChild.hide({ skipDelay: t }), this.parentPopper.lockedChild = null);\n }, 1e3));\n return;\n }\n ((o = this.parentPopper) == null ? void 0 : o.lockedChild) === this && (this.parentPopper.lockedChild = null), this.pendingHide = !1, this.$_scheduleHide(e, t), this.$emit(\"hide\"), this.$emit(\"update:shown\", !1);\n }\n },\n init() {\n var e;\n this.isDisposed && (this.isDisposed = !1, this.isMounted = !1, this.$_events = [], this.$_preventShow = !1, this.$_referenceNode = ((e = this.referenceNode) == null ? void 0 : e.call(this)) ?? this.$el, this.$_targetNodes = this.targetNodes().filter((t) => t.nodeType === t.ELEMENT_NODE), this.$_popperNode = this.popperNode(), this.$_innerNode = this.$_popperNode.querySelector(\".v-popper__inner\"), this.$_arrowNode = this.$_popperNode.querySelector(\".v-popper__arrow-container\"), this.$_swapTargetAttrs(\"title\", \"data-original-title\"), this.$_detachPopperNode(), this.triggers.length && this.$_addEventListeners(), this.shown && this.show());\n },\n dispose() {\n this.isDisposed || (this.isDisposed = !0, this.$_removeEventListeners(), this.hide({ skipDelay: !0 }), this.$_detachPopperNode(), this.isMounted = !1, this.isShown = !1, this.$_updateParentShownChildren(!1), this.$_swapTargetAttrs(\"data-original-title\", \"title\"));\n },\n async onResize() {\n this.isShown && (await this.$_computePosition(), this.$emit(\"resize\"));\n },\n async $_computePosition() {\n if (this.isDisposed || this.positioningDisabled)\n return;\n const e = {\n strategy: this.strategy,\n middleware: []\n };\n (this.distance || this.skidding) && e.middleware.push(xe({\n mainAxis: this.distance,\n crossAxis: this.skidding\n }));\n const t = this.placement.startsWith(\"auto\");\n if (t ? e.middleware.push(Ue({\n alignment: this.placement.split(\"-\")[1] ?? \"\"\n })) : e.placement = this.placement, this.preventOverflow && (this.shift && e.middleware.push(Ye({\n padding: this.overflowPadding,\n boundary: this.boundary,\n crossAxis: this.shiftCrossAxis\n })), !t && this.flip && e.middleware.push(Xe({\n padding: this.overflowPadding,\n boundary: this.boundary\n }))), e.middleware.push(Ke({\n element: this.$_arrowNode,\n padding: this.arrowPadding\n })), this.arrowOverflow && e.middleware.push({\n name: \"arrowOverflow\",\n fn: ({ placement: i, rects: s, middlewareData: r }) => {\n let p;\n const { centerOffset: a } = r.arrow;\n return i.startsWith(\"top\") || i.startsWith(\"bottom\") ? p = Math.abs(a) > s.reference.width / 2 : p = Math.abs(a) > s.reference.height / 2, {\n data: {\n overflow: p\n }\n };\n }\n }), this.autoMinSize || this.autoSize) {\n const i = this.autoSize ? this.autoSize : this.autoMinSize ? \"min\" : null;\n e.middleware.push({\n name: \"autoSize\",\n fn: ({ rects: s, placement: r, middlewareData: p }) => {\n var u;\n if ((u = p.autoSize) != null && u.skip)\n return {};\n let a, l;\n return r.startsWith(\"top\") || r.startsWith(\"bottom\") ? a = s.reference.width : l = s.reference.height, this.$_innerNode.style[i === \"min\" ? \"minWidth\" : i === \"max\" ? \"maxWidth\" : \"width\"] = a != null ? `${a}px` : null, this.$_innerNode.style[i === \"min\" ? \"minHeight\" : i === \"max\" ? \"maxHeight\" : \"height\"] = l != null ? `${l}px` : null, {\n data: {\n skip: !0\n },\n reset: {\n rects: !0\n }\n };\n }\n });\n }\n (this.autoMaxSize || this.autoBoundaryMaxSize) && (this.$_innerNode.style.maxWidth = null, this.$_innerNode.style.maxHeight = null, e.middleware.push(Je({\n boundary: this.boundary,\n padding: this.overflowPadding,\n apply: ({ availableWidth: i, availableHeight: s }) => {\n this.$_innerNode.style.maxWidth = i != null ? `${i}px` : null, this.$_innerNode.style.maxHeight = s != null ? `${s}px` : null;\n }\n })));\n const o = await Qe(this.$_referenceNode, this.$_popperNode, e);\n Object.assign(this.result, {\n x: o.x,\n y: o.y,\n placement: o.placement,\n strategy: o.strategy,\n arrow: {\n ...o.middlewareData.arrow,\n ...o.middlewareData.arrowOverflow\n }\n });\n },\n $_scheduleShow(e, t = !1) {\n if (this.$_updateParentShownChildren(!0), this.$_hideInProgress = !1, clearTimeout(this.$_scheduleTimer), g && this.instantMove && g.instantMove && g !== this.parentPopper) {\n g.$_applyHide(!0), this.$_applyShow(!0);\n return;\n }\n t ? this.$_applyShow() : this.$_scheduleTimer = setTimeout(this.$_applyShow.bind(this), this.$_computeDelay(\"show\"));\n },\n $_scheduleHide(e, t = !1) {\n if (this.shownChildren.size > 0) {\n this.pendingHide = !0;\n return;\n }\n this.$_updateParentShownChildren(!1), this.$_hideInProgress = !0, clearTimeout(this.$_scheduleTimer), this.isShown && (g = this), t ? this.$_applyHide() : this.$_scheduleTimer = setTimeout(this.$_applyHide.bind(this), this.$_computeDelay(\"hide\"));\n },\n $_computeDelay(e) {\n const t = this.delay;\n return parseInt(t && t[e] || t || 0);\n },\n async $_applyShow(e = !1) {\n clearTimeout(this.$_disposeTimer), clearTimeout(this.$_scheduleTimer), this.skipTransition = e, !this.isShown && (this.$_ensureTeleport(), await G(), await this.$_computePosition(), await this.$_applyShowEffect(), this.positioningDisabled || this.$_registerEventListeners([\n ...ne(this.$_referenceNode),\n ...ne(this.$_popperNode)\n ], \"scroll\", () => {\n this.$_computePosition();\n }));\n },\n async $_applyShowEffect() {\n if (this.$_hideInProgress)\n return;\n if (this.computeTransformOrigin) {\n const t = this.$_referenceNode.getBoundingClientRect(), o = this.$_popperNode.querySelector(\".v-popper__wrapper\"), i = o.parentNode.getBoundingClientRect(), s = t.x + t.width / 2 - (i.left + o.offsetLeft), r = t.y + t.height / 2 - (i.top + o.offsetTop);\n this.result.transformOrigin = `${s}px ${r}px`;\n }\n this.isShown = !0, this.$_applyAttrsToTarget({\n \"aria-describedby\": this.popperId,\n \"data-popper-shown\": \"\"\n });\n const e = this.showGroup;\n if (e) {\n let t;\n for (let o = 0; o < d.length; o++)\n t = d[o], t.showGroup !== e && (t.hide(), t.$emit(\"close-group\"));\n }\n d.push(this), document.body.classList.add(\"v-popper--some-open\");\n for (const t of re(this.theme))\n he(t).push(this), document.body.classList.add(`v-popper--some-open--${t}`);\n this.$emit(\"apply-show\"), this.classes.showFrom = !0, this.classes.showTo = !1, this.classes.hideFrom = !1, this.classes.hideTo = !1, await G(), this.classes.showFrom = !1, this.classes.showTo = !0, this.noAutoFocus || this.$_popperNode.focus();\n },\n async $_applyHide(e = !1) {\n if (this.shownChildren.size > 0) {\n this.pendingHide = !0, this.$_hideInProgress = !1;\n return;\n }\n if (clearTimeout(this.$_scheduleTimer), !this.isShown)\n return;\n this.skipTransition = e, de(d, this), d.length === 0 && document.body.classList.remove(\"v-popper--some-open\");\n for (const o of re(this.theme)) {\n const i = he(o);\n de(i, this), i.length === 0 && document.body.classList.remove(`v-popper--some-open--${o}`);\n }\n g === this && (g = null), this.isShown = !1, this.$_applyAttrsToTarget({\n \"aria-describedby\": void 0,\n \"data-popper-shown\": void 0\n }), clearTimeout(this.$_disposeTimer);\n const t = this.disposeTimeout;\n t !== null && (this.$_disposeTimer = setTimeout(() => {\n this.$_popperNode && (this.$_detachPopperNode(), this.isMounted = !1);\n }, t)), this.$_removeEventListeners(\"scroll\"), this.$emit(\"apply-hide\"), this.classes.showFrom = !1, this.classes.showTo = !1, this.classes.hideFrom = !0, this.classes.hideTo = !1, await G(), this.classes.hideFrom = !1, this.classes.hideTo = !0;\n },\n $_autoShowHide() {\n this.shown ? this.show() : this.hide();\n },\n $_ensureTeleport() {\n if (this.isDisposed)\n return;\n let e = this.container;\n if (typeof e == \"string\" ? e = window.document.querySelector(e) : e === !1 && (e = this.$_targetNodes[0].parentNode), !e)\n throw new Error(\"No container for popover: \" + this.container);\n e.appendChild(this.$_popperNode), this.isMounted = !0;\n },\n $_addEventListeners() {\n const e = (o) => {\n this.isShown && !this.$_hideInProgress || (o.usedByTooltip = !0, !this.$_preventShow && this.show({ event: o }));\n };\n this.$_registerTriggerListeners(this.$_targetNodes, pe, this.triggers, this.showTriggers, e), this.$_registerTriggerListeners([this.$_popperNode], pe, this.popperTriggers, this.popperShowTriggers, e);\n const t = (o) => {\n o.usedByTooltip || this.hide({ event: o });\n };\n this.$_registerTriggerListeners(this.$_targetNodes, ae, this.triggers, this.hideTriggers, t), this.$_registerTriggerListeners([this.$_popperNode], ae, this.popperTriggers, this.popperHideTriggers, t);\n },\n $_registerEventListeners(e, t, o) {\n this.$_events.push({ targetNodes: e, eventType: t, handler: o }), e.forEach((i) => i.addEventListener(t, o, $ ? {\n passive: !0\n } : void 0));\n },\n $_registerTriggerListeners(e, t, o, i, s) {\n let r = o;\n i != null && (r = typeof i == \"function\" ? i(r) : i), r.forEach((p) => {\n const a = t[p];\n a && this.$_registerEventListeners(e, a, s);\n });\n },\n $_removeEventListeners(e) {\n const t = [];\n this.$_events.forEach((o) => {\n const { targetNodes: i, eventType: s, handler: r } = o;\n !e || e === s ? i.forEach((p) => p.removeEventListener(s, r)) : t.push(o);\n }), this.$_events = t;\n },\n $_refreshListeners() {\n this.isDisposed || (this.$_removeEventListeners(), this.$_addEventListeners());\n },\n $_handleGlobalClose(e, t = !1) {\n this.$_showFrameLocked || (this.hide({ event: e }), e.closePopover ? this.$emit(\"close-directive\") : this.$emit(\"auto-hide\"), t && (this.$_preventShow = !0, setTimeout(() => {\n this.$_preventShow = !1;\n }, 300)));\n },\n $_detachPopperNode() {\n this.$_popperNode.parentNode && this.$_popperNode.parentNode.removeChild(this.$_popperNode);\n },\n $_swapTargetAttrs(e, t) {\n for (const o of this.$_targetNodes) {\n const i = o.getAttribute(e);\n i && (o.removeAttribute(e), o.setAttribute(t, i));\n }\n },\n $_applyAttrsToTarget(e) {\n for (const t of this.$_targetNodes)\n for (const o in e) {\n const i = e[o];\n i == null ? t.removeAttribute(o) : t.setAttribute(o, i);\n }\n },\n $_updateParentShownChildren(e) {\n let t = this.parentPopper;\n for (; t; )\n e ? t.shownChildren.add(this.randomId) : (t.shownChildren.delete(this.randomId), t.pendingHide && t.hide()), t = t.parentPopper;\n },\n $_isAimingPopper() {\n const e = this.$_referenceNode.getBoundingClientRect();\n if (y >= e.left && y <= e.right && _ >= e.top && _ <= e.bottom) {\n const t = this.$_popperNode.getBoundingClientRect(), o = y - c, i = _ - m, r = t.left + t.width / 2 - c + (t.top + t.height / 2) - m + t.width + t.height, p = c + o * r, a = m + i * r;\n return C(c, m, p, a, t.left, t.top, t.left, t.bottom) || // Left edge\n C(c, m, p, a, t.left, t.top, t.right, t.top) || // Top edge\n C(c, m, p, a, t.right, t.top, t.right, t.bottom) || // Right edge\n C(c, m, p, a, t.left, t.bottom, t.right, t.bottom);\n }\n return !1;\n }\n },\n render() {\n return this.$slots.default(this.slotData);\n }\n});\nif (typeof document < \"u\" && typeof window < \"u\") {\n if (_e) {\n const e = $ ? {\n passive: !0,\n capture: !0\n } : !0;\n document.addEventListener(\"touchstart\", (t) => ue(t, !0), e), document.addEventListener(\"touchend\", (t) => fe(t, !0), e);\n } else\n window.addEventListener(\"mousedown\", (e) => ue(e, !1), !0), window.addEventListener(\"click\", (e) => fe(e, !1), !0);\n window.addEventListener(\"resize\", tt);\n}\nfunction ue(e, t) {\n if (h.autoHideOnMousedown)\n Pe(e, t);\n else\n for (let o = 0; o < d.length; o++) {\n const i = d[o];\n try {\n i.mouseDownContains = i.popperNode().contains(e.target);\n } catch {\n }\n }\n}\nfunction fe(e, t) {\n h.autoHideOnMousedown || Pe(e, t);\n}\nfunction Pe(e, t) {\n const o = {};\n for (let i = d.length - 1; i >= 0; i--) {\n const s = d[i];\n try {\n const r = s.containsGlobalTarget = s.mouseDownContains || s.popperNode().contains(e.target);\n s.pendingHide = !1, requestAnimationFrame(() => {\n if (s.pendingHide = !1, !o[s.randomId] && ce(s, r, e)) {\n if (s.$_handleGlobalClose(e, t), !e.closeAllPopover && e.closePopover && r) {\n let a = s.parentPopper;\n for (; a; )\n o[a.randomId] = !0, a = a.parentPopper;\n return;\n }\n let p = s.parentPopper;\n for (; p && ce(p, p.containsGlobalTarget, e); ) {\n p.$_handleGlobalClose(e, t);\n p = p.parentPopper;\n }\n }\n });\n } catch {\n }\n }\n}\nfunction ce(e, t, o) {\n return o.closeAllPopover || o.closePopover && t || et(e, o) && !t;\n}\nfunction et(e, t) {\n if (typeof e.autoHide == \"function\") {\n const o = e.autoHide(t);\n return e.lastAutoHide = o, o;\n }\n return e.autoHide;\n}\nfunction tt() {\n for (let e = 0; e < d.length; e++)\n d[e].$_computePosition();\n}\nfunction Nt() {\n for (let e = 0; e < d.length; e++)\n d[e].hide();\n}\nlet c = 0, m = 0, y = 0, _ = 0;\ntypeof window < \"u\" && window.addEventListener(\"mousemove\", (e) => {\n c = y, m = _, y = e.clientX, _ = e.clientY;\n}, $ ? {\n passive: !0\n} : void 0);\nfunction C(e, t, o, i, s, r, p, a) {\n const l = ((p - s) * (t - r) - (a - r) * (e - s)) / ((a - r) * (o - e) - (p - s) * (i - t)), u = ((o - e) * (t - r) - (i - t) * (e - s)) / ((a - r) * (o - e) - (p - s) * (i - t));\n return l >= 0 && l <= 1 && u >= 0 && u <= 1;\n}\nconst ot = {\n extends: Q()\n}, B = (e, t) => {\n const o = e.__vccOpts || e;\n for (const [i, s] of t)\n o[i] = s;\n return o;\n};\nfunction it(e, t, o, i, s, r) {\n return f(), T(\"div\", {\n ref: \"reference\",\n class: J([\"v-popper\", {\n \"v-popper--shown\": e.slotData.isShown\n }])\n }, [\n A(e.$slots, \"default\", ke(Le(e.slotData)))\n ], 2);\n}\nconst st = /* @__PURE__ */ B(ot, [[\"render\", it]]);\nfunction nt() {\n var e = window.navigator.userAgent, t = e.indexOf(\"MSIE \");\n if (t > 0)\n return parseInt(e.substring(t + 5, e.indexOf(\".\", t)), 10);\n var o = e.indexOf(\"Trident/\");\n if (o > 0) {\n var i = e.indexOf(\"rv:\");\n return parseInt(e.substring(i + 3, e.indexOf(\".\", i)), 10);\n }\n var s = e.indexOf(\"Edge/\");\n return s > 0 ? parseInt(e.substring(s + 5, e.indexOf(\".\", s)), 10) : -1;\n}\nlet z;\nfunction X() {\n X.init || (X.init = !0, z = nt() !== -1);\n}\nvar E = {\n name: \"ResizeObserver\",\n props: {\n emitOnMount: {\n type: Boolean,\n default: !1\n },\n ignoreWidth: {\n type: Boolean,\n default: !1\n },\n ignoreHeight: {\n type: Boolean,\n default: !1\n }\n },\n emits: [\n \"notify\"\n ],\n mounted() {\n X(), Fe(() => {\n this._w = this.$el.offsetWidth, this._h = this.$el.offsetHeight, this.emitOnMount && this.emitSize();\n });\n const e = document.createElement(\"object\");\n this._resizeObject = e, e.setAttribute(\"aria-hidden\", \"true\"), e.setAttribute(\"tabindex\", -1), e.onload = this.addResizeHandlers, e.type = \"text/html\", z && this.$el.appendChild(e), e.data = \"about:blank\", z || this.$el.appendChild(e);\n },\n beforeUnmount() {\n this.removeResizeHandlers();\n },\n methods: {\n compareAndNotify() {\n (!this.ignoreWidth && this._w !== this.$el.offsetWidth || !this.ignoreHeight && this._h !== this.$el.offsetHeight) && (this._w = this.$el.offsetWidth, this._h = this.$el.offsetHeight, this.emitSize());\n },\n emitSize() {\n this.$emit(\"notify\", {\n width: this._w,\n height: this._h\n });\n },\n addResizeHandlers() {\n this._resizeObject.contentDocument.defaultView.addEventListener(\"resize\", this.compareAndNotify), this.compareAndNotify();\n },\n removeResizeHandlers() {\n this._resizeObject && this._resizeObject.onload && (!z && this._resizeObject.contentDocument && this._resizeObject.contentDocument.defaultView.removeEventListener(\"resize\", this.compareAndNotify), this.$el.removeChild(this._resizeObject), this._resizeObject.onload = null, this._resizeObject = null);\n }\n }\n};\nconst rt = /* @__PURE__ */ Re(\"data-v-b329ee4c\");\nDe(\"data-v-b329ee4c\");\nconst pt = {\n class: \"resize-observer\",\n tabindex: \"-1\"\n};\nIe();\nconst at = /* @__PURE__ */ rt((e, t, o, i, s, r) => (f(), M(\"div\", pt)));\nE.render = at;\nE.__scopeId = \"data-v-b329ee4c\";\nE.__file = \"src/components/ResizeObserver.vue\";\nconst Z = (e = \"theme\") => ({\n computed: {\n themeClass() {\n return Ze(this[e]);\n }\n }\n}), dt = O({\n name: \"VPopperContent\",\n components: {\n ResizeObserver: E\n },\n mixins: [\n Z()\n ],\n props: {\n popperId: String,\n theme: String,\n shown: Boolean,\n mounted: Boolean,\n skipTransition: Boolean,\n autoHide: Boolean,\n handleResize: Boolean,\n classes: Object,\n result: Object\n },\n emits: [\n \"hide\",\n \"resize\"\n ],\n methods: {\n toPx(e) {\n return e != null && !isNaN(e) ? `${e}px` : null;\n }\n }\n}), lt = [\"id\", \"aria-hidden\", \"tabindex\", \"data-popper-placement\"], ht = {\n ref: \"inner\",\n class: \"v-popper__inner\"\n}, ut = /* @__PURE__ */ w(\"div\", { class: \"v-popper__arrow-outer\" }, null, -1), ft = /* @__PURE__ */ w(\"div\", { class: \"v-popper__arrow-inner\" }, null, -1), ct = [\n ut,\n ft\n];\nfunction mt(e, t, o, i, s, r) {\n const p = P(\"ResizeObserver\");\n return f(), T(\"div\", {\n id: e.popperId,\n ref: \"popover\",\n class: J([\"v-popper__popper\", [\n e.themeClass,\n e.classes.popperClass,\n {\n \"v-popper__popper--shown\": e.shown,\n \"v-popper__popper--hidden\": !e.shown,\n \"v-popper__popper--show-from\": e.classes.showFrom,\n \"v-popper__popper--show-to\": e.classes.showTo,\n \"v-popper__popper--hide-from\": e.classes.hideFrom,\n \"v-popper__popper--hide-to\": e.classes.hideTo,\n \"v-popper__popper--skip-transition\": e.skipTransition,\n \"v-popper__popper--arrow-overflow\": e.result && e.result.arrow.overflow,\n \"v-popper__popper--no-positioning\": !e.result\n }\n ]]),\n style: W(e.result ? {\n position: e.result.strategy,\n transform: `translate3d(${Math.round(e.result.x)}px,${Math.round(e.result.y)}px,0)`\n } : void 0),\n \"aria-hidden\": e.shown ? \"false\" : \"true\",\n tabindex: e.autoHide ? 0 : void 0,\n \"data-popper-placement\": e.result ? e.result.placement : void 0,\n onKeyup: t[2] || (t[2] = je((a) => e.autoHide && e.$emit(\"hide\"), [\"esc\"]))\n }, [\n w(\"div\", {\n class: \"v-popper__backdrop\",\n onClick: t[0] || (t[0] = (a) => e.autoHide && e.$emit(\"hide\"))\n }),\n w(\"div\", {\n class: \"v-popper__wrapper\",\n style: W(e.result ? {\n transformOrigin: e.result.transformOrigin\n } : void 0)\n }, [\n w(\"div\", ht, [\n e.mounted ? (f(), T(Ve, { key: 0 }, [\n w(\"div\", null, [\n A(e.$slots, \"default\")\n ]),\n e.handleResize ? (f(), M(p, {\n key: 0,\n onNotify: t[1] || (t[1] = (a) => e.$emit(\"resize\", a))\n })) : se(\"\", !0)\n ], 64)) : se(\"\", !0)\n ], 512),\n w(\"div\", {\n ref: \"arrow\",\n class: \"v-popper__arrow-container\",\n style: W(e.result ? {\n left: e.toPx(e.result.arrow.x),\n top: e.toPx(e.result.arrow.y)\n } : void 0)\n }, ct, 4)\n ], 4)\n ], 46, lt);\n}\nconst ee = /* @__PURE__ */ B(dt, [[\"render\", mt]]), te = {\n methods: {\n show(...e) {\n return this.$refs.popper.show(...e);\n },\n hide(...e) {\n return this.$refs.popper.hide(...e);\n },\n dispose(...e) {\n return this.$refs.popper.dispose(...e);\n },\n onResize(...e) {\n return this.$refs.popper.onResize(...e);\n }\n }\n};\nlet K = function() {\n};\ntypeof window < \"u\" && (K = window.Element);\nconst gt = O({\n name: \"VPopperWrapper\",\n components: {\n Popper: st,\n PopperContent: ee\n },\n mixins: [\n te,\n Z(\"finalTheme\")\n ],\n props: {\n theme: {\n type: String,\n default: null\n },\n referenceNode: {\n type: Function,\n default: null\n },\n shown: {\n type: Boolean,\n default: !1\n },\n showGroup: {\n type: String,\n default: null\n },\n // eslint-disable-next-line vue/require-prop-types\n ariaId: {\n default: null\n },\n disabled: {\n type: Boolean,\n default: void 0\n },\n positioningDisabled: {\n type: Boolean,\n default: void 0\n },\n placement: {\n type: String,\n default: void 0\n },\n delay: {\n type: [String, Number, Object],\n default: void 0\n },\n distance: {\n type: [Number, String],\n default: void 0\n },\n skidding: {\n type: [Number, String],\n default: void 0\n },\n triggers: {\n type: Array,\n default: void 0\n },\n showTriggers: {\n type: [Array, Function],\n default: void 0\n },\n hideTriggers: {\n type: [Array, Function],\n default: void 0\n },\n popperTriggers: {\n type: Array,\n default: void 0\n },\n popperShowTriggers: {\n type: [Array, Function],\n default: void 0\n },\n popperHideTriggers: {\n type: [Array, Function],\n default: void 0\n },\n container: {\n type: [String, Object, K, Boolean],\n default: void 0\n },\n boundary: {\n type: [String, K],\n default: void 0\n },\n strategy: {\n type: String,\n default: void 0\n },\n autoHide: {\n type: [Boolean, Function],\n default: void 0\n },\n handleResize: {\n type: Boolean,\n default: void 0\n },\n instantMove: {\n type: Boolean,\n default: void 0\n },\n eagerMount: {\n type: Boolean,\n default: void 0\n },\n popperClass: {\n type: [String, Array, Object],\n default: void 0\n },\n computeTransformOrigin: {\n type: Boolean,\n default: void 0\n },\n /**\n * @deprecated\n */\n autoMinSize: {\n type: Boolean,\n default: void 0\n },\n autoSize: {\n type: [Boolean, String],\n default: void 0\n },\n /**\n * @deprecated\n */\n autoMaxSize: {\n type: Boolean,\n default: void 0\n },\n autoBoundaryMaxSize: {\n type: Boolean,\n default: void 0\n },\n preventOverflow: {\n type: Boolean,\n default: void 0\n },\n overflowPadding: {\n type: [Number, String],\n default: void 0\n },\n arrowPadding: {\n type: [Number, String],\n default: void 0\n },\n arrowOverflow: {\n type: Boolean,\n default: void 0\n },\n flip: {\n type: Boolean,\n default: void 0\n },\n shift: {\n type: Boolean,\n default: void 0\n },\n shiftCrossAxis: {\n type: Boolean,\n default: void 0\n },\n noAutoFocus: {\n type: Boolean,\n default: void 0\n },\n disposeTimeout: {\n type: Number,\n default: void 0\n }\n },\n emits: {\n show: () => !0,\n hide: () => !0,\n \"update:shown\": (e) => !0,\n \"apply-show\": () => !0,\n \"apply-hide\": () => !0,\n \"close-group\": () => !0,\n \"close-directive\": () => !0,\n \"auto-hide\": () => !0,\n resize: () => !0\n },\n computed: {\n finalTheme() {\n return this.theme ?? this.$options.vPopperTheme;\n }\n },\n methods: {\n getTargetNodes() {\n return Array.from(this.$el.children).filter((e) => e !== this.$refs.popperContent.$el);\n }\n }\n});\nfunction wt(e, t, o, i, s, r) {\n const p = P(\"PopperContent\"), a = P(\"Popper\");\n return f(), M(a, $e({ ref: \"popper\" }, e.$props, {\n theme: e.finalTheme,\n \"target-nodes\": e.getTargetNodes,\n \"popper-node\": () => e.$refs.popperContent.$el,\n class: [\n e.themeClass\n ],\n onShow: t[0] || (t[0] = () => e.$emit(\"show\")),\n onHide: t[1] || (t[1] = () => e.$emit(\"hide\")),\n \"onUpdate:shown\": t[2] || (t[2] = (l) => e.$emit(\"update:shown\", l)),\n onApplyShow: t[3] || (t[3] = () => e.$emit(\"apply-show\")),\n onApplyHide: t[4] || (t[4] = () => e.$emit(\"apply-hide\")),\n onCloseGroup: t[5] || (t[5] = () => e.$emit(\"close-group\")),\n onCloseDirective: t[6] || (t[6] = () => e.$emit(\"close-directive\")),\n onAutoHide: t[7] || (t[7] = () => e.$emit(\"auto-hide\")),\n onResize: t[8] || (t[8] = () => e.$emit(\"resize\"))\n }), {\n default: N(({\n popperId: l,\n isShown: u,\n shouldMountContent: L,\n skipTransition: D,\n autoHide: I,\n show: F,\n hide: v,\n handleResize: R,\n onResize: j,\n classes: V,\n result: Ee\n }) => [\n A(e.$slots, \"default\", {\n shown: u,\n show: F,\n hide: v\n }),\n ve(p, {\n ref: \"popperContent\",\n \"popper-id\": l,\n theme: e.finalTheme,\n shown: u,\n mounted: L,\n \"skip-transition\": D,\n \"auto-hide\": I,\n \"handle-resize\": R,\n classes: V,\n result: Ee,\n onHide: v,\n onResize: j\n }, {\n default: N(() => [\n A(e.$slots, \"popper\", {\n shown: u,\n hide: v\n })\n ]),\n _: 2\n }, 1032, [\"popper-id\", \"theme\", \"shown\", \"mounted\", \"skip-transition\", \"auto-hide\", \"handle-resize\", \"classes\", \"result\", \"onHide\", \"onResize\"])\n ]),\n _: 3\n }, 16, [\"theme\", \"target-nodes\", \"popper-node\", \"class\"]);\n}\nconst k = /* @__PURE__ */ B(gt, [[\"render\", wt]]), Se = {\n ...k,\n name: \"VDropdown\",\n vPopperTheme: \"dropdown\"\n}, be = {\n ...k,\n name: \"VMenu\",\n vPopperTheme: \"menu\"\n}, Ce = {\n ...k,\n name: \"VTooltip\",\n vPopperTheme: \"tooltip\"\n}, $t = O({\n name: \"VTooltipDirective\",\n components: {\n Popper: Q(),\n PopperContent: ee\n },\n mixins: [\n te\n ],\n inheritAttrs: !1,\n props: {\n theme: {\n type: String,\n default: \"tooltip\"\n },\n html: {\n type: Boolean,\n default: (e) => S(e.theme, \"html\")\n },\n content: {\n type: [String, Number, Function],\n default: null\n },\n loadingContent: {\n type: String,\n default: (e) => S(e.theme, \"loadingContent\")\n },\n targetNodes: {\n type: Function,\n required: !0\n }\n },\n data() {\n return {\n asyncContent: null\n };\n },\n computed: {\n isContentAsync() {\n return typeof this.content == \"function\";\n },\n loading() {\n return this.isContentAsync && this.asyncContent == null;\n },\n finalContent() {\n return this.isContentAsync ? this.loading ? this.loadingContent : this.asyncContent : this.content;\n }\n },\n watch: {\n content: {\n handler() {\n this.fetchContent(!0);\n },\n immediate: !0\n },\n async finalContent() {\n await this.$nextTick(), this.$refs.popper.onResize();\n }\n },\n created() {\n this.$_fetchId = 0;\n },\n methods: {\n fetchContent(e) {\n if (typeof this.content == \"function\" && this.$_isShown && (e || !this.$_loading && this.asyncContent == null)) {\n this.asyncContent = null, this.$_loading = !0;\n const t = ++this.$_fetchId, o = this.content(this);\n o.then ? o.then((i) => this.onResult(t, i)) : this.onResult(t, o);\n }\n },\n onResult(e, t) {\n e === this.$_fetchId && (this.$_loading = !1, this.asyncContent = t);\n },\n onShow() {\n this.$_isShown = !0, this.fetchContent();\n },\n onHide() {\n this.$_isShown = !1;\n }\n }\n}), vt = [\"innerHTML\"], yt = [\"textContent\"];\nfunction _t(e, t, o, i, s, r) {\n const p = P(\"PopperContent\"), a = P(\"Popper\");\n return f(), M(a, $e({ ref: \"popper\" }, e.$attrs, {\n theme: e.theme,\n \"target-nodes\": e.targetNodes,\n \"popper-node\": () => e.$refs.popperContent.$el,\n onApplyShow: e.onShow,\n onApplyHide: e.onHide\n }), {\n default: N(({\n popperId: l,\n isShown: u,\n shouldMountContent: L,\n skipTransition: D,\n autoHide: I,\n hide: F,\n handleResize: v,\n onResize: R,\n classes: j,\n result: V\n }) => [\n ve(p, {\n ref: \"popperContent\",\n class: J({\n \"v-popper--tooltip-loading\": e.loading\n }),\n \"popper-id\": l,\n theme: e.theme,\n shown: u,\n mounted: L,\n \"skip-transition\": D,\n \"auto-hide\": I,\n \"handle-resize\": v,\n classes: j,\n result: V,\n onHide: F,\n onResize: R\n }, {\n default: N(() => [\n e.html ? (f(), T(\"div\", {\n key: 0,\n innerHTML: e.finalContent\n }, null, 8, vt)) : (f(), T(\"div\", {\n key: 1,\n textContent: We(e.finalContent)\n }, null, 8, yt))\n ]),\n _: 2\n }, 1032, [\"class\", \"popper-id\", \"theme\", \"shown\", \"mounted\", \"skip-transition\", \"auto-hide\", \"handle-resize\", \"classes\", \"result\", \"onHide\", \"onResize\"])\n ]),\n _: 1\n }, 16, [\"theme\", \"target-nodes\", \"popper-node\", \"onApplyShow\", \"onApplyHide\"]);\n}\nconst ze = /* @__PURE__ */ B($t, [[\"render\", _t]]), Ae = \"v-popper--has-tooltip\";\nfunction Tt(e, t) {\n let o = e.placement;\n if (!o && t)\n for (const i of Te)\n t[i] && (o = i);\n return o || (o = S(e.theme || \"tooltip\", \"placement\")), o;\n}\nfunction Ne(e, t, o) {\n let i;\n const s = typeof t;\n return s === \"string\" ? i = { content: t } : t && s === \"object\" ? i = t : i = { content: !1 }, i.placement = Tt(i, o), i.targetNodes = () => [e], i.referenceNode = () => e, i;\n}\nlet x, b, Pt = 0;\nfunction St() {\n if (x)\n return;\n b = U([]), x = Ge({\n name: \"VTooltipDirectiveApp\",\n setup() {\n return {\n directives: b\n };\n },\n render() {\n return this.directives.map((t) => qe(ze, {\n ...t.options,\n shown: t.shown || t.options.shown,\n key: t.id\n }));\n },\n devtools: {\n hide: !0\n }\n });\n const e = document.createElement(\"div\");\n document.body.appendChild(e), x.mount(e);\n}\nfunction bt(e, t, o) {\n St();\n const i = U(Ne(e, t, o)), s = U(!1), r = {\n id: Pt++,\n options: i,\n shown: s\n };\n return b.value.push(r), e.classList && e.classList.add(Ae), e.$_popper = {\n options: i,\n item: r,\n show() {\n s.value = !0;\n },\n hide() {\n s.value = !1;\n }\n };\n}\nfunction He(e) {\n if (e.$_popper) {\n const t = b.value.indexOf(e.$_popper.item);\n t !== -1 && b.value.splice(t, 1), delete e.$_popper, delete e.$_popperOldShown, delete e.$_popperMountTarget;\n }\n e.classList && e.classList.remove(Ae);\n}\nfunction me(e, { value: t, modifiers: o }) {\n const i = Ne(e, t, o);\n if (!i.content || S(i.theme || \"tooltip\", \"disabled\"))\n He(e);\n else {\n let s;\n e.$_popper ? (s = e.$_popper, s.options.value = i) : s = bt(e, t, o), typeof t.shown < \"u\" && t.shown !== e.$_popperOldShown && (e.$_popperOldShown = t.shown, t.shown ? s.show() : s.hide());\n }\n}\nconst oe = {\n beforeMount: me,\n updated: me,\n beforeUnmount(e) {\n He(e);\n }\n};\nfunction ge(e) {\n e.addEventListener(\"mousedown\", H), e.addEventListener(\"click\", H), e.addEventListener(\"touchstart\", Oe, $ ? {\n passive: !0\n } : !1);\n}\nfunction we(e) {\n e.removeEventListener(\"mousedown\", H), e.removeEventListener(\"click\", H), e.removeEventListener(\"touchstart\", Oe), e.removeEventListener(\"touchend\", Me), e.removeEventListener(\"touchcancel\", Be);\n}\nfunction H(e) {\n const t = e.currentTarget;\n e.closePopover = !t.$_vclosepopover_touch, e.closeAllPopover = t.$_closePopoverModifiers && !!t.$_closePopoverModifiers.all;\n}\nfunction Oe(e) {\n if (e.changedTouches.length === 1) {\n const t = e.currentTarget;\n t.$_vclosepopover_touch = !0;\n const o = e.changedTouches[0];\n t.$_vclosepopover_touchPoint = o, t.addEventListener(\"touchend\", Me), t.addEventListener(\"touchcancel\", Be);\n }\n}\nfunction Me(e) {\n const t = e.currentTarget;\n if (t.$_vclosepopover_touch = !1, e.changedTouches.length === 1) {\n const o = e.changedTouches[0], i = t.$_vclosepopover_touchPoint;\n e.closePopover = Math.abs(o.screenY - i.screenY) < 20 && Math.abs(o.screenX - i.screenX) < 20, e.closeAllPopover = t.$_closePopoverModifiers && !!t.$_closePopoverModifiers.all;\n }\n}\nfunction Be(e) {\n const t = e.currentTarget;\n t.$_vclosepopover_touch = !1;\n}\nconst ie = {\n beforeMount(e, { value: t, modifiers: o }) {\n e.$_closePopoverModifiers = o, (typeof t > \"u\" || t) && ge(e);\n },\n updated(e, { value: t, oldValue: o, modifiers: i }) {\n e.$_closePopoverModifiers = i, t !== o && (typeof t > \"u\" || t ? ge(e) : we(e));\n },\n beforeUnmount(e) {\n we(e);\n }\n}, Ht = h, Ot = oe, Mt = oe, Bt = ie, Et = ie, kt = Se, Lt = be, Dt = Q, It = ee, Ft = te, Rt = k, jt = Z, Vt = Ce, Wt = ze;\nfunction Ct(e, t = {}) {\n e.$_vTooltipInstalled || (e.$_vTooltipInstalled = !0, ye(h, t), e.directive(\"tooltip\", oe), e.directive(\"close-popper\", ie), e.component(\"VTooltip\", Ce), e.component(\"VDropdown\", Se), e.component(\"VMenu\", be));\n}\nconst Gt = {\n // eslint-disable-next-line no-undef\n version: \"5.2.2\",\n install: Ct,\n options: h\n};\nexport {\n kt as Dropdown,\n ae as HIDE_EVENT_MAP,\n Lt as Menu,\n Dt as Popper,\n It as PopperContent,\n Ft as PopperMethods,\n Rt as PopperWrapper,\n pe as SHOW_EVENT_MAP,\n jt as ThemeClass,\n Vt as Tooltip,\n Wt as TooltipDirective,\n Bt as VClosePopper,\n Ot as VTooltip,\n bt as createTooltip,\n Gt as default,\n He as destroyTooltip,\n Nt as hideAllPoppers,\n Ct as install,\n Ht as options,\n Te as placements,\n tt as recomputeAllPoppers,\n Et as vClosePopper,\n Mt as vTooltip\n};\n","/*!\n* tabbable 6.5.0\n* @license MIT, https://github.com/focus-trap/tabbable/blob/master/LICENSE\n*/\n// NOTE: separate `:not()` selectors has broader browser support than the newer\n// `:not([inert], [inert] *)` (Feb 2023)\nvar candidateSelectors = ['input:not([inert]):not([inert] *)', 'select:not([inert]):not([inert] *)', 'textarea:not([inert]):not([inert] *)', 'a[href]:not([inert]):not([inert] *)', 'area[href]:not([inert]):not([inert] *)', 'button:not([inert]):not([inert] *)', '[tabindex]:not(slot):not([inert]):not([inert] *)', 'audio[controls]:not([inert]):not([inert] *)', 'video[controls]:not([inert]):not([inert] *)', '[contenteditable]:not([contenteditable=\"false\"]):not([inert]):not([inert] *)', 'details>summary:first-of-type:not([inert]):not([inert] *)', 'details:not([inert]):not([inert] *)'];\nvar candidateSelector = /* #__PURE__ */candidateSelectors.join(',');\nvar NoElement = typeof Element === 'undefined';\nvar matches = NoElement ? function () {} : Element.prototype.matches || Element.prototype.msMatchesSelector || Element.prototype.webkitMatchesSelector;\nvar getRootNode = !NoElement && Element.prototype.getRootNode ? function (element) {\n var _element$getRootNode;\n return element === null || element === void 0 ? void 0 : (_element$getRootNode = element.getRootNode) === null || _element$getRootNode === void 0 ? void 0 : _element$getRootNode.call(element);\n} : function (element) {\n return element === null || element === void 0 ? void 0 : element.ownerDocument;\n};\n\n/**\n * Determines if a node is inert or in an inert ancestor.\n * @param {Node} [node]\n * @param {boolean} [lookUp] If true and `node` is not inert, looks up at ancestors to\n * see if any of them are inert. If false, only `node` itself is considered.\n * @returns {boolean} True if inert itself or by way of being in an inert ancestor.\n * False if `node` is falsy.\n */\nvar _isInert = function isInert(node, lookUp) {\n var _node$getAttribute;\n if (lookUp === void 0) {\n lookUp = true;\n }\n // CAREFUL: JSDom does not support inert at all, so we can't use the `HTMLElement.inert`\n // JS API property; we have to check the attribute, which can either be empty or 'true';\n // if it's `null` (not specified) or 'false', it's an active element\n var inertAtt = node === null || node === void 0 ? void 0 : (_node$getAttribute = node.getAttribute) === null || _node$getAttribute === void 0 ? void 0 : _node$getAttribute.call(node, 'inert');\n var inert = inertAtt === '' || inertAtt === 'true';\n\n // NOTE: this could also be handled with `node.matches('[inert], :is([inert] *)')`\n // if it weren't for `matches()` not being a function on shadow roots; the following\n // code works for any kind of node\n var result = inert || lookUp && node && (\n // closest does not exist on shadow roots, so we fall back to a manual\n // lookup upward, in case it is not defined.\n typeof node.closest === 'function' ? node.closest('[inert]') : _isInert(node.parentNode));\n return result;\n};\n\n/**\n * Determines if a node's content is editable.\n * @param {Element} [node]\n * @returns True if it's content-editable; false if it's not or `node` is falsy.\n */\nvar isContentEditable = function isContentEditable(node) {\n var _node$getAttribute2;\n // CAREFUL: JSDom does not support the `HTMLElement.isContentEditable` API so we have\n // to use the attribute directly to check for this, which can either be empty or 'true';\n // if it's `null` (not specified) or 'false', it's a non-editable element\n var attValue = node === null || node === void 0 ? void 0 : (_node$getAttribute2 = node.getAttribute) === null || _node$getAttribute2 === void 0 ? void 0 : _node$getAttribute2.call(node, 'contenteditable');\n return attValue === '' || attValue === 'true';\n};\n\n/**\n * @param {Element} el container to check in\n * @param {boolean} includeContainer add container to check\n * @param {(node: Element) => boolean} filter filter candidates\n * @returns {Element[]}\n */\nvar getCandidates = function getCandidates(el, includeContainer, filter) {\n // even if `includeContainer=false`, we still have to check it for inertness because\n // if it's inert (either by itself or via its parent), then all its children are inert\n if (_isInert(el)) {\n return [];\n }\n var candidates = Array.prototype.slice.apply(el.querySelectorAll(candidateSelector));\n if (includeContainer && matches.call(el, candidateSelector)) {\n candidates.unshift(el);\n }\n candidates = candidates.filter(filter);\n return candidates;\n};\n\n/**\n * @callback GetShadowRoot\n * @param {Element} element to check for shadow root\n * @returns {ShadowRoot|boolean} ShadowRoot if available or boolean indicating if a shadowRoot is attached but not available.\n */\n\n/**\n * @callback ShadowRootFilter\n * @param {Element} shadowHostNode the element which contains shadow content\n * @returns {boolean} true if a shadow root could potentially contain valid candidates.\n */\n\n/**\n * @typedef {Object} CandidateScope\n * @property {Element} scopeParent contains inner candidates\n * @property {Element[]} candidates list of candidates found in the scope parent\n */\n\n/**\n * @typedef {Object} IterativeOptions\n * @property {GetShadowRoot|boolean} getShadowRoot true if shadow support is enabled; falsy if not;\n * if a function, implies shadow support is enabled and either returns the shadow root of an element\n * or a boolean stating if it has an undisclosed shadow root\n * @property {(node: Element) => boolean} filter filter candidates\n * @property {boolean} flatten if true then result will flatten any CandidateScope into the returned list\n * @property {ShadowRootFilter} shadowRootFilter filter shadow roots;\n */\n\n/**\n * @param {Element[]} elements list of element containers to match candidates from\n * @param {boolean} includeContainer add container list to check\n * @param {IterativeOptions} options\n * @returns {Array.<Element|CandidateScope>}\n */\nvar _getCandidatesIteratively = function getCandidatesIteratively(elements, includeContainer, options) {\n var candidates = [];\n var elementsToCheck = Array.from(elements);\n while (elementsToCheck.length) {\n var element = elementsToCheck.shift();\n if (_isInert(element, false)) {\n // no need to look up since we're drilling down\n // anything inside this container will also be inert\n continue;\n }\n if (element.tagName === 'SLOT') {\n // add shadow dom slot scope (slot itself cannot be focusable)\n var assigned = element.assignedElements();\n var content = assigned.length ? assigned : element.children;\n var nestedCandidates = _getCandidatesIteratively(content, true, options);\n if (options.flatten) {\n candidates.push.apply(candidates, nestedCandidates);\n } else {\n candidates.push({\n scopeParent: element,\n candidates: nestedCandidates\n });\n }\n } else {\n // check candidate element\n var validCandidate = matches.call(element, candidateSelector);\n if (validCandidate && options.filter(element) && (includeContainer || !elements.includes(element))) {\n candidates.push(element);\n }\n\n // iterate over shadow content if possible\n var shadowRoot = element.shadowRoot ||\n // check for an undisclosed shadow\n typeof options.getShadowRoot === 'function' && options.getShadowRoot(element);\n\n // no inert look up because we're already drilling down and checking for inertness\n // on the way down, so all containers to this root node should have already been\n // vetted as non-inert\n var validShadowRoot = !_isInert(shadowRoot, false) && (!options.shadowRootFilter || options.shadowRootFilter(element));\n if (shadowRoot && validShadowRoot) {\n // add shadow dom scope IIF a shadow root node was given; otherwise, an undisclosed\n // shadow exists, so look at light dom children as fallback BUT create a scope for any\n // child candidates found because they're likely slotted elements (elements that are\n // children of the web component element (which has the shadow), in the light dom, but\n // slotted somewhere _inside_ the undisclosed shadow) -- the scope is created below,\n // _after_ we return from this recursive call\n var _nestedCandidates = _getCandidatesIteratively(shadowRoot === true ? element.children : shadowRoot.children, true, options);\n if (options.flatten) {\n candidates.push.apply(candidates, _nestedCandidates);\n } else {\n candidates.push({\n scopeParent: element,\n candidates: _nestedCandidates\n });\n }\n } else {\n // there's not shadow so just dig into the element's (light dom) children\n // __without__ giving the element special scope treatment\n elementsToCheck.unshift.apply(elementsToCheck, element.children);\n }\n }\n }\n return candidates;\n};\n\n/**\n * @private\n * Determines if the node has an explicitly specified `tabindex` attribute.\n * @param {HTMLElement} node\n * @returns {boolean} True if so; false if not.\n */\nvar hasTabIndex = function hasTabIndex(node) {\n return !isNaN(parseInt(node.getAttribute('tabindex'), 10));\n};\n\n/**\n * Determine the tab index of a given node.\n * @param {HTMLElement} node\n * @returns {number} Tab order (negative, 0, or positive number).\n * @throws {Error} If `node` is falsy.\n */\nvar getTabIndex = function getTabIndex(node) {\n if (!node) {\n throw new Error('No node provided');\n }\n if (node.tabIndex < 0) {\n // in Chrome, <details/>, <audio controls/> and <video controls/> elements get a default\n // `tabIndex` of -1 when the 'tabindex' attribute isn't specified in the DOM,\n // yet they are still part of the regular tab order; in FF, they get a default\n // `tabIndex` of 0; since Chrome still puts those elements in the regular tab\n // order, consider their tab index to be 0.\n // Also browsers do not return `tabIndex` correctly for contentEditable nodes;\n // so if they don't have a tabindex attribute specifically set, assume it's 0.\n if ((/^(AUDIO|VIDEO|DETAILS)$/.test(node.tagName) || isContentEditable(node)) && !hasTabIndex(node)) {\n return 0;\n }\n }\n return node.tabIndex;\n};\n\n/**\n * Determine the tab index of a given node __for sort order purposes__.\n * @param {HTMLElement} node\n * @param {boolean} [isScope] True for a custom element with shadow root or slot that, by default,\n * has tabIndex -1, but needs to be sorted by document order in order for its content to be\n * inserted into the correct sort position.\n * @returns {number} Tab order (negative, 0, or positive number).\n */\nvar getSortOrderTabIndex = function getSortOrderTabIndex(node, isScope) {\n var tabIndex = getTabIndex(node);\n if (tabIndex < 0 && isScope && !hasTabIndex(node)) {\n return 0;\n }\n return tabIndex;\n};\nvar sortOrderedTabbables = function sortOrderedTabbables(a, b) {\n return a.tabIndex === b.tabIndex ? a.documentOrder - b.documentOrder : a.tabIndex - b.tabIndex;\n};\nvar isInput = function isInput(node) {\n return node.tagName === 'INPUT';\n};\nvar isHiddenInput = function isHiddenInput(node) {\n return isInput(node) && node.type === 'hidden';\n};\nvar isDetailsWithSummary = function isDetailsWithSummary(node) {\n var r = node.tagName === 'DETAILS' && Array.prototype.slice.apply(node.children).some(function (child) {\n return child.tagName === 'SUMMARY';\n });\n return r;\n};\nvar getCheckedRadio = function getCheckedRadio(nodes, form) {\n for (var i = 0; i < nodes.length; i++) {\n if (nodes[i].checked && nodes[i].form === form) {\n return nodes[i];\n }\n }\n};\nvar isTabbableRadio = function isTabbableRadio(node) {\n if (!node.name) {\n return true;\n }\n var radioScope = node.form || getRootNode(node);\n var queryRadios = function queryRadios(name) {\n return radioScope.querySelectorAll('input[type=\"radio\"][name=\"' + name + '\"]');\n };\n var radioSet;\n if (typeof window !== 'undefined' && typeof window.CSS !== 'undefined' && typeof window.CSS.escape === 'function') {\n radioSet = queryRadios(window.CSS.escape(node.name));\n } else {\n try {\n radioSet = queryRadios(node.name);\n } catch (err) {\n // eslint-disable-next-line no-console\n console.error('Looks like you have a radio button with a name attribute containing invalid CSS selector characters and need the CSS.escape polyfill: %s', err.message);\n return false;\n }\n }\n var checked = getCheckedRadio(radioSet, node.form);\n return !checked || checked === node;\n};\nvar isRadio = function isRadio(node) {\n return isInput(node) && node.type === 'radio';\n};\nvar isNonTabbableRadio = function isNonTabbableRadio(node) {\n return isRadio(node) && !isTabbableRadio(node);\n};\n\n// determines if a node is ultimately attached to the window's document\nvar isNodeAttached = function isNodeAttached(node) {\n var _nodeRoot;\n // The root node is the shadow root if the node is in a shadow DOM; some document otherwise\n // (but NOT _the_ document; see second 'If' comment below for more).\n // If rootNode is shadow root, it'll have a host, which is the element to which the shadow\n // is attached, and the one we need to check if it's in the document or not (because the\n // shadow, and all nodes it contains, is never considered in the document since shadows\n // behave like self-contained DOMs; but if the shadow's HOST, which is part of the document,\n // is hidden, or is not in the document itself but is detached, it will affect the shadow's\n // visibility, including all the nodes it contains). The host could be any normal node,\n // or a custom element (i.e. web component). Either way, that's the one that is considered\n // part of the document, not the shadow root, nor any of its children (i.e. the node being\n // tested).\n // To further complicate things, we have to look all the way up until we find a shadow HOST\n // that is attached (or find none) because the node might be in nested shadows...\n // If rootNode is not a shadow root, it won't have a host, and so rootNode should be the\n // document (per the docs) and while it's a Document-type object, that document does not\n // appear to be the same as the node's `ownerDocument` for some reason, so it's safer\n // to ignore the rootNode at this point, and use `node.ownerDocument`. Otherwise,\n // using `rootNode.contains(node)` will _always_ be true we'll get false-positives when\n // node is actually detached.\n // NOTE: If `nodeRootHost` or `node` happens to be the `document` itself (which is possible\n // if a tabbable/focusable node was quickly added to the DOM, focused, and then removed\n // from the DOM as in https://github.com/focus-trap/focus-trap-react/issues/905), then\n // `ownerDocument` will be `null`, hence the optional chaining on it.\n var nodeRoot = node && getRootNode(node);\n var nodeRootHost = (_nodeRoot = nodeRoot) === null || _nodeRoot === void 0 ? void 0 : _nodeRoot.host;\n\n // in some cases, a detached node will return itself as the root instead of a document or\n // shadow root object, in which case, we shouldn't try to look further up the host chain\n var attached = false;\n if (nodeRoot && nodeRoot !== node) {\n var _nodeRootHost, _nodeRootHost$ownerDo, _node$ownerDocument;\n attached = !!((_nodeRootHost = nodeRootHost) !== null && _nodeRootHost !== void 0 && (_nodeRootHost$ownerDo = _nodeRootHost.ownerDocument) !== null && _nodeRootHost$ownerDo !== void 0 && _nodeRootHost$ownerDo.contains(nodeRootHost) || node !== null && node !== void 0 && (_node$ownerDocument = node.ownerDocument) !== null && _node$ownerDocument !== void 0 && _node$ownerDocument.contains(node));\n while (!attached && nodeRootHost) {\n var _nodeRoot2, _nodeRootHost2, _nodeRootHost2$ownerD;\n // since it's not attached and we have a root host, the node MUST be in a nested shadow DOM,\n // which means we need to get the host's host and check if that parent host is contained\n // in (i.e. attached to) the document\n nodeRoot = getRootNode(nodeRootHost);\n nodeRootHost = (_nodeRoot2 = nodeRoot) === null || _nodeRoot2 === void 0 ? void 0 : _nodeRoot2.host;\n attached = !!((_nodeRootHost2 = nodeRootHost) !== null && _nodeRootHost2 !== void 0 && (_nodeRootHost2$ownerD = _nodeRootHost2.ownerDocument) !== null && _nodeRootHost2$ownerD !== void 0 && _nodeRootHost2$ownerD.contains(nodeRootHost));\n }\n }\n return attached;\n};\nvar isZeroArea = function isZeroArea(node) {\n var _node$getBoundingClie = node.getBoundingClientRect(),\n width = _node$getBoundingClie.width,\n height = _node$getBoundingClie.height;\n return width === 0 && height === 0;\n};\nvar isHidden = function isHidden(node, _ref) {\n var displayCheck = _ref.displayCheck,\n getShadowRoot = _ref.getShadowRoot;\n if (displayCheck === 'full-native') {\n if ('checkVisibility' in node) {\n // Chrome >= 105, Edge >= 105, Firefox >= 106, Safari >= 17.4\n // @see https://developer.mozilla.org/en-US/docs/Web/API/Element/checkVisibility#browser_compatibility\n var visible = node.checkVisibility({\n // Checking opacity might be desirable for some use cases, but natively,\n // opacity zero elements _are_ focusable and tabbable.\n checkOpacity: false,\n opacityProperty: false,\n contentVisibilityAuto: true,\n visibilityProperty: true,\n // This is an alias for `visibilityProperty`. Contemporary browsers\n // support both. However, this alias has wider browser support (Chrome\n // >= 105 and Firefox >= 106, vs. Chrome >= 121 and Firefox >= 122), so\n // we include it anyway.\n checkVisibilityCSS: true\n });\n return !visible;\n }\n // Fall through to manual visibility checks\n }\n\n // NOTE: visibility will be `undefined` if node is detached from the document\n // (see notes about this further down), which means we will consider it visible\n // (this is legacy behavior from a very long way back)\n // NOTE: we check this regardless of `displayCheck=\"none\"` because this is a\n // _visibility_ check, not a _display_ check\n var _getComputedStyle = getComputedStyle(node),\n visibility = _getComputedStyle.visibility;\n if (visibility === 'hidden' || visibility === 'collapse') {\n return true;\n }\n var isDirectSummary = matches.call(node, 'details>summary:first-of-type');\n var nodeUnderDetails = isDirectSummary ? node.parentElement : node;\n if (matches.call(nodeUnderDetails, 'details:not([open]) *')) {\n return true;\n }\n if (!displayCheck || displayCheck === 'full' ||\n // full-native can run this branch when it falls through in case\n // Element#checkVisibility is unsupported\n displayCheck === 'full-native' || displayCheck === 'legacy-full') {\n if (typeof getShadowRoot === 'function') {\n // figure out if we should consider the node to be in an undisclosed shadow and use the\n // 'non-zero-area' fallback\n var originalNode = node;\n while (node) {\n var parentElement = node.parentElement;\n var rootNode = getRootNode(node);\n if (parentElement && !parentElement.shadowRoot && getShadowRoot(parentElement) === true // check if there's an undisclosed shadow\n ) {\n // node has an undisclosed shadow which means we can only treat it as a black box, so we\n // fall back to a non-zero-area test\n return isZeroArea(node);\n } else if (node.assignedSlot) {\n // iterate up slot\n node = node.assignedSlot;\n } else if (!parentElement && rootNode !== node.ownerDocument) {\n // cross shadow boundary\n node = rootNode.host;\n } else {\n // iterate up normal dom\n node = parentElement;\n }\n }\n node = originalNode;\n }\n // else, `getShadowRoot` might be true, but all that does is enable shadow DOM support\n // (i.e. it does not also presume that all nodes might have undisclosed shadows); or\n // it might be a falsy value, which means shadow DOM support is disabled\n\n // Since we didn't find it sitting in an undisclosed shadow (or shadows are disabled)\n // now we can just test to see if it would normally be visible or not, provided it's\n // attached to the main document.\n // NOTE: We must consider case where node is inside a shadow DOM and given directly to\n // `isTabbable()` or `isFocusable()` -- regardless of `getShadowRoot` option setting.\n\n if (isNodeAttached(node)) {\n // this works wherever the node is: if there's at least one client rect, it's\n // somehow displayed; it also covers the CSS 'display: contents' case where the\n // node itself is hidden in place of its contents; and there's no need to search\n // up the hierarchy either\n return !node.getClientRects().length;\n }\n\n // Else, the node isn't attached to the document, which means the `getClientRects()`\n // API will __always__ return zero rects (this can happen, for example, if React\n // is used to render nodes onto a detached tree, as confirmed in this thread:\n // https://github.com/facebook/react/issues/9117#issuecomment-284228870)\n //\n // It also means that even window.getComputedStyle(node).display will return `undefined`\n // because styles are only computed for nodes that are in the document.\n //\n // NOTE: THIS HAS BEEN THE CASE FOR YEARS. It is not new, nor is it caused by tabbable\n // somehow. Though it was never stated officially, anyone who has ever used tabbable\n // APIs on nodes in detached containers has actually implicitly used tabbable in what\n // was later (as of v5.2.0 on Apr 9, 2021) called `displayCheck=\"none\"` mode -- essentially\n // considering __everything__ to be visible because of the innability to determine styles.\n //\n // v6.0.0: As of this major release, the default 'full' option __no longer treats detached\n // nodes as visible with the 'none' fallback.__\n if (displayCheck !== 'legacy-full') {\n return true; // hidden\n }\n // else, fallback to 'none' mode and consider the node visible\n } else if (displayCheck === 'non-zero-area') {\n // NOTE: Even though this tests that the node's client rect is non-zero to determine\n // whether it's displayed, and that a detached node will __always__ have a zero-area\n // client rect, we don't special-case for whether the node is attached or not. In\n // this mode, we do want to consider nodes that have a zero area to be hidden at all\n // times, and that includes attached or not.\n return isZeroArea(node);\n }\n\n // visible, as far as we can tell, or per current `displayCheck=none` mode, we assume\n // it's visible\n return false;\n};\n\n// form fields (nested) inside a disabled fieldset are not focusable/tabbable\n// unless they are in the _first_ <legend> element of the top-most disabled\n// fieldset\nvar isDisabledFromFieldset = function isDisabledFromFieldset(node) {\n if (/^(INPUT|BUTTON|SELECT|TEXTAREA)$/.test(node.tagName)) {\n var parentNode = node.parentElement;\n // check if `node` is contained in a disabled <fieldset>\n while (parentNode) {\n if (parentNode.tagName === 'FIELDSET' && parentNode.disabled) {\n // look for the first <legend> among the children of the disabled <fieldset>\n for (var i = 0; i < parentNode.children.length; i++) {\n var child = parentNode.children.item(i);\n // when the first <legend> (in document order) is found\n if (child.tagName === 'LEGEND') {\n // if its parent <fieldset> is not nested in another disabled <fieldset>,\n // return whether `node` is a descendant of its first <legend>\n return matches.call(parentNode, 'fieldset[disabled] *') ? true : !child.contains(node);\n }\n }\n // the disabled <fieldset> containing `node` has no <legend>\n return true;\n }\n parentNode = parentNode.parentElement;\n }\n }\n\n // else, node's tabbable/focusable state should not be affected by a fieldset's\n // enabled/disabled state\n return false;\n};\nvar isNodeMatchingSelectorFocusable = function isNodeMatchingSelectorFocusable(options, node) {\n if (node.disabled || isHiddenInput(node) || isHidden(node, options) ||\n // For a details element with a summary, the summary element gets the focus\n isDetailsWithSummary(node) || isDisabledFromFieldset(node)) {\n return false;\n }\n return true;\n};\nvar isNodeMatchingSelectorTabbable = function isNodeMatchingSelectorTabbable(options, node) {\n if (isNonTabbableRadio(node) || getTabIndex(node) < 0 || !isNodeMatchingSelectorFocusable(options, node)) {\n return false;\n }\n return true;\n};\nvar isShadowRootTabbable = function isShadowRootTabbable(shadowHostNode) {\n var tabIndex = parseInt(shadowHostNode.getAttribute('tabindex'), 10);\n if (isNaN(tabIndex) || tabIndex >= 0) {\n return true;\n }\n // If a custom element has an explicit negative tabindex,\n // browsers will not allow tab targeting said element's children.\n return false;\n};\n\n/**\n * @param {Array.<Element|CandidateScope>} candidates\n * @returns Element[]\n */\nvar _sortByOrder = function sortByOrder(candidates) {\n var regularTabbables = [];\n var orderedTabbables = [];\n candidates.forEach(function (item, i) {\n var isScope = !!item.scopeParent;\n var element = isScope ? item.scopeParent : item;\n var candidateTabindex = getSortOrderTabIndex(element, isScope);\n var elements = isScope ? _sortByOrder(item.candidates) : element;\n if (candidateTabindex === 0) {\n isScope ? regularTabbables.push.apply(regularTabbables, elements) : regularTabbables.push(element);\n } else {\n orderedTabbables.push({\n documentOrder: i,\n tabIndex: candidateTabindex,\n item: item,\n isScope: isScope,\n content: elements\n });\n }\n });\n return orderedTabbables.sort(sortOrderedTabbables).reduce(function (acc, sortable) {\n sortable.isScope ? acc.push.apply(acc, sortable.content) : acc.push(sortable.content);\n return acc;\n }, []).concat(regularTabbables);\n};\nvar tabbable = function tabbable(container, options) {\n options = options || {};\n var candidates;\n if (options.getShadowRoot) {\n candidates = _getCandidatesIteratively([container], options.includeContainer, {\n filter: isNodeMatchingSelectorTabbable.bind(null, options),\n flatten: false,\n getShadowRoot: options.getShadowRoot,\n shadowRootFilter: isShadowRootTabbable\n });\n } else {\n candidates = getCandidates(container, options.includeContainer, isNodeMatchingSelectorTabbable.bind(null, options));\n }\n return _sortByOrder(candidates);\n};\nvar focusable = function focusable(container, options) {\n options = options || {};\n var candidates;\n if (options.getShadowRoot) {\n candidates = _getCandidatesIteratively([container], options.includeContainer, {\n filter: isNodeMatchingSelectorFocusable.bind(null, options),\n flatten: true,\n getShadowRoot: options.getShadowRoot\n });\n } else {\n candidates = getCandidates(container, options.includeContainer, isNodeMatchingSelectorFocusable.bind(null, options));\n }\n return candidates;\n};\nvar isTabbable = function isTabbable(node, options) {\n options = options || {};\n if (!node) {\n throw new Error('No node provided');\n }\n if (matches.call(node, candidateSelector) === false) {\n return false;\n }\n return isNodeMatchingSelectorTabbable(options, node);\n};\nvar focusableCandidateSelector = /* #__PURE__ */candidateSelectors.concat('iframe:not([inert]):not([inert] *)').join(',');\nvar isFocusable = function isFocusable(node, options) {\n options = options || {};\n if (!node) {\n throw new Error('No node provided');\n }\n if (matches.call(node, focusableCandidateSelector) === false) {\n return false;\n }\n return isNodeMatchingSelectorFocusable(options, node);\n};\n\nexport { focusable, getTabIndex, isFocusable, isTabbable, tabbable };\n//# sourceMappingURL=index.esm.js.map\n","/*!\n* focus-trap 8.2.2\n* @license MIT, https://github.com/focus-trap/focus-trap/blob/master/LICENSE\n*/\nimport { tabbable, focusable, isTabbable, getTabIndex, isFocusable } from 'tabbable';\n\nfunction _arrayLikeToArray(r, a) {\n (null == a || a > r.length) && (a = r.length);\n for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e];\n return n;\n}\nfunction _arrayWithoutHoles(r) {\n if (Array.isArray(r)) return _arrayLikeToArray(r);\n}\nfunction _createForOfIteratorHelper(r, e) {\n var t = \"undefined\" != typeof Symbol && r[Symbol.iterator] || r[\"@@iterator\"];\n if (!t) {\n if (Array.isArray(r) || (t = _unsupportedIterableToArray(r)) || e) {\n t && (r = t);\n var n = 0,\n F = function () {};\n return {\n s: F,\n n: function () {\n return n >= r.length ? {\n done: true\n } : {\n done: false,\n value: r[n++]\n };\n },\n e: function (r) {\n throw r;\n },\n f: F\n };\n }\n throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n }\n var o,\n a = true,\n u = false;\n return {\n s: function () {\n t = t.call(r);\n },\n n: function () {\n var r = t.next();\n return a = r.done, r;\n },\n e: function (r) {\n u = true, o = r;\n },\n f: function () {\n try {\n a || null == t.return || t.return();\n } finally {\n if (u) throw o;\n }\n }\n };\n}\nfunction _defineProperty(e, r, t) {\n return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, {\n value: t,\n enumerable: true,\n configurable: true,\n writable: true\n }) : e[r] = t, e;\n}\nfunction _iterableToArray(r) {\n if (\"undefined\" != typeof Symbol && null != r[Symbol.iterator] || null != r[\"@@iterator\"]) return Array.from(r);\n}\nfunction _nonIterableSpread() {\n throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}\nfunction ownKeys(e, r) {\n var t = Object.keys(e);\n if (Object.getOwnPropertySymbols) {\n var o = Object.getOwnPropertySymbols(e);\n r && (o = o.filter(function (r) {\n return Object.getOwnPropertyDescriptor(e, r).enumerable;\n })), t.push.apply(t, o);\n }\n return t;\n}\nfunction _objectSpread2(e) {\n for (var r = 1; r < arguments.length; r++) {\n var t = null != arguments[r] ? arguments[r] : {};\n r % 2 ? ownKeys(Object(t), true).forEach(function (r) {\n _defineProperty(e, r, t[r]);\n }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) {\n Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r));\n });\n }\n return e;\n}\nfunction _toConsumableArray(r) {\n return _arrayWithoutHoles(r) || _iterableToArray(r) || _unsupportedIterableToArray(r) || _nonIterableSpread();\n}\nfunction _toPrimitive(t, r) {\n if (\"object\" != typeof t || !t) return t;\n var e = t[Symbol.toPrimitive];\n if (void 0 !== e) {\n var i = e.call(t, r);\n if (\"object\" != typeof i) return i;\n throw new TypeError(\"@@toPrimitive must return a primitive value.\");\n }\n return (\"string\" === r ? String : Number)(t);\n}\nfunction _toPropertyKey(t) {\n var i = _toPrimitive(t, \"string\");\n return \"symbol\" == typeof i ? i : i + \"\";\n}\nfunction _unsupportedIterableToArray(r, a) {\n if (r) {\n if (\"string\" == typeof r) return _arrayLikeToArray(r, a);\n var t = {}.toString.call(r).slice(8, -1);\n return \"Object\" === t && r.constructor && (t = r.constructor.name), \"Map\" === t || \"Set\" === t ? Array.from(r) : \"Arguments\" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : void 0;\n }\n}\n\nvar activeFocusTraps = {\n // Returns the trap from the top of the stack.\n getActiveTrap: function getActiveTrap(trapStack) {\n if ((trapStack === null || trapStack === void 0 ? void 0 : trapStack.length) > 0) {\n return trapStack[trapStack.length - 1];\n }\n return null;\n },\n // Pauses the currently active trap, then adds a new trap to the stack.\n activateTrap: function activateTrap(trapStack, trap) {\n var activeTrap = activeFocusTraps.getActiveTrap(trapStack);\n if (trap !== activeTrap) {\n activeFocusTraps.pauseTrap(trapStack);\n }\n var trapIndex = trapStack.indexOf(trap);\n if (trapIndex === -1) {\n trapStack.push(trap);\n } else {\n // move this existing trap to the front of the queue\n trapStack.splice(trapIndex, 1);\n trapStack.push(trap);\n }\n },\n // Removes the trap from the top of the stack, then unpauses the next trap down.\n deactivateTrap: function deactivateTrap(trapStack, trap) {\n var trapIndex = trapStack.indexOf(trap);\n if (trapIndex !== -1) {\n trapStack.splice(trapIndex, 1);\n }\n activeFocusTraps.unpauseTrap(trapStack);\n },\n // Pauses the trap at the top of the stack.\n pauseTrap: function pauseTrap(trapStack) {\n var activeTrap = activeFocusTraps.getActiveTrap(trapStack);\n activeTrap === null || activeTrap === void 0 || activeTrap._setPausedState(true);\n },\n // Unpauses the trap at the top of the stack.\n unpauseTrap: function unpauseTrap(trapStack) {\n var activeTrap = activeFocusTraps.getActiveTrap(trapStack);\n if (activeTrap && !activeTrap._isManuallyPaused()) {\n activeTrap._setPausedState(false);\n }\n }\n};\nvar isSelectableInput = function isSelectableInput(node) {\n return node.tagName && node.tagName.toLowerCase() === 'input' && typeof node.select === 'function';\n};\nvar isEscapeEvent = function isEscapeEvent(e) {\n return (e === null || e === void 0 ? void 0 : e.key) === 'Escape' || (e === null || e === void 0 ? void 0 : e.key) === 'Esc' || (e === null || e === void 0 ? void 0 : e.keyCode) === 27;\n};\nvar isTabEvent = function isTabEvent(e) {\n return (e === null || e === void 0 ? void 0 : e.key) === 'Tab' || (e === null || e === void 0 ? void 0 : e.keyCode) === 9;\n};\n\n// checks for TAB by default\nvar isKeyForward = function isKeyForward(e) {\n return isTabEvent(e) && !e.shiftKey;\n};\n\n// checks for SHIFT+TAB by default\nvar isKeyBackward = function isKeyBackward(e) {\n return isTabEvent(e) && e.shiftKey;\n};\nvar delay = function delay(fn) {\n return setTimeout(fn, 0);\n};\n\n/**\n * Get an option's value when it could be a plain value, or a handler that provides\n * the value.\n * @param {*} value Option's value to check.\n * @param {...*} [params] Any parameters to pass to the handler, if `value` is a function.\n * @returns {*} The `value`, or the handler's returned value.\n */\nvar valueOrHandler = function valueOrHandler(value) {\n for (var _len = arguments.length, params = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n params[_key - 1] = arguments[_key];\n }\n return typeof value === 'function' ? value.apply(void 0, params) : value;\n};\nvar getActualTarget = function getActualTarget(event) {\n // NOTE: If the trap is _inside_ a shadow DOM, event.target will always be the\n // shadow host. However, event.target.composedPath() will be an array of\n // nodes \"clicked\" from inner-most (the actual element inside the shadow) to\n // outer-most (the host HTML document). If we have access to composedPath(),\n // then use its first element; otherwise, fall back to event.target (and\n // this only works for an _open_ shadow DOM; otherwise,\n // composedPath()[0] === event.target always).\n return event.target.shadowRoot && typeof event.composedPath === 'function' ? event.composedPath()[0] : event.target;\n};\n\n// NOTE: this must be _outside_ `createFocusTrap()` to make sure all traps in this\n// current instance use the same stack if `userOptions.trapStack` isn't specified\nvar internalTrapStack = [];\nvar createFocusTrap = function createFocusTrap(elements, userOptions) {\n // SSR: a live trap shouldn't be created in this type of environment so this\n // should be safe code to execute if the `document` option isn't specified\n var doc = (userOptions === null || userOptions === void 0 ? void 0 : userOptions.document) || document;\n var trapStack = (userOptions === null || userOptions === void 0 ? void 0 : userOptions.trapStack) || internalTrapStack;\n var config = _objectSpread2({\n returnFocusOnDeactivate: true,\n escapeDeactivates: true,\n delayInitialFocus: true,\n delayReturnFocus: true,\n isolateSubtrees: false,\n isKeyForward: isKeyForward,\n isKeyBackward: isKeyBackward\n }, userOptions);\n var state = {\n // containers given to createFocusTrap()\n /** @type {Array<HTMLElement>} */\n containers: [],\n // list of objects identifying tabbable nodes in `containers` in the trap\n // NOTE: it's possible that a group has no tabbable nodes if nodes get removed while the trap\n // is active, but the trap should never get to a state where there isn't at least one group\n // with at least one tabbable node in it (that would lead to an error condition that would\n // result in an error being thrown)\n /** @type {Array<{\n * container: HTMLElement,\n * tabbableNodes: Array<HTMLElement>, // empty if none\n * focusableNodes: Array<HTMLElement>, // empty if none\n * posTabIndexesFound: boolean,\n * firstTabbableNode: HTMLElement|undefined,\n * lastTabbableNode: HTMLElement|undefined,\n * firstDomTabbableNode: HTMLElement|undefined,\n * lastDomTabbableNode: HTMLElement|undefined,\n * nextTabbableNode: (node: HTMLElement, forward: boolean) => HTMLElement|undefined\n * }>}\n */\n containerGroups: [],\n // same order/length as `containers` list\n\n // references to objects in `containerGroups`, but only those that actually have\n // tabbable nodes in them\n // NOTE: same order as `containers` and `containerGroups`, but __not necessarily__\n // the same length\n tabbableGroups: [],\n // references to nodes that are siblings to the ancestors of this trap's containers.\n /** @type {Set<HTMLElement>} */\n adjacentElements: new Set(),\n // references to nodes that were inert or aria-hidden before the trap was activated.\n /** @type {Set<HTMLElement>} */\n alreadySilent: new Set(),\n nodeFocusedBeforeActivation: null,\n mostRecentlyFocusedNode: null,\n active: false,\n paused: false,\n manuallyPaused: false,\n // timer ID for when delayInitialFocus is true and initial focus in this trap\n // has been delayed during activation\n delayInitialFocusTimer: undefined,\n // the most recent KeyboardEvent for the configured nav key (typically [SHIFT+]TAB), if any\n recentNavEvent: undefined\n };\n var trap; // eslint-disable-line prefer-const -- some private functions reference it, and its methods reference private functions, so we must declare here and define later\n\n /**\n * Gets a configuration option value.\n * @param {Object|undefined} configOverrideOptions If true, and option is defined in this set,\n * value will be taken from this object. Otherwise, value will be taken from base configuration.\n * @param {string} optionName Name of the option whose value is sought.\n * @param {string|undefined} [configOptionName] Name of option to use __instead of__ `optionName`\n * IIF `configOverrideOptions` is not defined. Otherwise, `optionName` is used.\n */\n var getOption = function getOption(configOverrideOptions, optionName, configOptionName) {\n return configOverrideOptions && configOverrideOptions[optionName] !== undefined ? configOverrideOptions[optionName] : config[configOptionName || optionName];\n };\n\n /**\n * Finds the index of the container that contains the element.\n * @param {HTMLElement} element\n * @param {Event} [event] If available, and `element` isn't directly found in any container,\n * the event's composed path is used to see if includes any known trap containers in the\n * case where the element is inside a Shadow DOM.\n * @returns {number} Index of the container in either `state.containers` or\n * `state.containerGroups` (the order/length of these lists are the same); -1\n * if the element isn't found.\n */\n var findContainerIndex = function findContainerIndex(element, event) {\n var composedPath = typeof (event === null || event === void 0 ? void 0 : event.composedPath) === 'function' ? event.composedPath() : undefined;\n // NOTE: search `containerGroups` because it's possible a group contains no tabbable\n // nodes, but still contains focusable nodes (e.g. if they all have `tabindex=-1`)\n // and we still need to find the element in there\n return state.containerGroups.findIndex(function (_ref) {\n var container = _ref.container,\n tabbableNodes = _ref.tabbableNodes;\n return container.contains(element) || (// fall back to explicit tabbable search which will take into consideration any\n // web components if the `tabbableOptions.getShadowRoot` option was used for\n // the trap, enabling shadow DOM support in tabbable (`Node.contains()` doesn't\n // look inside web components even if open)\n composedPath === null || composedPath === void 0 ? void 0 : composedPath.includes(container)) || tabbableNodes.find(function (node) {\n return node === element;\n });\n });\n };\n\n /**\n * Gets the node for the given option, which is expected to be an option that\n * can be either a DOM node, a string that is a selector to get a node, `false`\n * (if a node is explicitly NOT given), or a function that returns any of these\n * values.\n * @param {string} optionName\n * @param {Object} options\n * @param {boolean} [options.hasFallback] True if the option could be a selector string\n * and the option allows for a fallback scenario in the case where the selector is\n * valid but does not match a node (i.e. the queried node doesn't exist in the DOM).\n * @param {Array} [options.params] Params to pass to the option if it's a function.\n * @returns {undefined | null | false | HTMLElement | SVGElement} Returns\n * `undefined` if the option is not specified; `null` if the option didn't resolve\n * to a node but `options.hasFallback=true`, `false` if the option resolved to `false`\n * (node explicitly not given); otherwise, the resolved DOM node.\n * @throws {Error} If the option is set, not `false`, and is not, or does not\n * resolve to a node, unless the option is a selector string and `options.hasFallback=true`.\n */\n var getNodeForOption = function getNodeForOption(optionName) {\n var _ref2 = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {},\n _ref2$hasFallback = _ref2.hasFallback,\n hasFallback = _ref2$hasFallback === void 0 ? false : _ref2$hasFallback,\n _ref2$params = _ref2.params,\n params = _ref2$params === void 0 ? [] : _ref2$params;\n var optionValue = config[optionName];\n if (typeof optionValue === 'function') {\n optionValue = optionValue.apply(void 0, _toConsumableArray(params));\n }\n if (optionValue === true) {\n optionValue = undefined; // use default value\n }\n if (!optionValue) {\n if (optionValue === undefined || optionValue === false) {\n return optionValue;\n }\n // else, empty string (invalid), null (invalid), 0 (invalid)\n\n throw new Error(\"`\".concat(optionName, \"` was specified but was not a node, or did not return a node\"));\n }\n var node = optionValue; // could be HTMLElement, SVGElement, or non-empty string at this point\n\n if (typeof optionValue === 'string') {\n try {\n node = doc.querySelector(optionValue); // resolve to node, or null if fails\n } catch (err) {\n throw new Error(\"`\".concat(optionName, \"` appears to be an invalid selector; error=\\\"\").concat(err.message, \"\\\"\"));\n }\n if (!node) {\n if (!hasFallback) {\n throw new Error(\"`\".concat(optionName, \"` as selector refers to no known node\"));\n }\n // else, `node` MUST be `null` because that's what `Document.querySelector()` returns\n // if the selector is valid but doesn't match anything\n }\n }\n return node;\n };\n\n /**\n * Gets the current activeElement. If it's a web-component and has open shadow-root\n * it will recursively search inside shadow roots for the \"true\" activeElement.\n *\n * @param {Document | ShadowRoot} el\n *\n * @returns {HTMLElement|null} The element that currently has the focus. `null` if a focused element isn't found.\n **/\n var _getActiveElement = function getActiveElement(el) {\n var activeElement = el.activeElement;\n if (!activeElement) {\n return null;\n }\n if (activeElement.shadowRoot && activeElement.shadowRoot.activeElement !== null) {\n return _getActiveElement(activeElement.shadowRoot);\n }\n return activeElement;\n };\n var getInitialFocusNode = function getInitialFocusNode() {\n var node = getNodeForOption('initialFocus', {\n hasFallback: true\n });\n\n // false explicitly indicates we want no initialFocus at all\n if (node === false) {\n return false;\n }\n if (node === undefined || node && !isFocusable(node, config.tabbableOptions)) {\n var activeElement = _getActiveElement(doc);\n\n // option not specified nor focusable: use fallback options\n if (findContainerIndex(activeElement) >= 0) {\n node = activeElement;\n } else {\n var firstTabbableGroup = state.tabbableGroups[0];\n var firstTabbableNode = firstTabbableGroup && firstTabbableGroup.firstTabbableNode;\n\n // NOTE: `fallbackFocus` option function cannot return `false` (not supported)\n node = firstTabbableNode || getNodeForOption('fallbackFocus');\n }\n } else if (node === null) {\n // option is a VALID selector string that doesn't yield a node: use the `fallbackFocus`\n // option instead of the default behavior when the option isn't specified at all\n node = getNodeForOption('fallbackFocus');\n }\n if (!node) {\n throw new Error('Your focus-trap needs to have at least one focusable element');\n }\n return node;\n };\n var updateTabbableNodes = function updateTabbableNodes() {\n state.containerGroups = state.containers.map(function (container) {\n var tabbableNodes = tabbable(container, config.tabbableOptions);\n\n // NOTE: if we have tabbable nodes, we must have focusable nodes; focusable nodes\n // are a superset of tabbable nodes since nodes with negative `tabindex` attributes\n // are focusable but not tabbable\n var focusableNodes = focusable(container, config.tabbableOptions);\n var firstTabbableNode = tabbableNodes.length > 0 ? tabbableNodes[0] : undefined;\n var lastTabbableNode = tabbableNodes.length > 0 ? tabbableNodes[tabbableNodes.length - 1] : undefined;\n var firstDomTabbableNode = focusableNodes.find(function (node) {\n return isTabbable(node);\n });\n var lastDomTabbableNode = focusableNodes.slice().reverse().find(function (node) {\n return isTabbable(node);\n });\n var posTabIndexesFound = !!tabbableNodes.find(function (node) {\n return getTabIndex(node) > 0;\n });\n return {\n container: container,\n tabbableNodes: tabbableNodes,\n focusableNodes: focusableNodes,\n /** True if at least one node with positive `tabindex` was found in this container. */\n posTabIndexesFound: posTabIndexesFound,\n /** First tabbable node in container, __tabindex__ order; `undefined` if none. */\n firstTabbableNode: firstTabbableNode,\n /** Last tabbable node in container, __tabindex__ order; `undefined` if none. */\n lastTabbableNode: lastTabbableNode,\n // NOTE: DOM order is NOT NECESSARILY \"document position\" order, but figuring that out\n // would require more than just https://developer.mozilla.org/en-US/docs/Web/API/Node/compareDocumentPosition\n // because that API doesn't work with Shadow DOM as well as it should (@see\n // https://github.com/whatwg/dom/issues/320) and since this first/last is only needed, so far,\n // to address an edge case related to positive tabindex support, this seems like a much easier,\n // \"close enough most of the time\" alternative for positive tabindexes which should generally\n // be avoided anyway...\n /** First tabbable node in container, __DOM__ order; `undefined` if none. */\n firstDomTabbableNode: firstDomTabbableNode,\n /** Last tabbable node in container, __DOM__ order; `undefined` if none. */\n lastDomTabbableNode: lastDomTabbableNode,\n /**\n * Finds the __tabbable__ node that follows the given node in the specified direction,\n * in this container, if any.\n * @param {HTMLElement} node\n * @param {boolean} [forward] True if going in forward tab order; false if going\n * in reverse.\n * @returns {HTMLElement|undefined} The next tabbable node, if any.\n */\n nextTabbableNode: function nextTabbableNode(node) {\n var forward = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;\n var nodeIdx = tabbableNodes.indexOf(node);\n if (nodeIdx < 0) {\n // either not tabbable nor focusable, or was focused but not tabbable (negative tabindex):\n // since `node` should at least have been focusable, we assume that's the case and mimic\n // what browsers do, which is set focus to the next node in __document position order__,\n // regardless of positive tabindexes, if any -- and for reasons explained in the NOTE\n // above related to `firstDomTabbable` and `lastDomTabbable` properties, we fall back to\n // basic DOM order\n if (forward) {\n return focusableNodes.slice(focusableNodes.indexOf(node) + 1).find(function (el) {\n return isTabbable(el);\n });\n }\n return focusableNodes.slice(0, focusableNodes.indexOf(node)).reverse().find(function (el) {\n return isTabbable(el);\n });\n }\n return tabbableNodes[nodeIdx + (forward ? 1 : -1)];\n }\n };\n });\n state.tabbableGroups = state.containerGroups.filter(function (group) {\n return group.tabbableNodes.length > 0;\n });\n\n // throw if no groups have tabbable nodes and we don't have a fallback focus node either\n if (state.tabbableGroups.length <= 0 && !getNodeForOption('fallbackFocus') // returning false not supported for this option\n ) {\n throw new Error('Your focus-trap must have at least one container with at least one tabbable node in it at all times');\n }\n\n // NOTE: Positive tabindexes are only properly supported in single-container traps because\n // doing it across multiple containers where tabindexes could be all over the place\n // would require Tabbable to support multiple containers, would require additional\n // specialized Shadow DOM support, and would require Tabbable's multi-container support\n // to look at those containers in document position order rather than user-provided\n // order (as they are treated in Focus-trap, for legacy reasons). See discussion on\n // https://github.com/focus-trap/focus-trap/issues/375 for more details.\n if (state.containerGroups.find(function (g) {\n return g.posTabIndexesFound;\n }) && state.containerGroups.length > 1) {\n throw new Error(\"At least one node with a positive tabindex was found in one of your focus-trap's multiple containers. Positive tabindexes are only supported in single-container focus-traps.\");\n }\n };\n var _tryFocus = function tryFocus(node) {\n if (node === false) {\n return;\n }\n if (node === _getActiveElement(document)) {\n return;\n }\n if (!node || !node.focus) {\n _tryFocus(getInitialFocusNode());\n return;\n }\n node.focus({\n preventScroll: !!config.preventScroll\n });\n // NOTE: focus() API does not trigger focusIn event so set MRU node manually\n state.mostRecentlyFocusedNode = node;\n if (isSelectableInput(node)) {\n node.select();\n }\n };\n var getReturnFocusNode = function getReturnFocusNode(previousActiveElement) {\n var node = getNodeForOption('setReturnFocus', {\n params: [previousActiveElement]\n });\n return node ? node : node === false ? false : previousActiveElement;\n };\n\n /**\n * Finds the next node (in either direction) where focus should move according to a\n * keyboard focus-in event.\n * @param {Object} params\n * @param {Node} [params.target] Known target __from which__ to navigate, if any.\n * @param {KeyboardEvent|FocusEvent} [params.event] Event to use if `target` isn't known (event\n * will be used to determine the `target`). Ignored if `target` is specified.\n * @param {boolean} [params.isBackward] True if focus should move backward.\n * @returns {Node|undefined} The next node, or `undefined` if a next node couldn't be\n * determined given the current state of the trap.\n */\n var findNextNavNode = function findNextNavNode(_ref3) {\n var target = _ref3.target,\n event = _ref3.event,\n _ref3$isBackward = _ref3.isBackward,\n isBackward = _ref3$isBackward === void 0 ? false : _ref3$isBackward;\n target = target || getActualTarget(event);\n updateTabbableNodes();\n var destinationNode = null;\n if (state.tabbableGroups.length > 0) {\n // make sure the target is actually contained in a group\n // NOTE: the target may also be the container itself if it's focusable\n // with tabIndex='-1' and was given initial focus\n var containerIndex = findContainerIndex(target, event);\n var containerGroup = containerIndex >= 0 ? state.containerGroups[containerIndex] : undefined;\n if (containerIndex < 0) {\n // target not found in any group: quite possible focus has escaped the trap,\n // so bring it back into...\n if (isBackward) {\n // ...the last node in the last group\n destinationNode = state.tabbableGroups[state.tabbableGroups.length - 1].lastTabbableNode;\n } else {\n // ...the first node in the first group\n destinationNode = state.tabbableGroups[0].firstTabbableNode;\n }\n } else if (isBackward) {\n // REVERSE\n\n // is the target the first tabbable node in a group?\n var startOfGroupIndex = state.tabbableGroups.findIndex(function (_ref4) {\n var firstTabbableNode = _ref4.firstTabbableNode;\n return target === firstTabbableNode;\n });\n if (startOfGroupIndex < 0 && (containerGroup.container === target || isFocusable(target, config.tabbableOptions) && !isTabbable(target, config.tabbableOptions) && !containerGroup.nextTabbableNode(target, false))) {\n // an exception case where the target is either the container itself, or\n // a non-tabbable node that was given focus (i.e. tabindex is negative\n // and user clicked on it or node was programmatically given focus)\n // and is not followed by any other tabbable node, in which\n // case, we should handle shift+tab as if focus were on the container's\n // first tabbable node, and go to the last tabbable node of the LAST group\n startOfGroupIndex = containerIndex;\n }\n if (startOfGroupIndex >= 0) {\n // YES: then shift+tab should go to the last tabbable node in the\n // previous group (and wrap around to the last tabbable node of\n // the LAST group if it's the first tabbable node of the FIRST group)\n var destinationGroupIndex = startOfGroupIndex === 0 ? state.tabbableGroups.length - 1 : startOfGroupIndex - 1;\n var destinationGroup = state.tabbableGroups[destinationGroupIndex];\n destinationNode = getTabIndex(target) >= 0 ? destinationGroup.lastTabbableNode : destinationGroup.lastDomTabbableNode;\n } else if (!isTabEvent(event)) {\n // user must have customized the nav keys so we have to move focus manually _within_\n // the active group: do this based on the order determined by tabbable()\n destinationNode = containerGroup.nextTabbableNode(target, false);\n }\n } else {\n // FORWARD\n\n // is the target the last tabbable node in a group?\n var lastOfGroupIndex = state.tabbableGroups.findIndex(function (_ref5) {\n var lastTabbableNode = _ref5.lastTabbableNode;\n return target === lastTabbableNode;\n });\n if (lastOfGroupIndex < 0 && (containerGroup.container === target || isFocusable(target, config.tabbableOptions) && !isTabbable(target, config.tabbableOptions) && !containerGroup.nextTabbableNode(target))) {\n // an exception case where the target is the container itself, or\n // a non-tabbable node that was given focus (i.e. tabindex is negative\n // and user clicked on it or node was programmatically given focus)\n // and is not followed by any other tabbable node, in which\n // case, we should handle tab as if focus were on the container's\n // last tabbable node, and go to the first tabbable node of the FIRST group\n lastOfGroupIndex = containerIndex;\n }\n if (lastOfGroupIndex >= 0) {\n // YES: then tab should go to the first tabbable node in the next\n // group (and wrap around to the first tabbable node of the FIRST\n // group if it's the last tabbable node of the LAST group)\n var _destinationGroupIndex = lastOfGroupIndex === state.tabbableGroups.length - 1 ? 0 : lastOfGroupIndex + 1;\n var _destinationGroup = state.tabbableGroups[_destinationGroupIndex];\n destinationNode = getTabIndex(target) >= 0 ? _destinationGroup.firstTabbableNode : _destinationGroup.firstDomTabbableNode;\n } else if (!isTabEvent(event)) {\n // user must have customized the nav keys so we have to move focus manually _within_\n // the active group: do this based on the order determined by tabbable()\n destinationNode = containerGroup.nextTabbableNode(target);\n }\n }\n } else {\n // no groups available\n // NOTE: the fallbackFocus option does not support returning false to opt-out\n destinationNode = getNodeForOption('fallbackFocus');\n }\n return destinationNode;\n };\n\n // This needs to be done on mousedown and touchstart instead of click\n // so that it precedes the focus event.\n var checkPointerDown = function checkPointerDown(e) {\n var target = getActualTarget(e);\n if (findContainerIndex(target, e) >= 0) {\n // allow the click since it occurred inside the trap\n return;\n }\n if (valueOrHandler(config.clickOutsideDeactivates, e)) {\n // immediately deactivate the trap\n trap.deactivate({\n // NOTE: by setting `returnFocus: false`, deactivate() will do nothing,\n // which will result in the outside click setting focus to the node\n // that was clicked (and if not focusable, to \"nothing\"); by setting\n // `returnFocus: true`, we'll attempt to re-focus the node originally-focused\n // on activation (or the configured `setReturnFocus` node), whether the\n // outside click was on a focusable node or not\n returnFocus: config.returnFocusOnDeactivate\n });\n return;\n }\n\n // This is needed for mobile devices.\n // (If we'll only let `click` events through,\n // then on mobile they will be blocked anyways if `touchstart` is blocked.)\n if (valueOrHandler(config.allowOutsideClick, e)) {\n // allow the click outside the trap to take place\n return;\n }\n\n // otherwise, prevent the click\n e.preventDefault();\n };\n\n // In case focus escapes the trap for some strange reason, pull it back in.\n // NOTE: the focusIn event is NOT cancelable, so if focus escapes, it may cause unexpected\n // scrolling if the node that got focused was out of view; there's nothing we can do to\n // prevent that from happening by the time we discover that focus escaped\n var checkFocusIn = function checkFocusIn(event) {\n var target = getActualTarget(event);\n var targetContained = findContainerIndex(target, event) >= 0;\n\n // In Firefox when you Tab out of an iframe the Document is briefly focused.\n if (targetContained || target instanceof Document) {\n if (targetContained) {\n state.mostRecentlyFocusedNode = target;\n }\n } else {\n // escaped! pull it back in to where it just left\n event.stopImmediatePropagation();\n\n // focus will escape if the MRU node had a positive tab index and user tried to nav forward;\n // it will also escape if the MRU node had a 0 tab index and user tried to nav backward\n // toward a node with a positive tab index\n var nextNode; // next node to focus, if we find one\n var navAcrossContainers = true;\n if (state.mostRecentlyFocusedNode) {\n if (getTabIndex(state.mostRecentlyFocusedNode) > 0) {\n // MRU container index must be >=0 otherwise we wouldn't have it as an MRU node...\n var mruContainerIdx = findContainerIndex(state.mostRecentlyFocusedNode);\n // there MAY not be any tabbable nodes in the container if there are at least 2 containers\n // and the MRU node is focusable but not tabbable (focus-trap requires at least 1 container\n // with at least one tabbable node in order to function, so this could be the other container\n // with nothing tabbable in it)\n var tabbableNodes = state.containerGroups[mruContainerIdx].tabbableNodes;\n if (tabbableNodes.length > 0) {\n // MRU tab index MAY not be found if the MRU node is focusable but not tabbable\n var mruTabIdx = tabbableNodes.findIndex(function (node) {\n return node === state.mostRecentlyFocusedNode;\n });\n if (mruTabIdx >= 0) {\n if (config.isKeyForward(state.recentNavEvent)) {\n if (mruTabIdx + 1 < tabbableNodes.length) {\n nextNode = tabbableNodes[mruTabIdx + 1];\n navAcrossContainers = false;\n }\n // else, don't wrap within the container as focus should move to next/previous\n // container\n } else {\n if (mruTabIdx - 1 >= 0) {\n nextNode = tabbableNodes[mruTabIdx - 1];\n navAcrossContainers = false;\n }\n // else, don't wrap within the container as focus should move to next/previous\n // container\n }\n // else, don't find in container order without considering direction too\n }\n }\n // else, no tabbable nodes in that container (which means we must have at least one other\n // container with at least one tabbable node in it, otherwise focus-trap would've thrown\n // an error the last time updateTabbableNodes() was run): find next node among all known\n // containers\n } else {\n // check to see if there's at least one tabbable node with a positive tab index inside\n // the trap because focus seems to escape when navigating backward from a tabbable node\n // with tabindex=0 when this is the case (instead of wrapping to the tabbable node with\n // the greatest positive tab index like it should)\n if (!state.containerGroups.some(function (g) {\n return g.tabbableNodes.some(function (n) {\n return getTabIndex(n) > 0;\n });\n })) {\n // no containers with tabbable nodes with positive tab indexes which means the focus\n // escaped for some other reason and we should just execute the fallback to the\n // MRU node or initial focus node, if any\n navAcrossContainers = false;\n }\n }\n } else {\n // no MRU node means we're likely in some initial condition when the trap has just\n // been activated and initial focus hasn't been given yet, in which case we should\n // fall through to trying to focus the initial focus node, which is what should\n // happen below at this point in the logic\n navAcrossContainers = false;\n }\n if (navAcrossContainers) {\n nextNode = findNextNavNode({\n // move FROM the MRU node, not event-related node (which will be the node that is\n // outside the trap causing the focus escape we're trying to fix)\n target: state.mostRecentlyFocusedNode,\n isBackward: config.isKeyBackward(state.recentNavEvent)\n });\n }\n if (nextNode) {\n _tryFocus(nextNode);\n } else {\n _tryFocus(state.mostRecentlyFocusedNode || getInitialFocusNode());\n }\n }\n state.recentNavEvent = undefined; // clear\n };\n\n // Hijack key nav events on the first and last focusable nodes of the trap,\n // in order to prevent focus from escaping. If it escapes for even a\n // moment it can end up scrolling the page and causing confusion so we\n // kind of need to capture the action at the keydown phase.\n var checkKeyNav = function checkKeyNav(event) {\n var isBackward = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n state.recentNavEvent = event;\n var destinationNode = findNextNavNode({\n event: event,\n isBackward: isBackward\n });\n if (destinationNode) {\n if (isTabEvent(event)) {\n // since tab natively moves focus, we wouldn't have a destination node unless we\n // were on the edge of a container and had to move to the next/previous edge, in\n // which case we want to prevent default to keep the browser from moving focus\n // to where it normally would\n event.preventDefault();\n }\n _tryFocus(destinationNode);\n }\n // else, let the browser take care of [shift+]tab and move the focus\n };\n var checkTabKey = function checkTabKey(event) {\n if (config.isKeyForward(event) || config.isKeyBackward(event)) {\n checkKeyNav(event, config.isKeyBackward(event));\n }\n };\n\n // we use a different event phase for the Escape key to allow canceling the event and checking for this in escapeDeactivates\n var checkEscapeKey = function checkEscapeKey(event) {\n if (isEscapeEvent(event) && valueOrHandler(config.escapeDeactivates, event) !== false) {\n event.preventDefault();\n trap.deactivate();\n }\n };\n var checkClick = function checkClick(e) {\n var target = getActualTarget(e);\n if (findContainerIndex(target, e) >= 0) {\n return;\n }\n if (valueOrHandler(config.clickOutsideDeactivates, e)) {\n return;\n }\n if (valueOrHandler(config.allowOutsideClick, e)) {\n return;\n }\n e.preventDefault();\n e.stopImmediatePropagation();\n };\n\n //\n // EVENT LISTENERS\n //\n\n /**\n * Adds listeners to the document necessary for trapping focus and attempts to set focus\n * to the configured initial focus node. Does nothing if the trap isn't active.\n * @returns {Promise<void> | undefined} A promise resolved once the initial focus node has\n * been focused when `delayInitialFocus=true`; `undefined` when focus is set synchronously\n * or the trap isn't active.\n */\n var addListeners = function addListeners() {\n if (!state.active) {\n return;\n }\n\n // There can be only one listening focus trap at a time\n activeFocusTraps.activateTrap(trapStack, trap);\n\n // Delay ensures that the focused element doesn't capture the event\n // that caused the focus trap activation.\n /** @type {Promise<void> | undefined} */\n var promise;\n if (config.delayInitialFocus) {\n // NOTE: Promise constructor callback is called synchronously, which is what we want\n // since we need to capture the timer ID immediately\n promise = new Promise(function (resolve) {\n state.delayInitialFocusTimer = delay(function () {\n _tryFocus(getInitialFocusNode());\n resolve();\n });\n });\n } else {\n _tryFocus(getInitialFocusNode());\n }\n doc.addEventListener('focusin', checkFocusIn, true);\n doc.addEventListener('mousedown', checkPointerDown, {\n capture: true,\n passive: false\n });\n doc.addEventListener('touchstart', checkPointerDown, {\n capture: true,\n passive: false\n });\n doc.addEventListener('click', checkClick, {\n capture: true,\n passive: false\n });\n doc.addEventListener('keydown', checkTabKey, {\n capture: true,\n passive: false\n });\n doc.addEventListener('keydown', checkEscapeKey);\n return promise;\n };\n\n /**\n * Traverses up the DOM from each of `containers`, collecting references to\n * the elements that are siblings to `container` or an ancestor of `container`.\n * @param {Array<HTMLElement>} containers\n */\n var collectAdjacentElements = function collectAdjacentElements(containers) {\n // Re-activate all adjacent elements & clear previous collection.\n if (state.active && !state.paused) {\n trap._setSubtreeIsolation(false);\n }\n state.adjacentElements.clear();\n state.alreadySilent.clear();\n\n // Collect all ancestors of all containers to avoid redundant processing.\n var containerAncestors = new Set();\n var adjacentElements = new Set();\n\n // Compile all elements adjacent to the focus trap containers & lineage.\n var _iterator = _createForOfIteratorHelper(containers),\n _step;\n try {\n for (_iterator.s(); !(_step = _iterator.n()).done;) {\n var container = _step.value;\n containerAncestors.add(container);\n var insideShadowRoot = typeof ShadowRoot !== 'undefined' && container.getRootNode() instanceof ShadowRoot;\n var current = container;\n while (current) {\n containerAncestors.add(current);\n var parent = current.parentElement;\n var siblings = [];\n if (parent) {\n siblings = parent.children;\n } else if (!parent && insideShadowRoot) {\n siblings = current.getRootNode().children;\n parent = current.getRootNode().host;\n insideShadowRoot = typeof ShadowRoot !== 'undefined' && parent.getRootNode() instanceof ShadowRoot;\n }\n\n // Add all the children, we'll remove container lineage later.\n var _iterator2 = _createForOfIteratorHelper(siblings),\n _step2;\n try {\n for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) {\n var child = _step2.value;\n adjacentElements.add(child);\n }\n } catch (err) {\n _iterator2.e(err);\n } finally {\n _iterator2.f();\n }\n current = parent;\n }\n }\n\n // Multi-container traps may overlap.\n // Remove elements within container lineages.\n } catch (err) {\n _iterator.e(err);\n } finally {\n _iterator.f();\n }\n containerAncestors.forEach(function (el) {\n adjacentElements[\"delete\"](el);\n });\n state.adjacentElements = adjacentElements;\n };\n var removeListeners = function removeListeners() {\n if (!state.active) {\n return;\n }\n doc.removeEventListener('focusin', checkFocusIn, true);\n doc.removeEventListener('mousedown', checkPointerDown, true);\n doc.removeEventListener('touchstart', checkPointerDown, true);\n doc.removeEventListener('click', checkClick, true);\n doc.removeEventListener('keydown', checkTabKey, true);\n doc.removeEventListener('keydown', checkEscapeKey);\n return trap;\n };\n\n //\n // MUTATION OBSERVER\n //\n\n var checkDomRemoval = function checkDomRemoval(mutations) {\n var focusedNode = state.mostRecentlyFocusedNode;\n if (!focusedNode) {\n return;\n }\n var isFocusedNodeRemoved = mutations.some(function (mutation) {\n var removedNodes = Array.from(mutation.removedNodes);\n return removedNodes.some(function (node) {\n return node === focusedNode || typeof node.contains === 'function' && node.contains(focusedNode);\n });\n });\n\n // If the currently focused node is removed then browsers will move focus to the\n // <body> element. If this happens, try to move focus back into the trap.\n if (isFocusedNodeRemoved && state.containers.some(function (container) {\n return container === null || container === void 0 ? void 0 : container.isConnected;\n })) {\n // Refresh tabbable state before resolving initial focus because\n // getInitialFocusNode() may fall back to the first tabbable node in the trap.\n updateTabbableNodes();\n var initialFocusNode = getInitialFocusNode();\n _tryFocus(initialFocusNode);\n }\n };\n\n // Use MutationObserver - if supported - to detect if focused node is removed\n // from the DOM.\n var mutationObserver = typeof window !== 'undefined' && 'MutationObserver' in window ? new MutationObserver(checkDomRemoval) : undefined;\n var updateObservedNodes = function updateObservedNodes() {\n if (!mutationObserver) {\n return;\n }\n mutationObserver.disconnect();\n if (state.active && !state.paused) {\n state.containers.map(function (container) {\n mutationObserver.observe(container, {\n subtree: true,\n childList: true\n });\n });\n }\n };\n\n //\n // TRAP DEFINITION\n //\n\n trap = {\n get active() {\n return state.active;\n },\n get paused() {\n return state.paused;\n },\n activate: function activate(activateOptions) {\n if (state.active) {\n return this;\n }\n var onActivate = getOption(activateOptions, 'onActivate');\n var onPostActivate = getOption(activateOptions, 'onPostActivate');\n var checkCanFocusTrap = getOption(activateOptions, 'checkCanFocusTrap');\n\n // If a currently-active trap is isolating its subtree, we need to remove\n // that isolation to allow the new trap to find tabbable nodes.\n var preexistingTrap = activeFocusTraps.getActiveTrap(trapStack);\n var revertState = false;\n if (preexistingTrap && !preexistingTrap.paused) {\n var _preexistingTrap$_set;\n // [#1729] method MAY not exist if using `trapStack` option to share stack with older\n // versions of Focus-trap in the same DOM so use optional chaining here just in case\n // since this is a trap we may not have created from this instance of the library\n (_preexistingTrap$_set = preexistingTrap._setSubtreeIsolation) === null || _preexistingTrap$_set === void 0 || _preexistingTrap$_set.call(preexistingTrap, false);\n revertState = true;\n }\n try {\n if (!checkCanFocusTrap) {\n updateTabbableNodes();\n }\n state.active = true;\n state.paused = false;\n state.nodeFocusedBeforeActivation = _getActiveElement(doc);\n onActivate === null || onActivate === void 0 || onActivate({\n trap: trap\n });\n var finishActivation = function finishActivation() {\n if (checkCanFocusTrap) {\n updateTabbableNodes();\n }\n var afterListeners = function afterListeners() {\n trap._setSubtreeIsolation(true);\n updateObservedNodes();\n onPostActivate === null || onPostActivate === void 0 || onPostActivate({\n trap: trap\n });\n };\n\n // NOTE: wait for initial focus node to get focused (whether activation is fully,\n // partially, or not asynchronous) before we potentially isolate the subtrees\n // with aria-hidden while focus is still in some other subtree and not yet in\n // the trap, resulting in some browsers (e.g. Chrome) logging to the console that\n // they, \"Blocked aria-hidden on an element because its descendant retained focus...\"\n var listenersPromise = addListeners();\n if (listenersPromise) {\n listenersPromise.then(afterListeners);\n } else {\n afterListeners();\n }\n };\n if (checkCanFocusTrap) {\n checkCanFocusTrap(state.containers.concat()).then(finishActivation, finishActivation);\n return this;\n }\n finishActivation();\n } catch (error) {\n // If our activation throws an exception and the stack hasn't changed,\n // we need to re-enable the prior trap's subtree isolation.\n if (preexistingTrap === activeFocusTraps.getActiveTrap(trapStack) && revertState) {\n var _preexistingTrap$_set2;\n // [#1729] method MAY not exist if using `trapStack` option to share stack with older\n // versions of Focus-trap in the same DOM so use optional chaining here just in case\n // since this is a trap we may not have created from this instance of the library\n (_preexistingTrap$_set2 = preexistingTrap._setSubtreeIsolation) === null || _preexistingTrap$_set2 === void 0 || _preexistingTrap$_set2.call(preexistingTrap, true);\n }\n throw error;\n }\n return this;\n },\n deactivate: function deactivate(deactivateOptions) {\n if (!state.active) {\n return this;\n }\n var options = _objectSpread2({\n onDeactivate: config.onDeactivate,\n onPostDeactivate: config.onPostDeactivate,\n checkCanReturnFocus: config.checkCanReturnFocus\n }, deactivateOptions);\n clearTimeout(state.delayInitialFocusTimer); // noop if undefined\n state.delayInitialFocusTimer = undefined;\n\n // Prior to removing this trap from the trapStack, we need to remove any applications of `inert`.\n // This allows the next trap down to update its tabbable nodes properly.\n //\n // If this trap is not top of the stack, don't change any current isolation.\n if (!state.paused) {\n trap._setSubtreeIsolation(false);\n }\n state.alreadySilent.clear();\n removeListeners();\n state.active = false;\n state.paused = false;\n updateObservedNodes();\n activeFocusTraps.deactivateTrap(trapStack, trap);\n var onDeactivate = getOption(options, 'onDeactivate');\n var onPostDeactivate = getOption(options, 'onPostDeactivate');\n var checkCanReturnFocus = getOption(options, 'checkCanReturnFocus');\n var delayReturnFocus = getOption(options, 'delayReturnFocus');\n var returnFocus = getOption(options, 'returnFocus', 'returnFocusOnDeactivate');\n onDeactivate === null || onDeactivate === void 0 || onDeactivate({\n trap: trap\n });\n var completeDeactivation = function completeDeactivation() {\n if (returnFocus) {\n _tryFocus(getReturnFocusNode(state.nodeFocusedBeforeActivation));\n }\n onPostDeactivate === null || onPostDeactivate === void 0 || onPostDeactivate({\n trap: trap\n });\n };\n var finishDeactivation = function finishDeactivation() {\n if (delayReturnFocus && returnFocus) {\n delay(completeDeactivation);\n } else {\n completeDeactivation();\n }\n };\n if (returnFocus && checkCanReturnFocus) {\n checkCanReturnFocus(getReturnFocusNode(state.nodeFocusedBeforeActivation)).then(finishDeactivation, finishDeactivation);\n return this;\n }\n finishDeactivation();\n return this;\n },\n pause: function pause(pauseOptions) {\n if (!state.active) {\n return this;\n }\n state.manuallyPaused = true;\n return this._setPausedState(true, pauseOptions);\n },\n unpause: function unpause(unpauseOptions) {\n if (!state.active) {\n return this;\n }\n state.manuallyPaused = false;\n if (trapStack[trapStack.length - 1] !== this) {\n return this;\n }\n return this._setPausedState(false, unpauseOptions);\n },\n updateContainerElements: function updateContainerElements(containerElements) {\n var elementsAsArray = [].concat(containerElements).filter(Boolean);\n state.containers = elementsAsArray.map(function (element) {\n return typeof element === 'string' ? doc.querySelector(element) : element;\n });\n if (config.isolateSubtrees) {\n collectAdjacentElements(state.containers);\n }\n if (state.active) {\n updateTabbableNodes();\n if (!state.paused) {\n trap._setSubtreeIsolation(true);\n }\n }\n updateObservedNodes();\n return this;\n }\n };\n Object.defineProperties(trap, {\n _isManuallyPaused: {\n value: function value() {\n return state.manuallyPaused;\n }\n },\n _setPausedState: {\n value: function value(paused, options) {\n if (state.paused === paused) {\n return this;\n }\n state.paused = paused;\n if (paused) {\n var onPause = getOption(options, 'onPause');\n var onPostPause = getOption(options, 'onPostPause');\n onPause === null || onPause === void 0 || onPause({\n trap: trap\n });\n removeListeners();\n trap._setSubtreeIsolation(false);\n updateObservedNodes();\n onPostPause === null || onPostPause === void 0 || onPostPause({\n trap: trap\n });\n } else {\n var onUnpause = getOption(options, 'onUnpause');\n var onPostUnpause = getOption(options, 'onPostUnpause');\n onUnpause === null || onUnpause === void 0 || onUnpause({\n trap: trap\n });\n var finishUnpause = function finishUnpause() {\n updateTabbableNodes();\n var afterListeners = function afterListeners() {\n trap._setSubtreeIsolation(true);\n updateObservedNodes();\n onPostUnpause === null || onPostUnpause === void 0 || onPostUnpause({\n trap: trap\n });\n };\n\n // NOTE: wait for initial focus node to get focused (whether activation is fully,\n // partially, or not asynchronous) before we potentially isolate the subtrees\n // with aria-hidden while focus is still in some other subtree and not yet in\n // the trap, resulting in some browsers (e.g. Chrome) logging to the console that\n // they, \"Blocked aria-hidden on an element because its descendant retained focus...\"\n var listenersPromise = addListeners();\n if (listenersPromise) {\n listenersPromise.then(afterListeners);\n } else {\n afterListeners();\n }\n };\n finishUnpause();\n }\n return this;\n }\n },\n _setSubtreeIsolation: {\n value: function value(isEnabled) {\n if (config.isolateSubtrees) {\n state.adjacentElements.forEach(function (el) {\n var _el$getAttribute;\n if (isEnabled) {\n switch (config.isolateSubtrees) {\n case 'aria-hidden':\n // check both attribute and property to ensure initial state is captured\n // correctly across different browsers and test environments (like JSDOM)\n if (el.ariaHidden === 'true' || ((_el$getAttribute = el.getAttribute('aria-hidden')) === null || _el$getAttribute === void 0 ? void 0 : _el$getAttribute.toLowerCase()) === 'true') {\n state.alreadySilent.add(el);\n }\n el.setAttribute('aria-hidden', 'true');\n break;\n default:\n // check both attribute and property to ensure initial state is captured\n // correctly across different browsers and test environments (like JSDOM)\n if (el.inert || el.hasAttribute('inert')) {\n state.alreadySilent.add(el);\n }\n el.setAttribute('inert', true);\n break;\n }\n } else {\n if (state.alreadySilent.has(el)) ; else {\n switch (config.isolateSubtrees) {\n case 'aria-hidden':\n el.removeAttribute('aria-hidden');\n break;\n default:\n el.removeAttribute('inert');\n break;\n }\n }\n }\n });\n }\n }\n }\n });\n\n // initialize container elements\n trap.updateContainerElements(elements);\n return trap;\n};\n\nexport { createFocusTrap };\n//# sourceMappingURL=focus-trap.esm.js.map\n","import '../assets/NcPopover-CAoHhjKa.css';\nimport { options, Dropdown } from \"floating-vue\";\nimport { createFocusTrap } from \"focus-trap\";\nimport { defineComponent, warn, resolveComponent, openBlock, createBlock, withCtx, createVNode, renderSlot, normalizeProps, guardReactiveProps } from \"vue\";\nimport { g as getTrapStack } from \"./focusTrap-HJQ4pqHV.mjs\";\nimport { l as logger } from \"./logger-D3RVzcfQ.mjs\";\nimport { i as isRtl } from \"./rtl-v0UOPAM7.mjs\";\nimport { _ as _export_sfc } from \"./_plugin-vue_export-helper-1tPrXgE0.mjs\";\nconst _sfc_main$1 = defineComponent({\n name: \"NcPopoverTriggerProvider\",\n provide() {\n return {\n \"NcPopover:trigger:shown\": () => this.shown,\n \"NcPopover:trigger:attrs\": () => this.triggerAttrs\n };\n },\n props: {\n /**\n * Is the popover currently shown\n */\n shown: {\n type: Boolean,\n required: true\n },\n /**\n * ARIA Role of the popup\n */\n popupRole: {\n type: String,\n default: void 0\n }\n },\n computed: {\n triggerAttrs() {\n return {\n \"aria-haspopup\": this.popupRole,\n \"aria-expanded\": this.shown.toString()\n };\n }\n },\n render() {\n return this.$slots.default?.({\n attrs: this.triggerAttrs\n });\n }\n});\nconst ncPopover = \"_ncPopover_zfWgY\";\nconst style0 = {\n \"material-design-icon\": \"_material-design-icon_bkeq-\",\n ncPopover\n};\nconst theme = \"nc-popover-9\";\noptions.themes[theme] = structuredClone(options.themes.dropdown);\nconst _sfc_main = {\n name: \"NcPopover\",\n components: {\n Dropdown,\n NcPopoverTriggerProvider: _sfc_main$1\n },\n props: {\n /**\n * Element to use for calculating the popper boundary (size and position).\n * Either a query string or the actual HTMLElement.\n */\n boundary: {\n type: [String, Object],\n default: \"\"\n },\n /**\n * Automatically hide the popover on click outside.\n *\n * @deprecated Use `no-close-on-click-outside` instead (inverted value)\n */\n closeOnClickOutside: {\n type: Boolean,\n // eslint-disable-next-line vue/no-boolean-default\n default: true\n },\n /**\n * Disable the automatic popover hide on click outside.\n */\n noCloseOnClickOutside: {\n type: Boolean,\n default: false\n },\n /**\n * Container where to mount the popover.\n * Either a select query or `false` to mount to the parent node.\n */\n container: {\n type: [Boolean, String],\n default: \"body\"\n },\n /**\n * Delay for showing or hiding the popover.\n *\n * Can either be a number or an object to configure different delays (`{ show: number, hide: number }`).\n */\n delay: {\n type: [Number, Object],\n default: 0\n },\n /**\n * Disable the popover focus trap.\n */\n noFocusTrap: {\n type: Boolean,\n default: false\n },\n /**\n * Where to place the popover.\n *\n * This consists of the vertical placement and the horizontal placement.\n * E.g. `bottom` will place the popover on the bottom of the trigger (horizontally centered),\n * while `buttom-start` will horizontally align the popover on the logical start (e.g. for LTR layout on the left.).\n * The `start` or `end` placement will align the popover on the left or right side or the trigger element.\n *\n * @type {'auto'|'auto-start'|'auto-end'|'top'|'top-start'|'top-end'|'bottom'|'bottom-start'|'bottom-end'|'start'|'end'}\n */\n placement: {\n type: String,\n default: \"bottom\"\n },\n /**\n * Class to be applied to the popover base\n */\n popoverBaseClass: {\n type: String,\n default: \"\"\n },\n /**\n * Events that trigger the popover on the popover container itself.\n * This is useful if you set `triggers` to `hover` and also want the popover to stay open while hovering the popover itself.\n *\n * It is possible to also pass an object to define different triggers for hide and show `{ show: ['hover'], hide: ['click'] }`.\n */\n popoverTriggers: {\n type: [Array, Object],\n default: null\n },\n /**\n * Popup role\n *\n * @see https://developer.mozilla.org/en-US/docs/Web/Accessibility/ARIA/Attributes/aria-haspopup#values\n */\n popupRole: {\n type: String,\n default: void 0,\n validator: (value) => [\"menu\", \"listbox\", \"tree\", \"grid\", \"dialog\", \"true\"].includes(value)\n },\n /**\n * Set element to return focus to after focus trap deactivation\n *\n * @type {SetReturnFocus}\n */\n setReturnFocus: {\n default: void 0,\n type: [Boolean, HTMLElement, SVGElement, String, Function]\n },\n /**\n * Show or hide the popper\n */\n shown: {\n type: Boolean,\n default: false\n },\n /**\n * Events that trigger the popover.\n *\n * If you pass an empty array then only the `shown` prop can control the popover state.\n * Following events are available:\n * - `'hover'`\n * - `'click'`\n * - `'focus'`\n * - `'touch'`\n *\n * It is also possible to pass an object to have different events for show and hide:\n * `{ hide: ['click'], show: ['click', 'hover'] }`\n */\n triggers: {\n type: [Array, Object],\n default: () => [\"click\"]\n }\n },\n emits: [\n \"afterShow\",\n \"afterHide\",\n \"update:shown\"\n ],\n setup() {\n return {\n theme\n };\n },\n data() {\n return {\n internalShown: this.shown\n };\n },\n computed: {\n popperTriggers() {\n if (this.popoverTriggers && Array.isArray(this.popoverTriggers)) {\n return this.popoverTriggers;\n }\n return void 0;\n },\n popperHideTriggers() {\n if (this.popoverTriggers && typeof this.popoverTriggers === \"object\") {\n return this.popoverTriggers.hide;\n }\n return void 0;\n },\n popperShowTriggers() {\n if (this.popoverTriggers && typeof this.popoverTriggers === \"object\") {\n return this.popoverTriggers.show;\n }\n return void 0;\n },\n internalTriggers() {\n if (this.triggers && Array.isArray(this.triggers)) {\n return this.triggers;\n }\n return void 0;\n },\n hideTriggers() {\n if (this.triggers && typeof this.triggers === \"object\") {\n return this.triggers.hide;\n }\n return void 0;\n },\n showTriggers() {\n if (this.triggers && typeof this.triggers === \"object\") {\n return this.triggers.show;\n }\n return void 0;\n },\n internalPlacement() {\n if (this.placement === \"start\") {\n return isRtl ? \"right\" : \"left\";\n } else if (this.placement === \"end\") {\n return isRtl ? \"left\" : \"right\";\n }\n return this.placement;\n }\n },\n watch: {\n shown(value) {\n this.internalShown = value;\n },\n internalShown(value) {\n this.$emit(\"update:shown\", value);\n }\n },\n mounted() {\n this.checkTriggerA11y();\n },\n beforeUnmount() {\n this.clearFocusTrap();\n this.clearEscapeStopPropagation();\n },\n methods: {\n /**\n * Check if the trigger has all required a11y attributes.\n * Important to check custom trigger button.\n */\n checkTriggerA11y() {\n if (window.OC?.debug) {\n const triggerContainer = this.getPopoverTriggerContainerElement();\n const requiredTriggerButton = triggerContainer.querySelector(\"[aria-expanded]\");\n if (!requiredTriggerButton) {\n warn(\"It looks like you are using a custom button as a <NcPopover> or other popover #trigger. If you are not using <NcButton> as a trigger, you need to bind attrs from the #trigger slot props to your custom button. See <NcPopover> docs for an example.\");\n }\n }\n },\n /**\n * Remove incorrect aria-describedby attribute from the trigger.\n *\n * @see https://github.com/Akryum/floating-vue/blob/8d4f7125aae0e3ea00ba4093d6d2001ab15058f1/packages/floating-vue/src/components/Popper.ts#L734\n */\n removeFloatingVueAriaDescribedBy() {\n const triggerContainer = this.getPopoverTriggerContainerElement();\n const triggerElements = triggerContainer.querySelectorAll(\"[data-popper-shown]\");\n for (const el of triggerElements) {\n el.removeAttribute(\"aria-describedby\");\n }\n },\n /**\n * @return {HTMLElement|undefined}\n */\n getPopoverContentElement() {\n return this.$refs.popover?.$refs.popperContent?.$el;\n },\n /**\n * @return {HTMLElement|undefined}\n */\n getPopoverTriggerContainerElement() {\n return this.$refs.popover?.$refs.popper?.$refs.reference;\n },\n /**\n * Add focus trap for accessibility.\n */\n async useFocusTrap() {\n await this.$nextTick();\n if (this.noFocusTrap) {\n return;\n }\n const el = this.getPopoverContentElement();\n el.tabIndex = -1;\n if (!el) {\n return;\n }\n this.$focusTrap = createFocusTrap(el, {\n // Prevents to lose focus using esc key\n // Focus will be release when popover be hide\n escapeDeactivates: false,\n allowOutsideClick: true,\n setReturnFocus: this.setReturnFocus,\n trapStack: getTrapStack(),\n fallBackFocus: el\n });\n this.$focusTrap.activate();\n },\n /**\n * Remove focus trap\n *\n * @param {object} options The configuration options for focusTrap\n */\n clearFocusTrap(options2 = {}) {\n try {\n this.$focusTrap?.deactivate(options2);\n this.$focusTrap = null;\n } catch (error) {\n logger.warn(\"[NcPopover] Failed to clear focus trap\", { error });\n }\n },\n /**\n * Add stopPropagation for Escape.\n * It prevents global Escape handling after closing popover.\n *\n * Manual event handling is used here instead of v-on because there is no direct access to the node.\n * Alternative - wrap <template #popover> in a div wrapper.\n */\n addEscapeStopPropagation() {\n const el = this.getPopoverContentElement();\n el?.addEventListener(\"keydown\", this.stopKeydownEscapeHandler);\n },\n /**\n * Remove stop Escape handler\n */\n clearEscapeStopPropagation() {\n const el = this.getPopoverContentElement();\n el?.removeEventListener(\"keydown\", this.stopKeydownEscapeHandler);\n },\n /**\n * @param {KeyboardEvent} event - native keydown event\n */\n stopKeydownEscapeHandler(event) {\n if (event.type === \"keydown\" && event.key === \"Escape\") {\n event.stopPropagation();\n }\n },\n async afterShow() {\n this.getPopoverContentElement().addEventListener(\"transitionend\", () => {\n this.$emit(\"afterShow\");\n }, { once: true, passive: true });\n this.removeFloatingVueAriaDescribedBy();\n await this.$nextTick();\n await this.useFocusTrap();\n this.addEscapeStopPropagation();\n },\n afterHide() {\n this.getPopoverContentElement()?.addEventListener(\"transitionend\", () => {\n this.$emit(\"afterHide\");\n }, { once: true, passive: true });\n this.clearFocusTrap();\n this.clearEscapeStopPropagation();\n }\n }\n};\nfunction _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {\n const _component_NcPopoverTriggerProvider = resolveComponent(\"NcPopoverTriggerProvider\");\n const _component_Dropdown = resolveComponent(\"Dropdown\");\n return openBlock(), createBlock(_component_Dropdown, {\n ref: \"popover\",\n shown: $data.internalShown,\n \"onUpdate:shown\": [\n _cache[0] || (_cache[0] = ($event) => $data.internalShown = $event),\n _cache[1] || (_cache[1] = ($event) => $data.internalShown = $event)\n ],\n arrowPadding: 10,\n autoHide: !$props.noCloseOnClickOutside && $props.closeOnClickOutside,\n boundary: $props.boundary || void 0,\n container: $props.container,\n delay: $props.delay,\n distance: 10,\n handleResize: \"\",\n noAutoFocus: true,\n placement: $options.internalPlacement,\n popperClass: [_ctx.$style.ncPopover, $props.popoverBaseClass],\n popperTriggers: $options.popperTriggers,\n popperHideTriggers: $options.popperHideTriggers,\n popperShowTriggers: $options.popperShowTriggers,\n theme: $setup.theme,\n triggers: $options.internalTriggers,\n hideTriggers: $options.hideTriggers,\n showTriggers: $options.showTriggers,\n onApplyShow: $options.afterShow,\n onApplyHide: $options.afterHide\n }, {\n popper: withCtx((slotProps) => [\n renderSlot(_ctx.$slots, \"default\", normalizeProps(guardReactiveProps(slotProps)))\n ]),\n default: withCtx(() => [\n createVNode(_component_NcPopoverTriggerProvider, {\n shown: $data.internalShown,\n popupRole: $props.popupRole\n }, {\n default: withCtx((slotProps) => [\n renderSlot(_ctx.$slots, \"trigger\", normalizeProps(guardReactiveProps(slotProps)))\n ]),\n _: 3\n }, 8, [\"shown\", \"popupRole\"])\n ]),\n _: 3\n }, 8, [\"shown\", \"autoHide\", \"boundary\", \"container\", \"delay\", \"placement\", \"popperClass\", \"popperTriggers\", \"popperHideTriggers\", \"popperShowTriggers\", \"theme\", \"triggers\", \"hideTriggers\", \"showTriggers\", \"onApplyShow\", \"onApplyHide\"]);\n}\nconst cssModules = {\n \"$style\": style0\n};\nconst NcPopover = /* @__PURE__ */ _export_sfc(_sfc_main, [[\"render\", _sfc_render], [\"__cssModules\", cssModules]]);\nexport {\n NcPopover as N\n};\n//# sourceMappingURL=NcPopover-B87bEPLq.mjs.map\n","import '../assets/NcActions-y7ehwPSp.css';\nimport { openBlock, createElementBlock, mergeProps, createElementVNode, toDisplayString, createCommentVNode, Comment, Fragment, Text, warn, h, computed } from \"vue\";\nimport { _ as _export_sfc } from \"./_plugin-vue_export-helper-1tPrXgE0.mjs\";\nimport { u as useTrapStackControl } from \"./useTrapStackControl-B6cEicto.mjs\";\nimport { r as register, F as t4, a as t } from \"./_l10n-wdIzZwir.mjs\";\nimport { c as createElementId } from \"./createElementId-DhjFt1I9.mjs\";\nimport { N as NcButton } from \"./NcButton-jvoYS2my.mjs\";\nimport { N as NcPopover } from \"./NcPopover-B87bEPLq.mjs\";\nimport { N as NC_ACTIONS_CLOSE_MENU, a as NC_ACTIONS_IS_SEMANTIC_MENU } from \"./useNcActions-BzPO2c4h.mjs\";\nconst _sfc_main$1 = {\n name: \"DotsHorizontalIcon\",\n emits: [\"click\"],\n props: {\n title: {\n type: String\n },\n fillColor: {\n type: String,\n default: \"currentColor\"\n },\n size: {\n type: Number,\n default: 24\n }\n }\n};\nconst _hoisted_1 = [\"aria-hidden\", \"aria-label\"];\nconst _hoisted_2 = [\"fill\", \"width\", \"height\"];\nconst _hoisted_3 = { d: \"M16,12A2,2 0 0,1 18,10A2,2 0 0,1 20,12A2,2 0 0,1 18,14A2,2 0 0,1 16,12M10,12A2,2 0 0,1 12,10A2,2 0 0,1 14,12A2,2 0 0,1 12,14A2,2 0 0,1 10,12M4,12A2,2 0 0,1 6,10A2,2 0 0,1 8,12A2,2 0 0,1 6,14A2,2 0 0,1 4,12Z\" };\nconst _hoisted_4 = { key: 0 };\nfunction _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {\n return openBlock(), createElementBlock(\"span\", mergeProps(_ctx.$attrs, {\n \"aria-hidden\": $props.title ? null : \"true\",\n \"aria-label\": $props.title,\n class: \"material-design-icon dots-horizontal-icon\",\n role: \"img\",\n onClick: _cache[0] || (_cache[0] = ($event) => _ctx.$emit(\"click\", $event))\n }), [\n (openBlock(), createElementBlock(\"svg\", {\n fill: $props.fillColor,\n class: \"material-design-icon__svg\",\n width: $props.size,\n height: $props.size,\n viewBox: \"0 0 24 24\"\n }, [\n createElementVNode(\"path\", _hoisted_3, [\n $props.title ? (openBlock(), createElementBlock(\"title\", _hoisted_4, toDisplayString($props.title), 1)) : createCommentVNode(\"\", true)\n ])\n ], 8, _hoisted_2))\n ], 16, _hoisted_1);\n}\nconst IconDotsHorizontal = /* @__PURE__ */ _export_sfc(_sfc_main$1, [[\"render\", _sfc_render]]);\nregister(t4);\nfunction isSlotPopulated(vnodes) {\n return Array.isArray(vnodes) && vnodes.some((node) => {\n if (node === null) {\n return false;\n } else if (typeof node === \"object\") {\n const vnode = node;\n if (vnode.type === Comment) {\n return false;\n } else if (vnode.type === Fragment && !isSlotPopulated(vnode.children)) {\n return false;\n } else if (vnode.type === Text && !vnode.children.trim()) {\n return false;\n }\n }\n return true;\n });\n}\nconst focusableSelector = \".focusable\";\nconst _sfc_main = {\n name: \"NcActions\",\n components: {\n NcButton,\n NcPopover\n },\n provide() {\n return {\n /**\n * NcActions can be used as:\n * - Application menu (has menu role)\n * - Navigation (has no specific role, should be used an element with navigation role)\n * - Popover with plain text or text inputs (has no specific role)\n * Depending on the usage (used items), the menu and its items should have different roles for a11y.\n * Provide the role for NcAction* components in the NcActions content.\n *\n * @type {import('vue').ComputedRef<boolean>}\n */\n [NC_ACTIONS_IS_SEMANTIC_MENU]: computed(() => this.actionsMenuSemanticType === \"menu\"),\n [NC_ACTIONS_CLOSE_MENU]: this.closeMenu\n };\n },\n props: {\n /**\n * Specify the open state of the popover menu\n */\n open: {\n type: Boolean,\n default: false\n },\n /**\n * This disables the internal open management,\n * so the actions menu only respects the `open` prop.\n * This is e.g. necessary for the NcAvatar component\n * to only open the actions menu after loading it's entries has finished.\n */\n manualOpen: {\n type: Boolean,\n default: false\n },\n /**\n * Force the actions to display in a three dot menu\n */\n forceMenu: {\n type: Boolean,\n default: false\n },\n /**\n * Force the name to show for single actions\n */\n forceName: {\n type: Boolean,\n default: false\n },\n /**\n * Specify the menu name\n */\n menuName: {\n type: String,\n default: null\n },\n /**\n * Apply primary styling for this menu\n */\n primary: {\n type: Boolean,\n default: false\n },\n /**\n * Icon to show for the toggle menu button\n * when more than one action is inside the actions component.\n * Only replace the default three-dot icon if really necessary.\n */\n defaultIcon: {\n type: String,\n default: \"\"\n },\n /**\n * Aria label for the actions menu.\n *\n * If `menuName` is defined this will not be used to prevent\n * any accessible name conflicts. This ensures that the\n * element can be activated via voice input.\n */\n ariaLabel: {\n type: String,\n default: t(\"Actions\")\n },\n /**\n * Wanted direction of the menu\n */\n placement: {\n type: String,\n default: \"bottom\"\n },\n /**\n * DOM element for the actions' popover boundaries\n */\n boundariesElement: {\n type: Element,\n default: () => document.getElementById(\"content-vue\") ?? document.querySelector(\"body\")\n },\n /**\n * Selector for the actions' popover container\n */\n container: {\n type: [Boolean, String, Object, Element],\n default: \"body\"\n },\n /**\n * Disabled state of the main button (single action or menu toggle)\n */\n disabled: {\n type: Boolean,\n default: false\n },\n /**\n * Display x items inline out of the dropdown menu\n * Will be ignored if `forceMenu` is set\n */\n inline: {\n type: Number,\n default: 0\n },\n /**\n * Specifies the button variant used for trigger and single actions buttons.\n *\n * If left empty, the default button style will be applied.\n *\n * @since 8.23.0\n */\n variant: {\n type: String,\n validator(value) {\n return [\"primary\", \"secondary\", \"tertiary\", \"tertiary-no-background\", \"tertiary-on-primary\", \"error\", \"warning\", \"success\"].includes(value);\n },\n default: null\n },\n /**\n * Specifies whether the button should span all the available width.\n */\n wide: {\n type: Boolean,\n default: false\n },\n /**\n * Specify the size used for trigger and single actions buttons.\n *\n * If left empty, the default button size will be applied.\n */\n size: {\n type: String,\n default: \"normal\",\n validator(value) {\n return [\"small\", \"normal\", \"large\"].includes(value);\n }\n }\n },\n emits: [\n \"click\",\n \"blur\",\n \"focus\",\n \"close\",\n \"closed\",\n \"open\",\n \"opened\",\n \"update:open\"\n ],\n setup() {\n const randomId = createElementId();\n return {\n randomId\n };\n },\n data() {\n return {\n opened: this.open,\n focusIndex: 0,\n /**\n * @type {'menu'|'navigation'|'dialog'|'tooltip'|'unknown'}\n */\n actionsMenuSemanticType: \"unknown\"\n };\n },\n computed: {\n triggerButtonVariant() {\n return this.variant || (this.primary ? \"primary\" : this.menuName ? \"secondary\" : \"tertiary\");\n },\n /**\n * A11y roles and keyboard navigation configuration depending on the semantic type\n */\n config() {\n const configs = {\n menu: {\n popupRole: \"menu\",\n withArrowNavigation: true,\n withTabNavigation: false,\n withFocusTrap: false\n },\n navigation: {\n popupRole: void 0,\n withArrowNavigation: false,\n withTabNavigation: true,\n withFocusTrap: false\n },\n dialog: {\n popupRole: \"dialog\",\n withArrowNavigation: false,\n withTabNavigation: true,\n withFocusTrap: true\n },\n tooltip: {\n popupRole: void 0,\n withArrowNavigation: false,\n withTabNavigation: false,\n withFocusTrap: false\n },\n // Due to Vue limitations, we sometimes cannot determine the true type\n // As a fallback use both arrow navigation and focus trap\n unknown: {\n popupRole: void 0,\n role: void 0,\n withArrowNavigation: true,\n withTabNavigation: false,\n withFocusTrap: true\n }\n };\n return configs[this.actionsMenuSemanticType];\n },\n withFocusTrap() {\n return this.config.withFocusTrap;\n }\n },\n watch: {\n // Watch parent prop\n open(state) {\n if (state === this.opened) {\n return;\n }\n this.opened = state;\n },\n opened() {\n if (this.opened) {\n document.body.addEventListener(\"keydown\", this.handleEscapePressed);\n } else {\n document.body.removeEventListener(\"keydown\", this.handleEscapePressed);\n }\n }\n },\n created() {\n useTrapStackControl(() => this.opened, {\n disabled: () => this.config.withFocusTrap\n });\n if (\"ariaHidden\" in this.$attrs) {\n warn(\"[NcActions]: Do not set the ariaHidden attribute as the root element will inherit the incorrect aria-hidden.\");\n }\n },\n methods: {\n /**\n * Get the name of the action component\n *\n * @param {import('vue').VNode} action - a vnode with a NcAction* component instance\n * @return {string} the name of the action component\n */\n getActionName(action) {\n return action?.type?.name;\n },\n /**\n * Do we have exactly one Action and\n * is it allowed as a standalone element?\n *\n * @param {import('vue').VNode} action The action to check\n * @return {boolean}\n */\n isValidSingleAction(action) {\n return [\"NcActionButton\", \"NcActionLink\", \"NcActionRouter\"].includes(this.getActionName(action));\n },\n isAction(action) {\n return this.getActionName(action)?.startsWith?.(\"NcAction\");\n },\n /**\n * Check whether a icon prop value is an URL or not\n *\n * @param {string} url The icon prop value\n */\n isIconUrl(url) {\n try {\n return !!new URL(url, url.startsWith(\"/\") ? window.location.origin : void 0);\n } catch {\n return false;\n }\n },\n // MENU STATE MANAGEMENT\n toggleMenu(state) {\n if (state) {\n this.openMenu();\n } else {\n this.closeMenu();\n }\n },\n openMenu() {\n if (this.opened) {\n return;\n }\n this.opened = true;\n this.$emit(\"update:open\", true);\n this.$emit(\"open\");\n },\n async closeMenu(returnFocus = true) {\n if (!this.opened) {\n return;\n }\n await this.$nextTick();\n this.opened = false;\n this.$refs.popover?.clearFocusTrap({ returnFocus });\n this.$emit(\"update:open\", false);\n this.$emit(\"close\");\n this.focusIndex = 0;\n if (returnFocus) {\n this.$refs.triggerButton?.$el.focus();\n }\n },\n /**\n * Called when popover is shown after the show delay\n */\n onOpened() {\n this.$nextTick(() => {\n this.focusFirstAction(null);\n this.$emit(\"opened\");\n });\n },\n onClosed() {\n this.$emit(\"closed\");\n },\n // MENU KEYS & FOCUS MANAGEMENT\n /**\n * @return {HTMLElement|null}\n */\n getCurrentActiveMenuItemElement() {\n return this.$refs.menu.querySelector(\"li.active\");\n },\n /**\n * @return {NodeList<HTMLElement>}\n */\n getFocusableMenuItemElements() {\n return this.$refs.menu.querySelectorAll(focusableSelector);\n },\n /**\n * Dispatches the keydown listener to different handlers\n *\n * @param {object} event The keydown event\n */\n onKeydown(event) {\n if (event.key === \"Tab\") {\n if (this.config.withFocusTrap) {\n return;\n }\n if (!this.config.withTabNavigation) {\n this.closeMenu(true);\n return;\n }\n event.preventDefault();\n const focusList = this.getFocusableMenuItemElements();\n const focusIndex = [...focusList].indexOf(document.activeElement);\n if (focusIndex === -1) {\n return;\n }\n const newFocusIndex = event.shiftKey ? focusIndex - 1 : focusIndex + 1;\n if (newFocusIndex < 0 || newFocusIndex === focusList.length) {\n this.closeMenu(true);\n }\n this.focusIndex = newFocusIndex;\n this.focusAction();\n return;\n }\n if (this.config.withArrowNavigation) {\n if (event.key === \"ArrowUp\") {\n this.focusPreviousAction(event);\n }\n if (event.key === \"ArrowDown\") {\n this.focusNextAction(event);\n }\n if (event.key === \"PageUp\") {\n this.focusFirstAction(event);\n }\n if (event.key === \"PageDown\") {\n this.focusLastAction(event);\n }\n }\n this.handleEscapePressed(event);\n },\n onTriggerKeydown(event) {\n if (event.key === \"Escape\") {\n if (this.actionsMenuSemanticType === \"tooltip\") {\n this.closeMenu();\n }\n }\n },\n handleEscapePressed(event) {\n if (event.key === \"Escape\") {\n this.closeMenu();\n event.preventDefault();\n }\n },\n removeCurrentActive() {\n const currentActiveElement = this.$refs.menu.querySelector(\"li.active\");\n if (currentActiveElement) {\n currentActiveElement.classList.remove(\"active\");\n }\n },\n focusAction() {\n const focusElement = this.getFocusableMenuItemElements()[this.focusIndex];\n if (focusElement) {\n this.removeCurrentActive();\n const liMenuParent = focusElement.closest(\"li.action\");\n focusElement.focus();\n if (liMenuParent) {\n liMenuParent.classList.add(\"active\");\n }\n }\n },\n focusPreviousAction(event) {\n if (this.opened) {\n if (this.focusIndex === 0) {\n this.focusLastAction(event);\n } else {\n this.preventIfEvent(event);\n this.focusIndex = this.focusIndex - 1;\n }\n this.focusAction();\n }\n },\n focusNextAction(event) {\n if (this.opened) {\n const indexLength = this.getFocusableMenuItemElements().length - 1;\n if (this.focusIndex === indexLength) {\n this.focusFirstAction(event);\n } else {\n this.preventIfEvent(event);\n this.focusIndex = this.focusIndex + 1;\n }\n this.focusAction();\n }\n },\n focusFirstAction(event) {\n if (this.opened) {\n this.preventIfEvent(event);\n const firstCheckedIndex = [...this.getFocusableMenuItemElements()].findIndex((button) => {\n return button.getAttribute(\"aria-checked\") === \"true\" && button.getAttribute(\"role\") === \"menuitemradio\";\n });\n this.focusIndex = firstCheckedIndex > -1 ? firstCheckedIndex : 0;\n this.focusAction();\n }\n },\n focusLastAction(event) {\n if (this.opened) {\n this.preventIfEvent(event);\n this.focusIndex = this.getFocusableMenuItemElements().length - 1;\n this.focusAction();\n }\n },\n preventIfEvent(event) {\n if (event) {\n event.preventDefault();\n event.stopPropagation();\n }\n },\n onFocus(event) {\n this.$emit(\"focus\", event);\n },\n onBlur(event) {\n this.$emit(\"blur\", event);\n if (this.actionsMenuSemanticType === \"tooltip\") {\n if (this.$refs.menu && this.getFocusableMenuItemElements().length === 0) {\n this.closeMenu(false);\n }\n }\n },\n onClick(event) {\n this.$emit(\"click\", event);\n }\n },\n /**\n * The render function to display the component\n *\n * @return {object|undefined} The created VNode\n */\n render() {\n const actions = [];\n const findActions = (vnodes, actions2) => {\n vnodes.forEach((vnode) => {\n if (this.isAction(vnode)) {\n actions2.push(vnode);\n return;\n }\n if (vnode.type === Fragment) {\n findActions(vnode.children, actions2);\n }\n });\n };\n findActions(this.$slots.default?.(), actions);\n if (actions.length === 0) {\n return;\n }\n let validInlineActions = actions.filter(this.isValidSingleAction);\n if (this.forceMenu && validInlineActions.length > 0 && this.inline > 0) {\n warn(\"Specifying forceMenu will ignore any inline actions rendering.\");\n validInlineActions = [];\n }\n const inlineActions = validInlineActions.slice(0, this.inline);\n const menuActions = actions.filter((action) => !inlineActions.includes(action));\n const menuItemsActions = [\"NcActionButton\", \"NcActionButtonGroup\", \"NcActionCheckbox\", \"NcActionRadio\"];\n const textInputActions = [\"NcActionInput\", \"NcActionTextEditable\"];\n const linkActions = [\"NcActionLink\", \"NcActionRouter\"];\n const hasTextInputAction = menuActions.some((action) => textInputActions.includes(this.getActionName(action)));\n const hasMenuItemAction = menuActions.some((action) => menuItemsActions.includes(this.getActionName(action)));\n const hasLinkAction = menuActions.some((action) => linkActions.includes(this.getActionName(action)));\n if (hasTextInputAction) {\n this.actionsMenuSemanticType = \"dialog\";\n } else if (hasMenuItemAction) {\n this.actionsMenuSemanticType = \"menu\";\n } else if (hasLinkAction) {\n this.actionsMenuSemanticType = \"navigation\";\n } else {\n const ncActions = actions.filter((action) => this.getActionName(action).startsWith(\"NcAction\"));\n if (ncActions.length === actions.length) {\n this.actionsMenuSemanticType = \"tooltip\";\n } else {\n this.actionsMenuSemanticType = \"unknown\";\n }\n }\n const renderInlineAction = (action) => {\n const iconProp = action?.props?.icon;\n const icon = action?.children?.icon?.()?.[0] ?? (this.isIconUrl(iconProp) ? h(\"img\", { class: \"action-item__menutoggle__icon\", src: iconProp, alt: \"\" }) : h(\"span\", { class: [\"icon\", iconProp] }));\n const text = action?.children?.default?.()?.[0]?.children?.trim();\n const buttonText = this.forceName ? text : \"\";\n let title = action?.props?.title;\n if (!(this.forceName || title)) {\n title = text;\n }\n const propsToForward = { ...action?.props ?? {} };\n const type = [\"submit\", \"reset\"].includes(propsToForward.type) ? propsToForward.modelValue : \"button\";\n delete propsToForward.modelValue;\n delete propsToForward.type;\n return h(\n NcButton,\n mergeProps(\n propsToForward,\n {\n class: [\n \"action-item action-item--single\",\n {\n \"action-item--wide\": this.wide\n }\n ],\n \"aria-label\": action?.props?.[\"aria-label\"] || text,\n title,\n disabled: this.disabled || action?.props?.disabled,\n pressed: action?.props?.modelValue,\n size: this.size,\n type,\n wide: this.wide,\n // If it has a menuName, we use a secondary button\n variant: this.variant || (buttonText ? \"secondary\" : \"tertiary\"),\n onFocus: this.onFocus,\n onBlur: this.onBlur,\n // forward any pressed state from NcButton just like NcActionButton does\n \"onUpdate:pressed\": action?.props?.[\"onUpdate:modelValue\"] ?? (() => {\n })\n }\n ),\n {\n default: () => buttonText,\n icon: () => icon\n }\n );\n };\n const renderActionsPopover = (actions2) => {\n const triggerIcon = isSlotPopulated(this.$slots.icon?.()) ? this.$slots.icon?.() : this.defaultIcon ? h(\"span\", { class: [\"icon\", this.defaultIcon] }) : h(IconDotsHorizontal, { size: 20 });\n const triggerRandomId = `${this.randomId}-trigger`;\n return h(\n NcPopover,\n {\n ref: \"popover\",\n delay: 0,\n shown: this.opened,\n placement: this.placement,\n boundary: this.boundariesElement,\n autoBoundaryMaxSize: true,\n container: this.container,\n ...this.manualOpen && {\n triggers: []\n },\n noCloseOnClickOutside: this.manualOpen,\n popoverBaseClass: \"action-item__popper\",\n popupRole: this.config.popupRole,\n setReturnFocus: this.config.withFocusTrap ? this.$refs.triggerButton?.$el : void 0,\n noFocusTrap: !this.config.withFocusTrap,\n \"onUpdate:shown\": this.toggleMenu,\n onAfterShow: this.onOpened,\n onAfterClose: this.onClosed\n },\n {\n trigger: () => h(NcButton, {\n id: triggerRandomId,\n class: \"action-item__menutoggle\",\n disabled: this.disabled,\n size: this.size,\n variant: this.triggerButtonVariant,\n wide: this.wide,\n ref: \"triggerButton\",\n \"aria-label\": this.menuName ? null : this.ariaLabel,\n // 'aria-controls' should only present together with a valid aria-haspopup\n \"aria-controls\": this.opened && this.config.popupRole ? this.randomId : null,\n onFocus: this.onFocus,\n onBlur: this.onBlur,\n onClick: this.onClick,\n onKeydown: this.onTriggerKeydown\n }, {\n icon: () => triggerIcon,\n default: () => this.menuName\n }),\n default: () => h(\"div\", {\n class: {\n open: this.opened\n },\n tabindex: \"-1\",\n onKeydown: this.onKeydown,\n ref: \"menu\"\n }, [\n h(\"ul\", {\n id: this.randomId,\n tabindex: \"-1\",\n ref: \"menuList\",\n role: this.config.popupRole,\n // For most roles a label is required (dialog, menu), but also in general nothing speaks against labelling a list.\n // It is even recommended to do so.\n \"aria-labelledby\": triggerRandomId,\n \"aria-modal\": this.actionsMenuSemanticType === \"dialog\" ? \"true\" : void 0\n }, [\n actions2\n ])\n ])\n }\n );\n };\n if (actions.length === 1 && validInlineActions.length === 1 && !this.forceMenu) {\n return renderInlineAction(actions[0]);\n }\n this.$nextTick(() => {\n if (this.opened && this.$refs.menu) {\n const isAnyActive = this.$refs.menu.querySelector(\"li.active\") || [];\n if (isAnyActive.length === 0) {\n this.focusFirstAction();\n }\n }\n });\n if (inlineActions.length > 0 && this.inline > 0) {\n return h(\n \"div\",\n {\n class: [\n \"action-items\",\n `action-item--${this.triggerButtonVariant}`\n ]\n },\n [\n // Render inline actions\n ...inlineActions.map(renderInlineAction),\n // render the rest within the popover menu\n menuActions.length > 0 ? h(\n \"div\",\n {\n class: [\n \"action-item\",\n {\n \"action-item--open\": this.opened\n }\n ]\n },\n [renderActionsPopover(menuActions)]\n ) : null\n ]\n );\n }\n return h(\n \"div\",\n {\n class: [\n \"action-item action-item--default-popover\",\n `action-item--${this.triggerButtonVariant}`,\n {\n \"action-item--open\": this.opened,\n \"action-item--wide\": this.wide\n }\n ]\n },\n [\n renderActionsPopover(actions)\n ]\n );\n }\n};\nconst NcActions = /* @__PURE__ */ _export_sfc(_sfc_main, [[\"__scopeId\", \"data-v-23e5cae7\"]]);\nexport {\n IconDotsHorizontal as I,\n NcActions as N,\n isSlotPopulated as i\n};\n//# sourceMappingURL=NcActions-C-wDqSrv.mjs.map\n","import { formatRelativeTime, getCanonicalLocale } from \"@nextcloud/l10n\";\nimport { computed, toValue, ref, watchEffect, onUnmounted, readonly } from \"vue\";\nimport { r as register, d as t2, a as t } from \"../../chunks/_l10n-wdIzZwir.mjs\";\nregister(t2);\nconst FEW_SECONDS_AGO = {\n long: t(\"a few seconds ago\"),\n short: t(\"seconds ago\"),\n // FOR TRANSLATORS: Shorter version of 'a few seconds ago'\n narrow: t(\"sec. ago\")\n // FOR TRANSLATORS: If possible in your language an even shorter version of 'a few seconds ago'\n};\nfunction useFormatRelativeTime(timestamp = Date.now(), opts = {}) {\n let timeoutId;\n const date = computed(() => new Date(toValue(timestamp)));\n const options = computed(() => {\n const { language, relativeTime: relativeTime2, ignoreSeconds } = toValue(opts);\n return {\n ...language && { language },\n ...relativeTime2 && { relativeTime: relativeTime2 },\n ignoreSeconds: ignoreSeconds ? FEW_SECONDS_AGO[relativeTime2 || \"long\"] : false\n };\n });\n const relativeTime = ref(\"\");\n watchEffect(() => updateRelativeTime());\n function updateRelativeTime() {\n relativeTime.value = formatRelativeTime(date.value, options.value);\n if (toValue(opts).update !== false) {\n const diff = Math.abs(Date.now() - new Date(toValue(timestamp)).getTime());\n const interval = diff > 12e4 || options.value.ignoreSeconds ? Math.min(diff / 60, 18e5) : 1e3;\n timeoutId = window.setTimeout(updateRelativeTime, interval);\n }\n }\n onUnmounted(() => timeoutId && window.clearTimeout(timeoutId));\n return readonly(relativeTime);\n}\nfunction useFormatTime(timestamp, opts) {\n const options = computed(() => ({\n locale: getCanonicalLocale(),\n format: { dateStyle: \"short\", timeStyle: \"medium\" },\n ...toValue(opts)\n }));\n const formatter = computed(() => new Intl.DateTimeFormat(options.value.locale, options.value.format));\n return computed(() => formatter.value.format(toValue(timestamp)));\n}\nexport {\n useFormatRelativeTime,\n useFormatTime\n};\n//# sourceMappingURL=index.mjs.map\n","const isMac = /mac|ipad|iphone|darwin/i.test(navigator.userAgent);\nexport {\n isMac as i\n};\n//# sourceMappingURL=platform-CC2ecGvV.mjs.map\n","import { onKeyStroke } from \"@vueuse/core\";\nimport { i as isMac } from \"../../chunks/platform-CC2ecGvV.mjs\";\nconst disableKeyboardShortcuts = window.OCP?.Accessibility?.disableKeyboardShortcuts?.();\nconst derivedKeysRegex = /^[a-zA-Z0-9]$/;\nconst nonAsciiPrintableRegex = /^[^\\x20-\\x7F]$/;\nfunction shouldIgnoreEvent(event, options) {\n if (!(event.target instanceof HTMLElement) || event.target instanceof HTMLInputElement || event.target instanceof HTMLTextAreaElement || event.target instanceof HTMLSelectElement || event.target.isContentEditable) {\n return true;\n }\n if (options.allowInModal) {\n return false;\n }\n return Array.from(document.getElementsByClassName(\"modal-mask\")).filter((el) => el.checkVisibility()).length > 0;\n}\nfunction eventHandler(callback, options) {\n return (event) => {\n const ctrlKeyPressed = isMac ? event.metaKey : event.ctrlKey;\n if (ctrlKeyPressed !== Boolean(options.ctrl)) {\n return;\n } else if (event.altKey !== Boolean(options.alt)) {\n return;\n } else if (options.shift !== void 0 && event.shiftKey !== Boolean(options.shift)) {\n return;\n } else if (shouldIgnoreEvent(event, options)) {\n return;\n }\n if (options.prevent) {\n event.preventDefault();\n }\n if (options.stop) {\n event.stopPropagation();\n }\n callback(event);\n };\n}\nfunction useHotKey(keysOrFilter, callback = () => {\n}, options = {}) {\n if (disableKeyboardShortcuts) {\n return () => {\n };\n }\n const validateKeyEvent = (event, key) => {\n if (event.key === key) {\n return true;\n }\n if (options.caseSensitive) {\n const isKeyInLowerCase = key === key.toLowerCase();\n const isEventKeyInLowerCase = event.key === event.key.toLowerCase();\n if (isKeyInLowerCase !== isEventKeyInLowerCase) {\n return false;\n }\n }\n if (derivedKeysRegex.test(key) && nonAsciiPrintableRegex.test(event.key)) {\n return event.code.replace(/^(?:Key|Digit|Numpad)/, \"\") === key.toUpperCase();\n }\n return event.key.toLowerCase() === key.toLowerCase();\n };\n const keyFilter = (event) => {\n if (typeof keysOrFilter === \"function\") {\n return keysOrFilter(event);\n } else if (typeof keysOrFilter === \"string\") {\n return validateKeyEvent(event, keysOrFilter);\n } else if (Array.isArray(keysOrFilter)) {\n return keysOrFilter.some((key) => validateKeyEvent(event, key));\n } else {\n return true;\n }\n };\n const stopKeyDown = onKeyStroke(keyFilter, eventHandler(callback, options), {\n eventName: \"keydown\",\n dedupe: true,\n passive: !options.prevent\n });\n const stopKeyUp = options.push ? onKeyStroke(keyFilter, eventHandler(callback, options), {\n eventName: \"keyup\",\n passive: !options.prevent\n }) : () => {\n };\n return () => {\n stopKeyDown();\n stopKeyUp();\n };\n}\nexport {\n useHotKey\n};\n//# sourceMappingURL=index.mjs.map\n","function checkIfDarkTheme(el = document.body) {\n const backgroundInvertIfDark = window.getComputedStyle(el).getPropertyValue(\"--background-invert-if-dark\");\n if (backgroundInvertIfDark !== void 0) {\n return backgroundInvertIfDark === \"invert(100%)\";\n }\n return false;\n}\nconst isDarkTheme = checkIfDarkTheme();\nexport {\n checkIfDarkTheme,\n isDarkTheme\n};\n//# sourceMappingURL=index.mjs.map\n","import { ref, readonly } from \"vue\";\nconst isFullscreen = ref(checkIfIsFullscreen());\nwindow.addEventListener(\"resize\", () => {\n isFullscreen.value = checkIfIsFullscreen();\n});\nfunction checkIfIsFullscreen() {\n return window.outerHeight === window.screen.height;\n}\nfunction useIsFullscreen() {\n return readonly(isFullscreen);\n}\nexport {\n useIsFullscreen\n};\n//# sourceMappingURL=index.mjs.map\n","import '../assets/NcModal-D81luiuU.css';\nimport { getCurrentInstance, warn, defineComponent, useCssVars, useModel, useTemplateRef, onUnmounted, watch, toRef, ref, watchEffect, computed, useSlots, onMounted, openBlock, createBlock, Teleport, createVNode, Transition, withCtx, withDirectives, createElementVNode, mergeProps, unref, createElementBlock, toDisplayString, createCommentVNode, normalizeClass, renderSlot, withModifiers, vShow, mergeModels, nextTick } from \"vue\";\nimport { E as mdiPause, F as mdiPlay, b as mdiClose, z as mdiChevronLeft, c as mdiChevronRight } from \"./mdi-CpchYUUV.mjs\";\nimport { useIntervalFn, useSwipe } from \"@vueuse/core\";\nimport { createFocusTrap } from \"focus-trap\";\nimport { N as NcActions } from \"./NcActions-C-wDqSrv.mjs\";\nimport { N as NcButton } from \"./NcButton-jvoYS2my.mjs\";\nimport { N as NcIconSvgWrapper } from \"./NcIconSvgWrapper-g8ubWhoz.mjs\";\nimport \"../composables/useFormatDateTime/index.mjs\";\nimport { useHotKey } from \"../composables/useHotKey/index.mjs\";\nimport \"../composables/useIsDarkTheme/index.mjs\";\nimport \"../composables/useIsFullscreen/index.mjs\";\nimport \"../composables/useIsMobile/index.mjs\";\nimport { r as register, D as t36, A as t19, a as t } from \"./_l10n-wdIzZwir.mjs\";\nimport { c as createElementId } from \"./createElementId-DhjFt1I9.mjs\";\nimport { g as getTrapStack } from \"./focusTrap-HJQ4pqHV.mjs\";\nimport { i as isRtl } from \"./rtl-v0UOPAM7.mjs\";\nimport { _ as _export_sfc } from \"./_plugin-vue_export-helper-1tPrXgE0.mjs\";\n/*!\n * SPDX-FileCopyrightText: 2025 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\nfunction getSameNodeParent(instance) {\n if (!instance.parent) {\n return null;\n }\n if (\"vapor\" in instance || \"vapor\" in instance.parent) {\n warn(\"Vapor instances are not supported in useScopeIdAttrs :(\");\n return null;\n }\n if (instance.parent.subTree !== instance.vnode) {\n return null;\n }\n return instance.parent;\n}\nfunction getSameNodeAncestors(instance) {\n const ancestors = [instance];\n let parent = getSameNodeParent(instance);\n while (parent) {\n ancestors.push(parent);\n parent = getSameNodeParent(parent);\n }\n return ancestors;\n}\nfunction useScopeIdAttrs() {\n const instance = getCurrentInstance();\n if (!instance) {\n throw new Error(\"useScopeId must be called within a setup context\");\n }\n const sameNodeAncestors = getSameNodeAncestors(instance);\n const scopeIds = sameNodeAncestors.map((instance2) => instance2.vnode.scopeId).filter(Boolean);\n const scopeIdAttrs = Object.fromEntries(scopeIds.map((scopeId) => [scopeId, \"\"]));\n return scopeIdAttrs;\n}\nregister(t19, t36);\nconst _hoisted_1 = [\"aria-labelledby\", \"aria-describedby\"];\nconst _hoisted_2 = [\"data-theme-light\", \"data-theme-dark\"];\nconst _hoisted_3 = [\"id\"];\nconst _hoisted_4 = { class: \"icons-menu\" };\nconst _hoisted_5 = [\"title\"];\nconst _hoisted_6 = [\"id\"];\nconst _hoisted_7 = { class: \"modal-container__content\" };\nconst _sfc_main = /* @__PURE__ */ defineComponent({\n ...{ inheritAttrs: false },\n __name: \"NcModal\",\n props: /* @__PURE__ */ mergeModels({\n name: { default: \"\" },\n hasPrevious: { type: Boolean },\n hasNext: { type: Boolean },\n outTransition: { type: Boolean },\n enableSlideshow: { type: Boolean },\n slideshowDelay: { default: 5e3 },\n slideshowPaused: { type: Boolean },\n disableSwipe: { type: Boolean },\n spreadNavigation: { type: Boolean },\n size: { default: \"normal\" },\n noClose: { type: Boolean },\n closeOnClickOutside: { type: Boolean },\n dark: { type: Boolean },\n lightBackdrop: { type: Boolean },\n container: { default: \"body\" },\n closeButtonOutside: { type: Boolean },\n additionalTrapElements: { default: () => [] },\n inlineActions: { default: 0 },\n labelId: { default: \"\" },\n setReturnFocus: { default: void 0 }\n }, {\n \"show\": { type: Boolean, ...{ default: true } },\n \"showModifiers\": {}\n }),\n emits: /* @__PURE__ */ mergeModels([\"next\", \"previous\", \"close\", \"update:show\"], [\"update:show\"]),\n setup(__props, { emit: __emit }) {\n useCssVars((_ctx) => ({\n \"v046d2bb2\": numHeaderActions.value,\n \"v71f7c020\": cssSlideshowDelay.value\n }));\n const showModal = useModel(__props, \"show\");\n const props = __props;\n const emit = __emit;\n const scopeIdAttrs = useScopeIdAttrs();\n const modalId = createElementId();\n const maskElement = useTemplateRef(\"mask\");\n let focusTrap;\n onUnmounted(() => clearFocusTrap());\n watch(() => props.additionalTrapElements, (elements) => {\n if (focusTrap) {\n focusTrap.updateContainerElements([maskElement.value, ...elements]);\n }\n });\n const {\n isActive: isPlaying,\n pause: stopSlideshow,\n resume: startSlideshow\n } = useIntervalFn(nextSlide, toRef(() => props.slideshowDelay), { immediate: false });\n const animationKey = ref(0);\n const runSlideshow = ref(false);\n watchEffect(() => {\n if (runSlideshow.value && !props.slideshowPaused) {\n startSlideshow();\n } else if (isPlaying.value) {\n stopSlideshow();\n }\n });\n const cssSlideshowDelay = computed(() => `${props.slideshowDelay}ms`);\n const { stop: stopSwipe } = useSwipe(maskElement, {\n onSwipeEnd: handleSwipe\n });\n onUnmounted(stopSwipe);\n useHotKey(\"Escape\", () => {\n const trapStack = getTrapStack();\n if (trapStack.at(-1) === focusTrap) {\n close();\n }\n }, { allowInModal: true });\n useHotKey([\"ArrowLeft\", \"ArrowRight\"], (event) => {\n if (document.activeElement && !maskElement.value.contains(document.activeElement)) {\n return;\n }\n if (event.key === \"ArrowLeft\" !== isRtl) {\n previousSlide();\n } else {\n nextSlide();\n }\n }, { allowInModal: true });\n const slots = useSlots();\n const numHeaderActions = computed(() => {\n let actions = 0;\n if (props.hasNext && props.enableSlideshow) {\n actions++;\n }\n if (!props.noClose && props.closeButtonOutside) {\n actions++;\n }\n if (slots.actions) {\n actions++;\n }\n return actions;\n });\n onMounted(() => {\n if (!props.name && !props.labelId) {\n warn(\"[NcModal] You need either set the name or set a `labelId` for accessibility.\");\n }\n });\n function nextSlide(event) {\n if (!props.hasNext) {\n runSlideshow.value = false;\n return;\n }\n if (event && isPlaying.value) {\n restartSlideshow();\n }\n emit(\"next\", event);\n }\n function previousSlide(event) {\n if (!props.hasPrevious) {\n return;\n }\n if (event && isPlaying.value) {\n restartSlideshow();\n }\n emit(\"previous\", event);\n }\n function handleSwipe(e, direction) {\n if (!props.disableSwipe) {\n if (direction !== \"left\" && direction !== \"right\") {\n return;\n }\n if (direction === \"left\" !== isRtl) {\n nextSlide(e);\n } else {\n previousSlide(e);\n }\n }\n }\n function restartSlideshow() {\n stopSlideshow();\n startSlideshow();\n animationKey.value++;\n }\n function close(event) {\n if (props.noClose) {\n return;\n }\n showModal.value = false;\n setTimeout(() => {\n emit(\"close\", event);\n }, 300);\n }\n function handleClickModalWrapper(event) {\n if (props.closeOnClickOutside) {\n close(event);\n }\n }\n async function useFocusTrap() {\n if (focusTrap) {\n return;\n }\n await nextTick();\n const options = {\n allowOutsideClick: true,\n fallbackFocus: maskElement.value,\n trapStack: getTrapStack(),\n // Esc can be used without stop in content or additionalTrapElements where it should not deactivate modal's focus trap.\n // Focus trap is deactivated on modal close anyway.\n escapeDeactivates: false,\n setReturnFocus: props.setReturnFocus\n };\n focusTrap = createFocusTrap([maskElement.value, ...props.additionalTrapElements], options);\n focusTrap.activate();\n }\n function clearFocusTrap() {\n if (!focusTrap) {\n return;\n }\n focusTrap?.deactivate();\n focusTrap = void 0;\n }\n return (_ctx, _cache) => {\n return openBlock(), createBlock(Teleport, {\n disabled: __props.container === null,\n to: __props.container\n }, [\n createVNode(Transition, {\n name: \"fade\",\n appear: \"\",\n onAfterEnter: useFocusTrap,\n onBeforeLeave: clearFocusTrap\n }, {\n default: withCtx(() => [\n withDirectives(createElementVNode(\"div\", mergeProps({ ..._ctx.$attrs, ...unref(scopeIdAttrs) }, {\n ref: \"mask\",\n class: [\"modal-mask\", {\n \"modal-mask--opaque\": __props.dark || __props.closeButtonOutside || __props.hasPrevious || __props.hasNext,\n \"modal-mask--light\": __props.lightBackdrop\n }],\n role: \"dialog\",\n \"aria-modal\": \"true\",\n \"aria-labelledby\": __props.labelId || `modal-name-${unref(modalId)}`,\n \"aria-describedby\": \"modal-description-\" + unref(modalId),\n tabindex: \"-1\"\n }), [\n createVNode(Transition, {\n name: \"fade-visibility\",\n appear: \"\"\n }, {\n default: withCtx(() => [\n createElementVNode(\"div\", {\n class: \"modal-header\",\n \"data-theme-light\": __props.lightBackdrop,\n \"data-theme-dark\": !__props.lightBackdrop\n }, [\n __props.name.trim() !== \"\" ? (openBlock(), createElementBlock(\"h2\", {\n key: 0,\n id: \"modal-name-\" + unref(modalId),\n class: \"modal-header__name\"\n }, toDisplayString(__props.name), 9, _hoisted_3)) : createCommentVNode(\"\", true),\n createElementVNode(\"div\", _hoisted_4, [\n __props.hasNext && __props.enableSlideshow ? (openBlock(), createElementBlock(\"button\", {\n key: 0,\n class: normalizeClass([\"play-pause-icons\", { \"play-pause-icons--paused\": __props.slideshowPaused }]),\n title: unref(isPlaying) ? unref(t)(\"Pause slideshow\") : unref(t)(\"Start slideshow\"),\n type: \"button\",\n onClick: _cache[0] || (_cache[0] = ($event) => runSlideshow.value = !runSlideshow.value)\n }, [\n createVNode(NcIconSvgWrapper, {\n class: \"play-pause-icons__icon\",\n inline: \"\",\n name: unref(isPlaying) ? unref(t)(\"Pause slideshow\") : unref(t)(\"Start slideshow\"),\n path: unref(isPlaying) ? unref(mdiPause) : unref(mdiPlay)\n }, null, 8, [\"name\", \"path\"]),\n unref(isPlaying) ? (openBlock(), createElementBlock(\"svg\", {\n key: `${unref(modalId)}-animation-${animationKey.value}`,\n class: \"progress-ring\",\n height: \"50\",\n width: \"50\"\n }, [..._cache[1] || (_cache[1] = [\n createElementVNode(\"circle\", {\n class: \"progress-ring__circle\",\n stroke: \"white\",\n \"stroke-width\": \"2\",\n fill: \"transparent\",\n r: \"15\",\n cx: \"25\",\n cy: \"25\"\n }, null, -1)\n ])])) : createCommentVNode(\"\", true)\n ], 10, _hoisted_5)) : createCommentVNode(\"\", true),\n createVNode(NcActions, {\n class: \"header-actions\",\n inline: __props.inlineActions\n }, {\n default: withCtx(() => [\n renderSlot(_ctx.$slots, \"actions\", {}, void 0, true)\n ]),\n _: 3\n }, 8, [\"inline\"]),\n !__props.noClose && __props.closeButtonOutside ? (openBlock(), createBlock(NcButton, {\n key: 1,\n \"aria-label\": unref(t)(\"Close\"),\n class: \"header-close\",\n variant: \"tertiary\",\n onClick: close\n }, {\n icon: withCtx(() => [\n createVNode(NcIconSvgWrapper, { path: unref(mdiClose) }, null, 8, [\"path\"])\n ]),\n _: 1\n }, 8, [\"aria-label\"])) : createCommentVNode(\"\", true)\n ])\n ], 8, _hoisted_2)\n ]),\n _: 3\n }),\n createVNode(Transition, {\n name: `modal-${__props.outTransition ? \"out\" : \"in\"}`,\n appear: \"\"\n }, {\n default: withCtx(() => [\n withDirectives(createElementVNode(\"div\", {\n class: normalizeClass([\"modal-wrapper\", [\n `modal-wrapper--${__props.size}`,\n { \"modal-wrapper--spread-navigation\": __props.spreadNavigation }\n ]]),\n onMousedown: withModifiers(handleClickModalWrapper, [\"self\"])\n }, [\n createVNode(Transition, {\n name: \"fade-visibility\",\n appear: \"\"\n }, {\n default: withCtx(() => [\n withDirectives(createVNode(NcButton, {\n \"aria-label\": unref(t)(\"Previous\"),\n class: \"prev\",\n variant: \"tertiary-no-background\",\n onClick: previousSlide\n }, {\n icon: withCtx(() => [\n createVNode(NcIconSvgWrapper, {\n directional: \"\",\n path: unref(mdiChevronLeft),\n size: 40\n }, null, 8, [\"path\"])\n ]),\n _: 1\n }, 8, [\"aria-label\"]), [\n [vShow, __props.hasPrevious]\n ])\n ]),\n _: 1\n }),\n createElementVNode(\"div\", {\n id: \"modal-description-\" + unref(modalId),\n class: \"modal-container\"\n }, [\n createElementVNode(\"div\", _hoisted_7, [\n renderSlot(_ctx.$slots, \"default\", {}, void 0, true)\n ]),\n !__props.noClose && !__props.closeButtonOutside ? (openBlock(), createBlock(NcButton, {\n key: 0,\n \"aria-label\": unref(t)(\"Close\"),\n class: \"modal-container__close\",\n variant: \"tertiary\",\n onClick: close\n }, {\n icon: withCtx(() => [\n createVNode(NcIconSvgWrapper, { path: unref(mdiClose) }, null, 8, [\"path\"])\n ]),\n _: 1\n }, 8, [\"aria-label\"])) : createCommentVNode(\"\", true)\n ], 8, _hoisted_6),\n createVNode(Transition, {\n name: \"fade-visibility\",\n appear: \"\"\n }, {\n default: withCtx(() => [\n withDirectives(createVNode(NcButton, {\n \"aria-label\": unref(t)(\"Next\"),\n class: \"next\",\n variant: \"tertiary-no-background\",\n onClick: nextSlide\n }, {\n icon: withCtx(() => [\n createVNode(NcIconSvgWrapper, {\n directional: \"\",\n path: unref(mdiChevronRight),\n size: 40\n }, null, 8, [\"path\"])\n ]),\n _: 1\n }, 8, [\"aria-label\"]), [\n [vShow, __props.hasNext]\n ])\n ]),\n _: 1\n })\n ], 34), [\n [vShow, showModal.value]\n ])\n ]),\n _: 3\n }, 8, [\"name\"])\n ], 16, _hoisted_1), [\n [vShow, showModal.value]\n ])\n ]),\n _: 3\n })\n ], 8, [\"disabled\", \"to\"]);\n };\n }\n});\nconst NcModal = /* @__PURE__ */ _export_sfc(_sfc_main, [[\"__scopeId\", \"data-v-3c357e2d\"]]);\nexport {\n NcModal as N\n};\n//# sourceMappingURL=NcModal-DiDvgcU8.mjs.map\n"],"names":["getFirstDay","intl","getCanonicalLocale","weekInfo","getDayNames","locale","getDayNamesMin","formatRelativeTime","timestamp","opts","options","getLanguage","date","formatter","seconds","minutes","hours","days","weeks","months","format","createDisposableDirective","origin","isFunc","fn","normalisedOrigin","mounted","unmounted","scopeWeakMap","el","binding","vNode","prevNode","_scopeWeakMap$get","scope","effectScope","_scopeWeakMap$get2","tryOnScopeDispose","failSilently","getCurrentScope","onScopeDispose","localProvidedStateMap","injectLocal","args","_getCurrentInstance","key","instance","getCurrentInstance","owner","hasInjectionContext","inject","isClient","notNullish","val","toString","isObject","noop","createFilterWrapper","filter","wrapper","resolve","reject","bypassFilter","invoke","debounceFilter","ms","timer","maxTimer","lastRejector","_clearTimeout","lastInvoker","duration","toValue","maxDuration","pxValue","px","toArray","value","getLifeCycleTarget","target","createSharedComposable","composable","subscribers","state","dispose","useDebounceFn","watchWithFilter","source","cb","eventFilter","watchOptions","watch","tryOnMounted","sync","onMounted","nextTick","useIntervalFn","interval","immediate","immediateCallback","isActive","shallowRef","clean","pause","resume","intervalValue","isRef","shallowReadonly","watchDebounced","debounce","maxWait","watchImmediate","watchOnce","defaultWindow","defaultDocument","unrefElement","elRef","_$el","plain","useEventListener","register","event","listener","firstParamTargets","computed","test","e","_firstParamTargets$va","_firstParamTargets$va2","unref","raw_targets","raw_events","raw_listeners","raw_options","_","onCleanup","optionsClone","cleanups","onClickOutside","handler","window","ignore","capture","detectIframe","controls","shouldListen","shouldIgnore","hasMultipleRoots","vm","checkMultipleRoots","children","child","isProcessingClick","cleanup","activeEl","stop","useMounted","isMounted","useSupported","callback","useMutationObserver","mutationOptions","observer","isSupported","stopWatch","items","newTargets","takeRecords","onElementRemoval","document","flush","stopFn","cleanupAndUpdate","watchEffect","mutationsList","mutation","node","stopHandle","createKeyPredicate","keyFilter","onKeyStroke","eventName","passive","dedupe","predicate","useActiveElement","_options$document","deep","triggerOnRemoval","getDeepActiveElement","element","_element$shadowRoot","activeElement","trigger","listenerOptions","ssrWidthSymbol","useSSRWidth","ssrWidth","useMediaQuery","query","ssrSupport","mediaQuery","matches","queryString","not","minWidth","maxWidth","res","usePreferredDark","useResizeObserver","observerOptions","_targets","els","_el","useElementSize","initialSize","box","isSVG","_unrefElement","width","height","stop1","entry","boxSize","$elem","rect","formatBoxSize","acc","inlineSize","blockSize","ele","stop2","useIntersectionObserver","root","rootMargin","threshold","targets","useElementVisibility","scrollTarget","once","initialValue","isVisible","observerController","intersectionObserverEntries","isIntersecting","latestTime","EVENT_FOCUS_IN","EVENT_FOCUS_OUT","PSEUDO_CLASS_FOCUS_WITHIN","useFocusWithin","targetElement","_focused","focused","_targetElement$value$","_targetElement$value","_targetElement$value$2","useSwipe","onSwipe","onSwipeEnd","onSwipeStart","coordsStart","reactive","coordsEnd","diffX","diffY","max","abs","isThresholdExceeded","isSwiping","direction","getTouchEventCoords","updateCoordsStart","x","y","updateCoordsEnd","onTouchEnd","stops","s","MOBILE_BREAKPOINT","MOBILE_SMALL_BREAKPOINT","isLessThanBreakpoint","breakpoint","isMobile","ref","isSmallMobile","useIsMobile","readonly","useIsSmallMobile","isRtl","isRTL","NC_ACTIONS_IS_SEMANTIC_MENU","NC_ACTIONS_CLOSE_MENU","getTrapStack","createTrapStackController","pausedStack","trap","useTrapStackControl","shouldPause","trapStackController","onUnmounted","sides","alignments","placements","side","min","round","floor","createCoords","v","oppositeSideMap","clamp","start","end","evaluate","param","getSide","placement","getAlignment","getOppositeAxis","axis","getAxisLength","getSideAxis","firstChar","getAlignmentAxis","getAlignmentSides","rects","rtl","alignment","alignmentAxis","length","mainAlignmentSide","getOppositePlacement","getExpandedPlacements","oppositePlacement","getOppositeAlignmentPlacement","lrPlacement","rlPlacement","tbPlacement","btPlacement","getSideList","isStart","getOppositeAxisPlacements","flipAlignment","list","expandPaddingObject","padding","_padding$top","_padding$right","_padding$bottom","_padding$left","getPaddingObject","rectToClientRect","computeCoordsFromPlacement","_ref","reference","floating","sideAxis","alignLength","isVertical","commonX","commonY","commonAlign","coords","detectOverflow","_await$platform$isEle","platform","elements","strategy","boundary","rootBoundary","elementContext","altBoundary","paddingObject","clippingClientRect","offsetParent","offsetScale","elementClientRect","MAX_RESET_COUNT","computePosition","config","middleware","platformWithDetectOverflow","statefulPlacement","resetCount","middlewareData","i","currentMiddleware","name","nextX","nextY","data","reset","arrow","arrowDimensions","isYAxis","minProp","maxProp","clientProp","endDiff","startDiff","arrowOffsetParent","clientSize","centerToReference","largestPossiblePadding","minPadding","maxPadding","center","offset","shouldAddOffset","alignmentOffset","getPlacementList","autoAlignment","allowedPlacements","autoPlacement","_middlewareData$autoP","_middlewareData$autoP2","_placementsThatFitOnE","crossAxis","detectOverflowOptions","placements$1","currentIndex","currentPlacement","overflow","alignmentSides","currentOverflows","allOverflows","nextPlacement","placementsSortedByMostSpace","d","a","b","resetPlacement","flip","_middlewareData$arrow","_middlewareData$flip","initialPlacement","checkMainAxis","checkCrossAxis","specifiedFallbackPlacements","fallbackStrategy","fallbackAxisSideDirection","initialSideAxis","isBasePlacement","fallbackPlacements","hasFallbackAxisSideDirection","overflows","overflowsData","_middlewareData$flip2","_overflowsData$filter","nextIndex","_overflowsData$filter2","currentSideAxis","originSides","convertValueToCoords","mainAxisMulti","crossAxisMulti","rawValue","mainAxis","_middlewareData$offse","diffCoords","shift","limiter","mainAxisCoord","crossAxisCoord","clampCoord","coord","limitedCoords","limitShift","_rawOffset$mainAxis","_rawOffset$crossAxis","rawOffset","computedOffset","len","limitMin","limitMax","_middlewareData$offse2","isOriginSide","size","apply","heightSide","widthSide","maximumClippingHeight","maximumClippingWidth","overflowAvailableHeight","overflowAvailableWidth","shiftData","noShift","availableHeight","availableWidth","nextDimensions","n","t","o","r","l","c","h","f","u","p","g","m","w","L","E","R","T","C","F","W","D","S","A","H","O","P","B","Ze","re","$","_e","Te","pe","ae","de","G","le","he","Y","q","Q","xe","Ue","Ye","Xe","Ke","Je","Qe","ne","ue","fe","tt","Pe","ce","et","ot","it","J","ke","Le","st","nt","z","X","Fe","rt","Re","De","pt","Ie","at","M","Z","dt","lt","ht","ut","ft","ct","mt","je","Ve","se","ee","te","K","gt","wt","$e","N","I","j","V","Ee","ve","k","Se","Ht","kt","candidateSelectors","candidateSelector","NoElement","getRootNode","_element$getRootNode","_isInert","lookUp","_node$getAttribute","inertAtt","inert","result","isContentEditable","_node$getAttribute2","attValue","getCandidates","includeContainer","candidates","_getCandidatesIteratively","elementsToCheck","assigned","content","nestedCandidates","validCandidate","shadowRoot","validShadowRoot","_nestedCandidates","hasTabIndex","getTabIndex","getSortOrderTabIndex","isScope","tabIndex","sortOrderedTabbables","isInput","isHiddenInput","isDetailsWithSummary","getCheckedRadio","nodes","form","isTabbableRadio","radioScope","queryRadios","radioSet","err","checked","isRadio","isNonTabbableRadio","isNodeAttached","_nodeRoot","nodeRoot","nodeRootHost","attached","_nodeRootHost","_nodeRootHost$ownerDo","_node$ownerDocument","_nodeRoot2","_nodeRootHost2","_nodeRootHost2$ownerD","isZeroArea","_node$getBoundingClie","isHidden","displayCheck","getShadowRoot","visible","_getComputedStyle","visibility","isDirectSummary","nodeUnderDetails","originalNode","parentElement","rootNode","isDisabledFromFieldset","parentNode","isNodeMatchingSelectorFocusable","isNodeMatchingSelectorTabbable","isShadowRootTabbable","shadowHostNode","_sortByOrder","regularTabbables","orderedTabbables","item","candidateTabindex","sortable","tabbable","container","focusable","isTabbable","focusableCandidateSelector","isFocusable","_arrayLikeToArray","_arrayWithoutHoles","_createForOfIteratorHelper","_unsupportedIterableToArray","_defineProperty","_toPropertyKey","_iterableToArray","_nonIterableSpread","ownKeys","_objectSpread2","_toConsumableArray","_toPrimitive","activeFocusTraps","trapStack","activeTrap","trapIndex","isSelectableInput","isEscapeEvent","isTabEvent","isKeyForward","isKeyBackward","delay","valueOrHandler","_len","params","_key","getActualTarget","internalTrapStack","createFocusTrap","userOptions","doc","getOption","configOverrideOptions","optionName","configOptionName","findContainerIndex","composedPath","tabbableNodes","getNodeForOption","_ref2","_ref2$hasFallback","hasFallback","_ref2$params","optionValue","_getActiveElement","getInitialFocusNode","firstTabbableGroup","firstTabbableNode","updateTabbableNodes","focusableNodes","lastTabbableNode","firstDomTabbableNode","lastDomTabbableNode","posTabIndexesFound","forward","nodeIdx","group","_tryFocus","getReturnFocusNode","previousActiveElement","findNextNavNode","_ref3","_ref3$isBackward","isBackward","destinationNode","containerIndex","containerGroup","startOfGroupIndex","_ref4","destinationGroupIndex","destinationGroup","lastOfGroupIndex","_ref5","_destinationGroupIndex","_destinationGroup","checkPointerDown","checkFocusIn","targetContained","nextNode","navAcrossContainers","mruContainerIdx","mruTabIdx","checkKeyNav","checkTabKey","checkEscapeKey","checkClick","addListeners","promise","collectAdjacentElements","containers","containerAncestors","adjacentElements","_iterator","_step","insideShadowRoot","current","parent","siblings","_iterator2","_step2","removeListeners","checkDomRemoval","mutations","focusedNode","isFocusedNodeRemoved","removedNodes","initialFocusNode","mutationObserver","updateObservedNodes","activateOptions","onActivate","onPostActivate","checkCanFocusTrap","preexistingTrap","revertState","_preexistingTrap$_set","finishActivation","afterListeners","listenersPromise","error","_preexistingTrap$_set2","deactivateOptions","onDeactivate","onPostDeactivate","checkCanReturnFocus","delayReturnFocus","returnFocus","completeDeactivation","finishDeactivation","pauseOptions","unpauseOptions","containerElements","elementsAsArray","paused","onPause","onPostPause","onUnpause","onPostUnpause","finishUnpause","isEnabled","_el$getAttribute","_sfc_main$1","defineComponent","ncPopover","style0","theme","_sfc_main","Dropdown","triggerElements","options2","logger","_sfc_render","_ctx","_cache","$props","$setup","$data","$options","_component_NcPopoverTriggerProvider","resolveComponent","_component_Dropdown","openBlock","createBlock","$event","withCtx","slotProps","renderSlot","normalizeProps","guardReactiveProps","createVNode","cssModules","NcPopover","_export_sfc","_hoisted_1","_hoisted_2","_hoisted_3","_hoisted_4","createElementBlock","mergeProps","createElementVNode","toDisplayString","createCommentVNode","IconDotsHorizontal","t4","isSlotPopulated","vnodes","vnode","Comment","Fragment","Text","focusableSelector","NcButton","createElementId","action","url","focusList","focusIndex","newFocusIndex","currentActiveElement","focusElement","liMenuParent","indexLength","firstCheckedIndex","button","actions","findActions","actions2","validInlineActions","inlineActions","menuActions","menuItemsActions","textInputActions","linkActions","hasTextInputAction","hasMenuItemAction","hasLinkAction","renderInlineAction","iconProp","icon","text","buttonText","title","propsToForward","type","renderActionsPopover","triggerIcon","triggerRandomId","NcActions","t2","FEW_SECONDS_AGO","useFormatRelativeTime","timeoutId","language","relativeTime2","ignoreSeconds","relativeTime","updateRelativeTime","diff","useFormatTime","isMac","disableKeyboardShortcuts","derivedKeysRegex","nonAsciiPrintableRegex","shouldIgnoreEvent","eventHandler","useHotKey","keysOrFilter","validateKeyEvent","isKeyInLowerCase","isEventKeyInLowerCase","stopKeyDown","stopKeyUp","checkIfDarkTheme","backgroundInvertIfDark","isFullscreen","checkIfIsFullscreen","getSameNodeParent","getSameNodeAncestors","ancestors","useScopeIdAttrs","scopeIds","instance2","scopeId","t19","t36","_hoisted_5","_hoisted_6","_hoisted_7","mergeModels","__props","__emit","useCssVars","numHeaderActions","cssSlideshowDelay","showModal","useModel","props","emit","scopeIdAttrs","modalId","maskElement","useTemplateRef","focusTrap","clearFocusTrap","isPlaying","stopSlideshow","startSlideshow","nextSlide","toRef","animationKey","runSlideshow","stopSwipe","handleSwipe","close","previousSlide","slots","useSlots","restartSlideshow","handleClickModalWrapper","useFocusTrap","Teleport","Transition","withDirectives","normalizeClass","NcIconSvgWrapper","mdiPause","mdiPlay","mdiClose","withModifiers","mdiChevronLeft","vShow","mdiChevronRight","NcModal"],"mappings":"kyBAMA,SAASA,IAAc,CACrB,GAAI,OAAO,WAAW,SAAa,IACjC,OAAO,WAAW,SAEpB,MAAMC,EAAO,IAAI,KAAK,OAAOC,GAAkB,CAAE,EAC3CC,EAAWF,EAAK,cAAW,GAAQA,EAAK,SAC9C,OAAIE,EACKA,EAAS,SAAW,EAEtB,CACT,CACA,SAASC,IAAc,CACrB,GAAI,OAAO,WAAW,SAAa,IACjC,OAAO,WAAW,SAEpB,MAAMC,EAASH,GAAkB,EACjC,MAAO,CACL,IAAI,KAAK,KAAM,EAAG,CAAC,EAAE,mBAAmBG,EAAQ,CAAE,QAAS,OAAQ,EACnE,IAAI,KAAK,KAAM,EAAG,CAAC,EAAE,mBAAmBA,EAAQ,CAAE,QAAS,OAAQ,EACnE,IAAI,KAAK,KAAM,EAAG,CAAC,EAAE,mBAAmBA,EAAQ,CAAE,QAAS,OAAQ,EACnE,IAAI,KAAK,KAAM,EAAG,CAAC,EAAE,mBAAmBA,EAAQ,CAAE,QAAS,OAAQ,EACnE,IAAI,KAAK,KAAM,EAAG,CAAC,EAAE,mBAAmBA,EAAQ,CAAE,QAAS,OAAQ,EACnE,IAAI,KAAK,KAAM,EAAG,CAAC,EAAE,mBAAmBA,EAAQ,CAAE,QAAS,OAAQ,EACnE,IAAI,KAAK,KAAM,EAAG,EAAE,EAAE,mBAAmBA,EAAQ,CAAE,QAAS,MAAM,CAAE,CACxE,CACA,CAgBA,SAASC,IAAiB,CACxB,GAAI,OAAO,WAAW,YAAgB,IACpC,OAAO,WAAW,YAEpB,MAAMD,EAASH,GAAkB,EACjC,MAAO,CACL,IAAI,KAAK,KAAM,EAAG,CAAC,EAAE,mBAAmBG,EAAQ,CAAE,QAAS,SAAU,EACrE,IAAI,KAAK,KAAM,EAAG,CAAC,EAAE,mBAAmBA,EAAQ,CAAE,QAAS,SAAU,EACrE,IAAI,KAAK,KAAM,EAAG,CAAC,EAAE,mBAAmBA,EAAQ,CAAE,QAAS,SAAU,EACrE,IAAI,KAAK,KAAM,EAAG,CAAC,EAAE,mBAAmBA,EAAQ,CAAE,QAAS,SAAU,EACrE,IAAI,KAAK,KAAM,EAAG,CAAC,EAAE,mBAAmBA,EAAQ,CAAE,QAAS,SAAU,EACrE,IAAI,KAAK,KAAM,EAAG,CAAC,EAAE,mBAAmBA,EAAQ,CAAE,QAAS,SAAU,EACrE,IAAI,KAAK,KAAM,EAAG,EAAE,EAAE,mBAAmBA,EAAQ,CAAE,QAAS,QAAQ,CAAE,CAC1E,CACA,CA6CA,SAASE,GAAmBC,EAAY,KAAK,IAAG,EAAIC,EAAO,CAAA,EAAI,CAC7D,MAAMC,EAAU,CACd,cAAe,GACf,SAAUC,GAAW,EACrB,aAAc,OACd,GAAGF,CACP,EACQG,EAAO,IAAI,KAAKJ,CAAS,EACzBK,EAAY,IAAI,KAAK,mBAAmB,CAACH,EAAQ,SAAUC,GAAW,CAAE,EAAG,CAAE,QAAS,OAAQ,MAAOD,EAAQ,YAAY,CAAE,EAE3HI,GADOF,EAAK,QAAO,EAAK,KAAK,IAAG,GACf,IACvB,GAAI,KAAK,IAAIE,CAAO,EAAI,KACtB,OAAOJ,EAAQ,eAAiBG,EAAU,OAAO,KAAK,MAAMC,CAAO,EAAG,QAAQ,EAEhF,MAAMC,EAAUD,EAAU,GAC1B,GAAI,KAAK,IAAIC,CAAO,GAAK,GACvB,OAAOF,EAAU,OAAO,KAAK,MAAME,CAAO,EAAG,QAAQ,EAEvD,MAAMC,EAAQD,EAAU,GACxB,GAAI,KAAK,IAAIC,CAAK,EAAI,KACpB,OAAOH,EAAU,OAAO,KAAK,MAAMG,CAAK,EAAG,MAAM,EAEnD,MAAMC,EAAOD,EAAQ,GACrB,GAAI,KAAK,IAAIC,CAAI,EAAI,IACnB,OAAOJ,EAAU,OAAO,KAAK,MAAMI,CAAI,EAAG,KAAK,EAEjD,GAAI,KAAK,IAAIA,CAAI,EAAI,KAAM,CACzB,MAAMC,EAAQD,EAAO,EACrB,OAAOJ,EAAU,OAAO,KAAK,MAAMK,CAAK,EAAG,MAAM,CACnD,CACA,MAAMC,EAASF,EAAO,GAChBG,EAAS,KAAK,IAAID,CAAM,EAAI,GAAK,CAAE,MAAOT,EAAQ,aAAc,IAAK,SAAS,EAAK,CAAE,KAAMA,EAAQ,eAAiB,SAAW,UAAY,UAAW,MAAOA,EAAQ,YAAY,EAEvL,OAD0B,IAAI,KAAK,eAAe,CAACA,EAAQ,SAAUC,IAAa,EAAGS,CAAM,EAClE,OAAOR,CAAI,CACtC,CC1DA,SAASS,GAA0BC,EAAS,GAAI,CAC/C,SAASC,EAAOC,EAAI,CACnB,OAAO,OAAOA,GAAO,UACtB,CACA,MAAMC,EAAmBF,EAAOD,CAAM,EAAI,CACzC,QAASA,EACT,QAASA,CACX,EAAKA,EACE,CAAE,QAAAI,EAAS,UAAAC,CAAS,EAAKF,EAC/B,GAAI,CAACF,EAAOG,CAAO,EAAG,OAAOJ,EAC7B,MAAMM,EAA+B,IAAI,QACzC,MAAO,CACN,GAAGH,EACH,QAAQI,EAAIC,EAASC,EAAOC,EAAU,CACrC,IAAIC,EACJ,MAAMC,GAASD,EAAoBL,EAAa,IAAIC,CAAE,KAAO,MAAQI,IAAsB,OAASA,EAAoBE,GAAW,EACnIP,EAAa,IAAIC,EAAIK,CAAK,EAC1BA,EAAM,IAAI,IAAM,CAC2BR,IAAQG,EAAIC,EAASC,EAAOC,CAAQ,CAC/E,CAAC,CACF,EACA,UAAUH,EAAIC,EAASC,EAAOC,EAAU,CACvC,IAAII,GACHA,EAAqBR,EAAa,IAAIC,CAAE,KAAO,MAAQO,IAAuB,QAAUA,EAAmB,KAAI,EAChHR,EAAa,OAAOC,CAAE,EAClBN,EAAOI,CAAS,GAAGA,EAAUE,EAAIC,EAASC,EAAOC,CAAQ,CAC9D,CACF,CACA,CAQA,SAASK,GAAkBb,EAAIc,EAAc,CAC5C,OAAIC,GAAe,GAClBC,GAAehB,EAAIc,CAAY,EACxB,IAED,EACR,CA0DA,MAAMG,GAAwC,IAAI,QAc5CC,GAAc,IAAIC,IAAS,CAChC,IAAIC,EACJ,MAAMC,EAAMF,EAAK,CAAC,EACZG,GAAYF,EAAsBG,GAAkB,KAAQ,MAAQH,IAAwB,OAAS,OAASA,EAAoB,MAClII,EAAQF,GAAsDP,GAAe,EACnF,GAAIS,GAAS,MAAQ,CAACC,GAAmB,EAAI,MAAM,IAAI,MAAM,qCAAqC,EAClG,OAAID,GAASP,GAAsB,IAAIO,CAAK,GAAKH,KAAOJ,GAAsB,IAAIO,CAAK,EAAUP,GAAsB,IAAIO,CAAK,EAAEH,CAAG,EAC9HK,GAAO,GAAGP,CAAI,CACtB,EA0DMQ,GAAW,OAAO,OAAW,KAAe,OAAO,SAAa,IACrD,OAAO,kBAAsB,KAAe,sBAAsB,kBAEnF,MAAMC,GAAcC,GAAQA,GAAO,KAI7BC,GAAW,OAAO,UAAU,SAC5BC,GAAYF,GAAQC,GAAS,KAAKD,CAAG,IAAM,kBAI3CG,GAAO,IAAM,CAAC,EA2BpB,SAASC,GAAoBC,EAAQlC,EAAI,CACxC,SAASmC,KAAWhB,EAAM,CACzB,OAAO,IAAI,QAAQ,CAACiB,EAASC,IAAW,CACvC,QAAQ,QAAQH,EAAO,IAAMlC,EAAG,MAAM,KAAMmB,CAAI,EAAG,CAClD,GAAAnB,EACA,QAAS,KACT,KAAAmB,CACJ,CAAI,CAAC,EAAE,KAAKiB,CAAO,EAAE,MAAMC,CAAM,CAC/B,CAAC,CACF,CACA,OAAOF,CACR,CACA,MAAMG,GAAgBC,GACdA,EAAM,EAKd,SAASC,GAAeC,EAAIvD,EAAU,GAAI,CACzC,IAAIwD,EACAC,EACAC,EAAeZ,GACnB,MAAMa,EAAiBH,GAAU,CAChC,aAAaA,CAAK,EAClBE,EAAY,EACZA,EAAeZ,EAChB,EACA,IAAIc,EA2BJ,OA1BgBP,GAAW,CAC1B,MAAMQ,EAAWC,EAAQP,CAAE,EACrBQ,EAAcD,EAAQ9D,EAAQ,OAAO,EAE3C,OADIwD,GAAOG,EAAcH,CAAK,EAC1BK,GAAY,GAAKE,IAAgB,QAAUA,GAAe,GACzDN,IACHE,EAAcF,CAAQ,EACtBA,EAAW,QAEL,QAAQ,QAAQJ,GAAQ,GAEzB,IAAI,QAAQ,CAACH,EAASC,IAAW,CACvCO,EAAe1D,EAAQ,eAAiBmD,EAASD,EACjDU,EAAcP,EACVU,GAAe,CAACN,IAAUA,EAAW,WAAW,IAAM,CACrDD,GAAOG,EAAcH,CAAK,EAC9BC,EAAW,OACXP,EAAQU,EAAW,CAAE,CACtB,EAAGG,CAAW,GACdP,EAAQ,WAAW,IAAM,CACpBC,GAAUE,EAAcF,CAAQ,EACpCA,EAAW,OACXP,EAAQG,EAAM,CAAE,CACjB,EAAGQ,CAAQ,CACZ,CAAC,CACF,CAED,CAiIA,SAASG,GAAQC,EAAI,CACpB,OAAOA,EAAG,SAAS,KAAK,EAAI,OAAO,WAAWA,CAAE,EAAI,GAAK,OAAO,WAAWA,CAAE,CAC9E,CAuBA,SAASC,GAAQC,EAAO,CACvB,OAAO,MAAM,QAAQA,CAAK,EAAIA,EAAQ,CAACA,CAAK,CAC7C,CAiBA,SAASC,GAAmBC,EAAQ,CACnC,OAAiBhC,GAAkB,CACpC,CAUA,SAASiC,GAAuBC,EAAY,CAC3C,GAAI,CAAC9B,GAAU,OAAO8B,EACtB,IAAIC,EAAc,EACdC,EACAjD,EACJ,MAAMkD,EAAU,IAAM,CACrBF,GAAe,EACXhD,GAASgD,GAAe,IAC3BhD,EAAM,KAAI,EACViD,EAAQ,OACRjD,EAAQ,OAEV,EACA,OAAQ,IAAIS,KACXuC,GAAe,EACVhD,IACJA,EAAQC,GAAY,EAAI,EACxBgD,EAAQjD,EAAM,IAAI,IAAM+C,EAAW,GAAGtC,CAAI,CAAC,GAE5CN,GAAkB+C,CAAO,EAClBD,GAET,CAoNA,SAASE,GAAc7D,EAAIyC,EAAK,IAAKvD,EAAU,CAAA,EAAI,CAClD,OAAO+C,GAAoBO,GAAeC,EAAIvD,CAAO,EAAGc,CAAE,CAC3D,CAyMA,SAAS8D,GAAgBC,EAAQC,EAAI9E,EAAU,CAAA,EAAI,CAClD,KAAM,CAAE,YAAA+E,EAAc3B,GAAc,GAAG4B,CAAY,EAAKhF,EACxD,OAAOiF,GAAMJ,EAAQ9B,GAAoBgC,EAAaD,CAAE,EAAGE,CAAY,CACxE,CAgJA,SAASE,GAAapE,EAAIqE,EAAO,GAAMd,EAAQ,CAC1CD,GAAyB,EAAGgB,GAAUtE,EAAIuD,CAAM,EAC3Cc,EAAMrE,EAAE,EACZuE,GAASvE,CAAE,CACjB,CA8eA,SAASwE,GAAcR,EAAIS,EAAW,IAAKvF,EAAU,CAAA,EAAI,CACxD,KAAM,CAAE,UAAAwF,EAAY,GAAM,kBAAAC,EAAoB,EAAK,EAAKzF,EACxD,IAAIwD,EAAQ,KACZ,MAAMkC,EAAWC,EAAW,EAAK,EACjC,SAASC,GAAQ,CACZpC,IACH,cAAcA,CAAK,EACnBA,EAAQ,KAEV,CACA,SAASqC,GAAQ,CAChBH,EAAS,MAAQ,GACjBE,EAAK,CACN,CACA,SAASE,GAAS,CACjB,MAAMC,EAAgBjC,EAAQyB,CAAQ,EAClCQ,GAAiB,IACrBL,EAAS,MAAQ,GACbD,GAAmBX,EAAE,EACzBc,EAAK,EACDF,EAAS,QAAOlC,EAAQ,YAAYsB,EAAIiB,CAAa,GAC1D,CACA,OAAIP,GAAa/C,IAAUqD,EAAM,GAC7BE,GAAMT,CAAQ,GAAK,OAAOA,GAAa,aAAY5D,GAAkBsD,GAAMM,EAAU,IAAM,CAC1FG,EAAS,OAASjD,IAAUqD,EAAM,CACvC,CAAC,CAAC,EACFnE,GAAkBkE,CAAK,EAChB,CACN,SAAUI,GAAgBP,CAAQ,EAClC,MAAAG,EACA,OAAAC,CACF,CACA,CA2LA,SAASI,GAAerB,EAAQC,EAAI9E,EAAU,CAAA,EAAI,CACjD,KAAM,CAAE,SAAAmG,EAAW,EAAG,QAAAC,EAAU,OAAQ,GAAGpB,CAAY,EAAKhF,EAC5D,OAAO4E,GAAgBC,EAAQC,EAAI,CAClC,GAAGE,EACH,YAAa1B,GAAe6C,EAAU,CAAE,QAAAC,CAAO,CAAE,CACnD,CAAE,CACF,CA+EA,SAASC,GAAexB,EAAQC,EAAI9E,EAAS,CAC5C,OAAOiF,GAAMJ,EAAQC,EAAI,CACxB,GAAG9E,EACH,UAAW,EACb,CAAE,CACF,CAQA,SAASsG,GAAUzB,EAAQC,EAAI9E,EAAS,CACvC,OAAOiF,GAAMJ,EAAQC,EAAI,CACxB,GAAG9E,EACH,KAAM,EACR,CAAE,CACF,CChvDA,MAAMuG,GAAgB9D,GAAW,OAAS,OACpC+D,GAAkB/D,GAAW,OAAO,SAAW,OAUrD,SAASgE,EAAaC,EAAO,CAC5B,IAAIC,EACJ,MAAMC,EAAQ9C,EAAQ4C,CAAK,EAC3B,OAAQC,EAAqDC,GAAM,OAAS,MAAQD,IAAS,OAASA,EAAOC,CAC9G,CAGA,SAASC,KAAoB5E,EAAM,CAClC,MAAM6E,EAAW,CAAC3F,EAAI4F,EAAOC,EAAUhH,KACtCmB,EAAG,iBAAiB4F,EAAOC,EAAUhH,CAAO,EACrC,IAAMmB,EAAG,oBAAoB4F,EAAOC,EAAUhH,CAAO,GAEvDiH,EAAoBC,EAAS,IAAM,CACxC,MAAMC,EAAOjD,GAAQJ,EAAQ7B,EAAK,CAAC,CAAC,CAAC,EAAE,OAAQmF,GAAMA,GAAK,IAAI,EAC9D,OAAOD,EAAK,MAAOC,GAAM,OAAOA,GAAM,QAAQ,EAAID,EAAO,MAC1D,CAAC,EACD,OAAOd,GAAe,IAAM,CAC3B,IAAIgB,EAAuBC,EAC3B,MAAO,EACLD,GAAyBC,EAAyBL,EAAkB,SAAW,MAAQK,IAA2B,OAAS,OAASA,EAAuB,IAAKF,GAAMX,EAAaW,CAAC,CAAC,KAAO,MAAQC,IAA0B,OAASA,EAAwB,CAACd,EAAa,EAAE,OAAQa,GAAMA,GAAK,IAAI,EACvSlD,GAAQJ,EAAQmD,EAAkB,MAAQhF,EAAK,CAAC,EAAIA,EAAK,CAAC,CAAC,CAAC,EAC5DiC,GAAQqD,EAAMN,EAAkB,MAAQhF,EAAK,CAAC,EAAIA,EAAK,CAAC,CAAC,CAAC,EAC1D6B,EAAQmD,EAAkB,MAAQhF,EAAK,CAAC,EAAIA,EAAK,CAAC,CAAC,CACtD,CACC,EAAG,CAAC,CAACuF,EAAaC,EAAYC,EAAeC,CAAW,EAAGC,EAAGC,IAAc,CAC3E,GAAI,CAA4DL,GAAY,QAAW,CAA0DC,GAAW,QAAW,CAAgEC,GAAc,OAAS,OAC9P,MAAMI,EAAejF,GAAS8E,CAAW,EAAI,CAAE,GAAGA,CAAW,EAAKA,EAC5DI,EAAWP,EAAY,QAASrG,GAAOsG,EAAW,QAASV,GAAUW,EAAc,IAAKV,GAAaF,EAAS3F,EAAI4F,EAAOC,EAAUc,CAAY,CAAC,CAAC,CAAC,EACxJD,EAAU,IAAM,CACfE,EAAS,QAASjH,GAAOA,EAAE,CAAE,CAC9B,CAAC,CACF,EAAG,CAAE,MAAO,OAAQ,CACrB,CAIA,SAASkH,GAAe3D,EAAQ4D,EAASjI,EAAU,CAAA,EAAI,CACtD,KAAM,CAAE,OAAAkI,EAAS3B,GAAe,OAAA4B,EAAS,CAAA,EAAI,QAAAC,EAAU,GAAM,aAAAC,EAAe,GAAO,SAAAC,EAAW,EAAK,EAAKtI,EACxG,GAAI,CAACkI,EAAQ,OAAOI,EAAW,CAC9B,KAAMxF,GACN,OAAQA,GACR,QAASA,EACX,EAAKA,GAOJ,IAAIyF,EAAe,GACnB,MAAMC,EAAgBzB,GACdjD,EAAQqE,CAAM,EAAE,KAAM9D,GAAW,CACvC,GAAI,OAAOA,GAAW,SAAU,OAAO,MAAM,KAAK6D,EAAO,SAAS,iBAAiB7D,CAAM,CAAC,EAAE,KAAMlD,GAAOA,IAAO4F,EAAM,QAAUA,EAAM,aAAY,EAAG,SAAS5F,CAAE,CAAC,EAC5J,CACJ,MAAMA,EAAKsF,EAAapC,CAAM,EAC9B,OAAOlD,IAAO4F,EAAM,SAAW5F,GAAM4F,EAAM,aAAY,EAAG,SAAS5F,CAAE,EACtE,CACD,CAAC,EAMF,SAASsH,EAAiBpE,EAAQ,CACjC,MAAMqE,EAAK5E,EAAQO,CAAM,EACzB,OAAOqE,GAAMA,EAAG,EAAE,QAAQ,YAAc,EACzC,CACA,SAASC,EAAmBtE,EAAQ0C,EAAO,CAC1C,MAAM2B,EAAK5E,EAAQO,CAAM,EACnBuE,EAAWF,EAAG,EAAE,SAAWA,EAAG,EAAE,QAAQ,SAC9C,OAAIE,GAAY,MAAQ,CAAC,MAAM,QAAQA,CAAQ,EAAU,GAClDA,EAAS,KAAMC,GAAUA,EAAM,KAAO9B,EAAM,QAAUA,EAAM,aAAY,EAAG,SAAS8B,EAAM,EAAE,CAAC,CACrG,CACA,MAAM7B,EAAYD,GAAU,CAC3B,MAAM5F,EAAKsF,EAAapC,CAAM,EAC9B,GAAI0C,EAAM,QAAU,MAChB,EAAA,EAAE5F,aAAc,UAAYsH,EAAiBpE,CAAM,GAAKsE,EAAmBtE,EAAQ0C,CAAK,IACxF,GAAC5F,GAAMA,IAAO4F,EAAM,QAAUA,EAAM,aAAY,EAAG,SAAS5F,CAAE,GAElE,CAAA,GADI,WAAY4F,GAASA,EAAM,SAAW,IAAGwB,EAAe,CAACC,EAAazB,CAAK,GAC3E,CAACwB,EAAc,CAClBA,EAAe,GACf,MACD,CACAN,EAAQlB,CAAK,CAAA,CACd,EACA,IAAI+B,EAAoB,GACxB,MAAMC,EAAU,CACflC,EAAiBqB,EAAQ,QAAUnB,GAAU,CACvC+B,IACJA,EAAoB,GACpB,WAAW,IAAM,CAChBA,EAAoB,EACrB,EAAG,CAAC,EACJ9B,EAASD,CAAK,EAEhB,EAAG,CACF,QAAS,GACT,QAAAqB,CACH,CAAG,EACDvB,EAAiBqB,EAAQ,cAAgBd,GAAM,CAC9C,MAAMjG,EAAKsF,EAAapC,CAAM,EAC9BkE,EAAe,CAACC,EAAapB,CAAC,GAAK,CAAC,EAAEjG,GAAM,CAACiG,EAAE,aAAY,EAAG,SAASjG,CAAE,EAC1E,EAAG,CAAE,QAAS,GAAM,EACpBkH,GAAgBxB,EAAiBqB,EAAQ,OAASnB,GAAU,CAC3D,WAAW,IAAM,CAChB,MAAM5F,EAAKsF,EAAapC,CAAM,EAC9B,IAAI2E,EAAWd,EAAO,SAAS,cAC/B,KAA2Dc,GAAS,YAAYA,EAAWA,EAAS,WAAW,cACtDA,GAAS,UAAa,UAAY,CAA0C7H,GAAG,SAAS+G,EAAO,SAAS,aAAa,GAAID,EAAQlB,CAAK,CAChM,EAAG,CAAC,CACL,EAAG,CAAE,QAAS,EAAI,CAAE,CACtB,EAAG,OAAO,OAAO,EACVkC,EAAO,IAAMF,EAAQ,QAASjI,GAAOA,GAAI,EAC/C,OAAIwH,EAAiB,CACpB,KAAAW,EACA,OAAQ,IAAM,CACbV,EAAe,EAChB,EACA,QAAUxB,GAAU,CACnBwB,EAAe,GACfvB,EAASD,CAAK,EACdwB,EAAe,EAChB,CACF,EACQU,CACR,CAUA,SAASC,IAAa,CACrB,MAAMC,EAAYxD,EAAW,EAAK,EAC5BvD,EAAWC,GAAkB,EACnC,OAAID,GAAUgD,GAAU,IAAM,CAC7B+D,EAAU,MAAQ,EACnB,EAAG/G,CAAQ,EACJ+G,CACR,CAIA,SAASC,GAAaC,EAAU,CAC/B,MAAMF,EAAYD,GAAU,EAC5B,OAAOhC,EAAS,KACfiC,EAAU,MACH,CAAA,CAAQE,IACf,CACF,CAYA,SAASC,GAAoBjF,EAAQgF,EAAUrJ,EAAU,CAAA,EAAI,CAC5D,KAAM,CAAE,OAAAkI,EAAS3B,GAAe,GAAGgD,CAAe,EAAKvJ,EACvD,IAAIwJ,EACJ,MAAMC,EAA8BL,GAAa,IAAMlB,GAAU,qBAAsBA,CAAM,EACvFa,EAAU,IAAM,CACjBS,IACHA,EAAS,WAAU,EACnBA,EAAW,OAEb,EACME,EAAYzE,GAAMiC,EAAS,IAAM,CACtC,MAAMyC,EAAQzF,GAAQJ,EAAQO,CAAM,CAAC,EAAE,IAAIoC,CAAY,EAAE,OAAO/D,EAAU,EAC1E,OAAO,IAAI,IAAIiH,CAAK,CACrB,CAAC,EAAIC,GAAe,CACnBb,EAAO,EACHU,EAAY,OAASG,EAAW,OACnCJ,EAAW,IAAI,iBAAiBH,CAAQ,EACxCO,EAAW,QAASzI,GAAOqI,EAAS,QAAQrI,EAAIoI,CAAe,CAAC,EAElE,EAAG,CACF,UAAW,GACX,MAAO,MACT,CAAE,EACKM,EAAc,IACwCL,GAAS,YAAW,EAE1EP,EAAO,IAAM,CAClBS,EAAS,EACTX,EAAO,CACR,EACA,OAAApH,GAAkBsH,CAAI,EACf,CACN,YAAAQ,EACA,KAAAR,EACA,YAAAY,CACF,CACA,CAUA,SAASC,GAAiBzF,EAAQgF,EAAUrJ,EAAU,CAAA,EAAI,CACzD,KAAM,CAAE,OAAAkI,EAAS3B,GAAe,SAAAwD,EAA2D7B,GAAO,SAAU,MAAA8B,EAAQ,MAAM,EAAKhK,EAC/H,GAAI,CAACkI,GAAU,CAAC6B,EAAU,OAAOjH,GACjC,IAAImH,EACJ,MAAMC,EAAoBpJ,GAAO,CACQmJ,IAAM,EAC9CA,EAASnJ,CACV,EACM4I,EAAYS,GAAY,IAAM,CACnC,MAAMhJ,EAAKsF,EAAapC,CAAM,EAC9B,GAAIlD,EAAI,CACP,KAAM,CAAE,KAAA8H,CAAI,EAAKK,GAAoBS,EAAWK,GAAkB,CAC7DA,EAAc,IAAKC,GAAa,CAAC,GAAGA,EAAS,YAAY,CAAC,EAAE,KAAI,EAAG,KAAMC,GAASA,IAASnJ,GAAMmJ,EAAK,SAASnJ,CAAE,CAAC,GAAGkI,EAASe,CAAa,CAChJ,EAAG,CACF,OAAAlC,EACA,UAAW,GACX,QAAS,EACb,CAAI,EACDgC,EAAiBjB,CAAI,CACtB,CACD,EAAG,CAAE,MAAAe,EAAO,EACNO,EAAa,IAAM,CACxBb,EAAS,EACTQ,EAAgB,CACjB,EACA,OAAAvI,GAAkB4I,CAAU,EACrBA,CACR,CAGA,SAASC,GAAmBC,EAAW,CACtC,OAAI,OAAOA,GAAc,WAAmBA,EACnC,OAAOA,GAAc,SAAkB1D,GAAUA,EAAM,MAAQ0D,EAC/D,MAAM,QAAQA,CAAS,EAAW1D,GAAU0D,EAAU,SAAS1D,EAAM,GAAG,EAC1E,IAAM,EACd,CACA,SAAS2D,MAAezI,EAAM,CAC7B,IAAIE,EACA8F,EACAjI,EAAU,CAAA,EACViC,EAAK,SAAW,GACnBE,EAAMF,EAAK,CAAC,EACZgG,EAAUhG,EAAK,CAAC,EAChBjC,EAAUiC,EAAK,CAAC,GACNA,EAAK,SAAW,EAAO,OAAOA,EAAK,CAAC,GAAM,UACpDE,EAAM,GACN8F,EAAUhG,EAAK,CAAC,EAChBjC,EAAUiC,EAAK,CAAC,IAEhBE,EAAMF,EAAK,CAAC,EACZgG,EAAUhG,EAAK,CAAC,IAGhBE,EAAM,GACN8F,EAAUhG,EAAK,CAAC,GAEjB,KAAM,CAAE,OAAAoC,EAASkC,GAAe,UAAAoE,EAAY,UAAW,QAAAC,EAAU,GAAO,OAAAC,EAAS,EAAK,EAAK7K,EACrF8K,EAAYN,GAAmBrI,CAAG,EAKxC,OAAO0E,EAAiBxC,EAAQsG,EAJdvD,GAAM,CACnBA,EAAE,QAAUtD,EAAQ+G,CAAM,GAC1BC,EAAU1D,CAAC,GAAGa,EAAQb,CAAC,CAC5B,EACqDwD,CAAO,CAC7D,CAoMA,SAASG,GAAiB/K,EAAU,GAAI,CACvC,IAAIgL,EACJ,KAAM,CAAE,OAAA9C,EAAS3B,GAAe,KAAA0E,EAAO,GAAM,iBAAAC,EAAmB,EAAK,EAAKlL,EACpE+J,GAAYiB,EAAoBhL,EAAQ,YAAc,MAAQgL,IAAsB,OAASA,EAAoE9C,GAAO,SACxKiD,EAAuB,IAAM,CAClC,IAAIC,EAA8DrB,GAAS,cAC3E,GAAIkB,EAEH,QADII,EACqDD,GAAQ,YAAYA,EAAUA,GAAY,OAA+BC,EAAsBD,EAAQ,cAAgB,MAAQC,IAAwB,OAAS,OAASA,EAAoB,cAEvP,OAAOD,CACR,EACME,EAAgB3F,EAAU,EAC1B4F,EAAU,IAAM,CACrBD,EAAc,MAAQH,EAAoB,CAC3C,EACA,GAAIjD,EAAQ,CACX,MAAMsD,EAAkB,CACvB,QAAS,GACT,QAAS,EACZ,EACE3E,EAAiBqB,EAAQ,OAASnB,GAAU,CACvCA,EAAM,gBAAkB,MAC5BwE,EAAO,CACR,EAAGC,CAAe,EAClB3E,EAAiBqB,EAAQ,QAASqD,EAASC,CAAe,CAC3D,CACA,OAAIN,GAAkBpB,GAAiBwB,EAAeC,EAAS,CAAE,SAAAxB,CAAQ,CAAE,EAC3EwB,EAAO,EACAD,CACR,CA0kBA,MAAMG,GAAiB,OAAO,kBAAkB,EAEhD,SAASC,IAAc,CACtB,MAAMC,EAAWpJ,GAAmB,EAAKP,GAAYyJ,GAAgB,IAAI,EAAI,KAC7E,OAAO,OAAOE,GAAa,SAAWA,EAAW,MAClD,CAcA,SAASC,GAAcC,EAAO7L,EAAU,GAAI,CAC3C,KAAM,CAAE,OAAAkI,EAAS3B,GAAe,SAAAoF,EAA2BD,GAAW,CAAE,EAAK1L,EACvEyJ,EAA8BL,GAAa,IAAMlB,GAAU,eAAgBA,GAAU,OAAOA,EAAO,YAAe,UAAU,EAC5H4D,EAAanG,EAAW,OAAOgG,GAAa,QAAQ,EACpDI,EAAapG,EAAU,EACvBqG,EAAUrG,EAAW,EAAK,EAC1BsC,EAAWlB,GAAU,CAC1BiF,EAAQ,MAAQjF,EAAM,OACvB,EACA,OAAAoD,GAAY,IAAM,CACjB,GAAI2B,EAAW,MAAO,CACrBA,EAAW,MAAQ,CAACrC,EAAY,MAChCuC,EAAQ,MAAQlI,EAAQ+H,CAAK,EAAE,MAAM,GAAG,EAAE,KAAMI,GAAgB,CAC/D,MAAMC,EAAMD,EAAY,SAAS,SAAS,EACpCE,EAAWF,EAAY,MAAM,gDAAgD,EAC7EG,EAAWH,EAAY,MAAM,gDAAgD,EACnF,IAAII,EAAM,CAAA,EAAQF,GAAYC,GAC9B,OAAID,GAAYE,IAAKA,EAAMV,GAAY3H,GAAQmI,EAAS,CAAC,CAAC,GACtDC,GAAYC,IAAKA,EAAMV,GAAY3H,GAAQoI,EAAS,CAAC,CAAC,GACnDF,EAAM,CAACG,EAAMA,CACrB,CAAC,EACD,MACD,CACK5C,EAAY,QACjBsC,EAAW,MAAQ7D,EAAO,WAAWpE,EAAQ+H,CAAK,CAAC,EACnDG,EAAQ,MAAQD,EAAW,MAAM,QAClC,CAAC,EACDlF,EAAiBkF,EAAY,SAAU9D,EAAS,CAAE,QAAS,GAAM,EAC1Df,EAAS,IAAM8E,EAAQ,KAAK,CACpC,CA8hBA,SAASM,GAAiBtM,EAAS,CAClC,OAAO4L,GAAc,+BAAgC5L,CAAO,CAC7D,CAmrCA,SAASuM,GAAkBlI,EAAQgF,EAAUrJ,EAAU,CAAA,EAAI,CAC1D,KAAM,CAAE,OAAAkI,EAAS3B,GAAe,GAAGiG,CAAe,EAAKxM,EACvD,IAAIwJ,EACJ,MAAMC,EAA8BL,GAAa,IAAMlB,GAAU,mBAAoBA,CAAM,EACrFa,EAAU,IAAM,CACjBS,IACHA,EAAS,WAAU,EACnBA,EAAW,OAEb,EACME,EAAYzE,GAAMiC,EAAS,IAAM,CACtC,MAAMuF,EAAW3I,EAAQO,CAAM,EAC/B,OAAO,MAAM,QAAQoI,CAAQ,EAAIA,EAAS,IAAKtL,GAAOsF,EAAatF,CAAE,CAAC,EAAI,CAACsF,EAAagG,CAAQ,CAAC,CAClG,CAAC,EAAIC,GAAQ,CAEZ,GADA3D,EAAO,EACHU,EAAY,OAASvB,EAAQ,CAChCsB,EAAW,IAAI,eAAeH,CAAQ,EACtC,UAAWsD,KAAOD,EAASC,GAAKnD,EAAS,QAAQmD,EAAKH,CAAe,CACtE,CACD,EAAG,CACF,UAAW,GACX,MAAO,MACT,CAAE,EACKvD,EAAO,IAAM,CAClBF,EAAO,EACPW,EAAS,CACV,EACA,OAAA/H,GAAkBsH,CAAI,EACf,CACN,YAAAQ,EACA,KAAAR,CACF,CACA,CAkIA,SAAS2D,GAAevI,EAAQwI,EAAc,CAC7C,MAAO,EACP,OAAQ,CACT,EAAG7M,EAAU,CAAA,EAAI,CAChB,KAAM,CAAE,OAAAkI,EAAS3B,GAAe,IAAAuG,EAAM,aAAa,EAAK9M,EAClD+M,EAAQ7F,EAAS,IAAM,CAC5B,IAAI8F,EACJ,OAAQA,EAAgBvG,EAAapC,CAAM,KAAO,MAAQ2I,IAAkB,SAAWA,EAAgBA,EAAc,gBAAkB,MAAQA,IAAkB,OAAS,OAASA,EAAc,SAAS,KAAK,CAChN,CAAC,EACKC,EAAQtH,EAAWkH,EAAY,KAAK,EACpCK,EAASvH,EAAWkH,EAAY,MAAM,EACtC,CAAE,KAAMM,CAAK,EAAKZ,GAAkBlI,EAAQ,CAAC,CAAC+I,CAAK,IAAM,CAC9D,MAAMC,EAAUP,IAAQ,aAAeM,EAAM,cAAgBN,IAAQ,cAAgBM,EAAM,eAAiBA,EAAM,0BAClH,GAAIlF,GAAU6E,EAAM,MAAO,CAC1B,MAAMO,EAAQ7G,EAAapC,CAAM,EACjC,GAAIiJ,EAAO,CACV,MAAMC,EAAOD,EAAM,sBAAqB,EACxCL,EAAM,MAAQM,EAAK,MACnBL,EAAO,MAAQK,EAAK,MACrB,CACD,SAAWF,EAAS,CACnB,MAAMG,EAAgBtJ,GAAQmJ,CAAO,EACrCJ,EAAM,MAAQO,EAAc,OAAO,CAACC,EAAK,CAAE,WAAAC,KAAiBD,EAAMC,EAAY,CAAC,EAC/ER,EAAO,MAAQM,EAAc,OAAO,CAACC,EAAK,CAAE,UAAAE,KAAgBF,EAAME,EAAW,CAAC,CAC/E,MACCV,EAAM,MAAQG,EAAM,YAAY,MAChCF,EAAO,MAAQE,EAAM,YAAY,MAEnC,EAAGpN,CAAO,EACVkF,GAAa,IAAM,CAClB,MAAM0I,EAAMnH,EAAapC,CAAM,EAC3BuJ,IACHX,EAAM,MAAQ,gBAAiBW,EAAMA,EAAI,YAAcf,EAAY,MACnEK,EAAO,MAAQ,iBAAkBU,EAAMA,EAAI,aAAef,EAAY,OAExE,CAAC,EACD,MAAMgB,EAAQ5I,GAAM,IAAMwB,EAAapC,CAAM,EAAIuJ,GAAQ,CACxDX,EAAM,MAAQW,EAAMf,EAAY,MAAQ,EACxCK,EAAO,MAAQU,EAAMf,EAAY,OAAS,CAC3C,CAAC,EACD,SAAS5D,GAAO,CACfkE,EAAK,EACLU,EAAK,CACN,CACA,MAAO,CACN,MAAAZ,EACA,OAAAC,EACA,KAAAjE,CACF,CACA,CAWA,SAAS6E,GAAwBzJ,EAAQgF,EAAUrJ,EAAU,CAAA,EAAI,CAChE,KAAM,CAAE,KAAA+N,EAAM,WAAAC,EAAY,UAAAC,EAAY,EAAG,OAAA/F,EAAS3B,GAAe,UAAAf,EAAY,EAAI,EAAKxF,EAChFyJ,EAA8BL,GAAa,IAAMlB,GAAU,yBAA0BA,CAAM,EAC3FgG,EAAUhH,EAAS,IACjBhD,GAAQJ,EAAQO,CAAM,CAAC,EAAE,IAAIoC,CAAY,EAAE,OAAO/D,EAAU,CACnE,EACD,IAAIqG,EAAUjG,GACd,MAAM4C,EAAWC,EAAWH,CAAS,EAC/BkE,EAAYD,EAAY,MAAQxE,GAAM,IAAM,CACjDiJ,EAAQ,MACRzH,EAAasH,CAAI,EACjBjK,EAAQkK,CAAU,EAClBtI,EAAS,KACX,EAAI,CAAC,CAACwI,EAASH,EAAMC,CAAU,IAAM,CAGnC,GAFAjF,EAAO,EACH,CAACrD,EAAS,OACV,CAACwI,EAAQ,OAAQ,OACrB,MAAM1E,EAAW,IAAI,qBAAqBH,EAAU,CACnD,KAAM5C,EAAasH,CAAI,EACvB,WAAAC,EACA,UAAAC,CACH,CAAG,EACDC,EAAQ,QAAS/M,GAAOA,GAAMqI,EAAS,QAAQrI,CAAE,CAAC,EAClD4H,EAAU,IAAM,CACfS,EAAS,WAAU,EACnBT,EAAUjG,EACX,CACD,EAAG,CACF,UAAA0C,EACA,MAAO,MACT,CAAE,EAAI1C,GACCmG,EAAO,IAAM,CAClBF,EAAO,EACPW,EAAS,EACThE,EAAS,MAAQ,EAClB,EACA,OAAA/D,GAAkBsH,CAAI,EACf,CACN,YAAAQ,EACA,SAAA/D,EACA,OAAQ,CACPqD,EAAO,EACPrD,EAAS,MAAQ,EAClB,EACA,QAAS,CACRA,EAAS,MAAQ,EAClB,EACA,KAAAuD,CACF,CACA,CAGA,SAASkF,GAAqB/C,EAASpL,EAAU,GAAI,CACpD,KAAM,CAAE,OAAAkI,EAAS3B,GAAe,aAAA6H,EAAc,UAAAH,EAAY,EAAG,WAAAD,EAAY,KAAAK,EAAO,GAAO,aAAAC,EAAe,EAAK,EAAKtO,EAC1GuO,EAAY5I,EAAW2I,CAAY,EACnCE,EAAqBV,GAAwB1C,EAAUqD,GAAgC,CAC5F,IAAIC,EAAiBH,EAAU,MAC3BI,EAAa,EACjB,UAAWvB,KAASqB,EAAiCrB,EAAM,MAAQuB,IAClEA,EAAavB,EAAM,KACnBsB,EAAiBtB,EAAM,gBAExBmB,EAAU,MAAQG,EACdL,GAAM/H,GAAUiI,EAAW,IAAM,CACpCC,EAAmB,KAAI,CACxB,CAAC,CACF,EAAG,CACF,KAAMJ,EACN,OAAAlG,EACA,UAAA+F,EACA,WAAAD,CACF,CAAE,EACD,OAAOhO,EAAQ,SAAW,CACzB,GAAGwO,EACH,UAAAD,CACF,EAAKA,CACL,CAsrBA,MAAMK,GAAiB,UACjBC,GAAkB,WAClBC,GAA4B,gBAQlC,SAASC,GAAe1K,EAAQrE,EAAU,GAAI,CAC7C,KAAM,CAAE,OAAAkI,EAAS3B,EAAa,EAAKvG,EAC7BgP,EAAgB9H,EAAS,IAAMT,EAAapC,CAAM,CAAC,EACnD4K,EAAWtJ,EAAW,EAAK,EAC3BuJ,EAAUhI,EAAS,IAAM+H,EAAS,KAAK,EAE7C,GAAI,CAAC/G,GAAU,CADO6C,GAAiB/K,CAAO,EAChB,MAAO,MAAO,CAAE,QAAAkP,CAAO,EACrD,MAAM1D,EAAkB,CAAE,QAAS,EAAI,EACvC,OAAA3E,EAAiBmI,EAAeJ,GAAgB,IAAMK,EAAS,MAAQ,GAAMzD,CAAe,EAC5F3E,EAAiBmI,EAAeH,GAAiB,IAAM,CACtD,IAAIM,EAAuBC,EAAsBC,EACjD,OAAOJ,EAAS,OAASE,GAAyBC,EAAuBJ,EAAc,SAAW,MAAQI,IAAyB,SAAWC,EAAyBD,EAAqB,WAAa,MAAQC,IAA2B,OAAS,OAASA,EAAuB,KAAKD,EAAsBN,EAAyB,KAAO,MAAQK,IAA0B,OAASA,EAAwB,EACpZ,EAAG3D,CAAe,EACX,CAAE,QAAA0D,CAAO,CACjB,CAmlFA,SAASI,GAASjL,EAAQrE,EAAU,GAAI,CACvC,KAAM,CAAE,UAAAiO,EAAY,GAAI,QAAAsB,EAAS,WAAAC,EAAY,aAAAC,EAAc,QAAA7E,EAAU,EAAI,EAAK5K,EACxE0P,EAAcC,GAAS,CAC5B,EAAG,EACH,EAAG,CACL,CAAE,EACKC,EAAYD,GAAS,CAC1B,EAAG,EACH,EAAG,CACL,CAAE,EACKE,EAAQ3I,EAAS,IAAMwI,EAAY,EAAIE,EAAU,CAAC,EAClDE,EAAQ5I,EAAS,IAAMwI,EAAY,EAAIE,EAAU,CAAC,EAClD,CAAE,IAAAG,EAAK,IAAAC,CAAG,EAAK,KACfC,EAAsB/I,EAAS,IAAM6I,EAAIC,EAAIH,EAAM,KAAK,EAAGG,EAAIF,EAAM,KAAK,CAAC,GAAK7B,CAAS,EACzFiC,EAAYvK,EAAW,EAAK,EAC5BwK,EAAYjJ,EAAS,IACrB+I,EAAoB,MACrBD,EAAIH,EAAM,KAAK,EAAIG,EAAIF,EAAM,KAAK,EAAUD,EAAM,MAAQ,EAAI,OAAS,QAC/DC,EAAM,MAAQ,EAAI,KAAO,OAFE,MAGvC,EACKM,EAAuBhJ,GAAM,CAACA,EAAE,QAAQ,CAAC,EAAE,QAASA,EAAE,QAAQ,CAAC,EAAE,OAAO,EACxEiJ,EAAoB,CAACC,EAAGC,IAAM,CACnCb,EAAY,EAAIY,EAChBZ,EAAY,EAAIa,CACjB,EACMC,EAAkB,CAACF,EAAGC,IAAM,CACjCX,EAAU,EAAIU,EACdV,EAAU,EAAIW,CACf,EACM/E,EAAkB,CACvB,QAAAZ,EACA,QAAS,CAACA,CACZ,EACO6F,EAAcrJ,GAAM,CACrB8I,EAAU,OAAuDV,IAAWpI,EAAG+I,EAAU,KAAK,EAClGD,EAAU,MAAQ,EACnB,EACMQ,EAAQ,CACb7J,EAAiBxC,EAAQ,aAAe+C,GAAM,CAC7C,GAAIA,EAAE,QAAQ,SAAW,EAAG,OAC5B,KAAM,CAACkJ,EAAGC,CAAC,EAAIH,EAAoBhJ,CAAC,EACpCiJ,EAAkBC,EAAGC,CAAC,EACtBC,EAAgBF,EAAGC,CAAC,EACgCd,IAAarI,CAAC,CACnE,EAAGoE,CAAe,EAClB3E,EAAiBxC,EAAQ,YAAc+C,GAAM,CAC5C,GAAIA,EAAE,QAAQ,SAAW,EAAG,OAC5B,KAAM,CAACkJ,EAAGC,CAAC,EAAIH,EAAoBhJ,CAAC,EACpCoJ,EAAgBF,EAAGC,CAAC,EAChB/E,EAAgB,SAAW,CAACA,EAAgB,SAAW,KAAK,IAAIqE,EAAM,KAAK,EAAI,KAAK,IAAIC,EAAM,KAAK,GAAG1I,EAAE,eAAc,EACtH,CAAC8I,EAAU,OAASD,EAAoB,QAAOC,EAAU,MAAQ,IACjEA,EAAU,OAAiDX,IAAQnI,CAAC,CACzE,EAAGoE,CAAe,EAClB3E,EAAiBxC,EAAQ,CAAC,WAAY,aAAa,EAAGoM,EAAYjF,CAAe,CACnF,EAEC,MAAO,CACN,UAAA0E,EACA,UAAAC,EACA,YAAAT,EACA,UAAAE,EACA,QAASC,EACT,QAASC,EACT,KARY,IAAMY,EAAM,QAASC,GAAMA,GAAG,CAS5C,CACA,CC/nNA,MAAMC,GAAoB,KACpBC,GAA0BD,GAAoB,EAC9CE,GAAwBC,GAAe,SAAS,gBAAgB,YAAcA,EAC9EC,GAAWC,GAAIH,GAAqBF,EAAiB,CAAC,EACtDM,GAAgBD,GAAIH,GAAqBD,EAAuB,CAAC,EACvE,OAAO,iBAAiB,SAAU,IAAM,CACtCG,GAAS,MAAQF,GAAqBF,EAAiB,EACvDM,GAAc,MAAQJ,GAAqBD,EAAuB,CACpE,EAAG,CAAE,QAAS,GAAM,EACpB,SAASM,IAAc,CACrB,OAAOC,GAASJ,EAAQ,CAC1B,CACA,SAASK,IAAmB,CAC1B,OAAOD,GAASF,EAAa,CAC/B,CCdK,MAACI,GAAQC,GAAK,ECDbC,GAA8C,OAAO,IAAI,0BAA0B,EACnFC,GAAwC,OAAO,IAAI,qBAAqB,ECD9E,SAASC,IAAe,CACtB,OAAA,OAAO,iBAAmB,CAAA,EACnB,OAAO,cAChB,CACA,SAASC,IAA4B,CACnC,IAAIC,EAAc,CAAA,EAClB,MAAO,CAIL,OAAQ,CACNA,EAAc,CAAC,GAAGF,IAAc,EAChC,UAAWG,KAAQD,EACjBC,EAAK,MAAK,CAEd,EAKA,SAAU,CACR,GAAID,EAAY,SAAWF,GAAY,EAAG,OACxC,UAAWG,KAAQD,EACjBC,EAAK,QAAO,EAGhBD,EAAc,CAAA,CAChB,CACJ,CACA,CC3BA,SAASE,GAAoBC,EAAa/R,EAAU,GAAI,CACtD,MAAMgS,EAAsBL,GAAyB,EACrD1M,GAAM8M,EAAa,IAAM,CACnBjO,EAAQ9D,EAAQ,QAAQ,IAGxB8D,EAAQiO,CAAW,EACrBC,EAAoB,MAAK,EAEzBA,EAAoB,QAAO,EAE/B,CAAC,EACDC,GAAY,IAAM,CAChBD,EAAoB,QAAO,CAC7B,CAAC,CACH,CCZA,MAAME,GAAQ,CAAC,MAAO,QAAS,SAAU,MAAM,EACzCC,GAAa,CAAC,QAAS,KAAK,EAC5BC,GAA0BF,GAAM,OAAO,CAACzE,EAAK4E,IAAS5E,EAAI,OAAO4E,EAAMA,EAAO,IAAMF,GAAW,CAAC,EAAGE,EAAO,IAAMF,GAAW,CAAC,CAAC,EAAG,EAAE,EAClIG,GAAM,KAAK,IACXvC,GAAM,KAAK,IACXwC,GAAQ,KAAK,MACbC,GAAQ,KAAK,MACbC,GAAeC,IAAM,CACzB,EAAGA,EACH,EAAGA,CACL,GACMC,GAAkB,CACtB,KAAM,QACN,MAAO,OACP,OAAQ,MACR,IAAK,QACP,EACA,SAASC,GAAMC,EAAO1O,EAAO2O,EAAK,CAChC,OAAO/C,GAAI8C,EAAOP,GAAInO,EAAO2O,CAAG,CAAC,CACnC,CACA,SAASC,GAAS5O,EAAO6O,EAAO,CAC9B,OAAO,OAAO7O,GAAU,WAAaA,EAAM6O,CAAK,EAAI7O,CACtD,CACA,SAAS8O,GAAQC,EAAW,CAC1B,OAAOA,EAAU,MAAM,GAAG,EAAE,CAAC,CAC/B,CACA,SAASC,GAAaD,EAAW,CAC/B,OAAOA,EAAU,MAAM,GAAG,EAAE,CAAC,CAC/B,CACA,SAASE,GAAgBC,EAAM,CAC7B,OAAOA,IAAS,IAAM,IAAM,GAC9B,CACA,SAASC,GAAcD,EAAM,CAC3B,OAAOA,IAAS,IAAM,SAAW,OACnC,CACA,SAASE,GAAYL,EAAW,CAC9B,MAAMM,EAAYN,EAAU,CAAC,EAC7B,OAAOM,IAAc,KAAOA,IAAc,IAAM,IAAM,GACxD,CACA,SAASC,GAAiBP,EAAW,CACnC,OAAOE,GAAgBG,GAAYL,CAAS,CAAC,CAC/C,CACA,SAASQ,GAAkBR,EAAWS,EAAOC,EAAK,CAC5CA,IAAQ,SACVA,EAAM,IAER,MAAMC,EAAYV,GAAaD,CAAS,EAClCY,EAAgBL,GAAiBP,CAAS,EAC1Ca,EAAST,GAAcQ,CAAa,EAC1C,IAAIE,EAAoBF,IAAkB,IAAMD,KAAeD,EAAM,MAAQ,SAAW,QAAU,OAASC,IAAc,QAAU,SAAW,MAC9I,OAAIF,EAAM,UAAUI,CAAM,EAAIJ,EAAM,SAASI,CAAM,IACjDC,EAAoBC,GAAqBD,CAAiB,GAErD,CAACA,EAAmBC,GAAqBD,CAAiB,CAAC,CACpE,CACA,SAASE,GAAsBhB,EAAW,CACxC,MAAMiB,EAAoBF,GAAqBf,CAAS,EACxD,MAAO,CAACkB,GAA8BlB,CAAS,EAAGiB,EAAmBC,GAA8BD,CAAiB,CAAC,CACvH,CACA,SAASC,GAA8BlB,EAAW,CAChD,OAAOA,EAAU,SAAS,OAAO,EAAIA,EAAU,QAAQ,QAAS,KAAK,EAAIA,EAAU,QAAQ,MAAO,OAAO,CAC3G,CACA,MAAMmB,GAAc,CAAC,OAAQ,OAAO,EAC9BC,GAAc,CAAC,QAAS,MAAM,EAC9BC,GAAc,CAAC,MAAO,QAAQ,EAC9BC,GAAc,CAAC,SAAU,KAAK,EACpC,SAASC,GAAYpC,EAAMqC,EAASd,EAAK,CACvC,OAAQvB,EAAI,CACV,IAAK,MACL,IAAK,SACH,OAAIuB,EAAYc,EAAUJ,GAAcD,GACjCK,EAAUL,GAAcC,GACjC,IAAK,OACL,IAAK,QACH,OAAOI,EAAUH,GAAcC,GACjC,QACE,MAAO,CAAA,CACb,CACA,CACA,SAASG,GAA0BzB,EAAW0B,EAAezE,EAAWyD,EAAK,CAC3E,MAAMC,EAAYV,GAAaD,CAAS,EACxC,IAAI2B,EAAOJ,GAAYxB,GAAQC,CAAS,EAAG/C,IAAc,QAASyD,CAAG,EACrE,OAAIC,IACFgB,EAAOA,EAAK,IAAIxC,GAAQA,EAAO,IAAMwB,CAAS,EAC1Ce,IACFC,EAAOA,EAAK,OAAOA,EAAK,IAAIT,EAA6B,CAAC,IAGvDS,CACT,CACA,SAASZ,GAAqBf,EAAW,CACvC,MAAMb,EAAOY,GAAQC,CAAS,EAC9B,OAAOP,GAAgBN,CAAI,EAAIa,EAAU,MAAMb,EAAK,MAAM,CAC5D,CACA,SAASyC,GAAoBC,EAAS,CACpC,IAAIC,EAAcC,EAAgBC,EAAiBC,EACnD,MAAO,CACL,KAAMH,EAAeD,EAAQ,MAAQ,KAAOC,EAAe,EAC3D,OAAQC,EAAiBF,EAAQ,QAAU,KAAOE,EAAiB,EACnE,QAASC,EAAkBH,EAAQ,SAAW,KAAOG,EAAkB,EACvE,MAAOC,EAAgBJ,EAAQ,OAAS,KAAOI,EAAgB,CACnE,CACA,CACA,SAASC,GAAiBL,EAAS,CACjC,OAAO,OAAOA,GAAY,SAAWD,GAAoBC,CAAO,EAAI,CAClE,IAAKA,EACL,MAAOA,EACP,OAAQA,EACR,KAAMA,CACV,CACA,CACA,SAASM,GAAiB9H,EAAM,CAC9B,KAAM,CACJ,EAAA+C,EACA,EAAAC,EACA,MAAAtD,EACA,OAAAC,CACJ,EAAMK,EACJ,MAAO,CACL,MAAAN,EACA,OAAAC,EACA,IAAKqD,EACL,KAAMD,EACN,MAAOA,EAAIrD,EACX,OAAQsD,EAAIrD,EACZ,EAAAoD,EACA,EAAAC,CACJ,CACA,CClIA,SAAS+E,GAA2BC,EAAMrC,EAAWU,EAAK,CACxD,GAAI,CACF,UAAA4B,EACA,SAAAC,CACJ,EAAMF,EACJ,MAAMG,EAAWnC,GAAYL,CAAS,EAChCY,EAAgBL,GAAiBP,CAAS,EAC1CyC,EAAcrC,GAAcQ,CAAa,EACzCzB,EAAOY,GAAQC,CAAS,EACxB0C,EAAaF,IAAa,IAC1BG,EAAUL,EAAU,EAAIA,EAAU,MAAQ,EAAIC,EAAS,MAAQ,EAC/DK,EAAUN,EAAU,EAAIA,EAAU,OAAS,EAAIC,EAAS,OAAS,EACjEM,EAAcP,EAAUG,CAAW,EAAI,EAAIF,EAASE,CAAW,EAAI,EACzE,IAAIK,EACJ,OAAQ3D,EAAI,CACV,IAAK,MACH2D,EAAS,CACP,EAAGH,EACH,EAAGL,EAAU,EAAIC,EAAS,MAClC,EACM,MACF,IAAK,SACHO,EAAS,CACP,EAAGH,EACH,EAAGL,EAAU,EAAIA,EAAU,MACnC,EACM,MACF,IAAK,QACHQ,EAAS,CACP,EAAGR,EAAU,EAAIA,EAAU,MAC3B,EAAGM,CACX,EACM,MACF,IAAK,OACHE,EAAS,CACP,EAAGR,EAAU,EAAIC,EAAS,MAC1B,EAAGK,CACX,EACM,MACF,QACEE,EAAS,CACP,EAAGR,EAAU,EACb,EAAGA,EAAU,CACrB,CACA,CACE,MAAM3B,EAAYV,GAAaD,CAAS,EACxC,OAAIW,IACFmC,EAAOlC,CAAa,GAAKiC,GAAelC,IAAc,MAAQ,EAAI,KAAOD,GAAOgC,EAAa,GAAK,IAE7FI,CACT,CAUA,eAAeC,GAAexR,EAAOzE,EAAS,CAC5C,IAAIkW,EACAlW,IAAY,SACdA,EAAU,CAAA,GAEZ,KAAM,CACJ,EAAAsQ,EACA,EAAAC,EACA,SAAA4F,EACA,MAAAxC,EACA,SAAAyC,EACA,SAAAC,CACJ,EAAM5R,EACE,CACJ,SAAA6R,EAAW,oBACX,aAAAC,EAAe,WACf,eAAAC,EAAiB,WACjB,YAAAC,EAAc,GACd,QAAA1B,EAAU,CACd,EAAMhC,GAAS/S,EAASyE,CAAK,EACrBiS,EAAgBtB,GAAiBL,CAAO,EAExC3J,EAAUgL,EAASK,EADND,IAAmB,WAAa,YAAc,WACbA,CAAc,EAC5DG,EAAqBtB,GAAiB,MAAMc,EAAS,gBAAgB,CACzE,SAAWD,EAAwB,MAAOC,EAAS,WAAa,KAAO,OAASA,EAAS,UAAU/K,CAAO,KAAO,MAAO8K,EAAgC9K,EAAUA,EAAQ,gBAAmB,MAAO+K,EAAS,oBAAsB,KAAO,OAASA,EAAS,mBAAmBC,EAAS,QAAQ,GAChS,SAAAE,EACA,aAAAC,EACA,SAAAF,CACJ,CAAG,CAAC,EACI9I,EAAOiJ,IAAmB,WAAa,CAC3C,EAAAlG,EACA,EAAAC,EACA,MAAOoD,EAAM,SAAS,MACtB,OAAQA,EAAM,SAAS,MAC3B,EAAMA,EAAM,UACJiD,EAAe,MAAOT,EAAS,iBAAmB,KAAO,OAASA,EAAS,gBAAgBC,EAAS,QAAQ,GAC5GS,EAAe,MAAOV,EAAS,WAAa,KAAO,OAASA,EAAS,UAAUS,CAAY,IAAQ,MAAOT,EAAS,UAAY,KAAO,OAASA,EAAS,SAASS,CAAY,IAAO,CACxL,EAAG,EACH,EAAG,CACP,EACQE,EAAoBzB,GAAiBc,EAAS,sDAAwD,MAAMA,EAAS,sDAAsD,CAC/K,SAAAC,EACA,KAAA7I,EACA,aAAAqJ,EACA,SAAAP,CACJ,CAAG,EAAI9I,CAAI,EACT,MAAO,CACL,KAAMoJ,EAAmB,IAAMG,EAAkB,IAAMJ,EAAc,KAAOG,EAAY,EACxF,QAASC,EAAkB,OAASH,EAAmB,OAASD,EAAc,QAAUG,EAAY,EACpG,MAAOF,EAAmB,KAAOG,EAAkB,KAAOJ,EAAc,MAAQG,EAAY,EAC5F,OAAQC,EAAkB,MAAQH,EAAmB,MAAQD,EAAc,OAASG,EAAY,CACpG,CACA,CAGA,MAAME,GAAkB,GASlBC,GAAkB,MAAOxB,EAAWC,EAAUwB,IAAW,CAC7D,KAAM,CACJ,UAAA/D,EAAY,SACZ,SAAAmD,EAAW,WACX,WAAAa,EAAa,CAAA,EACb,SAAAf,CACJ,EAAMc,EACEE,EAA6BhB,EAAS,eAAiBA,EAAW,CACtE,GAAGA,EACH,eAAAF,EACJ,EACQrC,EAAM,MAAOuC,EAAS,OAAS,KAAO,OAASA,EAAS,MAAMV,CAAQ,GAC5E,IAAI9B,EAAQ,MAAMwC,EAAS,gBAAgB,CACzC,UAAAX,EACA,SAAAC,EACA,SAAAY,CACJ,CAAG,EACG,CACF,EAAA/F,EACA,EAAAC,CACJ,EAAM+E,GAA2B3B,EAAOT,EAAWU,CAAG,EAChDwD,EAAoBlE,EACpBmE,EAAa,EACjB,MAAMC,EAAiB,CAAA,EACvB,QAASC,EAAI,EAAGA,EAAIL,EAAW,OAAQK,IAAK,CAC1C,MAAMC,EAAoBN,EAAWK,CAAC,EACtC,GAAI,CAACC,EACH,SAEF,KAAM,CACJ,KAAAC,EACA,GAAA3W,CACN,EAAQ0W,EACE,CACJ,EAAGE,EACH,EAAGC,EACH,KAAAC,EACA,MAAAC,CACN,EAAQ,MAAM/W,EAAG,CACX,EAAAwP,EACA,EAAAC,EACA,iBAAkB2C,EAClB,UAAWkE,EACX,SAAAf,EACA,eAAAiB,EACA,MAAA3D,EACA,SAAUwD,EACV,SAAU,CACR,UAAA3B,EACA,SAAAC,CACR,CACA,CAAK,EACDnF,EAAIoH,GAAwBpH,EAC5BC,EAAIoH,GAAwBpH,EAC5B+G,EAAeG,CAAI,EAAI,CACrB,GAAGH,EAAeG,CAAI,EACtB,GAAGG,CACT,EACQC,GAASR,EAAaN,KACxBM,IACI,OAAOQ,GAAU,WACfA,EAAM,YACRT,EAAoBS,EAAM,WAExBA,EAAM,QACRlE,EAAQkE,EAAM,QAAU,GAAO,MAAM1B,EAAS,gBAAgB,CAC5D,UAAAX,EACA,SAAAC,EACA,SAAAY,CACZ,CAAW,EAAIwB,EAAM,OAEZ,CACC,EAAAvH,EACA,EAAAC,CACV,EAAY+E,GAA2B3B,EAAOyD,EAAmBxD,CAAG,GAE9D2D,EAAI,GAER,CACA,MAAO,CACL,EAAAjH,EACA,EAAAC,EACA,UAAW6G,EACX,SAAAf,EACA,eAAAiB,CACJ,CACA,EAOMQ,GAAQ9X,IAAY,CACxB,KAAM,QACN,QAAAA,EACA,MAAM,GAAGyE,EAAO,CACd,KAAM,CACJ,EAAA6L,EACA,EAAAC,EACA,UAAA2C,EACA,MAAAS,EACA,SAAAwC,EACA,SAAAC,EACA,eAAAkB,CACN,EAAQ7S,EAEE,CACJ,QAAA2G,EACA,QAAA2J,EAAU,CAChB,EAAQhC,GAAS/S,EAASyE,CAAK,GAAK,CAAA,EAChC,GAAI2G,GAAW,KACb,MAAO,CAAA,EAET,MAAMsL,EAAgBtB,GAAiBL,CAAO,EACxCiB,EAAS,CACb,EAAA1F,EACA,EAAAC,CACN,EACU8C,EAAOI,GAAiBP,CAAS,EACjCa,EAAST,GAAcD,CAAI,EAC3B0E,EAAkB,MAAM5B,EAAS,cAAc/K,CAAO,EACtD4M,EAAU3E,IAAS,IACnB4E,EAAUD,EAAU,MAAQ,OAC5BE,EAAUF,EAAU,SAAW,QAC/BG,EAAaH,EAAU,eAAiB,cACxCI,EAAUzE,EAAM,UAAUI,CAAM,EAAIJ,EAAM,UAAUN,CAAI,EAAI2C,EAAO3C,CAAI,EAAIM,EAAM,SAASI,CAAM,EAChGsE,EAAYrC,EAAO3C,CAAI,EAAIM,EAAM,UAAUN,CAAI,EAC/CiF,EAAoB,MAAOnC,EAAS,iBAAmB,KAAO,OAASA,EAAS,gBAAgB/K,CAAO,GAC7G,IAAImN,EAAaD,EAAoBA,EAAkBH,CAAU,EAAI,GAGjE,CAACI,GAAc,CAAE,MAAOpC,EAAS,WAAa,KAAO,OAASA,EAAS,UAAUmC,CAAiB,MACpGC,EAAanC,EAAS,SAAS+B,CAAU,GAAKxE,EAAM,SAASI,CAAM,GAErE,MAAMyE,EAAoBJ,EAAU,EAAIC,EAAY,EAI9CI,EAAyBF,EAAa,EAAIR,EAAgBhE,CAAM,EAAI,EAAI,EACxE2E,EAAapG,GAAIoE,EAAcuB,CAAO,EAAGQ,CAAsB,EAC/DE,EAAarG,GAAIoE,EAAcwB,CAAO,EAAGO,CAAsB,EAI/D1I,EAAMwI,EAAaR,EAAgBhE,CAAM,EAAI4E,EAC7CC,EAASL,EAAa,EAAIR,EAAgBhE,CAAM,EAAI,EAAIyE,EACxDK,EAASjG,GAAM8F,EAAYE,EAAQ7I,CAAG,EAMtC+I,EAAkB,CAACxB,EAAe,OAASnE,GAAaD,CAAS,GAAK,MAAQ0F,IAAWC,GAAUlF,EAAM,UAAUI,CAAM,EAAI,GAAK6E,EAASF,EAAaA,EAAaC,GAAcZ,EAAgBhE,CAAM,EAAI,EAAI,EACjNgF,EAAkBD,EAAkBF,EAASF,EAAaE,EAASF,EAAaE,EAAS7I,EAAM,EACrG,MAAO,CACL,CAACsD,CAAI,EAAG2C,EAAO3C,CAAI,EAAI0F,EACvB,KAAM,CACJ,CAAC1F,CAAI,EAAGwF,EACR,aAAcD,EAASC,EAASE,EAChC,GAAID,GAAmB,CACrB,gBAAAC,CACV,CACA,EACM,MAAOD,CACb,CACE,CACF,GAEA,SAASE,GAAiBnF,EAAWoF,EAAeC,EAAmB,CAErE,OAD2CrF,EAAY,CAAC,GAAGqF,EAAkB,OAAOhG,GAAaC,GAAaD,CAAS,IAAMW,CAAS,EAAG,GAAGqF,EAAkB,OAAOhG,GAAaC,GAAaD,CAAS,IAAMW,CAAS,CAAC,EAAIqF,EAAkB,OAAOhG,GAAaD,GAAQC,CAAS,IAAMA,CAAS,GACxP,OAAOA,GAC3CW,EACKV,GAAaD,CAAS,IAAMW,IAAcoF,EAAgB7E,GAA8BlB,CAAS,IAAMA,EAAY,IAErH,EACR,CACH,CAOA,MAAMiG,GAAgB,SAAUnZ,EAAS,CACvC,OAAIA,IAAY,SACdA,EAAU,CAAA,GAEL,CACL,KAAM,gBACN,QAAAA,EACA,MAAM,GAAGyE,EAAO,CACd,IAAI2U,EAAuBC,EAAwBC,EACnD,KAAM,CACJ,MAAA3F,EACA,eAAA2D,EACA,UAAApE,EACA,SAAAiD,EACA,SAAAC,CACR,EAAU3R,EACE,CACJ,UAAA8U,EAAY,GACZ,UAAA1F,EACA,kBAAAqF,EAAoB9G,GACpB,cAAA6G,EAAgB,GAChB,GAAGO,CACX,EAAUzG,GAAS/S,EAASyE,CAAK,EACrBgV,EAAe5F,IAAc,QAAaqF,IAAsB9G,GAAa4G,GAAiBnF,GAAa,KAAMoF,EAAeC,CAAiB,EAAIA,EACrJQ,IAAiBN,EAAwB9B,EAAe,gBAAkB,KAAO,OAAS8B,EAAsB,QAAU,EAC1HO,EAAmBF,EAAaC,CAAY,EAClD,GAAIC,GAAoB,KACtB,MAAO,CAAA,EAIT,GAAIzG,IAAcyG,EAChB,MAAO,CACL,MAAO,CACL,UAAWF,EAAa,CAAC,CACrC,CACA,EAEM,MAAMG,EAAW,MAAMzD,EAAS,eAAe1R,EAAO+U,CAAqB,EACrEK,EAAiBnG,GAAkBiG,EAAkBhG,EAAO,MAAOwC,EAAS,OAAS,KAAO,OAASA,EAAS,MAAMC,EAAS,QAAQ,EAAE,EACvI0D,EAAmB,CAACF,EAAS3G,GAAQ0G,CAAgB,CAAC,EAAGC,EAASC,EAAe,CAAC,CAAC,EAAGD,EAASC,EAAe,CAAC,CAAC,CAAC,EACjHE,EAAe,CAAC,KAAMV,EAAyB/B,EAAe,gBAAkB,KAAO,OAAS+B,EAAuB,YAAc,CAAA,EAAK,CAC9I,UAAWM,EACX,UAAWG,CACnB,CAAO,EACKE,EAAgBP,EAAaC,EAAe,CAAC,EAGnD,GAAIM,EACF,MAAO,CACL,KAAM,CACJ,MAAON,EAAe,EACtB,UAAWK,CACvB,EACU,MAAO,CACL,UAAWC,CACvB,CACA,EAEM,MAAMC,EAA8BF,EAAa,IAAIG,GAAK,CACxD,MAAMrG,EAAYV,GAAa+G,EAAE,SAAS,EAC1C,MAAO,CAACA,EAAE,UAAWrG,GAAa0F,EAElCW,EAAE,UAAU,MAAM,EAAG,CAAC,EAAE,OAAO,CAACzM,EAAKiF,IAAMjF,EAAMiF,EAAG,CAAC,EAErDwH,EAAE,UAAU,CAAC,EAAGA,EAAE,SAAS,CAC7B,CAAC,EAAE,KAAK,CAACC,EAAGC,IAAMD,EAAE,CAAC,EAAIC,EAAE,CAAC,CAAC,EAKvBC,IAAmBf,EAJWW,EAA4B,OAAOC,GAAKA,EAAE,CAAC,EAAE,MAAM,EAGvF/G,GAAa+G,EAAE,CAAC,CAAC,EAAI,EAAI,CAAC,EAAE,MAAMxH,GAAKA,GAAK,CAAC,CAAC,EAC+B,CAAC,IAAM,KAAO,OAAS4G,EAAsB,CAAC,IAAMW,EAA4B,CAAC,EAAE,CAAC,EACjK,OAAII,IAAmBnH,EACd,CACL,KAAM,CACJ,MAAOwG,EAAe,EACtB,UAAWK,CACvB,EACU,MAAO,CACL,UAAWM,CACvB,CACA,EAEa,CAAA,CACT,CACJ,CACA,EAQMC,GAAO,SAAUta,EAAS,CAC9B,OAAIA,IAAY,SACdA,EAAU,CAAA,GAEL,CACL,KAAM,OACN,QAAAA,EACA,MAAM,GAAGyE,EAAO,CACd,IAAI8V,EAAuBC,EAC3B,KAAM,CACJ,UAAAtH,EACA,eAAAoE,EACA,MAAA3D,EACA,iBAAA8G,EACA,SAAAtE,EACA,SAAAC,CACR,EAAU3R,EACE,CACJ,SAAUiW,EAAgB,GAC1B,UAAWC,EAAiB,GAC5B,mBAAoBC,EACpB,iBAAAC,EAAmB,UACnB,0BAAAC,EAA4B,OAC5B,cAAAlG,EAAgB,GAChB,GAAG4E,CACX,EAAUzG,GAAS/S,EAASyE,CAAK,EAM3B,IAAK8V,EAAwBjD,EAAe,QAAU,MAAQiD,EAAsB,gBAClF,MAAO,CAAA,EAET,MAAMlI,EAAOY,GAAQC,CAAS,EACxB6H,EAAkBxH,GAAYkH,CAAgB,EAC9CO,EAAkB/H,GAAQwH,CAAgB,IAAMA,EAChD7G,EAAM,MAAOuC,EAAS,OAAS,KAAO,OAASA,EAAS,MAAMC,EAAS,QAAQ,GAC/E6E,EAAqBL,IAAgCI,GAAmB,CAACpG,EAAgB,CAACX,GAAqBwG,CAAgB,CAAC,EAAIvG,GAAsBuG,CAAgB,GAC1KS,EAA+BJ,IAA8B,OAC/D,CAACF,GAA+BM,GAClCD,EAAmB,KAAK,GAAGtG,GAA0B8F,EAAkB7F,EAAekG,EAA2BlH,CAAG,CAAC,EAEvH,MAAMxB,EAAa,CAACqI,EAAkB,GAAGQ,CAAkB,EACrDrB,EAAW,MAAMzD,EAAS,eAAe1R,EAAO+U,CAAqB,EACrE2B,EAAY,CAAA,EAClB,IAAIC,IAAkBZ,EAAuBlD,EAAe,OAAS,KAAO,OAASkD,EAAqB,YAAc,CAAA,EAIxH,GAHIE,GACFS,EAAU,KAAKvB,EAASvH,CAAI,CAAC,EAE3BsI,EAAgB,CAClB,MAAMzI,EAAQwB,GAAkBR,EAAWS,EAAOC,CAAG,EACrDuH,EAAU,KAAKvB,EAAS1H,EAAM,CAAC,CAAC,EAAG0H,EAAS1H,EAAM,CAAC,CAAC,CAAC,CACvD,CAOA,GANAkJ,EAAgB,CAAC,GAAGA,EAAe,CACjC,UAAAlI,EACA,UAAAiI,CACR,CAAO,EAGG,CAACA,EAAU,MAAM9I,GAAQA,GAAQ,CAAC,EAAG,CACvC,IAAIgJ,EAAuBC,EAC3B,MAAMC,KAAeF,EAAwB/D,EAAe,OAAS,KAAO,OAAS+D,EAAsB,QAAU,GAAK,EACpHrB,EAAgB5H,EAAWmJ,CAAS,EAC1C,GAAIvB,IAEE,EAD4BW,IAAmB,aAAcI,IAAoBxH,GAAYyG,CAAa,IAI9GoB,EAAc,MAAMlB,GAAK3G,GAAY2G,EAAE,SAAS,IAAMa,EAAkBb,EAAE,UAAU,CAAC,EAAI,EAAI,EAAI,GAE/F,MAAO,CACL,KAAM,CACJ,MAAOqB,EACP,UAAWH,CAC3B,EACc,MAAO,CACL,UAAWpB,CAC3B,CACA,EAMQ,IAAIK,GAAkBiB,EAAwBF,EAAc,OAAOlB,GAAKA,EAAE,UAAU,CAAC,GAAK,CAAC,EAAE,KAAK,CAACC,EAAGC,IAAMD,EAAE,UAAU,CAAC,EAAIC,EAAE,UAAU,CAAC,CAAC,EAAE,CAAC,IAAM,KAAO,OAASkB,EAAsB,UAG1L,GAAI,CAACjB,EACH,OAAQQ,EAAgB,CACtB,IAAK,UACH,CACE,IAAIW,EACJ,MAAMtI,GAAasI,EAAyBJ,EAAc,OAAOlB,GAAK,CACpE,GAAIgB,EAA8B,CAChC,MAAMO,EAAkBlI,GAAY2G,EAAE,SAAS,EAC/C,OAAOuB,IAAoBV,GAG3BU,IAAoB,GACtB,CACA,MAAO,EACT,CAAC,EAAE,IAAIvB,GAAK,CAACA,EAAE,UAAWA,EAAE,UAAU,OAAON,GAAYA,EAAW,CAAC,EAAE,OAAO,CAACnM,EAAKmM,IAAanM,EAAMmM,EAAU,CAAC,CAAC,CAAC,EAAE,KAAK,CAACO,EAAGC,IAAMD,EAAE,CAAC,EAAIC,EAAE,CAAC,CAAC,EAAE,CAAC,IAAM,KAAO,OAASoB,EAAuB,CAAC,EAC7LtI,IACFmH,EAAiBnH,GAEnB,KACF,CACF,IAAK,mBACHmH,EAAiBI,EACjB,KACd,CAEQ,GAAIvH,IAAcmH,EAChB,MAAO,CACL,MAAO,CACL,UAAWA,CACzB,CACA,CAEM,CACA,MAAO,CAAA,CACT,CACJ,CACA,EAoMMqB,GAA2B,IAAI,IAAI,CAAC,OAAQ,KAAK,CAAC,EAKxD,eAAeC,GAAqBlX,EAAOzE,EAAS,CAClD,KAAM,CACJ,UAAAkT,EACA,SAAAiD,EACA,SAAAC,CACJ,EAAM3R,EACEmP,EAAM,MAAOuC,EAAS,OAAS,KAAO,OAASA,EAAS,MAAMC,EAAS,QAAQ,GAC/E/D,EAAOY,GAAQC,CAAS,EACxBW,EAAYV,GAAaD,CAAS,EAClC0C,EAAarC,GAAYL,CAAS,IAAM,IACxC0I,EAAgBF,GAAY,IAAIrJ,CAAI,EAAI,GAAK,EAC7CwJ,EAAiBjI,GAAOgC,EAAa,GAAK,EAC1CkG,EAAW/I,GAAS/S,EAASyE,CAAK,EAGxC,GAAI,CACF,SAAAsX,EACA,UAAAxC,EACA,cAAAzF,CACJ,EAAM,OAAOgI,GAAa,SAAW,CACjC,SAAUA,EACV,UAAW,EACX,cAAe,IACnB,EAAM,CACF,SAAUA,EAAS,UAAY,EAC/B,UAAWA,EAAS,WAAa,EACjC,cAAeA,EAAS,aAC5B,EACE,OAAIjI,GAAa,OAAOC,GAAkB,WACxCyF,EAAY1F,IAAc,MAAQC,EAAgB,GAAKA,GAElD8B,EAAa,CAClB,EAAG2D,EAAYsC,EACf,EAAGE,EAAWH,CAClB,EAAM,CACF,EAAGG,EAAWH,EACd,EAAGrC,EAAYsC,CACnB,CACA,CASK,MAAChD,GAAS,SAAU7Y,EAAS,CAChC,OAAIA,IAAY,SACdA,EAAU,GAEL,CACL,KAAM,SACN,QAAAA,EACA,MAAM,GAAGyE,EAAO,CACd,IAAIuX,EAAuBzB,EAC3B,KAAM,CACJ,EAAAjK,EACA,EAAAC,EACA,UAAA2C,EACA,eAAAoE,CACR,EAAU7S,EACEwX,EAAa,MAAMN,GAAqBlX,EAAOzE,CAAO,EAI5D,OAAIkT,MAAgB8I,EAAwB1E,EAAe,SAAW,KAAO,OAAS0E,EAAsB,aAAezB,EAAwBjD,EAAe,QAAU,MAAQiD,EAAsB,gBACjM,CAAA,EAEF,CACL,EAAGjK,EAAI2L,EAAW,EAClB,EAAG1L,EAAI0L,EAAW,EAClB,KAAM,CACJ,GAAGA,EACH,UAAA/I,CACV,CACA,CACI,CACJ,CACA,EAOMgJ,GAAQ,SAAUlc,EAAS,CAC/B,OAAIA,IAAY,SACdA,EAAU,CAAA,GAEL,CACL,KAAM,QACN,QAAAA,EACA,MAAM,GAAGyE,EAAO,CACd,KAAM,CACJ,EAAA6L,EACA,EAAAC,EACA,UAAA2C,EACA,SAAAiD,CACR,EAAU1R,EACE,CACJ,SAAUiW,EAAgB,GAC1B,UAAWC,EAAiB,GAC5B,QAAAwB,EAAU,CACR,GAAI5G,GAAQ,CACV,GAAI,CACF,EAAAjF,EACA,EAAAC,CACd,EAAgBgF,EACJ,MAAO,CACL,EAAAjF,EACA,EAAAC,CACd,CACU,CACV,EACQ,GAAGiJ,CACX,EAAUzG,GAAS/S,EAASyE,CAAK,EACrBuR,EAAS,CACb,EAAA1F,EACA,EAAAC,CACR,EACYqJ,EAAW,MAAMzD,EAAS,eAAe1R,EAAO+U,CAAqB,EACrED,EAAYhG,GAAYL,CAAS,EACjC6I,EAAW3I,GAAgBmG,CAAS,EAC1C,IAAI6C,EAAgBpG,EAAO+F,CAAQ,EAC/BM,EAAiBrG,EAAOuD,CAAS,EACrC,MAAM+C,EAAa,CAACjJ,EAAMkJ,IAAU3J,GAAM2J,EAAQ3C,EAASvG,IAAS,IAAM,MAAQ,MAAM,EAAGkJ,EAAOA,EAAQ3C,EAASvG,IAAS,IAAM,SAAW,OAAO,CAAC,EACjJqH,IACF0B,EAAgBE,EAAWP,EAAUK,CAAa,GAEhDzB,IACF0B,EAAiBC,EAAW/C,EAAW8C,CAAc,GAEvD,MAAMG,EAAgBL,EAAQ,GAAG,CAC/B,GAAG1X,EACH,CAACsX,CAAQ,EAAGK,EACZ,CAAC7C,CAAS,EAAG8C,CACrB,CAAO,EACD,MAAO,CACL,GAAGG,EACH,KAAM,CACJ,EAAGA,EAAc,EAAIlM,EACrB,EAAGkM,EAAc,EAAIjM,EACrB,QAAS,CACP,CAACwL,CAAQ,EAAGrB,EACZ,CAACnB,CAAS,EAAGoB,CACzB,CACA,CACA,CACI,CACJ,CACA,EAIM8B,GAAa,SAAUzc,EAAS,CACpC,OAAIA,IAAY,SACdA,EAAU,CAAA,GAEL,CACL,QAAAA,EACA,GAAGyE,EAAO,CACR,IAAIiY,EAAqBC,EACzB,KAAM,CACJ,EAAArM,EACA,EAAAC,EACA,UAAA2C,EACA,MAAAS,EACA,eAAA2D,CACR,EAAU7S,EACE,CACJ,OAAAoU,EAAS,EACT,SAAU6B,EAAgB,GAC1B,UAAWC,EAAiB,EACpC,EAAU5H,GAAS/S,EAASyE,CAAK,EACrBuR,EAAS,CACb,EAAA1F,EACA,EAAAC,CACR,EACYgJ,EAAYhG,GAAYL,CAAS,EACjC6I,EAAW3I,GAAgBmG,CAAS,EAC1C,IAAI6C,EAAgBpG,EAAO+F,CAAQ,EAC/BM,EAAiBrG,EAAOuD,CAAS,EACrC,MAAMqD,EAAY7J,GAAS8F,EAAQpU,CAAK,EAClCoY,EAAiB,OAAOD,GAAc,SAAW,CACrD,SAAUA,EACV,UAAW,CACnB,EAAU,CACF,UAAWF,EAAsBE,EAAU,WAAa,KAAOF,EAAsB,EACrF,WAAYC,EAAuBC,EAAU,YAAc,KAAOD,EAAuB,CACjG,EACM,GAAIjC,EAAe,CACjB,MAAMoC,EAAMf,IAAa,IAAM,SAAW,QACpCgB,EAAWpJ,EAAM,UAAUoI,CAAQ,EAAIpI,EAAM,SAASmJ,CAAG,EAAID,EAAe,SAC5EG,EAAWrJ,EAAM,UAAUoI,CAAQ,EAAIpI,EAAM,UAAUmJ,CAAG,EAAID,EAAe,SAC/ET,EAAgBW,EAClBX,EAAgBW,EACPX,EAAgBY,IACzBZ,EAAgBY,EAEpB,CACA,GAAIrC,EAAgB,CAClB,IAAIqB,EAAuBiB,EAC3B,MAAMH,EAAMf,IAAa,IAAM,QAAU,SACnCmB,EAAexB,GAAY,IAAIzI,GAAQC,CAAS,CAAC,EACjD6J,EAAWpJ,EAAM,UAAU4F,CAAS,EAAI5F,EAAM,SAASmJ,CAAG,GAAKI,KAAiBlB,EAAwB1E,EAAe,SAAW,KAAO,OAAS0E,EAAsBzC,CAAS,IAAM,IAAU2D,EAAe,EAAIL,EAAe,WACnOG,EAAWrJ,EAAM,UAAU4F,CAAS,EAAI5F,EAAM,UAAUmJ,CAAG,GAAKI,EAAe,IAAMD,EAAyB3F,EAAe,SAAW,KAAO,OAAS2F,EAAuB1D,CAAS,IAAM,IAAM2D,EAAeL,EAAe,UAAY,GAChPR,EAAiBU,EACnBV,EAAiBU,EACRV,EAAiBW,IAC1BX,EAAiBW,EAErB,CACA,MAAO,CACL,CAACjB,CAAQ,EAAGK,EACZ,CAAC7C,CAAS,EAAG8C,CACrB,CACI,CACJ,CACA,EAcMc,GAAO,SAAUnd,EAAS,CAC9B,OAAIA,IAAY,SACdA,EAAU,CAAA,GAEL,CACL,KAAM,OACN,QAAAA,EACA,MAAM,GAAGyE,EAAO,CACd,KAAM,CACJ,UAAAyO,EACA,MAAAS,EACA,SAAAwC,EACA,SAAAC,CACR,EAAU3R,EACE,CACJ,MAAA2Y,EAAQ,IAAM,CAAC,EACf,GAAG5D,CACX,EAAUzG,GAAS/S,EAASyE,CAAK,EACrBmV,EAAW,MAAMzD,EAAS,eAAe1R,EAAO+U,CAAqB,EACrEnH,EAAOY,GAAQC,CAAS,EACxBW,EAAYV,GAAaD,CAAS,EAClC8E,EAAUzE,GAAYL,CAAS,IAAM,IACrC,CACJ,MAAAjG,EACA,OAAAC,CACR,EAAUyG,EAAM,SACV,IAAI0J,EACAC,EACAjL,IAAS,OAASA,IAAS,UAC7BgL,EAAahL,EACbiL,EAAYzJ,KAAgB,MAAOsC,EAAS,OAAS,KAAO,OAASA,EAAS,MAAMC,EAAS,QAAQ,GAAM,QAAU,OAAS,OAAS,UAEvIkH,EAAYjL,EACZgL,EAAaxJ,IAAc,MAAQ,MAAQ,UAE7C,MAAM0J,EAAwBrQ,EAAS0M,EAAS,IAAMA,EAAS,OACzD4D,EAAuBvQ,EAAQ2M,EAAS,KAAOA,EAAS,MACxD6D,EAA0BnL,GAAIpF,EAAS0M,EAASyD,CAAU,EAAGE,CAAqB,EAClFG,EAAyBpL,GAAIrF,EAAQ2M,EAAS0D,CAAS,EAAGE,CAAoB,EAC9EG,EAAYlZ,EAAM,eAAe,MACjCmZ,EAAU,CAACD,EACjB,IAAIE,EAAkBJ,EAClBK,EAAiBJ,EACjBC,GAAa,MAAQA,EAAU,QAAQ,IACzCG,EAAiBN,GAEfG,GAAa,MAAQA,EAAU,QAAQ,IACzCE,EAAkBN,GAEhBK,GAAW,CAAC/J,IACVmE,EACF8F,EAAiB7Q,EAAQ,EAAI8C,GAAI6J,EAAS,KAAMA,EAAS,KAAK,EAE9DiE,EAAkB3Q,EAAS,EAAI6C,GAAI6J,EAAS,IAAKA,EAAS,MAAM,GAGpE,MAAMwD,EAAM,CACV,GAAG3Y,EACH,eAAAqZ,EACA,gBAAAD,CACR,CAAO,EACD,MAAME,EAAiB,MAAM5H,EAAS,cAAcC,EAAS,QAAQ,EACrE,OAAInJ,IAAU8Q,EAAe,OAAS7Q,IAAW6Q,EAAe,OACvD,CACL,MAAO,CACL,MAAO,EACnB,CACA,EAEa,CAAA,CACT,CACJ,CACA,EC3gC0L,SAASC,EAAEC,EAAE,CAAC,IAAI7W,EAAE,QAAcA,EAAE6W,EAAE,gBAAX,KAA0B,OAAO7W,EAAE,cAAc,MAAM,CAAC,SAAS8W,GAAED,EAAE,CAAC,OAAOD,EAAEC,CAAC,EAAE,iBAAiBA,CAAC,CAAC,CAAC,MAAM1G,GAAE,KAAK,IAAI4G,GAAE,KAAK,IAAIC,GAAE,KAAK,MAAM,SAASC,GAAEJ,EAAE,CAAC,MAAM7W,EAAE8W,GAAED,CAAC,EAAE,IAAI,EAAE,WAAW7W,EAAE,KAAK,EAAEmQ,EAAE,WAAWnQ,EAAE,MAAM,EAAE,MAAM+W,EAAEF,EAAE,YAAYI,EAAEJ,EAAE,aAAatN,EAAEyN,GAAE,CAAC,IAAID,GAAGC,GAAE7G,CAAC,IAAI8G,EAAE,OAAO1N,IAAI,EAAEwN,EAAE5G,EAAE8G,GAAG,CAAC,MAAM,EAAE,OAAO9G,EAAE,SAAS5G,CAAC,CAAC,CAAC,SAASA,GAAEsN,EAAE,CAAC,OAAOK,GAAEL,CAAC,GAAGA,EAAE,UAAU,IAAI,YAAW,EAAG,EAAE,CAAC,IAAIM,GAAE,SAASC,IAAG,CAAC,GAAGD,GAAE,OAAOA,GAAE,MAAMN,EAAE,UAAU,cAAc,OAAOA,GAAG,MAAM,QAAQA,EAAE,MAAM,GAAGM,GAAEN,EAAE,OAAO,KAAK,GAAG,EAAE,MAAM,IAAI,EAAE,QAAO,EAAG,KAAK,GAAG,EAAEM,IAAG,UAAU,SAAS,CAAC,SAASpE,GAAE8D,EAAE,CAAC,OAAOA,aAAaD,EAAEC,CAAC,EAAE,WAAW,CAAC,SAAS/D,GAAE+D,EAAE,CAAC,OAAOA,aAAaD,EAAEC,CAAC,EAAE,OAAO,CAAC,SAASK,GAAEL,EAAE,CAAC,OAAOA,aAAaD,EAAEC,CAAC,EAAE,IAAI,CAAC,SAASQ,GAAER,EAAE,CAAC,OAAgB,OAAO,WAApB,IAAqC,GAAUA,aAAaD,EAAEC,CAAC,EAAE,YAAYA,aAAa,UAAU,CAAC,SAASS,GAAET,EAAE,CAAC,KAAK,CAAC,SAAS7W,EAAE,UAAU,EAAE,UAAUmQ,EAAE,QAAQ4G,CAAC,EAAED,GAAED,CAAC,EAAE,MAAM,kCAAkC,KAAK7W,EAAEmQ,EAAE,CAAC,GAAG,CAAC,CAAC,SAAS,UAAU,EAAE,SAAS4G,CAAC,CAAC,CAAC,SAASQ,GAAEV,EAAE,CAAC,MAAM,CAAC,QAAQ,KAAK,IAAI,EAAE,SAAStN,GAAEsN,CAAC,CAAC,CAAC,CAAC,SAAS1N,GAAE0N,EAAE,CAAC,MAAM7W,EAAE,WAAW,KAAKoX,IAAG,EAAE,EAAEN,GAAED,CAAC,EAAE1G,EAAE,EAAE,gBAAgB,EAAE,qBAAqB,OAAe,EAAE,YAAX,QAA+B,EAAE,cAAX,QAAwB,CAAC,CAACA,GAAYA,IAAT,QAAYnQ,GAAc,EAAE,aAAb,UAAyBA,GAAG,CAAC,CAAC,EAAE,QAAiB,EAAE,SAAX,QAAmB,CAAC,YAAY,aAAa,EAAE,MAAM6W,GAAG,EAAE,WAAW,SAASA,CAAC,EAAC,GAAI,CAAC,QAAQ,SAAS,SAAS,SAAS,EAAE,MAAMA,GAAG,CAAC,MAAM7W,EAAE,EAAE,QAAQ,OAAaA,GAAN,MAASA,EAAE,SAAS6W,CAAC,CAAC,EAAC,CAAE,CAAC,SAAS3N,IAAG,CAAC,MAAM,CAAC,iCAAiC,KAAKkO,GAAC,CAAE,CAAC,CAAC,SAASI,GAAEX,EAAE,CAAC,MAAM,CAAC,OAAO,OAAO,WAAW,EAAE,SAAStN,GAAEsN,CAAC,CAAC,CAAC,CAAC,SAASvL,GAAEuL,EAAE,CAAC,OAAO/D,GAAE+D,CAAC,EAAEA,EAAEA,EAAE,cAAc,CAAC,MAAM7D,GAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,SAASyE,GAAEZ,EAAE,CAAC,MAAM7W,EAAEsL,GAAEuL,CAAC,EAAE,GAAG,CAAC9D,GAAE/S,CAAC,EAAE,OAAOgT,GAAE,MAAM,EAAEhT,EAAE,sBAAqB,EAAG,CAAC,MAAM8W,EAAE,OAAO3G,EAAE,SAAS4G,CAAC,EAAEE,GAAEjX,CAAC,EAAE,IAAIuJ,GAAGwN,EAAEC,GAAE,EAAE,KAAK,EAAE,EAAE,OAAOF,EAAEK,GAAGJ,EAAEC,GAAE,EAAE,MAAM,EAAE,EAAE,QAAQ7G,EAAE,OAAO5G,GAAG,OAAO,SAASA,CAAC,IAAIA,EAAE,GAAG4N,GAAG,OAAO,SAASA,CAAC,IAAIA,EAAE,GAAG,CAAC,EAAE5N,EAAE,EAAE4N,CAAC,CAAC,CAAC,SAASO,GAAEb,EAAE7W,EAAE8W,EAAE3G,EAAE,CAAC,IAAI4G,EAAEC,EAAWhX,IAAT,SAAaA,EAAE,IAAa8W,IAAT,SAAaA,EAAE,IAAI,MAAMG,EAAEJ,EAAE,wBAAwBtN,EAAE+B,GAAEuL,CAAC,EAAE,IAAIM,EAAEnE,GAAEhT,IAAImQ,EAAE2C,GAAE3C,CAAC,IAAIgH,EAAEM,GAAEtH,CAAC,GAAGgH,EAAEM,GAAEZ,CAAC,GAAG,MAAMO,EAAE7N,EAAEqN,EAAErN,CAAC,EAAE,OAAOwJ,EAAE,CAAC7J,MAAK4N,EAAE,IAAII,GAAGD,EAAE,MAAMlE,KAAWgE,EAAEK,EAAE,iBAAX,KAA2B,OAAOL,EAAE,aAAa,IAAII,EAAE,EAAEE,GAAGJ,EAAE,KAAKlE,KAAWiE,EAAEI,EAAE,iBAAX,KAA2B,OAAOJ,EAAE,YAAY,IAAIG,EAAE,EAAEG,EAAEL,EAAE,MAAME,EAAE,EAAEI,EAAEN,EAAE,OAAOE,EAAE,EAAE,GAAG5N,EAAE,CAAC,MAAMsN,EAAED,EAAErN,CAAC,EAAEvJ,EAAEmQ,GAAG2C,GAAE3C,CAAC,EAAEyG,EAAEzG,CAAC,EAAEA,EAAE,IAAI2G,EAAED,EAAE,aAAa,KAAKC,GAAG3G,GAAGnQ,IAAI6W,GAAG,CAAC,MAAMA,EAAEY,GAAEX,CAAC,EAAE9W,EAAE8W,EAAE,sBAAqB,EAAG3G,EAAE,iBAAiB2G,CAAC,EAAE9W,EAAE,IAAI8W,EAAE,WAAW,WAAW3G,EAAE,WAAW,GAAG0G,EAAE,EAAE7W,EAAE,IAAI8W,EAAE,UAAU,WAAW3G,EAAE,UAAU,GAAG0G,EAAE,EAAEK,GAAGL,EAAE,EAAEQ,GAAGR,EAAE,EAAES,GAAGT,EAAE,EAAEU,GAAGV,EAAE,EAAEK,GAAGlX,EAAE,EAAEqX,GAAGrX,EAAE,EAAE8W,EAAEF,EAAEE,CAAC,EAAE,YAAY,CAAC,CAAC,MAAM,CAAC,MAAMQ,EAAE,OAAOC,EAAE,IAAIF,EAAE,MAAMH,EAAEI,EAAE,OAAOD,EAAEE,EAAE,KAAKL,EAAE,EAAEA,EAAE,EAAEG,CAAC,CAAC,CAAC,SAASM,GAAEd,EAAE,CAAC,QAAQK,GAAEL,CAAC,EAAEA,EAAE,cAAcA,EAAE,WAAW,OAAO,UAAU,eAAe,CAAC,SAASe,GAAEf,EAAE,CAAC,OAAO/D,GAAE+D,CAAC,EAAE,CAAC,WAAWA,EAAE,WAAW,UAAUA,EAAE,SAAS,EAAE,CAAC,WAAWA,EAAE,YAAY,UAAUA,EAAE,WAAW,CAAC,CAAC,SAASgB,GAAEhB,EAAE,CAAC,OAAOa,GAAEC,GAAEd,CAAC,CAAC,EAAE,KAAKe,GAAEf,CAAC,EAAE,UAAU,CAAC,SAASiB,GAAEjB,EAAE,CAAC,GAAYtN,GAAEsN,CAAC,IAAZ,OAAc,OAAOA,EAAE,MAAM7W,EAAE6W,EAAE,cAAcA,EAAE,YAAYQ,GAAER,CAAC,GAAGA,EAAE,MAAMc,GAAEd,CAAC,EAAE,OAAOQ,GAAErX,CAAC,EAAEA,EAAE,KAAKA,CAAC,CAAC,SAAS+X,GAAElB,EAAE,CAAC,MAAM7W,EAAE8X,GAAEjB,CAAC,EAAE,OAAOW,GAAExX,CAAC,EAAEA,EAAE,cAAc,KAAK+S,GAAE/S,CAAC,GAAGsX,GAAEtX,CAAC,EAAEA,EAAE+X,GAAE/X,CAAC,CAAC,CAAC,SAASgY,GAAEnB,EAAE7W,EAAE,CAAC,IAAI8W,EAAW9W,IAAT,SAAaA,EAAE,CAAA,GAAI,MAAMmQ,EAAE4H,GAAElB,CAAC,EAAEE,EAAE5G,MAAY2G,EAAED,EAAE,gBAAX,KAA0B,OAAOC,EAAE,MAAME,EAAEJ,EAAEzG,CAAC,EAAE,OAAO4G,EAAE/W,EAAE,OAAOgX,EAAEA,EAAE,gBAAgB,CAAA,EAAGM,GAAEnH,CAAC,EAAEA,EAAE,CAAA,CAAE,EAAEnQ,EAAE,OAAOmQ,EAAE6H,GAAE7H,CAAC,CAAC,CAAC,CAAC,SAAS8H,GAAE,EAAE9H,EAAE6G,EAAE,CAAC,OAAmB7G,IAAb,WAAe0G,IAAE,SAASA,EAAE7W,EAAE,CAAC,MAAM8W,EAAEF,EAAEC,CAAC,EAAE1G,EAAEwH,GAAEd,CAAC,EAAEE,EAAED,EAAE,eAAe,IAAI,EAAE3G,EAAE,YAAY8G,EAAE9G,EAAE,aAAa5G,EAAE,EAAE4N,EAAE,EAAE,GAAGJ,EAAE,CAAC,EAAEA,EAAE,MAAME,EAAEF,EAAE,OAAO,MAAMF,EAAE3N,GAAC,GAAI2N,GAAG,CAACA,GAAa7W,IAAV,WAAeuJ,EAAEwN,EAAE,WAAWI,EAAEJ,EAAE,UAAU,CAAC,MAAM,CAAC,MAAM,EAAE,OAAOE,EAAE,EAAE1N,EAAE,EAAE4N,CAAC,CAAC,GAAE,EAAEH,CAAC,CAAC,EAAElE,GAAE3C,CAAC,EAAE0G,IAAE,SAASA,EAAE7W,EAAE,CAAC,MAAM4W,EAAEc,GAAEb,EAAE,GAAa7W,IAAV,OAAW,EAAE8W,EAAEF,EAAE,IAAIC,EAAE,UAAU1G,EAAEyG,EAAE,KAAKC,EAAE,WAAWE,EAAEhE,GAAE8D,CAAC,EAAEY,GAAEZ,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,MAAM,CAAC,MAAMA,EAAE,YAAYE,EAAE,EAAE,OAAOF,EAAE,aAAaE,EAAE,EAAE,EAAE5G,EAAE4G,EAAE,EAAE,EAAED,EAAEC,EAAE,CAAC,CAAC,GAAE5G,EAAE6G,CAAC,CAAC,EAAEH,IAAE,SAASA,EAAE,CAAC,MAAM7W,EAAE2X,GAAEd,CAAC,EAAED,EAAEgB,GAAEf,CAAC,EAAE1G,EAAE0G,EAAE,cAAc,KAAKG,EAAED,GAAE/W,EAAE,YAAYA,EAAE,YAAYmQ,EAAE,YAAYA,EAAE,WAAW,EAAE8G,EAAEF,GAAE/W,EAAE,aAAaA,EAAE,aAAamQ,EAAE,aAAaA,EAAE,YAAY,EAAE,IAAI5G,EAAE,CAACqN,EAAE,WAAWiB,GAAEhB,CAAC,EAAE,MAAMM,EAAE,CAACP,EAAE,UAAU,OAAcE,GAAE3G,CAAC,EAAE,YAAb,QAAyB5G,GAAGwN,GAAE/W,EAAE,YAAYmQ,EAAE,WAAW,EAAE6G,GAAG,CAAC,MAAMA,EAAE,OAAOC,EAAE,EAAE1N,EAAE,EAAE4N,CAAC,CAAC,GAAEQ,GAAE,CAAC,CAAC,CAAC,CAAC,CAAC,SAASO,GAAErB,EAAE,CAAC,OAAO9D,GAAE8D,CAAC,GAAaC,GAAED,CAAC,EAAE,WAAf,QAAwBA,EAAE,aAAa,IAAI,CAAC,SAASsB,GAAEtB,EAAE,CAAC,MAAM7W,EAAE4W,EAAEC,CAAC,EAAE,IAAI1G,EAAE+H,GAAErB,CAAC,EAAE,KAAK1G,GAAGoH,GAAEpH,CAAC,GAAc2G,GAAE3G,CAAC,EAAE,WAAhB,UAA0BA,EAAE+H,GAAE/H,CAAC,EAAE,OAAOA,IAAa5G,GAAE4G,CAAC,IAAZ,QAAwB5G,GAAE4G,CAAC,IAAZ,QAA0B2G,GAAE3G,CAAC,EAAE,WAAhB,UAA0B,CAAChH,GAAEgH,CAAC,GAAGnQ,EAAEmQ,IAAG,SAAS0G,EAAE,CAAC,IAAI7W,EAAE8X,GAAEjB,CAAC,EAAE,KAAK9D,GAAE/S,CAAC,GAAG,CAACwX,GAAExX,CAAC,GAAG,CAAC,GAAGmJ,GAAEnJ,CAAC,EAAE,OAAOA,EAAEA,EAAE8X,GAAE9X,CAAC,CAAC,CAAC,OAAO,IAAI,GAAE6W,CAAC,GAAG7W,CAAC,CAAC,SAASoY,GAAEvB,EAAE7W,EAAE,EAAE,CAAC,MAAM8W,EAAE/D,GAAE/S,CAAC,EAAEmQ,EAAEwH,GAAE3X,CAAC,EAAE+W,EAAEW,GAAEb,EAAE,GAAa,IAAV,QAAY7W,CAAC,EAAE,IAAIgX,EAAE,CAAC,WAAW,EAAE,UAAU,CAAC,EAAE,MAAMC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,GAAGH,GAAG,CAACA,GAAa,IAAV,QAAY,IAAavN,GAAEvJ,CAAC,IAAZ,QAAesX,GAAEnH,CAAC,KAAK6G,EAAEY,GAAE5X,CAAC,GAAG+S,GAAE/S,CAAC,EAAE,CAAC,MAAM6W,EAAEa,GAAE1X,EAAE,EAAE,EAAEiX,EAAE,EAAEJ,EAAE,EAAE7W,EAAE,WAAWiX,EAAE,EAAEJ,EAAE,EAAE7W,EAAE,SAAS,MAAMmQ,IAAI8G,EAAE,EAAEY,GAAE1H,CAAC,GAAG,MAAM,CAAC,EAAE4G,EAAE,KAAKC,EAAE,WAAWC,EAAE,EAAE,EAAEF,EAAE,IAAIC,EAAE,UAAUC,EAAE,EAAE,MAAMF,EAAE,MAAM,OAAOA,EAAE,MAAM,CAAC,CAAC,MAAMsB,GAAE,CAAC,gBAAgB,SAASxB,EAAE,CAAC,GAAG,CAAC,QAAQ7W,EAAE,SAAS,EAAE,aAAagX,EAAE,SAASC,CAAC,EAAEJ,EAAE,MAAMM,EAAwB,IAAtB,qBAAwB,SAASN,EAAE7W,EAAE,CAAC,MAAM4W,EAAE5W,EAAE,IAAI6W,CAAC,EAAE,GAAGD,EAAE,OAAOA,EAAE,IAAIzG,EAAE6H,GAAEnB,CAAC,EAAE,QAAQA,GAAG/D,GAAE+D,CAAC,GAAYtN,GAAEsN,CAAC,IAAZ,OAAa,EAAGE,EAAE,KAAK,MAAMC,EAAYF,GAAED,CAAC,EAAE,WAAf,QAAwB,IAAII,EAAED,EAAEc,GAAEjB,CAAC,EAAEA,EAAE,KAAK/D,GAAEmE,CAAC,GAAG,CAACO,GAAEP,CAAC,GAAG,CAAC,MAAMJ,EAAEC,GAAEG,CAAC,EAAEjX,EAAEmJ,GAAE8N,CAAC,GAAGD,EAAEhX,GAAG+W,EAAE/W,GAAc6W,EAAE,WAAb,UAAuB,CAACE,GAAG,CAAC,CAAC,WAAW,OAAO,EAAE,SAASA,EAAE,QAAQ,GAAGA,EAAEF,EAAE1G,EAAEA,EAAE,QAAQ0G,GAAGA,IAAII,IAAIA,EAAEa,GAAEb,CAAC,CAAC,CAAC,OAAOjX,EAAE,IAAI6W,EAAE1G,CAAC,EAAEA,CAAC,GAAEnQ,EAAE,KAAK,EAAE,EAAE,GAAG,OAAO,CAAC,EAAEoX,EAAE,CAAC,GAAGD,EAAEH,CAAC,EAAE,EAAEI,EAAE,CAAC,EAAEF,EAAEE,EAAE,QAAQ,CAACP,EAAED,IAAI,CAAC,MAAME,EAAEmB,GAAEjY,EAAE4W,EAAEK,CAAC,EAAE,OAAOJ,EAAE,IAAIE,GAAED,EAAE,IAAID,EAAE,GAAG,EAAEA,EAAE,MAAM1G,GAAE2G,EAAE,MAAMD,EAAE,KAAK,EAAEA,EAAE,OAAO1G,GAAE2G,EAAE,OAAOD,EAAE,MAAM,EAAEA,EAAE,KAAKE,GAAED,EAAE,KAAKD,EAAE,IAAI,EAAEA,CAAC,GAAGoB,GAAEjY,EAAE,EAAEiX,CAAC,CAAC,EAAE,MAAM,CAAC,MAAMC,EAAE,MAAMA,EAAE,KAAK,OAAOA,EAAE,OAAOA,EAAE,IAAI,EAAEA,EAAE,KAAK,EAAEA,EAAE,GAAG,CAAC,EAAE,sDAAsD,SAASL,EAAE,CAAC,GAAG,CAAC,KAAK7W,EAAE,aAAa,EAAE,SAAS8W,CAAC,EAAED,EAAE,MAAM1G,EAAE4C,GAAE,CAAC,EAAEgE,EAAEY,GAAE,CAAC,EAAE,GAAG,IAAIZ,EAAE,OAAO/W,EAAE,IAAIgX,EAAE,CAAC,WAAW,EAAE,UAAU,CAAC,EAAEC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,MAAME,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,IAAIhH,GAAG,CAACA,GAAa2G,IAAV,YAAyBvN,GAAE,CAAC,IAAZ,QAAe+N,GAAEP,CAAC,KAAKC,EAAEY,GAAE,CAAC,GAAG7E,GAAE,CAAC,GAAG,CAAC,MAAM8D,EAAEa,GAAE,CAAC,EAAET,EAAEQ,GAAE,CAAC,EAAEN,EAAE,EAAEN,EAAE,EAAE,EAAE,WAAWM,EAAE,EAAEN,EAAE,EAAE,EAAE,SAAS,CAAC,MAAM,CAAC,MAAM7W,EAAE,MAAMiX,EAAE,EAAE,OAAOjX,EAAE,OAAOiX,EAAE,EAAE,EAAEjX,EAAE,EAAEiX,EAAE,EAAED,EAAE,WAAWC,EAAE,EAAEE,EAAE,EAAE,EAAEnX,EAAE,EAAEiX,EAAE,EAAED,EAAE,UAAUC,EAAE,EAAEE,EAAE,CAAC,CAAC,EAAE,UAAUrE,GAAE,cAAc,SAAS+D,EAAE,CAAC,OAAO9D,GAAE8D,CAAC,EAAEI,GAAEJ,CAAC,EAAEA,EAAE,sBAAqB,CAAE,EAAE,gBAAgBsB,GAAE,mBAAmBR,GAAE,SAASF,GAAE,MAAM,gBAAgBZ,EAAE,CAAC,GAAG,CAAC,UAAU7W,EAAE,SAAS,EAAE,SAAS8W,CAAC,EAAED,EAAE,MAAM1G,EAAE,KAAK,iBAAiBgI,GAAEpB,EAAE,KAAK,cAAc,MAAM,CAAC,UAAUqB,GAAEpY,EAAE,MAAMmQ,EAAE,CAAC,EAAE2G,CAAC,EAAE,SAAS,CAAC,EAAE,EAAE,EAAE,EAAE,GAAG,MAAMC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,eAAeF,GAAG,MAAM,KAAKA,EAAE,eAAc,CAAE,EAAE,MAAMA,GAAWC,GAAED,CAAC,EAAE,YAAb,KAAsB,EAAqyByB,GAAE,CAACzB,EAAED,EAAEE,IAAI,CAAC,MAAM3G,EAAE,IAAI,IAAI4G,EAAE,CAAC,SAASsB,GAAE,GAAGvB,CAAC,EAAEE,EAAE,CAAC,GAAGD,EAAE,SAAS,GAAG5G,CAAC,EAAE,OAAOnQ,GAAE6W,EAAED,EAAE,CAAC,GAAGG,EAAE,SAASC,CAAC,CAAC,CAAC,ECMnrOE,GAAI,CAER,SAAU,GAEV,SAAU,EAEV,SAAU,EAEV,UAAW,OAEX,SAAU,OAEV,YAAa,GAEb,eAAgB,IAEhB,eAAgB,CAAA,EAEhB,SAAU,WAEV,gBAAiB,GAEjB,KAAM,GAEN,MAAO,GAEP,gBAAiB,EAEjB,aAAc,EAEd,cAAe,GAIf,oBAAqB,GAErB,OAAQ,CACN,QAAS,CAEP,UAAW,MAEX,SAAU,CAAC,QAAS,QAAS,OAAO,EAEpC,aAAe,GAAM,CAAC,GAAG,EAAG,OAAO,EAEnC,MAAO,CACL,KAAM,IACN,KAAM,CACd,EAEM,aAAc,GAEd,KAAM,GAEN,eAAgB,KACtB,EACI,SAAU,CAER,UAAW,SAEX,SAAU,CAAC,OAAO,EAElB,MAAO,EAEP,aAAc,GAEd,SAAU,EAChB,EACI,KAAM,CACJ,QAAS,WACT,SAAU,CAAC,QAAS,OAAO,EAC3B,eAAgB,CAAC,OAAO,EACxB,MAAO,CACL,KAAM,EACN,KAAM,GACd,CACA,CACA,CACA,EACA,SAASe,GAAE,EAAG,EAAG,CACf,IAAInB,EAAII,GAAE,OAAO,CAAC,GAAK,CAAA,EAAI/G,EAC3B,GACEA,EAAI2G,EAAE,CAAC,EAAG,OAAO3G,EAAI,IAAM2G,EAAE,QAAUA,EAAII,GAAE,OAAOJ,EAAE,OAAO,GAAK,IAAMA,EAAI,KAAM3G,EAAI+G,GAAE,CAAC,GAAKJ,EAAI,WAC7FA,GACP,OAAO3G,CACT,CACA,SAASoI,GAAG,EAAG,CACb,MAAM,EAAI,CAAC,CAAC,EACZ,IAAIzB,EAAII,GAAE,OAAO,CAAC,GAAK,CAAA,EACvB,GACEJ,EAAE,SAAW,CAACA,EAAE,WAAa,EAAE,KAAKA,EAAE,OAAO,EAAGA,EAAII,GAAE,OAAOJ,EAAE,OAAO,GAAK,CAAA,GAAMA,EAAI,WAChFA,GACP,OAAO,EAAE,IAAK3G,GAAM,mBAAmBA,CAAC,EAAE,CAC5C,CACA,SAASqI,GAAG,EAAG,CACb,MAAM,EAAI,CAAC,CAAC,EACZ,IAAI1B,EAAII,GAAE,OAAO,CAAC,GAAK,CAAA,EACvB,GACEJ,EAAE,SAAW,EAAE,KAAKA,EAAE,OAAO,EAAGA,EAAII,GAAE,OAAOJ,EAAE,OAAO,GAAK,CAAA,GAAMA,EAAI,WAChEA,GACP,OAAO,CACT,CACA,IAAI2B,GAAI,GACR,GAAI,OAAO,OAAS,IAAK,CACvBA,GAAI,GACJ,GAAI,CACF,MAAM,EAAI,OAAO,eAAe,CAAA,EAAI,UAAW,CAC7C,KAAM,CACJA,GAAI,EACN,CACN,CAAK,EACD,OAAO,iBAAiB,OAAQ,KAAM,CAAC,CACzC,MAAQ,CACR,CACF,CACA,IAAIC,GAAK,GACT,OAAO,OAAS,KAAO,OAAO,UAAY,MAAQA,GAAK,mBAAmB,KAAK,UAAU,SAAS,GAAK,CAAC,OAAO,UAC/G,MAAMC,GAAK,CAAC,OAAQ,MAAO,SAAU,OAAQ,OAAO,EAAE,OAAO,CAAC,EAAG,IAAM,EAAE,OAAO,CAC9E,EACA,GAAG,CAAC,SACJ,GAAG,CAAC,MACN,CAAC,EAAG,CAAA,CAAE,EAAGC,GAAK,CACZ,MAAO,aACP,MAAO,QACP,MAAO,QACP,MAAO,aACP,QAAS,aACX,EAAGC,GAAK,CACN,MAAO,aACP,MAAO,OACP,MAAO,QACP,MAAO,WACP,QAAS,WACX,EACA,SAASC,GAAG,EAAG,EAAG,CAChB,MAAMhC,EAAI,EAAE,QAAQ,CAAC,EACrBA,IAAM,IAAM,EAAE,OAAOA,EAAG,CAAC,CAC3B,CACA,SAASiC,IAAI,CACX,OAAO,IAAI,QAAS,GAAM,sBAAsB,IAAM,CACpD,sBAAsB,CAAC,CACzB,CAAC,CAAC,CACJ,CACA,MAAMjG,GAAI,CAAA,EACV,IAAIwE,GAAI,KACR,MAAM0B,GAAK,CAAA,EACX,SAASC,GAAG,EAAG,CACb,IAAI,EAAID,GAAG,CAAC,EACZ,OAAO,IAAM,EAAIA,GAAG,CAAC,EAAI,CAAA,GAAK,CAChC,CACA,IAAIE,GAAI,UAAW,CACnB,EACA,OAAO,OAAS,MAAQA,GAAI,OAAO,SACnC,SAAStC,EAAE,EAAG,CACZ,OAAO,SAAS,EAAG,CACjB,OAAOqB,GAAE,EAAE,MAAO,CAAC,CACrB,CACF,CACA,MAAMkB,GAAI,yBAA0BC,GAAI,IAAMhB,GAAE,CAC9C,KAAM,UACN,SAAU,CACR,MAAO,CACL,CAACe,EAAC,EAAG,CACH,aAAc,IACtB,CACA,CACE,EACA,OAAQ,CACN,CAACA,EAAC,EAAG,CAAE,QAAS,IAAI,CACxB,EACE,MAAO,CACL,MAAO,CACL,KAAM,OACN,SAAU,EAChB,EACI,YAAa,CACX,KAAM,SACN,SAAU,EAChB,EACI,cAAe,CACb,KAAM,SACN,QAAS,IACf,EACI,WAAY,CACV,KAAM,SACN,SAAU,EAChB,EACI,MAAO,CACL,KAAM,QACN,QAAS,EACf,EACI,UAAW,CACT,KAAM,OACN,QAAS,IACf,EAEI,OAAQ,CACN,QAAS,IACf,EACI,SAAU,CACR,KAAM,QACN,QAASvC,EAAE,UAAU,CAC3B,EACI,oBAAqB,CACnB,KAAM,QACN,QAASA,EAAE,qBAAqB,CACtC,EACI,UAAW,CACT,KAAM,OACN,QAASA,EAAE,WAAW,EACtB,UAAY,GAAM+B,GAAG,SAAS,CAAC,CACrC,EACI,MAAO,CACL,KAAM,CAAC,OAAQ,OAAQ,MAAM,EAC7B,QAAS/B,EAAE,OAAO,CACxB,EACI,SAAU,CACR,KAAM,CAAC,OAAQ,MAAM,EACrB,QAASA,EAAE,UAAU,CAC3B,EACI,SAAU,CACR,KAAM,CAAC,OAAQ,MAAM,EACrB,QAASA,EAAE,UAAU,CAC3B,EACI,SAAU,CACR,KAAM,MACN,QAASA,EAAE,UAAU,CAC3B,EACI,aAAc,CACZ,KAAM,CAAC,MAAO,QAAQ,EACtB,QAASA,EAAE,cAAc,CAC/B,EACI,aAAc,CACZ,KAAM,CAAC,MAAO,QAAQ,EACtB,QAASA,EAAE,cAAc,CAC/B,EACI,eAAgB,CACd,KAAM,MACN,QAASA,EAAE,gBAAgB,CACjC,EACI,mBAAoB,CAClB,KAAM,CAAC,MAAO,QAAQ,EACtB,QAASA,EAAE,oBAAoB,CACrC,EACI,mBAAoB,CAClB,KAAM,CAAC,MAAO,QAAQ,EACtB,QAASA,EAAE,oBAAoB,CACrC,EACI,UAAW,CACT,KAAM,CAAC,OAAQ,OAAQsC,GAAG,OAAO,EACjC,QAAStC,EAAE,WAAW,CAC5B,EACI,SAAU,CACR,KAAM,CAAC,OAAQsC,EAAC,EAChB,QAAStC,EAAE,UAAU,CAC3B,EACI,SAAU,CACR,KAAM,OACN,UAAY,GAAM,CAAC,WAAY,OAAO,EAAE,SAAS,CAAC,EAClD,QAASA,EAAE,UAAU,CAC3B,EACI,SAAU,CACR,KAAM,CAAC,QAAS,QAAQ,EACxB,QAASA,EAAE,UAAU,CAC3B,EACI,aAAc,CACZ,KAAM,QACN,QAASA,EAAE,cAAc,CAC/B,EACI,YAAa,CACX,KAAM,QACN,QAASA,EAAE,aAAa,CAC9B,EACI,WAAY,CACV,KAAM,QACN,QAASA,EAAE,YAAY,CAC7B,EACI,YAAa,CACX,KAAM,CAAC,OAAQ,MAAO,MAAM,EAC5B,QAASA,EAAE,aAAa,CAC9B,EACI,uBAAwB,CACtB,KAAM,QACN,QAASA,EAAE,wBAAwB,CACzC,EAII,YAAa,CACX,KAAM,QACN,QAASA,EAAE,aAAa,CAC9B,EACI,SAAU,CACR,KAAM,CAAC,QAAS,MAAM,EACtB,QAASA,EAAE,UAAU,CAC3B,EAII,YAAa,CACX,KAAM,QACN,QAASA,EAAE,aAAa,CAC9B,EACI,oBAAqB,CACnB,KAAM,QACN,QAASA,EAAE,qBAAqB,CACtC,EACI,gBAAiB,CACf,KAAM,QACN,QAASA,EAAE,iBAAiB,CAClC,EACI,gBAAiB,CACf,KAAM,CAAC,OAAQ,MAAM,EACrB,QAASA,EAAE,iBAAiB,CAClC,EACI,aAAc,CACZ,KAAM,CAAC,OAAQ,MAAM,EACrB,QAASA,EAAE,cAAc,CAC/B,EACI,cAAe,CACb,KAAM,QACN,QAASA,EAAE,eAAe,CAChC,EACI,KAAM,CACJ,KAAM,QACN,QAASA,EAAE,MAAM,CACvB,EACI,MAAO,CACL,KAAM,QACN,QAASA,EAAE,OAAO,CACxB,EACI,eAAgB,CACd,KAAM,QACN,QAASA,EAAE,gBAAgB,CACjC,EACI,YAAa,CACX,KAAM,QACN,QAASA,EAAE,aAAa,CAC9B,EACI,eAAgB,CACd,KAAM,OACN,QAASA,EAAE,gBAAgB,CACjC,CACA,EACE,MAAO,CACL,KAAM,IAAM,GACZ,KAAM,IAAM,GACZ,eAAiB,GAAM,GACvB,aAAc,IAAM,GACpB,aAAc,IAAM,GACpB,cAAe,IAAM,GACrB,kBAAmB,IAAM,GACzB,YAAa,IAAM,GACnB,OAAQ,IAAM,EAClB,EACE,MAAO,CACL,MAAO,CACL,QAAS,GACT,UAAW,GACX,eAAgB,GAChB,QAAS,CACP,SAAU,GACV,OAAQ,GACR,SAAU,GACV,OAAQ,EAChB,EACM,OAAQ,CACN,EAAG,EACH,EAAG,EACH,UAAW,GACX,SAAU,KAAK,SACf,MAAO,CACL,EAAG,EACH,EAAG,EACH,aAAc,CACxB,EACQ,gBAAiB,IACzB,EACM,SAAU,UAAU,CAAC,KAAK,SAAU,KAAK,IAAG,CAAE,EAAE,IAAK,GAAM,EAAE,SAAS,EAAE,EAAE,UAAU,EAAG,EAAE,CAAC,EAAE,KAAK,GAAG,CAAC,GACrG,cAA+B,IAAI,IACnC,aAAc,GACd,YAAa,GACb,qBAAsB,GACtB,WAAY,GACZ,kBAAmB,EACzB,CACE,EACA,SAAU,CACR,UAAW,CACT,OAAO,KAAK,QAAU,KAAO,KAAK,OAAS,KAAK,QAClD,EACA,oBAAqB,CACnB,OAAO,KAAK,YAAc,KAAK,SACjC,EACA,UAAW,CACT,MAAO,CACL,SAAU,KAAK,SACf,QAAS,KAAK,QACd,mBAAoB,KAAK,mBACzB,eAAgB,KAAK,eACrB,SAAU,OAAO,KAAK,UAAY,WAAa,KAAK,aAAe,KAAK,SACxE,KAAM,KAAK,KACX,KAAM,KAAK,KACX,aAAc,KAAK,aACnB,SAAU,KAAK,SACf,QAAS,CACP,GAAG,KAAK,QACR,YAAa,KAAK,WAC5B,EACQ,OAAQ,KAAK,oBAAsB,KAAO,KAAK,OAC/C,MAAO,KAAK,MACpB,CACI,EACA,cAAe,CACb,IAAI,EACJ,OAAQ,EAAI,KAAKuC,EAAC,IAAM,KAAO,OAAS,EAAE,YAC5C,EACA,2BAA4B,CAC1B,IAAI,EAAG,EACP,QAAS,EAAI,KAAK,iBAAmB,KAAO,OAAS,EAAE,SAAS,OAAO,MAAQ,EAAI,KAAK,qBAAuB,KAAO,OAAS,EAAE,SAAS,OAAO,EACnJ,CACJ,EACE,MAAO,CACL,MAAO,iBACP,SAAS,EAAG,CACV,EAAI,KAAK,UAAY,KAAK,KAAI,CAChC,EACA,MAAM,WAAY,CAChB,KAAK,UAAY,KAAK,iBAAgB,EAAI,MAAM,KAAK,oBACvD,EACA,SAAU,CACR,QAAS,qBACT,KAAM,EACZ,EACI,oBAAqB,qBACrB,GAAG,CACD,YACA,WACA,WACA,WACA,WACA,kBACA,eACA,kBACA,QACA,iBACA,MACN,EAAM,OAAO,CAAC,EAAG,KAAO,EAAE,CAAC,EAAI,oBAAqB,GAAI,CAAA,CAAE,CAC1D,EACE,SAAU,CACR,KAAK,aAAe,QAAQ,KAAK,kFAAkF,EAAG,KAAK,aAAe,QAAQ,KAAK,uFAAuF,CAChP,EACA,SAAU,CACR,KAAK,KAAI,EAAI,KAAK,mBAAkB,CACtC,EACA,WAAY,CACV,KAAK,eAAc,CACrB,EACA,aAAc,CACZ,KAAK,KAAI,CACX,EACA,eAAgB,CACd,KAAK,QAAO,CACd,EACA,QAAS,CACP,KAAK,CAAE,MAAO,EAAI,KAAM,UAAW,EAAI,GAAI,MAAOrC,EAAI,EAAE,EAAK,CAAA,EAAI,CAC/D,IAAI3G,EAAG5G,GACN4G,EAAI,KAAK,eAAiB,MAAQA,EAAE,aAAe,KAAK,aAAa,cAAgB,OAAS,KAAK,YAAc,IAAK2G,GAAK,CAAC,KAAK,cAAgBvN,EAAI,KAAK,eAAiB,KAAO,OAASA,EAAE,eAAiB,OAAS,KAAK,aAAa,YAAc,MAAO,KAAK,eAAe,EAAG,CAAC,EAAG,KAAK,MAAM,MAAM,EAAG,KAAK,kBAAoB,GAAI,sBAAsB,IAAM,CACrW,KAAK,kBAAoB,EAC3B,CAAC,GAAI,KAAK,MAAM,eAAgB,EAAE,EACpC,EACA,KAAK,CAAE,MAAO,EAAI,KAAM,UAAW,EAAI,EAAE,EAAK,GAAI,CAChD,IAAIuN,EACJ,GAAI,CAAC,KAAK,iBAAkB,CAC1B,GAAI,KAAK,cAAc,KAAO,EAAG,CAC/B,KAAK,YAAc,GACnB,MACF,CACA,GAAI,KAAK,2BAA6B,KAAK,iBAAgB,EAAI,CAC7D,KAAK,eAAiB,KAAK,aAAa,YAAc,KAAM,aAAa,KAAK,aAAa,gBAAgB,EAAG,KAAK,aAAa,iBAAmB,WAAW,IAAM,CAClK,KAAK,aAAa,cAAgB,OAAS,KAAK,aAAa,YAAY,KAAK,CAAE,UAAW,CAAC,CAAE,EAAG,KAAK,aAAa,YAAc,KACnI,EAAG,GAAG,GACN,MACF,GACEA,EAAI,KAAK,eAAiB,KAAO,OAASA,EAAE,eAAiB,OAAS,KAAK,aAAa,YAAc,MAAO,KAAK,YAAc,GAAI,KAAK,eAAe,EAAG,CAAC,EAAG,KAAK,MAAM,MAAM,EAAG,KAAK,MAAM,eAAgB,EAAE,CACpN,CACF,EACA,MAAO,CACL,IAAI,EACJ,KAAK,aAAe,KAAK,WAAa,GAAI,KAAK,UAAY,GAAI,KAAK,SAAW,CAAA,EAAI,KAAK,cAAgB,GAAI,KAAK,kBAAoB,EAAI,KAAK,gBAAkB,KAAO,OAAS,EAAE,KAAK,IAAI,IAAM,KAAK,IAAK,KAAK,cAAgB,KAAK,YAAW,EAAG,OAAQ,GAAM,EAAE,WAAa,EAAE,YAAY,EAAG,KAAK,aAAe,KAAK,WAAU,EAAI,KAAK,YAAc,KAAK,aAAa,cAAc,kBAAkB,EAAG,KAAK,YAAc,KAAK,aAAa,cAAc,4BAA4B,EAAG,KAAK,kBAAkB,QAAS,qBAAqB,EAAG,KAAK,mBAAkB,EAAI,KAAK,SAAS,QAAU,KAAK,oBAAmB,EAAI,KAAK,OAAS,KAAK,OAC9nB,EACA,SAAU,CACR,KAAK,aAAe,KAAK,WAAa,GAAI,KAAK,uBAAsB,EAAI,KAAK,KAAK,CAAE,UAAW,EAAE,CAAE,EAAG,KAAK,qBAAsB,KAAK,UAAY,GAAI,KAAK,QAAU,GAAI,KAAK,4BAA4B,EAAE,EAAG,KAAK,kBAAkB,sBAAuB,OAAO,EACvQ,EACA,MAAM,UAAW,CACf,KAAK,UAAY,MAAM,KAAK,kBAAiB,EAAI,KAAK,MAAM,QAAQ,EACtE,EACA,MAAM,mBAAoB,CACxB,GAAI,KAAK,YAAc,KAAK,oBAC1B,OACF,MAAM,EAAI,CACR,SAAU,KAAK,SACf,WAAY,CAAA,CACpB,GACO,KAAK,UAAY,KAAK,WAAa,EAAE,WAAW,KAAKuC,GAAG,CACvD,SAAU,KAAK,SACf,UAAW,KAAK,QACxB,CAAO,CAAC,EACF,MAAM,EAAI,KAAK,UAAU,WAAW,MAAM,EAC1C,GAAI,EAAI,EAAE,WAAW,KAAKC,GAAG,CAC3B,UAAW,KAAK,UAAU,MAAM,GAAG,EAAE,CAAC,GAAK,EACnD,CAAO,CAAC,EAAI,EAAE,UAAY,KAAK,UAAW,KAAK,kBAAoB,KAAK,OAAS,EAAE,WAAW,KAAKC,GAAG,CAC9F,QAAS,KAAK,gBACd,SAAU,KAAK,SACf,UAAW,KAAK,cACxB,CAAO,CAAC,EAAG,CAAC,GAAK,KAAK,MAAQ,EAAE,WAAW,KAAKC,GAAG,CAC3C,QAAS,KAAK,gBACd,SAAU,KAAK,QACvB,CAAO,CAAC,GAAI,EAAE,WAAW,KAAKC,GAAG,CACzB,QAAS,KAAK,YACd,QAAS,KAAK,YACtB,CAAO,CAAC,EAAG,KAAK,eAAiB,EAAE,WAAW,KAAK,CAC3C,KAAM,gBACN,GAAI,CAAC,CAAE,UAAWtJ,EAAG,MAAO5G,EAAG,eAAgBwN,KAAQ,CACrD,IAAIM,EACJ,KAAM,CAAE,aAAc,CAAC,EAAKN,EAAE,MAC9B,OAAO5G,EAAE,WAAW,KAAK,GAAKA,EAAE,WAAW,QAAQ,EAAIkH,EAAI,KAAK,IAAI,CAAC,EAAI9N,EAAE,UAAU,MAAQ,EAAI8N,EAAI,KAAK,IAAI,CAAC,EAAI9N,EAAE,UAAU,OAAS,EAAG,CACzI,KAAM,CACJ,SAAU8N,CACxB,CACA,CACQ,CACR,CAAO,EAAG,KAAK,aAAe,KAAK,SAAU,CACrC,MAAMlH,EAAI,KAAK,SAAW,KAAK,SAAW,KAAK,YAAc,MAAQ,KACrE,EAAE,WAAW,KAAK,CAChB,KAAM,WACN,GAAI,CAAC,CAAE,MAAO5G,EAAG,UAAWwN,EAAG,eAAgBM,KAAQ,CACrD,IAAID,EACJ,IAAKA,EAAIC,EAAE,WAAa,MAAQD,EAAE,KAChC,MAAO,CAAA,EACT,IAAIrE,EAAGiE,EACP,OAAOD,EAAE,WAAW,KAAK,GAAKA,EAAE,WAAW,QAAQ,EAAIhE,EAAIxJ,EAAE,UAAU,MAAQyN,EAAIzN,EAAE,UAAU,OAAQ,KAAK,YAAY,MAAM4G,IAAM,MAAQ,WAAaA,IAAM,MAAQ,WAAa,OAAO,EAAI4C,GAAK,KAAO,GAAGA,CAAC,KAAO,KAAM,KAAK,YAAY,MAAM5C,IAAM,MAAQ,YAAcA,IAAM,MAAQ,YAAc,QAAQ,EAAI6G,GAAK,KAAO,GAAGA,CAAC,KAAO,KAAM,CAClV,KAAM,CACJ,KAAM,EACtB,EACc,MAAO,CACL,MAAO,EACvB,CACA,CACU,CACV,CAAS,CACH,EACC,KAAK,aAAe,KAAK,uBAAyB,KAAK,YAAY,MAAM,SAAW,KAAM,KAAK,YAAY,MAAM,UAAY,KAAM,EAAE,WAAW,KAAK0C,GAAG,CACvJ,SAAU,KAAK,SACf,QAAS,KAAK,gBACd,MAAO,CAAC,CAAE,eAAgBvJ,EAAG,gBAAiB5G,CAAC,IAAO,CACpD,KAAK,YAAY,MAAM,SAAW4G,GAAK,KAAO,GAAGA,CAAC,KAAO,KAAM,KAAK,YAAY,MAAM,UAAY5G,GAAK,KAAO,GAAGA,CAAC,KAAO,IAC3H,CACR,CAAO,CAAC,GACF,MAAMuN,EAAI,MAAM6C,GAAG,KAAK,gBAAiB,KAAK,aAAc,CAAC,EAC7D,OAAO,OAAO,KAAK,OAAQ,CACzB,EAAG7C,EAAE,EACL,EAAGA,EAAE,EACL,UAAWA,EAAE,UACb,SAAUA,EAAE,SACZ,MAAO,CACL,GAAGA,EAAE,eAAe,MACpB,GAAGA,EAAE,eAAe,aAC9B,CACA,CAAO,CACH,EACA,eAAe,EAAG,EAAI,GAAI,CACxB,GAAI,KAAK,4BAA4B,EAAE,EAAG,KAAK,iBAAmB,GAAI,aAAa,KAAK,eAAe,EAAGQ,IAAK,KAAK,aAAeA,GAAE,aAAeA,KAAM,KAAK,aAAc,CAC3KA,GAAE,YAAY,EAAE,EAAG,KAAK,YAAY,EAAE,EACtC,MACF,CACA,EAAI,KAAK,YAAW,EAAK,KAAK,gBAAkB,WAAW,KAAK,YAAY,KAAK,IAAI,EAAG,KAAK,eAAe,MAAM,CAAC,CACrH,EACA,eAAe,EAAG,EAAI,GAAI,CACxB,GAAI,KAAK,cAAc,KAAO,EAAG,CAC/B,KAAK,YAAc,GACnB,MACF,CACA,KAAK,4BAA4B,EAAE,EAAG,KAAK,iBAAmB,GAAI,aAAa,KAAK,eAAe,EAAG,KAAK,UAAYA,GAAI,MAAO,EAAI,KAAK,YAAW,EAAK,KAAK,gBAAkB,WAAW,KAAK,YAAY,KAAK,IAAI,EAAG,KAAK,eAAe,MAAM,CAAC,CACvP,EACA,eAAe,EAAG,CAChB,MAAM,EAAI,KAAK,MACf,OAAO,SAAS,GAAK,EAAE,CAAC,GAAK,GAAK,CAAC,CACrC,EACA,MAAM,YAAY,EAAI,GAAI,CACxB,aAAa,KAAK,cAAc,EAAG,aAAa,KAAK,eAAe,EAAG,KAAK,eAAiB,EAAG,CAAC,KAAK,UAAY,KAAK,iBAAgB,EAAI,MAAMyB,GAAC,EAAI,MAAM,KAAK,kBAAiB,EAAI,MAAM,KAAK,kBAAiB,EAAI,KAAK,qBAAuB,KAAK,yBAAyB,CAC9Q,GAAGa,GAAG,KAAK,eAAe,EAC1B,GAAGA,GAAG,KAAK,YAAY,CAC/B,EAAS,SAAU,IAAM,CACjB,KAAK,kBAAiB,CACxB,CAAC,EACH,EACA,MAAM,mBAAoB,CACxB,GAAI,KAAK,iBACP,OACF,GAAI,KAAK,uBAAwB,CAC/B,MAAM,EAAI,KAAK,gBAAgB,sBAAqB,EAAI9C,EAAI,KAAK,aAAa,cAAc,oBAAoB,EAAG3G,EAAI2G,EAAE,WAAW,sBAAqB,EAAIvN,EAAI,EAAE,EAAI,EAAE,MAAQ,GAAK4G,EAAE,KAAO2G,EAAE,YAAaC,EAAI,EAAE,EAAI,EAAE,OAAS,GAAK5G,EAAE,IAAM2G,EAAE,WAClP,KAAK,OAAO,gBAAkB,GAAGvN,CAAC,MAAMwN,CAAC,IAC3C,CACA,KAAK,QAAU,GAAI,KAAK,qBAAqB,CAC3C,mBAAoB,KAAK,SACzB,oBAAqB,EAC7B,CAAO,EACD,MAAM,EAAI,KAAK,UACf,GAAI,EAAG,CACL,IAAI,EACJ,QAASD,EAAI,EAAGA,EAAIhE,GAAE,OAAQgE,IAC5B,EAAIhE,GAAEgE,CAAC,EAAG,EAAE,YAAc,IAAM,EAAE,KAAI,EAAI,EAAE,MAAM,aAAa,EACnE,CACAhE,GAAE,KAAK,IAAI,EAAG,SAAS,KAAK,UAAU,IAAI,qBAAqB,EAC/D,UAAW,KAAK0F,GAAG,KAAK,KAAK,EAC3BS,GAAG,CAAC,EAAE,KAAK,IAAI,EAAG,SAAS,KAAK,UAAU,IAAI,wBAAwB,CAAC,EAAE,EAC3E,KAAK,MAAM,YAAY,EAAG,KAAK,QAAQ,SAAW,GAAI,KAAK,QAAQ,OAAS,GAAI,KAAK,QAAQ,SAAW,GAAI,KAAK,QAAQ,OAAS,GAAI,MAAMF,GAAC,EAAI,KAAK,QAAQ,SAAW,GAAI,KAAK,QAAQ,OAAS,GAAI,KAAK,aAAe,KAAK,aAAa,MAAK,CACpP,EACA,MAAM,YAAY,EAAI,GAAI,CACxB,GAAI,KAAK,cAAc,KAAO,EAAG,CAC/B,KAAK,YAAc,GAAI,KAAK,iBAAmB,GAC/C,MACF,CACA,GAAI,aAAa,KAAK,eAAe,EAAG,CAAC,KAAK,QAC5C,OACF,KAAK,eAAiB,EAAGD,GAAGhG,GAAG,IAAI,EAAGA,GAAE,SAAW,GAAK,SAAS,KAAK,UAAU,OAAO,qBAAqB,EAC5G,UAAWgE,KAAK0B,GAAG,KAAK,KAAK,EAAG,CAC9B,MAAMrI,EAAI8I,GAAGnC,CAAC,EACdgC,GAAG3I,EAAG,IAAI,EAAGA,EAAE,SAAW,GAAK,SAAS,KAAK,UAAU,OAAO,wBAAwB2G,CAAC,EAAE,CAC3F,CACAQ,KAAM,OAASA,GAAI,MAAO,KAAK,QAAU,GAAI,KAAK,qBAAqB,CACrE,mBAAoB,OACpB,oBAAqB,MAC7B,CAAO,EAAG,aAAa,KAAK,cAAc,EACpC,MAAM,EAAI,KAAK,eACf,IAAM,OAAS,KAAK,eAAiB,WAAW,IAAM,CACpD,KAAK,eAAiB,KAAK,mBAAkB,EAAI,KAAK,UAAY,GACpE,EAAG,CAAC,GAAI,KAAK,uBAAuB,QAAQ,EAAG,KAAK,MAAM,YAAY,EAAG,KAAK,QAAQ,SAAW,GAAI,KAAK,QAAQ,OAAS,GAAI,KAAK,QAAQ,SAAW,GAAI,KAAK,QAAQ,OAAS,GAAI,MAAMyB,GAAC,EAAI,KAAK,QAAQ,SAAW,GAAI,KAAK,QAAQ,OAAS,EACpP,EACA,gBAAiB,CACf,KAAK,MAAQ,KAAK,KAAI,EAAK,KAAK,KAAI,CACtC,EACA,kBAAmB,CACjB,GAAI,KAAK,WACP,OACF,IAAI,EAAI,KAAK,UACb,GAAI,OAAO,GAAK,SAAW,EAAI,OAAO,SAAS,cAAc,CAAC,EAAI,IAAM,KAAO,EAAI,KAAK,cAAc,CAAC,EAAE,YAAa,CAAC,EACrH,MAAM,IAAI,MAAM,6BAA+B,KAAK,SAAS,EAC/D,EAAE,YAAY,KAAK,YAAY,EAAG,KAAK,UAAY,EACrD,EACA,qBAAsB,CACpB,MAAM,EAAKjC,GAAM,CACf,KAAK,SAAW,CAAC,KAAK,mBAAqBA,EAAE,cAAgB,GAAI,CAAC,KAAK,eAAiB,KAAK,KAAK,CAAE,MAAOA,CAAC,CAAE,EAChH,EACA,KAAK,2BAA2B,KAAK,cAAe8B,GAAI,KAAK,SAAU,KAAK,aAAc,CAAC,EAAG,KAAK,2BAA2B,CAAC,KAAK,YAAY,EAAGA,GAAI,KAAK,eAAgB,KAAK,mBAAoB,CAAC,EACtM,MAAM,EAAK9B,GAAM,CACfA,EAAE,eAAiB,KAAK,KAAK,CAAE,MAAOA,EAAG,CAC3C,EACA,KAAK,2BAA2B,KAAK,cAAe+B,GAAI,KAAK,SAAU,KAAK,aAAc,CAAC,EAAG,KAAK,2BAA2B,CAAC,KAAK,YAAY,EAAGA,GAAI,KAAK,eAAgB,KAAK,mBAAoB,CAAC,CACxM,EACA,yBAAyB,EAAG,EAAG/B,EAAG,CAChC,KAAK,SAAS,KAAK,CAAE,YAAa,EAAG,UAAW,EAAG,QAASA,CAAC,CAAE,EAAG,EAAE,QAAS3G,GAAMA,EAAE,iBAAiB,EAAG2G,EAAG2B,GAAI,CAC9G,QAAS,EACjB,EAAU,MAAM,CAAC,CACb,EACA,2BAA2B,EAAG,EAAG3B,EAAG3G,EAAG5G,EAAG,CACxC,IAAIwN,EAAID,EACR3G,GAAK,OAAS4G,EAAI,OAAO5G,GAAK,WAAaA,EAAE4G,CAAC,EAAI5G,GAAI4G,EAAE,QAASM,GAAM,CACrE,MAAM,EAAI,EAAEA,CAAC,EACb,GAAK,KAAK,yBAAyB,EAAG,EAAG9N,CAAC,CAC5C,CAAC,CACH,EACA,uBAAuB,EAAG,CACxB,MAAM,EAAI,CAAA,EACV,KAAK,SAAS,QAASuN,GAAM,CAC3B,KAAM,CAAE,YAAa3G,EAAG,UAAW5G,EAAG,QAASwN,CAAC,EAAKD,EACrD,CAAC,GAAK,IAAMvN,EAAI4G,EAAE,QAASkH,GAAMA,EAAE,oBAAoB9N,EAAGwN,CAAC,CAAC,EAAI,EAAE,KAAKD,CAAC,CAC1E,CAAC,EAAG,KAAK,SAAW,CACtB,EACA,oBAAqB,CACnB,KAAK,aAAe,KAAK,uBAAsB,EAAI,KAAK,sBAC1D,EACA,oBAAoB,EAAG,EAAI,GAAI,CAC7B,KAAK,oBAAsB,KAAK,KAAK,CAAE,MAAO,EAAG,EAAG,EAAE,aAAe,KAAK,MAAM,iBAAiB,EAAI,KAAK,MAAM,WAAW,EAAG,IAAM,KAAK,cAAgB,GAAI,WAAW,IAAM,CAC5K,KAAK,cAAgB,EACvB,EAAG,GAAG,GACR,EACA,oBAAqB,CACnB,KAAK,aAAa,YAAc,KAAK,aAAa,WAAW,YAAY,KAAK,YAAY,CAC5F,EACA,kBAAkB,EAAG,EAAG,CACtB,UAAWA,KAAK,KAAK,cAAe,CAClC,MAAM3G,EAAI2G,EAAE,aAAa,CAAC,EAC1B3G,IAAM2G,EAAE,gBAAgB,CAAC,EAAGA,EAAE,aAAa,EAAG3G,CAAC,EACjD,CACF,EACA,qBAAqB,EAAG,CACtB,UAAW,KAAK,KAAK,cACnB,UAAW2G,KAAK,EAAG,CACjB,MAAM3G,EAAI,EAAE2G,CAAC,EACb3G,GAAK,KAAO,EAAE,gBAAgB2G,CAAC,EAAI,EAAE,aAAaA,EAAG3G,CAAC,CACxD,CACJ,EACA,4BAA4B,EAAG,CAC7B,IAAI,EAAI,KAAK,aACb,KAAO,GACL,EAAI,EAAE,cAAc,IAAI,KAAK,QAAQ,GAAK,EAAE,cAAc,OAAO,KAAK,QAAQ,EAAG,EAAE,aAAe,EAAE,QAAS,EAAI,EAAE,YACvH,EACA,kBAAmB,CACjB,MAAM,EAAI,KAAK,gBAAgB,sBAAqB,EACpD,GAAIhH,IAAK,EAAE,MAAQA,IAAK,EAAE,OAAS3I,IAAK,EAAE,KAAOA,IAAK,EAAE,OAAQ,CAC9D,MAAM,EAAI,KAAK,aAAa,sBAAqB,EAAIsW,EAAI3N,GAAI8N,GAAG9G,EAAI3P,GAAI+W,GAAGR,EAAI,EAAE,KAAO,EAAE,MAAQ,EAAIE,IAAK,EAAE,IAAM,EAAE,OAAS,GAAKM,GAAI,EAAE,MAAQ,EAAE,OAAQF,EAAIJ,GAAIH,EAAIC,EAAGhE,EAAIwE,GAAIpH,EAAI4G,EACtL,OAAOc,GAAEZ,GAAGM,GAAGF,EAAGtE,EAAG,EAAE,KAAM,EAAE,IAAK,EAAE,KAAM,EAAE,MAAM,GACpD8E,GAAEZ,GAAGM,GAAGF,EAAGtE,EAAG,EAAE,KAAM,EAAE,IAAK,EAAE,MAAO,EAAE,GAAG,GAC3C8E,GAAEZ,GAAGM,GAAGF,EAAGtE,EAAG,EAAE,MAAO,EAAE,IAAK,EAAE,MAAO,EAAE,MAAM,GAC/C8E,GAAEZ,GAAGM,GAAGF,EAAGtE,EAAG,EAAE,KAAM,EAAE,OAAQ,EAAE,MAAO,EAAE,MAAM,CACnD,CACA,MAAO,EACT,CACJ,EACE,QAAS,CACP,OAAO,KAAK,OAAO,QAAQ,KAAK,QAAQ,CAC1C,CACF,CAAC,EACD,GAAI,OAAO,SAAW,KAAO,OAAO,OAAS,IAAK,CAChD,GAAI2F,GAAI,CACN,MAAM,EAAID,GAAI,CACZ,QAAS,GACT,QAAS,EACf,EAAQ,GACJ,SAAS,iBAAiB,aAAe,GAAMoB,GAAG,CAAK,EAAG,CAAC,EAAG,SAAS,iBAAiB,WAAa,GAAMC,GAAG,EAAG,EAAE,EAAG,CAAC,CACzH,MACE,OAAO,iBAAiB,YAAc,GAAMD,GAAG,CAAK,EAAG,EAAE,EAAG,OAAO,iBAAiB,QAAU,GAAMC,GAAG,EAAG,EAAE,EAAG,EAAE,EACnH,OAAO,iBAAiB,SAAUC,EAAE,CACtC,CACA,SAASF,GAAG,EAAG,EAAG,CAId,QAAS/C,EAAI,EAAGA,EAAIhE,GAAE,OAAQgE,IAAK,CACjC,MAAM3G,EAAI2C,GAAEgE,CAAC,EACb,GAAI,CACF3G,EAAE,kBAAoBA,EAAE,WAAU,EAAG,SAAS,EAAE,MAAM,CACxD,MAAQ,CACR,CACF,CACJ,CACA,SAAS2J,GAAG,EAAG,EAAG,CACSE,GAAG,EAAG,CAAC,CAClC,CACA,SAASA,GAAG,EAAG,EAAG,CAChB,MAAMlD,EAAI,CAAA,EACV,QAAS3G,EAAI2C,GAAE,OAAS,EAAG3C,GAAK,EAAGA,IAAK,CACtC,MAAM5G,EAAIuJ,GAAE3C,CAAC,EACb,GAAI,CACF,MAAM4G,EAAIxN,EAAE,qBAAuBA,EAAE,mBAAqBA,EAAE,WAAU,EAAG,SAAS,EAAE,MAAM,EAC1FA,EAAE,YAAc,GAAI,sBAAsB,IAAM,CAC9C,GAAIA,EAAE,YAAc,GAAI,CAACuN,EAAEvN,EAAE,QAAQ,GAAK0Q,GAAG1Q,EAAGwN,EAAG,CAAC,EAAG,CACrD,GAAIxN,EAAE,oBAAoB,EAAG,CAAC,EAAG,CAAC,EAAE,iBAAmB,EAAE,cAAgBwN,EAAG,CAC1E,IAAI,EAAIxN,EAAE,aACV,KAAO,GACLuN,EAAE,EAAE,QAAQ,EAAI,GAAI,EAAI,EAAE,aAC5B,MACF,CACA,IAAIO,EAAI9N,EAAE,aACV,KAAO8N,GAAK4C,GAAG5C,EAAGA,EAAE,qBAAsB,CAAC,GACzCA,EAAE,oBAAoB,EAAG,CAAC,EAC1BA,EAAIA,EAAE,YAEV,CACF,CAAC,CACH,MAAQ,CACR,CACF,CACF,CACA,SAAS4C,GAAG,EAAG,EAAGnD,EAAG,CACnB,OAAOA,EAAE,iBAAmBA,EAAE,cAAgB,GAAKoD,GAAG,EAAGpD,CAAC,GAAK,CAAC,CAClE,CACA,SAASoD,GAAG,EAAG,EAAG,CAChB,GAAI,OAAO,EAAE,UAAY,WAAY,CACnC,MAAMpD,EAAI,EAAE,SAAS,CAAC,EACtB,OAAO,EAAE,aAAeA,EAAGA,CAC7B,CACA,OAAO,EAAE,QACX,CACA,SAASiD,IAAK,CACZ,QAAS,EAAI,EAAG,EAAIjH,GAAE,OAAQ,IAC5BA,GAAE,CAAC,EAAE,kBAAiB,CAC1B,CAKA,IAAImE,GAAI,EAAGM,GAAI,EAAGpO,GAAI,EAAG3I,GAAI,EAC7B,OAAO,OAAS,KAAO,OAAO,iBAAiB,YAAc,GAAM,CACjEyW,GAAI9N,GAAGoO,GAAI/W,GAAG2I,GAAI,EAAE,QAAS3I,GAAI,EAAE,OACrC,EAAGiY,GAAI,CACL,QAAS,EACX,EAAI,MAAM,EACV,SAASZ,GAAE,EAAG,EAAGf,EAAG3G,EAAG5G,EAAGwN,EAAGM,EAAG,EAAG,CACjC,MAAM,IAAMA,EAAI9N,IAAM,EAAIwN,IAAM,EAAIA,IAAM,EAAIxN,MAAQ,EAAIwN,IAAMD,EAAI,IAAMO,EAAI9N,IAAM4G,EAAI,IAAKiH,IAAMN,EAAI,IAAM,EAAIC,IAAM5G,EAAI,IAAM,EAAI5G,MAAQ,EAAIwN,IAAMD,EAAI,IAAMO,EAAI9N,IAAM4G,EAAI,IAC/K,OAAO,GAAK,GAAK,GAAK,GAAKiH,GAAK,GAAKA,GAAK,CAC5C,CACA,MAAM+C,GAAK,CACT,QAASf,GAAC,CACZ,EAAGd,GAAI,CAAC,EAAG,IAAM,CACf,MAAMxB,EAAI,EAAE,WAAa,EACzB,SAAW,CAAC3G,EAAG5G,CAAC,IAAK,EACnBuN,EAAE3G,CAAC,EAAI5G,EACT,OAAOuN,CACT,EACA,SAASsD,GAAG,EAAG,EAAGtD,EAAG3G,EAAG5G,EAAGwN,EAAG,CAC5B,OAAOI,EAAC,EAAIS,GAAE,MAAO,CACnB,IAAK,YACL,MAAOyC,GAAE,CAAC,WAAY,CACpB,kBAAmB,EAAE,SAAS,OACpC,CAAK,CAAC,CACN,EAAK,CACDnC,GAAE,EAAE,OAAQ,UAAWoC,GAAGC,GAAG,EAAE,QAAQ,CAAC,CAAC,CAC7C,EAAK,CAAC,CACN,CACA,MAAMC,GAAqBlC,GAAE6B,GAAI,CAAC,CAAC,SAAUC,EAAE,CAAC,CAAC,EACjD,SAASK,IAAK,CACZ,IAAI,EAAI,OAAO,UAAU,UAAW,EAAI,EAAE,QAAQ,OAAO,EACzD,GAAI,EAAI,EACN,OAAO,SAAS,EAAE,UAAU,EAAI,EAAG,EAAE,QAAQ,IAAK,CAAC,CAAC,EAAG,EAAE,EAC3D,IAAI3D,EAAI,EAAE,QAAQ,UAAU,EAC5B,GAAIA,EAAI,EAAG,CACT,IAAI3G,EAAI,EAAE,QAAQ,KAAK,EACvB,OAAO,SAAS,EAAE,UAAUA,EAAI,EAAG,EAAE,QAAQ,IAAKA,CAAC,CAAC,EAAG,EAAE,CAC3D,CACA,IAAI5G,EAAI,EAAE,QAAQ,OAAO,EACzB,OAAOA,EAAI,EAAI,SAAS,EAAE,UAAUA,EAAI,EAAG,EAAE,QAAQ,IAAKA,CAAC,CAAC,EAAG,EAAE,EAAI,EACvE,CACA,IAAImR,GACJ,SAASC,IAAI,CACXA,GAAE,OAASA,GAAE,KAAO,GAAID,GAAID,GAAE,IAAO,GACvC,CACA,IAAI/C,GAAI,CACN,KAAM,iBACN,MAAO,CACL,YAAa,CACX,KAAM,QACN,QAAS,EACf,EACI,YAAa,CACX,KAAM,QACN,QAAS,EACf,EACI,aAAc,CACZ,KAAM,QACN,QAAS,EACf,CACA,EACE,MAAO,CACL,QACJ,EACE,SAAU,CACRiD,GAAC,EAAIC,GAAG,IAAM,CACZ,KAAK,GAAK,KAAK,IAAI,YAAa,KAAK,GAAK,KAAK,IAAI,aAAc,KAAK,aAAe,KAAK,SAAQ,CACpG,CAAC,EACD,MAAM,EAAI,SAAS,cAAc,QAAQ,EACzC,KAAK,cAAgB,EAAG,EAAE,aAAa,cAAe,MAAM,EAAG,EAAE,aAAa,WAAY,EAAE,EAAG,EAAE,OAAS,KAAK,kBAAmB,EAAE,KAAO,YAAaF,IAAK,KAAK,IAAI,YAAY,CAAC,EAAG,EAAE,KAAO,cAAeA,IAAK,KAAK,IAAI,YAAY,CAAC,CAC3O,EACA,eAAgB,CACd,KAAK,qBAAoB,CAC3B,EACA,QAAS,CACP,kBAAmB,EAChB,CAAC,KAAK,aAAe,KAAK,KAAO,KAAK,IAAI,aAAe,CAAC,KAAK,cAAgB,KAAK,KAAO,KAAK,IAAI,gBAAkB,KAAK,GAAK,KAAK,IAAI,YAAa,KAAK,GAAK,KAAK,IAAI,aAAc,KAAK,SAAQ,EACvM,EACA,UAAW,CACT,KAAK,MAAM,SAAU,CACnB,MAAO,KAAK,GACZ,OAAQ,KAAK,EACrB,CAAO,CACH,EACA,mBAAoB,CAClB,KAAK,cAAc,gBAAgB,YAAY,iBAAiB,SAAU,KAAK,gBAAgB,EAAG,KAAK,iBAAgB,CACzH,EACA,sBAAuB,CACrB,KAAK,eAAiB,KAAK,cAAc,SAAW,CAACA,IAAK,KAAK,cAAc,iBAAmB,KAAK,cAAc,gBAAgB,YAAY,oBAAoB,SAAU,KAAK,gBAAgB,EAAG,KAAK,IAAI,YAAY,KAAK,aAAa,EAAG,KAAK,cAAc,OAAS,KAAM,KAAK,cAAgB,KACxS,CACJ,CACA,EACA,MAAMG,GAAqBC,GAAoB,EAC/CC,GAAG,iBAAiB,EACpB,MAAMC,GAAK,CACT,MAAO,kBACP,SAAU,IACZ,EACAC,GAAE,EACF,MAAMC,GAAqBL,GAAG,CAAC,EAAG,EAAG/D,EAAG3G,EAAG5G,EAAGwN,KAAOI,EAAC,EAAIgE,GAAE,MAAOH,EAAE,EAAE,EACvEtD,GAAE,OAASwD,GACXxD,GAAE,UAAY,kBACdA,GAAE,OAAS,oCACX,MAAM0D,GAAI,CAAC,EAAI,WAAa,CAC1B,SAAU,CACR,YAAa,CACX,OAAO7C,GAAG,KAAK,CAAC,CAAC,CACnB,CACJ,CACA,GAAI8C,GAAKjD,GAAE,CACT,KAAM,iBACN,WAAY,CACV,eAAgBV,EACpB,EACE,OAAQ,CACN0D,GAAC,CACL,EACE,MAAO,CACL,SAAU,OACV,MAAO,OACP,MAAO,QACP,QAAS,QACT,eAAgB,QAChB,SAAU,QACV,aAAc,QACd,QAAS,OACT,OAAQ,MACZ,EACE,MAAO,CACL,OACA,QACJ,EACE,QAAS,CACP,KAAK,EAAG,CACN,OAAO,GAAK,MAAQ,CAAC,MAAM,CAAC,EAAI,GAAG,CAAC,KAAO,IAC7C,CACJ,CACA,CAAC,EAAGE,GAAK,CAAC,KAAM,cAAe,WAAY,uBAAuB,EAAGC,GAAK,CACxE,IAAK,QACL,MAAO,iBACT,EAAGC,GAAqBhE,EAAE,MAAO,CAAE,MAAO,uBAAuB,EAAI,KAAM,EAAE,EAAGiE,GAAqBjE,EAAE,MAAO,CAAE,MAAO,uBAAuB,EAAI,KAAM,EAAE,EAAGkE,GAAK,CAChKF,GACAC,EACF,EACA,SAASE,GAAG,EAAG,EAAG7E,EAAG3G,EAAG5G,EAAGwN,EAAG,CAC5B,MAAMM,EAAIgB,GAAE,gBAAgB,EAC5B,OAAOlB,EAAC,EAAIS,GAAE,MAAO,CACnB,GAAI,EAAE,SACN,IAAK,UACL,MAAOyC,GAAE,CAAC,mBAAoB,CAC5B,EAAE,WACF,EAAE,QAAQ,YACV,CACE,0BAA2B,EAAE,MAC7B,2BAA4B,CAAC,EAAE,MAC/B,8BAA+B,EAAE,QAAQ,SACzC,4BAA6B,EAAE,QAAQ,OACvC,8BAA+B,EAAE,QAAQ,SACzC,4BAA6B,EAAE,QAAQ,OACvC,oCAAqC,EAAE,eACvC,mCAAoC,EAAE,QAAU,EAAE,OAAO,MAAM,SAC/D,mCAAoC,CAAC,EAAE,MAC/C,CACA,CAAK,CAAC,EACF,MAAOtC,GAAE,EAAE,OAAS,CAClB,SAAU,EAAE,OAAO,SACnB,UAAW,eAAe,KAAK,MAAM,EAAE,OAAO,CAAC,CAAC,MAAM,KAAK,MAAM,EAAE,OAAO,CAAC,CAAC,OAClF,EAAQ,MAAM,EACV,cAAe,EAAE,MAAQ,QAAU,OACnC,SAAU,EAAE,SAAW,EAAI,OAC3B,wBAAyB,EAAE,OAAS,EAAE,OAAO,UAAY,OACzD,QAAS,EAAE,CAAC,IAAM,EAAE,CAAC,EAAI6D,GAAI,GAAM,EAAE,UAAY,EAAE,MAAM,MAAM,EAAG,CAAC,KAAK,CAAC,EAC7E,EAAK,CACDpE,EAAE,MAAO,CACP,MAAO,qBACP,QAAS,EAAE,CAAC,IAAM,EAAE,CAAC,EAAK,GAAM,EAAE,UAAY,EAAE,MAAM,MAAM,EAClE,CAAK,EACDA,EAAE,MAAO,CACP,MAAO,oBACP,MAAOO,GAAE,EAAE,OAAS,CAClB,gBAAiB,EAAE,OAAO,eAClC,EAAU,MAAM,CAChB,EAAO,CACDP,EAAE,MAAO+D,GAAI,CACX,EAAE,SAAWpE,IAAKS,GAAEiE,GAAI,CAAE,IAAK,GAAK,CAClCrE,EAAE,MAAO,KAAM,CACbU,GAAE,EAAE,OAAQ,SAAS,CACjC,CAAW,EACD,EAAE,cAAgBf,IAAKgE,GAAE9D,EAAG,CAC1B,IAAK,EACL,SAAU,EAAE,CAAC,IAAM,EAAE,CAAC,EAAK,GAAM,EAAE,MAAM,SAAU,CAAC,EAChE,CAAW,GAAKyE,GAAG,GAAI,EAAE,CACzB,EAAW,EAAE,GAAKA,GAAG,GAAI,EAAE,CAC3B,EAAS,GAAG,EACNtE,EAAE,MAAO,CACP,IAAK,QACL,MAAO,4BACP,MAAOO,GAAE,EAAE,OAAS,CAClB,KAAM,EAAE,KAAK,EAAE,OAAO,MAAM,CAAC,EAC7B,IAAK,EAAE,KAAK,EAAE,OAAO,MAAM,CAAC,CACtC,EAAY,MAAM,CAClB,EAAS2D,GAAI,CAAC,CACd,EAAO,CAAC,CACR,EAAK,GAAIJ,EAAE,CACX,CACA,MAAMS,GAAqBzD,GAAE+C,GAAI,CAAC,CAAC,SAAUM,EAAE,CAAC,CAAC,EAAGK,GAAK,CACvD,QAAS,CACP,QAAQ,EAAG,CACT,OAAO,KAAK,MAAM,OAAO,KAAK,GAAG,CAAC,CACpC,EACA,QAAQ,EAAG,CACT,OAAO,KAAK,MAAM,OAAO,KAAK,GAAG,CAAC,CACpC,EACA,WAAW,EAAG,CACZ,OAAO,KAAK,MAAM,OAAO,QAAQ,GAAG,CAAC,CACvC,EACA,YAAY,EAAG,CACb,OAAO,KAAK,MAAM,OAAO,SAAS,GAAG,CAAC,CACxC,CACJ,CACA,EACA,IAAIC,GAAI,UAAW,CACnB,EACA,OAAO,OAAS,MAAQA,GAAI,OAAO,SACnC,MAAMC,GAAK9D,GAAE,CACX,KAAM,iBACN,WAAY,CACV,OAAQoC,GACR,cAAeuB,EACnB,EACE,OAAQ,CACNC,GACAZ,GAAE,YAAY,CAClB,EACE,MAAO,CACL,MAAO,CACL,KAAM,OACN,QAAS,IACf,EACI,cAAe,CACb,KAAM,SACN,QAAS,IACf,EACI,MAAO,CACL,KAAM,QACN,QAAS,EACf,EACI,UAAW,CACT,KAAM,OACN,QAAS,IACf,EAEI,OAAQ,CACN,QAAS,IACf,EACI,SAAU,CACR,KAAM,QACN,QAAS,MACf,EACI,oBAAqB,CACnB,KAAM,QACN,QAAS,MACf,EACI,UAAW,CACT,KAAM,OACN,QAAS,MACf,EACI,MAAO,CACL,KAAM,CAAC,OAAQ,OAAQ,MAAM,EAC7B,QAAS,MACf,EACI,SAAU,CACR,KAAM,CAAC,OAAQ,MAAM,EACrB,QAAS,MACf,EACI,SAAU,CACR,KAAM,CAAC,OAAQ,MAAM,EACrB,QAAS,MACf,EACI,SAAU,CACR,KAAM,MACN,QAAS,MACf,EACI,aAAc,CACZ,KAAM,CAAC,MAAO,QAAQ,EACtB,QAAS,MACf,EACI,aAAc,CACZ,KAAM,CAAC,MAAO,QAAQ,EACtB,QAAS,MACf,EACI,eAAgB,CACd,KAAM,MACN,QAAS,MACf,EACI,mBAAoB,CAClB,KAAM,CAAC,MAAO,QAAQ,EACtB,QAAS,MACf,EACI,mBAAoB,CAClB,KAAM,CAAC,MAAO,QAAQ,EACtB,QAAS,MACf,EACI,UAAW,CACT,KAAM,CAAC,OAAQ,OAAQa,GAAG,OAAO,EACjC,QAAS,MACf,EACI,SAAU,CACR,KAAM,CAAC,OAAQA,EAAC,EAChB,QAAS,MACf,EACI,SAAU,CACR,KAAM,OACN,QAAS,MACf,EACI,SAAU,CACR,KAAM,CAAC,QAAS,QAAQ,EACxB,QAAS,MACf,EACI,aAAc,CACZ,KAAM,QACN,QAAS,MACf,EACI,YAAa,CACX,KAAM,QACN,QAAS,MACf,EACI,WAAY,CACV,KAAM,QACN,QAAS,MACf,EACI,YAAa,CACX,KAAM,CAAC,OAAQ,MAAO,MAAM,EAC5B,QAAS,MACf,EACI,uBAAwB,CACtB,KAAM,QACN,QAAS,MACf,EAII,YAAa,CACX,KAAM,QACN,QAAS,MACf,EACI,SAAU,CACR,KAAM,CAAC,QAAS,MAAM,EACtB,QAAS,MACf,EAII,YAAa,CACX,KAAM,QACN,QAAS,MACf,EACI,oBAAqB,CACnB,KAAM,QACN,QAAS,MACf,EACI,gBAAiB,CACf,KAAM,QACN,QAAS,MACf,EACI,gBAAiB,CACf,KAAM,CAAC,OAAQ,MAAM,EACrB,QAAS,MACf,EACI,aAAc,CACZ,KAAM,CAAC,OAAQ,MAAM,EACrB,QAAS,MACf,EACI,cAAe,CACb,KAAM,QACN,QAAS,MACf,EACI,KAAM,CACJ,KAAM,QACN,QAAS,MACf,EACI,MAAO,CACL,KAAM,QACN,QAAS,MACf,EACI,eAAgB,CACd,KAAM,QACN,QAAS,MACf,EACI,YAAa,CACX,KAAM,QACN,QAAS,MACf,EACI,eAAgB,CACd,KAAM,OACN,QAAS,MACf,CACA,EACE,MAAO,CACL,KAAM,IAAM,GACZ,KAAM,IAAM,GACZ,eAAiB,GAAM,GACvB,aAAc,IAAM,GACpB,aAAc,IAAM,GACpB,cAAe,IAAM,GACrB,kBAAmB,IAAM,GACzB,YAAa,IAAM,GACnB,OAAQ,IAAM,EAClB,EACE,SAAU,CACR,YAAa,CACX,OAAO,KAAK,OAAS,KAAK,SAAS,YACrC,CACJ,EACE,QAAS,CACP,gBAAiB,CACf,OAAO,MAAM,KAAK,KAAK,IAAI,QAAQ,EAAE,OAAQ,GAAM,IAAM,KAAK,MAAM,cAAc,GAAG,CACvF,CACJ,CACA,CAAC,EACD,SAASE,GAAG,EAAG,EAAGrF,EAAG3G,EAAG5G,EAAGwN,EAAG,CAC5B,MAAMM,EAAIgB,GAAE,eAAe,EAAG,EAAIA,GAAE,QAAQ,EAC5C,OAAOlB,EAAC,EAAIgE,GAAE,EAAGiB,GAAG,CAAE,IAAK,QAAQ,EAAI,EAAE,OAAQ,CAC/C,MAAO,EAAE,WACT,eAAgB,EAAE,eAClB,cAAe,IAAM,EAAE,MAAM,cAAc,IAC3C,MAAO,CACL,EAAE,UACR,EACI,OAAQ,EAAE,CAAC,IAAM,EAAE,CAAC,EAAI,IAAM,EAAE,MAAM,MAAM,GAC5C,OAAQ,EAAE,CAAC,IAAM,EAAE,CAAC,EAAI,IAAM,EAAE,MAAM,MAAM,GAC5C,iBAAkB,EAAE,CAAC,IAAM,EAAE,CAAC,EAAK,GAAM,EAAE,MAAM,eAAgB,CAAC,GAClE,YAAa,EAAE,CAAC,IAAM,EAAE,CAAC,EAAI,IAAM,EAAE,MAAM,YAAY,GACvD,YAAa,EAAE,CAAC,IAAM,EAAE,CAAC,EAAI,IAAM,EAAE,MAAM,YAAY,GACvD,aAAc,EAAE,CAAC,IAAM,EAAE,CAAC,EAAI,IAAM,EAAE,MAAM,aAAa,GACzD,iBAAkB,EAAE,CAAC,IAAM,EAAE,CAAC,EAAI,IAAM,EAAE,MAAM,iBAAiB,GACjE,WAAY,EAAE,CAAC,IAAM,EAAE,CAAC,EAAI,IAAM,EAAE,MAAM,WAAW,GACrD,SAAU,EAAE,CAAC,IAAM,EAAE,CAAC,EAAI,IAAM,EAAE,MAAM,QAAQ,EACpD,CAAG,EAAG,CACF,QAASC,EAAE,CAAC,CACV,SAAU,EACV,QAASjF,EACT,mBAAoBK,EACpB,eAAgBO,EAChB,SAAUsE,EACV,KAAMxE,EACN,KAAMxM,EACN,aAAcqM,EACd,SAAU4E,EACV,QAASC,EACT,OAAQC,CACd,IAAU,CACJvE,GAAE,EAAE,OAAQ,UAAW,CACrB,MAAOd,EACP,KAAMU,EACN,KAAMxM,CACd,CAAO,EACDoR,EAAGrF,EAAG,CACJ,IAAK,gBACL,YAAa,EACb,MAAO,EAAE,WACT,MAAOD,EACP,QAASK,EACT,kBAAmBO,EACnB,YAAasE,EACb,gBAAiB3E,EACjB,QAAS6E,EACT,OAAQC,EACR,OAAQnR,EACR,SAAUiR,CAClB,EAAS,CACD,QAASF,EAAE,IAAM,CACfnE,GAAE,EAAE,OAAQ,SAAU,CACpB,MAAOd,EACP,KAAM9L,CAClB,CAAW,CACX,CAAS,EACD,EAAG,CACX,EAAS,KAAM,CAAC,YAAa,QAAS,QAAS,UAAW,kBAAmB,YAAa,gBAAiB,UAAW,SAAU,SAAU,UAAU,CAAC,CACrJ,CAAK,EACD,EAAG,CACP,EAAK,GAAI,CAAC,QAAS,eAAgB,cAAe,OAAO,CAAC,CAC1D,CACK,MAACqR,GAAoBrE,GAAE4D,GAAI,CAAC,CAAC,SAAUC,EAAE,CAAC,CAAC,EAAGS,GAAK,CACtD,GAAGD,GACH,KAAM,YACN,aAAc,UAChB,GAAQ,CACN,GAAGA,EAGL,EAAQ,CACN,GAAGA,EAGL,GAAQvE,GAAE,CACR,KAAM,oBACN,WAAY,CACV,OAAQgB,GAAC,EACT,cAAe2C,EACnB,EACE,OAAQ,CACNC,EACJ,EACE,aAAc,GACd,MAAO,CACL,MAAO,CACL,KAAM,OACN,QAAS,SACf,EACI,KAAM,CACJ,KAAM,QACN,QAAU,GAAM/D,GAAE,EAAE,MAAO,MAAM,CACvC,EACI,QAAS,CACP,KAAM,CAAC,OAAQ,OAAQ,QAAQ,EAC/B,QAAS,IACf,EACI,eAAgB,CACd,KAAM,OACN,QAAU,GAAMA,GAAE,EAAE,MAAO,gBAAgB,CACjD,EACI,YAAa,CACX,KAAM,SACN,SAAU,EAChB,CACA,EACE,MAAO,CACL,MAAO,CACL,aAAc,IACpB,CACE,EACA,SAAU,CACR,gBAAiB,CACf,OAAO,OAAO,KAAK,SAAW,UAChC,EACA,SAAU,CACR,OAAO,KAAK,gBAAkB,KAAK,cAAgB,IACrD,EACA,cAAe,CACb,OAAO,KAAK,eAAiB,KAAK,QAAU,KAAK,eAAiB,KAAK,aAAe,KAAK,OAC7F,CACJ,EACE,MAAO,CACL,QAAS,CACP,SAAU,CACR,KAAK,aAAa,EAAE,CACtB,EACA,UAAW,EACjB,EACI,MAAM,cAAe,CACnB,MAAM,KAAK,UAAS,EAAI,KAAK,MAAM,OAAO,SAAQ,CACpD,CACJ,EACE,SAAU,CACR,KAAK,UAAY,CACnB,EACA,QAAS,CACP,aAAa,EAAG,CACd,GAAI,OAAO,KAAK,SAAW,YAAc,KAAK,YAAc,GAAK,CAAC,KAAK,WAAa,KAAK,cAAgB,MAAO,CAC9G,KAAK,aAAe,KAAM,KAAK,UAAY,GAC3C,MAAM,EAAI,EAAE,KAAK,UAAWnB,EAAI,KAAK,QAAQ,IAAI,EACjDA,EAAE,KAAOA,EAAE,KAAM3G,GAAM,KAAK,SAAS,EAAGA,CAAC,CAAC,EAAI,KAAK,SAAS,EAAG2G,CAAC,CAClE,CACF,EACA,SAAS,EAAG,EAAG,CACb,IAAM,KAAK,YAAc,KAAK,UAAY,GAAI,KAAK,aAAe,EACpE,EACA,QAAS,CACP,KAAK,UAAY,GAAI,KAAK,aAAY,CACxC,EACA,QAAS,CACP,KAAK,UAAY,EACnB,CACJ,CACA,CAAC,EAoKI,MAUF+F,GAAK3F,GAAuC4F,GAAKF,GCvgDpD,IAAIG,GAAqB,CAAC,oCAAqC,qCAAsC,uCAAwC,sCAAuC,yCAA0C,qCAAsC,mDAAoD,8CAA+C,8CAA+C,+EAAgF,4DAA6D,qCAAqC,EACpkBC,GAAmCD,GAAmB,KAAK,GAAG,EAC9DE,GAAY,OAAO,QAAY,IAC/BrY,GAAUqY,GAAY,UAAY,CAAC,EAAI,QAAQ,UAAU,SAAW,QAAQ,UAAU,mBAAqB,QAAQ,UAAU,sBAC7HC,GAAc,CAACD,IAAa,QAAQ,UAAU,YAAc,SAAUjZ,EAAS,CACjF,IAAImZ,EACJ,OAAOnZ,GAAY,OAAuCmZ,EAAuBnZ,EAAQ,eAAiB,MAAQmZ,IAAyB,OAA3F,OAA6GA,EAAqB,KAAKnZ,CAAO,CAChM,EAAI,SAAUA,EAAS,CACrB,OAAyDA,GAAQ,aACnE,EAUIoZ,GAAW,SAAiBla,EAAMma,EAAQ,CAC5C,IAAIC,EACAD,IAAW,SACbA,EAAS,IAKX,IAAIE,EAAWra,GAAS,OAAoCoa,EAAqBpa,EAAK,gBAAkB,MAAQoa,IAAuB,OAArF,OAAuGA,EAAmB,KAAKpa,EAAM,OAAO,EAC1Lsa,EAAQD,IAAa,IAAMA,IAAa,OAKxCE,EAASD,GAASH,GAAUna,IAGhC,OAAOA,EAAK,SAAY,WAAaA,EAAK,QAAQ,SAAS,EAAIka,GAASla,EAAK,UAAU,GACvF,OAAOua,CACT,EAOIC,GAAoB,SAA2Bxa,EAAM,CACvD,IAAIya,EAIAC,EAAW1a,GAAS,OAAoCya,EAAsBza,EAAK,gBAAkB,MAAQya,IAAwB,OAAvF,OAAyGA,EAAoB,KAAKza,EAAM,iBAAiB,EAC3M,OAAO0a,IAAa,IAAMA,IAAa,MACzC,EAQIC,GAAgB,SAAuB9jB,EAAI+jB,EAAkBliB,EAAQ,CAGvE,GAAIwhB,GAASrjB,CAAE,EACb,MAAO,CAAA,EAET,IAAIgkB,EAAa,MAAM,UAAU,MAAM,MAAMhkB,EAAG,iBAAiBijB,EAAiB,CAAC,EACnF,OAAIc,GAAoBlZ,GAAQ,KAAK7K,EAAIijB,EAAiB,GACxDe,EAAW,QAAQhkB,CAAE,EAEvBgkB,EAAaA,EAAW,OAAOniB,CAAM,EAC9BmiB,CACT,EAoCIC,GAA4B,SAAkChP,EAAU8O,EAAkBllB,EAAS,CAGrG,QAFImlB,EAAa,CAAA,EACbE,EAAkB,MAAM,KAAKjP,CAAQ,EAClCiP,EAAgB,QAAQ,CAC7B,IAAIja,EAAUia,EAAgB,MAAK,EACnC,GAAI,CAAAb,GAASpZ,EAAS,EAAK,EAK3B,GAAIA,EAAQ,UAAY,OAAQ,CAE9B,IAAIka,EAAWla,EAAQ,iBAAgB,EACnCma,EAAUD,EAAS,OAASA,EAAWla,EAAQ,SAC/Coa,EAAmBJ,GAA0BG,EAAS,GAAMvlB,CAAO,EACnEA,EAAQ,QACVmlB,EAAW,KAAK,MAAMA,EAAYK,CAAgB,EAElDL,EAAW,KAAK,CACd,YAAa/Z,EACb,WAAYoa,CACtB,CAAS,CAEL,KAAO,CAEL,IAAIC,EAAiBzZ,GAAQ,KAAKZ,EAASgZ,EAAiB,EACxDqB,GAAkBzlB,EAAQ,OAAOoL,CAAO,IAAM8Z,GAAoB,CAAC9O,EAAS,SAAShL,CAAO,IAC9F+Z,EAAW,KAAK/Z,CAAO,EAIzB,IAAIsa,EAAata,EAAQ,YAEzB,OAAOpL,EAAQ,eAAkB,YAAcA,EAAQ,cAAcoL,CAAO,EAKxEua,EAAkB,CAACnB,GAASkB,EAAY,EAAK,IAAM,CAAC1lB,EAAQ,kBAAoBA,EAAQ,iBAAiBoL,CAAO,GACpH,GAAIsa,GAAcC,EAAiB,CAOjC,IAAIC,EAAoBR,GAA0BM,IAAe,GAAOta,EAAQ,SAAWsa,EAAW,SAAU,GAAM1lB,CAAO,EACzHA,EAAQ,QACVmlB,EAAW,KAAK,MAAMA,EAAYS,CAAiB,EAEnDT,EAAW,KAAK,CACd,YAAa/Z,EACb,WAAYwa,CACxB,CAAW,CAEL,MAGEP,EAAgB,QAAQ,MAAMA,EAAiBja,EAAQ,QAAQ,CAEnE,CACF,CACA,OAAO+Z,CACT,EAQIU,GAAc,SAAqBvb,EAAM,CAC3C,MAAO,CAAC,MAAM,SAASA,EAAK,aAAa,UAAU,EAAG,EAAE,CAAC,CAC3D,EAQIwb,GAAc,SAAqBxb,EAAM,CAC3C,GAAI,CAACA,EACH,MAAM,IAAI,MAAM,kBAAkB,EAEpC,OAAIA,EAAK,SAAW,IAQb,0BAA0B,KAAKA,EAAK,OAAO,GAAKwa,GAAkBxa,CAAI,IAAM,CAACub,GAAYvb,CAAI,EACzF,EAGJA,EAAK,QACd,EAUIyb,GAAuB,SAA8Bzb,EAAM0b,EAAS,CACtE,IAAIC,EAAWH,GAAYxb,CAAI,EAC/B,OAAI2b,EAAW,GAAKD,GAAW,CAACH,GAAYvb,CAAI,EACvC,EAEF2b,CACT,EACIC,GAAuB,SAA8B/L,EAAGC,EAAG,CAC7D,OAAOD,EAAE,WAAaC,EAAE,SAAWD,EAAE,cAAgBC,EAAE,cAAgBD,EAAE,SAAWC,EAAE,QACxF,EACI+L,GAAU,SAAiB7b,EAAM,CACnC,OAAOA,EAAK,UAAY,OAC1B,EACI8b,GAAgB,SAAuB9b,EAAM,CAC/C,OAAO6b,GAAQ7b,CAAI,GAAKA,EAAK,OAAS,QACxC,EACI+b,GAAuB,SAA8B/b,EAAM,CAC7D,IAAI6T,EAAI7T,EAAK,UAAY,WAAa,MAAM,UAAU,MAAM,MAAMA,EAAK,QAAQ,EAAE,KAAK,SAAUzB,EAAO,CACrG,OAAOA,EAAM,UAAY,SAC3B,CAAC,EACD,OAAOsV,CACT,EACImI,GAAkB,SAAyBC,EAAOC,EAAM,CAC1D,QAASjP,EAAI,EAAGA,EAAIgP,EAAM,OAAQhP,IAChC,GAAIgP,EAAMhP,CAAC,EAAE,SAAWgP,EAAMhP,CAAC,EAAE,OAASiP,EACxC,OAAOD,EAAMhP,CAAC,CAGpB,EACIkP,GAAkB,SAAyBnc,EAAM,CACnD,GAAI,CAACA,EAAK,KACR,MAAO,GAET,IAAIoc,EAAapc,EAAK,MAAQga,GAAYha,CAAI,EAC1Cqc,EAAc,SAAqBlP,EAAM,CAC3C,OAAOiP,EAAW,iBAAiB,6BAA+BjP,EAAO,IAAI,CAC/E,EACImP,EACJ,GAAI,OAAO,OAAW,KAAe,OAAO,OAAO,IAAQ,KAAe,OAAO,OAAO,IAAI,QAAW,WACrGA,EAAWD,EAAY,OAAO,IAAI,OAAOrc,EAAK,IAAI,CAAC,MAEnD,IAAI,CACFsc,EAAWD,EAAYrc,EAAK,IAAI,CAClC,OAASuc,EAAK,CAEZ,OAAA,QAAQ,MAAM,2IAA4IA,EAAI,OAAO,EAC9J,EACT,CAEF,IAAIC,EAAUR,GAAgBM,EAAUtc,EAAK,IAAI,EACjD,MAAO,CAACwc,GAAWA,IAAYxc,CACjC,EACIyc,GAAU,SAAiBzc,EAAM,CACnC,OAAO6b,GAAQ7b,CAAI,GAAKA,EAAK,OAAS,OACxC,EACI0c,GAAqB,SAA4B1c,EAAM,CACzD,OAAOyc,GAAQzc,CAAI,GAAK,CAACmc,GAAgBnc,CAAI,CAC/C,EAGI2c,GAAiB,SAAwB3c,EAAM,CACjD,IAAI4c,EAwBAC,EAAW7c,GAAQga,GAAYha,CAAI,EACnC8c,GAAgBF,EAAYC,KAAc,MAAQD,IAAc,OAAS,OAASA,EAAU,KAI5FG,EAAW,GACf,GAAIF,GAAYA,IAAa7c,EAAM,CACjC,IAAIgd,EAAeC,EAAuBC,EAE1C,IADAH,EAAW,CAAC,GAAGC,EAAgBF,KAAkB,MAAQE,IAAkB,SAAWC,EAAwBD,EAAc,iBAAmB,MAAQC,IAA0B,QAAUA,EAAsB,SAASH,CAAY,GAAK9c,GAAS,OAA4Bkd,EAAsBld,EAAK,iBAAmB,MAAQkd,IAAwB,QAAUA,EAAoB,SAASld,CAAI,GAClY,CAAC+c,GAAYD,GAAc,CAChC,IAAIK,EAAYC,EAAgBC,EAIhCR,EAAW7C,GAAY8C,CAAY,EACnCA,GAAgBK,EAAaN,KAAc,MAAQM,IAAe,OAAS,OAASA,EAAW,KAC/FJ,EAAW,CAAC,GAAGK,EAAiBN,KAAkB,MAAQM,IAAmB,SAAWC,EAAwBD,EAAe,iBAAmB,MAAQC,IAA0B,QAAUA,EAAsB,SAASP,CAAY,EAC3O,CACF,CACA,OAAOC,CACT,EACIO,GAAa,SAAoBtd,EAAM,CACzC,IAAIud,EAAwBvd,EAAK,sBAAqB,EACpD2C,EAAQ4a,EAAsB,MAC9B3a,EAAS2a,EAAsB,OACjC,OAAO5a,IAAU,GAAKC,IAAW,CACnC,EACI4a,GAAW,SAAkBxd,EAAMiL,EAAM,CAC3C,IAAIwS,EAAexS,EAAK,aACtByS,EAAgBzS,EAAK,cACvB,GAAIwS,IAAiB,eACf,oBAAqBzd,EAAM,CAG7B,IAAI2d,EAAU3d,EAAK,gBAAgB,CAGjC,aAAc,GACd,gBAAiB,GACjB,sBAAuB,GACvB,mBAAoB,GAKpB,mBAAoB,EAC5B,CAAO,EACD,MAAO,CAAC2d,CACV,CASF,IAAIC,EAAoB,iBAAiB5d,CAAI,EAC3C6d,EAAaD,EAAkB,WACjC,GAAIC,IAAe,UAAYA,IAAe,WAC5C,MAAO,GAET,IAAIC,EAAkBpc,GAAQ,KAAK1B,EAAM,+BAA+B,EACpE+d,EAAmBD,EAAkB9d,EAAK,cAAgBA,EAC9D,GAAI0B,GAAQ,KAAKqc,EAAkB,uBAAuB,EACxD,MAAO,GAET,GAAI,CAACN,GAAgBA,IAAiB,QAGtCA,IAAiB,eAAiBA,IAAiB,cAAe,CAChE,GAAI,OAAOC,GAAkB,WAAY,CAIvC,QADIM,EAAehe,EACZA,GAAM,CACX,IAAIie,EAAgBje,EAAK,cACrBke,EAAWlE,GAAYha,CAAI,EAC/B,GAAIie,GAAiB,CAACA,EAAc,YAAcP,EAAcO,CAAa,IAAM,GAIjF,OAAOX,GAAWtd,CAAI,EACbA,EAAK,aAEdA,EAAOA,EAAK,aACH,CAACie,GAAiBC,IAAale,EAAK,cAE7CA,EAAOke,EAAS,KAGhBle,EAAOie,CAEX,CACAje,EAAOge,CACT,CAWA,GAAIrB,GAAe3c,CAAI,EAKrB,MAAO,CAACA,EAAK,eAAc,EAAG,OAmBhC,GAAIyd,IAAiB,cACnB,MAAO,EAGX,SAAWA,IAAiB,gBAM1B,OAAOH,GAAWtd,CAAI,EAKxB,MAAO,EACT,EAKIme,GAAyB,SAAgCne,EAAM,CACjE,GAAI,mCAAmC,KAAKA,EAAK,OAAO,EAGtD,QAFIoe,EAAape,EAAK,cAEfoe,GAAY,CACjB,GAAIA,EAAW,UAAY,YAAcA,EAAW,SAAU,CAE5D,QAASnR,EAAI,EAAGA,EAAImR,EAAW,SAAS,OAAQnR,IAAK,CACnD,IAAI1O,EAAQ6f,EAAW,SAAS,KAAKnR,CAAC,EAEtC,GAAI1O,EAAM,UAAY,SAGpB,OAAOmD,GAAQ,KAAK0c,EAAY,sBAAsB,EAAI,GAAO,CAAC7f,EAAM,SAASyB,CAAI,CAEzF,CAEA,MAAO,EACT,CACAoe,EAAaA,EAAW,aAC1B,CAKF,MAAO,EACT,EACIC,GAAkC,SAAyC3oB,EAASsK,EAAM,CAC5F,MAAI,EAAAA,EAAK,UAAY8b,GAAc9b,CAAI,GAAKwd,GAASxd,EAAMtK,CAAO,GAElEqmB,GAAqB/b,CAAI,GAAKme,GAAuBne,CAAI,EAI3D,EACIse,GAAiC,SAAwC5oB,EAASsK,EAAM,CAC1F,MAAI,EAAA0c,GAAmB1c,CAAI,GAAKwb,GAAYxb,CAAI,EAAI,GAAK,CAACqe,GAAgC3oB,EAASsK,CAAI,EAIzG,EACIue,GAAuB,SAA8BC,EAAgB,CACvE,IAAI7C,EAAW,SAAS6C,EAAe,aAAa,UAAU,EAAG,EAAE,EACnE,MAAI,CAAA,EAAA,MAAM7C,CAAQ,GAAKA,GAAY,EAMrC,EAMI8C,GAAe,SAAqB5D,EAAY,CAClD,IAAI6D,EAAmB,CAAA,EACnBC,EAAmB,CAAA,EACvB,OAAA9D,EAAW,QAAQ,SAAU+D,EAAM3R,EAAG,CACpC,IAAIyO,EAAU,CAAC,CAACkD,EAAK,YACjB9d,EAAU4a,EAAUkD,EAAK,YAAcA,EACvCC,EAAoBpD,GAAqB3a,EAAS4a,CAAO,EACzD5P,EAAW4P,EAAU+C,GAAaG,EAAK,UAAU,EAAI9d,EACrD+d,IAAsB,EACxBnD,EAAUgD,EAAiB,KAAK,MAAMA,EAAkB5S,CAAQ,EAAI4S,EAAiB,KAAK5d,CAAO,EAEjG6d,EAAiB,KAAK,CACpB,cAAe1R,EACf,SAAU4R,EACV,KAAMD,EACN,QAASlD,EACT,QAAS5P,CACjB,CAAO,CAEL,CAAC,EACM6S,EAAiB,KAAK/C,EAAoB,EAAE,OAAO,SAAUzY,EAAK2b,EAAU,CACjF,OAAAA,EAAS,QAAU3b,EAAI,KAAK,MAAMA,EAAK2b,EAAS,OAAO,EAAI3b,EAAI,KAAK2b,EAAS,OAAO,EAC7E3b,CACT,EAAG,CAAA,CAAE,EAAE,OAAOub,CAAgB,CAChC,EACIK,GAAW,SAAkBC,EAAWtpB,EAAS,CACnDA,EAAUA,GAAW,CAAA,EACrB,IAAImlB,EACJ,OAAInlB,EAAQ,cACVmlB,EAAaC,GAA0B,CAACkE,CAAS,EAAGtpB,EAAQ,iBAAkB,CAC5E,OAAQ4oB,GAA+B,KAAK,KAAM5oB,CAAO,EACzD,QAAS,GACT,cAAeA,EAAQ,cACvB,iBAAkB6oB,EACxB,CAAK,EAED1D,EAAaF,GAAcqE,EAAWtpB,EAAQ,iBAAkB4oB,GAA+B,KAAK,KAAM5oB,CAAO,CAAC,EAE7G+oB,GAAa5D,CAAU,CAChC,EACIoE,GAAY,SAAmBD,EAAWtpB,EAAS,CACrDA,EAAUA,GAAW,CAAA,EACrB,IAAImlB,EACJ,OAAInlB,EAAQ,cACVmlB,EAAaC,GAA0B,CAACkE,CAAS,EAAGtpB,EAAQ,iBAAkB,CAC5E,OAAQ2oB,GAAgC,KAAK,KAAM3oB,CAAO,EAC1D,QAAS,GACT,cAAeA,EAAQ,aAC7B,CAAK,EAEDmlB,EAAaF,GAAcqE,EAAWtpB,EAAQ,iBAAkB2oB,GAAgC,KAAK,KAAM3oB,CAAO,CAAC,EAE9GmlB,CACT,EACIqE,GAAa,SAAoBlf,EAAMtK,EAAS,CAElD,GADAA,EAAUA,GAAW,CAAA,EACjB,CAACsK,EACH,MAAM,IAAI,MAAM,kBAAkB,EAEpC,OAAI0B,GAAQ,KAAK1B,EAAM8Z,EAAiB,IAAM,GACrC,GAEFwE,GAA+B5oB,EAASsK,CAAI,CACrD,EACImf,GAA4CtF,GAAmB,OAAO,oCAAoC,EAAE,KAAK,GAAG,EACpHuF,GAAc,SAAqBpf,EAAMtK,EAAS,CAEpD,GADAA,EAAUA,GAAW,CAAA,EACjB,CAACsK,EACH,MAAM,IAAI,MAAM,kBAAkB,EAEpC,OAAI0B,GAAQ,KAAK1B,EAAMmf,EAA0B,IAAM,GAC9C,GAEFd,GAAgC3oB,EAASsK,CAAI,CACtD,ECrkBA,SAASqf,GAAkBxL,EAAGhE,EAAG,EACtBA,GAAR,MAAaA,EAAIgE,EAAE,UAAYhE,EAAIgE,EAAE,QACtC,QAAS/W,EAAI,EAAG4W,EAAI,MAAM7D,CAAC,EAAG/S,EAAI+S,EAAG/S,IAAK4W,EAAE5W,CAAC,EAAI+W,EAAE/W,CAAC,EACpD,OAAO4W,CACT,CACA,SAAS4L,GAAmBzL,EAAG,CAC7B,GAAI,MAAM,QAAQA,CAAC,EAAG,OAAOwL,GAAkBxL,CAAC,CAClD,CACA,SAAS0L,GAA2B1L,EAAG/W,EAAG,CACxC,IAAI6W,EAAmB,OAAO,OAAtB,KAAgCE,EAAE,OAAO,QAAQ,GAAKA,EAAE,YAAY,EAC5E,GAAI,CAACF,EAAG,CACN,GAAI,MAAM,QAAQE,CAAC,IAAMF,EAAI6L,GAA4B3L,CAAC,IAAM/W,EAAG,CACjE6W,IAAME,EAAIF,GACV,IAAID,EAAI,EACNkB,EAAI,UAAY,CAAC,EACnB,MAAO,CACL,EAAGA,EACH,EAAG,UAAY,CACb,OAAOlB,GAAKG,EAAE,OAAS,CACrB,KAAM,EAClB,EAAc,CACF,KAAM,GACN,MAAOA,EAAEH,GAAG,CACxB,CACQ,EACA,EAAG,SAAUG,EAAG,CACd,MAAMA,CACR,EACA,EAAGe,CACX,CACI,CACA,MAAM,IAAI,UAAU;AAAA,mFAAuI,CAC7J,CACA,IAAIhB,EACF/D,EAAI,GACJqE,EAAI,GACN,MAAO,CACL,EAAG,UAAY,CACbP,EAAIA,EAAE,KAAKE,CAAC,CACd,EACA,EAAG,UAAY,CACb,IAAIA,EAAIF,EAAE,KAAI,EACd,OAAO9D,EAAIgE,EAAE,KAAMA,CACrB,EACA,EAAG,SAAUA,EAAG,CACdK,EAAI,GAAMN,EAAIC,CAChB,EACA,EAAG,UAAY,CACb,GAAI,CACFhE,GAAa8D,EAAE,QAAV,MAAoBA,EAAE,OAAM,CACnC,QAAA,CACE,GAAIO,EAAG,MAAMN,CACf,CACF,CACJ,CACA,CACA,SAAS6L,GAAgB,EAAG5L,EAAGF,EAAG,CAChC,OAAQE,EAAI6L,GAAe7L,CAAC,KAAM,EAAI,OAAO,eAAe,EAAGA,EAAG,CAChE,MAAOF,EACP,WAAY,GACZ,aAAc,GACd,SAAU,EACd,CAAG,EAAI,EAAEE,CAAC,EAAIF,EAAG,CACjB,CACA,SAASgM,GAAiB9L,EAAG,CAC3B,GAAmB,OAAO,OAAtB,KAAwCA,EAAE,OAAO,QAAQ,GAAzB,MAAsCA,EAAE,YAAY,GAAtB,KAAyB,OAAO,MAAM,KAAKA,CAAC,CAChH,CACA,SAAS+L,IAAqB,CAC5B,MAAM,IAAI,UAAU;AAAA,mFAAsI,CAC5J,CACA,SAASC,GAAQ,EAAGhM,EAAG,CACrB,IAAIF,EAAI,OAAO,KAAK,CAAC,EACrB,GAAI,OAAO,sBAAuB,CAChC,IAAIC,EAAI,OAAO,sBAAsB,CAAC,EACtCC,IAAMD,EAAIA,EAAE,OAAO,SAAUC,EAAG,CAC9B,OAAO,OAAO,yBAAyB,EAAGA,CAAC,EAAE,UAC/C,CAAC,GAAIF,EAAE,KAAK,MAAMA,EAAGC,CAAC,CACxB,CACA,OAAOD,CACT,CACA,SAASmM,GAAe,EAAG,CACzB,QAASjM,EAAI,EAAGA,EAAI,UAAU,OAAQA,IAAK,CACzC,IAAIF,EAAY,UAAUE,CAAC,GAAnB,KAAuB,UAAUA,CAAC,EAAI,CAAA,EAC9CA,EAAI,EAAIgM,GAAQ,OAAOlM,CAAC,EAAG,EAAI,EAAE,QAAQ,SAAUE,EAAG,CACpD4L,GAAgB,EAAG5L,EAAGF,EAAEE,CAAC,CAAC,CAC5B,CAAC,EAAI,OAAO,0BAA4B,OAAO,iBAAiB,EAAG,OAAO,0BAA0BF,CAAC,CAAC,EAAIkM,GAAQ,OAAOlM,CAAC,CAAC,EAAE,QAAQ,SAAUE,EAAG,CAChJ,OAAO,eAAe,EAAGA,EAAG,OAAO,yBAAyBF,EAAGE,CAAC,CAAC,CACnE,CAAC,CACH,CACA,OAAO,CACT,CACA,SAASkM,GAAmBlM,EAAG,CAC7B,OAAOyL,GAAmBzL,CAAC,GAAK8L,GAAiB9L,CAAC,GAAK2L,GAA4B3L,CAAC,GAAK+L,GAAkB,CAC7G,CACA,SAASI,GAAarM,EAAGE,EAAG,CAC1B,GAAgB,OAAOF,GAAnB,UAAwB,CAACA,EAAG,OAAOA,EACvC,IAAI7W,EAAI6W,EAAE,OAAO,WAAW,EAC5B,GAAe7W,IAAX,OAAc,CAChB,IAAImQ,EAAInQ,EAAE,KAAK6W,EAAGE,CAAC,EACnB,GAAgB,OAAO5G,GAAnB,SAAsB,OAAOA,EACjC,MAAM,IAAI,UAAU,8CAA8C,CACpE,CACA,OAAqB4G,IAAb,SAAiB,OAAS,QAAQF,CAAC,CAC7C,CACA,SAAS+L,GAAe/L,EAAG,CACzB,IAAI1G,EAAI+S,GAAarM,EAAG,QAAQ,EAChC,OAAmB,OAAO1G,GAAnB,SAAuBA,EAAIA,EAAI,EACxC,CACA,SAASuS,GAA4B3L,EAAGhE,EAAG,CACzC,GAAIgE,EAAG,CACL,GAAgB,OAAOA,GAAnB,SAAsB,OAAOwL,GAAkBxL,EAAGhE,CAAC,EACvD,IAAI8D,EAAI,CAAA,EAAG,SAAS,KAAKE,CAAC,EAAE,MAAM,EAAG,EAAE,EACvC,OAAoBF,IAAb,UAAkBE,EAAE,cAAgBF,EAAIE,EAAE,YAAY,MAAiBF,IAAV,OAAyBA,IAAV,MAAc,MAAM,KAAKE,CAAC,EAAoBF,IAAhB,aAAqB,2CAA2C,KAAKA,CAAC,EAAI0L,GAAkBxL,EAAGhE,CAAC,EAAI,MACvN,CACF,CAEA,IAAIoQ,GAAmB,CAErB,cAAe,SAAuBC,EAAW,CAC/C,OAA2DA,GAAU,OAAU,EACtEA,EAAUA,EAAU,OAAS,CAAC,EAEhC,IACT,EAEA,aAAc,SAAsBA,EAAW3Y,EAAM,CACnD,IAAI4Y,EAAaF,GAAiB,cAAcC,CAAS,EACrD3Y,IAAS4Y,GACXF,GAAiB,UAAUC,CAAS,EAEtC,IAAIE,EAAYF,EAAU,QAAQ3Y,CAAI,EAClC6Y,IAAc,IAIhBF,EAAU,OAAOE,EAAW,CAAC,EAC7BF,EAAU,KAAK3Y,CAAI,CAEvB,EAEA,eAAgB,SAAwB2Y,EAAW3Y,EAAM,CACvD,IAAI6Y,EAAYF,EAAU,QAAQ3Y,CAAI,EAClC6Y,IAAc,IAChBF,EAAU,OAAOE,EAAW,CAAC,EAE/BH,GAAiB,YAAYC,CAAS,CACxC,EAEA,UAAW,SAAmBA,EAAW,CACvC,IAAIC,EAAaF,GAAiB,cAAcC,CAAS,EACTC,GAAW,gBAAgB,EAAI,CACjF,EAEA,YAAa,SAAqBD,EAAW,CAC3C,IAAIC,EAAaF,GAAiB,cAAcC,CAAS,EACrDC,GAAc,CAACA,EAAW,qBAC5BA,EAAW,gBAAgB,EAAK,CAEpC,CACF,EACIE,GAAoB,SAA2BrgB,EAAM,CACvD,OAAOA,EAAK,SAAWA,EAAK,QAAQ,YAAW,IAAO,SAAW,OAAOA,EAAK,QAAW,UAC1F,EACIsgB,GAAgB,SAAuBxjB,EAAG,CAC5C,OAA8CA,GAAE,MAAS,UAAmDA,GAAE,MAAS,OAAgDA,GAAE,UAAa,EACxL,EACIyjB,GAAa,SAAoBzjB,EAAG,CACtC,OAA8CA,GAAE,MAAS,OAAgDA,GAAE,UAAa,CAC1H,EAGI0jB,GAAe,SAAsB1jB,EAAG,CAC1C,OAAOyjB,GAAWzjB,CAAC,GAAK,CAACA,EAAE,QAC7B,EAGI2jB,GAAgB,SAAuB3jB,EAAG,CAC5C,OAAOyjB,GAAWzjB,CAAC,GAAKA,EAAE,QAC5B,EACI4jB,GAAQ,SAAelqB,EAAI,CAC7B,OAAO,WAAWA,EAAI,CAAC,CACzB,EASImqB,GAAiB,SAAwB9mB,EAAO,CAClD,QAAS+mB,EAAO,UAAU,OAAQC,EAAS,IAAI,MAAMD,EAAO,EAAIA,EAAO,EAAI,CAAC,EAAGE,EAAO,EAAGA,EAAOF,EAAME,IACpGD,EAAOC,EAAO,CAAC,EAAI,UAAUA,CAAI,EAEnC,OAAO,OAAOjnB,GAAU,WAAaA,EAAM,MAAM,OAAQgnB,CAAM,EAAIhnB,CACrE,EACIknB,GAAkB,SAAyBtkB,EAAO,CAQpD,OAAOA,EAAM,OAAO,YAAc,OAAOA,EAAM,cAAiB,WAAaA,EAAM,aAAY,EAAG,CAAC,EAAIA,EAAM,MAC/G,EAIIukB,GAAoB,CAAA,EACpBC,GAAkB,SAAyBnV,EAAUoV,EAAa,CAGpE,IAAIC,EAAiED,GAAY,UAAa,SAC1FhB,EAAuEgB,GAAY,WAAcF,GACjGrU,EAASmT,GAAe,CAC1B,wBAAyB,GACzB,kBAAmB,GACnB,kBAAmB,GACnB,iBAAkB,GAClB,gBAAiB,GACjB,aAAcU,GACd,cAAeC,EACnB,EAAKS,CAAW,EACV/mB,EAAQ,CAGV,WAAY,CAAA,EAkBZ,gBAAiB,CAAA,EAOjB,eAAgB,CAAA,EAGhB,iBAAkB,IAAI,IAGtB,cAAe,IAAI,IACnB,4BAA6B,KAC7B,wBAAyB,KACzB,OAAQ,GACR,OAAQ,GACR,eAAgB,GAGhB,uBAAwB,OAExB,eAAgB,MACpB,EACMoN,EAUA6Z,EAAY,SAAmBC,EAAuBC,EAAYC,EAAkB,CACtF,OAAOF,GAAyBA,EAAsBC,CAAU,IAAM,OAAYD,EAAsBC,CAAU,EAAI3U,EAAO4U,GAAoBD,CAAU,CAC7J,EAYIE,EAAqB,SAA4B1gB,EAASrE,EAAO,CACnE,IAAIglB,EAAe,OAAsDhlB,GAAM,cAAkB,WAAaA,EAAM,aAAY,EAAK,OAIrI,OAAOtC,EAAM,gBAAgB,UAAU,SAAU8Q,EAAM,CACrD,IAAI+T,EAAY/T,EAAK,UACnByW,EAAgBzW,EAAK,cACvB,OAAO+T,EAAU,SAASle,CAAO,GAI2B2gB,GAAa,SAASzC,CAAS,GAAM0C,EAAc,KAAK,SAAU1hB,EAAM,CAClI,OAAOA,IAASc,CAClB,CAAC,CACH,CAAC,CACH,EAoBI6gB,EAAmB,SAA0BL,EAAY,CAC3D,IAAIM,EAAQ,UAAU,OAAS,GAAK,UAAU,CAAC,IAAM,OAAY,UAAU,CAAC,EAAI,CAAA,EAC9EC,EAAoBD,EAAM,YAC1BE,EAAcD,IAAsB,OAAS,GAAQA,EACrDE,EAAeH,EAAM,OACrBf,EAASkB,IAAiB,OAAS,CAAA,EAAKA,EACtCC,EAAcrV,EAAO2U,CAAU,EAOnC,GANI,OAAOU,GAAgB,aACzBA,EAAcA,EAAY,MAAM,OAAQjC,GAAmBc,CAAM,CAAC,GAEhEmB,IAAgB,KAClBA,EAAc,QAEZ,CAACA,EAAa,CAChB,GAAIA,IAAgB,QAAaA,IAAgB,GAC/C,OAAOA,EAIT,MAAM,IAAI,MAAM,IAAI,OAAOV,EAAY,8DAA8D,CAAC,CACxG,CACA,IAAIthB,EAAOgiB,EAEX,GAAI,OAAOA,GAAgB,SAAU,CACnC,GAAI,CACFhiB,EAAOmhB,EAAI,cAAca,CAAW,CACtC,OAASzF,EAAK,CACZ,MAAM,IAAI,MAAM,IAAI,OAAO+E,EAAY,8CAA+C,EAAE,OAAO/E,EAAI,QAAS,GAAI,CAAC,CACnH,CACA,GAAI,CAACvc,GACC,CAAC8hB,EACH,MAAM,IAAI,MAAM,IAAI,OAAOR,EAAY,uCAAuC,CAAC,CAKrF,CACA,OAAOthB,CACT,EAUIiiB,EAAoB,SAA0BprB,EAAI,CACpD,IAAImK,EAAgBnK,EAAG,cACvB,OAAKmK,EAGDA,EAAc,YAAcA,EAAc,WAAW,gBAAkB,KAClEihB,EAAkBjhB,EAAc,UAAU,EAE5CA,EALE,IAMX,EACIkhB,EAAsB,UAA+B,CACvD,IAAIliB,EAAO2hB,EAAiB,eAAgB,CAC1C,YAAa,EACnB,CAAK,EAGD,GAAI3hB,IAAS,GACX,MAAO,GAET,GAAIA,IAAS,QAAaA,GAAQ,CAACof,GAAYpf,EAAM2M,EAAO,eAAe,EAAG,CAC5E,IAAI3L,EAAgBihB,EAAkBd,CAAG,EAGzC,GAAIK,EAAmBxgB,CAAa,GAAK,EACvChB,EAAOgB,MACF,CACL,IAAImhB,EAAqBhoB,EAAM,eAAe,CAAC,EAC3CioB,EAAoBD,GAAsBA,EAAmB,kBAGjEniB,EAAOoiB,GAAqBT,EAAiB,eAAe,CAC9D,CACF,MAAW3hB,IAAS,OAGlBA,EAAO2hB,EAAiB,eAAe,GAEzC,GAAI,CAAC3hB,EACH,MAAM,IAAI,MAAM,8DAA8D,EAEhF,OAAOA,CACT,EACIqiB,EAAsB,UAA+B,CA4EvD,GA3EAloB,EAAM,gBAAkBA,EAAM,WAAW,IAAI,SAAU6kB,EAAW,CAChE,IAAI0C,EAAgB3C,GAASC,EAAWrS,EAAO,eAAe,EAK1D2V,EAAiBrD,GAAUD,EAAWrS,EAAO,eAAe,EAC5DyV,EAAoBV,EAAc,OAAS,EAAIA,EAAc,CAAC,EAAI,OAClEa,EAAmBb,EAAc,OAAS,EAAIA,EAAcA,EAAc,OAAS,CAAC,EAAI,OACxFc,EAAuBF,EAAe,KAAK,SAAUtiB,EAAM,CAC7D,OAAOkf,GAAWlf,CAAI,CACxB,CAAC,EACGyiB,EAAsBH,EAAe,MAAK,EAAG,UAAU,KAAK,SAAUtiB,EAAM,CAC9E,OAAOkf,GAAWlf,CAAI,CACxB,CAAC,EACG0iB,EAAqB,CAAC,CAAChB,EAAc,KAAK,SAAU1hB,EAAM,CAC5D,OAAOwb,GAAYxb,CAAI,EAAI,CAC7B,CAAC,EACD,MAAO,CACL,UAAWgf,EACX,cAAe0C,EACf,eAAgBY,EAEhB,mBAAoBI,EAEpB,kBAAmBN,EAEnB,iBAAkBG,EASlB,qBAAsBC,EAEtB,oBAAqBC,EASrB,iBAAkB,SAA0BziB,EAAM,CAChD,IAAI2iB,EAAU,UAAU,OAAS,GAAK,UAAU,CAAC,IAAM,OAAY,UAAU,CAAC,EAAI,GAC9EC,EAAUlB,EAAc,QAAQ1hB,CAAI,EACxC,OAAI4iB,EAAU,EAORD,EACKL,EAAe,MAAMA,EAAe,QAAQtiB,CAAI,EAAI,CAAC,EAAE,KAAK,SAAUnJ,EAAI,CAC/E,OAAOqoB,GAAWroB,CAAE,CACtB,CAAC,EAEIyrB,EAAe,MAAM,EAAGA,EAAe,QAAQtiB,CAAI,CAAC,EAAE,QAAO,EAAG,KAAK,SAAUnJ,EAAI,CACxF,OAAOqoB,GAAWroB,CAAE,CACtB,CAAC,EAEI6qB,EAAckB,GAAWD,EAAU,EAAI,GAAG,CACnD,CACR,CACI,CAAC,EACDxoB,EAAM,eAAiBA,EAAM,gBAAgB,OAAO,SAAU0oB,EAAO,CACnE,OAAOA,EAAM,cAAc,OAAS,CACtC,CAAC,EAGG1oB,EAAM,eAAe,QAAU,GAAK,CAACwnB,EAAiB,eAAe,EAEvE,MAAM,IAAI,MAAM,qGAAqG,EAUvH,GAAIxnB,EAAM,gBAAgB,KAAK,SAAUia,EAAG,CAC1C,OAAOA,EAAE,kBACX,CAAC,GAAKja,EAAM,gBAAgB,OAAS,EACnC,MAAM,IAAI,MAAM,+KAA+K,CAEnM,EACI2oB,EAAY,SAAkB9iB,EAAM,CACtC,GAAIA,IAAS,IAGTA,IAASiiB,EAAkB,QAAQ,EAGvC,CAAA,GAAI,CAACjiB,GAAQ,CAACA,EAAK,MAAO,CACxB8iB,EAAUZ,EAAmB,CAAE,EAC/B,MACF,CACAliB,EAAK,MAAM,CACT,cAAe,CAAC,CAAC2M,EAAO,aAC9B,CAAK,EAEDxS,EAAM,wBAA0B6F,EAC5BqgB,GAAkBrgB,CAAI,GACxBA,EAAK,OAAM,CAAA,CAEf,EACI+iB,EAAqB,SAA4BC,EAAuB,CAC1E,IAAIhjB,EAAO2hB,EAAiB,iBAAkB,CAC5C,OAAQ,CAACqB,CAAqB,CACpC,CAAK,EACD,OAAOhjB,IAAcA,IAAS,GAAQ,GAAQgjB,EAChD,EAaIC,EAAkB,SAAyBC,EAAO,CACpD,IAAInpB,EAASmpB,EAAM,OACjBzmB,EAAQymB,EAAM,MACdC,EAAmBD,EAAM,WACzBE,EAAaD,IAAqB,OAAS,GAAQA,EACrDppB,EAASA,GAAUgnB,GAAgBtkB,CAAK,EACxC4lB,EAAmB,EACnB,IAAIgB,EAAkB,KACtB,GAAIlpB,EAAM,eAAe,OAAS,EAAG,CAInC,IAAImpB,EAAiB9B,EAAmBznB,EAAQ0C,CAAK,EACjD8mB,EAAiBD,GAAkB,EAAInpB,EAAM,gBAAgBmpB,CAAc,EAAI,OACnF,GAAIA,EAAiB,EAGfF,EAEFC,EAAkBlpB,EAAM,eAAeA,EAAM,eAAe,OAAS,CAAC,EAAE,iBAGxEkpB,EAAkBlpB,EAAM,eAAe,CAAC,EAAE,0BAEnCipB,EAAY,CAIrB,IAAII,EAAoBrpB,EAAM,eAAe,UAAU,SAAUspB,GAAO,CACtE,IAAIrB,GAAoBqB,GAAM,kBAC9B,OAAO1pB,IAAWqoB,EACpB,CAAC,EAUD,GATIoB,EAAoB,IAAMD,EAAe,YAAcxpB,GAAUqlB,GAAYrlB,EAAQ4S,EAAO,eAAe,GAAK,CAACuS,GAAWnlB,EAAQ4S,EAAO,eAAe,GAAK,CAAC4W,EAAe,iBAAiBxpB,EAAQ,EAAK,KAO/MypB,EAAoBF,GAElBE,GAAqB,EAAG,CAI1B,IAAIE,EAAwBF,IAAsB,EAAIrpB,EAAM,eAAe,OAAS,EAAIqpB,EAAoB,EACxGG,EAAmBxpB,EAAM,eAAeupB,CAAqB,EACjEL,EAAkB7H,GAAYzhB,CAAM,GAAK,EAAI4pB,EAAiB,iBAAmBA,EAAiB,mBACpG,MAAYpD,GAAW9jB,CAAK,IAG1B4mB,EAAkBE,EAAe,iBAAiBxpB,EAAQ,EAAK,EAEnE,KAAO,CAIL,IAAI6pB,EAAmBzpB,EAAM,eAAe,UAAU,SAAU0pB,GAAO,CACrE,IAAItB,GAAmBsB,GAAM,iBAC7B,OAAO9pB,IAAWwoB,EACpB,CAAC,EAUD,GATIqB,EAAmB,IAAML,EAAe,YAAcxpB,GAAUqlB,GAAYrlB,EAAQ4S,EAAO,eAAe,GAAK,CAACuS,GAAWnlB,EAAQ4S,EAAO,eAAe,GAAK,CAAC4W,EAAe,iBAAiBxpB,CAAM,KAOvM6pB,EAAmBN,GAEjBM,GAAoB,EAAG,CAIzB,IAAIE,GAAyBF,IAAqBzpB,EAAM,eAAe,OAAS,EAAI,EAAIypB,EAAmB,EACvGG,GAAoB5pB,EAAM,eAAe2pB,EAAsB,EACnET,EAAkB7H,GAAYzhB,CAAM,GAAK,EAAIgqB,GAAkB,kBAAoBA,GAAkB,oBACvG,MAAYxD,GAAW9jB,CAAK,IAG1B4mB,EAAkBE,EAAe,iBAAiBxpB,CAAM,EAE5D,CACF,MAGEspB,EAAkB1B,EAAiB,eAAe,EAEpD,OAAO0B,CACT,EAIIW,EAAmB,SAA0BlnB,EAAG,CAClD,IAAI/C,EAASgnB,GAAgBjkB,CAAC,EAC9B,GAAI,EAAA0kB,EAAmBznB,EAAQ+C,CAAC,GAAK,GAIrC,CAAA,GAAI6jB,GAAehU,EAAO,wBAAyB7P,CAAC,EAAG,CAErDyK,EAAK,WAAW,CAOd,YAAaoF,EAAO,uBAC5B,CAAO,EACD,MACF,CAKIgU,GAAehU,EAAO,kBAAmB7P,CAAC,GAM9CA,EAAE,eAAc,CAAA,CAClB,EAMImnB,EAAe,SAAsBxnB,EAAO,CAC9C,IAAI1C,EAASgnB,GAAgBtkB,CAAK,EAC9BynB,EAAkB1C,EAAmBznB,EAAQ0C,CAAK,GAAK,EAG3D,GAAIynB,GAAmBnqB,aAAkB,SACnCmqB,IACF/pB,EAAM,wBAA0BJ,OAE7B,CAEL0C,EAAM,yBAAwB,EAK9B,IAAI0nB,EACAC,EAAsB,GAC1B,GAAIjqB,EAAM,wBACR,GAAIqhB,GAAYrhB,EAAM,uBAAuB,EAAI,EAAG,CAElD,IAAIkqB,EAAkB7C,EAAmBrnB,EAAM,uBAAuB,EAKlEunB,EAAgBvnB,EAAM,gBAAgBkqB,CAAe,EAAE,cAC3D,GAAI3C,EAAc,OAAS,EAAG,CAE5B,IAAI4C,EAAY5C,EAAc,UAAU,SAAU1hB,EAAM,CACtD,OAAOA,IAAS7F,EAAM,uBACxB,CAAC,EACGmqB,GAAa,IACX3X,EAAO,aAAaxS,EAAM,cAAc,EACtCmqB,EAAY,EAAI5C,EAAc,SAChCyC,EAAWzC,EAAc4C,EAAY,CAAC,EACtCF,EAAsB,IAKpBE,EAAY,GAAK,IACnBH,EAAWzC,EAAc4C,EAAY,CAAC,EACtCF,EAAsB,IAO9B,CAKF,MAKOjqB,EAAM,gBAAgB,KAAK,SAAUia,EAAG,CAC3C,OAAOA,EAAE,cAAc,KAAK,SAAUV,EAAG,CACvC,OAAO8H,GAAY9H,CAAC,EAAI,CAC1B,CAAC,CACH,CAAC,IAIC0Q,EAAsB,SAQ1BA,EAAsB,GAEpBA,IACFD,EAAWlB,EAAgB,CAGzB,OAAQ9oB,EAAM,wBACd,WAAYwS,EAAO,cAAcxS,EAAM,cAAc,CAC/D,CAAS,GAGD2oB,EADEqB,GAGQhqB,EAAM,yBAA2B+nB,GAFzB,CAItB,CACA/nB,EAAM,eAAiB,MACzB,EAMIoqB,EAAc,SAAqB9nB,EAAO,CAC5C,IAAI2mB,EAAa,UAAU,OAAS,GAAK,UAAU,CAAC,IAAM,OAAY,UAAU,CAAC,EAAI,GACrFjpB,EAAM,eAAiBsC,EACvB,IAAI4mB,EAAkBJ,EAAgB,CACpC,MAAOxmB,EACP,WAAY2mB,CAClB,CAAK,EACGC,IACE9C,GAAW9jB,CAAK,GAKlBA,EAAM,eAAc,EAEtBqmB,EAAUO,CAAe,EAG7B,EACImB,EAAc,SAAqB/nB,EAAO,EACxCkQ,EAAO,aAAalQ,CAAK,GAAKkQ,EAAO,cAAclQ,CAAK,IAC1D8nB,EAAY9nB,EAAOkQ,EAAO,cAAclQ,CAAK,CAAC,CAElD,EAGIgoB,EAAiB,SAAwBhoB,EAAO,CAC9C6jB,GAAc7jB,CAAK,GAAKkkB,GAAehU,EAAO,kBAAmBlQ,CAAK,IAAM,KAC9EA,EAAM,eAAc,EACpB8K,EAAK,WAAU,EAEnB,EACImd,EAAa,SAAoB5nB,EAAG,CACtC,IAAI/C,EAASgnB,GAAgBjkB,CAAC,EAC1B0kB,EAAmBznB,EAAQ+C,CAAC,GAAK,GAGjC6jB,GAAehU,EAAO,wBAAyB7P,CAAC,GAGhD6jB,GAAehU,EAAO,kBAAmB7P,CAAC,IAG9CA,EAAE,eAAc,EAChBA,EAAE,yBAAwB,EAC5B,EAaI6nB,EAAe,UAAwB,CACzC,GAAKxqB,EAAM,OAKX,CAAA8lB,GAAiB,aAAaC,EAAW3Y,CAAI,EAK7C,IAAIqd,EACJ,OAAIjY,EAAO,kBAGTiY,EAAU,IAAI,QAAQ,SAAUhsB,EAAS,CACvCuB,EAAM,uBAAyBumB,GAAM,UAAY,CAC/CoC,EAAUZ,EAAmB,CAAE,EAC/BtpB,EAAO,CACT,CAAC,CACH,CAAC,EAEDkqB,EAAUZ,EAAmB,CAAE,EAEjCf,EAAI,iBAAiB,UAAW8C,EAAc,EAAI,EAClD9C,EAAI,iBAAiB,YAAa6C,EAAkB,CAClD,QAAS,GACT,QAAS,EACf,CAAK,EACD7C,EAAI,iBAAiB,aAAc6C,EAAkB,CACnD,QAAS,GACT,QAAS,EACf,CAAK,EACD7C,EAAI,iBAAiB,QAASuD,EAAY,CACxC,QAAS,GACT,QAAS,EACf,CAAK,EACDvD,EAAI,iBAAiB,UAAWqD,EAAa,CAC3C,QAAS,GACT,QAAS,EACf,CAAK,EACDrD,EAAI,iBAAiB,UAAWsD,CAAc,EACvCG,CAAAA,CACT,EAOIC,EAA0B,SAAiCC,EAAY,CAErE3qB,EAAM,QAAU,CAACA,EAAM,QACzBoN,EAAK,qBAAqB,EAAK,EAEjCpN,EAAM,iBAAiB,MAAK,EAC5BA,EAAM,cAAc,MAAK,EAGzB,IAAI4qB,EAAqB,IAAI,IACzBC,EAAmB,IAAI,IAGvBC,EAAY1F,GAA2BuF,CAAU,EACnDI,EACF,GAAI,CACF,IAAKD,EAAU,EAAC,EAAI,EAAEC,EAAQD,EAAU,EAAC,GAAI,MAAO,CAClD,IAAIjG,EAAYkG,EAAM,MACtBH,EAAmB,IAAI/F,CAAS,EAGhC,QAFImG,EAAmB,OAAO,WAAe,KAAenG,EAAU,YAAW,YAAc,WAC3FoG,EAAUpG,EACPoG,GAAS,CACdL,EAAmB,IAAIK,CAAO,EAC9B,IAAIC,EAASD,EAAQ,cACjBE,EAAW,CAAA,EACXD,EACFC,EAAWD,EAAO,SACT,CAACA,GAAUF,IACpBG,EAAWF,EAAQ,YAAW,EAAG,SACjCC,EAASD,EAAQ,YAAW,EAAG,KAC/BD,EAAmB,OAAO,WAAe,KAAeE,EAAO,YAAW,YAAc,YAI1F,IAAIE,EAAahG,GAA2B+F,CAAQ,EAClDE,EACF,GAAI,CACF,IAAKD,EAAW,EAAC,EAAI,EAAEC,EAASD,EAAW,EAAC,GAAI,MAAO,CACrD,IAAIhnB,GAAQinB,EAAO,MACnBR,EAAiB,IAAIzmB,EAAK,CAC5B,CACF,OAASge,GAAK,CACZgJ,EAAW,EAAEhJ,EAAG,CAClB,QAAA,CACEgJ,EAAW,EAAC,CACd,CACAH,EAAUC,CACZ,CACF,CAIF,OAAS9I,GAAK,CACZ0I,EAAU,EAAE1I,EAAG,CACjB,QAAA,CACE0I,EAAU,EAAC,CACb,CACAF,EAAmB,QAAQ,SAAUluB,GAAI,CACvCmuB,EAAiB,OAAUnuB,EAAE,CAC/B,CAAC,EACDsD,EAAM,iBAAmB6qB,CAC3B,EACIS,EAAkB,UAA2B,CAC/C,GAAKtrB,EAAM,OAGX,OAAAgnB,EAAI,oBAAoB,UAAW8C,EAAc,EAAI,EACrD9C,EAAI,oBAAoB,YAAa6C,EAAkB,EAAI,EAC3D7C,EAAI,oBAAoB,aAAc6C,EAAkB,EAAI,EAC5D7C,EAAI,oBAAoB,QAASuD,EAAY,EAAI,EACjDvD,EAAI,oBAAoB,UAAWqD,EAAa,EAAI,EACpDrD,EAAI,oBAAoB,UAAWsD,CAAc,EAC1Cld,CACT,EAMIme,EAAkB,SAAyBC,EAAW,CACxD,IAAIC,EAAczrB,EAAM,wBACxB,GAAKyrB,EAGL,CAAA,IAAIC,EAAuBF,EAAU,KAAK,SAAU5lB,EAAU,CAC5D,IAAI+lB,EAAe,MAAM,KAAK/lB,EAAS,YAAY,EACnD,OAAO+lB,EAAa,KAAK,SAAU9lB,EAAM,CACvC,OAAOA,IAAS4lB,GAAe,OAAO5lB,EAAK,UAAa,YAAcA,EAAK,SAAS4lB,CAAW,CACjG,CAAC,CACH,CAAC,EAID,GAAIC,GAAwB1rB,EAAM,WAAW,KAAK,SAAU6kB,EAAW,CACrE,OAA6DA,GAAU,WACzE,CAAC,EAAG,CAGFqD,EAAmB,EACnB,IAAI0D,EAAmB7D,EAAmB,EAC1CY,EAAUiD,CAAgB,CAC5B,CAAA,CACF,EAIIC,EAAmB,OAAO,OAAW,KAAe,qBAAsB,OAAS,IAAI,iBAAiBN,CAAe,EAAI,OAC3HO,EAAsB,UAA+B,CAClDD,IAGLA,EAAiB,WAAU,EACvB7rB,EAAM,QAAU,CAACA,EAAM,QACzBA,EAAM,WAAW,IAAI,SAAU6kB,EAAW,CACxCgH,EAAiB,QAAQhH,EAAW,CAClC,QAAS,GACT,UAAW,EACrB,CAAS,CACH,CAAC,EAEL,EAMA,OAAAzX,EAAO,CACL,IAAI,QAAS,CACX,OAAOpN,EAAM,MACf,EACA,IAAI,QAAS,CACX,OAAOA,EAAM,MACf,EACA,SAAU,SAAkB+rB,EAAiB,CAC3C,GAAI/rB,EAAM,OACR,OAAO,KAET,IAAIgsB,EAAa/E,EAAU8E,EAAiB,YAAY,EACpDE,EAAiBhF,EAAU8E,EAAiB,gBAAgB,EAC5DG,EAAoBjF,EAAU8E,EAAiB,mBAAmB,EAIlEI,EAAkBrG,GAAiB,cAAcC,CAAS,EAC1DqG,EAAc,GAClB,GAAID,GAAmB,CAACA,EAAgB,OAAQ,CAC9C,IAAIE,GAIHA,EAAwBF,EAAgB,wBAA0B,MAAQE,IAA0B,QAAUA,EAAsB,KAAKF,EAAiB,EAAK,EAChKC,EAAc,EAChB,CACA,GAAI,CACGF,GACHhE,EAAmB,EAErBloB,EAAM,OAAS,GACfA,EAAM,OAAS,GACfA,EAAM,4BAA8B8nB,EAAkBd,CAAG,EACTgF,IAAW,CACzD,KAAM5e,CAChB,CAAS,EACD,IAAIkf,EAAmB,UAA4B,CAC7CJ,GACFhE,EAAmB,EAErB,IAAIqE,EAAiB,UAA0B,CAC7Cnf,EAAK,qBAAqB,EAAI,EAC9B0e,EAAmB,EACqCG,IAAe,CACrE,KAAM7e,CACpB,CAAa,CACH,EAOIof,EAAmBhC,EAAY,EAC/BgC,EACFA,EAAiB,KAAKD,CAAc,EAEpCA,EAAc,CAElB,EACA,GAAIL,EACF,OAAAA,EAAkBlsB,EAAM,WAAW,OAAM,CAAE,EAAE,KAAKssB,EAAkBA,CAAgB,EAC7E,KAETA,EAAgB,CAClB,OAASG,EAAO,CAGd,GAAIN,IAAoBrG,GAAiB,cAAcC,CAAS,GAAKqG,EAAa,CAChF,IAAIM,GAIHA,EAAyBP,EAAgB,wBAA0B,MAAQO,IAA2B,QAAUA,EAAuB,KAAKP,EAAiB,EAAI,CACpK,CACA,MAAMM,CACR,CACA,OAAO,IACT,EACA,WAAY,SAAoBE,EAAmB,CACjD,GAAI,CAAC3sB,EAAM,OACT,OAAO,KAET,IAAIzE,EAAUoqB,GAAe,CAC3B,aAAcnT,EAAO,aACrB,iBAAkBA,EAAO,iBACzB,oBAAqBA,EAAO,mBACpC,EAASma,CAAiB,EACpB,aAAa3sB,EAAM,sBAAsB,EACzCA,EAAM,uBAAyB,OAM1BA,EAAM,QACToN,EAAK,qBAAqB,EAAK,EAEjCpN,EAAM,cAAc,MAAK,EACzBsrB,EAAe,EACftrB,EAAM,OAAS,GACfA,EAAM,OAAS,GACf8rB,EAAmB,EACnBhG,GAAiB,eAAeC,EAAW3Y,CAAI,EAC/C,IAAIwf,EAAe3F,EAAU1rB,EAAS,cAAc,EAChDsxB,EAAmB5F,EAAU1rB,EAAS,kBAAkB,EACxDuxB,EAAsB7F,EAAU1rB,EAAS,qBAAqB,EAC9DwxB,EAAmB9F,EAAU1rB,EAAS,kBAAkB,EACxDyxB,EAAc/F,EAAU1rB,EAAS,cAAe,yBAAyB,EACzBqxB,IAAa,CAC/D,KAAMxf,CACd,CAAO,EACD,IAAI6f,EAAuB,UAAgC,CACrDD,GACFrE,EAAUC,EAAmB5oB,EAAM,2BAA2B,CAAC,EAEL6sB,IAAiB,CAC3E,KAAMzf,CAChB,CAAS,CACH,EACI8f,EAAqB,UAA8B,CACjDH,GAAoBC,EACtBzG,GAAM0G,CAAoB,EAE1BA,EAAoB,CAExB,EACA,OAAID,GAAeF,GACjBA,EAAoBlE,EAAmB5oB,EAAM,2BAA2B,CAAC,EAAE,KAAKktB,EAAoBA,CAAkB,EAC/G,OAETA,EAAkB,EACX,KACT,EACA,MAAO,SAAeC,EAAc,CAClC,OAAKntB,EAAM,QAGXA,EAAM,eAAiB,GAChB,KAAK,gBAAgB,GAAMmtB,CAAY,GAHrC,IAIX,EACA,QAAS,SAAiBC,EAAgB,CACxC,OAAKptB,EAAM,QAGXA,EAAM,eAAiB,GACnB+lB,EAAUA,EAAU,OAAS,CAAC,IAAM,KAC/B,KAEF,KAAK,gBAAgB,GAAOqH,CAAc,GANxC,IAOX,EACA,wBAAyB,SAAiCC,EAAmB,CAC3E,IAAIC,EAAkB,CAAA,EAAG,OAAOD,CAAiB,EAAE,OAAO,OAAO,EACjE,OAAArtB,EAAM,WAAastB,EAAgB,IAAI,SAAU3mB,EAAS,CACxD,OAAO,OAAOA,GAAY,SAAWqgB,EAAI,cAAcrgB,CAAO,EAAIA,CACpE,CAAC,EACG6L,EAAO,iBACTkY,EAAwB1qB,EAAM,UAAU,EAEtCA,EAAM,SACRkoB,EAAmB,EACdloB,EAAM,QACToN,EAAK,qBAAqB,EAAI,GAGlC0e,EAAmB,EACZ,IACT,CACJ,EACE,OAAO,iBAAiB1e,EAAM,CAC5B,kBAAmB,CACjB,MAAO,UAAiB,CACtB,OAAOpN,EAAM,cACf,CACN,EACI,gBAAiB,CACf,MAAO,SAAeutB,EAAQhyB,EAAS,CACrC,GAAIyE,EAAM,SAAWutB,EACnB,OAAO,KAGT,GADAvtB,EAAM,OAASutB,EACXA,EAAQ,CACV,IAAIC,EAAUvG,EAAU1rB,EAAS,SAAS,EACtCkyB,EAAcxG,EAAU1rB,EAAS,aAAa,EACRiyB,IAAQ,CAChD,KAAMpgB,CAClB,CAAW,EACDke,EAAe,EACfle,EAAK,qBAAqB,EAAK,EAC/B0e,EAAmB,EAC+B2B,IAAY,CAC5D,KAAMrgB,CAClB,CAAW,CACH,KAAO,CACL,IAAIsgB,EAAYzG,EAAU1rB,EAAS,WAAW,EAC1CoyB,EAAgB1G,EAAU1rB,EAAS,eAAe,EACRmyB,IAAU,CACtD,KAAMtgB,CAClB,CAAW,EACD,IAAIwgB,EAAgB,UAAyB,CAC3C1F,EAAmB,EACnB,IAAIqE,EAAiB,UAA0B,CAC7Cnf,EAAK,qBAAqB,EAAI,EAC9B0e,EAAmB,EACmC6B,IAAc,CAClE,KAAMvgB,CACtB,CAAe,CACH,EAOIof,EAAmBhC,EAAY,EAC/BgC,EACFA,EAAiB,KAAKD,CAAc,EAEpCA,EAAc,CAElB,EACAqB,EAAa,CACf,CACA,OAAO,IACT,CACN,EACI,qBAAsB,CACpB,MAAO,SAAeC,EAAW,CAC3Brb,EAAO,iBACTxS,EAAM,iBAAiB,QAAQ,SAAUtD,EAAI,CAC3C,IAAIoxB,EACAD,EACMrb,EAAO,kBACR,gBAGC9V,EAAG,aAAe,UAAYoxB,EAAmBpxB,EAAG,aAAa,aAAa,KAAO,MAAQoxB,IAAqB,OAAS,OAASA,EAAiB,YAAW,KAAQ,SAC1K9tB,EAAM,cAAc,IAAItD,CAAE,EAE5BA,EAAG,aAAa,cAAe,MAAM,KAKjCA,EAAG,OAASA,EAAG,aAAa,OAAO,IACrCsD,EAAM,cAAc,IAAItD,CAAE,EAE5BA,EAAG,aAAa,QAAS,EAAI,GAI7BsD,EAAM,cAAc,IAAItD,CAAE,IACpB8V,EAAO,kBACR,cACH9V,EAAG,gBAAgB,aAAa,EAGhCA,EAAG,gBAAgB,OAAO,EAKpC,CAAC,CAEL,CACN,CACA,CAAG,EAGD0Q,EAAK,wBAAwBuE,CAAQ,EAC9BvE,CACT,ECpwCA,MAAM2gB,GAAcC,GAAgB,CAClC,KAAM,2BACN,SAAU,CACR,MAAO,CACL,0BAA2B,IAAM,KAAK,MACtC,0BAA2B,IAAM,KAAK,YAC5C,CACE,EACA,MAAO,CAIL,MAAO,CACL,KAAM,QACN,SAAU,EAChB,EAII,UAAW,CACT,KAAM,OACN,QAAS,MACf,CACA,EACE,SAAU,CACR,cAAe,CACb,MAAO,CACL,gBAAiB,KAAK,UACtB,gBAAiB,KAAK,MAAM,SAAQ,CAC5C,CACI,CACJ,EACE,QAAS,CACP,OAAO,KAAK,OAAO,UAAU,CAC3B,MAAO,KAAK,YAClB,CAAK,CACH,CACF,CAAC,EACKC,GAAY,mBACZC,GAAS,CACb,uBAAwB,8BACxB,UAAAD,EACF,EACME,GAAQ,eACd5yB,GAAQ,OAAO4yB,EAAK,EAAI,gBAAgB5yB,GAAQ,OAAO,QAAQ,EAC/D,MAAM6yB,GAAY,CAChB,KAAM,YACN,WAAY,CACd,SAAIC,GACA,yBAA0BN,EAC9B,EACE,MAAO,CAKL,SAAU,CACR,KAAM,CAAC,OAAQ,MAAM,EACrB,QAAS,EACf,EAMI,oBAAqB,CACnB,KAAM,QAEN,QAAS,EACf,EAII,sBAAuB,CACrB,KAAM,QACN,QAAS,EACf,EAKI,UAAW,CACT,KAAM,CAAC,QAAS,MAAM,EACtB,QAAS,MACf,EAMI,MAAO,CACL,KAAM,CAAC,OAAQ,MAAM,EACrB,QAAS,CACf,EAII,YAAa,CACX,KAAM,QACN,QAAS,EACf,EAWI,UAAW,CACT,KAAM,OACN,QAAS,QACf,EAII,iBAAkB,CAChB,KAAM,OACN,QAAS,EACf,EAOI,gBAAiB,CACf,KAAM,CAAC,MAAO,MAAM,EACpB,QAAS,IACf,EAMI,UAAW,CACT,KAAM,OACN,QAAS,OACT,UAAYruB,GAAU,CAAC,OAAQ,UAAW,OAAQ,OAAQ,SAAU,MAAM,EAAE,SAASA,CAAK,CAChG,EAMI,eAAgB,CACd,QAAS,OACT,KAAM,CAAC,QAAS,YAAa,WAAY,OAAQ,QAAQ,CAC/D,EAII,MAAO,CACL,KAAM,QACN,QAAS,EACf,EAcI,SAAU,CACR,KAAM,CAAC,MAAO,MAAM,EACpB,QAAS,IAAM,CAAC,OAAO,CAC7B,CACA,EACE,MAAO,CACL,YACA,YACA,cACJ,EACE,OAAQ,CACN,MAAO,CACL,MAAAyuB,EACN,CACE,EACA,MAAO,CACL,MAAO,CACL,cAAe,KAAK,KAC1B,CACE,EACA,SAAU,CACR,gBAAiB,CACf,GAAI,KAAK,iBAAmB,MAAM,QAAQ,KAAK,eAAe,EAC5D,OAAO,KAAK,eAGhB,EACA,oBAAqB,CACnB,GAAI,KAAK,iBAAmB,OAAO,KAAK,iBAAoB,SAC1D,OAAO,KAAK,gBAAgB,IAGhC,EACA,oBAAqB,CACnB,GAAI,KAAK,iBAAmB,OAAO,KAAK,iBAAoB,SAC1D,OAAO,KAAK,gBAAgB,IAGhC,EACA,kBAAmB,CACjB,GAAI,KAAK,UAAY,MAAM,QAAQ,KAAK,QAAQ,EAC9C,OAAO,KAAK,QAGhB,EACA,cAAe,CACb,GAAI,KAAK,UAAY,OAAO,KAAK,UAAa,SAC5C,OAAO,KAAK,SAAS,IAGzB,EACA,cAAe,CACb,GAAI,KAAK,UAAY,OAAO,KAAK,UAAa,SAC5C,OAAO,KAAK,SAAS,IAGzB,EACA,mBAAoB,CAClB,OAAI,KAAK,YAAc,QACdthB,GAAQ,QAAU,OAChB,KAAK,YAAc,MACrBA,GAAQ,OAAS,QAEnB,KAAK,SACd,CACJ,EACE,MAAO,CACL,MAAMnN,EAAO,CACX,KAAK,cAAgBA,CACvB,EACA,cAAcA,EAAO,CACnB,KAAK,MAAM,eAAgBA,CAAK,CAClC,CACJ,EACE,SAAU,CACR,KAAK,iBAAgB,CACvB,EACA,eAAgB,CACd,KAAK,eAAc,EACnB,KAAK,2BAA0B,CACjC,EACA,QAAS,CAKP,kBAAmB,CACb,OAAO,IAAI,OACY,KAAK,kCAAiC,EAChB,cAAc,iBAAiB,CAKlF,EAMA,kCAAmC,CAEjC,MAAM4uB,EADmB,KAAK,kCAAiC,EACtB,iBAAiB,qBAAqB,EAC/E,UAAW5xB,KAAM4xB,EACf5xB,EAAG,gBAAgB,kBAAkB,CAEzC,EAIA,0BAA2B,CACzB,OAAO,KAAK,MAAM,SAAS,MAAM,eAAe,GAClD,EAIA,mCAAoC,CAClC,OAAO,KAAK,MAAM,SAAS,MAAM,QAAQ,MAAM,SACjD,EAIA,MAAM,cAAe,CAEnB,GADA,MAAM,KAAK,UAAS,EAChB,KAAK,YACP,OAEF,MAAMA,EAAK,KAAK,yBAAwB,EACxCA,EAAG,SAAW,GACTA,IAGL,KAAK,WAAaoqB,GAAgBpqB,EAAI,CAGpC,kBAAmB,GACnB,kBAAmB,GACnB,eAAgB,KAAK,eACrB,UAAWuQ,GAAY,EACvB,cAAevQ,CACvB,CAAO,EACD,KAAK,WAAW,SAAQ,EAC1B,EAMA,eAAe6xB,EAAW,GAAI,CAC5B,GAAI,CACF,KAAK,YAAY,WAAWA,CAAQ,EACpC,KAAK,WAAa,IACpB,OAAS9B,EAAO,CACd+B,GAAO,KAAK,yCAA0C,CAAE,MAAA/B,CAAK,CAAE,CACjE,CACF,EAQA,0BAA2B,CACd,KAAK,yBAAwB,GACpC,iBAAiB,UAAW,KAAK,wBAAwB,CAC/D,EAIA,4BAA6B,CAChB,KAAK,yBAAwB,GACpC,oBAAoB,UAAW,KAAK,wBAAwB,CAClE,EAIA,yBAAyBnqB,EAAO,CAC1BA,EAAM,OAAS,WAAaA,EAAM,MAAQ,UAC5CA,EAAM,gBAAe,CAEzB,EACA,MAAM,WAAY,CAChB,KAAK,yBAAwB,EAAG,iBAAiB,gBAAiB,IAAM,CACtE,KAAK,MAAM,WAAW,CACxB,EAAG,CAAE,KAAM,GAAM,QAAS,EAAI,CAAE,EAChC,KAAK,iCAAgC,EACrC,MAAM,KAAK,UAAS,EACpB,MAAM,KAAK,aAAY,EACvB,KAAK,yBAAwB,CAC/B,EACA,WAAY,CACV,KAAK,yBAAwB,GAAI,iBAAiB,gBAAiB,IAAM,CACvE,KAAK,MAAM,WAAW,CACxB,EAAG,CAAE,KAAM,GAAM,QAAS,EAAI,CAAE,EAChC,KAAK,eAAc,EACnB,KAAK,2BAA0B,CACjC,CACJ,CACA,EACA,SAASmsB,GAAYC,EAAMC,EAAQC,EAAQC,EAAQC,EAAOC,EAAU,CAClE,MAAMC,EAAsCC,GAAiB,0BAA0B,EACjFC,EAAsBD,GAAiB,UAAU,EACvD,OAAOE,EAAS,EAAIC,GAAYF,EAAqB,CACnD,IAAK,UACL,MAAOJ,EAAM,cACb,iBAAkB,CAChBH,EAAO,CAAC,IAAMA,EAAO,CAAC,EAAKU,GAAWP,EAAM,cAAgBO,GAC5DV,EAAO,CAAC,IAAMA,EAAO,CAAC,EAAKU,GAAWP,EAAM,cAAgBO,EAClE,EACI,aAAc,GACd,SAAU,CAACT,EAAO,uBAAyBA,EAAO,oBAClD,SAAUA,EAAO,UAAY,OAC7B,UAAWA,EAAO,UAClB,MAAOA,EAAO,MACd,SAAU,GACV,aAAc,GACd,YAAa,GACb,UAAWG,EAAS,kBACpB,YAAa,CAACL,EAAK,OAAO,UAAWE,EAAO,gBAAgB,EAC5D,eAAgBG,EAAS,eACzB,mBAAoBA,EAAS,mBAC7B,mBAAoBA,EAAS,mBAC7B,MAAOF,EAAO,MACd,SAAUE,EAAS,iBACnB,aAAcA,EAAS,aACvB,aAAcA,EAAS,aACvB,YAAaA,EAAS,UACtB,YAAaA,EAAS,SAC1B,EAAK,CACD,OAAQO,EAASC,GAAc,CAC7BC,GAAWd,EAAK,OAAQ,UAAWe,GAAeC,GAAmBH,CAAS,CAAC,CAAC,CACtF,CAAK,EACD,QAASD,EAAQ,IAAM,CACrBK,EAAYX,EAAqC,CAC/C,MAAOF,EAAM,cACb,UAAWF,EAAO,SAC1B,EAAS,CACD,QAASU,EAASC,GAAc,CAC9BC,GAAWd,EAAK,OAAQ,UAAWe,GAAeC,GAAmBH,CAAS,CAAC,CAAC,CAC1F,CAAS,EACD,EAAG,CACX,EAAS,EAAG,CAAC,QAAS,WAAW,CAAC,CAClC,CAAK,EACD,EAAG,CACP,EAAK,EAAG,CAAC,QAAS,WAAY,WAAY,YAAa,QAAS,YAAa,cAAe,iBAAkB,qBAAsB,qBAAsB,QAAS,WAAY,eAAgB,eAAgB,cAAe,aAAa,CAAC,CAC5O,CACA,MAAMK,GAAa,CACjB,OAAU1B,EACZ,EACM2B,GAA4BC,GAAY1B,GAAW,CAAC,CAAC,SAAUK,EAAW,EAAG,CAAC,eAAgBmB,EAAU,CAAC,CAAC,ECpa1G7B,GAAc,CAClB,KAAM,qBACN,MAAO,CAAC,OAAO,EACf,MAAO,CACL,MAAO,CACL,KAAM,MACZ,EACI,UAAW,CACT,KAAM,OACN,QAAS,cACf,EACI,KAAM,CACJ,KAAM,OACN,QAAS,EACf,CACA,CACA,EACMgC,GAAa,CAAC,cAAe,YAAY,EACzCC,GAAa,CAAC,OAAQ,QAAS,QAAQ,EACvCC,GAAa,CAAE,EAAG,gNAAgN,EAClOC,GAAa,CAAE,IAAK,CAAC,EAC3B,SAASzB,GAAYC,EAAMC,EAAQC,EAAQC,EAAQC,EAAOC,EAAU,CAClE,OAAOI,EAAS,EAAIgB,GAAmB,OAAQC,GAAW1B,EAAK,OAAQ,CACrE,cAAeE,EAAO,MAAQ,KAAO,OACrC,aAAcA,EAAO,MACrB,MAAO,4CACP,KAAM,MACN,QAASD,EAAO,CAAC,IAAMA,EAAO,CAAC,EAAKU,GAAWX,EAAK,MAAM,QAASW,CAAM,EAC7E,CAAG,EAAG,EACDF,EAAS,EAAIgB,GAAmB,MAAO,CACtC,KAAMvB,EAAO,UACb,MAAO,4BACP,MAAOA,EAAO,KACd,OAAQA,EAAO,KACf,QAAS,WACf,EAAO,CACDyB,EAAmB,OAAQJ,GAAY,CACrCrB,EAAO,OAASO,EAAS,EAAIgB,GAAmB,QAASD,GAAYI,GAAgB1B,EAAO,KAAK,EAAG,CAAC,GAAK2B,GAAmB,GAAI,EAAI,CAC7I,CAAO,CACP,EAAO,EAAGP,EAAU,EACpB,EAAK,GAAID,EAAU,CACnB,CACK,MAACS,GAAqCV,GAAY/B,GAAa,CAAC,CAAC,SAAUU,EAAW,CAAC,CAAC,EAC7FpsB,GAASouB,EAAE,EACX,SAASC,GAAgBC,EAAQ,CAC/B,OAAO,MAAM,QAAQA,CAAM,GAAKA,EAAO,KAAM9qB,GAAS,CACpD,GAAIA,IAAS,KACX,MAAO,GACF,GAAI,OAAOA,GAAS,SAAU,CACnC,MAAM+qB,EAAQ/qB,EAKP,GAJH+qB,EAAM,OAASC,IAERD,EAAM,OAASE,IAAY,CAACJ,GAAgBE,EAAM,QAAQ,GAE1DA,EAAM,OAASG,IAAQ,CAACH,EAAM,SAAS,OAChD,MAAO,EAEX,CACA,MAAO,EACT,CAAC,CACH,CACA,MAAMI,GAAoB,aACpB5C,GAAY,CAChB,KAAM,YACN,WAAY,CACV,SAAA6C,GACA,UAAApB,EACJ,EACE,SAAU,CACR,MAAO,CAWL,CAAC9iB,EAA2B,EAAGtK,EAAS,IAAM,KAAK,0BAA4B,MAAM,EACrF,CAACuK,EAAqB,EAAG,KAAK,SACpC,CACE,EACA,MAAO,CAIL,KAAM,CACJ,KAAM,QACN,QAAS,EACf,EAOI,WAAY,CACV,KAAM,QACN,QAAS,EACf,EAII,UAAW,CACT,KAAM,QACN,QAAS,EACf,EAII,UAAW,CACT,KAAM,QACN,QAAS,EACf,EAII,SAAU,CACR,KAAM,OACN,QAAS,IACf,EAII,QAAS,CACP,KAAM,QACN,QAAS,EACf,EAMI,YAAa,CACX,KAAM,OACN,QAAS,EACf,EAQI,UAAW,CACT,KAAM,OACN,QAASwM,EAAE,SAAS,CAC1B,EAII,UAAW,CACT,KAAM,OACN,QAAS,QACf,EAII,kBAAmB,CACjB,KAAM,QACN,QAAS,IAAM,SAAS,eAAe,aAAa,GAAK,SAAS,cAAc,MAAM,CAC5F,EAII,UAAW,CACT,KAAM,CAAC,QAAS,OAAQ,OAAQ,OAAO,EACvC,QAAS,MACf,EAII,SAAU,CACR,KAAM,QACN,QAAS,EACf,EAKI,OAAQ,CACN,KAAM,OACN,QAAS,CACf,EAQI,QAAS,CACP,KAAM,OACN,UAAU9Z,EAAO,CACf,MAAO,CAAC,UAAW,YAAa,WAAY,yBAA0B,sBAAuB,QAAS,UAAW,SAAS,EAAE,SAASA,CAAK,CAC5I,EACA,QAAS,IACf,EAII,KAAM,CACJ,KAAM,QACN,QAAS,EACf,EAMI,KAAM,CACJ,KAAM,OACN,QAAS,SACT,UAAUA,EAAO,CACf,MAAO,CAAC,QAAS,SAAU,OAAO,EAAE,SAASA,CAAK,CACpD,CACN,CACA,EACE,MAAO,CACL,QACA,OACA,QACA,QACA,SACA,OACA,SACA,aACJ,EACE,OAAQ,CAEN,MAAO,CACL,SAFewxB,GAAe,CAGpC,CACE,EACA,MAAO,CACL,MAAO,CACL,OAAQ,KAAK,KACb,WAAY,EAIZ,wBAAyB,SAC/B,CACE,EACA,SAAU,CACR,sBAAuB,CACrB,OAAO,KAAK,UAAY,KAAK,QAAU,UAAY,KAAK,SAAW,YAAc,WACnF,EAIA,QAAS,CAoCP,MAnCgB,CACd,KAAM,CACJ,UAAW,OACX,oBAAqB,GACrB,kBAAmB,GACnB,cAAe,EACzB,EACQ,WAAY,CACV,UAAW,OACX,oBAAqB,GACrB,kBAAmB,GACnB,cAAe,EACzB,EACQ,OAAQ,CACN,UAAW,SACX,oBAAqB,GACrB,kBAAmB,GACnB,cAAe,EACzB,EACQ,QAAS,CACP,UAAW,OACX,oBAAqB,GACrB,kBAAmB,GACnB,cAAe,EACzB,EAGQ,QAAS,CACP,UAAW,OACX,KAAM,OACN,oBAAqB,GACrB,kBAAmB,GACnB,cAAe,EACzB,CACA,EACqB,KAAK,uBAAuB,CAC7C,EACA,eAAgB,CACd,OAAO,KAAK,OAAO,aACrB,CACJ,EACE,MAAO,CAEL,KAAKlxB,EAAO,CACNA,IAAU,KAAK,SAGnB,KAAK,OAASA,EAChB,EACA,QAAS,CACH,KAAK,OACP,SAAS,KAAK,iBAAiB,UAAW,KAAK,mBAAmB,EAElE,SAAS,KAAK,oBAAoB,UAAW,KAAK,mBAAmB,CAEzE,CACJ,EACE,SAAU,CACRqN,GAAoB,IAAM,KAAK,OAAQ,CACrC,SAAU,IAAM,KAAK,OAAO,aAClC,CAAK,EACG,eAAgB,KAAK,MAG3B,EACA,QAAS,CAOP,cAAc8jB,EAAQ,CACpB,OAAOA,GAAQ,MAAM,IACvB,EAQA,oBAAoBA,EAAQ,CAC1B,MAAO,CAAC,iBAAkB,eAAgB,gBAAgB,EAAE,SAAS,KAAK,cAAcA,CAAM,CAAC,CACjG,EACA,SAASA,EAAQ,CACf,OAAO,KAAK,cAAcA,CAAM,GAAG,aAAa,UAAU,CAC5D,EAMA,UAAUC,EAAK,CACb,GAAI,CACF,MAAO,CAAC,CAAC,IAAI,IAAIA,EAAKA,EAAI,WAAW,GAAG,EAAI,OAAO,SAAS,OAAS,MAAM,CAC7E,MAAQ,CACN,MAAO,EACT,CACF,EAEA,WAAWpxB,EAAO,CACZA,EACF,KAAK,SAAQ,EAEb,KAAK,UAAS,CAElB,EACA,UAAW,CACL,KAAK,SAGT,KAAK,OAAS,GACd,KAAK,MAAM,cAAe,EAAI,EAC9B,KAAK,MAAM,MAAM,EACnB,EACA,MAAM,UAAUgtB,EAAc,GAAM,CAC7B,KAAK,SAGV,MAAM,KAAK,UAAS,EACpB,KAAK,OAAS,GACd,KAAK,MAAM,SAAS,eAAe,CAAE,YAAAA,CAAW,CAAE,EAClD,KAAK,MAAM,cAAe,EAAK,EAC/B,KAAK,MAAM,OAAO,EAClB,KAAK,WAAa,EACdA,GACF,KAAK,MAAM,eAAe,IAAI,MAAK,EAEvC,EAIA,UAAW,CACT,KAAK,UAAU,IAAM,CACnB,KAAK,iBAAiB,IAAI,EAC1B,KAAK,MAAM,QAAQ,CACrB,CAAC,CACH,EACA,UAAW,CACT,KAAK,MAAM,QAAQ,CACrB,EAKA,iCAAkC,CAChC,OAAO,KAAK,MAAM,KAAK,cAAc,WAAW,CAClD,EAIA,8BAA+B,CAC7B,OAAO,KAAK,MAAM,KAAK,iBAAiBgE,EAAiB,CAC3D,EAMA,UAAU1uB,EAAO,CACf,GAAIA,EAAM,MAAQ,MAAO,CACvB,GAAI,KAAK,OAAO,cACd,OAEF,GAAI,CAAC,KAAK,OAAO,kBAAmB,CAClC,KAAK,UAAU,EAAI,EACnB,MACF,CACAA,EAAM,eAAc,EACpB,MAAM+uB,EAAY,KAAK,6BAA4B,EAC7CC,EAAa,CAAC,GAAGD,CAAS,EAAE,QAAQ,SAAS,aAAa,EAChE,GAAIC,IAAe,GACjB,OAEF,MAAMC,EAAgBjvB,EAAM,SAAWgvB,EAAa,EAAIA,EAAa,GACjEC,EAAgB,GAAKA,IAAkBF,EAAU,SACnD,KAAK,UAAU,EAAI,EAErB,KAAK,WAAaE,EAClB,KAAK,YAAW,EAChB,MACF,CACI,KAAK,OAAO,sBACVjvB,EAAM,MAAQ,WAChB,KAAK,oBAAoBA,CAAK,EAE5BA,EAAM,MAAQ,aAChB,KAAK,gBAAgBA,CAAK,EAExBA,EAAM,MAAQ,UAChB,KAAK,iBAAiBA,CAAK,EAEzBA,EAAM,MAAQ,YAChB,KAAK,gBAAgBA,CAAK,GAG9B,KAAK,oBAAoBA,CAAK,CAChC,EACA,iBAAiBA,EAAO,CAClBA,EAAM,MAAQ,UACZ,KAAK,0BAA4B,WACnC,KAAK,UAAS,CAGpB,EACA,oBAAoBA,EAAO,CACrBA,EAAM,MAAQ,WAChB,KAAK,UAAS,EACdA,EAAM,eAAc,EAExB,EACA,qBAAsB,CACpB,MAAMkvB,EAAuB,KAAK,MAAM,KAAK,cAAc,WAAW,EAClEA,GACFA,EAAqB,UAAU,OAAO,QAAQ,CAElD,EACA,aAAc,CACZ,MAAMC,EAAe,KAAK,6BAA4B,EAAG,KAAK,UAAU,EACxE,GAAIA,EAAc,CAChB,KAAK,oBAAmB,EACxB,MAAMC,EAAeD,EAAa,QAAQ,WAAW,EACrDA,EAAa,MAAK,EACdC,GACFA,EAAa,UAAU,IAAI,QAAQ,CAEvC,CACF,EACA,oBAAoBpvB,EAAO,CACrB,KAAK,SACH,KAAK,aAAe,EACtB,KAAK,gBAAgBA,CAAK,GAE1B,KAAK,eAAeA,CAAK,EACzB,KAAK,WAAa,KAAK,WAAa,GAEtC,KAAK,YAAW,EAEpB,EACA,gBAAgBA,EAAO,CACrB,GAAI,KAAK,OAAQ,CACf,MAAMqvB,EAAc,KAAK,6BAA4B,EAAG,OAAS,EAC7D,KAAK,aAAeA,EACtB,KAAK,iBAAiBrvB,CAAK,GAE3B,KAAK,eAAeA,CAAK,EACzB,KAAK,WAAa,KAAK,WAAa,GAEtC,KAAK,YAAW,CAClB,CACF,EACA,iBAAiBA,EAAO,CACtB,GAAI,KAAK,OAAQ,CACf,KAAK,eAAeA,CAAK,EACzB,MAAMsvB,EAAoB,CAAC,GAAG,KAAK,6BAA4B,CAAE,EAAE,UAAWC,GACrEA,EAAO,aAAa,cAAc,IAAM,QAAUA,EAAO,aAAa,MAAM,IAAM,eAC1F,EACD,KAAK,WAAaD,EAAoB,GAAKA,EAAoB,EAC/D,KAAK,YAAW,CAClB,CACF,EACA,gBAAgBtvB,EAAO,CACjB,KAAK,SACP,KAAK,eAAeA,CAAK,EACzB,KAAK,WAAa,KAAK,6BAA4B,EAAG,OAAS,EAC/D,KAAK,YAAW,EAEpB,EACA,eAAeA,EAAO,CAChBA,IACFA,EAAM,eAAc,EACpBA,EAAM,gBAAe,EAEzB,EACA,QAAQA,EAAO,CACb,KAAK,MAAM,QAASA,CAAK,CAC3B,EACA,OAAOA,EAAO,CACZ,KAAK,MAAM,OAAQA,CAAK,EACpB,KAAK,0BAA4B,WAC/B,KAAK,MAAM,MAAQ,KAAK,6BAA4B,EAAG,SAAW,GACpE,KAAK,UAAU,EAAK,CAG1B,EACA,QAAQA,EAAO,CACb,KAAK,MAAM,QAASA,CAAK,CAC3B,CACJ,EAME,QAAS,CACP,MAAMwvB,EAAU,CAAA,EACVC,EAAc,CAACpB,EAAQqB,IAAa,CACxCrB,EAAO,QAASC,GAAU,CACxB,GAAI,KAAK,SAASA,CAAK,EAAG,CACxBoB,EAAS,KAAKpB,CAAK,EACnB,MACF,CACIA,EAAM,OAASE,IACjBiB,EAAYnB,EAAM,SAAUoB,CAAQ,CAExC,CAAC,CACH,EAEA,GADAD,EAAY,KAAK,OAAO,UAAO,EAAMD,CAAO,EACxCA,EAAQ,SAAW,EACrB,OAEF,IAAIG,EAAqBH,EAAQ,OAAO,KAAK,mBAAmB,EAC5D,KAAK,WAAaG,EAAmB,OAAS,GAAK,KAAK,OAAS,IAEnEA,EAAqB,CAAA,GAEvB,MAAMC,EAAgBD,EAAmB,MAAM,EAAG,KAAK,MAAM,EACvDE,EAAcL,EAAQ,OAAQX,GAAW,CAACe,EAAc,SAASf,CAAM,CAAC,EACxEiB,EAAmB,CAAC,iBAAkB,sBAAuB,mBAAoB,eAAe,EAChGC,EAAmB,CAAC,gBAAiB,sBAAsB,EAC3DC,EAAc,CAAC,eAAgB,gBAAgB,EAC/CC,EAAqBJ,EAAY,KAAMhB,GAAWkB,EAAiB,SAAS,KAAK,cAAclB,CAAM,CAAC,CAAC,EACvGqB,EAAoBL,EAAY,KAAMhB,GAAWiB,EAAiB,SAAS,KAAK,cAAcjB,CAAM,CAAC,CAAC,EACtGsB,EAAgBN,EAAY,KAAMhB,GAAWmB,EAAY,SAAS,KAAK,cAAcnB,CAAM,CAAC,CAAC,EAC/FoB,EACF,KAAK,wBAA0B,SACtBC,EACT,KAAK,wBAA0B,OACtBC,EACT,KAAK,wBAA0B,aAEbX,EAAQ,OAAQX,GAAW,KAAK,cAAcA,CAAM,EAAE,WAAW,UAAU,CAAC,EAChF,SAAWW,EAAQ,OAC/B,KAAK,wBAA0B,UAE/B,KAAK,wBAA0B,UAGnC,MAAMY,EAAsBvB,GAAW,CACrC,MAAMwB,EAAWxB,GAAQ,OAAO,KAC1ByB,EAAOzB,GAAQ,UAAU,OAAI,IAAO,CAAC,IAAM,KAAK,UAAUwB,CAAQ,EAAI9Y,EAAE,MAAO,CAAE,MAAO,gCAAiC,IAAK8Y,EAAU,IAAK,EAAE,CAAE,EAAI9Y,EAAE,OAAQ,CAAE,MAAO,CAAC,OAAQ8Y,CAAQ,CAAC,CAAE,GAC5LE,EAAO1B,GAAQ,UAAU,UAAO,IAAO,CAAC,GAAG,UAAU,KAAI,EACzD2B,EAAa,KAAK,UAAYD,EAAO,GAC3C,IAAIE,EAAQ5B,GAAQ,OAAO,MACrB,KAAK,WAAa4B,IACtBA,EAAQF,GAEV,MAAMG,EAAiB,CAAE,GAAG7B,GAAQ,OAAS,CAAA,CAAE,EACzC8B,EAAO,CAAC,SAAU,OAAO,EAAE,SAASD,EAAe,IAAI,EAAIA,EAAe,WAAa,SAC7F,OAAA,OAAOA,EAAe,WACtB,OAAOA,EAAe,KACfnZ,EACLoX,GACAb,GACE4C,EACA,CACE,MAAO,CACL,kCACA,CACE,oBAAqB,KAAK,IAC1C,CACA,EACY,aAAc7B,GAAQ,QAAQ,YAAY,GAAK0B,EAC/C,MAAAE,EACA,SAAU,KAAK,UAAY5B,GAAQ,OAAO,SAC1C,QAASA,GAAQ,OAAO,WACxB,KAAM,KAAK,KACX,KAAA8B,EACA,KAAM,KAAK,KAEX,QAAS,KAAK,UAAYH,EAAa,YAAc,YACrD,QAAS,KAAK,QACd,OAAQ,KAAK,OAEb,mBAAoB3B,GAAQ,QAAQ,qBAAqB,IAAM,IAAM,CACrE,EACZ,CACA,EACQ,CACE,QAAS,IAAM2B,EACf,KAAM,IAAMF,CACtB,CACA,CACI,EACMM,EAAwBlB,GAAa,CACzC,MAAMmB,EAAczC,GAAgB,KAAK,OAAO,OAAI,CAAI,EAAI,KAAK,OAAO,SAAW,KAAK,YAAc7W,EAAE,OAAQ,CAAE,MAAO,CAAC,OAAQ,KAAK,WAAW,EAAG,EAAIA,EAAE2W,GAAoB,CAAE,KAAM,EAAE,CAAE,EACrL4C,EAAkB,GAAG,KAAK,QAAQ,WACxC,OAAOvZ,EACLgW,GACA,CACE,IAAK,UACL,MAAO,EACP,MAAO,KAAK,OACZ,UAAW,KAAK,UAChB,SAAU,KAAK,kBACf,oBAAqB,GACrB,UAAW,KAAK,UAChB,GAAG,KAAK,YAAc,CACpB,SAAU,CAAA,CACtB,EACU,sBAAuB,KAAK,WAC5B,iBAAkB,sBAClB,UAAW,KAAK,OAAO,UACvB,eAAgB,KAAK,OAAO,cAAgB,KAAK,MAAM,eAAe,IAAM,OAC5E,YAAa,CAAC,KAAK,OAAO,cAC1B,iBAAkB,KAAK,WACvB,YAAa,KAAK,SAClB,aAAc,KAAK,QAC7B,EACQ,CACE,QAAS,IAAMhW,EAAEoX,GAAU,CACzB,GAAImC,EACJ,MAAO,0BACP,SAAU,KAAK,SACf,KAAM,KAAK,KACX,QAAS,KAAK,qBACd,KAAM,KAAK,KACX,IAAK,gBACL,aAAc,KAAK,SAAW,KAAO,KAAK,UAE1C,gBAAiB,KAAK,QAAU,KAAK,OAAO,UAAY,KAAK,SAAW,KACxE,QAAS,KAAK,QACd,OAAQ,KAAK,OACb,QAAS,KAAK,QACd,UAAW,KAAK,gBAC5B,EAAa,CACD,KAAM,IAAMD,EACZ,QAAS,IAAM,KAAK,QAChC,CAAW,EACD,QAAS,IAAMtZ,EAAE,MAAO,CACtB,MAAO,CACL,KAAM,KAAK,MACzB,EACY,SAAU,KACV,UAAW,KAAK,UAChB,IAAK,MACjB,EAAa,CACDA,EAAE,KAAM,CACN,GAAI,KAAK,SACT,SAAU,KACV,IAAK,WACL,KAAM,KAAK,OAAO,UAGlB,kBAAmBuZ,EACnB,aAAc,KAAK,0BAA4B,SAAW,OAAS,MACjF,EAAe,CACDpB,CACd,CAAa,CACb,CAAW,CACX,CACA,CACI,EACA,OAAIF,EAAQ,SAAW,GAAKG,EAAmB,SAAW,GAAK,CAAC,KAAK,UAC5DS,EAAmBZ,EAAQ,CAAC,CAAC,GAEtC,KAAK,UAAU,IAAM,CACf,KAAK,QAAU,KAAK,MAAM,OACR,KAAK,MAAM,KAAK,cAAc,WAAW,GAAK,CAAA,GAClD,SAAW,GACzB,KAAK,iBAAgB,CAG3B,CAAC,EACGI,EAAc,OAAS,GAAK,KAAK,OAAS,EACrCrY,EACL,MACA,CACE,MAAO,CACL,eACA,gBAAgB,KAAK,oBAAoB,EACrD,CACA,EACQ,CAEE,GAAGqY,EAAc,IAAIQ,CAAkB,EAEvCP,EAAY,OAAS,EAAItY,EACvB,MACA,CACE,MAAO,CACL,cACA,CACE,oBAAqB,KAAK,MAC5C,CACA,CACA,EACY,CAACqZ,EAAqBf,CAAW,CAAC,CAC9C,EAAc,IACd,CACA,EAEWtY,EACL,MACA,CACE,MAAO,CACL,2CACA,gBAAgB,KAAK,oBAAoB,GACzC,CACE,oBAAqB,KAAK,OAC1B,oBAAqB,KAAK,IACtC,CACA,CACA,EACM,CACEqZ,EAAqBpB,CAAO,CACpC,CACA,EACE,CACF,EACMuB,GAA4BvD,GAAY1B,GAAW,CAAC,CAAC,YAAa,iBAAiB,CAAC,CAAC,ECnwB3F/rB,GAASixB,EAAE,EACX,MAAMC,GAAkB,CACtB,KAAM/Z,EAAE,mBAAmB,EAC3B,MAAOA,EAAE,aAAa,EAEtB,OAAQA,EAAE,UAAU,CAEtB,EACA,SAASga,GAAsBn4B,EAAY,KAAK,IAAG,EAAIC,EAAO,CAAA,EAAI,CAChE,IAAIm4B,EACJ,MAAMh4B,EAAOgH,EAAS,IAAM,IAAI,KAAKpD,EAAQhE,CAAS,CAAC,CAAC,EAClDE,EAAUkH,EAAS,IAAM,CAC7B,KAAM,CAAE,SAAAixB,EAAU,aAAcC,EAAe,cAAAC,CAAa,EAAKv0B,EAAQ/D,CAAI,EAC7E,MAAO,CACL,GAAGo4B,GAAY,CAAE,SAAAA,CAAQ,EACzB,GAAGC,GAAiB,CAAE,aAAcA,CAAa,EACjD,cAAeC,EAAgBL,GAAgBI,GAAiB,MAAM,EAAI,EAChF,CACE,CAAC,EACKE,EAAernB,GAAI,EAAE,EAC3B9G,GAAY,IAAMouB,GAAoB,EACtC,SAASA,GAAqB,CAE5B,GADAD,EAAa,MAAQz4B,GAAmBK,EAAK,MAAOF,EAAQ,KAAK,EAC7D8D,EAAQ/D,CAAI,EAAE,SAAW,GAAO,CAClC,MAAMy4B,EAAO,KAAK,IAAI,KAAK,IAAG,EAAK,IAAI,KAAK10B,EAAQhE,CAAS,CAAC,EAAE,QAAO,CAAE,EACnEyF,EAAWizB,EAAO,MAAQx4B,EAAQ,MAAM,cAAgB,KAAK,IAAIw4B,EAAO,GAAI,IAAI,EAAI,IAC1FN,EAAY,OAAO,WAAWK,EAAoBhzB,CAAQ,CAC5D,CACF,CACA,OAAA0M,GAAY,IAAMimB,GAAa,OAAO,aAAaA,CAAS,CAAC,EACtD9mB,GAASknB,CAAY,CAC9B,CACA,SAASG,GAAc34B,EAAWC,EAAM,CACtC,MAAMC,EAAUkH,EAAS,KAAO,CAC9B,OAAQ1H,GAAkB,EAC1B,OAAQ,CAAE,UAAW,QAAS,UAAW,QAAQ,EACjD,GAAGsE,EAAQ/D,CAAI,CACnB,EAAI,EACII,EAAY+G,EAAS,IAAM,IAAI,KAAK,eAAelH,EAAQ,MAAM,OAAQA,EAAQ,MAAM,MAAM,CAAC,EACpG,OAAOkH,EAAS,IAAM/G,EAAU,MAAM,OAAO2D,EAAQhE,CAAS,CAAC,CAAC,CAClE,CC3CA,MAAM44B,GAAQ,0BAA0B,KAAK,UAAU,SAAS,ECE1DC,GAA2B,OAAO,KAAK,eAAe,2BAAwB,EAC9EC,GAAmB,gBACnBC,GAAyB,iBAC/B,SAASC,GAAkB/xB,EAAO/G,EAAS,CACzC,MAAI,EAAE+G,EAAM,kBAAkB,cAAgBA,EAAM,kBAAkB,kBAAoBA,EAAM,kBAAkB,qBAAuBA,EAAM,kBAAkB,mBAAqBA,EAAM,OAAO,kBAC1L,GAEL/G,EAAQ,aACH,GAEF,MAAM,KAAK,SAAS,uBAAuB,YAAY,CAAC,EAAE,OAAQmB,GAAOA,EAAG,gBAAe,CAAE,EAAE,OAAS,CACjH,CACA,SAAS43B,GAAa1vB,EAAUrJ,EAAS,CACvC,OAAQ+G,GAAU,CAEhB,IADuB2xB,GAAQ3xB,EAAM,QAAUA,EAAM,WAC9B,CAAA,CAAQ/G,EAAQ,KAEhC,CAIA,GAJI+G,EAAM,SAAW,CAAA,CAAQ/G,EAAQ,KAEjCA,EAAQ,QAAU,QAAU+G,EAAM,WAAa,CAAA,CAAQ/G,EAAQ,OAE/D84B,GAAkB/xB,EAAO/G,CAAO,EACzC,OAEEA,EAAQ,SACV+G,EAAM,eAAc,EAElB/G,EAAQ,MACV+G,EAAM,gBAAe,EAEvBsC,EAAStC,CAAK,CAAA,CAChB,CACF,CACA,SAASiyB,GAAUC,EAAc5vB,EAAW,IAAM,CAClD,EAAGrJ,EAAU,CAAA,EAAI,CACf,GAAI24B,GACF,MAAO,IAAM,CACb,EAEF,MAAMO,EAAmB,CAACnyB,EAAO5E,IAAQ,CACvC,GAAI4E,EAAM,MAAQ5E,EAChB,MAAO,GAET,GAAInC,EAAQ,cAAe,CACzB,MAAMm5B,EAAmBh3B,IAAQA,EAAI,YAAW,EAC1Ci3B,EAAwBryB,EAAM,MAAQA,EAAM,IAAI,YAAW,EACjE,GAAIoyB,IAAqBC,EACvB,MAAO,EAEX,CACA,OAAIR,GAAiB,KAAKz2B,CAAG,GAAK02B,GAAuB,KAAK9xB,EAAM,GAAG,EAC9DA,EAAM,KAAK,QAAQ,wBAAyB,EAAE,IAAM5E,EAAI,YAAW,EAErE4E,EAAM,IAAI,YAAW,IAAO5E,EAAI,YAAW,CACpD,EACMsI,EAAa1D,GACb,OAAOkyB,GAAiB,WACnBA,EAAalyB,CAAK,EAChB,OAAOkyB,GAAiB,SAC1BC,EAAiBnyB,EAAOkyB,CAAY,EAClC,MAAM,QAAQA,CAAY,EAC5BA,EAAa,KAAM92B,GAAQ+2B,EAAiBnyB,EAAO5E,CAAG,CAAC,EAEvD,GAGLk3B,EAAc3uB,GAAYD,EAAWsuB,GAAa1vB,EAAUrJ,CAAO,EAAG,CAC1E,UAAW,UACX,OAAQ,GACR,QAAS,CAACA,EAAQ,OACtB,CAAG,EACKs5B,EAAYt5B,EAAQ,KAAO0K,GAAYD,EAAWsuB,GAAa1vB,EAAUrJ,CAAO,EAAG,CACvF,UAAW,QACX,QAAS,CAACA,EAAQ,OACtB,CAAG,EAAI,IAAM,CACX,EACA,MAAO,IAAM,CACXq5B,EAAW,EACXC,EAAS,CACX,CACF,CClFA,SAASC,GAAiBp4B,EAAK,SAAS,KAAM,CAC5C,MAAMq4B,EAAyB,OAAO,iBAAiBr4B,CAAE,EAAE,iBAAiB,6BAA6B,EACzG,OAAIq4B,IAA2B,OACtBA,IAA2B,eAE7B,EACT,CACoBD,GAAgB,ECNpC,MAAME,GAAexoB,GAAIyoB,IAAqB,EAC9C,OAAO,iBAAiB,SAAU,IAAM,CACtCD,GAAa,MAAQC,GAAmB,CAC1C,CAAC,EACD,SAASA,IAAsB,CAC7B,OAAO,OAAO,cAAgB,OAAO,OAAO,MAC9C,CCeA,SAASC,GAAkBv3B,EAAU,CAQnC,MAPI,CAACA,EAAS,QAGV,UAAWA,GAAY,UAAWA,EAAS,QAI3CA,EAAS,OAAO,UAAYA,EAAS,MAChC,KAEFA,EAAS,MAClB,CACA,SAASw3B,GAAqBx3B,EAAU,CACtC,MAAMy3B,EAAY,CAACz3B,CAAQ,EAC3B,IAAIutB,EAASgK,GAAkBv3B,CAAQ,EACvC,KAAOutB,GACLkK,EAAU,KAAKlK,CAAM,EACrBA,EAASgK,GAAkBhK,CAAM,EAEnC,OAAOkK,CACT,CACA,SAASC,IAAkB,CACzB,MAAM13B,EAAWC,GAAkB,EACnC,GAAI,CAACD,EACH,MAAM,IAAI,MAAM,kDAAkD,EAGpE,MAAM23B,EADoBH,GAAqBx3B,CAAQ,EACpB,IAAK43B,GAAcA,EAAU,MAAM,OAAO,EAAE,OAAO,OAAO,EAE7F,OADqB,OAAO,YAAYD,EAAS,IAAKE,GAAY,CAACA,EAAS,EAAE,CAAC,CAAC,CAElF,CACAnzB,GAASozB,GAAKC,EAAG,EACjB,MAAM3F,GAAa,CAAC,kBAAmB,kBAAkB,EACnDC,GAAa,CAAC,mBAAoB,iBAAiB,EACnDC,GAAa,CAAC,IAAI,EAClBC,GAAa,CAAE,MAAO,YAAY,EAClCyF,GAAa,CAAC,OAAO,EACrBC,GAAa,CAAC,IAAI,EAClBC,GAAa,CAAE,MAAO,0BAA0B,EAChDzH,GAA4BJ,GAAgB,CAC3C,aAAc,GACnB,OAAQ,UACR,MAAuB8H,GAAY,CACjC,KAAM,CAAE,QAAS,EAAE,EACnB,YAAa,CAAE,KAAM,OAAO,EAC5B,QAAS,CAAE,KAAM,OAAO,EACxB,cAAe,CAAE,KAAM,OAAO,EAC9B,gBAAiB,CAAE,KAAM,OAAO,EAChC,eAAgB,CAAE,QAAS,GAAG,EAC9B,gBAAiB,CAAE,KAAM,OAAO,EAChC,aAAc,CAAE,KAAM,OAAO,EAC7B,iBAAkB,CAAE,KAAM,OAAO,EACjC,KAAM,CAAE,QAAS,QAAQ,EACzB,QAAS,CAAE,KAAM,OAAO,EACxB,oBAAqB,CAAE,KAAM,OAAO,EACpC,KAAM,CAAE,KAAM,OAAO,EACrB,cAAe,CAAE,KAAM,OAAO,EAC9B,UAAW,CAAE,QAAS,MAAM,EAC5B,mBAAoB,CAAE,KAAM,OAAO,EACnC,uBAAwB,CAAE,QAAS,IAAM,EAAE,EAC3C,cAAe,CAAE,QAAS,CAAC,EAC3B,QAAS,CAAE,QAAS,EAAE,EACtB,eAAgB,CAAE,QAAS,MAAM,CACrC,EAAK,CACD,KAAQ,CAAE,KAAM,QAAc,QAAS,EAAM,EAC7C,cAAiB,CAAA,CACrB,CAAG,EACD,MAAuBA,GAAY,CAAC,OAAQ,WAAY,QAAS,aAAa,EAAG,CAAC,aAAa,CAAC,EAChG,MAAMC,EAAS,CAAE,KAAMC,CAAM,EAAI,CAC/BC,GAAYvH,IAAU,CACpB,UAAawH,EAAiB,MAC9B,UAAaC,EAAkB,KACrC,EAAM,EACF,MAAMC,EAAYC,GAASN,EAAS,MAAM,EACpCO,EAAQP,EACRQ,EAAOP,EACPQ,EAAenB,GAAe,EAC9BoB,EAAUvF,GAAe,EACzBwF,EAAcC,GAAe,MAAM,EACzC,IAAIC,EACJppB,GAAY,IAAMqpB,GAAgB,EAClCr2B,GAAM,IAAM81B,EAAM,uBAAyB3kB,GAAa,CAClDilB,GACFA,EAAU,wBAAwB,CAACF,EAAY,MAAO,GAAG/kB,CAAQ,CAAC,CAEtE,CAAC,EACD,KAAM,CACJ,SAAUmlB,EACV,MAAOC,EACP,OAAQC,CACd,EAAQn2B,GAAco2B,EAAWC,GAAM,IAAMZ,EAAM,cAAc,EAAG,CAAE,UAAW,GAAO,EAC9Ea,EAAe3qB,GAAI,CAAC,EACpB4qB,EAAe5qB,GAAI,EAAK,EAC9B9G,GAAY,IAAM,CACZ0xB,EAAa,OAAS,CAACd,EAAM,gBAC/BU,EAAc,EACLF,EAAU,OACnBC,EAAa,CAEjB,CAAC,EACD,MAAMZ,EAAoB1zB,EAAS,IAAM,GAAG6zB,EAAM,cAAc,IAAI,EAC9D,CAAE,KAAMe,GAAcxsB,GAAS6rB,EAAa,CAChD,WAAYY,CAClB,CAAK,EACD9pB,GAAY6pB,CAAS,EACrB9C,GAAU,SAAU,IAAM,CACNtnB,GAAY,EAChB,GAAG,EAAE,IAAM2pB,GACvBW,EAAK,CAET,EAAG,CAAE,aAAc,GAAM,EACzBhD,GAAU,CAAC,YAAa,YAAY,EAAIjyB,GAAU,CAC5C,SAAS,eAAiB,CAACo0B,EAAY,MAAM,SAAS,SAAS,aAAa,IAG5Ep0B,EAAM,MAAQ,cAAgBuK,GAChC2qB,EAAa,EAEbP,EAAS,EAEb,EAAG,CAAE,aAAc,GAAM,EACzB,MAAMQ,EAAQC,GAAQ,EAChBxB,EAAmBzzB,EAAS,IAAM,CACtC,IAAIqvB,EAAU,EACd,OAAIwE,EAAM,SAAWA,EAAM,iBACzBxE,IAEE,CAACwE,EAAM,SAAWA,EAAM,oBAC1BxE,IAEE2F,EAAM,SACR3F,IAEKA,CACT,CAAC,EACDnxB,GAAU,IAAM,CACV,CAAC21B,EAAM,MAASA,EAAM,OAG5B,CAAC,EACD,SAASW,EAAU30B,EAAO,CACxB,GAAI,CAACg0B,EAAM,QAAS,CAClBc,EAAa,MAAQ,GACrB,MACF,CACI90B,GAASw0B,EAAU,OACrBa,EAAgB,EAElBpB,EAAK,OAAQj0B,CAAK,CACpB,CACA,SAASk1B,EAAcl1B,EAAO,CACvBg0B,EAAM,cAGPh0B,GAASw0B,EAAU,OACrBa,EAAgB,EAElBpB,EAAK,WAAYj0B,CAAK,EACxB,CACA,SAASg1B,EAAY30B,EAAG+I,EAAW,CACjC,GAAI,CAAC4qB,EAAM,aAAc,CACvB,GAAI5qB,IAAc,QAAUA,IAAc,QACxC,OAEEA,IAAc,SAAWmB,GAC3BoqB,EAAUt0B,CAAC,EAEX60B,EAAc70B,CAAC,CAEnB,CACF,CACA,SAASg1B,GAAmB,CAC1BZ,EAAa,EACbC,EAAc,EACdG,EAAa,OACf,CACA,SAASI,EAAMj1B,EAAO,CAChBg0B,EAAM,UAGVF,EAAU,MAAQ,GAClB,WAAW,IAAM,CACfG,EAAK,QAASj0B,CAAK,CACrB,EAAG,GAAG,EACR,CACA,SAASs1B,EAAwBt1B,EAAO,CAClCg0B,EAAM,qBACRiB,EAAMj1B,CAAK,CAEf,CACA,eAAeu1B,GAAe,CAC5B,GAAIjB,EACF,OAEF,MAAMh2B,GAAQ,EACd,MAAMrF,EAAU,CACd,kBAAmB,GACnB,cAAem7B,EAAY,MAC3B,UAAWzpB,GAAY,EAGvB,kBAAmB,GACnB,eAAgBqpB,EAAM,cAC9B,EACMM,EAAY9P,GAAgB,CAAC4P,EAAY,MAAO,GAAGJ,EAAM,sBAAsB,EAAG/6B,CAAO,EACzFq7B,EAAU,SAAQ,CACpB,CACA,SAASC,GAAiB,CACnBD,IAGLA,GAAW,WAAU,EACrBA,EAAY,OACd,CACA,MAAO,CAAClI,EAAMC,KACLQ,EAAS,EAAIC,GAAY0I,GAAU,CACxC,SAAU/B,EAAQ,YAAc,KAChC,GAAIA,EAAQ,SACpB,EAAS,CACDpG,EAAYoI,GAAY,CACtB,KAAM,OACN,OAAQ,GACR,aAAcF,EACd,cAAehB,CACzB,EAAW,CACD,QAASvH,EAAQ,IAAM,CACrB0I,GAAe3H,EAAmB,MAAOD,GAAW,CAAE,GAAG1B,EAAK,OAAQ,GAAG5rB,EAAM0zB,CAAY,GAAK,CAC9F,IAAK,OACL,MAAO,CAAC,aAAc,CACpB,qBAAsBT,EAAQ,MAAQA,EAAQ,oBAAsBA,EAAQ,aAAeA,EAAQ,QACnG,oBAAqBA,EAAQ,aAC7C,CAAe,EACD,KAAM,SACN,aAAc,OACd,kBAAmBA,EAAQ,SAAW,cAAcjzB,EAAM2zB,CAAO,CAAC,GAClE,mBAAoB,qBAAuB3zB,EAAM2zB,CAAO,EACxD,SAAU,IACxB,CAAa,EAAG,CACF9G,EAAYoI,GAAY,CACtB,KAAM,kBACN,OAAQ,EACxB,EAAiB,CACD,QAASzI,EAAQ,IAAM,CACrBe,EAAmB,MAAO,CACxB,MAAO,eACP,mBAAoB0F,EAAQ,cAC5B,kBAAmB,CAACA,EAAQ,aAChD,EAAqB,CACDA,EAAQ,KAAK,KAAI,IAAO,IAAM5G,EAAS,EAAIgB,GAAmB,KAAM,CAClE,IAAK,EACL,GAAI,cAAgBrtB,EAAM2zB,CAAO,EACjC,MAAO,oBAC7B,EAAuBnG,GAAgByF,EAAQ,IAAI,EAAG,EAAG9F,EAAU,GAAKM,GAAmB,GAAI,EAAI,EAC/EF,EAAmB,MAAOH,GAAY,CACpC6F,EAAQ,SAAWA,EAAQ,iBAAmB5G,EAAS,EAAIgB,GAAmB,SAAU,CACtF,IAAK,EACL,MAAO8H,GAAe,CAAC,mBAAoB,CAAE,2BAA4BlC,EAAQ,eAAe,CAAE,CAAC,EACnG,MAAOjzB,EAAMg0B,CAAS,EAAIh0B,EAAM0W,CAAC,EAAE,iBAAiB,EAAI1W,EAAM0W,CAAC,EAAE,iBAAiB,EAClF,KAAM,SACN,QAASmV,EAAO,CAAC,IAAMA,EAAO,CAAC,EAAKU,GAAW+H,EAAa,MAAQ,CAACA,EAAa,MAC1G,EAAyB,CACDzH,EAAYuI,GAAkB,CAC5B,MAAO,yBACP,OAAQ,GACR,KAAMp1B,EAAMg0B,CAAS,EAAIh0B,EAAM0W,CAAC,EAAE,iBAAiB,EAAI1W,EAAM0W,CAAC,EAAE,iBAAiB,EACjF,KAAM1W,EAAMg0B,CAAS,EAAIh0B,EAAMq1B,EAAQ,EAAIr1B,EAAMs1B,EAAO,CAClF,EAA2B,KAAM,EAAG,CAAC,OAAQ,MAAM,CAAC,EAC5Bt1B,EAAMg0B,CAAS,GAAK3H,EAAS,EAAIgB,GAAmB,MAAO,CACzD,IAAK,GAAGrtB,EAAM2zB,CAAO,CAAC,cAAcU,EAAa,KAAK,GACtD,MAAO,gBACP,OAAQ,KACR,MAAO,IACjC,EAA2B,CAAC,GAAGxI,EAAO,CAAC,IAAMA,EAAO,CAAC,EAAI,CAC/B0B,EAAmB,SAAU,CAC3B,MAAO,wBACP,OAAQ,QACR,eAAgB,IAChB,KAAM,cACN,EAAG,KACH,GAAI,KACJ,GAAI,IAChC,EAA6B,KAAM,EAAE,CACrC,EAA0B,CAAC,GAAKE,GAAmB,GAAI,EAAI,CAC3D,EAAyB,GAAIoF,EAAU,GAAKpF,GAAmB,GAAI,EAAI,EACjDZ,EAAY0D,GAAW,CACrB,MAAO,iBACP,OAAQ0C,EAAQ,aACxC,EAAyB,CACD,QAASzG,EAAQ,IAAM,CACrBE,GAAWd,EAAK,OAAQ,UAAW,CAAA,EAAI,OAAQ,EAAI,CAC7E,CAAyB,EACD,EAAG,CAC3B,EAAyB,EAAG,CAAC,QAAQ,CAAC,EAChB,CAACqH,EAAQ,SAAWA,EAAQ,oBAAsB5G,EAAS,EAAIC,GAAY6B,GAAU,CACnF,IAAK,EACL,aAAcnuB,EAAM0W,CAAC,EAAE,OAAO,EAC9B,MAAO,eACP,QAAS,WACT,QAAS+d,CACjC,EAAyB,CACD,KAAMjI,EAAQ,IAAM,CAClBK,EAAYuI,GAAkB,CAAE,KAAMp1B,EAAMu1B,EAAQ,CAAC,EAAI,KAAM,EAAG,CAAC,MAAM,CAAC,CACpG,CAAyB,EACD,EAAG,CAC3B,EAAyB,EAAG,CAAC,YAAY,CAAC,GAAK9H,GAAmB,GAAI,EAAI,CAC1E,CAAqB,CACrB,EAAqB,EAAGP,EAAU,CAClC,CAAiB,EACD,EAAG,CACnB,CAAe,EACDL,EAAYoI,GAAY,CACtB,KAAM,SAAShC,EAAQ,cAAgB,MAAQ,IAAI,GACnD,OAAQ,EACxB,EAAiB,CACD,QAASzG,EAAQ,IAAM,CACrB0I,GAAe3H,EAAmB,MAAO,CACvC,MAAO4H,GAAe,CAAC,gBAAiB,CACtC,kBAAkBlC,EAAQ,IAAI,GAC9B,CAAE,mCAAoCA,EAAQ,gBAAgB,CACpF,CAAqB,CAAC,EACF,YAAauC,GAAcV,EAAyB,CAAC,MAAM,CAAC,CAChF,EAAqB,CACDjI,EAAYoI,GAAY,CACtB,KAAM,kBACN,OAAQ,EAC9B,EAAuB,CACD,QAASzI,EAAQ,IAAM,CACrB0I,GAAerI,EAAYsB,GAAU,CACnC,aAAcnuB,EAAM0W,CAAC,EAAE,UAAU,EACjC,MAAO,OACP,QAAS,yBACT,QAASge,CACnC,EAA2B,CACD,KAAMlI,EAAQ,IAAM,CAClBK,EAAYuI,GAAkB,CAC5B,YAAa,GACb,KAAMp1B,EAAMy1B,EAAc,EAC1B,KAAM,EACpC,EAA+B,KAAM,EAAG,CAAC,MAAM,CAAC,CAChD,CAA2B,EACD,EAAG,CAC7B,EAA2B,EAAG,CAAC,YAAY,CAAC,EAAG,CACrB,CAACC,GAAOzC,EAAQ,WAAW,CACrD,CAAyB,CACzB,CAAuB,EACD,EAAG,CACzB,CAAqB,EACD1F,EAAmB,MAAO,CACxB,GAAI,qBAAuBvtB,EAAM2zB,CAAO,EACxC,MAAO,iBAC7B,EAAuB,CACDpG,EAAmB,MAAOwF,GAAY,CACpCrG,GAAWd,EAAK,OAAQ,UAAW,CAAA,EAAI,OAAQ,EAAI,CAC3E,CAAuB,EACD,CAACqH,EAAQ,SAAW,CAACA,EAAQ,oBAAsB5G,EAAS,EAAIC,GAAY6B,GAAU,CACpF,IAAK,EACL,aAAcnuB,EAAM0W,CAAC,EAAE,OAAO,EAC9B,MAAO,yBACP,QAAS,WACT,QAAS+d,CACjC,EAAyB,CACD,KAAMjI,EAAQ,IAAM,CAClBK,EAAYuI,GAAkB,CAAE,KAAMp1B,EAAMu1B,EAAQ,CAAC,EAAI,KAAM,EAAG,CAAC,MAAM,CAAC,CACpG,CAAyB,EACD,EAAG,CAC3B,EAAyB,EAAG,CAAC,YAAY,CAAC,GAAK9H,GAAmB,GAAI,EAAI,CAC1E,EAAuB,EAAGqF,EAAU,EAChBjG,EAAYoI,GAAY,CACtB,KAAM,kBACN,OAAQ,EAC9B,EAAuB,CACD,QAASzI,EAAQ,IAAM,CACrB0I,GAAerI,EAAYsB,GAAU,CACnC,aAAcnuB,EAAM0W,CAAC,EAAE,MAAM,EAC7B,MAAO,OACP,QAAS,yBACT,QAASyd,CACnC,EAA2B,CACD,KAAM3H,EAAQ,IAAM,CAClBK,EAAYuI,GAAkB,CAC5B,YAAa,GACb,KAAMp1B,EAAM21B,EAAe,EAC3B,KAAM,EACpC,EAA+B,KAAM,EAAG,CAAC,MAAM,CAAC,CAChD,CAA2B,EACD,EAAG,CAC7B,EAA2B,EAAG,CAAC,YAAY,CAAC,EAAG,CACrB,CAACD,GAAOzC,EAAQ,OAAO,CACjD,CAAyB,CACzB,CAAuB,EACD,EAAG,CACzB,CAAqB,CACrB,EAAqB,EAAE,EAAG,CACN,CAACyC,GAAOpC,EAAU,KAAK,CAC3C,CAAmB,CACnB,CAAiB,EACD,EAAG,CACnB,EAAiB,EAAG,CAAC,MAAM,CAAC,CAC5B,EAAe,GAAIrG,EAAU,EAAG,CAClB,CAACyI,GAAOpC,EAAU,KAAK,CACrC,CAAa,CACb,CAAW,EACD,EAAG,CACb,CAAS,CACT,EAAS,EAAG,CAAC,WAAY,IAAI,CAAC,EAE5B,CACF,CAAC,EACKsC,GAA0B5I,GAAY1B,GAAW,CAAC,CAAC,YAAa,iBAAiB,CAAC,CAAC","x_google_ignoreList":[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21]} \ No newline at end of file diff --git a/dist/NcModal-DiDvgcU8-7_SNLMd-.chunk.mjs.map.license b/dist/NcModal-DiDvgcU8-Cb_C64qI.chunk.mjs.map.license similarity index 100% rename from dist/NcModal-DiDvgcU8-7_SNLMd-.chunk.mjs.map.license rename to dist/NcModal-DiDvgcU8-Cb_C64qI.chunk.mjs.map.license diff --git a/dist/NcPasswordField-BFyzHTOO-7Y4psNBG.chunk.mjs b/dist/NcPasswordField-BFyzHTOO-BIm5AMSG.chunk.mjs similarity index 93% rename from dist/NcPasswordField-BFyzHTOO-7Y4psNBG.chunk.mjs rename to dist/NcPasswordField-BFyzHTOO-BIm5AMSG.chunk.mjs index db7b7b6eda76b..fe61fe460f009 100644 --- a/dist/NcPasswordField-BFyzHTOO-7Y4psNBG.chunk.mjs +++ b/dist/NcPasswordField-BFyzHTOO-BIm5AMSG.chunk.mjs @@ -1,2 +1,2 @@ -import{l as C,c as S,d as N}from"./logger-D3RVzcfQ-Bt9JRPzn.chunk.mjs";import{c as F}from"./index-CkGt55pS.chunk.mjs";import{g as L}from"./public-C1mLBHT3.chunk.mjs";import{d as M,c as $}from"./index-Cp0kcsps.chunk.mjs";import{r as q,e as z,_ as H,b as n,N as I}from"./createElementId-DhjFt1I9-BmyhoOWk.chunk.mjs";import{N as O}from"./NcInputField-5Sg6EUP6-DXw-ZWiv.chunk.mjs";import{b as U,n as c,p as j,z as v,o as A,c as D,q as E,w as m,i as G,k as J,u as r,m as K,s as f,l as h,v as w}from"./Web-DYqXJUev.chunk.mjs";q(z);const Q=U({__name:"NcPasswordField",props:f({class:{},inputClass:{default:""},id:{},label:{},labelOutside:{type:Boolean},placeholder:{},showTrailingButton:{type:Boolean,default:!0},success:{type:Boolean},error:{type:Boolean},helperText:{},disabled:{type:Boolean},pill:{type:Boolean},checkPasswordStrength:{type:Boolean},minlength:{default:void 0},asText:{type:Boolean}},{modelValue:{default:""},modelModifiers:{},visible:{type:Boolean,default:!1},visibleModifiers:{}}),emits:f(["valid","invalid"],["update:modelValue","update:visible"]),setup(s,{expose:g,emit:y}){const a=c(s,"modelValue"),t=c(s,"visible"),l=s,d=y;g({focus:k,select:P});const{password_policy:x}=L(),u=j("inputField"),o=h(""),i=h(),b=w(()=>{const e={...l};return delete e.checkPasswordStrength,delete e.minlength,delete e.asText,delete e.error,delete e.helperText,delete e.inputClass,delete e.success,e}),B=w(()=>l.minlength??(l.checkPasswordStrength?x?.minLength:void 0)??void 0);v(a,()=>{i.value=void 0,o.value=""}),v(a,M(T,500));async function T(){if(!(!l.checkPasswordStrength||!a.value))try{const{data:e}=await F.post($("apps/password_policy/api/v1/validate"),{password:a.value});if(i.value=e.ocs.data.passed,e.ocs.data.passed){o.value=n("Password is secure"),d("valid");return}o.value=e.ocs.data.reason,d("invalid")}catch(e){C.error("Password policy returned an error",{error:e})}}function _(){t.value=!t.value}function k(e){u.value.focus(e)}function P(){u.value.select()}return(e,p)=>(A(),D(O,K(b.value,{ref:"inputField",modelValue:a.value,"onUpdate:modelValue":p[0]||(p[0]=V=>a.value=V),error:s.error||i.value===!1,helperText:s.helperText||o.value,inputClass:[s.inputClass,{"password-field__input--secure-text":!t.value&&s.asText}],minlength:B.value,success:s.success||i.value===!0,trailingButtonLabel:t.value?r(n)("Hide password"):r(n)("Show password"),type:t.value||s.asText?"text":"password",onTrailingButtonClick:_}),E({"trailing-button-icon":m(()=>[J(I,{path:t.value?r(S):r(N)},null,8,["path"])]),_:2},[e.$slots.icon?{name:"icon",fn:m(()=>[G(e.$slots,"icon",{},void 0,!0)]),key:"0"}:void 0]),1040,["modelValue","error","helperText","inputClass","minlength","success","trailingButtonLabel","type"]))}}),ae=H(Q,[["__scopeId","data-v-cb828737"]]);export{ae as N}; -//# sourceMappingURL=NcPasswordField-BFyzHTOO-7Y4psNBG.chunk.mjs.map +import{l as C,c as S,d as N}from"./logger-D3RVzcfQ-BrUWOyzd.chunk.mjs";import{c as F}from"./index-CkGt55pS.chunk.mjs";import{g as L}from"./public-C1mLBHT3.chunk.mjs";import{d as M,c as $}from"./index-Cp0kcsps.chunk.mjs";import{r as q,e as z,_ as H,b as n,N as I}from"./createElementId-DhjFt1I9-BmyhoOWk.chunk.mjs";import{N as O}from"./NcInputField-5Sg6EUP6-CUyzAC2j.chunk.mjs";import{b as U,n as c,p as j,z as v,o as A,c as D,q as E,w as m,i as G,k as J,u as r,m as K,s as f,l as h,v as w}from"./Web-DYqXJUev.chunk.mjs";q(z);const Q=U({__name:"NcPasswordField",props:f({class:{},inputClass:{default:""},id:{},label:{},labelOutside:{type:Boolean},placeholder:{},showTrailingButton:{type:Boolean,default:!0},success:{type:Boolean},error:{type:Boolean},helperText:{},disabled:{type:Boolean},pill:{type:Boolean},checkPasswordStrength:{type:Boolean},minlength:{default:void 0},asText:{type:Boolean}},{modelValue:{default:""},modelModifiers:{},visible:{type:Boolean,default:!1},visibleModifiers:{}}),emits:f(["valid","invalid"],["update:modelValue","update:visible"]),setup(s,{expose:g,emit:y}){const a=c(s,"modelValue"),t=c(s,"visible"),l=s,d=y;g({focus:k,select:P});const{password_policy:x}=L(),u=j("inputField"),o=h(""),i=h(),b=w(()=>{const e={...l};return delete e.checkPasswordStrength,delete e.minlength,delete e.asText,delete e.error,delete e.helperText,delete e.inputClass,delete e.success,e}),B=w(()=>l.minlength??(l.checkPasswordStrength?x?.minLength:void 0)??void 0);v(a,()=>{i.value=void 0,o.value=""}),v(a,M(T,500));async function T(){if(!(!l.checkPasswordStrength||!a.value))try{const{data:e}=await F.post($("apps/password_policy/api/v1/validate"),{password:a.value});if(i.value=e.ocs.data.passed,e.ocs.data.passed){o.value=n("Password is secure"),d("valid");return}o.value=e.ocs.data.reason,d("invalid")}catch(e){C.error("Password policy returned an error",{error:e})}}function _(){t.value=!t.value}function k(e){u.value.focus(e)}function P(){u.value.select()}return(e,p)=>(A(),D(O,K(b.value,{ref:"inputField",modelValue:a.value,"onUpdate:modelValue":p[0]||(p[0]=V=>a.value=V),error:s.error||i.value===!1,helperText:s.helperText||o.value,inputClass:[s.inputClass,{"password-field__input--secure-text":!t.value&&s.asText}],minlength:B.value,success:s.success||i.value===!0,trailingButtonLabel:t.value?r(n)("Hide password"):r(n)("Show password"),type:t.value||s.asText?"text":"password",onTrailingButtonClick:_}),E({"trailing-button-icon":m(()=>[J(I,{path:t.value?r(S):r(N)},null,8,["path"])]),_:2},[e.$slots.icon?{name:"icon",fn:m(()=>[G(e.$slots,"icon",{},void 0,!0)]),key:"0"}:void 0]),1040,["modelValue","error","helperText","inputClass","minlength","success","trailingButtonLabel","type"]))}}),ae=H(Q,[["__scopeId","data-v-cb828737"]]);export{ae as N}; +//# sourceMappingURL=NcPasswordField-BFyzHTOO-BIm5AMSG.chunk.mjs.map diff --git a/dist/NcPasswordField-BFyzHTOO-7Y4psNBG.chunk.mjs.license b/dist/NcPasswordField-BFyzHTOO-BIm5AMSG.chunk.mjs.license similarity index 100% rename from dist/NcPasswordField-BFyzHTOO-7Y4psNBG.chunk.mjs.license rename to dist/NcPasswordField-BFyzHTOO-BIm5AMSG.chunk.mjs.license diff --git a/dist/NcPasswordField-BFyzHTOO-7Y4psNBG.chunk.mjs.map b/dist/NcPasswordField-BFyzHTOO-BIm5AMSG.chunk.mjs.map similarity index 99% rename from dist/NcPasswordField-BFyzHTOO-7Y4psNBG.chunk.mjs.map rename to dist/NcPasswordField-BFyzHTOO-BIm5AMSG.chunk.mjs.map index 9a6a61547d952..9459b66082b5a 100644 --- a/dist/NcPasswordField-BFyzHTOO-7Y4psNBG.chunk.mjs.map +++ b/dist/NcPasswordField-BFyzHTOO-BIm5AMSG.chunk.mjs.map @@ -1 +1 @@ -{"version":3,"file":"NcPasswordField-BFyzHTOO-7Y4psNBG.chunk.mjs","sources":["../node_modules/@nextcloud/vue/dist/chunks/NcPasswordField-BFyzHTOO.mjs"],"sourcesContent":["import '../assets/NcPasswordField-BN4HFgU5.css';\nimport { defineComponent, useModel, useTemplateRef, ref, computed, watch, openBlock, createBlock, mergeProps, unref, createSlots, withCtx, createVNode, renderSlot, mergeModels } from \"vue\";\nimport { q as mdiEyeOff, r as mdiEye } from \"./mdi-CpchYUUV.mjs\";\nimport axios from \"@nextcloud/axios\";\nimport { getCapabilities } from \"@nextcloud/capabilities\";\nimport { generateOcsUrl } from \"@nextcloud/router\";\nimport debounce from \"debounce\";\nimport { N as NcIconSvgWrapper } from \"./NcIconSvgWrapper-g8ubWhoz.mjs\";\nimport { N as NcInputField } from \"./NcInputField-5Sg6EUP6.mjs\";\nimport { r as register, n as t29, a as t } from \"./_l10n-wdIzZwir.mjs\";\nimport { l as logger } from \"./logger-D3RVzcfQ.mjs\";\nimport { _ as _export_sfc } from \"./_plugin-vue_export-helper-1tPrXgE0.mjs\";\nregister(t29);\nconst _sfc_main = /* @__PURE__ */ defineComponent({\n __name: \"NcPasswordField\",\n props: /* @__PURE__ */ mergeModels({\n class: {},\n inputClass: { default: \"\" },\n id: {},\n label: {},\n labelOutside: { type: Boolean },\n placeholder: {},\n showTrailingButton: { type: Boolean, default: true },\n success: { type: Boolean },\n error: { type: Boolean },\n helperText: {},\n disabled: { type: Boolean },\n pill: { type: Boolean },\n checkPasswordStrength: { type: Boolean },\n minlength: { default: void 0 },\n asText: { type: Boolean }\n }, {\n \"modelValue\": { default: \"\" },\n \"modelModifiers\": {},\n \"visible\": { type: Boolean, ...{ default: false } },\n \"visibleModifiers\": {}\n }),\n emits: /* @__PURE__ */ mergeModels([\"valid\", \"invalid\"], [\"update:modelValue\", \"update:visible\"]),\n setup(__props, { expose: __expose, emit: __emit }) {\n const modelValue = useModel(__props, \"modelValue\");\n const visible = useModel(__props, \"visible\");\n const props = __props;\n const emit = __emit;\n __expose({\n focus,\n select\n });\n const { password_policy: passwordPolicy } = getCapabilities();\n const inputFieldInstance = useTemplateRef(\"inputField\");\n const internalHelpMessage = ref(\"\");\n const isValid = ref();\n const propsToForward = computed(() => {\n const all = { ...props };\n delete all.checkPasswordStrength;\n delete all.minlength;\n delete all.asText;\n delete all.error;\n delete all.helperText;\n delete all.inputClass;\n delete all.success;\n return all;\n });\n const minLengthWithPolicy = computed(() => {\n return props.minlength ?? (props.checkPasswordStrength ? passwordPolicy?.minLength : void 0) ?? void 0;\n });\n watch(modelValue, () => {\n isValid.value = void 0;\n internalHelpMessage.value = \"\";\n });\n watch(modelValue, debounce(checkPassword, 500));\n async function checkPassword() {\n if (!props.checkPasswordStrength || !modelValue.value) {\n return;\n }\n try {\n const { data } = await axios.post(generateOcsUrl(\"apps/password_policy/api/v1/validate\"), { password: modelValue.value });\n isValid.value = data.ocs.data.passed;\n if (data.ocs.data.passed) {\n internalHelpMessage.value = t(\"Password is secure\");\n emit(\"valid\");\n return;\n }\n internalHelpMessage.value = data.ocs.data.reason;\n emit(\"invalid\");\n } catch (error) {\n logger.error(\"Password policy returned an error\", { error });\n }\n }\n function toggleVisibility() {\n visible.value = !visible.value;\n }\n function focus(options) {\n inputFieldInstance.value.focus(options);\n }\n function select() {\n inputFieldInstance.value.select();\n }\n return (_ctx, _cache) => {\n return openBlock(), createBlock(NcInputField, mergeProps(propsToForward.value, {\n ref: \"inputField\",\n modelValue: modelValue.value,\n \"onUpdate:modelValue\": _cache[0] || (_cache[0] = ($event) => modelValue.value = $event),\n error: __props.error || isValid.value === false,\n helperText: __props.helperText || internalHelpMessage.value,\n inputClass: [__props.inputClass, { \"password-field__input--secure-text\": !visible.value && __props.asText }],\n minlength: minLengthWithPolicy.value,\n success: __props.success || isValid.value === true,\n trailingButtonLabel: visible.value ? unref(t)(\"Hide password\") : unref(t)(\"Show password\"),\n type: visible.value || __props.asText ? \"text\" : \"password\",\n onTrailingButtonClick: toggleVisibility\n }), createSlots({\n \"trailing-button-icon\": withCtx(() => [\n createVNode(NcIconSvgWrapper, {\n path: visible.value ? unref(mdiEyeOff) : unref(mdiEye)\n }, null, 8, [\"path\"])\n ]),\n _: 2\n }, [\n !!_ctx.$slots.icon ? {\n name: \"icon\",\n fn: withCtx(() => [\n renderSlot(_ctx.$slots, \"icon\", {}, void 0, true)\n ]),\n key: \"0\"\n } : void 0\n ]), 1040, [\"modelValue\", \"error\", \"helperText\", \"inputClass\", \"minlength\", \"success\", \"trailingButtonLabel\", \"type\"]);\n };\n }\n});\nconst NcPasswordField = /* @__PURE__ */ _export_sfc(_sfc_main, [[\"__scopeId\", \"data-v-cb828737\"]]);\nexport {\n NcPasswordField as N\n};\n//# sourceMappingURL=NcPasswordField-BFyzHTOO.mjs.map\n"],"names":["register","t29","_sfc_main","defineComponent","mergeModels","__props","__expose","__emit","modelValue","useModel","visible","props","emit","focus","select","passwordPolicy","getCapabilities","inputFieldInstance","useTemplateRef","internalHelpMessage","ref","isValid","propsToForward","computed","all","minLengthWithPolicy","watch","debounce","checkPassword","data","axios","generateOcsUrl","t","error","logger","toggleVisibility","options","_ctx","_cache","openBlock","createBlock","NcInputField","mergeProps","$event","unref","createSlots","withCtx","createVNode","NcIconSvgWrapper","mdiEyeOff","mdiEye","renderSlot","NcPasswordField","_export_sfc"],"mappings":"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","x_google_ignoreList":[0]} \ No newline at end of file +{"version":3,"file":"NcPasswordField-BFyzHTOO-BIm5AMSG.chunk.mjs","sources":["../node_modules/@nextcloud/vue/dist/chunks/NcPasswordField-BFyzHTOO.mjs"],"sourcesContent":["import '../assets/NcPasswordField-BN4HFgU5.css';\nimport { defineComponent, useModel, useTemplateRef, ref, computed, watch, openBlock, createBlock, mergeProps, unref, createSlots, withCtx, createVNode, renderSlot, mergeModels } from \"vue\";\nimport { q as mdiEyeOff, r as mdiEye } from \"./mdi-CpchYUUV.mjs\";\nimport axios from \"@nextcloud/axios\";\nimport { getCapabilities } from \"@nextcloud/capabilities\";\nimport { generateOcsUrl } from \"@nextcloud/router\";\nimport debounce from \"debounce\";\nimport { N as NcIconSvgWrapper } from \"./NcIconSvgWrapper-g8ubWhoz.mjs\";\nimport { N as NcInputField } from \"./NcInputField-5Sg6EUP6.mjs\";\nimport { r as register, n as t29, a as t } from \"./_l10n-wdIzZwir.mjs\";\nimport { l as logger } from \"./logger-D3RVzcfQ.mjs\";\nimport { _ as _export_sfc } from \"./_plugin-vue_export-helper-1tPrXgE0.mjs\";\nregister(t29);\nconst _sfc_main = /* @__PURE__ */ defineComponent({\n __name: \"NcPasswordField\",\n props: /* @__PURE__ */ mergeModels({\n class: {},\n inputClass: { default: \"\" },\n id: {},\n label: {},\n labelOutside: { type: Boolean },\n placeholder: {},\n showTrailingButton: { type: Boolean, default: true },\n success: { type: Boolean },\n error: { type: Boolean },\n helperText: {},\n disabled: { type: Boolean },\n pill: { type: Boolean },\n checkPasswordStrength: { type: Boolean },\n minlength: { default: void 0 },\n asText: { type: Boolean }\n }, {\n \"modelValue\": { default: \"\" },\n \"modelModifiers\": {},\n \"visible\": { type: Boolean, ...{ default: false } },\n \"visibleModifiers\": {}\n }),\n emits: /* @__PURE__ */ mergeModels([\"valid\", \"invalid\"], [\"update:modelValue\", \"update:visible\"]),\n setup(__props, { expose: __expose, emit: __emit }) {\n const modelValue = useModel(__props, \"modelValue\");\n const visible = useModel(__props, \"visible\");\n const props = __props;\n const emit = __emit;\n __expose({\n focus,\n select\n });\n const { password_policy: passwordPolicy } = getCapabilities();\n const inputFieldInstance = useTemplateRef(\"inputField\");\n const internalHelpMessage = ref(\"\");\n const isValid = ref();\n const propsToForward = computed(() => {\n const all = { ...props };\n delete all.checkPasswordStrength;\n delete all.minlength;\n delete all.asText;\n delete all.error;\n delete all.helperText;\n delete all.inputClass;\n delete all.success;\n return all;\n });\n const minLengthWithPolicy = computed(() => {\n return props.minlength ?? (props.checkPasswordStrength ? passwordPolicy?.minLength : void 0) ?? void 0;\n });\n watch(modelValue, () => {\n isValid.value = void 0;\n internalHelpMessage.value = \"\";\n });\n watch(modelValue, debounce(checkPassword, 500));\n async function checkPassword() {\n if (!props.checkPasswordStrength || !modelValue.value) {\n return;\n }\n try {\n const { data } = await axios.post(generateOcsUrl(\"apps/password_policy/api/v1/validate\"), { password: modelValue.value });\n isValid.value = data.ocs.data.passed;\n if (data.ocs.data.passed) {\n internalHelpMessage.value = t(\"Password is secure\");\n emit(\"valid\");\n return;\n }\n internalHelpMessage.value = data.ocs.data.reason;\n emit(\"invalid\");\n } catch (error) {\n logger.error(\"Password policy returned an error\", { error });\n }\n }\n function toggleVisibility() {\n visible.value = !visible.value;\n }\n function focus(options) {\n inputFieldInstance.value.focus(options);\n }\n function select() {\n inputFieldInstance.value.select();\n }\n return (_ctx, _cache) => {\n return openBlock(), createBlock(NcInputField, mergeProps(propsToForward.value, {\n ref: \"inputField\",\n modelValue: modelValue.value,\n \"onUpdate:modelValue\": _cache[0] || (_cache[0] = ($event) => modelValue.value = $event),\n error: __props.error || isValid.value === false,\n helperText: __props.helperText || internalHelpMessage.value,\n inputClass: [__props.inputClass, { \"password-field__input--secure-text\": !visible.value && __props.asText }],\n minlength: minLengthWithPolicy.value,\n success: __props.success || isValid.value === true,\n trailingButtonLabel: visible.value ? unref(t)(\"Hide password\") : unref(t)(\"Show password\"),\n type: visible.value || __props.asText ? \"text\" : \"password\",\n onTrailingButtonClick: toggleVisibility\n }), createSlots({\n \"trailing-button-icon\": withCtx(() => [\n createVNode(NcIconSvgWrapper, {\n path: visible.value ? unref(mdiEyeOff) : unref(mdiEye)\n }, null, 8, [\"path\"])\n ]),\n _: 2\n }, [\n !!_ctx.$slots.icon ? {\n name: \"icon\",\n fn: withCtx(() => [\n renderSlot(_ctx.$slots, \"icon\", {}, void 0, true)\n ]),\n key: \"0\"\n } : void 0\n ]), 1040, [\"modelValue\", \"error\", \"helperText\", \"inputClass\", \"minlength\", \"success\", \"trailingButtonLabel\", \"type\"]);\n };\n }\n});\nconst NcPasswordField = /* @__PURE__ */ _export_sfc(_sfc_main, [[\"__scopeId\", \"data-v-cb828737\"]]);\nexport {\n NcPasswordField as N\n};\n//# sourceMappingURL=NcPasswordField-BFyzHTOO.mjs.map\n"],"names":["register","t29","_sfc_main","defineComponent","mergeModels","__props","__expose","__emit","modelValue","useModel","visible","props","emit","focus","select","passwordPolicy","getCapabilities","inputFieldInstance","useTemplateRef","internalHelpMessage","ref","isValid","propsToForward","computed","all","minLengthWithPolicy","watch","debounce","checkPassword","data","axios","generateOcsUrl","t","error","logger","toggleVisibility","options","_ctx","_cache","openBlock","createBlock","NcInputField","mergeProps","$event","unref","createSlots","withCtx","createVNode","NcIconSvgWrapper","mdiEyeOff","mdiEye","renderSlot","NcPasswordField","_export_sfc"],"mappings":"wgBAYAA,EAASC,CAAG,EACZ,MAAMC,EAA4BC,EAAgB,CAChD,OAAQ,kBACR,MAAuBC,EAAY,CACjC,MAAO,CAAA,EACP,WAAY,CAAE,QAAS,EAAE,EACzB,GAAI,CAAA,EACJ,MAAO,CAAA,EACP,aAAc,CAAE,KAAM,OAAO,EAC7B,YAAa,CAAA,EACb,mBAAoB,CAAE,KAAM,QAAS,QAAS,EAAI,EAClD,QAAS,CAAE,KAAM,OAAO,EACxB,MAAO,CAAE,KAAM,OAAO,EACtB,WAAY,CAAA,EACZ,SAAU,CAAE,KAAM,OAAO,EACzB,KAAM,CAAE,KAAM,OAAO,EACrB,sBAAuB,CAAE,KAAM,OAAO,EACtC,UAAW,CAAE,QAAS,MAAM,EAC5B,OAAQ,CAAE,KAAM,OAAO,CAC3B,EAAK,CACD,WAAc,CAAE,QAAS,EAAE,EAC3B,eAAkB,CAAA,EAClB,QAAW,CAAE,KAAM,QAAc,QAAS,EAAO,EACjD,iBAAoB,CAAA,CACxB,CAAG,EACD,MAAuBA,EAAY,CAAC,QAAS,SAAS,EAAG,CAAC,oBAAqB,gBAAgB,CAAC,EAChG,MAAMC,EAAS,CAAE,OAAQC,EAAU,KAAMC,GAAU,CACjD,MAAMC,EAAaC,EAASJ,EAAS,YAAY,EAC3CK,EAAUD,EAASJ,EAAS,SAAS,EACrCM,EAAQN,EACRO,EAAOL,EACbD,EAAS,CACP,MAAAO,EACA,OAAAC,CACN,CAAK,EACD,KAAM,CAAE,gBAAiBC,CAAc,EAAKC,EAAe,EACrDC,EAAqBC,EAAe,YAAY,EAChDC,EAAsBC,EAAI,EAAE,EAC5BC,EAAUD,EAAG,EACbE,EAAiBC,EAAS,IAAM,CACpC,MAAMC,EAAM,CAAE,GAAGb,CAAK,EACtB,cAAOa,EAAI,sBACX,OAAOA,EAAI,UACX,OAAOA,EAAI,OACX,OAAOA,EAAI,MACX,OAAOA,EAAI,WACX,OAAOA,EAAI,WACX,OAAOA,EAAI,QACJA,CACT,CAAC,EACKC,EAAsBF,EAAS,IAC5BZ,EAAM,YAAcA,EAAM,sBAAwBI,GAAgB,UAAY,SAAW,MACjG,EACDW,EAAMlB,EAAY,IAAM,CACtBa,EAAQ,MAAQ,OAChBF,EAAoB,MAAQ,EAC9B,CAAC,EACDO,EAAMlB,EAAYmB,EAASC,EAAe,GAAG,CAAC,EAC9C,eAAeA,GAAgB,CAC7B,GAAI,EAAA,CAACjB,EAAM,uBAAyB,CAACH,EAAW,OAGhD,GAAI,CACF,KAAM,CAAE,KAAAqB,CAAI,EAAK,MAAMC,EAAM,KAAKC,EAAe,sCAAsC,EAAG,CAAE,SAAUvB,EAAW,KAAK,CAAE,EAExH,GADAa,EAAQ,MAAQQ,EAAK,IAAI,KAAK,OAC1BA,EAAK,IAAI,KAAK,OAAQ,CACxBV,EAAoB,MAAQa,EAAE,oBAAoB,EAClDpB,EAAK,OAAO,EACZ,MACF,CACAO,EAAoB,MAAQU,EAAK,IAAI,KAAK,OAC1CjB,EAAK,SAAS,CAChB,OAASqB,EAAO,CACdC,EAAO,MAAM,oCAAqC,CAAE,MAAAD,CAAK,CAAE,CAC7D,CACF,CACA,SAASE,GAAmB,CAC1BzB,EAAQ,MAAQ,CAACA,EAAQ,KAC3B,CACA,SAASG,EAAMuB,EAAS,CACtBnB,EAAmB,MAAM,MAAMmB,CAAO,CACxC,CACA,SAAStB,GAAS,CAChBG,EAAmB,MAAM,OAAM,CACjC,CACA,MAAO,CAACoB,EAAMC,KACLC,EAAS,EAAIC,EAAYC,EAAcC,EAAWpB,EAAe,MAAO,CAC7E,IAAK,aACL,WAAYd,EAAW,MACvB,sBAAuB8B,EAAO,CAAC,IAAMA,EAAO,CAAC,EAAKK,GAAWnC,EAAW,MAAQmC,GAChF,MAAOtC,EAAQ,OAASgB,EAAQ,QAAU,GAC1C,WAAYhB,EAAQ,YAAcc,EAAoB,MACtD,WAAY,CAACd,EAAQ,WAAY,CAAE,qCAAsC,CAACK,EAAQ,OAASL,EAAQ,OAAQ,EAC3G,UAAWoB,EAAoB,MAC/B,QAASpB,EAAQ,SAAWgB,EAAQ,QAAU,GAC9C,oBAAqBX,EAAQ,MAAQkC,EAAMZ,CAAC,EAAE,eAAe,EAAIY,EAAMZ,CAAC,EAAE,eAAe,EACzF,KAAMtB,EAAQ,OAASL,EAAQ,OAAS,OAAS,WACjD,sBAAuB8B,CAC/B,CAAO,EAAGU,EAAY,CACd,uBAAwBC,EAAQ,IAAM,CACpCC,EAAYC,EAAkB,CAC5B,KAAMtC,EAAQ,MAAQkC,EAAMK,CAAS,EAAIL,EAAMM,CAAM,CACjE,EAAa,KAAM,EAAG,CAAC,MAAM,CAAC,CAC9B,CAAS,EACD,EAAG,CACX,EAAS,CACCb,EAAK,OAAO,KAAO,CACnB,KAAM,OACN,GAAIS,EAAQ,IAAM,CAChBK,EAAWd,EAAK,OAAQ,OAAQ,CAAA,EAAI,OAAQ,EAAI,CAC5D,CAAW,EACD,IAAK,GACf,EAAY,MACZ,CAAO,EAAG,KAAM,CAAC,aAAc,QAAS,aAAc,aAAc,YAAa,UAAW,sBAAuB,MAAM,CAAC,EAExH,CACF,CAAC,EACKe,GAAkCC,EAAYnD,EAAW,CAAC,CAAC,YAAa,iBAAiB,CAAC,CAAC","x_google_ignoreList":[0]} \ No newline at end of file diff --git a/dist/NcPasswordField-BFyzHTOO-7Y4psNBG.chunk.mjs.map.license b/dist/NcPasswordField-BFyzHTOO-BIm5AMSG.chunk.mjs.map.license similarity index 100% rename from dist/NcPasswordField-BFyzHTOO-7Y4psNBG.chunk.mjs.map.license rename to dist/NcPasswordField-BFyzHTOO-BIm5AMSG.chunk.mjs.map.license diff --git a/dist/NcSelectTags-I2hJaNax-B2PZ_kex.chunk.mjs b/dist/NcSelectTags-I2hJaNax-N6jSSGJD.chunk.mjs similarity index 95% rename from dist/NcSelectTags-I2hJaNax-B2PZ_kex.chunk.mjs rename to dist/NcSelectTags-I2hJaNax-N6jSSGJD.chunk.mjs index feeb3a91ac328..11bd2a7b3a4b7 100644 --- a/dist/NcSelectTags-I2hJaNax-B2PZ_kex.chunk.mjs +++ b/dist/NcSelectTags-I2hJaNax-N6jSSGJD.chunk.mjs @@ -1,4 +1,4 @@ -import{r as V,h as N,b as r,_ as x}from"./createElementId-DhjFt1I9-BmyhoOWk.chunk.mjs";import{l as g}from"./logger-D3RVzcfQ-Bt9JRPzn.chunk.mjs";import{N as c,a as T}from"./index-BDlLVKOD.chunk.mjs";import{c as O}from"./index-CkGt55pS.chunk.mjs";import{h as v}from"./index-Cp0kcsps.chunk.mjs";import{r as m,o as w,c as F,q as S,B as $,w as n,i as A,G as D,M as P,k as h,m as B}from"./Web-DYqXJUev.chunk.mjs";V(N);function u(e){let t={};if(e.nodeType===1){if(e.attributes.length>0){t["@attributes"]={};for(let s=0;s<e.attributes.length;s++){const o=e.attributes.item(s);t["@attributes"][o.nodeName]=o.nodeValue}}}else e.nodeType===3&&(t=e.nodeValue);if(e.hasChildNodes())for(let s=0;s<e.childNodes.length;s++){const o=e.childNodes.item(s),a=o.nodeName;if(typeof t[a]>"u")t[a]=u(o);else{if(typeof t[a].push>"u"){const l=t[a];t[a]=[],t[a].push(l)}t[a].push(u(o))}}return t}function I(e){let t=null;try{t=new DOMParser().parseFromString(e,"text/xml")}catch(s){g.error("[NcSelectTags] Failed to parse xml document",{error:s})}return t}function f(e){const t=u(I(e))["d:multistatus"]["d:response"],s=[];for(const o in t){const a=t[o]["d:propstat"];a["d:status"]["#text"]==="HTTP/1.1 200 OK"&&s.push({id:parseInt(a["d:prop"]["oc:id"]["#text"]),displayName:a["d:prop"]["oc:display-name"]["#text"],canAssign:a["d:prop"]["oc:can-assign"]["#text"]==="true",userAssignable:a["d:prop"]["oc:user-assignable"]["#text"]==="true",userVisible:a["d:prop"]["oc:user-visible"]["#text"]==="true"})}return s}async function L(){if(window.NextcloudVueDocs)return Promise.resolve(f(window.NextcloudVueDocs.tags));const e=await O({method:"PROPFIND",url:v("dav")+"/systemtags/",data:`<?xml version="1.0"?> +import{r as V,h as N,b as r,_ as x}from"./createElementId-DhjFt1I9-BmyhoOWk.chunk.mjs";import{l as g}from"./logger-D3RVzcfQ-BrUWOyzd.chunk.mjs";import{N as c,a as T}from"./index-BhwlPNkJ.chunk.mjs";import{c as O}from"./index-CkGt55pS.chunk.mjs";import{h as v}from"./index-Cp0kcsps.chunk.mjs";import{r as m,o as w,c as F,q as S,B as $,w as n,i as A,G as D,M as P,k as h,m as B}from"./Web-DYqXJUev.chunk.mjs";V(N);function u(e){let t={};if(e.nodeType===1){if(e.attributes.length>0){t["@attributes"]={};for(let s=0;s<e.attributes.length;s++){const o=e.attributes.item(s);t["@attributes"][o.nodeName]=o.nodeValue}}}else e.nodeType===3&&(t=e.nodeValue);if(e.hasChildNodes())for(let s=0;s<e.childNodes.length;s++){const o=e.childNodes.item(s),a=o.nodeName;if(typeof t[a]>"u")t[a]=u(o);else{if(typeof t[a].push>"u"){const l=t[a];t[a]=[],t[a].push(l)}t[a].push(u(o))}}return t}function I(e){let t=null;try{t=new DOMParser().parseFromString(e,"text/xml")}catch(s){g.error("[NcSelectTags] Failed to parse xml document",{error:s})}return t}function f(e){const t=u(I(e))["d:multistatus"]["d:response"],s=[];for(const o in t){const a=t[o]["d:propstat"];a["d:status"]["#text"]==="HTTP/1.1 200 OK"&&s.push({id:parseInt(a["d:prop"]["oc:id"]["#text"]),displayName:a["d:prop"]["oc:display-name"]["#text"],canAssign:a["d:prop"]["oc:can-assign"]["#text"]==="true",userAssignable:a["d:prop"]["oc:user-assignable"]["#text"]==="true",userVisible:a["d:prop"]["oc:user-visible"]["#text"]==="true"})}return s}async function L(){if(window.NextcloudVueDocs)return Promise.resolve(f(window.NextcloudVueDocs.tags));const e=await O({method:"PROPFIND",url:v("dav")+"/systemtags/",data:`<?xml version="1.0"?> <d:propfind xmlns:d="DAV:" xmlns:oc="http://owncloud.org/ns"> <d:prop> <oc:id /> @@ -8,4 +8,4 @@ import{r as V,h as N,b as r,_ as x}from"./createElementId-DhjFt1I9-BmyhoOWk.chun <oc:can-assign /> </d:prop> </d:propfind>`});return f(e.data)}const E={name:"NcSelectTags",components:{NcEllipsisedOption:T,NcSelect:c},props:{...c.props,fetchTags:{type:Boolean,default:!0},getOptionLabel:{type:Function,default:e=>{const{displayName:t,userVisible:s,userAssignable:o}=e;return s===!1?r("{tag} (invisible)",{tag:t}):o===!1?r("{tag} (restricted)",{tag:t}):t}},limit:{type:Number,default:5},multiple:{type:Boolean,default:!0},optionsFilter:{type:Function,default:null},passthru:{type:Boolean,default:!1},placeholder:{type:String,default:r("Select a tag")},modelValue:{type:[Number,Array,Object],default:null}," ":{}},emits:["update:modelValue"," "],data(){return{search:"",availableTags:[]}},computed:{availableOptions(){return this.optionsFilter?this.tags.filter(this.optionsFilter):this.tags},localValue(){return this.passthru?this.modelValue:this.tags.length===0?[]:this.multiple?this.modelValue.filter(e=>e!=="").map(e=>this.tags.find(t=>t.id===e)):this.tags.find(e=>e.id===this.modelValue)},propsToForward(){const e={...this.$props};return delete e.fetchTags,delete e.optionsFilter,delete e.passthru,e},tags(){return this.fetchTags?this.availableTags:this.options}},async created(){if(this.fetchTags)try{const e=await L();this.availableTags=e}catch(e){g.error("[NcSelectTags] Loading systemtags failed",e)}},methods:{handleInput(e){if(this.passthru){this.$emit("update:modelValue",e);return}this.multiple?this.$emit("update:modelValue",e.map(t=>t.id)):e===null?this.$emit("update:modelValue",null):this.$emit("update:modelValue",e.id)}}};function _(e,t,s,o,a,l){const p=m("NcEllipsisedOption"),b=m("NcSelect");return w(),F(b,B(l.propsToForward,{options:l.availableOptions,closeOnSelect:!s.multiple,modelValue:l.localValue,onSearch:t[0]||(t[0]=i=>a.search=i),"onUpdate:modelValue":l.handleInput}),S({option:n(i=>[h(p,{name:s.getOptionLabel(i),search:a.search},null,8,["name","search"])]),"selected-option":n(i=>[h(p,{name:s.getOptionLabel(i),search:a.search},null,8,["name","search"])]),_:2},[$(e.$slots,(i,d)=>({name:d,fn:n(y=>[A(e.$slots,d,D(P(y)))])}))]),1040,["options","closeOnSelect","modelValue","onUpdate:modelValue"])}const q=x(E,[["render",_]]);export{q as N}; -//# sourceMappingURL=NcSelectTags-I2hJaNax-B2PZ_kex.chunk.mjs.map +//# sourceMappingURL=NcSelectTags-I2hJaNax-N6jSSGJD.chunk.mjs.map diff --git a/dist/NcSelectTags-I2hJaNax-B2PZ_kex.chunk.mjs.license b/dist/NcSelectTags-I2hJaNax-N6jSSGJD.chunk.mjs.license similarity index 100% rename from dist/NcSelectTags-I2hJaNax-B2PZ_kex.chunk.mjs.license rename to dist/NcSelectTags-I2hJaNax-N6jSSGJD.chunk.mjs.license diff --git a/dist/NcSelectTags-I2hJaNax-B2PZ_kex.chunk.mjs.map b/dist/NcSelectTags-I2hJaNax-N6jSSGJD.chunk.mjs.map similarity index 99% rename from dist/NcSelectTags-I2hJaNax-B2PZ_kex.chunk.mjs.map rename to dist/NcSelectTags-I2hJaNax-N6jSSGJD.chunk.mjs.map index 4137b96c07c6e..82bf156d26b94 100644 --- a/dist/NcSelectTags-I2hJaNax-B2PZ_kex.chunk.mjs.map +++ b/dist/NcSelectTags-I2hJaNax-N6jSSGJD.chunk.mjs.map @@ -1 +1 @@ -{"version":3,"file":"NcSelectTags-I2hJaNax-B2PZ_kex.chunk.mjs","sources":["../node_modules/@nextcloud/vue/dist/chunks/NcSelectTags-I2hJaNax.mjs"],"sourcesContent":["import { r as register, j as t0, a as t } from \"./_l10n-wdIzZwir.mjs\";\nimport { l as logger } from \"./logger-D3RVzcfQ.mjs\";\nimport { N as NcEllipsisedOption } from \"./NcEllipsisedOption-D6Amb91K.mjs\";\nimport { N as NcSelect } from \"./NcSelect--kERLlBK.mjs\";\nimport axios from \"@nextcloud/axios\";\nimport { generateRemoteUrl } from \"@nextcloud/router\";\nimport { resolveComponent, openBlock, createBlock, mergeProps, createSlots, withCtx, createVNode, renderList, renderSlot, normalizeProps, guardReactiveProps } from \"vue\";\nimport { _ as _export_sfc } from \"./_plugin-vue_export-helper-1tPrXgE0.mjs\";\nregister(t0);\nfunction xmlToJson(xml) {\n let obj = {};\n if (xml.nodeType === 1) {\n if (xml.attributes.length > 0) {\n obj[\"@attributes\"] = {};\n for (let j = 0; j < xml.attributes.length; j++) {\n const attribute = xml.attributes.item(j);\n obj[\"@attributes\"][attribute.nodeName] = attribute.nodeValue;\n }\n }\n } else if (xml.nodeType === 3) {\n obj = xml.nodeValue;\n }\n if (xml.hasChildNodes()) {\n for (let i = 0; i < xml.childNodes.length; i++) {\n const item = xml.childNodes.item(i);\n const nodeName = item.nodeName;\n if (typeof obj[nodeName] === \"undefined\") {\n obj[nodeName] = xmlToJson(item);\n } else {\n if (typeof obj[nodeName].push === \"undefined\") {\n const old = obj[nodeName];\n obj[nodeName] = [];\n obj[nodeName].push(old);\n }\n obj[nodeName].push(xmlToJson(item));\n }\n }\n }\n return obj;\n}\nfunction parseXml(xml) {\n let dom = null;\n try {\n dom = new DOMParser().parseFromString(xml, \"text/xml\");\n } catch (error) {\n logger.error(\"[NcSelectTags] Failed to parse xml document\", { error });\n }\n return dom;\n}\nfunction xmlToTagList(xml) {\n const json = xmlToJson(parseXml(xml));\n const list = json[\"d:multistatus\"][\"d:response\"];\n const result = [];\n for (const index in list) {\n const tag = list[index][\"d:propstat\"];\n if (tag[\"d:status\"][\"#text\"] !== \"HTTP/1.1 200 OK\") {\n continue;\n }\n result.push({\n id: parseInt(tag[\"d:prop\"][\"oc:id\"][\"#text\"]),\n displayName: tag[\"d:prop\"][\"oc:display-name\"][\"#text\"],\n canAssign: tag[\"d:prop\"][\"oc:can-assign\"][\"#text\"] === \"true\",\n userAssignable: tag[\"d:prop\"][\"oc:user-assignable\"][\"#text\"] === \"true\",\n userVisible: tag[\"d:prop\"][\"oc:user-visible\"][\"#text\"] === \"true\"\n });\n }\n return result;\n}\nasync function searchTags() {\n if (window.NextcloudVueDocs) {\n return Promise.resolve(xmlToTagList(window.NextcloudVueDocs.tags));\n }\n const result = await axios({\n method: \"PROPFIND\",\n url: generateRemoteUrl(\"dav\") + \"/systemtags/\",\n data: `<?xml version=\"1.0\"?>\n\t\t\t\t\t<d:propfind xmlns:d=\"DAV:\" xmlns:oc=\"http://owncloud.org/ns\">\n\t\t\t\t\t <d:prop>\n\t\t\t\t\t\t<oc:id />\n\t\t\t\t\t\t<oc:display-name />\n\t\t\t\t\t\t<oc:user-visible />\n\t\t\t\t\t\t<oc:user-assignable />\n\t\t\t\t\t\t<oc:can-assign />\n\t\t\t\t\t </d:prop>\n\t\t\t\t\t</d:propfind>`\n });\n return xmlToTagList(result.data);\n}\nconst _sfc_main = {\n name: \"NcSelectTags\",\n components: {\n NcEllipsisedOption,\n NcSelect\n },\n props: {\n // Add NcSelect prop defaults and populate $props\n ...NcSelect.props,\n /**\n * Enable automatic fetching of tags\n *\n * If `false`, available tags must be passed using the `options` prop\n */\n fetchTags: {\n type: Boolean,\n default: true\n },\n /**\n * Callback to generate the label text\n *\n * @see https://vue-select.org/api/props.html#getoptionlabel\n */\n getOptionLabel: {\n type: Function,\n default: (option) => {\n const { displayName, userVisible, userAssignable } = option;\n if (userVisible === false) {\n return t(\"{tag} (invisible)\", { tag: displayName });\n }\n if (userAssignable === false) {\n return t(\"{tag} (restricted)\", { tag: displayName });\n }\n return displayName;\n }\n },\n /**\n * Sets the maximum number of tags to display in the dropdown list\n *\n * Because of compatibility reasons only 5 tag entries are shown by\n * default\n */\n limit: {\n type: Number,\n default: 5\n },\n /**\n * Allow selection of multiple options\n *\n * This prop automatically sets the internal `closeOnSelect` prop to\n * its boolean opposite\n *\n * @see https://vue-select.org/api/props.html#multiple\n */\n multiple: {\n type: Boolean,\n default: true\n },\n /**\n * Callback to filter available options\n */\n optionsFilter: {\n type: Function,\n default: null\n },\n /**\n * Enable passing of `value` prop and emitted `input` events as-is\n * i.e. for usage with `v-model`\n *\n * If `true`, custom internal `value` and `input` handling is disabled\n */\n passthru: {\n type: Boolean,\n default: false\n },\n /**\n * Placeholder text\n *\n * @see https://vue-select.org/api/props.html#placeholder\n */\n placeholder: {\n type: String,\n default: t(\"Select a tag\")\n },\n /**\n * Currently selected value\n */\n modelValue: {\n type: [Number, Array, Object],\n default: null\n },\n /**\n * Any available prop\n *\n * @see https://vue-select.org/api/props.html\n */\n // Not an actual prop but needed to show in vue-styleguidist docs\n // eslint-disable-next-line\n \" \": {}\n },\n emits: [\n \"update:modelValue\",\n /**\n * All events from https://vue-select.org/api/events.html\n */\n // Not an actual event but needed to show in vue-styleguidist docs\n \" \"\n ],\n data() {\n return {\n search: \"\",\n availableTags: []\n };\n },\n computed: {\n availableOptions() {\n if (this.optionsFilter) {\n return this.tags.filter(this.optionsFilter);\n }\n return this.tags;\n },\n localValue() {\n if (this.passthru) {\n return this.modelValue;\n }\n if (this.tags.length === 0) {\n return [];\n }\n if (this.multiple) {\n return this.modelValue.filter((tag) => tag !== \"\").map((id) => this.tags.find((tag2) => tag2.id === id));\n } else {\n return this.tags.find((tag) => tag.id === this.modelValue);\n }\n },\n propsToForward() {\n const propsToForward = { ...this.$props };\n delete propsToForward.fetchTags;\n delete propsToForward.optionsFilter;\n delete propsToForward.passthru;\n return propsToForward;\n },\n tags() {\n if (!this.fetchTags) {\n return this.options;\n }\n return this.availableTags;\n }\n },\n async created() {\n if (!this.fetchTags) {\n return;\n }\n try {\n const result = await searchTags();\n this.availableTags = result;\n } catch (error) {\n logger.error(\"[NcSelectTags] Loading systemtags failed\", error);\n }\n },\n methods: {\n handleInput(value) {\n if (this.passthru) {\n this.$emit(\"update:modelValue\", value);\n return;\n }\n if (this.multiple) {\n this.$emit(\"update:modelValue\", value.map((element) => element.id));\n } else {\n if (value === null) {\n this.$emit(\"update:modelValue\", null);\n } else {\n this.$emit(\"update:modelValue\", value.id);\n }\n }\n }\n }\n};\nfunction _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {\n const _component_NcEllipsisedOption = resolveComponent(\"NcEllipsisedOption\");\n const _component_NcSelect = resolveComponent(\"NcSelect\");\n return openBlock(), createBlock(_component_NcSelect, mergeProps($options.propsToForward, {\n options: $options.availableOptions,\n closeOnSelect: !$props.multiple,\n modelValue: $options.localValue,\n onSearch: _cache[0] || (_cache[0] = ($event) => $data.search = $event),\n \"onUpdate:modelValue\": $options.handleInput\n }), createSlots({\n option: withCtx((option) => [\n createVNode(_component_NcEllipsisedOption, {\n name: $props.getOptionLabel(option),\n search: $data.search\n }, null, 8, [\"name\", \"search\"])\n ]),\n \"selected-option\": withCtx((selectedOption) => [\n createVNode(_component_NcEllipsisedOption, {\n name: $props.getOptionLabel(selectedOption),\n search: $data.search\n }, null, 8, [\"name\", \"search\"])\n ]),\n _: 2\n }, [\n renderList(_ctx.$slots, (_, name) => {\n return {\n name,\n fn: withCtx((data) => [\n renderSlot(_ctx.$slots, name, normalizeProps(guardReactiveProps(data)))\n ])\n };\n })\n ]), 1040, [\"options\", \"closeOnSelect\", \"modelValue\", \"onUpdate:modelValue\"]);\n}\nconst NcSelectTags = /* @__PURE__ */ _export_sfc(_sfc_main, [[\"render\", _sfc_render]]);\nexport {\n NcSelectTags as N\n};\n//# sourceMappingURL=NcSelectTags-I2hJaNax.mjs.map\n"],"names":["register","t0","xmlToJson","xml","obj","j","attribute","i","item","nodeName","old","parseXml","dom","error","logger","xmlToTagList","list","result","index","tag","searchTags","axios","generateRemoteUrl","_sfc_main","NcEllipsisedOption","NcSelect","option","displayName","userVisible","userAssignable","t","id","tag2","propsToForward","value","element","_sfc_render","_ctx","_cache","$props","$setup","$data","$options","_component_NcEllipsisedOption","resolveComponent","_component_NcSelect","openBlock","createBlock","mergeProps","$event","createSlots","withCtx","createVNode","selectedOption","renderList","_","name","data","renderSlot","normalizeProps","guardReactiveProps","NcSelectTags","_export_sfc"],"mappings":"uZAQAA,EAASC,CAAE,EACX,SAASC,EAAUC,EAAK,CACtB,IAAIC,EAAM,CAAA,EACV,GAAID,EAAI,WAAa,GACnB,GAAIA,EAAI,WAAW,OAAS,EAAG,CAC7BC,EAAI,aAAa,EAAI,CAAA,EACrB,QAASC,EAAI,EAAGA,EAAIF,EAAI,WAAW,OAAQE,IAAK,CAC9C,MAAMC,EAAYH,EAAI,WAAW,KAAKE,CAAC,EACvCD,EAAI,aAAa,EAAEE,EAAU,QAAQ,EAAIA,EAAU,SACrD,CACF,OACSH,EAAI,WAAa,IAC1BC,EAAMD,EAAI,WAEZ,GAAIA,EAAI,gBACN,QAASI,EAAI,EAAGA,EAAIJ,EAAI,WAAW,OAAQI,IAAK,CAC9C,MAAMC,EAAOL,EAAI,WAAW,KAAKI,CAAC,EAC5BE,EAAWD,EAAK,SACtB,GAAI,OAAOJ,EAAIK,CAAQ,EAAM,IAC3BL,EAAIK,CAAQ,EAAIP,EAAUM,CAAI,MACzB,CACL,GAAI,OAAOJ,EAAIK,CAAQ,EAAE,KAAS,IAAa,CAC7C,MAAMC,EAAMN,EAAIK,CAAQ,EACxBL,EAAIK,CAAQ,EAAI,CAAA,EAChBL,EAAIK,CAAQ,EAAE,KAAKC,CAAG,CACxB,CACAN,EAAIK,CAAQ,EAAE,KAAKP,EAAUM,CAAI,CAAC,CACpC,CACF,CAEF,OAAOJ,CACT,CACA,SAASO,EAASR,EAAK,CACrB,IAAIS,EAAM,KACV,GAAI,CACFA,EAAM,IAAI,UAAS,EAAG,gBAAgBT,EAAK,UAAU,CACvD,OAASU,EAAO,CACdC,EAAO,MAAM,8CAA+C,CAAE,MAAAD,CAAK,CAAE,CACvE,CACA,OAAOD,CACT,CACA,SAASG,EAAaZ,EAAK,CAEzB,MAAMa,EADOd,EAAUS,EAASR,CAAG,CAAC,EAClB,eAAe,EAAE,YAAY,EACzCc,EAAS,CAAA,EACf,UAAWC,KAASF,EAAM,CACxB,MAAMG,EAAMH,EAAKE,CAAK,EAAE,YAAY,EAChCC,EAAI,UAAU,EAAE,OAAO,IAAM,mBAGjCF,EAAO,KAAK,CACV,GAAI,SAASE,EAAI,QAAQ,EAAE,OAAO,EAAE,OAAO,CAAC,EAC5C,YAAaA,EAAI,QAAQ,EAAE,iBAAiB,EAAE,OAAO,EACrD,UAAWA,EAAI,QAAQ,EAAE,eAAe,EAAE,OAAO,IAAM,OACvD,eAAgBA,EAAI,QAAQ,EAAE,oBAAoB,EAAE,OAAO,IAAM,OACjE,YAAaA,EAAI,QAAQ,EAAE,iBAAiB,EAAE,OAAO,IAAM,MACjE,CAAK,CACH,CACA,OAAOF,CACT,CACA,eAAeG,GAAa,CAC1B,GAAI,OAAO,iBACT,OAAO,QAAQ,QAAQL,EAAa,OAAO,iBAAiB,IAAI,CAAC,EAEnE,MAAME,EAAS,MAAMI,EAAM,CACzB,OAAQ,WACR,IAAKC,EAAkB,KAAK,EAAI,eAChC,KAAM;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,mBAUV,CAAG,EACD,OAAOP,EAAaE,EAAO,IAAI,CACjC,CACA,MAAMM,EAAY,CAChB,KAAM,eACN,WAAY,CACV,mBAAAC,EACA,SAAAC,CACJ,EACE,MAAO,CAEL,GAAGA,EAAS,MAMZ,UAAW,CACT,KAAM,QACN,QAAS,EACf,EAMI,eAAgB,CACd,KAAM,SACN,QAAUC,GAAW,CACnB,KAAM,CAAE,YAAAC,EAAa,YAAAC,EAAa,eAAAC,CAAc,EAAKH,EACrD,OAAIE,IAAgB,GACXE,EAAE,oBAAqB,CAAE,IAAKH,CAAW,CAAE,EAEhDE,IAAmB,GACdC,EAAE,qBAAsB,CAAE,IAAKH,CAAW,CAAE,EAE9CA,CACT,CACN,EAOI,MAAO,CACL,KAAM,OACN,QAAS,CACf,EASI,SAAU,CACR,KAAM,QACN,QAAS,EACf,EAII,cAAe,CACb,KAAM,SACN,QAAS,IACf,EAOI,SAAU,CACR,KAAM,QACN,QAAS,EACf,EAMI,YAAa,CACX,KAAM,OACN,QAASG,EAAE,cAAc,CAC/B,EAII,WAAY,CACV,KAAM,CAAC,OAAQ,MAAO,MAAM,EAC5B,QAAS,IACf,EAQI,IAAK,CAAA,CACT,EACE,MAAO,CACL,oBAKA,GACJ,EACE,MAAO,CACL,MAAO,CACL,OAAQ,GACR,cAAe,CAAA,CACrB,CACE,EACA,SAAU,CACR,kBAAmB,CACjB,OAAI,KAAK,cACA,KAAK,KAAK,OAAO,KAAK,aAAa,EAErC,KAAK,IACd,EACA,YAAa,CACX,OAAI,KAAK,SACA,KAAK,WAEV,KAAK,KAAK,SAAW,EAChB,CAAA,EAEL,KAAK,SACA,KAAK,WAAW,OAAQX,GAAQA,IAAQ,EAAE,EAAE,IAAKY,GAAO,KAAK,KAAK,KAAMC,GAASA,EAAK,KAAOD,CAAE,CAAC,EAEhG,KAAK,KAAK,KAAMZ,GAAQA,EAAI,KAAO,KAAK,UAAU,CAE7D,EACA,gBAAiB,CACf,MAAMc,EAAiB,CAAE,GAAG,KAAK,MAAM,EACvC,cAAOA,EAAe,UACtB,OAAOA,EAAe,cACtB,OAAOA,EAAe,SACfA,CACT,EACA,MAAO,CACL,OAAK,KAAK,UAGH,KAAK,cAFH,KAAK,OAGhB,CACJ,EACE,MAAM,SAAU,CACd,GAAK,KAAK,UAGV,GAAI,CACF,MAAMhB,EAAS,MAAMG,EAAU,EAC/B,KAAK,cAAgBH,CACvB,OAASJ,EAAO,CACdC,EAAO,MAAM,2CAA4CD,CAAK,CAChE,CACF,EACA,QAAS,CACP,YAAYqB,EAAO,CACjB,GAAI,KAAK,SAAU,CACjB,KAAK,MAAM,oBAAqBA,CAAK,EACrC,MACF,CACI,KAAK,SACP,KAAK,MAAM,oBAAqBA,EAAM,IAAKC,GAAYA,EAAQ,EAAE,CAAC,EAE9DD,IAAU,KACZ,KAAK,MAAM,oBAAqB,IAAI,EAEpC,KAAK,MAAM,oBAAqBA,EAAM,EAAE,CAG9C,CACJ,CACA,EACA,SAASE,EAAYC,EAAMC,EAAQC,EAAQC,EAAQC,EAAOC,EAAU,CAClE,MAAMC,EAAgCC,EAAiB,oBAAoB,EACrEC,EAAsBD,EAAiB,UAAU,EACvD,OAAOE,EAAS,EAAIC,EAAYF,EAAqBG,EAAWN,EAAS,eAAgB,CACvF,QAASA,EAAS,iBAClB,cAAe,CAACH,EAAO,SACvB,WAAYG,EAAS,WACrB,SAAUJ,EAAO,CAAC,IAAMA,EAAO,CAAC,EAAKW,GAAWR,EAAM,OAASQ,GAC/D,sBAAuBP,EAAS,WACpC,CAAG,EAAGQ,EAAY,CACd,OAAQC,EAASzB,GAAW,CAC1B0B,EAAYT,EAA+B,CACzC,KAAMJ,EAAO,eAAeb,CAAM,EAClC,OAAQe,EAAM,MACtB,EAAS,KAAM,EAAG,CAAC,OAAQ,QAAQ,CAAC,CACpC,CAAK,EACD,kBAAmBU,EAASE,GAAmB,CAC7CD,EAAYT,EAA+B,CACzC,KAAMJ,EAAO,eAAec,CAAc,EAC1C,OAAQZ,EAAM,MACtB,EAAS,KAAM,EAAG,CAAC,OAAQ,QAAQ,CAAC,CACpC,CAAK,EACD,EAAG,CACP,EAAK,CACDa,EAAWjB,EAAK,OAAQ,CAACkB,EAAGC,KACnB,CACL,KAAAA,EACA,GAAIL,EAASM,GAAS,CACpBC,EAAWrB,EAAK,OAAQmB,EAAMG,EAAeC,EAAmBH,CAAI,CAAC,CAAC,CAChF,CAAS,CACT,EACK,CACL,CAAG,EAAG,KAAM,CAAC,UAAW,gBAAiB,aAAc,qBAAqB,CAAC,CAC7E,CACK,MAACI,EAA+BC,EAAYvC,EAAW,CAAC,CAAC,SAAUa,CAAW,CAAC,CAAC","x_google_ignoreList":[0]} \ No newline at end of file +{"version":3,"file":"NcSelectTags-I2hJaNax-N6jSSGJD.chunk.mjs","sources":["../node_modules/@nextcloud/vue/dist/chunks/NcSelectTags-I2hJaNax.mjs"],"sourcesContent":["import { r as register, j as t0, a as t } from \"./_l10n-wdIzZwir.mjs\";\nimport { l as logger } from \"./logger-D3RVzcfQ.mjs\";\nimport { N as NcEllipsisedOption } from \"./NcEllipsisedOption-D6Amb91K.mjs\";\nimport { N as NcSelect } from \"./NcSelect--kERLlBK.mjs\";\nimport axios from \"@nextcloud/axios\";\nimport { generateRemoteUrl } from \"@nextcloud/router\";\nimport { resolveComponent, openBlock, createBlock, mergeProps, createSlots, withCtx, createVNode, renderList, renderSlot, normalizeProps, guardReactiveProps } from \"vue\";\nimport { _ as _export_sfc } from \"./_plugin-vue_export-helper-1tPrXgE0.mjs\";\nregister(t0);\nfunction xmlToJson(xml) {\n let obj = {};\n if (xml.nodeType === 1) {\n if (xml.attributes.length > 0) {\n obj[\"@attributes\"] = {};\n for (let j = 0; j < xml.attributes.length; j++) {\n const attribute = xml.attributes.item(j);\n obj[\"@attributes\"][attribute.nodeName] = attribute.nodeValue;\n }\n }\n } else if (xml.nodeType === 3) {\n obj = xml.nodeValue;\n }\n if (xml.hasChildNodes()) {\n for (let i = 0; i < xml.childNodes.length; i++) {\n const item = xml.childNodes.item(i);\n const nodeName = item.nodeName;\n if (typeof obj[nodeName] === \"undefined\") {\n obj[nodeName] = xmlToJson(item);\n } else {\n if (typeof obj[nodeName].push === \"undefined\") {\n const old = obj[nodeName];\n obj[nodeName] = [];\n obj[nodeName].push(old);\n }\n obj[nodeName].push(xmlToJson(item));\n }\n }\n }\n return obj;\n}\nfunction parseXml(xml) {\n let dom = null;\n try {\n dom = new DOMParser().parseFromString(xml, \"text/xml\");\n } catch (error) {\n logger.error(\"[NcSelectTags] Failed to parse xml document\", { error });\n }\n return dom;\n}\nfunction xmlToTagList(xml) {\n const json = xmlToJson(parseXml(xml));\n const list = json[\"d:multistatus\"][\"d:response\"];\n const result = [];\n for (const index in list) {\n const tag = list[index][\"d:propstat\"];\n if (tag[\"d:status\"][\"#text\"] !== \"HTTP/1.1 200 OK\") {\n continue;\n }\n result.push({\n id: parseInt(tag[\"d:prop\"][\"oc:id\"][\"#text\"]),\n displayName: tag[\"d:prop\"][\"oc:display-name\"][\"#text\"],\n canAssign: tag[\"d:prop\"][\"oc:can-assign\"][\"#text\"] === \"true\",\n userAssignable: tag[\"d:prop\"][\"oc:user-assignable\"][\"#text\"] === \"true\",\n userVisible: tag[\"d:prop\"][\"oc:user-visible\"][\"#text\"] === \"true\"\n });\n }\n return result;\n}\nasync function searchTags() {\n if (window.NextcloudVueDocs) {\n return Promise.resolve(xmlToTagList(window.NextcloudVueDocs.tags));\n }\n const result = await axios({\n method: \"PROPFIND\",\n url: generateRemoteUrl(\"dav\") + \"/systemtags/\",\n data: `<?xml version=\"1.0\"?>\n\t\t\t\t\t<d:propfind xmlns:d=\"DAV:\" xmlns:oc=\"http://owncloud.org/ns\">\n\t\t\t\t\t <d:prop>\n\t\t\t\t\t\t<oc:id />\n\t\t\t\t\t\t<oc:display-name />\n\t\t\t\t\t\t<oc:user-visible />\n\t\t\t\t\t\t<oc:user-assignable />\n\t\t\t\t\t\t<oc:can-assign />\n\t\t\t\t\t </d:prop>\n\t\t\t\t\t</d:propfind>`\n });\n return xmlToTagList(result.data);\n}\nconst _sfc_main = {\n name: \"NcSelectTags\",\n components: {\n NcEllipsisedOption,\n NcSelect\n },\n props: {\n // Add NcSelect prop defaults and populate $props\n ...NcSelect.props,\n /**\n * Enable automatic fetching of tags\n *\n * If `false`, available tags must be passed using the `options` prop\n */\n fetchTags: {\n type: Boolean,\n default: true\n },\n /**\n * Callback to generate the label text\n *\n * @see https://vue-select.org/api/props.html#getoptionlabel\n */\n getOptionLabel: {\n type: Function,\n default: (option) => {\n const { displayName, userVisible, userAssignable } = option;\n if (userVisible === false) {\n return t(\"{tag} (invisible)\", { tag: displayName });\n }\n if (userAssignable === false) {\n return t(\"{tag} (restricted)\", { tag: displayName });\n }\n return displayName;\n }\n },\n /**\n * Sets the maximum number of tags to display in the dropdown list\n *\n * Because of compatibility reasons only 5 tag entries are shown by\n * default\n */\n limit: {\n type: Number,\n default: 5\n },\n /**\n * Allow selection of multiple options\n *\n * This prop automatically sets the internal `closeOnSelect` prop to\n * its boolean opposite\n *\n * @see https://vue-select.org/api/props.html#multiple\n */\n multiple: {\n type: Boolean,\n default: true\n },\n /**\n * Callback to filter available options\n */\n optionsFilter: {\n type: Function,\n default: null\n },\n /**\n * Enable passing of `value` prop and emitted `input` events as-is\n * i.e. for usage with `v-model`\n *\n * If `true`, custom internal `value` and `input` handling is disabled\n */\n passthru: {\n type: Boolean,\n default: false\n },\n /**\n * Placeholder text\n *\n * @see https://vue-select.org/api/props.html#placeholder\n */\n placeholder: {\n type: String,\n default: t(\"Select a tag\")\n },\n /**\n * Currently selected value\n */\n modelValue: {\n type: [Number, Array, Object],\n default: null\n },\n /**\n * Any available prop\n *\n * @see https://vue-select.org/api/props.html\n */\n // Not an actual prop but needed to show in vue-styleguidist docs\n // eslint-disable-next-line\n \" \": {}\n },\n emits: [\n \"update:modelValue\",\n /**\n * All events from https://vue-select.org/api/events.html\n */\n // Not an actual event but needed to show in vue-styleguidist docs\n \" \"\n ],\n data() {\n return {\n search: \"\",\n availableTags: []\n };\n },\n computed: {\n availableOptions() {\n if (this.optionsFilter) {\n return this.tags.filter(this.optionsFilter);\n }\n return this.tags;\n },\n localValue() {\n if (this.passthru) {\n return this.modelValue;\n }\n if (this.tags.length === 0) {\n return [];\n }\n if (this.multiple) {\n return this.modelValue.filter((tag) => tag !== \"\").map((id) => this.tags.find((tag2) => tag2.id === id));\n } else {\n return this.tags.find((tag) => tag.id === this.modelValue);\n }\n },\n propsToForward() {\n const propsToForward = { ...this.$props };\n delete propsToForward.fetchTags;\n delete propsToForward.optionsFilter;\n delete propsToForward.passthru;\n return propsToForward;\n },\n tags() {\n if (!this.fetchTags) {\n return this.options;\n }\n return this.availableTags;\n }\n },\n async created() {\n if (!this.fetchTags) {\n return;\n }\n try {\n const result = await searchTags();\n this.availableTags = result;\n } catch (error) {\n logger.error(\"[NcSelectTags] Loading systemtags failed\", error);\n }\n },\n methods: {\n handleInput(value) {\n if (this.passthru) {\n this.$emit(\"update:modelValue\", value);\n return;\n }\n if (this.multiple) {\n this.$emit(\"update:modelValue\", value.map((element) => element.id));\n } else {\n if (value === null) {\n this.$emit(\"update:modelValue\", null);\n } else {\n this.$emit(\"update:modelValue\", value.id);\n }\n }\n }\n }\n};\nfunction _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {\n const _component_NcEllipsisedOption = resolveComponent(\"NcEllipsisedOption\");\n const _component_NcSelect = resolveComponent(\"NcSelect\");\n return openBlock(), createBlock(_component_NcSelect, mergeProps($options.propsToForward, {\n options: $options.availableOptions,\n closeOnSelect: !$props.multiple,\n modelValue: $options.localValue,\n onSearch: _cache[0] || (_cache[0] = ($event) => $data.search = $event),\n \"onUpdate:modelValue\": $options.handleInput\n }), createSlots({\n option: withCtx((option) => [\n createVNode(_component_NcEllipsisedOption, {\n name: $props.getOptionLabel(option),\n search: $data.search\n }, null, 8, [\"name\", \"search\"])\n ]),\n \"selected-option\": withCtx((selectedOption) => [\n createVNode(_component_NcEllipsisedOption, {\n name: $props.getOptionLabel(selectedOption),\n search: $data.search\n }, null, 8, [\"name\", \"search\"])\n ]),\n _: 2\n }, [\n renderList(_ctx.$slots, (_, name) => {\n return {\n name,\n fn: withCtx((data) => [\n renderSlot(_ctx.$slots, name, normalizeProps(guardReactiveProps(data)))\n ])\n };\n })\n ]), 1040, [\"options\", \"closeOnSelect\", \"modelValue\", \"onUpdate:modelValue\"]);\n}\nconst NcSelectTags = /* @__PURE__ */ _export_sfc(_sfc_main, [[\"render\", _sfc_render]]);\nexport {\n NcSelectTags as N\n};\n//# sourceMappingURL=NcSelectTags-I2hJaNax.mjs.map\n"],"names":["register","t0","xmlToJson","xml","obj","j","attribute","i","item","nodeName","old","parseXml","dom","error","logger","xmlToTagList","list","result","index","tag","searchTags","axios","generateRemoteUrl","_sfc_main","NcEllipsisedOption","NcSelect","option","displayName","userVisible","userAssignable","t","id","tag2","propsToForward","value","element","_sfc_render","_ctx","_cache","$props","$setup","$data","$options","_component_NcEllipsisedOption","resolveComponent","_component_NcSelect","openBlock","createBlock","mergeProps","$event","createSlots","withCtx","createVNode","selectedOption","renderList","_","name","data","renderSlot","normalizeProps","guardReactiveProps","NcSelectTags","_export_sfc"],"mappings":"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","x_google_ignoreList":[0]} \ No newline at end of file diff --git a/dist/NcSelectTags-I2hJaNax-B2PZ_kex.chunk.mjs.map.license b/dist/NcSelectTags-I2hJaNax-N6jSSGJD.chunk.mjs.map.license similarity index 100% rename from dist/NcSelectTags-I2hJaNax-B2PZ_kex.chunk.mjs.map.license rename to dist/NcSelectTags-I2hJaNax-N6jSSGJD.chunk.mjs.map.license diff --git a/dist/NcTextArea-Dxzj4zdb-cEtDIZuj.chunk.mjs b/dist/NcTextArea-Dxzj4zdb-DLw_yRcD.chunk.mjs similarity index 98% rename from dist/NcTextArea-Dxzj4zdb-cEtDIZuj.chunk.mjs rename to dist/NcTextArea-Dxzj4zdb-DLw_yRcD.chunk.mjs index a8b69422ecc18..0de4bb6ccc39a 100644 --- a/dist/NcTextArea-Dxzj4zdb-cEtDIZuj.chunk.mjs +++ b/dist/NcTextArea-Dxzj4zdb-DLw_yRcD.chunk.mjs @@ -1,4 +1,4 @@ -import{r as w,_ as N,b as F,c as at,O as ba,N as Be,P as fa,Q as va,t as ya,R as Ca,S as Aa,u as ka,T as _a,U as Ea,V as Gt,W as Ta,X as Sa,Y as Ba,Z as La,l as Na,$ as Ia,a0 as wa,a1 as xa,a2 as $a,a3 as Fa}from"./createElementId-DhjFt1I9-BmyhoOWk.chunk.mjs";import{e as Da,F as Qt,G as Zt,d as Yt,b as Lt,H as Oa,p as Ra,J as za}from"./NcModal-DiDvgcU8-7_SNLMd-.chunk.mjs";import{o as u,f as d,t as D,h as f,g as v,i as S,b as J,V as Jt,ak as Pa,p as Nt,l as ee,E as Ma,z as be,S as Ha,ai as Ua,y as T,c as E,w as B,a6 as M,k as _,u as P,v as Le,n as Ce,m as U,r as A,J as X,aj as ja,L as I,j as it,G as Va,M as Ka,C as qa,x as Wa,s as fe,D as Ga,af as Mt,ae as Qa,O as Xt,K as dt,T as Za,F as Ya,B as Ja,ad as Xa,I as ei}from"./Web-DYqXJUev.chunk.mjs";import{s as ti,f as pt,u as ai,d as ii}from"./index-Cp0kcsps.chunk.mjs";import{g as oe,F as ni,G as si,N as nt,l as ea,i as ht,e as oi,f as ri}from"./logger-D3RVzcfQ-Bt9JRPzn.chunk.mjs";import{H as li,C as ui}from"./NcContent-BYh5hWDN-BPQwUlVv.chunk.mjs";import{I as It,C as ci,_ as di,N as pi}from"./index-BDlLVKOD.chunk.mjs";import{N as hi}from"./PencilOutline-DhyEf5vr.chunk.mjs";import{N as ta}from"./TrashCanOutline-BU3aqDG_.chunk.mjs";import{_ as aa}from"./TrayArrowDown-Fnpm9Yo9.chunk.mjs";import{N as gi}from"./NcInputField-5Sg6EUP6-DXw-ZWiv.chunk.mjs";import{e as ia,b as mi}from"./translation-DoG5ZELJ-WOan4U8V.chunk.mjs";import"./index-CmDAUQql.chunk.mjs";import{a as bi,b as fi,N as vi}from"./NcAvatar-1KxMUN7V-X_YNB4Fv.chunk.mjs";import{N as yi}from"./NcEmptyContent-CGAPqk4S-LFG8iXZZ.chunk.mjs";import{P as Ci}from"./NcBreadcrumbs-B4eyDS9i-BkuFqTyn.chunk.mjs";import"./ArrowRight-CSlQTlWs.chunk.mjs";import"./index-CkGt55pS.chunk.mjs";import{g as Ai}from"./public-C1mLBHT3.chunk.mjs";w();const ki=J({name:"NcActionButtonGroup",inject:{isInSemanticMenu:{from:Da,default:!1}},props:{name:{required:!1,default:void 0,type:String}},setup(){return{labelId:at()}},methods:{t:F}}),_i=["role"],Ei=["id"],Ti=["aria-labelledby"];function Si(e,a,t,s,n,i){return u(),d("li",{class:"nc-button-group-base",role:e.isInSemanticMenu&&"presentation"},[e.name?(u(),d("div",{key:0,id:e.labelId},D(e.name),9,Ei)):f("",!0),v("ul",{class:"nc-button-group-content",role:"group","aria-labelledby":e.name?e.labelId:void 0},[S(e.$slots,"default")],8,Ti)],8,_i)}const _o=N(ki,[["render",Si],["__scopeId","data-v-6a2b8de0"]]),Bi={name:"NcAppNavigationList"},Li={class:"app-navigation-list"};function Ni(e,a,t,s,n,i){return u(),d("ul",Li,[S(e.$slots,"default",{},void 0,!0)])}const Ii=N(Bi,[["render",Ni],["__scopeId","data-v-d72957ed"]]);w(ba);const wi={class:"app-navigation-toggle-wrapper"},xi=J({__name:"NcAppNavigationToggle",props:{open:{type:Boolean,required:!0},openModifiers:{}},emits:["update:open"],setup(e){const a=Ce(e,"open"),t=Le(()=>a.value?F("Close navigation"):F("Open navigation"));return(s,n)=>(u(),d("div",wi,[_(P(nt),{class:"app-navigation-toggle","aria-controls":"app-navigation-vue","aria-expanded":a.value?"true":"false","aria-label":t.value,title:t.value,variant:"tertiary",onClick:n[0]||(n[0]=i=>a.value=!a.value)},{icon:B(()=>[_(Be,{path:a.value?P(ni):P(si)},null,8,["path"])]),_:1},8,["aria-expanded","aria-label","title"])]))}}),$i=N(xi,[["__scopeId","data-v-5a15295d"]]),Fi=["aria-hidden","aria-label","aria-labelledby","inert"],Di={class:"app-navigation__search"},Oi=J({__name:"NcAppNavigation",props:{ariaLabel:{},ariaLabelledby:{}},setup(e){const a=e;let t;const s=Jt(li,()=>Pa(),!1),n=Nt("appNavigationContainer"),i=Yt(),o=ee(!i.value),l=Le(()=>i.value&&o.value);Ma(()=>{!a.ariaLabel&&a.ariaLabelledby}),be(i,()=>{o.value=!i.value}),be(l,()=>{g()}),Ha(()=>{s(!0),ti("toggle-navigation",h),pt("navigation-toggled",{open:o.value}),t=Qt(n.value,{allowOutsideClick:!0,clickOutsideDeactivates:()=>(i.value&&(t.deactivate({returnFocus:!1}),p(!1)),!1),fallbackFocus:n.value,trapStack:Zt(),escapeDeactivates:!1}),g()}),Ua(()=>{s(!1),ai("toggle-navigation",h),t.deactivate()});function p(m){if(o.value===m){pt("navigation-toggled",{open:o.value});return}o.value=m===void 0?!o.value:m;const y=getComputedStyle(document.body),x=parseInt(y.getPropertyValue("--animation-quick"))||100;setTimeout(()=>{pt("navigation-toggled",{open:o.value})},1.5*x)}function h({open:m}){return p(m)}function g(){l.value?t.activate():t.deactivate()}function c(){i.value&&p(!1)}return(m,y)=>(u(),d("div",{ref:"appNavigationContainer",class:T(["app-navigation",{"app-navigation--closed":!o.value,"app-navigation--legacy":P(oe)}])},[v("nav",{id:"app-navigation-vue","aria-hidden":o.value?"false":"true","aria-label":e.ariaLabel||void 0,"aria-labelledby":e.ariaLabelledby||void 0,class:"app-navigation__content",inert:!o.value||void 0,onKeydown:M(c,["esc"])},[v("div",Di,[S(m.$slots,"search",{},void 0,!0)]),v("div",{class:T(["app-navigation__body",{"app-navigation__body--no-list":!m.$slots.list}])},[S(m.$slots,"default",{},void 0,!0)],2),m.$slots.list?(u(),E(Ii,{key:0,class:"app-navigation__list"},{default:B(()=>[S(m.$slots,"list",{},void 0,!0)]),_:3})):f("",!0),S(m.$slots,"footer",{},void 0,!0)],40,Fi),_($i,{open:o.value,"onUpdate:open":p},null,8,["open"])],2))}}),Eo=N(Oi,[["__scopeId","data-v-1344f70d"]]);({...Lt.props});const Ri={name:"ChevronUpIcon",emits:["click"],props:{title:{type:String},fillColor:{type:String,default:"currentColor"},size:{type:Number,default:24}}},zi=["aria-hidden","aria-label"],Pi=["fill","width","height"],Mi={d:"M7.41,15.41L12,10.83L16.59,15.41L18,14L12,8L6,14L7.41,15.41Z"},Hi={key:0};function Ui(e,a,t,s,n,i){return u(),d("span",U(e.$attrs,{"aria-hidden":t.title?null:"true","aria-label":t.title,class:"material-design-icon chevron-up-icon",role:"img",onClick:a[0]||(a[0]=o=>e.$emit("click",o))}),[(u(),d("svg",{fill:t.fillColor,class:"material-design-icon__svg",width:t.size,height:t.size,viewBox:"0 0 24 24"},[v("path",Mi,[t.title?(u(),d("title",Hi,D(t.title),1)):f("",!0)])],8,Pi))],16,zi)}const ji=N(Ri,[["render",Ui]]),Vi={name:"ArrowRightIcon",emits:["click"],props:{title:{type:String},fillColor:{type:String,default:"currentColor"},size:{type:Number,default:24}}},Ki=["aria-hidden","aria-label"],qi=["fill","width","height"],Wi={d:"M4,11V13H16L10.5,18.5L11.92,19.92L19.84,12L11.92,4.08L10.5,5.5L16,11H4Z"},Gi={key:0};function Qi(e,a,t,s,n,i){return u(),d("span",U(e.$attrs,{"aria-hidden":t.title?null:"true","aria-label":t.title,class:"material-design-icon arrow-right-icon",role:"img",onClick:a[0]||(a[0]=o=>e.$emit("click",o))}),[(u(),d("svg",{fill:t.fillColor,class:"material-design-icon__svg",width:t.size,height:t.size,viewBox:"0 0 24 24"},[v("path",Wi,[t.title?(u(),d("title",Gi,D(t.title),1)):f("",!0)])],8,qi))],16,Ki)}const na=N(Vi,[["render",Qi]]);w(fa);const Zi={name:"NcInputConfirmCancel",components:{IconArrowRight:na,IconClose:It,NcButton:nt},props:{primary:{default:!1,type:Boolean},placeholder:{default:"",type:String},modelValue:{default:"",type:String}},emits:["cancel","confirm","update:modelValue"],setup(){return{isLegacy34:oe}},data(){return{labelConfirm:F("Confirm changes"),labelCancel:F("Cancel changes")}},computed:{valueModel:{get(){return this.modelValue},set(e){this.$emit("update:modelValue",e)}}},methods:{confirm(){this.$emit("confirm")},cancel(){this.$emit("cancel")},focusInput(){this.$refs.input.focus()}}},Yi=["placeholder"];function Ji(e,a,t,s,n,i){const o=A("IconArrowRight"),l=A("NcButton"),p=A("IconClose");return u(),d("div",{class:T(["app-navigation-input-confirm",{"app-navigation-input-confirm--legacy":s.isLegacy34}])},[v("form",{onSubmit:a[1]||(a[1]=I((...h)=>i.confirm&&i.confirm(...h),["prevent"])),onKeydown:a[2]||(a[2]=M(I((...h)=>i.cancel&&i.cancel(...h),["exact","stop","prevent"]),["esc"])),onClick:a[3]||(a[3]=I(()=>{},["stop","prevent"]))},[X(v("input",{ref:"input","onUpdate:modelValue":a[0]||(a[0]=h=>i.valueModel=h),type:"text",class:"app-navigation-input-confirm__input",placeholder:t.placeholder},null,8,Yi),[[ja,i.valueModel]]),_(l,{"aria-label":n.labelConfirm,type:"submit",variant:"primary",onClick:I(i.confirm,["stop","prevent"])},{icon:B(()=>[_(o,{size:20})]),_:1},8,["aria-label","onClick"]),_(l,{"aria-label":n.labelCancel,type:"reset",variant:t.primary?"primary":"tertiary",onClick:I(i.cancel,["stop","prevent"])},{icon:B(()=>[_(p,{size:20})]),_:1},8,["aria-label","variant","onClick"])],32)],2)}const Xi=N(Zi,[["render",Ji],["__scopeId","data-v-6926a0b8"]]),en={name:"PencilIcon",emits:["click"],props:{title:{type:String},fillColor:{type:String,default:"currentColor"},size:{type:Number,default:24}}},tn=["aria-hidden","aria-label"],an=["fill","width","height"],nn={d:"M20.71,7.04C21.1,6.65 21.1,6 20.71,5.63L18.37,3.29C18,2.9 17.35,2.9 16.96,3.29L15.12,5.12L18.87,8.87M3,17.25V21H6.75L17.81,9.93L14.06,6.18L3,17.25Z"},sn={key:0};function on(e,a,t,s,n,i){return u(),d("span",U(e.$attrs,{"aria-hidden":t.title?null:"true","aria-label":t.title,class:"material-design-icon pencil-icon",role:"img",onClick:a[0]||(a[0]=o=>e.$emit("click",o))}),[(u(),d("svg",{fill:t.fillColor,class:"material-design-icon__svg",width:t.size,height:t.size,viewBox:"0 0 24 24"},[v("path",nn,[t.title?(u(),d("title",sn,D(t.title),1)):f("",!0)])],8,an))],16,tn)}const rn=N(en,[["render",on]]),ln={name:"UndoIcon",emits:["click"],props:{title:{type:String},fillColor:{type:String,default:"currentColor"},size:{type:Number,default:24}}},un=["aria-hidden","aria-label"],cn=["fill","width","height"],dn={d:"M12.5,8C9.85,8 7.45,9 5.6,10.6L2,7V16H11L7.38,12.38C8.77,11.22 10.54,10.5 12.5,10.5C16.04,10.5 19.05,12.81 20.1,16L22.47,15.22C21.08,11.03 17.15,8 12.5,8Z"},pn={key:0};function hn(e,a,t,s,n,i){return u(),d("span",U(e.$attrs,{"aria-hidden":t.title?null:"true","aria-label":t.title,class:"material-design-icon undo-icon",role:"img",onClick:a[0]||(a[0]=o=>e.$emit("click",o))}),[(u(),d("svg",{fill:t.fillColor,class:"material-design-icon__svg",width:t.size,height:t.size,viewBox:"0 0 24 24"},[v("path",dn,[t.title?(u(),d("title",pn,D(t.title),1)):f("",!0)])],8,cn))],16,un)}const gn=N(ln,[["render",hn]]);w(va);const mn={name:"NcAppNavigationIconCollapsible",components:{NcButton:nt,ChevronDown:ci,ChevronUp:ji},props:{open:{type:Boolean,required:!0},active:{type:Boolean,required:!0}},emits:["click"],setup(){return{isLegacy34:oe}},computed:{labelButton(){return this.open?F("Collapse menu"):F("Open menu")}},methods:{onClick(e){this.$emit("click",e)}}};function bn(e,a,t,s,n,i){const o=A("ChevronUp"),l=A("ChevronDown"),p=A("NcButton");return u(),E(p,{class:T(["icon-collapse",{"icon-collapse--active":t.active,"icon-collapse--open":t.open}]),"aria-label":i.labelButton,variant:t.active&&s.isLegacy34?"tertiary-on-primary":"tertiary",onClick:i.onClick},{icon:B(()=>[t.open?(u(),E(o,{key:0,size:20})):(u(),E(l,{key:1,size:20}))]),_:1},8,["class","aria-label","variant","onClick"])}const fn=N(mn,[["render",bn],["__scopeId","data-v-cfbd3794"]]);w(Ca,ya);const vn={name:"NcAppNavigationItem",components:{NcActions:Lt,NcActionButton:hi,NcAppNavigationIconCollapsible:fn,NcInputConfirmCancel:Xi,NcLoadingIcon:ta,NcVNodes:aa,Pencil:rn,Undo:gn},props:{active:{type:Boolean,default:!1},name:{type:String,required:!0},title:{type:String,default:null},id:{type:String,default:()=>at(),validator:e=>e.trim()!==""},icon:{type:String,default:""},loading:{type:Boolean,default:!1},to:{type:[String,Object],default:null},href:{type:String,default:null},allowCollapse:{type:Boolean,default:!1},editable:{type:Boolean,default:!1},editLabel:{type:String,default:""},editPlaceholder:{type:String,default:""},pinned:{type:Boolean,default:!1},undo:{type:Boolean,default:!1},open:{type:Boolean,default:!1},menuOpen:{type:Boolean,default:!1},forceMenu:{type:Boolean,default:!1},menuIcon:{type:String,default:void 0},menuPlacement:{type:String,default:"bottom"},ariaDescription:{type:String,default:null},forceDisplayActions:{type:Boolean,default:!1},inlineActions:{type:Number,default:0}},emits:["update:menuOpen","update:open","update:name","click","undo"],setup(){return{isMobile:Yt(),isLegacy34:oe}},data(){return{actionsBoundariesElement:void 0,editingValue:"",opened:this.open,editingActive:!1,menuOpenLocalValue:!1,focused:!1}},computed:{isRouterLink(){return this.to&&!this.href},canHaveChildren(){return this.$parent.$options._componentTag!=="AppNavigationItem"},editButtonAriaLabel(){return this.editLabel?this.editLabel:F("Edit item")},undoButtonAriaLabel(){return F("Undo changes")}},watch:{open(e){this.opened=e}},mounted(){this.actionsBoundariesElement=document.querySelector("#content-vue")||void 0},methods:{onMenuToggle(e){this.$emit("update:menuOpen",e),this.menuOpenLocalValue=e},toggleCollapse(){this.opened=!this.opened,this.$emit("update:open",this.opened)},onClick(e,a,t){this.$emit("click",e),!(e.metaKey||e.altKey||e.ctrlKey||e.shiftKey)&&t&&(a?.(e),e.preventDefault())},handleEdit(){this.editingValue=this.name,this.editingActive=!0,this.onMenuToggle(!1),this.$nextTick(()=>{this.$refs.editingInput.focusInput()})},cancelEditing(){this.editingActive=!1},handleEditingDone(){this.$emit("update:name",this.editingValue),this.editingValue="",this.editingActive=!1},handleUndo(){this.$emit("undo")},handleFocus(){this.focused=!0},handleBlur(){this.focused=!1},handleTab(e){this.$refs.actions&&(this.focused?(e.preventDefault(),this.$refs.actions.$refs.triggerButton.$el.focus(),this.focused=!1):this.$refs.actions.$refs.triggerButton.$el.blur())},isExternal(e){return e&&e.match(/[a-z]+:\/\//i)}}},yn=["id"],Cn=["aria-current","aria-description","aria-expanded","href","target","title","onClick"],An={key:0,class:"editingContainer"},kn={key:1,class:"app-navigation-entry__deleted"},_n={class:"app-navigation-entry__deleted-description"},En={key:0,class:"app-navigation-entry__counter-wrapper"},Tn={key:0,class:"app-navigation-entry__children"};function Sn(e,a,t,s,n,i){const o=A("NcLoadingIcon"),l=A("NcInputConfirmCancel"),p=A("Pencil"),h=A("NcActionButton"),g=A("Undo"),c=A("NcActions"),m=A("NcAppNavigationIconCollapsible");return u(),d("li",{id:t.id,class:T([{"app-navigation-entry--opened":n.opened,"app-navigation-entry--pinned":t.pinned,"app-navigation-entry--collapsible":t.allowCollapse&&!!e.$slots.default},"app-navigation-entry-wrapper"])},[(u(),E(qa(i.isRouterLink?"router-link":"NcVNodes"),Va(Ka({...i.isRouterLink&&{custom:!0,to:t.to}})),{default:B(({href:y,navigate:x,isActive:C})=>[v("div",{class:T(["app-navigation-entry",{"app-navigation-entry--editing":n.editingActive,"app-navigation-entry--deleted":t.undo,"app-navigation-entry--legacy":s.isLegacy34,active:t.to&&C||t.active}])},[t.undo?f("",!0):(u(),d("a",{key:0,class:"app-navigation-entry-link","aria-current":t.active||t.to&&C?"page":void 0,"aria-description":t.ariaDescription,"aria-expanded":e.$slots.default?n.opened.toString():void 0,href:t.href||y||"#",target:i.isExternal(t.href)?"_blank":void 0,title:t.title||t.name,onBlur:a[1]||(a[1]=(...k)=>i.handleBlur&&i.handleBlur(...k)),onClick:k=>i.onClick(k,x,y),onFocus:a[2]||(a[2]=(...k)=>i.handleFocus&&i.handleFocus(...k)),onKeydown:a[3]||(a[3]=M(I((...k)=>i.handleTab&&i.handleTab(...k),["exact"]),["tab"]))},[v("div",{class:T(["app-navigation-entry-icon",{[t.icon]:t.icon}])},[t.loading?(u(),E(o,{key:0})):S(e.$slots,"icon",{key:1,active:t.active||t.to&&C},void 0,!0)],2),v("span",{class:T(["app-navigation-entry__name",{"hidden-visually":n.editingActive}])},D(t.name),3),n.editingActive?(u(),d("div",An,[_(l,{ref:"editingInput",modelValue:n.editingValue,"onUpdate:modelValue":a[0]||(a[0]=k=>n.editingValue=k),placeholder:t.editPlaceholder!==""?t.editPlaceholder:t.name,primary:t.to&&C||t.active,onCancel:i.cancelEditing,onConfirm:i.handleEditingDone},null,8,["modelValue","placeholder","primary","onCancel","onConfirm"])])):f("",!0)],40,Cn)),t.undo?(u(),d("div",kn,[v("div",_n,D(t.name),1)])):f("",!0),(e.$slots.actions||e.$slots.counter||t.editable||t.undo)&&!n.editingActive?(u(),d("div",{key:2,class:T(["app-navigation-entry__utils",{"app-navigation-entry__utils--display-actions":t.forceDisplayActions||n.menuOpenLocalValue||t.menuOpen}])},[e.$slots.counter?(u(),d("div",En,[S(e.$slots,"counter",{},void 0,!0)])):f("",!0),e.$slots.actions||t.editable&&!n.editingActive||t.undo?(u(),E(c,{key:1,ref:"actions",class:"app-navigation-entry__actions",container:"#app-navigation-vue",boundariesElement:n.actionsBoundariesElement,inline:t.inlineActions,placement:t.menuPlacement,open:t.menuOpen,forceMenu:t.forceMenu,defaultIcon:t.menuIcon,variant:"tertiary","onUpdate:open":i.onMenuToggle},{icon:B(()=>[S(e.$slots,"menu-icon",{},void 0,!0)]),default:B(()=>[t.editable&&!n.editingActive?(u(),E(h,{key:0,"aria-label":i.editButtonAriaLabel,onClick:i.handleEdit},{icon:B(()=>[_(p,{size:20})]),default:B(()=>[it(" "+D(t.editLabel),1)]),_:1},8,["aria-label","onClick"])):f("",!0),t.undo?(u(),E(h,{key:1,"aria-label":i.undoButtonAriaLabel,onClick:i.handleUndo},{icon:B(()=>[_(g,{size:20})]),_:1},8,["aria-label","onClick"])):f("",!0),S(e.$slots,"actions",{},void 0,!0)]),_:3},8,["boundariesElement","inline","placement","open","forceMenu","defaultIcon","onUpdate:open"])):f("",!0)],2)):f("",!0),t.allowCollapse&&e.$slots.default?(u(),E(m,{key:3,active:t.to&&C||t.active,open:n.opened,onClick:I(i.toggleCollapse,["prevent","stop"])},null,8,["active","open","onClick"])):f("",!0),S(e.$slots,"extra",{},void 0,!0)],2)]),_:3},16)),i.canHaveChildren&&e.$slots.default?(u(),d("ul",Tn,[S(e.$slots,"default",{},void 0,!0)])):f("",!0)],10,yn)}const To=N(vn,[["render",Sn],["__scopeId","data-v-fcab058b"]]);w(ka,Aa);const Bn=J({__name:"NcAppNavigationSearch",props:fe({label:{type:String,default:F("Search …")},placeholder:{type:String,default:null}},{modelValue:{default:""},modelModifiers:{}}),emits:["update:modelValue"],setup(e){const a=Ce(e,"modelValue"),t=Wa(),s=ee(),{focused:n}=Oa(s),i=Number.parseInt(window.getComputedStyle(window.document.body).getPropertyValue("--animation-quick"))||100,o=Nt("actionsContainer"),l=()=>!!t.actions?.({}),p=ee(!0),h=ee(),g=ee(!1);be(n,()=>{p.value=!n.value,window.clearTimeout(h.value),p.value?g.value=!1:window.setTimeout(()=>{g.value=!p.value},i)});function c(){a.value="",l()&&(p.value=!0,Ga(()=>o.value?.querySelector("button")?.focus()))}return(m,y)=>(u(),d("div",{class:T(["app-navigation-search",{"app-navigation-search--has-actions":l()}])},[_(gi,{ref_key:"inputElement",ref:s,modelValue:a.value,"onUpdate:modelValue":y[0]||(y[0]=x=>a.value=x),"aria-label":e.label,class:"app-navigation-search__input",labelOutside:"",placeholder:e.placeholder??e.label,showTrailingButton:a.value.length>0,trailingButtonLabel:P(F)("Clear search"),type:"search",onTrailingButtonClick:c},{"trailing-button-icon":B(()=>[_(It,{size:20})]),_:1},8,["modelValue","aria-label","placeholder","showTrailingButton","trailingButtonLabel"]),l()?(u(),d("div",{key:0,ref:"actionsContainer",class:T(["app-navigation-search__actions",{"app-navigation-search__actions--hidden":!p.value,"hidden-visually":g.value}])},[S(m.$slots,"actions",{},void 0,!0)],2)):f("",!0)],2))}}),So=N(Bn,[["__scopeId","data-v-191b6717"]]);w(_a),w(Ea),w(Gt);const Ln={mounted(e){e.focus()}},Nn="aaa1rp3bb0ott3vie4c1le2ogado5udhabi7c0ademy5centure6ountant0s9o1tor4d0s1ult4e0g1ro2tna4f0l1rica5g0akhan5ency5i0g1rbus3force5tel5kdn3l0ibaba4pay4lfinanz6state5y2sace3tom5m0azon4ericanexpress7family11x2fam3ica3sterdam8nalytics7droid5quan4z2o0l2partments8p0le4q0uarelle8r0ab1mco4chi3my2pa2t0e3s0da2ia2sociates9t0hleta5torney7u0ction5di0ble3o3spost5thor3o0s4w0s2x0a2z0ure5ba0by2idu3namex4d1k2r0celona5laycard4s5efoot5gains6seball5ketball8uhaus5yern5b0c1t1va3cg1n2d1e0ats2uty4er2rlin4st0buy5t2f1g1h0arti5i0ble3d1ke2ng0o3o1z2j1lack0friday9ockbuster8g1omberg7ue3m0s1w2n0pparibas9o0ats3ehringer8fa2m1nd2o0k0ing5sch2tik2on4t1utique6x2r0adesco6idgestone9oadway5ker3ther5ussels7s1t1uild0ers6siness6y1zz3v1w1y1z0h3ca0b1fe2l0l1vinklein9m0era3p2non3petown5ital0one8r0avan4ds2e0er0s4s2sa1e1h1ino4t0ering5holic7ba1n1re3c1d1enter4o1rn3f0a1d2g1h0anel2nel4rity4se2t2eap3intai5ristmas6ome4urch5i0priani6rcle4sco3tadel4i0c2y3k1l0aims4eaning6ick2nic1que6othing5ud3ub0med6m1n1o0ach3des3ffee4llege4ogne5m0mbank4unity6pany2re3uter5sec4ndos3struction8ulting7tact3ractors9oking4l1p2rsica5untry4pon0s4rses6pa2r0edit0card4union9icket5own3s1uise0s6u0isinella9v1w1x1y0mru3ou3z2dad1nce3ta1e1ing3sun4y2clk3ds2e0al0er2s3gree4livery5l1oitte5ta3mocrat6ntal2ist5si0gn4v2hl2iamonds6et2gital5rect0ory7scount3ver5h2y2j1k1m1np2o0cs1tor4g1mains5t1wnload7rive4tv2ubai3pont4rban5vag2r2z2earth3t2c0o2deka3u0cation8e1g1mail3erck5nergy4gineer0ing9terprises10pson4quipment8r0icsson6ni3s0q1tate5t1u0rovision8s2vents5xchange6pert3osed4ress5traspace10fage2il1rwinds6th3mily4n0s2rm0ers5shion4t3edex3edback6rrari3ero6i0delity5o2lm2nal1nce1ial7re0stone6mdale6sh0ing5t0ness6j1k1lickr3ghts4r2orist4wers5y2m1o0o0d1tball6rd1ex2sale4um3undation8x2r0ee1senius7l1ogans4ntier7tr2ujitsu5n0d2rniture7tbol5yi3ga0l0lery3o1up4me0s3p1rden4y2b0iz3d0n2e0a1nt0ing5orge5f1g0ee3h1i0ft0s3ves2ing5l0ass3e1obal2o4m0ail3bh2o1x2n1odaddy5ld0point6f2odyear5g0le4p1t1v2p1q1r0ainger5phics5tis4een3ipe3ocery4up4s1t1u0cci3ge2ide2tars5ru3w1y2hair2mburg5ngout5us3bo2dfc0bank7ealth0care8lp1sinki6re1mes5iphop4samitsu7tachi5v2k0t2m1n1ockey4ldings5iday5medepot5goods5s0ense7nda3rse3spital5t0ing5t0els3mail5use3w2r1sbc3t1u0ghes5yatt3undai7ibm2cbc2e1u2d1e0ee3fm2kano4l1m0amat4db2mo0bilien9n0c1dustries8finiti5o2g1k1stitute6urance4e4t0ernational10uit4vestments10o1piranga7q1r0ish4s0maili5t0anbul7t0au2v3jaguar4va3cb2e0ep2tzt3welry6io2ll2m0p2nj2o0bs1urg4t1y2p0morgan6rs3uegos4niper7kaufen5ddi3e0rryhotels6properties14fh2g1h1i0a1ds2m1ndle4tchen5wi3m1n1oeln3matsu5sher5p0mg2n2r0d1ed3uokgroup8w1y0oto4z2la0caixa5mborghini8er3nd0rover6xess5salle5t0ino3robe5w0yer5b1c1ds2ease3clerc5frak4gal2o2xus4gbt3i0dl2fe0insurance9style7ghting6ke2lly3mited4o2ncoln4k2ve1ing5k1lc1p2oan0s3cker3us3l1ndon4tte1o3ve3pl0financial11r1s1t0d0a3u0ndbeck6xe1ury5v1y2ma0drid4if1son4keup4n0agement7go3p1rket0ing3s4riott5shalls7ttel5ba2c0kinsey7d1e0d0ia3et2lbourne7me1orial6n0u2rck0msd7g1h1iami3crosoft7l1ni1t2t0subishi9k1l0b1s2m0a2n1o0bi0le4da2e1i1m1nash3ey2ster5rmon3tgage6scow4to0rcycles9v0ie4p1q1r1s0d2t0n1r2u0seum3ic4v1w1x1y1z2na0b1goya4me2vy3ba2c1e0c1t0bank4flix4work5ustar5w0s2xt0direct7us4f0l2g0o2hk2i0co2ke1on3nja3ssan1y5l1o0kia3rton4w0ruz3tv4p1r0a1w2tt2u1yc2z2obi1server7ffice5kinawa6layan0group9lo3m0ega4ne1g1l0ine5oo2pen3racle3nge4g0anic5igins6saka4tsuka4t2vh3pa0ge2nasonic7ris2s1tners4s1y3y2ccw3e0t2f0izer5g1h0armacy6d1ilips5one2to0graphy6s4ysio5ics1tet2ures6d1n0g1k2oneer5zza4k1l0ace2y0station9umbing5s3m1n0c2ohl2ker3litie5rn2st3r0axi3ess3ime3o0d0uctions8f1gressive8mo2perties3y5tection8u0dential9s1t1ub2w0c2y2qa1pon3uebec3st5racing4dio4e0ad1lestate6tor2y4cipes5d0umbrella9hab3ise0n3t2liance6n0t0als5pair3ort3ublican8st0aurant8view0s5xroth6ich0ardli6oh3l1o1p2o0cks3deo3gers4om3s0vp3u0gby3hr2n2w0e2yukyu6sa0arland6fe0ty4kura4le1on3msclub4ung5ndvik0coromant12ofi4p1rl2s1ve2xo3b0i1s2c0b1haeffler7midt4olarships8ol3ule3warz5ience5ot3d1e0arch3t2cure1ity6ek2lect4ner3rvices6ven3w1x0y3fr2g1h0angrila6rp3ell3ia1ksha5oes2p0ping5uji3w3i0lk2na1gles5te3j1k0i0n2y0pe4l0ing4m0art3ile4n0cf3o0ccer3ial4ftbank4ware6hu2lar2utions7ng1y2y2pa0ce3ort2t3r0l2s1t0ada2ples4r1tebank4farm7c0group6ockholm6rage3e3ream4udio2y3yle4u0cks3pplies3y2ort5rf1gery5zuki5v1watch4iss4x1y0dney4stems6z2tab1ipei4lk2obao4rget4tamotors6r2too4x0i3c0i2d0k2eam2ch0nology8l1masek5nnis4va3f1g1h0d1eater2re6iaa2ckets5enda4ps2res2ol4j0maxx4x2k0maxx5l1m0all4n1o0day3kyo3ols3p1ray3shiba5tal3urs3wn2yota3s3r0ade1ing4ining5vel0ers0insurance16ust3v2t1ube2i1nes3shu4v0s2w1z2ua1bank3s2g1k1nicom3versity8o2ol2ps2s1y1z2va0cations7na1guard7c1e0gas3ntures6risign5mögensberater2ung14sicherung10t2g1i0ajes4deo3g1king4llas4n1p1rgin4sa1ion4va1o3laanderen9n1odka3lvo3te1ing3o2yage5u2wales2mart4ter4ng0gou5tch0es6eather0channel12bcam3er2site5d0ding5ibo2r3f1hoswho6ien2ki2lliamhill9n0dows4e1ners6me2oodside6rk0s2ld3w2s1tc1f3xbox3erox4ihuan4n2xx2yz3yachts4hoo3maxun5ndex5e1odobashi7ga2kohama6u0tube6t1un3za0ppos4ra3ero3ip2m1one3uerich6w2",In="ελ1υ2бг1ел3дети4ею2католик6ом3мкд2он1сква6онлайн5рг3рус2ф2сайт3рб3укр3қаз3հայ3ישראל5קום3ابوظبي5رامكو5لاردن4بحرين5جزائر5سعودية6عليان5مغرب5مارات5یران5بارت2زار4يتك3ھارت5تونس4سودان3رية5شبكة4عراق2ب2مان4فلسطين6قطر3كاثوليك6وم3مصر2ليسيا5وريتانيا7قع4همراه5پاکستان7ڀارت4कॉम3नेट3भारत0म्3ोत5संगठन5বাংলা5ভারত2ৰত4ਭਾਰਤ4ભારત4ଭାରତ4இந்தியா6லங்கை6சிங்கப்பூர்11భారత్5ಭಾರತ4ഭാരതം5ලංකා4คอม3ไทย3ລາວ3გე2みんな3アマゾン4クラウド4グーグル4コム2ストア3セール3ファッション6ポイント4世界2中信1国1國1文网3亚马逊3企业2佛山2信息2健康2八卦2公司1益2台湾1灣2商城1店1标2嘉里0大酒店5在线2大拿2天主教3娱乐2家電2广东2微博2慈善2我爱你3手机2招聘2政务1府2新加坡2闻2时尚2書籍2机构2淡马锡3游戏2澳門2点看2移动2组织机构4网址1店1站1络2联通2谷歌2购物2通販2集团2電訊盈科4飞利浦3食品2餐厅2香格里拉3港2닷넷1컴2삼성2한국2",Ct="numeric",At="ascii",kt="alpha",ce="asciinumeric",ue="alphanumeric",_t="domain",sa="emoji",wn="scheme",xn="slashscheme",gt="whitespace";function $n(e,a){return e in a||(a[e]=[]),a[e]}function te(e,a,t){a[Ct]&&(a[ce]=!0,a[ue]=!0),a[At]&&(a[ce]=!0,a[kt]=!0),a[ce]&&(a[ue]=!0),a[kt]&&(a[ue]=!0),a[ue]&&(a[_t]=!0),a[sa]&&(a[_t]=!0);for(const s in a){const n=$n(s,t);n.indexOf(e)<0&&n.push(e)}}function Fn(e,a){const t={};for(const s in a)a[s].indexOf(e)>=0&&(t[s]=!0);return t}function H(e=null){this.j={},this.jr=[],this.jd=null,this.t=e}H.groups={},H.prototype={accepts(){return!!this.t},go(e){const a=this,t=a.j[e];if(t)return t;for(let s=0;s<a.jr.length;s++){const n=a.jr[s][0],i=a.jr[s][1];if(i&&n.test(e))return i}return a.jd},has(e,a=!1){return a?e in this.j:!!this.go(e)},ta(e,a,t,s){for(let n=0;n<e.length;n++)this.tt(e[n],a,t,s)},tr(e,a,t,s){s=s||H.groups;let n;return a&&a.j?n=a:(n=new H(a),t&&s&&te(a,t,s)),this.jr.push([e,n]),n},ts(e,a,t,s){let n=this;const i=e.length;if(!i)return n;for(let o=0;o<i-1;o++)n=n.tt(e[o]);return n.tt(e[i-1],a,t,s)},tt(e,a,t,s){s=s||H.groups;const n=this;if(a&&a.j)return n.j[e]=a,a;const i=a;let o,l=n.go(e);if(l?(o=new H,Object.assign(o.j,l.j),o.jr.push.apply(o.jr,l.jr),o.jd=l.jd,o.t=l.t):o=new H,i){if(s)if(o.t&&typeof o.t=="string"){const p=Object.assign(Fn(o.t,s),t);te(i,p,s)}else t&&te(i,t,s);o.t=i}return n.j[e]=o,o}};const b=(e,a,t,s,n)=>e.ta(a,t,s,n),L=(e,a,t,s,n)=>e.tr(a,t,s,n),Ht=(e,a,t,s,n)=>e.ts(a,t,s,n),r=(e,a,t,s,n)=>e.tt(a,t,s,n),Q="WORD",Et="UWORD",oa="ASCIINUMERICAL",ra="ALPHANUMERICAL",ve="LOCALHOST",Tt="TLD",St="UTLD",Se="SCHEME",se="SLASH_SCHEME",wt="NUM",Bt="WS",xt="NL",de="OPENBRACE",pe="CLOSEBRACE",Ne="OPENBRACKET",Ie="CLOSEBRACKET",we="OPENPAREN",xe="CLOSEPAREN",$e="OPENANGLEBRACKET",Fe="CLOSEANGLEBRACKET",De="FULLWIDTHLEFTPAREN",Oe="FULLWIDTHRIGHTPAREN",Re="LEFTCORNERBRACKET",ze="RIGHTCORNERBRACKET",Pe="LEFTWHITECORNERBRACKET",Me="RIGHTWHITECORNERBRACKET",He="FULLWIDTHLESSTHAN",Ue="FULLWIDTHGREATERTHAN",je="AMPERSAND",Ve="APOSTROPHE",Ke="ASTERISK",Y="AT",qe="BACKSLASH",We="BACKTICK",Ge="CARET",ae="COLON",$t="COMMA",Qe="DOLLAR",K="DOT",Ze="EQUALS",Ft="EXCLAMATION",V="HYPHEN",he="PERCENT",Ye="PIPE",Je="PLUS",Xe="POUND",ge="QUERY",Dt="QUOTE",la="FULLWIDTHMIDDLEDOT",Ot="SEMI",q="SLASH",me="TILDE",et="UNDERSCORE",ua="EMOJI",tt="SYM";var ca=Object.freeze({__proto__:null,ALPHANUMERICAL:ra,AMPERSAND:je,APOSTROPHE:Ve,ASCIINUMERICAL:oa,ASTERISK:Ke,AT:Y,BACKSLASH:qe,BACKTICK:We,CARET:Ge,CLOSEANGLEBRACKET:Fe,CLOSEBRACE:pe,CLOSEBRACKET:Ie,CLOSEPAREN:xe,COLON:ae,COMMA:$t,DOLLAR:Qe,DOT:K,EMOJI:ua,EQUALS:Ze,EXCLAMATION:Ft,FULLWIDTHGREATERTHAN:Ue,FULLWIDTHLEFTPAREN:De,FULLWIDTHLESSTHAN:He,FULLWIDTHMIDDLEDOT:la,FULLWIDTHRIGHTPAREN:Oe,HYPHEN:V,LEFTCORNERBRACKET:Re,LEFTWHITECORNERBRACKET:Pe,LOCALHOST:ve,NL:xt,NUM:wt,OPENANGLEBRACKET:$e,OPENBRACE:de,OPENBRACKET:Ne,OPENPAREN:we,PERCENT:he,PIPE:Ye,PLUS:Je,POUND:Xe,QUERY:ge,QUOTE:Dt,RIGHTCORNERBRACKET:ze,RIGHTWHITECORNERBRACKET:Me,SCHEME:Se,SEMI:Ot,SLASH:q,SLASH_SCHEME:se,SYM:tt,TILDE:me,TLD:Tt,UNDERSCORE:et,UTLD:St,UWORD:Et,WORD:Q,WS:Bt});const W=/[a-z]/,le=new RegExp("\\p{L}","u"),mt=new RegExp("\\p{Emoji}","u"),G=/\d/,bt=/\s/,Ut="\r",ft=` +import{r as w,_ as N,b as F,c as at,O as ba,N as Be,P as fa,Q as va,t as ya,R as Ca,S as Aa,u as ka,T as _a,U as Ea,V as Gt,W as Ta,X as Sa,Y as Ba,Z as La,l as Na,$ as Ia,a0 as wa,a1 as xa,a2 as $a,a3 as Fa}from"./createElementId-DhjFt1I9-BmyhoOWk.chunk.mjs";import{e as Da,F as Qt,G as Zt,d as Yt,b as Lt,H as Oa,p as Ra,J as za}from"./NcModal-DiDvgcU8-Cb_C64qI.chunk.mjs";import{o as u,f as d,t as D,h as f,g as v,i as S,b as J,V as Jt,ak as Pa,p as Nt,l as ee,E as Ma,z as be,S as Ha,ai as Ua,y as T,c as E,w as B,a6 as M,k as _,u as P,v as Le,n as Ce,m as U,r as A,J as X,aj as ja,L as I,j as it,G as Va,M as Ka,C as qa,x as Wa,s as fe,D as Ga,af as Mt,ae as Qa,O as Xt,K as dt,T as Za,F as Ya,B as Ja,ad as Xa,I as ei}from"./Web-DYqXJUev.chunk.mjs";import{s as ti,f as pt,u as ai,d as ii}from"./index-Cp0kcsps.chunk.mjs";import{g as oe,F as ni,G as si,N as nt,l as ea,i as ht,e as oi,f as ri}from"./logger-D3RVzcfQ-BrUWOyzd.chunk.mjs";import{H as li,C as ui}from"./NcContent-BYh5hWDN-C1_miOvl.chunk.mjs";import{I as It,C as ci,_ as di,N as pi}from"./index-BhwlPNkJ.chunk.mjs";import{N as hi}from"./PencilOutline-CA_ZiZlA.chunk.mjs";import{N as ta}from"./TrashCanOutline-BU3aqDG_.chunk.mjs";import{_ as aa}from"./TrayArrowDown-ZQRTTdRd.chunk.mjs";import{N as gi}from"./NcInputField-5Sg6EUP6-CUyzAC2j.chunk.mjs";import{e as ia,b as mi}from"./translation-DoG5ZELJ-WOan4U8V.chunk.mjs";import"./index-CHUjKZ5R.chunk.mjs";import{a as bi,b as fi,N as vi}from"./NcAvatar-1KxMUN7V-R6Nmwuvb.chunk.mjs";import{N as yi}from"./NcEmptyContent-CGAPqk4S-LFG8iXZZ.chunk.mjs";import{P as Ci}from"./NcBreadcrumbs-B4eyDS9i-bX0dOZmj.chunk.mjs";import"./ArrowRight-BCzIOZ0l.chunk.mjs";import"./index-CkGt55pS.chunk.mjs";import{g as Ai}from"./public-C1mLBHT3.chunk.mjs";w();const ki=J({name:"NcActionButtonGroup",inject:{isInSemanticMenu:{from:Da,default:!1}},props:{name:{required:!1,default:void 0,type:String}},setup(){return{labelId:at()}},methods:{t:F}}),_i=["role"],Ei=["id"],Ti=["aria-labelledby"];function Si(e,a,t,s,n,i){return u(),d("li",{class:"nc-button-group-base",role:e.isInSemanticMenu&&"presentation"},[e.name?(u(),d("div",{key:0,id:e.labelId},D(e.name),9,Ei)):f("",!0),v("ul",{class:"nc-button-group-content",role:"group","aria-labelledby":e.name?e.labelId:void 0},[S(e.$slots,"default")],8,Ti)],8,_i)}const _o=N(ki,[["render",Si],["__scopeId","data-v-6a2b8de0"]]),Bi={name:"NcAppNavigationList"},Li={class:"app-navigation-list"};function Ni(e,a,t,s,n,i){return u(),d("ul",Li,[S(e.$slots,"default",{},void 0,!0)])}const Ii=N(Bi,[["render",Ni],["__scopeId","data-v-d72957ed"]]);w(ba);const wi={class:"app-navigation-toggle-wrapper"},xi=J({__name:"NcAppNavigationToggle",props:{open:{type:Boolean,required:!0},openModifiers:{}},emits:["update:open"],setup(e){const a=Ce(e,"open"),t=Le(()=>a.value?F("Close navigation"):F("Open navigation"));return(s,n)=>(u(),d("div",wi,[_(P(nt),{class:"app-navigation-toggle","aria-controls":"app-navigation-vue","aria-expanded":a.value?"true":"false","aria-label":t.value,title:t.value,variant:"tertiary",onClick:n[0]||(n[0]=i=>a.value=!a.value)},{icon:B(()=>[_(Be,{path:a.value?P(ni):P(si)},null,8,["path"])]),_:1},8,["aria-expanded","aria-label","title"])]))}}),$i=N(xi,[["__scopeId","data-v-5a15295d"]]),Fi=["aria-hidden","aria-label","aria-labelledby","inert"],Di={class:"app-navigation__search"},Oi=J({__name:"NcAppNavigation",props:{ariaLabel:{},ariaLabelledby:{}},setup(e){const a=e;let t;const s=Jt(li,()=>Pa(),!1),n=Nt("appNavigationContainer"),i=Yt(),o=ee(!i.value),l=Le(()=>i.value&&o.value);Ma(()=>{!a.ariaLabel&&a.ariaLabelledby}),be(i,()=>{o.value=!i.value}),be(l,()=>{g()}),Ha(()=>{s(!0),ti("toggle-navigation",h),pt("navigation-toggled",{open:o.value}),t=Qt(n.value,{allowOutsideClick:!0,clickOutsideDeactivates:()=>(i.value&&(t.deactivate({returnFocus:!1}),p(!1)),!1),fallbackFocus:n.value,trapStack:Zt(),escapeDeactivates:!1}),g()}),Ua(()=>{s(!1),ai("toggle-navigation",h),t.deactivate()});function p(m){if(o.value===m){pt("navigation-toggled",{open:o.value});return}o.value=m===void 0?!o.value:m;const y=getComputedStyle(document.body),x=parseInt(y.getPropertyValue("--animation-quick"))||100;setTimeout(()=>{pt("navigation-toggled",{open:o.value})},1.5*x)}function h({open:m}){return p(m)}function g(){l.value?t.activate():t.deactivate()}function c(){i.value&&p(!1)}return(m,y)=>(u(),d("div",{ref:"appNavigationContainer",class:T(["app-navigation",{"app-navigation--closed":!o.value,"app-navigation--legacy":P(oe)}])},[v("nav",{id:"app-navigation-vue","aria-hidden":o.value?"false":"true","aria-label":e.ariaLabel||void 0,"aria-labelledby":e.ariaLabelledby||void 0,class:"app-navigation__content",inert:!o.value||void 0,onKeydown:M(c,["esc"])},[v("div",Di,[S(m.$slots,"search",{},void 0,!0)]),v("div",{class:T(["app-navigation__body",{"app-navigation__body--no-list":!m.$slots.list}])},[S(m.$slots,"default",{},void 0,!0)],2),m.$slots.list?(u(),E(Ii,{key:0,class:"app-navigation__list"},{default:B(()=>[S(m.$slots,"list",{},void 0,!0)]),_:3})):f("",!0),S(m.$slots,"footer",{},void 0,!0)],40,Fi),_($i,{open:o.value,"onUpdate:open":p},null,8,["open"])],2))}}),Eo=N(Oi,[["__scopeId","data-v-1344f70d"]]);({...Lt.props});const Ri={name:"ChevronUpIcon",emits:["click"],props:{title:{type:String},fillColor:{type:String,default:"currentColor"},size:{type:Number,default:24}}},zi=["aria-hidden","aria-label"],Pi=["fill","width","height"],Mi={d:"M7.41,15.41L12,10.83L16.59,15.41L18,14L12,8L6,14L7.41,15.41Z"},Hi={key:0};function Ui(e,a,t,s,n,i){return u(),d("span",U(e.$attrs,{"aria-hidden":t.title?null:"true","aria-label":t.title,class:"material-design-icon chevron-up-icon",role:"img",onClick:a[0]||(a[0]=o=>e.$emit("click",o))}),[(u(),d("svg",{fill:t.fillColor,class:"material-design-icon__svg",width:t.size,height:t.size,viewBox:"0 0 24 24"},[v("path",Mi,[t.title?(u(),d("title",Hi,D(t.title),1)):f("",!0)])],8,Pi))],16,zi)}const ji=N(Ri,[["render",Ui]]),Vi={name:"ArrowRightIcon",emits:["click"],props:{title:{type:String},fillColor:{type:String,default:"currentColor"},size:{type:Number,default:24}}},Ki=["aria-hidden","aria-label"],qi=["fill","width","height"],Wi={d:"M4,11V13H16L10.5,18.5L11.92,19.92L19.84,12L11.92,4.08L10.5,5.5L16,11H4Z"},Gi={key:0};function Qi(e,a,t,s,n,i){return u(),d("span",U(e.$attrs,{"aria-hidden":t.title?null:"true","aria-label":t.title,class:"material-design-icon arrow-right-icon",role:"img",onClick:a[0]||(a[0]=o=>e.$emit("click",o))}),[(u(),d("svg",{fill:t.fillColor,class:"material-design-icon__svg",width:t.size,height:t.size,viewBox:"0 0 24 24"},[v("path",Wi,[t.title?(u(),d("title",Gi,D(t.title),1)):f("",!0)])],8,qi))],16,Ki)}const na=N(Vi,[["render",Qi]]);w(fa);const Zi={name:"NcInputConfirmCancel",components:{IconArrowRight:na,IconClose:It,NcButton:nt},props:{primary:{default:!1,type:Boolean},placeholder:{default:"",type:String},modelValue:{default:"",type:String}},emits:["cancel","confirm","update:modelValue"],setup(){return{isLegacy34:oe}},data(){return{labelConfirm:F("Confirm changes"),labelCancel:F("Cancel changes")}},computed:{valueModel:{get(){return this.modelValue},set(e){this.$emit("update:modelValue",e)}}},methods:{confirm(){this.$emit("confirm")},cancel(){this.$emit("cancel")},focusInput(){this.$refs.input.focus()}}},Yi=["placeholder"];function Ji(e,a,t,s,n,i){const o=A("IconArrowRight"),l=A("NcButton"),p=A("IconClose");return u(),d("div",{class:T(["app-navigation-input-confirm",{"app-navigation-input-confirm--legacy":s.isLegacy34}])},[v("form",{onSubmit:a[1]||(a[1]=I((...h)=>i.confirm&&i.confirm(...h),["prevent"])),onKeydown:a[2]||(a[2]=M(I((...h)=>i.cancel&&i.cancel(...h),["exact","stop","prevent"]),["esc"])),onClick:a[3]||(a[3]=I(()=>{},["stop","prevent"]))},[X(v("input",{ref:"input","onUpdate:modelValue":a[0]||(a[0]=h=>i.valueModel=h),type:"text",class:"app-navigation-input-confirm__input",placeholder:t.placeholder},null,8,Yi),[[ja,i.valueModel]]),_(l,{"aria-label":n.labelConfirm,type:"submit",variant:"primary",onClick:I(i.confirm,["stop","prevent"])},{icon:B(()=>[_(o,{size:20})]),_:1},8,["aria-label","onClick"]),_(l,{"aria-label":n.labelCancel,type:"reset",variant:t.primary?"primary":"tertiary",onClick:I(i.cancel,["stop","prevent"])},{icon:B(()=>[_(p,{size:20})]),_:1},8,["aria-label","variant","onClick"])],32)],2)}const Xi=N(Zi,[["render",Ji],["__scopeId","data-v-6926a0b8"]]),en={name:"PencilIcon",emits:["click"],props:{title:{type:String},fillColor:{type:String,default:"currentColor"},size:{type:Number,default:24}}},tn=["aria-hidden","aria-label"],an=["fill","width","height"],nn={d:"M20.71,7.04C21.1,6.65 21.1,6 20.71,5.63L18.37,3.29C18,2.9 17.35,2.9 16.96,3.29L15.12,5.12L18.87,8.87M3,17.25V21H6.75L17.81,9.93L14.06,6.18L3,17.25Z"},sn={key:0};function on(e,a,t,s,n,i){return u(),d("span",U(e.$attrs,{"aria-hidden":t.title?null:"true","aria-label":t.title,class:"material-design-icon pencil-icon",role:"img",onClick:a[0]||(a[0]=o=>e.$emit("click",o))}),[(u(),d("svg",{fill:t.fillColor,class:"material-design-icon__svg",width:t.size,height:t.size,viewBox:"0 0 24 24"},[v("path",nn,[t.title?(u(),d("title",sn,D(t.title),1)):f("",!0)])],8,an))],16,tn)}const rn=N(en,[["render",on]]),ln={name:"UndoIcon",emits:["click"],props:{title:{type:String},fillColor:{type:String,default:"currentColor"},size:{type:Number,default:24}}},un=["aria-hidden","aria-label"],cn=["fill","width","height"],dn={d:"M12.5,8C9.85,8 7.45,9 5.6,10.6L2,7V16H11L7.38,12.38C8.77,11.22 10.54,10.5 12.5,10.5C16.04,10.5 19.05,12.81 20.1,16L22.47,15.22C21.08,11.03 17.15,8 12.5,8Z"},pn={key:0};function hn(e,a,t,s,n,i){return u(),d("span",U(e.$attrs,{"aria-hidden":t.title?null:"true","aria-label":t.title,class:"material-design-icon undo-icon",role:"img",onClick:a[0]||(a[0]=o=>e.$emit("click",o))}),[(u(),d("svg",{fill:t.fillColor,class:"material-design-icon__svg",width:t.size,height:t.size,viewBox:"0 0 24 24"},[v("path",dn,[t.title?(u(),d("title",pn,D(t.title),1)):f("",!0)])],8,cn))],16,un)}const gn=N(ln,[["render",hn]]);w(va);const mn={name:"NcAppNavigationIconCollapsible",components:{NcButton:nt,ChevronDown:ci,ChevronUp:ji},props:{open:{type:Boolean,required:!0},active:{type:Boolean,required:!0}},emits:["click"],setup(){return{isLegacy34:oe}},computed:{labelButton(){return this.open?F("Collapse menu"):F("Open menu")}},methods:{onClick(e){this.$emit("click",e)}}};function bn(e,a,t,s,n,i){const o=A("ChevronUp"),l=A("ChevronDown"),p=A("NcButton");return u(),E(p,{class:T(["icon-collapse",{"icon-collapse--active":t.active,"icon-collapse--open":t.open}]),"aria-label":i.labelButton,variant:t.active&&s.isLegacy34?"tertiary-on-primary":"tertiary",onClick:i.onClick},{icon:B(()=>[t.open?(u(),E(o,{key:0,size:20})):(u(),E(l,{key:1,size:20}))]),_:1},8,["class","aria-label","variant","onClick"])}const fn=N(mn,[["render",bn],["__scopeId","data-v-cfbd3794"]]);w(Ca,ya);const vn={name:"NcAppNavigationItem",components:{NcActions:Lt,NcActionButton:hi,NcAppNavigationIconCollapsible:fn,NcInputConfirmCancel:Xi,NcLoadingIcon:ta,NcVNodes:aa,Pencil:rn,Undo:gn},props:{active:{type:Boolean,default:!1},name:{type:String,required:!0},title:{type:String,default:null},id:{type:String,default:()=>at(),validator:e=>e.trim()!==""},icon:{type:String,default:""},loading:{type:Boolean,default:!1},to:{type:[String,Object],default:null},href:{type:String,default:null},allowCollapse:{type:Boolean,default:!1},editable:{type:Boolean,default:!1},editLabel:{type:String,default:""},editPlaceholder:{type:String,default:""},pinned:{type:Boolean,default:!1},undo:{type:Boolean,default:!1},open:{type:Boolean,default:!1},menuOpen:{type:Boolean,default:!1},forceMenu:{type:Boolean,default:!1},menuIcon:{type:String,default:void 0},menuPlacement:{type:String,default:"bottom"},ariaDescription:{type:String,default:null},forceDisplayActions:{type:Boolean,default:!1},inlineActions:{type:Number,default:0}},emits:["update:menuOpen","update:open","update:name","click","undo"],setup(){return{isMobile:Yt(),isLegacy34:oe}},data(){return{actionsBoundariesElement:void 0,editingValue:"",opened:this.open,editingActive:!1,menuOpenLocalValue:!1,focused:!1}},computed:{isRouterLink(){return this.to&&!this.href},canHaveChildren(){return this.$parent.$options._componentTag!=="AppNavigationItem"},editButtonAriaLabel(){return this.editLabel?this.editLabel:F("Edit item")},undoButtonAriaLabel(){return F("Undo changes")}},watch:{open(e){this.opened=e}},mounted(){this.actionsBoundariesElement=document.querySelector("#content-vue")||void 0},methods:{onMenuToggle(e){this.$emit("update:menuOpen",e),this.menuOpenLocalValue=e},toggleCollapse(){this.opened=!this.opened,this.$emit("update:open",this.opened)},onClick(e,a,t){this.$emit("click",e),!(e.metaKey||e.altKey||e.ctrlKey||e.shiftKey)&&t&&(a?.(e),e.preventDefault())},handleEdit(){this.editingValue=this.name,this.editingActive=!0,this.onMenuToggle(!1),this.$nextTick(()=>{this.$refs.editingInput.focusInput()})},cancelEditing(){this.editingActive=!1},handleEditingDone(){this.$emit("update:name",this.editingValue),this.editingValue="",this.editingActive=!1},handleUndo(){this.$emit("undo")},handleFocus(){this.focused=!0},handleBlur(){this.focused=!1},handleTab(e){this.$refs.actions&&(this.focused?(e.preventDefault(),this.$refs.actions.$refs.triggerButton.$el.focus(),this.focused=!1):this.$refs.actions.$refs.triggerButton.$el.blur())},isExternal(e){return e&&e.match(/[a-z]+:\/\//i)}}},yn=["id"],Cn=["aria-current","aria-description","aria-expanded","href","target","title","onClick"],An={key:0,class:"editingContainer"},kn={key:1,class:"app-navigation-entry__deleted"},_n={class:"app-navigation-entry__deleted-description"},En={key:0,class:"app-navigation-entry__counter-wrapper"},Tn={key:0,class:"app-navigation-entry__children"};function Sn(e,a,t,s,n,i){const o=A("NcLoadingIcon"),l=A("NcInputConfirmCancel"),p=A("Pencil"),h=A("NcActionButton"),g=A("Undo"),c=A("NcActions"),m=A("NcAppNavigationIconCollapsible");return u(),d("li",{id:t.id,class:T([{"app-navigation-entry--opened":n.opened,"app-navigation-entry--pinned":t.pinned,"app-navigation-entry--collapsible":t.allowCollapse&&!!e.$slots.default},"app-navigation-entry-wrapper"])},[(u(),E(qa(i.isRouterLink?"router-link":"NcVNodes"),Va(Ka({...i.isRouterLink&&{custom:!0,to:t.to}})),{default:B(({href:y,navigate:x,isActive:C})=>[v("div",{class:T(["app-navigation-entry",{"app-navigation-entry--editing":n.editingActive,"app-navigation-entry--deleted":t.undo,"app-navigation-entry--legacy":s.isLegacy34,active:t.to&&C||t.active}])},[t.undo?f("",!0):(u(),d("a",{key:0,class:"app-navigation-entry-link","aria-current":t.active||t.to&&C?"page":void 0,"aria-description":t.ariaDescription,"aria-expanded":e.$slots.default?n.opened.toString():void 0,href:t.href||y||"#",target:i.isExternal(t.href)?"_blank":void 0,title:t.title||t.name,onBlur:a[1]||(a[1]=(...k)=>i.handleBlur&&i.handleBlur(...k)),onClick:k=>i.onClick(k,x,y),onFocus:a[2]||(a[2]=(...k)=>i.handleFocus&&i.handleFocus(...k)),onKeydown:a[3]||(a[3]=M(I((...k)=>i.handleTab&&i.handleTab(...k),["exact"]),["tab"]))},[v("div",{class:T(["app-navigation-entry-icon",{[t.icon]:t.icon}])},[t.loading?(u(),E(o,{key:0})):S(e.$slots,"icon",{key:1,active:t.active||t.to&&C},void 0,!0)],2),v("span",{class:T(["app-navigation-entry__name",{"hidden-visually":n.editingActive}])},D(t.name),3),n.editingActive?(u(),d("div",An,[_(l,{ref:"editingInput",modelValue:n.editingValue,"onUpdate:modelValue":a[0]||(a[0]=k=>n.editingValue=k),placeholder:t.editPlaceholder!==""?t.editPlaceholder:t.name,primary:t.to&&C||t.active,onCancel:i.cancelEditing,onConfirm:i.handleEditingDone},null,8,["modelValue","placeholder","primary","onCancel","onConfirm"])])):f("",!0)],40,Cn)),t.undo?(u(),d("div",kn,[v("div",_n,D(t.name),1)])):f("",!0),(e.$slots.actions||e.$slots.counter||t.editable||t.undo)&&!n.editingActive?(u(),d("div",{key:2,class:T(["app-navigation-entry__utils",{"app-navigation-entry__utils--display-actions":t.forceDisplayActions||n.menuOpenLocalValue||t.menuOpen}])},[e.$slots.counter?(u(),d("div",En,[S(e.$slots,"counter",{},void 0,!0)])):f("",!0),e.$slots.actions||t.editable&&!n.editingActive||t.undo?(u(),E(c,{key:1,ref:"actions",class:"app-navigation-entry__actions",container:"#app-navigation-vue",boundariesElement:n.actionsBoundariesElement,inline:t.inlineActions,placement:t.menuPlacement,open:t.menuOpen,forceMenu:t.forceMenu,defaultIcon:t.menuIcon,variant:"tertiary","onUpdate:open":i.onMenuToggle},{icon:B(()=>[S(e.$slots,"menu-icon",{},void 0,!0)]),default:B(()=>[t.editable&&!n.editingActive?(u(),E(h,{key:0,"aria-label":i.editButtonAriaLabel,onClick:i.handleEdit},{icon:B(()=>[_(p,{size:20})]),default:B(()=>[it(" "+D(t.editLabel),1)]),_:1},8,["aria-label","onClick"])):f("",!0),t.undo?(u(),E(h,{key:1,"aria-label":i.undoButtonAriaLabel,onClick:i.handleUndo},{icon:B(()=>[_(g,{size:20})]),_:1},8,["aria-label","onClick"])):f("",!0),S(e.$slots,"actions",{},void 0,!0)]),_:3},8,["boundariesElement","inline","placement","open","forceMenu","defaultIcon","onUpdate:open"])):f("",!0)],2)):f("",!0),t.allowCollapse&&e.$slots.default?(u(),E(m,{key:3,active:t.to&&C||t.active,open:n.opened,onClick:I(i.toggleCollapse,["prevent","stop"])},null,8,["active","open","onClick"])):f("",!0),S(e.$slots,"extra",{},void 0,!0)],2)]),_:3},16)),i.canHaveChildren&&e.$slots.default?(u(),d("ul",Tn,[S(e.$slots,"default",{},void 0,!0)])):f("",!0)],10,yn)}const To=N(vn,[["render",Sn],["__scopeId","data-v-fcab058b"]]);w(ka,Aa);const Bn=J({__name:"NcAppNavigationSearch",props:fe({label:{type:String,default:F("Search …")},placeholder:{type:String,default:null}},{modelValue:{default:""},modelModifiers:{}}),emits:["update:modelValue"],setup(e){const a=Ce(e,"modelValue"),t=Wa(),s=ee(),{focused:n}=Oa(s),i=Number.parseInt(window.getComputedStyle(window.document.body).getPropertyValue("--animation-quick"))||100,o=Nt("actionsContainer"),l=()=>!!t.actions?.({}),p=ee(!0),h=ee(),g=ee(!1);be(n,()=>{p.value=!n.value,window.clearTimeout(h.value),p.value?g.value=!1:window.setTimeout(()=>{g.value=!p.value},i)});function c(){a.value="",l()&&(p.value=!0,Ga(()=>o.value?.querySelector("button")?.focus()))}return(m,y)=>(u(),d("div",{class:T(["app-navigation-search",{"app-navigation-search--has-actions":l()}])},[_(gi,{ref_key:"inputElement",ref:s,modelValue:a.value,"onUpdate:modelValue":y[0]||(y[0]=x=>a.value=x),"aria-label":e.label,class:"app-navigation-search__input",labelOutside:"",placeholder:e.placeholder??e.label,showTrailingButton:a.value.length>0,trailingButtonLabel:P(F)("Clear search"),type:"search",onTrailingButtonClick:c},{"trailing-button-icon":B(()=>[_(It,{size:20})]),_:1},8,["modelValue","aria-label","placeholder","showTrailingButton","trailingButtonLabel"]),l()?(u(),d("div",{key:0,ref:"actionsContainer",class:T(["app-navigation-search__actions",{"app-navigation-search__actions--hidden":!p.value,"hidden-visually":g.value}])},[S(m.$slots,"actions",{},void 0,!0)],2)):f("",!0)],2))}}),So=N(Bn,[["__scopeId","data-v-191b6717"]]);w(_a),w(Ea),w(Gt);const Ln={mounted(e){e.focus()}},Nn="aaa1rp3bb0ott3vie4c1le2ogado5udhabi7c0ademy5centure6ountant0s9o1tor4d0s1ult4e0g1ro2tna4f0l1rica5g0akhan5ency5i0g1rbus3force5tel5kdn3l0ibaba4pay4lfinanz6state5y2sace3tom5m0azon4ericanexpress7family11x2fam3ica3sterdam8nalytics7droid5quan4z2o0l2partments8p0le4q0uarelle8r0ab1mco4chi3my2pa2t0e3s0da2ia2sociates9t0hleta5torney7u0ction5di0ble3o3spost5thor3o0s4w0s2x0a2z0ure5ba0by2idu3namex4d1k2r0celona5laycard4s5efoot5gains6seball5ketball8uhaus5yern5b0c1t1va3cg1n2d1e0ats2uty4er2rlin4st0buy5t2f1g1h0arti5i0ble3d1ke2ng0o3o1z2j1lack0friday9ockbuster8g1omberg7ue3m0s1w2n0pparibas9o0ats3ehringer8fa2m1nd2o0k0ing5sch2tik2on4t1utique6x2r0adesco6idgestone9oadway5ker3ther5ussels7s1t1uild0ers6siness6y1zz3v1w1y1z0h3ca0b1fe2l0l1vinklein9m0era3p2non3petown5ital0one8r0avan4ds2e0er0s4s2sa1e1h1ino4t0ering5holic7ba1n1re3c1d1enter4o1rn3f0a1d2g1h0anel2nel4rity4se2t2eap3intai5ristmas6ome4urch5i0priani6rcle4sco3tadel4i0c2y3k1l0aims4eaning6ick2nic1que6othing5ud3ub0med6m1n1o0ach3des3ffee4llege4ogne5m0mbank4unity6pany2re3uter5sec4ndos3struction8ulting7tact3ractors9oking4l1p2rsica5untry4pon0s4rses6pa2r0edit0card4union9icket5own3s1uise0s6u0isinella9v1w1x1y0mru3ou3z2dad1nce3ta1e1ing3sun4y2clk3ds2e0al0er2s3gree4livery5l1oitte5ta3mocrat6ntal2ist5si0gn4v2hl2iamonds6et2gital5rect0ory7scount3ver5h2y2j1k1m1np2o0cs1tor4g1mains5t1wnload7rive4tv2ubai3pont4rban5vag2r2z2earth3t2c0o2deka3u0cation8e1g1mail3erck5nergy4gineer0ing9terprises10pson4quipment8r0icsson6ni3s0q1tate5t1u0rovision8s2vents5xchange6pert3osed4ress5traspace10fage2il1rwinds6th3mily4n0s2rm0ers5shion4t3edex3edback6rrari3ero6i0delity5o2lm2nal1nce1ial7re0stone6mdale6sh0ing5t0ness6j1k1lickr3ghts4r2orist4wers5y2m1o0o0d1tball6rd1ex2sale4um3undation8x2r0ee1senius7l1ogans4ntier7tr2ujitsu5n0d2rniture7tbol5yi3ga0l0lery3o1up4me0s3p1rden4y2b0iz3d0n2e0a1nt0ing5orge5f1g0ee3h1i0ft0s3ves2ing5l0ass3e1obal2o4m0ail3bh2o1x2n1odaddy5ld0point6f2odyear5g0le4p1t1v2p1q1r0ainger5phics5tis4een3ipe3ocery4up4s1t1u0cci3ge2ide2tars5ru3w1y2hair2mburg5ngout5us3bo2dfc0bank7ealth0care8lp1sinki6re1mes5iphop4samitsu7tachi5v2k0t2m1n1ockey4ldings5iday5medepot5goods5s0ense7nda3rse3spital5t0ing5t0els3mail5use3w2r1sbc3t1u0ghes5yatt3undai7ibm2cbc2e1u2d1e0ee3fm2kano4l1m0amat4db2mo0bilien9n0c1dustries8finiti5o2g1k1stitute6urance4e4t0ernational10uit4vestments10o1piranga7q1r0ish4s0maili5t0anbul7t0au2v3jaguar4va3cb2e0ep2tzt3welry6io2ll2m0p2nj2o0bs1urg4t1y2p0morgan6rs3uegos4niper7kaufen5ddi3e0rryhotels6properties14fh2g1h1i0a1ds2m1ndle4tchen5wi3m1n1oeln3matsu5sher5p0mg2n2r0d1ed3uokgroup8w1y0oto4z2la0caixa5mborghini8er3nd0rover6xess5salle5t0ino3robe5w0yer5b1c1ds2ease3clerc5frak4gal2o2xus4gbt3i0dl2fe0insurance9style7ghting6ke2lly3mited4o2ncoln4k2ve1ing5k1lc1p2oan0s3cker3us3l1ndon4tte1o3ve3pl0financial11r1s1t0d0a3u0ndbeck6xe1ury5v1y2ma0drid4if1son4keup4n0agement7go3p1rket0ing3s4riott5shalls7ttel5ba2c0kinsey7d1e0d0ia3et2lbourne7me1orial6n0u2rck0msd7g1h1iami3crosoft7l1ni1t2t0subishi9k1l0b1s2m0a2n1o0bi0le4da2e1i1m1nash3ey2ster5rmon3tgage6scow4to0rcycles9v0ie4p1q1r1s0d2t0n1r2u0seum3ic4v1w1x1y1z2na0b1goya4me2vy3ba2c1e0c1t0bank4flix4work5ustar5w0s2xt0direct7us4f0l2g0o2hk2i0co2ke1on3nja3ssan1y5l1o0kia3rton4w0ruz3tv4p1r0a1w2tt2u1yc2z2obi1server7ffice5kinawa6layan0group9lo3m0ega4ne1g1l0ine5oo2pen3racle3nge4g0anic5igins6saka4tsuka4t2vh3pa0ge2nasonic7ris2s1tners4s1y3y2ccw3e0t2f0izer5g1h0armacy6d1ilips5one2to0graphy6s4ysio5ics1tet2ures6d1n0g1k2oneer5zza4k1l0ace2y0station9umbing5s3m1n0c2ohl2ker3litie5rn2st3r0axi3ess3ime3o0d0uctions8f1gressive8mo2perties3y5tection8u0dential9s1t1ub2w0c2y2qa1pon3uebec3st5racing4dio4e0ad1lestate6tor2y4cipes5d0umbrella9hab3ise0n3t2liance6n0t0als5pair3ort3ublican8st0aurant8view0s5xroth6ich0ardli6oh3l1o1p2o0cks3deo3gers4om3s0vp3u0gby3hr2n2w0e2yukyu6sa0arland6fe0ty4kura4le1on3msclub4ung5ndvik0coromant12ofi4p1rl2s1ve2xo3b0i1s2c0b1haeffler7midt4olarships8ol3ule3warz5ience5ot3d1e0arch3t2cure1ity6ek2lect4ner3rvices6ven3w1x0y3fr2g1h0angrila6rp3ell3ia1ksha5oes2p0ping5uji3w3i0lk2na1gles5te3j1k0i0n2y0pe4l0ing4m0art3ile4n0cf3o0ccer3ial4ftbank4ware6hu2lar2utions7ng1y2y2pa0ce3ort2t3r0l2s1t0ada2ples4r1tebank4farm7c0group6ockholm6rage3e3ream4udio2y3yle4u0cks3pplies3y2ort5rf1gery5zuki5v1watch4iss4x1y0dney4stems6z2tab1ipei4lk2obao4rget4tamotors6r2too4x0i3c0i2d0k2eam2ch0nology8l1masek5nnis4va3f1g1h0d1eater2re6iaa2ckets5enda4ps2res2ol4j0maxx4x2k0maxx5l1m0all4n1o0day3kyo3ols3p1ray3shiba5tal3urs3wn2yota3s3r0ade1ing4ining5vel0ers0insurance16ust3v2t1ube2i1nes3shu4v0s2w1z2ua1bank3s2g1k1nicom3versity8o2ol2ps2s1y1z2va0cations7na1guard7c1e0gas3ntures6risign5mögensberater2ung14sicherung10t2g1i0ajes4deo3g1king4llas4n1p1rgin4sa1ion4va1o3laanderen9n1odka3lvo3te1ing3o2yage5u2wales2mart4ter4ng0gou5tch0es6eather0channel12bcam3er2site5d0ding5ibo2r3f1hoswho6ien2ki2lliamhill9n0dows4e1ners6me2oodside6rk0s2ld3w2s1tc1f3xbox3erox4ihuan4n2xx2yz3yachts4hoo3maxun5ndex5e1odobashi7ga2kohama6u0tube6t1un3za0ppos4ra3ero3ip2m1one3uerich6w2",In="ελ1υ2бг1ел3дети4ею2католик6ом3мкд2он1сква6онлайн5рг3рус2ф2сайт3рб3укр3қаз3հայ3ישראל5קום3ابوظبي5رامكو5لاردن4بحرين5جزائر5سعودية6عليان5مغرب5مارات5یران5بارت2زار4يتك3ھارت5تونس4سودان3رية5شبكة4عراق2ب2مان4فلسطين6قطر3كاثوليك6وم3مصر2ليسيا5وريتانيا7قع4همراه5پاکستان7ڀارت4कॉम3नेट3भारत0म्3ोत5संगठन5বাংলা5ভারত2ৰত4ਭਾਰਤ4ભારત4ଭାରତ4இந்தியா6லங்கை6சிங்கப்பூர்11భారత్5ಭಾರತ4ഭാരതം5ලංකා4คอม3ไทย3ລາວ3გე2みんな3アマゾン4クラウド4グーグル4コム2ストア3セール3ファッション6ポイント4世界2中信1国1國1文网3亚马逊3企业2佛山2信息2健康2八卦2公司1益2台湾1灣2商城1店1标2嘉里0大酒店5在线2大拿2天主教3娱乐2家電2广东2微博2慈善2我爱你3手机2招聘2政务1府2新加坡2闻2时尚2書籍2机构2淡马锡3游戏2澳門2点看2移动2组织机构4网址1店1站1络2联通2谷歌2购物2通販2集团2電訊盈科4飞利浦3食品2餐厅2香格里拉3港2닷넷1컴2삼성2한국2",Ct="numeric",At="ascii",kt="alpha",ce="asciinumeric",ue="alphanumeric",_t="domain",sa="emoji",wn="scheme",xn="slashscheme",gt="whitespace";function $n(e,a){return e in a||(a[e]=[]),a[e]}function te(e,a,t){a[Ct]&&(a[ce]=!0,a[ue]=!0),a[At]&&(a[ce]=!0,a[kt]=!0),a[ce]&&(a[ue]=!0),a[kt]&&(a[ue]=!0),a[ue]&&(a[_t]=!0),a[sa]&&(a[_t]=!0);for(const s in a){const n=$n(s,t);n.indexOf(e)<0&&n.push(e)}}function Fn(e,a){const t={};for(const s in a)a[s].indexOf(e)>=0&&(t[s]=!0);return t}function H(e=null){this.j={},this.jr=[],this.jd=null,this.t=e}H.groups={},H.prototype={accepts(){return!!this.t},go(e){const a=this,t=a.j[e];if(t)return t;for(let s=0;s<a.jr.length;s++){const n=a.jr[s][0],i=a.jr[s][1];if(i&&n.test(e))return i}return a.jd},has(e,a=!1){return a?e in this.j:!!this.go(e)},ta(e,a,t,s){for(let n=0;n<e.length;n++)this.tt(e[n],a,t,s)},tr(e,a,t,s){s=s||H.groups;let n;return a&&a.j?n=a:(n=new H(a),t&&s&&te(a,t,s)),this.jr.push([e,n]),n},ts(e,a,t,s){let n=this;const i=e.length;if(!i)return n;for(let o=0;o<i-1;o++)n=n.tt(e[o]);return n.tt(e[i-1],a,t,s)},tt(e,a,t,s){s=s||H.groups;const n=this;if(a&&a.j)return n.j[e]=a,a;const i=a;let o,l=n.go(e);if(l?(o=new H,Object.assign(o.j,l.j),o.jr.push.apply(o.jr,l.jr),o.jd=l.jd,o.t=l.t):o=new H,i){if(s)if(o.t&&typeof o.t=="string"){const p=Object.assign(Fn(o.t,s),t);te(i,p,s)}else t&&te(i,t,s);o.t=i}return n.j[e]=o,o}};const b=(e,a,t,s,n)=>e.ta(a,t,s,n),L=(e,a,t,s,n)=>e.tr(a,t,s,n),Ht=(e,a,t,s,n)=>e.ts(a,t,s,n),r=(e,a,t,s,n)=>e.tt(a,t,s,n),Q="WORD",Et="UWORD",oa="ASCIINUMERICAL",ra="ALPHANUMERICAL",ve="LOCALHOST",Tt="TLD",St="UTLD",Se="SCHEME",se="SLASH_SCHEME",wt="NUM",Bt="WS",xt="NL",de="OPENBRACE",pe="CLOSEBRACE",Ne="OPENBRACKET",Ie="CLOSEBRACKET",we="OPENPAREN",xe="CLOSEPAREN",$e="OPENANGLEBRACKET",Fe="CLOSEANGLEBRACKET",De="FULLWIDTHLEFTPAREN",Oe="FULLWIDTHRIGHTPAREN",Re="LEFTCORNERBRACKET",ze="RIGHTCORNERBRACKET",Pe="LEFTWHITECORNERBRACKET",Me="RIGHTWHITECORNERBRACKET",He="FULLWIDTHLESSTHAN",Ue="FULLWIDTHGREATERTHAN",je="AMPERSAND",Ve="APOSTROPHE",Ke="ASTERISK",Y="AT",qe="BACKSLASH",We="BACKTICK",Ge="CARET",ae="COLON",$t="COMMA",Qe="DOLLAR",K="DOT",Ze="EQUALS",Ft="EXCLAMATION",V="HYPHEN",he="PERCENT",Ye="PIPE",Je="PLUS",Xe="POUND",ge="QUERY",Dt="QUOTE",la="FULLWIDTHMIDDLEDOT",Ot="SEMI",q="SLASH",me="TILDE",et="UNDERSCORE",ua="EMOJI",tt="SYM";var ca=Object.freeze({__proto__:null,ALPHANUMERICAL:ra,AMPERSAND:je,APOSTROPHE:Ve,ASCIINUMERICAL:oa,ASTERISK:Ke,AT:Y,BACKSLASH:qe,BACKTICK:We,CARET:Ge,CLOSEANGLEBRACKET:Fe,CLOSEBRACE:pe,CLOSEBRACKET:Ie,CLOSEPAREN:xe,COLON:ae,COMMA:$t,DOLLAR:Qe,DOT:K,EMOJI:ua,EQUALS:Ze,EXCLAMATION:Ft,FULLWIDTHGREATERTHAN:Ue,FULLWIDTHLEFTPAREN:De,FULLWIDTHLESSTHAN:He,FULLWIDTHMIDDLEDOT:la,FULLWIDTHRIGHTPAREN:Oe,HYPHEN:V,LEFTCORNERBRACKET:Re,LEFTWHITECORNERBRACKET:Pe,LOCALHOST:ve,NL:xt,NUM:wt,OPENANGLEBRACKET:$e,OPENBRACE:de,OPENBRACKET:Ne,OPENPAREN:we,PERCENT:he,PIPE:Ye,PLUS:Je,POUND:Xe,QUERY:ge,QUOTE:Dt,RIGHTCORNERBRACKET:ze,RIGHTWHITECORNERBRACKET:Me,SCHEME:Se,SEMI:Ot,SLASH:q,SLASH_SCHEME:se,SYM:tt,TILDE:me,TLD:Tt,UNDERSCORE:et,UTLD:St,UWORD:Et,WORD:Q,WS:Bt});const W=/[a-z]/,le=new RegExp("\\p{L}","u"),mt=new RegExp("\\p{Emoji}","u"),G=/\d/,bt=/\s/,Ut="\r",ft=` `,Dn="️",On="‍",vt="";let ke=null,_e=null;function Rn(e=[]){const a={};H.groups=a;const t=new H;ke==null&&(ke=jt(Nn)),_e==null&&(_e=jt(In)),r(t,"'",Ve),r(t,"{",de),r(t,"}",pe),r(t,"[",Ne),r(t,"]",Ie),r(t,"(",we),r(t,")",xe),r(t,"<",$e),r(t,">",Fe),r(t,"(",De),r(t,")",Oe),r(t,"「",Re),r(t,"」",ze),r(t,"『",Pe),r(t,"』",Me),r(t,"<",He),r(t,">",Ue),r(t,"&",je),r(t,"*",Ke),r(t,"@",Y),r(t,"`",We),r(t,"^",Ge),r(t,":",ae),r(t,",",$t),r(t,"$",Qe),r(t,".",K),r(t,"=",Ze),r(t,"!",Ft),r(t,"-",V),r(t,"%",he),r(t,"|",Ye),r(t,"+",Je),r(t,"#",Xe),r(t,"?",ge),r(t,'"',Dt),r(t,"/",q),r(t,";",Ot),r(t,"~",me),r(t,"_",et),r(t,"\\",qe),r(t,"・",la);const s=L(t,G,wt,{[Ct]:!0});L(s,G,s);const n=L(s,W,oa,{[ce]:!0}),i=L(s,le,ra,{[ue]:!0}),o=L(t,W,Q,{[At]:!0});L(o,G,n),L(o,W,o),L(n,G,n),L(n,W,n);const l=L(t,le,Et,{[kt]:!0});L(l,W),L(l,G,i),L(l,le,l),L(i,G,i),L(i,W),L(i,le,i);const p=r(t,ft,xt,{[gt]:!0}),h=r(t,Ut,Bt,{[gt]:!0}),g=L(t,bt,Bt,{[gt]:!0});r(t,vt,g),r(h,ft,p),r(h,vt,g),L(h,bt,g),r(g,Ut),r(g,ft),L(g,bt,g),r(g,vt,g);const c=L(t,mt,ua,{[sa]:!0});r(c,"#"),L(c,mt,c),r(c,Dn,c);const m=r(c,On);r(m,"#"),L(m,mt,c);const y=[[W,o],[G,n]],x=[[W,null],[le,l],[G,i]];for(let C=0;C<ke.length;C++)Z(t,ke[C],Tt,Q,y);for(let C=0;C<_e.length;C++)Z(t,_e[C],St,Et,x);te(Tt,{tld:!0,ascii:!0},a),te(St,{utld:!0,alpha:!0},a),Z(t,"file",Se,Q,y),Z(t,"mailto",Se,Q,y),Z(t,"http",se,Q,y),Z(t,"https",se,Q,y),Z(t,"ftp",se,Q,y),Z(t,"ftps",se,Q,y),te(Se,{scheme:!0,ascii:!0},a),te(se,{slashscheme:!0,ascii:!0},a),e=e.sort((C,k)=>C[0]>k[0]?1:-1);for(let C=0;C<e.length;C++){const k=e[C][0],$=e[C][1]?{[wn]:!0}:{[xn]:!0};k.indexOf("-")>=0?$[_t]=!0:W.test(k)?G.test(k)?$[ce]=!0:$[At]=!0:$[Ct]=!0,Ht(t,k,k,$)}return Ht(t,"localhost",ve,{ascii:!0}),t.jd=new H(tt),{start:t,tokens:Object.assign({groups:a},ca)}}function da(e,a){const t=zn(a.replace(/[A-Z]/g,l=>l.toLowerCase())),s=t.length,n=[];let i=0,o=0;for(;o<s;){let l=e,p=null,h=0,g=null,c=-1,m=-1;for(;o<s&&(p=l.go(t[o]));)l=p,l.accepts()?(c=0,m=0,g=l):c>=0&&(c+=t[o].length,m++),h+=t[o].length,i+=t[o].length,o++;i-=c,o-=m,h-=c,n.push({t:g.t,v:a.slice(i-h,i),s:i-h,e:i})}return n}function zn(e){const a=[],t=e.length;let s=0;for(;s<t;){let n=e.charCodeAt(s),i,o=n<55296||n>56319||s+1===t||(i=e.charCodeAt(s+1))<56320||i>57343?e[s]:e.slice(s,s+2);a.push(o),s+=o.length}return a}function Z(e,a,t,s,n){let i;const o=a.length;for(let l=0;l<o-1;l++){const p=a[l];e.j[p]?i=e.j[p]:(i=new H(s),i.jr=n.slice(),e.j[p]=i),e=i}return i=new H(t),i.jr=n.slice(),e.j[a[o-1]]=i,i}function jt(e){const a=[],t=[];let s=0,n="0123456789";for(;s<e.length;){let i=0;for(;n.indexOf(e[s+i])>=0;)i++;if(i>0){a.push(t.join(""));for(let o=parseInt(e.substring(s,s+i),10);o>0;o--)t.pop();s+=i}else t.push(e[s]),s++}return a}const ye={defaultProtocol:"http",events:null,format:Vt,formatHref:Vt,nl2br:!1,tagName:"a",target:null,rel:null,validate:!0,truncate:1/0,className:null,attributes:null,ignoreTags:[],render:null};function Rt(e,a=null){let t=Object.assign({},ye);e&&(t=Object.assign(t,e instanceof Rt?e.o:e));const s=t.ignoreTags,n=[];for(let i=0;i<s.length;i++)n.push(s[i].toUpperCase());this.o=t,a&&(this.defaultRender=a),this.ignoreTags=n}Rt.prototype={o:ye,ignoreTags:[],defaultRender(e){return e},check(e){return this.get("validate",e.toString(),e)},get(e,a,t){const s=a!=null;let n=this.o[e];return n&&(typeof n=="object"?(n=t.t in n?n[t.t]:ye[e],typeof n=="function"&&s&&(n=n(a,t))):typeof n=="function"&&s&&(n=n(a,t.t,t)),n)},getObj(e,a,t){let s=this.o[e];return typeof s=="function"&&a!=null&&(s=s(a,t.t,t)),s},render(e){const a=e.render(this);return(this.get("render",null,e)||this.defaultRender)(a,e.t,e)}};function Vt(e){return e}function pa(e,a){this.t="token",this.v=e,this.tk=a}pa.prototype={isLink:!1,toString(){return this.v},toHref(e){return this.toString()},toFormattedString(e){const a=this.toString(),t=e.get("truncate",a,this),s=e.get("format",a,this);return t&&s.length>t?s.substring(0,t)+"…":s},toFormattedHref(e){return e.get("formatHref",this.toHref(e.get("defaultProtocol")),this)},startIndex(){return this.tk[0].s},endIndex(){return this.tk[this.tk.length-1].e},toObject(e=ye.defaultProtocol){return{type:this.t,value:this.toString(),isLink:this.isLink,href:this.toHref(e),start:this.startIndex(),end:this.endIndex()}},toFormattedObject(e){return{type:this.t,value:this.toFormattedString(e),isLink:this.isLink,href:this.toFormattedHref(e),start:this.startIndex(),end:this.endIndex()}},validate(e){return e.get("validate",this.toString(),this)},render(e){const a=this,t=this.toHref(e.get("defaultProtocol")),s=e.get("formatHref",t,this),n=e.get("tagName",t,a),i=this.toFormattedString(e),o={},l=e.get("className",t,a),p=e.get("target",t,a),h=e.get("rel",t,a),g=e.getObj("attributes",t,a),c=e.getObj("events",t,a);return o.href=s,l&&(o.class=l),p&&(o.target=p),h&&(o.rel=h),g&&Object.assign(o,g),{tagName:n,attributes:o,content:i,eventListeners:c}}};function st(e,a){class t extends pa{constructor(n,i){super(n,i),this.t=e}}for(const s in a)t.prototype[s]=a[s];return t.t=e,t}const Pn=st("email",{isLink:!0,toHref(){return"mailto:"+this.toString()}}),Kt=st("text"),Mn=st("nl"),Ee=st("url",{isLink:!0,toHref(e=ye.defaultProtocol){return this.hasProtocol()?this.v:`${e}://${this.v}`},hasProtocol(){const e=this.tk;return e.length>=2&&e[0].t!==ve&&e[1].t===ae}}),j=e=>new H(e);function Hn({groups:e}){const a=e.domain.concat([je,Ke,Y,qe,We,Ge,Qe,Ze,V,wt,he,Ye,Je,Xe,q,tt,me,et]),t=[Ve,ae,$t,K,Ft,he,ge,Dt,Ot,$e,Fe,de,pe,Ie,Ne,we,xe,De,Oe,Re,ze,Pe,Me,He,Ue],s=[je,Ve,Ke,qe,We,Ge,Qe,Ze,V,de,pe,he,Ye,Je,Xe,ge,q,tt,me,et],n=j(),i=r(n,me);b(i,s,i),b(i,e.domain,i);const o=j(),l=j(),p=j();b(n,e.domain,o),b(n,e.scheme,l),b(n,e.slashscheme,p),b(o,s,i),b(o,e.domain,o);const h=r(o,Y);r(i,Y,h),r(l,Y,h),r(p,Y,h);const g=r(i,K);b(g,s,i),b(g,e.domain,i);const c=j();b(h,e.domain,c),b(c,e.domain,c);const m=r(c,K);b(m,e.domain,c);const y=j(Pn);b(m,e.tld,y),b(m,e.utld,y),r(h,ve,y);const x=r(c,V);r(x,V,x),b(x,e.domain,c),b(y,e.domain,c),r(y,K,m),r(y,V,x);const C=r(o,V),k=r(o,K);r(C,V,C),b(C,e.domain,o),b(k,s,i),b(k,e.domain,o);const $=j(Ee);b(k,e.tld,$),b(k,e.utld,$),b($,e.domain,o),b($,s,i),r($,K,k),r($,V,C),r($,Y,h);const ot=r($,ae),z=j(Ee);b(ot,e.numeric,z);const O=j(Ee),re=j();b(O,a,O),b(O,t,re),b(re,a,O),b(re,t,re),r($,q,O),r(z,q,O);const rt=r(l,ae),ga=r(p,ae),ma=r(ga,q),lt=r(ma,q);b(l,e.domain,o),r(l,K,k),r(l,V,C),b(p,e.domain,o),r(p,K,k),r(p,V,C),b(rt,e.domain,O),r(rt,q,O),r(rt,ge,O),b(lt,e.domain,O),b(lt,a,O),r(lt,q,O);const zt=[[de,pe],[Ne,Ie],[we,xe],[$e,Fe],[De,Oe],[Re,ze],[Pe,Me],[He,Ue]];for(let ut=0;ut<zt.length;ut++){const[Pt,ct]=zt[ut],Ae=r(O,Pt);r(re,Pt,Ae);const ie=j(Ee);b(Ae,a,ie);const ne=j();b(Ae,t,ne),r(Ae,ct,O),b(ie,a,ie),b(ie,t,ne),b(ne,a,ie),b(ne,t,ne),r(ie,ct,O),r(ne,ct,O)}return r(n,ve,$),r(n,xt,Mn),{start:n,tokens:ca}}function Un(e,a,t){let s=t.length,n=0,i=[],o=[];for(;n<s;){let l=e,p=null,h=null,g=0,c=null,m=-1;for(;n<s&&!(p=l.go(t[n].t));)o.push(t[n++]);for(;n<s&&(h=p||l.go(t[n].t));)p=null,l=h,l.accepts()?(m=0,c=l):m>=0&&m++,n++,g++;if(m<0)n-=g,n<s&&(o.push(t[n]),n++);else{o.length>0&&(i.push(yt(Kt,a,o)),o=[]),n-=m,g-=m;const y=c.t,x=t.slice(n-g,n);i.push(yt(y,a,x))}}return o.length>0&&i.push(yt(Kt,a,o)),i}function yt(e,a,t){const s=t[0].s,n=t[t.length-1].e,i=a.slice(s,n);return new e(i,t)}const R={scanner:null,parser:null,tokenQueue:[],pluginQueue:[],customSchemes:[],initialized:!1};function jn(){R.scanner=Rn(R.customSchemes);for(let e=0;e<R.tokenQueue.length;e++)R.tokenQueue[e][1]({scanner:R.scanner});R.parser=Hn(R.scanner.tokens);for(let e=0;e<R.pluginQueue.length;e++)R.pluginQueue[e][1]({scanner:R.scanner,parser:R.parser});return R.initialized=!0,R}function ha(e){return R.initialized||jn(),Un(R.parser.start,e,da(R.scanner.start,e))}ha.scan=da;function Vn(e){const a=new Rt({defaultProtocol:"https",target:"_blank",className:"external linkified",attributes:{rel:"nofollow noopener noreferrer"}},Wn),t=ha(e),s=[];for(const n of t)n.t==="nl"&&a.get("nl2br")?s.push(`<br> `):!n.isLink||!a.check(n)?s.push(ia(n.toString())):s.push(a.render(n));return s.join("")}function Kn(e){return e.replace(/"/g,""")}function qn(e){const a=[];for(const t in e){const s=e[t]+"";a.push(`${t}="${Kn(s)}"`)}return a.join(" ")}function Wn({tagName:e,attributes:a,content:t}){return`<${e} ${qn(a)}>${ia(t)}</${e}>`}const Gn=function(e,{value:a}){a?.linkify===!0&&(e.innerHTML=Vn(a.text))},Qn=["title"],Zn=J({__name:"NcAppSidebarHeader",props:{name:{},title:{},linkify:{type:Boolean}},setup(e){const a=Jt("NcAppSidebar:header:ref");return(t,s)=>X((u(),d("h2",{ref_key:"headerRef",ref:a,tabindex:"-1",title:e.title},[it(D(e.name),1)],8,Qn)),[[P(Gn),{text:e.name,linkify:e.linkify}]])}}),Yn={name:"DockRightIcon",emits:["click"],props:{title:{type:String},fillColor:{type:String,default:"currentColor"},size:{type:Number,default:24}}},Jn=["aria-hidden","aria-label"],Xn=["fill","width","height"],es={d:"M20 4H4A2 2 0 0 0 2 6V18A2 2 0 0 0 4 20H20A2 2 0 0 0 22 18V6A2 2 0 0 0 20 4M15 18H4V6H15Z"},ts={key:0};function as(e,a,t,s,n,i){return u(),d("span",U(e.$attrs,{"aria-hidden":t.title?null:"true","aria-label":t.title,class:"material-design-icon dock-right-icon",role:"img",onClick:a[0]||(a[0]=o=>e.$emit("click",o))}),[(u(),d("svg",{fill:t.fillColor,class:"material-design-icon__svg",width:t.size,height:t.size,viewBox:"0 0 24 24"},[v("path",es,[t.title?(u(),d("title",ts,D(t.title),1)):f("",!0)])],8,Xn))],16,Jn)}const is=N(Yn,[["render",as]]),ns={name:"StarIcon",emits:["click"],props:{title:{type:String},fillColor:{type:String,default:"currentColor"},size:{type:Number,default:24}}},ss=["aria-hidden","aria-label"],os=["fill","width","height"],rs={d:"M12,17.27L18.18,21L16.54,13.97L22,9.24L14.81,8.62L12,2L9.19,8.62L2,9.24L7.45,13.97L5.82,21L12,17.27Z"},ls={key:0};function us(e,a,t,s,n,i){return u(),d("span",U(e.$attrs,{"aria-hidden":t.title?null:"true","aria-label":t.title,class:"material-design-icon star-icon",role:"img",onClick:a[0]||(a[0]=o=>e.$emit("click",o))}),[(u(),d("svg",{fill:t.fillColor,class:"material-design-icon__svg",width:t.size,height:t.size,viewBox:"0 0 24 24"},[v("path",rs,[t.title?(u(),d("title",ls,D(t.title),1)):f("",!0)])],8,os))],16,ss)}const cs=N(ns,[["render",us]]),ds={name:"StarOutlineIcon",emits:["click"],props:{title:{type:String},fillColor:{type:String,default:"currentColor"},size:{type:Number,default:24}}},ps=["aria-hidden","aria-label"],hs=["fill","width","height"],gs={d:"M12,15.39L8.24,17.66L9.23,13.38L5.91,10.5L10.29,10.13L12,6.09L13.71,10.13L18.09,10.5L14.77,13.38L15.76,17.66M22,9.24L14.81,8.63L12,2L9.19,8.63L2,9.24L7.45,13.97L5.82,21L12,17.27L18.18,21L16.54,13.97L22,9.24Z"},ms={key:0};function bs(e,a,t,s,n,i){return u(),d("span",U(e.$attrs,{"aria-hidden":t.title?null:"true","aria-label":t.title,class:"material-design-icon star-outline-icon",role:"img",onClick:a[0]||(a[0]=o=>e.$emit("click",o))}),[(u(),d("svg",{fill:t.fillColor,class:"material-design-icon__svg",width:t.size,height:t.size,viewBox:"0 0 24 24"},[v("path",gs,[t.title?(u(),d("title",ms,D(t.title),1)):f("",!0)])],8,hs))],16,ps)}const fs=N(ds,[["render",bs]]),vs=["aria-selected","tabindex"],ys=J({__name:"NcAppSidebarTabsButton",props:fe({tab:{}},{selected:{type:Boolean,required:!0},selectedModifiers:{}}),emits:["update:selected"],setup(e){const a=Ce(e,"selected");return(t,s)=>(u(),d("button",{class:T(["button-vue",[t.$style.sidebarTabsButton,{[t.$style.sidebarTabsButton_selected]:a.value,[t.$style.sidebarTabsButton_legacy]:P(oe)}]]),role:"tab","aria-selected":a.value,tabindex:a.value?0:-1,onClick:s[0]||(s[0]=n=>a.value=!0)},[v("span",{class:T(t.$style.sidebarTabsButton__icon)},[_(aa,{vnodes:e.tab.renderIcon()},{default:B(()=>[v("span",{class:T([t.$style.sidebarTabsButton__legacyIcon,e.tab.icon])},null,2)]),_:1},8,["vnodes"])],2),v("span",{class:T(t.$style.sidebarTabsButton__name)},D(e.tab.name),3)],10,vs))}}),Cs="_sidebarTabsButton_OCROY",As="_sidebarTabsButton_legacy_e9-y9",ks="_sidebarTabsButton_selected_S48M1",_s="_sidebarTabsButton__name_GZRY8",Es="_sidebarTabsButton__icon_ZDmkU",Ts="_sidebarTabsButton__legacyIcon_y6cLW",Ss={"material-design-icon":"_material-design-icon_v9SPG",sidebarTabsButton:Cs,sidebarTabsButton_legacy:As,sidebarTabsButton_selected:ks,sidebarTabsButton__name:_s,sidebarTabsButton__icon:Es,sidebarTabsButton__legacyIcon:Ts},Bs={$style:Ss},Ls=N(ys,[["__cssModules",Bs]]),Ns={name:"NcAppSidebarTabs",components:{NcAppSidebarTabsButton:Ls},provide(){return{registerTab:this.registerTab,unregisterTab:this.unregisterTab,getActiveTab:()=>this.activeTab,isTablistShown:()=>this.hasMultipleTabs}},props:{active:{type:String,default:""},forceTabs:{type:Boolean,default:!1}},emits:["update:active"],data(e){return{tabs:[],activeTab:e.active,isLegacy34:oe}},computed:{hasMultipleTabs(){return this.tabs.length>1},showForSingleTab(){return this.forceTabs&&this.tabs.length===1},currentTabIndex(){return this.tabs.findIndex(e=>e.id===this.activeTab)}},watch:{tabs(){this.active&&this.updateActive()},active(e){e!==this.activeTab&&this.updateActive()}},methods:{setActive(e){this.activeTab=e,this.$emit("update:active",this.activeTab)},focusPreviousTab(){this.currentTabIndex>0&&this.setActive(this.tabs[this.currentTabIndex-1].id),this.focusActiveTab()},focusNextTab(){this.currentTabIndex<this.tabs.length-1&&this.setActive(this.tabs[this.currentTabIndex+1].id),this.focusActiveTab()},focusFirstTab(){this.setActive(this.tabs[0].id),this.focusActiveTab()},focusLastTab(){this.setActive(this.tabs[this.tabs.length-1].id),this.focusActiveTab()},focusActiveTab(){this.$el.querySelector(`#tab-button-${this.activeTab}`).focus()},focusActiveTabContent(){this.$el.querySelector("#tab-"+this.activeTab).focus()},updateActive(){this.activeTab=this.active&&this.tabs.some(({id:e})=>e===this.active)?this.active:this.tabs[0]?.id??""},registerTab(e){this.tabs.push(e),this.tabs.sort((a,t)=>a.order===t.order?a.name.localeCompare(t.name,[mi()]):a.order-t.order),this.updateActive()},unregisterTab(e){const a=this.tabs.findIndex(t=>t.id===e);a!==-1&&this.tabs.splice(a,1),this.activeTab===e&&this.updateActive()}}},Is={class:"app-sidebar-tabs"};function ws(e,a,t,s,n,i){const o=A("NcAppSidebarTabsButton");return u(),d("div",Is,[i.hasMultipleTabs||i.showForSingleTab?(u(),d("div",{key:0,role:"tablist",class:T(["app-sidebar-tabs__nav",{"app-sidebar-tabs__nav--legacy":n.isLegacy34}]),onKeydown:[a[0]||(a[0]=M(I((...l)=>i.focusPreviousTab&&i.focusPreviousTab(...l),["exact","prevent","stop"]),["left"])),a[1]||(a[1]=M(I((...l)=>i.focusNextTab&&i.focusNextTab(...l),["exact","prevent","stop"]),["right"])),a[2]||(a[2]=M(I((...l)=>i.focusActiveTabContent&&i.focusActiveTabContent(...l),["exact","prevent","stop"]),["tab"])),a[3]||(a[3]=M(I((...l)=>i.focusFirstTab&&i.focusFirstTab(...l),["exact","prevent","stop"]),["home"])),a[4]||(a[4]=M(I((...l)=>i.focusLastTab&&i.focusLastTab(...l),["exact","prevent","stop"]),["end"])),a[5]||(a[5]=M(I((...l)=>i.focusFirstTab&&i.focusFirstTab(...l),["exact","prevent","stop"]),["page-up"])),a[6]||(a[6]=M(I((...l)=>i.focusLastTab&&i.focusLastTab(...l),["exact","prevent","stop"]),["page-down"]))]},[(u(!0),d(Ya,null,Ja(n.tabs,l=>(u(),E(o,{id:`tab-button-${l.id}`,key:l.id,class:"app-sidebar-tabs__tab","aria-controls":`tab-${l.id}`,selected:n.activeTab===l.id,tab:l,"onUpdate:selected":p=>i.setActive(l.id)},null,8,["id","aria-controls","selected","tab","onUpdate:selected"]))),128))],34)):f("",!0),v("div",{class:T(["app-sidebar-tabs__content",{"app-sidebar-tabs__content--multiple":i.hasMultipleTabs}])},[S(e.$slots,"default",{},void 0,!0)],2)])}const xs=N(Ns,[["render",ws],["__scopeId","data-v-e74d1502"]]);w(Ta);const $s={name:"NcAppSidebar",components:{NcActions:Lt,NcAppSidebarHeader:Zn,NcAppSidebarTabs:xs,NcButton:nt,NcLoadingIcon:ta,NcEmptyContent:yi,IconArrowRight:na,IconClose:It,IconDockRight:is,IconStar:cs,IconStarOutline:fs},directives:{Focus:Ln,ClickOutside:bi},inject:{ncContentSelector:{from:ui,default:void 0}},props:{active:{type:String,default:""},name:{type:String,required:!0},nameEditable:{type:Boolean,default:!1},namePlaceholder:{type:String,default:""},subname:{type:String,default:""},subtitle:{type:String,default:""},background:{type:String,default:""},starred:{type:Boolean,default:null},starLoading:{type:Boolean,default:!1},loading:{type:Boolean,default:!1},compact:{type:Boolean,default:!1},empty:{type:Boolean,default:!1},forceMenu:{type:Boolean,default:!1},forceTabs:{type:Boolean,default:!1},linkifyName:{type:Boolean,default:!1},title:{type:String,default:""},open:{type:Boolean,default:!0},toggleClasses:{type:[String,Array,Object],default:""},toggleAttrs:{type:Object,default:void 0},noToggle:{type:Boolean,default:!1}},emits:["close","closed","opened","update:active","update:name","update:nameEditable","update:open","update:starred","submitName","dismissEditing"],setup(){const e=ee(null);return Xa("NcAppSidebar:header:ref",e),{uid:at(),isMobile:za(),headerRef:e}},data(){return{changeNameTranslated:F("Change name"),closeTranslated:F("Close sidebar"),favoriteTranslated:F("Favorite"),isStarred:this.starred,focusTrap:null,elementToReturnFocus:null}},computed:{canStar(){return this.isStarred!==null},hasFigureClickListener(){return!!this.$attrs.onFigureClick}},watch:{starred(){this.isStarred=this.starred},isMobile(){this.toggleFocusTrap()},open(){this.checkToggleButtonContainerAvailability()}},created(){this.preserveElementToReturnFocus(),this.checkToggleButtonContainerAvailability()},beforeUnmount(){this.$emit("closed"),this.focusTrap?.deactivate()},methods:{isSlotPopulated:Ra,t:F,preserveElementToReturnFocus(){if(document.activeElement&&document.activeElement!==document.body&&(this.elementToReturnFocus=document.activeElement,this.elementToReturnFocus.getAttribute("role")==="menuitem")){const e=this.elementToReturnFocus.closest('[role="menu"]');if(e){const a=document.querySelector(`[aria-controls="${e.id}"]`);this.elementToReturnFocus=a}}},initFocusTrap(){this.focusTrap||(this.focusTrap=Qt([this.$refs.sidebar,document.querySelector("#header")],{allowOutsideClick:!0,fallbackFocus:this.$refs.closeButton.$el,trapStack:Zt(),escapeDeactivates:!1}))},toggleFocusTrap(){this.open&&this.isMobile?(this.initFocusTrap(),this.focusTrap.activate()):this.focusTrap?.deactivate()},onKeydownEsc(e){this.isMobile&&(e.stopPropagation(),this.closeSidebar())},onAfterEnter(e){this.elementToReturnFocus&&this.focus(),this.toggleFocusTrap(),this.$emit("opened",e)},onAfterLeave(e){this.$emit("closed",e),this.toggleFocusTrap(),this.elementToReturnFocus?.focus({focusVisible:!0}),this.elementToReturnFocus=null},closeSidebar(e){this.$emit("close",e),this.$emit("update:open",!1)},onFigureClick(e){this.$emit("figureClick",e)},toggleStarred(){this.isStarred=!this.isStarred,this.$emit("update:starred",this.isStarred)},async editName(){this.$emit("update:nameEditable",!0),this.nameEditable&&(await this.$nextTick(),this.$refs.nameInput.focus())},focus(){if(!this.open&&!this.noToggle){this.$refs.toggle.$el.focus();return}try{this.headerRef.focus()}catch{}},focusActiveTabContent(){this.preserveElementToReturnFocus(),this.$refs.tabs.focusActiveTabContent()},checkToggleButtonContainerAvailability(){this.open===!1&&!this.noToggle&&!this.ncContentSelector&&ea.warn("[NcAppSidebar] It looks like you want to use NcAppSidebar with the built-in toggle button. This feature is only available when NcAppSidebar is used in NcContent.")},onNameInput(e){this.$emit("update:name",e.target.value)},onSubmitName(e){this.$emit("update:nameEditable",!1),this.$emit("submitName",e)},onDismissEditing(){this.$emit("update:nameEditable",!1),this.$emit("dismissEditing")},onUpdateActive(e){this.$emit("update:active",e)}}},Fs=["aria-labelledby"],Ds={class:"app-sidebar-header__info"},Os={key:0,class:"app-sidebar-header__tertiary-actions"},Rs={class:"app-sidebar-header__name-container"},zs={class:"app-sidebar-header__mainname-container"},Ps=["placeholder","value"],Ms=["title"],Hs={key:2,class:"app-sidebar-header__description"};function Us(e,a,t,s,n,i){const o=A("IconDockRight"),l=A("NcButton"),p=A("NcLoadingIcon"),h=A("IconStar"),g=A("IconStarOutline"),c=A("NcAppSidebarHeader"),m=A("IconArrowRight"),y=A("NcActions"),x=A("IconClose"),C=A("NcAppSidebarTabs"),k=A("NcEmptyContent"),$=Mt("focus"),ot=Mt("click-outside");return u(),E(Za,{appear:"",name:"slide-right",onAfterEnter:i.onAfterEnter,onAfterLeave:i.onAfterLeave},{default:B(()=>[X(v("aside",{id:"app-sidebar-vue",ref:"sidebar",class:"app-sidebar","aria-labelledby":`app-sidebar-vue-${s.uid}__header`,onKeydown:a[6]||(a[6]=M((...z)=>i.onKeydownEsc&&i.onKeydownEsc(...z),["esc"]))},[i.ncContentSelector&&!t.open&&!t.noToggle?(u(),E(Qa,{key:0,to:i.ncContentSelector},[_(l,U({ref:"toggle","aria-label":i.t("Open sidebar"),class:["app-sidebar__toggle",t.toggleClasses],variant:"tertiary"},t.toggleAttrs,{onClick:a[0]||(a[0]=z=>e.$emit("update:open",!0))}),{icon:B(()=>[S(e.$slots,"toggle-icon",{},()=>[_(o,{size:20})],!0)]),_:3},16,["aria-label","class"])],8,["to"])):f("",!0),v("header",{class:T(["app-sidebar-header",{"app-sidebar-header--with-figure":i.isSlotPopulated(e.$slots.header?.())||t.background,"app-sidebar-header--compact":t.compact}])},[t.empty?(u(),E(c,{key:1,class:"app-sidebar-header__mainname--hidden",name:t.name,tabindex:"-1"},null,8,["name"])):S(e.$slots,"info",{key:0},()=>[v("div",Ds,[i.isSlotPopulated(e.$slots.header?.())||t.background?(u(),d("div",{key:0,class:T(["app-sidebar-header__figure",{"app-sidebar-header__figure--with-action":i.hasFigureClickListener}]),style:Xt({backgroundImage:`url(${t.background})`}),tabindex:"0",onClick:a[1]||(a[1]=(...z)=>i.onFigureClick&&i.onFigureClick(...z)),onKeydown:a[2]||(a[2]=M((...z)=>i.onFigureClick&&i.onFigureClick(...z),["enter"]))},[S(e.$slots,"header",{class:"app-sidebar-header__background"},void 0,!0)],38)):f("",!0),v("div",{class:T(["app-sidebar-header__desc",{"app-sidebar-header__desc--with-tertiary-action":i.canStar||i.isSlotPopulated(e.$slots["tertiary-actions"]?.()),"app-sidebar-header__desc--editable":t.nameEditable&&!t.subname,"app-sidebar-header__desc--with-subname--editable":t.nameEditable&&t.subname,"app-sidebar-header__desc--without-actions":!i.isSlotPopulated(e.$slots["secondary-actions"]?.())}])},[i.canStar||i.isSlotPopulated(e.$slots["tertiary-actions"]?.())?(u(),d("div",Os,[S(e.$slots,"tertiary-actions",{},()=>[i.canStar?(u(),E(l,{key:0,"aria-label":n.favoriteTranslated,pressed:n.isStarred,class:"app-sidebar-header__star",variant:"secondary",onClick:I(i.toggleStarred,["prevent"])},{icon:B(()=>[t.starLoading?(u(),E(p,{key:0})):n.isStarred?(u(),E(h,{key:1,size:20})):(u(),E(g,{key:2,size:20}))]),_:1},8,["aria-label","pressed","onClick"])):f("",!0)],!0)])):f("",!0),v("div",Rs,[v("div",zs,[X(_(c,{class:"app-sidebar-header__mainname",name:t.name,linkify:t.linkifyName,title:t.title,tabindex:t.nameEditable?0:-1,onClick:I(i.editName,["self"])},null,8,["name","linkify","title","tabindex","onClick"]),[[dt,!t.nameEditable]]),t.nameEditable?X((u(),d("form",{key:0,class:"app-sidebar-header__mainname-form",onSubmit:a[5]||(a[5]=I((...z)=>i.onSubmitName&&i.onSubmitName(...z),["prevent"]))},[X(v("input",{ref:"nameInput",class:"app-sidebar-header__mainname-input",type:"text",placeholder:t.namePlaceholder,value:t.name,onKeydown:a[3]||(a[3]=M(I((...z)=>i.onDismissEditing&&i.onDismissEditing(...z),["stop"]),["esc"])),onInput:a[4]||(a[4]=(...z)=>i.onNameInput&&i.onNameInput(...z))},null,40,Ps),[[$]]),_(l,{"aria-label":n.changeNameTranslated,type:"submit",variant:"tertiary-no-background"},{icon:B(()=>[_(m,{size:20})]),_:1},8,["aria-label"])],32)),[[ot,()=>i.onSubmitName()]]):f("",!0),i.isSlotPopulated(e.$slots["secondary-actions"]?.())?(u(),E(y,{key:1,class:"app-sidebar-header__menu",forceMenu:t.forceMenu},{default:B(()=>[S(e.$slots,"secondary-actions",{},void 0,!0)]),_:3},8,["forceMenu"])):f("",!0)]),t.subname.trim()!==""||e.$slots.subname?(u(),d("p",{key:0,title:t.subtitle||void 0,class:"app-sidebar-header__subname"},[S(e.$slots,"subname",{},()=>[it(D(t.subname),1)],!0)],8,Ms)):f("",!0)])],2)])],!0),_(l,{ref:"closeButton","aria-label":n.closeTranslated,title:n.closeTranslated,class:"app-sidebar__close",variant:"tertiary",onClick:I(i.closeSidebar,["prevent"])},{icon:B(()=>[_(x,{size:20})]),_:1},8,["aria-label","title","onClick"]),i.isSlotPopulated(e.$slots.description?.())&&!t.empty?(u(),d("div",Hs,[S(e.$slots,"description",{},void 0,!0)])):f("",!0)],2),X(_(C,{ref:"tabs",active:t.active,forceTabs:t.forceTabs,"onUpdate:active":i.onUpdateActive},{default:B(()=>[S(e.$slots,"default",{},void 0,!0)]),_:3},8,["active","forceTabs","onUpdate:active"]),[[dt,!t.loading]]),t.loading?(u(),E(k,{key:1},{icon:B(()=>[_(p,{size:64})]),_:1})):f("",!0)],40,Fs),[[dt,t.open]])]),_:3},8,["onAfterEnter","onAfterLeave"])}const Bo=N($s,[["render",Us],["__scopeId","data-v-e8979b7f"]]);new Ci({concurrency:5}),w(Sa),w(Ba),w(La),F("More items …");const js=Na().detectLanguage(),Te=js.build();Te.ngettext.bind(Te),Te.gettext.bind(Te),w(Ia),w(Gt);const Vs=8,qt=32,Ks={name:"NcListItemIcon",components:{NcAvatar:vi,NcHighlight:di,NcIconSvgWrapper:Be},mixins:[fi],props:{name:{type:String,required:!0},subname:{type:String,default:""},icon:{type:String,default:""},iconSvg:{type:String,default:""},iconName:{type:String,default:""},search:{type:String,default:""},avatarSize:{type:Number,default:qt},noMargin:{type:Boolean,default:!1},displayName:{type:String,default:null},isNoUser:{type:Boolean,default:!1},id:{type:String,default:null}},setup(){return{margin:Vs,defaultSize:qt}},computed:{hasIcon(){return this.icon!==""},hasIconSvg(){return this.iconSvg!==""},isValidSubname(){return this.subname?.trim?.()!==""},isSizeBigEnough(){return this.avatarSize>=26},cssVars(){const e=this.noMargin?0:this.margin;return{"--height":this.avatarSize+2*e+"px","--margin":this.margin+"px"}},searchParts(){const e=/^([^<]*)<([^>]+)>?$/,a=this.search.match(e);return this.isNoUser||!a?[this.search,this.search]:[a[1].trim(),a[2]]}},beforeMount(){!this.isNoUser&&!this.subname&&this.fetchUserStatus(this.user)}},qs=["id"],Ws={class:"option__details"},Gs={key:1},Qs=["aria-label"];function Zs(e,a,t,s,n,i){const o=A("NcAvatar"),l=A("NcHighlight"),p=A("NcIconSvgWrapper");return u(),d("span",{id:t.id,class:T(["option",{"option--compact":t.avatarSize<s.defaultSize}]),style:Xt(i.cssVars)},[_(o,U(e.$attrs,{disableMenu:"",disableTooltip:"",displayName:t.displayName||t.name,isNoUser:t.isNoUser,size:t.avatarSize,class:"option__avatar"}),null,16,["displayName","isNoUser","size"]),v("div",Ws,[_(l,{class:"option__lineone",text:t.name,search:i.searchParts[0]},null,8,["text","search"]),i.isValidSubname&&i.isSizeBigEnough?(u(),E(l,{key:0,class:"option__linetwo",text:t.subname,search:i.searchParts[1]},null,8,["text","search"])):e.hasStatus?(u(),d("span",Gs,[v("span",null,D(e.userStatus.icon),1),v("span",null,D(e.userStatus.message),1)])):f("",!0)]),S(e.$slots,"default",{},()=>[i.hasIconSvg?(u(),E(p,{key:0,class:"option__icon",svg:t.iconSvg,name:t.iconName},null,8,["svg","name"])):i.hasIcon?(u(),d("span",{key:1,class:T(["icon option__icon",t.icon]),"aria-label":t.iconName},null,10,Qs)):f("",!0)],!0)],14,qs)}const Wt=N(Ks,[["render",Zs],["__scopeId","data-v-0ee94269"]]);Number.parseInt(window.getComputedStyle(document.body).getPropertyValue("--default-grid-baseline")),Number.parseInt(window.getComputedStyle(document.body).getPropertyValue("--default-clickable-area")),Number.parseInt(window.getComputedStyle(document.body).getPropertyValue("--clickable-area-small")),w(wa),w(xa),Ai()?.circles?.teamResourceProviders,w($a),F("Related resources"),F("Anything shared with the same group of people will show up here");const Ys=J({__name:"NcSelectUsers",props:fe({ariaLabelClearSelected:{},ariaLabelListbox:{},ariaLabelDeselectOption:{type:Function},disabled:{type:Boolean},inputId:{},inputLabel:{},labelOutside:{type:Boolean},keepOpen:{type:Boolean},loading:{type:Boolean},multiple:{type:Boolean},noWrap:{type:Boolean},options:{},placeholder:{},required:{type:Boolean}},{modelValue:{},modelModifiers:{}}),emits:fe(["search"],["update:modelValue"]),setup(e,{emit:a}){const t=Ce(e,"modelValue"),s=a,n=ee("");be(n,()=>s("search",n.value));const i=Number.parseInt(window.getComputedStyle(document.body).getPropertyValue("--default-clickable-area")),o=Number.parseInt(window.getComputedStyle(document.body).getPropertyValue("--default-grid-baseline")),l=i-2*o;function p(h,g,c){const m=/[^<]*<([^>]+)/,y=c.match(m),x=h.subname?.toLocaleLowerCase()??"";return y&&x.indexOf(y[1].toLocaleLowerCase())>-1||`${g} ${h.subname}`.toLocaleLowerCase().indexOf(c.toLocaleLowerCase())>-1}return(h,g)=>(u(),E(P(pi),U({modelValue:t.value,"onUpdate:modelValue":g[0]||(g[0]=c=>t.value=c),class:"nc-select-users"},h.$props,{filterBy:p,label:"displayName",onSearch:g[1]||(g[1]=c=>n.value=c)}),{option:B(c=>[_(P(Wt),U(c,{avatarSize:32,name:c.displayName,search:n.value}),null,16,["name","search"])]),"selected-option":B(c=>[_(P(Wt),U(c,{avatarSize:l,name:c.displayName,noMargin:"",search:n.value}),null,16,["name","search"])]),_:1},16,["modelValue"]))}}),Lo=N(Ys,[["__scopeId","data-v-e8e18fd3"]]);w(Fa),ii(function(e){this.loadGroup(e)},200);const Js={class:"textarea__main-wrapper"},Xs=["id","aria-describedby","disabled","placeholder","value"],eo=["for"],to=["id"],ao=J({inheritAttrs:!1,__name:"NcTextArea",props:fe({disabled:{type:Boolean},error:{type:Boolean},helperText:{default:void 0},id:{default:()=>at()},inputClass:{default:""},label:{default:void 0},labelOutside:{type:Boolean},placeholder:{default:void 0},resize:{default:"both"},success:{type:Boolean}},{modelValue:{required:!0},modelModifiers:{}}),emits:["update:modelValue"],setup(e,{expose:a}){const t=Ce(e,"modelValue"),s=e;a({focus:h,select:g});const n=ei(),i=Nt("input"),o=Le(()=>s.placeholder||(ht?s.label:void 0));be(()=>s.labelOutside,()=>{!s.labelOutside&&!s.label&&ea.warn("[NcTextArea] You need to add a label to the NcInputField component. Either use the prop label or use an external one, as per the example in the documentation.")});const l=Le(()=>{const c=[];return s.helperText&&c.push(`${s.id}-helper-text`),typeof n["aria-describedby"]=="string"&&c.push(n["aria-describedby"]),c.join(" ")||void 0});function p(c){const{value:m}=c.target;t.value=m}function h(c){i.value.focus(c)}function g(){i.value.select()}return(c,m)=>(u(),d("div",{class:T(["textarea",[c.$attrs.class,{"textarea--disabled":e.disabled,"textarea--legacy":P(ht)}]])},[v("div",Js,[v("textarea",U({...c.$attrs,class:void 0},{id:e.id,ref:"input","aria-describedby":l.value,"aria-live":"polite",class:["textarea__input",[e.inputClass,{"textarea__input--label-outside":e.labelOutside,"textarea__input--legacy":P(ht),"textarea__input--success":e.success,"textarea__input--error":e.error}]],disabled:e.disabled,placeholder:o.value,style:{resize:e.resize},value:t.value,onInput:p}),null,16,Xs),e.labelOutside?f("",!0):(u(),d("label",{key:0,class:"textarea__label",for:e.id},D(e.label),9,eo))]),e.helperText?(u(),d("p",{key:0,id:`${e.id}-helper-text`,class:T(["textarea__helper-text-message",{"textarea__helper-text-message--error":e.error,"textarea__helper-text-message--success":e.success}])},[e.success?(u(),E(Be,{key:0,class:"textarea__helper-text-message__icon",path:P(oi),inline:""},null,8,["path"])):e.error?(u(),E(Be,{key:1,class:"textarea__helper-text-message__icon",path:P(ri),inline:""},null,8,["path"])):f("",!0),it(" "+D(e.helperText),1)],10,to)):f("",!0)],2))}}),No=N(ao,[["__scopeId","data-v-d327fb49"]]);export{Lo as N,No as a,_o as b,Eo as c,To as d,So as e,Bo as f}; -//# sourceMappingURL=NcTextArea-Dxzj4zdb-cEtDIZuj.chunk.mjs.map +//# sourceMappingURL=NcTextArea-Dxzj4zdb-DLw_yRcD.chunk.mjs.map diff --git a/dist/NcTextArea-Dxzj4zdb-cEtDIZuj.chunk.mjs.license b/dist/NcTextArea-Dxzj4zdb-DLw_yRcD.chunk.mjs.license similarity index 100% rename from dist/NcTextArea-Dxzj4zdb-cEtDIZuj.chunk.mjs.license rename to dist/NcTextArea-Dxzj4zdb-DLw_yRcD.chunk.mjs.license diff --git a/dist/NcTextArea-Dxzj4zdb-cEtDIZuj.chunk.mjs.map b/dist/NcTextArea-Dxzj4zdb-DLw_yRcD.chunk.mjs.map similarity index 99% rename from dist/NcTextArea-Dxzj4zdb-cEtDIZuj.chunk.mjs.map rename to dist/NcTextArea-Dxzj4zdb-DLw_yRcD.chunk.mjs.map index 6cdc2ee6a4947..dd786b6ee1acf 100644 --- a/dist/NcTextArea-Dxzj4zdb-cEtDIZuj.chunk.mjs.map +++ b/dist/NcTextArea-Dxzj4zdb-DLw_yRcD.chunk.mjs.map @@ -1 +1 @@ -{"version":3,"file":"NcTextArea-Dxzj4zdb-cEtDIZuj.chunk.mjs","sources":["../node_modules/@nextcloud/vue/dist/chunks/NcActionButtonGroup-Dd03Oluy.mjs","../node_modules/@nextcloud/vue/dist/chunks/NcAppNavigationList-CGSWabRB.mjs","../node_modules/@nextcloud/vue/dist/chunks/NcAppNavigation-g57j16pB.mjs","../node_modules/@nextcloud/vue/dist/chunks/NcAppNavigationCaption-VjSWJ8R4.mjs","../node_modules/@nextcloud/vue/dist/chunks/ChevronUp-ChH8oB7p.mjs","../node_modules/@nextcloud/vue/dist/chunks/ArrowRight-B1ncAhus.mjs","../node_modules/@nextcloud/vue/dist/chunks/NcInputConfirmCancel-CGTllrXj.mjs","../node_modules/@nextcloud/vue/dist/chunks/NcAppNavigationItem-CDeYtA3E.mjs","../node_modules/@nextcloud/vue/dist/chunks/NcAppNavigationSearch-CQQWb1Eq.mjs","../node_modules/@nextcloud/vue/dist/chunks/NcAppNavigationSettings-DoMjRExO.mjs","../node_modules/@nextcloud/vue/dist/chunks/NcAppSettingsDialog-BPcEYLjP.mjs","../node_modules/@nextcloud/vue/dist/chunks/NcAppSettingsShortcutsSection-DLwubKV9.mjs","../node_modules/@nextcloud/vue/dist/directives/Focus/index.mjs","../node_modules/linkifyjs/dist/linkify.mjs","../node_modules/@nextcloud/vue/dist/directives/Linkify/index.mjs","../node_modules/@nextcloud/vue/dist/chunks/NcAppSidebarHeader.vue_vue_type_script_setup_true_lang-C-QhdyiN.mjs","../node_modules/@nextcloud/vue/dist/chunks/NcAppSidebar-C8YzAzrZ.mjs","../node_modules/@nextcloud/vue/dist/functions/preloadImage/index.mjs","../node_modules/@nextcloud/vue/dist/chunks/NcCollectionList-B9qCtjJw.mjs","../node_modules/@nextcloud/vue/dist/chunks/NcDashboardWidget-zmbDEGL-.mjs","../node_modules/@nextcloud/vue/dist/chunks/NcFilePicker-bD2toutn.mjs","../node_modules/@nextcloud/vue/dist/chunks/NcKbd-Bh_Tk6Ar.mjs","../node_modules/@nextcloud/vue/dist/chunks/NcHotkeyList-B4WjTLAp.mjs","../node_modules/@nextcloud/vue/dist/chunks/NcListItemIcon-Dl_tfkk9.mjs","../node_modules/@nextcloud/vue/dist/chunks/NcProgressBar-C-ane-Ni.mjs","../node_modules/@nextcloud/vue/dist/chunks/NcRelatedResourcesPanel-D_Ttpg5_.mjs","../node_modules/@nextcloud/vue/dist/chunks/NcSelectUsers-K14Bepkq.mjs","../node_modules/@nextcloud/vue/dist/chunks/NcSettingsSelectGroup-SYJ8-XlR.mjs","../node_modules/@nextcloud/vue/dist/chunks/NcTextArea-Dxzj4zdb.mjs"],"sourcesContent":["import '../assets/NcActionButtonGroup-Bt8kRk79.css';\nimport { defineComponent, openBlock, createElementBlock, toDisplayString, createCommentVNode, createElementVNode, renderSlot } from \"vue\";\nimport { r as register, a as t } from \"./_l10n-wdIzZwir.mjs\";\nimport { c as createElementId } from \"./createElementId-DhjFt1I9.mjs\";\nimport { a as NC_ACTIONS_IS_SEMANTIC_MENU } from \"./useNcActions-BzPO2c4h.mjs\";\nimport { _ as _export_sfc } from \"./_plugin-vue_export-helper-1tPrXgE0.mjs\";\nregister();\nconst _sfc_main = defineComponent({\n name: \"NcActionButtonGroup\",\n inject: {\n isInSemanticMenu: {\n from: NC_ACTIONS_IS_SEMANTIC_MENU,\n default: false\n }\n },\n props: {\n /**\n * Optional text shown below the button group\n */\n name: {\n required: false,\n default: void 0,\n type: String\n }\n },\n setup() {\n return {\n labelId: createElementId()\n };\n },\n methods: {\n t\n }\n});\nconst _hoisted_1 = [\"role\"];\nconst _hoisted_2 = [\"id\"];\nconst _hoisted_3 = [\"aria-labelledby\"];\nfunction _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {\n return openBlock(), createElementBlock(\"li\", {\n class: \"nc-button-group-base\",\n role: _ctx.isInSemanticMenu && \"presentation\"\n }, [\n _ctx.name ? (openBlock(), createElementBlock(\"div\", {\n key: 0,\n id: _ctx.labelId\n }, toDisplayString(_ctx.name), 9, _hoisted_2)) : createCommentVNode(\"\", true),\n createElementVNode(\"ul\", {\n class: \"nc-button-group-content\",\n role: \"group\",\n \"aria-labelledby\": _ctx.name ? _ctx.labelId : void 0\n }, [\n renderSlot(_ctx.$slots, \"default\")\n ], 8, _hoisted_3)\n ], 8, _hoisted_1);\n}\nconst NcActionButtonGroup = /* @__PURE__ */ _export_sfc(_sfc_main, [[\"render\", _sfc_render], [\"__scopeId\", \"data-v-6a2b8de0\"]]);\nexport {\n NcActionButtonGroup as N\n};\n//# sourceMappingURL=NcActionButtonGroup-Dd03Oluy.mjs.map\n","import '../assets/NcAppNavigationList--36j6Acm.css';\nimport { openBlock, createElementBlock, renderSlot } from \"vue\";\nimport { _ as _export_sfc } from \"./_plugin-vue_export-helper-1tPrXgE0.mjs\";\nconst _sfc_main = {\n name: \"NcAppNavigationList\"\n};\nconst _hoisted_1 = { class: \"app-navigation-list\" };\nfunction _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {\n return openBlock(), createElementBlock(\"ul\", _hoisted_1, [\n renderSlot(_ctx.$slots, \"default\", {}, void 0, true)\n ]);\n}\nconst NcAppNavigationList = /* @__PURE__ */ _export_sfc(_sfc_main, [[\"render\", _sfc_render], [\"__scopeId\", \"data-v-d72957ed\"]]);\nexport {\n NcAppNavigationList as N\n};\n//# sourceMappingURL=NcAppNavigationList-CGSWabRB.mjs.map\n","import '../assets/NcAppNavigation-OHw55TTZ.css';\nimport { defineComponent, useModel, computed, openBlock, createElementBlock, createVNode, unref, withCtx, inject, warn, useTemplateRef, ref, watchEffect, watch, onMounted, onUnmounted, normalizeClass, createElementVNode, withKeys, renderSlot, createBlock, createCommentVNode } from \"vue\";\nimport { subscribe, emit, unsubscribe } from \"@nextcloud/event-bus\";\nimport { createFocusTrap } from \"focus-trap\";\nimport { N as NcAppNavigationList } from \"./NcAppNavigationList-CGSWabRB.mjs\";\nimport { G as mdiMenuOpen, H as mdiMenu } from \"./mdi-CpchYUUV.mjs\";\nimport { N as NcIconSvgWrapper } from \"./NcIconSvgWrapper-g8ubWhoz.mjs\";\nimport { r as register, P as t20, a as t } from \"./_l10n-wdIzZwir.mjs\";\nimport { N as NcButton } from \"./NcButton-jvoYS2my.mjs\";\nimport { _ as _export_sfc } from \"./_plugin-vue_export-helper-1tPrXgE0.mjs\";\nimport { useIsMobile } from \"../composables/useIsMobile/index.mjs\";\nimport { g as getTrapStack } from \"./focusTrap-HJQ4pqHV.mjs\";\nimport { i as isLegacy34 } from \"./legacy-BoqDmOCa.mjs\";\nimport { H as HAS_APP_NAVIGATION_KEY } from \"./constants-Ciwvl5xb.mjs\";\nregister(t20);\nconst _hoisted_1$1 = { class: \"app-navigation-toggle-wrapper\" };\nconst _sfc_main$1 = /* @__PURE__ */ defineComponent({\n __name: \"NcAppNavigationToggle\",\n props: {\n \"open\": { type: Boolean, ...{ required: true } },\n \"openModifiers\": {}\n },\n emits: [\"update:open\"],\n setup(__props) {\n const open = useModel(__props, \"open\");\n const title = computed(() => open.value ? t(\"Close navigation\") : t(\"Open navigation\"));\n return (_ctx, _cache) => {\n return openBlock(), createElementBlock(\"div\", _hoisted_1$1, [\n createVNode(unref(NcButton), {\n class: \"app-navigation-toggle\",\n \"aria-controls\": \"app-navigation-vue\",\n \"aria-expanded\": open.value ? \"true\" : \"false\",\n \"aria-label\": title.value,\n title: title.value,\n variant: \"tertiary\",\n onClick: _cache[0] || (_cache[0] = ($event) => open.value = !open.value)\n }, {\n icon: withCtx(() => [\n createVNode(NcIconSvgWrapper, {\n path: open.value ? unref(mdiMenuOpen) : unref(mdiMenu)\n }, null, 8, [\"path\"])\n ]),\n _: 1\n }, 8, [\"aria-expanded\", \"aria-label\", \"title\"])\n ]);\n };\n }\n});\nconst NcAppNavigationToggle = /* @__PURE__ */ _export_sfc(_sfc_main$1, [[\"__scopeId\", \"data-v-5a15295d\"]]);\nconst _hoisted_1 = [\"aria-hidden\", \"aria-label\", \"aria-labelledby\", \"inert\"];\nconst _hoisted_2 = { class: \"app-navigation__search\" };\nconst _sfc_main = /* @__PURE__ */ defineComponent({\n __name: \"NcAppNavigation\",\n props: {\n ariaLabel: {},\n ariaLabelledby: {}\n },\n setup(__props) {\n const props = __props;\n let focusTrap;\n const setHasAppNavigation = inject(\n HAS_APP_NAVIGATION_KEY,\n () => warn(\"NcAppNavigation is not mounted inside NcContent, this is probably an error.\"),\n false\n );\n const appNavigationContainerElement = useTemplateRef(\"appNavigationContainer\");\n const isMobile = useIsMobile();\n const open = ref(!isMobile.value);\n const shouldActivateFocusTrap = computed(() => isMobile.value && open.value);\n watchEffect(() => {\n if (!props.ariaLabel && !props.ariaLabelledby) {\n warn(\"NcAppNavigation requires either `ariaLabel` or `ariaLabelledby` to be set for accessibility.\");\n }\n });\n watch(isMobile, () => {\n open.value = !isMobile.value;\n });\n watch(shouldActivateFocusTrap, () => {\n toggleFocusTrap();\n });\n onMounted(() => {\n setHasAppNavigation(true);\n subscribe(\"toggle-navigation\", toggleNavigationByEventBus);\n emit(\"navigation-toggled\", {\n open: open.value\n });\n focusTrap = createFocusTrap(appNavigationContainerElement.value, {\n allowOutsideClick: true,\n clickOutsideDeactivates: () => {\n if (isMobile.value) {\n focusTrap.deactivate({ returnFocus: false });\n toggleNavigation(false);\n }\n return false;\n },\n fallbackFocus: appNavigationContainerElement.value,\n trapStack: getTrapStack(),\n escapeDeactivates: false\n });\n toggleFocusTrap();\n });\n onUnmounted(() => {\n setHasAppNavigation(false);\n unsubscribe(\"toggle-navigation\", toggleNavigationByEventBus);\n focusTrap.deactivate();\n });\n function toggleNavigation(state) {\n if (open.value === state) {\n emit(\"navigation-toggled\", {\n open: open.value\n });\n return;\n }\n open.value = state === void 0 ? !open.value : state;\n const bodyStyles = getComputedStyle(document.body);\n const animationLength = parseInt(bodyStyles.getPropertyValue(\"--animation-quick\")) || 100;\n setTimeout(() => {\n emit(\"navigation-toggled\", {\n open: open.value\n });\n }, 1.5 * animationLength);\n }\n function toggleNavigationByEventBus({ open: open2 }) {\n return toggleNavigation(open2);\n }\n function toggleFocusTrap() {\n if (shouldActivateFocusTrap.value) {\n focusTrap.activate();\n } else {\n focusTrap.deactivate();\n }\n }\n function handleEsc() {\n if (isMobile.value) {\n toggleNavigation(false);\n }\n }\n return (_ctx, _cache) => {\n return openBlock(), createElementBlock(\"div\", {\n ref: \"appNavigationContainer\",\n class: normalizeClass([\"app-navigation\", {\n \"app-navigation--closed\": !open.value,\n \"app-navigation--legacy\": unref(isLegacy34)\n }])\n }, [\n createElementVNode(\"nav\", {\n id: \"app-navigation-vue\",\n \"aria-hidden\": open.value ? \"false\" : \"true\",\n \"aria-label\": __props.ariaLabel || void 0,\n \"aria-labelledby\": __props.ariaLabelledby || void 0,\n class: \"app-navigation__content\",\n inert: !open.value || void 0,\n onKeydown: withKeys(handleEsc, [\"esc\"])\n }, [\n createElementVNode(\"div\", _hoisted_2, [\n renderSlot(_ctx.$slots, \"search\", {}, void 0, true)\n ]),\n createElementVNode(\"div\", {\n class: normalizeClass([\"app-navigation__body\", { \"app-navigation__body--no-list\": !_ctx.$slots.list }])\n }, [\n renderSlot(_ctx.$slots, \"default\", {}, void 0, true)\n ], 2),\n _ctx.$slots.list ? (openBlock(), createBlock(NcAppNavigationList, {\n key: 0,\n class: \"app-navigation__list\"\n }, {\n default: withCtx(() => [\n renderSlot(_ctx.$slots, \"list\", {}, void 0, true)\n ]),\n _: 3\n })) : createCommentVNode(\"\", true),\n renderSlot(_ctx.$slots, \"footer\", {}, void 0, true)\n ], 40, _hoisted_1),\n createVNode(NcAppNavigationToggle, {\n open: open.value,\n \"onUpdate:open\": toggleNavigation\n }, null, 8, [\"open\"])\n ], 2);\n };\n }\n});\nconst NcAppNavigation = /* @__PURE__ */ _export_sfc(_sfc_main, [[\"__scopeId\", \"data-v-1344f70d\"]]);\nexport {\n NcAppNavigation as N\n};\n//# sourceMappingURL=NcAppNavigation-g57j16pB.mjs.map\n","import '../assets/NcAppNavigationCaption-ggcWspH2.css';\nimport { N as NcActions } from \"./NcActions-C-wDqSrv.mjs\";\nimport { resolveComponent, openBlock, createBlock, resolveDynamicComponent, normalizeClass, withCtx, createTextVNode, toDisplayString, createElementBlock, createVNode, normalizeProps, guardReactiveProps, renderSlot, createCommentVNode } from \"vue\";\nimport { _ as _export_sfc } from \"./_plugin-vue_export-helper-1tPrXgE0.mjs\";\nconst _sfc_main = {\n name: \"NcAppNavigationCaption\",\n components: {\n NcActions\n },\n props: {\n /**\n * The text of the caption\n */\n name: {\n type: String,\n required: true\n },\n /**\n * `id` to set on the inner caption\n * Can be used for connecting the `NcActionCaption` with `NcActionList` using `aria-labelledby`.\n */\n headingId: {\n type: String,\n default: null\n },\n /**\n * Enable when used as a heading\n * e.g. Before NcAppNavigationList\n */\n isHeading: {\n type: Boolean,\n default: false\n },\n /**\n * If `isHeading` is set, this defines the heading level that should be used\n */\n headingLevel: {\n type: Number,\n default: 2\n },\n /**\n * Any [NcActions](#/Components/NcActions?id=ncactions-1) prop\n */\n // Not an actual prop but needed to show in vue-styleguidist docs\n ...NcActions.props\n },\n computed: {\n actionsProps() {\n const actionProps = Object.keys(NcActions.props);\n const props = Object.entries(this.$props).filter(([key, _value]) => actionProps.includes(key));\n return Object.fromEntries(props);\n },\n wrapperTag() {\n return this.isHeading ? \"div\" : \"li\";\n },\n captionTag() {\n const headingLevel = Math.max(2, this.headingLevel);\n return this.isHeading ? `h${headingLevel}` : \"span\";\n }\n }\n};\nconst _hoisted_1 = {\n key: 0,\n class: \"app-navigation-caption__actions\"\n};\nfunction _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {\n const _component_NcActions = resolveComponent(\"NcActions\");\n return openBlock(), createBlock(resolveDynamicComponent($options.wrapperTag), {\n class: normalizeClass([\"app-navigation-caption\", { \"app-navigation-caption--heading\": $props.isHeading }])\n }, {\n default: withCtx(() => [\n (openBlock(), createBlock(resolveDynamicComponent($options.captionTag), {\n id: $props.headingId,\n class: \"app-navigation-caption__name\"\n }, {\n default: withCtx(() => [\n createTextVNode(toDisplayString($props.name), 1)\n ]),\n _: 1\n }, 8, [\"id\"])),\n !!_ctx.$slots.actions ? (openBlock(), createElementBlock(\"div\", _hoisted_1, [\n createVNode(_component_NcActions, normalizeProps(guardReactiveProps($options.actionsProps)), {\n icon: withCtx(() => [\n renderSlot(_ctx.$slots, \"actionsTriggerIcon\", {}, void 0, true)\n ]),\n default: withCtx(() => [\n renderSlot(_ctx.$slots, \"actions\", {}, void 0, true)\n ]),\n _: 3\n }, 16)\n ])) : createCommentVNode(\"\", true)\n ]),\n _: 3\n }, 8, [\"class\"]);\n}\nconst NcAppNavigationCaption = /* @__PURE__ */ _export_sfc(_sfc_main, [[\"render\", _sfc_render], [\"__scopeId\", \"data-v-f0e411c2\"]]);\nexport {\n NcAppNavigationCaption as N\n};\n//# sourceMappingURL=NcAppNavigationCaption-VjSWJ8R4.mjs.map\n","import { openBlock, createElementBlock, mergeProps, createElementVNode, toDisplayString, createCommentVNode } from \"vue\";\nimport { _ as _export_sfc } from \"./_plugin-vue_export-helper-1tPrXgE0.mjs\";\nconst _sfc_main = {\n name: \"ChevronUpIcon\",\n emits: [\"click\"],\n props: {\n title: {\n type: String\n },\n fillColor: {\n type: String,\n default: \"currentColor\"\n },\n size: {\n type: Number,\n default: 24\n }\n }\n};\nconst _hoisted_1 = [\"aria-hidden\", \"aria-label\"];\nconst _hoisted_2 = [\"fill\", \"width\", \"height\"];\nconst _hoisted_3 = { d: \"M7.41,15.41L12,10.83L16.59,15.41L18,14L12,8L6,14L7.41,15.41Z\" };\nconst _hoisted_4 = { key: 0 };\nfunction _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {\n return openBlock(), createElementBlock(\"span\", mergeProps(_ctx.$attrs, {\n \"aria-hidden\": $props.title ? null : \"true\",\n \"aria-label\": $props.title,\n class: \"material-design-icon chevron-up-icon\",\n role: \"img\",\n onClick: _cache[0] || (_cache[0] = ($event) => _ctx.$emit(\"click\", $event))\n }), [\n (openBlock(), createElementBlock(\"svg\", {\n fill: $props.fillColor,\n class: \"material-design-icon__svg\",\n width: $props.size,\n height: $props.size,\n viewBox: \"0 0 24 24\"\n }, [\n createElementVNode(\"path\", _hoisted_3, [\n $props.title ? (openBlock(), createElementBlock(\"title\", _hoisted_4, toDisplayString($props.title), 1)) : createCommentVNode(\"\", true)\n ])\n ], 8, _hoisted_2))\n ], 16, _hoisted_1);\n}\nconst ChevronUp = /* @__PURE__ */ _export_sfc(_sfc_main, [[\"render\", _sfc_render]]);\nexport {\n ChevronUp as C\n};\n//# sourceMappingURL=ChevronUp-ChH8oB7p.mjs.map\n","import { openBlock, createElementBlock, mergeProps, createElementVNode, toDisplayString, createCommentVNode } from \"vue\";\nimport { _ as _export_sfc } from \"./_plugin-vue_export-helper-1tPrXgE0.mjs\";\nconst _sfc_main = {\n name: \"ArrowRightIcon\",\n emits: [\"click\"],\n props: {\n title: {\n type: String\n },\n fillColor: {\n type: String,\n default: \"currentColor\"\n },\n size: {\n type: Number,\n default: 24\n }\n }\n};\nconst _hoisted_1 = [\"aria-hidden\", \"aria-label\"];\nconst _hoisted_2 = [\"fill\", \"width\", \"height\"];\nconst _hoisted_3 = { d: \"M4,11V13H16L10.5,18.5L11.92,19.92L19.84,12L11.92,4.08L10.5,5.5L16,11H4Z\" };\nconst _hoisted_4 = { key: 0 };\nfunction _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {\n return openBlock(), createElementBlock(\"span\", mergeProps(_ctx.$attrs, {\n \"aria-hidden\": $props.title ? null : \"true\",\n \"aria-label\": $props.title,\n class: \"material-design-icon arrow-right-icon\",\n role: \"img\",\n onClick: _cache[0] || (_cache[0] = ($event) => _ctx.$emit(\"click\", $event))\n }), [\n (openBlock(), createElementBlock(\"svg\", {\n fill: $props.fillColor,\n class: \"material-design-icon__svg\",\n width: $props.size,\n height: $props.size,\n viewBox: \"0 0 24 24\"\n }, [\n createElementVNode(\"path\", _hoisted_3, [\n $props.title ? (openBlock(), createElementBlock(\"title\", _hoisted_4, toDisplayString($props.title), 1)) : createCommentVNode(\"\", true)\n ])\n ], 8, _hoisted_2))\n ], 16, _hoisted_1);\n}\nconst IconArrowRight = /* @__PURE__ */ _export_sfc(_sfc_main, [[\"render\", _sfc_render]]);\nexport {\n IconArrowRight as I\n};\n//# sourceMappingURL=ArrowRight-B1ncAhus.mjs.map\n","import '../assets/NcInputConfirmCancel-DZEDRf0t.css';\nimport { I as IconArrowRight } from \"./ArrowRight-B1ncAhus.mjs\";\nimport { I as IconClose } from \"./Close-CuhcJnX2.mjs\";\nimport { r as register, k as t14, a as t } from \"./_l10n-wdIzZwir.mjs\";\nimport { i as isLegacy34 } from \"./legacy-BoqDmOCa.mjs\";\nimport { N as NcButton } from \"./NcButton-jvoYS2my.mjs\";\nimport { resolveComponent, openBlock, createElementBlock, normalizeClass, createElementVNode, withModifiers, withKeys, withDirectives, vModelText, createVNode, withCtx } from \"vue\";\nimport { _ as _export_sfc } from \"./_plugin-vue_export-helper-1tPrXgE0.mjs\";\nregister(t14);\nconst _sfc_main = {\n name: \"NcInputConfirmCancel\",\n components: {\n IconArrowRight,\n IconClose,\n NcButton\n },\n props: {\n /**\n * If this element is used on a primary element set to true for primary styling.\n */\n primary: {\n default: false,\n type: Boolean\n },\n /**\n * Placeholder of the edit field\n */\n placeholder: {\n default: \"\",\n type: String\n },\n /**\n * The current name (model value)\n */\n modelValue: {\n default: \"\",\n type: String\n }\n },\n emits: [\n \"cancel\",\n \"confirm\",\n \"update:modelValue\"\n ],\n setup() {\n return { isLegacy34 };\n },\n data() {\n return {\n labelConfirm: t(\"Confirm changes\"),\n labelCancel: t(\"Cancel changes\")\n };\n },\n computed: {\n valueModel: {\n get() {\n return this.modelValue;\n },\n set(newValue) {\n this.$emit(\"update:modelValue\", newValue);\n }\n }\n },\n methods: {\n confirm() {\n this.$emit(\"confirm\");\n },\n cancel() {\n this.$emit(\"cancel\");\n },\n focusInput() {\n this.$refs.input.focus();\n }\n }\n};\nconst _hoisted_1 = [\"placeholder\"];\nfunction _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {\n const _component_IconArrowRight = resolveComponent(\"IconArrowRight\");\n const _component_NcButton = resolveComponent(\"NcButton\");\n const _component_IconClose = resolveComponent(\"IconClose\");\n return openBlock(), createElementBlock(\"div\", {\n class: normalizeClass([\"app-navigation-input-confirm\", { \"app-navigation-input-confirm--legacy\": $setup.isLegacy34 }])\n }, [\n createElementVNode(\"form\", {\n onSubmit: _cache[1] || (_cache[1] = withModifiers((...args) => $options.confirm && $options.confirm(...args), [\"prevent\"])),\n onKeydown: _cache[2] || (_cache[2] = withKeys(withModifiers((...args) => $options.cancel && $options.cancel(...args), [\"exact\", \"stop\", \"prevent\"]), [\"esc\"])),\n onClick: _cache[3] || (_cache[3] = withModifiers(() => {\n }, [\"stop\", \"prevent\"]))\n }, [\n withDirectives(createElementVNode(\"input\", {\n ref: \"input\",\n \"onUpdate:modelValue\": _cache[0] || (_cache[0] = ($event) => $options.valueModel = $event),\n type: \"text\",\n class: \"app-navigation-input-confirm__input\",\n placeholder: $props.placeholder\n }, null, 8, _hoisted_1), [\n [vModelText, $options.valueModel]\n ]),\n createVNode(_component_NcButton, {\n \"aria-label\": $data.labelConfirm,\n type: \"submit\",\n variant: \"primary\",\n onClick: withModifiers($options.confirm, [\"stop\", \"prevent\"])\n }, {\n icon: withCtx(() => [\n createVNode(_component_IconArrowRight, { size: 20 })\n ]),\n _: 1\n }, 8, [\"aria-label\", \"onClick\"]),\n createVNode(_component_NcButton, {\n \"aria-label\": $data.labelCancel,\n type: \"reset\",\n variant: $props.primary ? \"primary\" : \"tertiary\",\n onClick: withModifiers($options.cancel, [\"stop\", \"prevent\"])\n }, {\n icon: withCtx(() => [\n createVNode(_component_IconClose, { size: 20 })\n ]),\n _: 1\n }, 8, [\"aria-label\", \"variant\", \"onClick\"])\n ], 32)\n ], 2);\n}\nconst NcInputConfirmCancel = /* @__PURE__ */ _export_sfc(_sfc_main, [[\"render\", _sfc_render], [\"__scopeId\", \"data-v-6926a0b8\"]]);\nexport {\n NcInputConfirmCancel as N\n};\n//# sourceMappingURL=NcInputConfirmCancel-CGTllrXj.mjs.map\n","import '../assets/NcAppNavigationItem-BZ1xj6Xi.css';\nimport { openBlock, createElementBlock, mergeProps, createElementVNode, toDisplayString, createCommentVNode, resolveComponent, createBlock, normalizeClass, withCtx, resolveDynamicComponent, normalizeProps, guardReactiveProps, withKeys, withModifiers, renderSlot, createVNode, createTextVNode } from \"vue\";\nimport { _ as _export_sfc } from \"./_plugin-vue_export-helper-1tPrXgE0.mjs\";\nimport { C as ChevronDown } from \"./ChevronDown-C6gc637b.mjs\";\nimport { C as ChevronUp } from \"./ChevronUp-ChH8oB7p.mjs\";\nimport { r as register, N as t21, a as t, b as t51, O as t23 } from \"./_l10n-wdIzZwir.mjs\";\nimport { i as isLegacy34 } from \"./legacy-BoqDmOCa.mjs\";\nimport { N as NcButton } from \"./NcButton-jvoYS2my.mjs\";\nimport { N as NcInputConfirmCancel } from \"./NcInputConfirmCancel-CGTllrXj.mjs\";\nimport { useIsMobile } from \"../composables/useIsMobile/index.mjs\";\nimport { c as createElementId } from \"./createElementId-DhjFt1I9.mjs\";\nimport { N as NcActionButton } from \"./NcActionButton-BO5T5ePT.mjs\";\nimport { N as NcActions } from \"./NcActions-C-wDqSrv.mjs\";\nimport { N as NcLoadingIcon } from \"./NcLoadingIcon-BOVpFVQz.mjs\";\nimport { _ as _sfc_main$4 } from \"./NcVNodes.vue_vue_type_script_lang-BqUHinRZ.mjs\";\nconst _sfc_main$3 = {\n name: \"PencilIcon\",\n emits: [\"click\"],\n props: {\n title: {\n type: String\n },\n fillColor: {\n type: String,\n default: \"currentColor\"\n },\n size: {\n type: Number,\n default: 24\n }\n }\n};\nconst _hoisted_1$2 = [\"aria-hidden\", \"aria-label\"];\nconst _hoisted_2$2 = [\"fill\", \"width\", \"height\"];\nconst _hoisted_3$2 = { d: \"M20.71,7.04C21.1,6.65 21.1,6 20.71,5.63L18.37,3.29C18,2.9 17.35,2.9 16.96,3.29L15.12,5.12L18.87,8.87M3,17.25V21H6.75L17.81,9.93L14.06,6.18L3,17.25Z\" };\nconst _hoisted_4$2 = { key: 0 };\nfunction _sfc_render$3(_ctx, _cache, $props, $setup, $data, $options) {\n return openBlock(), createElementBlock(\"span\", mergeProps(_ctx.$attrs, {\n \"aria-hidden\": $props.title ? null : \"true\",\n \"aria-label\": $props.title,\n class: \"material-design-icon pencil-icon\",\n role: \"img\",\n onClick: _cache[0] || (_cache[0] = ($event) => _ctx.$emit(\"click\", $event))\n }), [\n (openBlock(), createElementBlock(\"svg\", {\n fill: $props.fillColor,\n class: \"material-design-icon__svg\",\n width: $props.size,\n height: $props.size,\n viewBox: \"0 0 24 24\"\n }, [\n createElementVNode(\"path\", _hoisted_3$2, [\n $props.title ? (openBlock(), createElementBlock(\"title\", _hoisted_4$2, toDisplayString($props.title), 1)) : createCommentVNode(\"\", true)\n ])\n ], 8, _hoisted_2$2))\n ], 16, _hoisted_1$2);\n}\nconst Pencil = /* @__PURE__ */ _export_sfc(_sfc_main$3, [[\"render\", _sfc_render$3]]);\nconst _sfc_main$2 = {\n name: \"UndoIcon\",\n emits: [\"click\"],\n props: {\n title: {\n type: String\n },\n fillColor: {\n type: String,\n default: \"currentColor\"\n },\n size: {\n type: Number,\n default: 24\n }\n }\n};\nconst _hoisted_1$1 = [\"aria-hidden\", \"aria-label\"];\nconst _hoisted_2$1 = [\"fill\", \"width\", \"height\"];\nconst _hoisted_3$1 = { d: \"M12.5,8C9.85,8 7.45,9 5.6,10.6L2,7V16H11L7.38,12.38C8.77,11.22 10.54,10.5 12.5,10.5C16.04,10.5 19.05,12.81 20.1,16L22.47,15.22C21.08,11.03 17.15,8 12.5,8Z\" };\nconst _hoisted_4$1 = { key: 0 };\nfunction _sfc_render$2(_ctx, _cache, $props, $setup, $data, $options) {\n return openBlock(), createElementBlock(\"span\", mergeProps(_ctx.$attrs, {\n \"aria-hidden\": $props.title ? null : \"true\",\n \"aria-label\": $props.title,\n class: \"material-design-icon undo-icon\",\n role: \"img\",\n onClick: _cache[0] || (_cache[0] = ($event) => _ctx.$emit(\"click\", $event))\n }), [\n (openBlock(), createElementBlock(\"svg\", {\n fill: $props.fillColor,\n class: \"material-design-icon__svg\",\n width: $props.size,\n height: $props.size,\n viewBox: \"0 0 24 24\"\n }, [\n createElementVNode(\"path\", _hoisted_3$1, [\n $props.title ? (openBlock(), createElementBlock(\"title\", _hoisted_4$1, toDisplayString($props.title), 1)) : createCommentVNode(\"\", true)\n ])\n ], 8, _hoisted_2$1))\n ], 16, _hoisted_1$1);\n}\nconst Undo = /* @__PURE__ */ _export_sfc(_sfc_main$2, [[\"render\", _sfc_render$2]]);\nregister(t21);\nconst _sfc_main$1 = {\n name: \"NcAppNavigationIconCollapsible\",\n components: {\n NcButton,\n ChevronDown,\n ChevronUp\n },\n props: {\n /**\n * Is the list currently open (or collapsed)\n */\n open: {\n type: Boolean,\n required: true\n },\n /**\n * Is the navigation item currently active.\n */\n active: {\n type: Boolean,\n required: true\n }\n },\n emits: [\"click\"],\n setup() {\n return { isLegacy34 };\n },\n computed: {\n labelButton() {\n return this.open ? t(\"Collapse menu\") : t(\"Open menu\");\n }\n },\n methods: {\n onClick(e) {\n this.$emit(\"click\", e);\n }\n }\n};\nfunction _sfc_render$1(_ctx, _cache, $props, $setup, $data, $options) {\n const _component_ChevronUp = resolveComponent(\"ChevronUp\");\n const _component_ChevronDown = resolveComponent(\"ChevronDown\");\n const _component_NcButton = resolveComponent(\"NcButton\");\n return openBlock(), createBlock(_component_NcButton, {\n class: normalizeClass([\"icon-collapse\", {\n \"icon-collapse--active\": $props.active,\n \"icon-collapse--open\": $props.open\n }]),\n \"aria-label\": $options.labelButton,\n variant: $props.active && $setup.isLegacy34 ? \"tertiary-on-primary\" : \"tertiary\",\n onClick: $options.onClick\n }, {\n icon: withCtx(() => [\n $props.open ? (openBlock(), createBlock(_component_ChevronUp, {\n key: 0,\n size: 20\n })) : (openBlock(), createBlock(_component_ChevronDown, {\n key: 1,\n size: 20\n }))\n ]),\n _: 1\n }, 8, [\"class\", \"aria-label\", \"variant\", \"onClick\"]);\n}\nconst NcAppNavigationIconCollapsible = /* @__PURE__ */ _export_sfc(_sfc_main$1, [[\"render\", _sfc_render$1], [\"__scopeId\", \"data-v-cfbd3794\"]]);\nregister(t23, t51);\nconst _sfc_main = {\n name: \"NcAppNavigationItem\",\n components: {\n NcActions,\n NcActionButton,\n NcAppNavigationIconCollapsible,\n NcInputConfirmCancel,\n NcLoadingIcon,\n NcVNodes: _sfc_main$4,\n Pencil,\n Undo\n },\n props: {\n /**\n * If you are not using vue-router you can use the property to set this item as the active navigation entry.\n * When using vue-router and the `to` property this is set automatically.\n */\n active: {\n type: Boolean,\n default: false\n },\n /**\n * The main text content of the entry.\n */\n name: {\n type: String,\n required: true\n },\n /**\n * The title attribute of the element.\n */\n title: {\n type: String,\n default: null\n },\n /**\n * id attribute of the list item element\n */\n id: {\n type: String,\n default: () => createElementId(),\n validator: (id) => id.trim() !== \"\"\n },\n /**\n * Refers to the icon on the left, this prop accepts a class\n * like 'icon-category-enabled'.\n */\n icon: {\n type: String,\n default: \"\"\n },\n /**\n * Displays a loading animated icon on the left of the element\n * instead of the icon.\n */\n loading: {\n type: Boolean,\n default: false\n },\n /**\n * Passing in a route will make the root element of this\n * component a `<router-link />` that points to that route.\n * By leaving this blank, the root element will be a `<li>`.\n */\n to: {\n type: [String, Object],\n default: null\n },\n /**\n * A direct link. This will be used as the `href` attribute.\n * This will ignore any `to` prop being defined.\n */\n href: {\n type: String,\n default: null\n },\n /**\n * Gives the possibility to collapse the children elements into the\n * parent element (true) or expands the children elements (false).\n */\n allowCollapse: {\n type: Boolean,\n default: false\n },\n /**\n * Makes the name of the item editable by providing an `ActionButton`\n * component that toggles a form\n */\n editable: {\n type: Boolean,\n default: false\n },\n /**\n * Only for 'editable' items, sets label for the edit action button.\n */\n editLabel: {\n type: String,\n default: \"\"\n },\n /**\n * Only for items in 'editable' mode, sets the placeholder text for the editing form.\n */\n editPlaceholder: {\n type: String,\n default: \"\"\n },\n /**\n * Pins the item to the bottom left area, above the settings. Do not\n * place 'non-pinned' `AppnavigationItem` components below `pinned`\n * ones.\n */\n pinned: {\n type: Boolean,\n default: false\n },\n /**\n * Puts the item in the 'undo' state.\n */\n undo: {\n type: Boolean,\n default: false\n },\n /**\n * The navigation collapsible state (synced)\n */\n open: {\n type: Boolean,\n default: false\n },\n /**\n * The actions menu open state (synced)\n */\n menuOpen: {\n type: Boolean,\n default: false\n },\n /**\n * Force the actions to display in a three dot menu\n */\n forceMenu: {\n type: Boolean,\n default: false\n },\n /**\n * The action's menu default icon\n */\n menuIcon: {\n type: String,\n default: void 0\n },\n /**\n * The action's menu direction\n */\n menuPlacement: {\n type: String,\n default: \"bottom\"\n },\n /**\n * Entry aria details\n */\n ariaDescription: {\n type: String,\n default: null\n },\n /**\n * To be used only when the elements in the actions menu are very important\n */\n forceDisplayActions: {\n type: Boolean,\n default: false\n },\n /**\n * Number of action items outside the menu\n */\n inlineActions: {\n type: Number,\n default: 0\n }\n },\n emits: [\n \"update:menuOpen\",\n \"update:open\",\n \"update:name\",\n \"click\",\n \"undo\"\n ],\n setup() {\n return {\n isMobile: useIsMobile(),\n isLegacy34\n };\n },\n data() {\n return {\n actionsBoundariesElement: void 0,\n editingValue: \"\",\n opened: this.open,\n // Collapsible state\n editingActive: false,\n /**\n * Tracks the open state of the actions menu\n */\n menuOpenLocalValue: false,\n focused: false\n };\n },\n computed: {\n isRouterLink() {\n return this.to && !this.href;\n },\n // Checks if the component is already a children of another\n // instance of AppNavigationItem\n canHaveChildren() {\n if (this.$parent.$options._componentTag === \"AppNavigationItem\") {\n return false;\n } else {\n return true;\n }\n },\n editButtonAriaLabel() {\n return this.editLabel ? this.editLabel : t(\"Edit item\");\n },\n undoButtonAriaLabel() {\n return t(\"Undo changes\");\n }\n },\n watch: {\n open(newVal) {\n this.opened = newVal;\n }\n },\n mounted() {\n this.actionsBoundariesElement = document.querySelector(\"#content-vue\") || void 0;\n },\n methods: {\n // sync opened menu state with prop\n onMenuToggle(state) {\n this.$emit(\"update:menuOpen\", state);\n this.menuOpenLocalValue = state;\n },\n // toggle the collapsible state\n toggleCollapse() {\n this.opened = !this.opened;\n this.$emit(\"update:open\", this.opened);\n },\n /**\n * Handle link click\n *\n * @param {PointerEvent} event - Native click event\n * @param {(event: PointerEvent) => void} [navigate] - VueRouter link's navigate if any\n * @param {string} [routerLinkHref] - VueRouter link's href\n */\n onClick(event, navigate, routerLinkHref) {\n this.$emit(\"click\", event);\n if (event.metaKey || event.altKey || event.ctrlKey || event.shiftKey) {\n return;\n }\n if (routerLinkHref) {\n navigate?.(event);\n event.preventDefault();\n }\n },\n // Edition methods\n handleEdit() {\n this.editingValue = this.name;\n this.editingActive = true;\n this.onMenuToggle(false);\n this.$nextTick(() => {\n this.$refs.editingInput.focusInput();\n });\n },\n cancelEditing() {\n this.editingActive = false;\n },\n handleEditingDone() {\n this.$emit(\"update:name\", this.editingValue);\n this.editingValue = \"\";\n this.editingActive = false;\n },\n // Undo methods\n handleUndo() {\n this.$emit(\"undo\");\n },\n /**\n * Show actions upon focus\n */\n handleFocus() {\n this.focused = true;\n },\n handleBlur() {\n this.focused = false;\n },\n /**\n * This method checks if the root element of the component is focused and\n * if that's the case it focuses the actions button if available\n *\n * @param {Event} e the keydown event\n */\n handleTab(e) {\n if (!this.$refs.actions) {\n return;\n }\n if (this.focused) {\n e.preventDefault();\n this.$refs.actions.$refs.triggerButton.$el.focus();\n this.focused = false;\n } else {\n this.$refs.actions.$refs.triggerButton.$el.blur();\n }\n },\n /**\n * Is this an external link\n *\n * @param {string} href The link to check\n * @return {boolean} Whether it is external or not\n */\n isExternal(href) {\n return href && href.match(/[a-z]+:\\/\\//i);\n }\n }\n};\nconst _hoisted_1 = [\"id\"];\nconst _hoisted_2 = [\"aria-current\", \"aria-description\", \"aria-expanded\", \"href\", \"target\", \"title\", \"onClick\"];\nconst _hoisted_3 = {\n key: 0,\n class: \"editingContainer\"\n};\nconst _hoisted_4 = {\n key: 1,\n class: \"app-navigation-entry__deleted\"\n};\nconst _hoisted_5 = { class: \"app-navigation-entry__deleted-description\" };\nconst _hoisted_6 = {\n key: 0,\n class: \"app-navigation-entry__counter-wrapper\"\n};\nconst _hoisted_7 = {\n key: 0,\n class: \"app-navigation-entry__children\"\n};\nfunction _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {\n const _component_NcLoadingIcon = resolveComponent(\"NcLoadingIcon\");\n const _component_NcInputConfirmCancel = resolveComponent(\"NcInputConfirmCancel\");\n const _component_Pencil = resolveComponent(\"Pencil\");\n const _component_NcActionButton = resolveComponent(\"NcActionButton\");\n const _component_Undo = resolveComponent(\"Undo\");\n const _component_NcActions = resolveComponent(\"NcActions\");\n const _component_NcAppNavigationIconCollapsible = resolveComponent(\"NcAppNavigationIconCollapsible\");\n return openBlock(), createElementBlock(\"li\", {\n id: $props.id,\n class: normalizeClass([{\n \"app-navigation-entry--opened\": $data.opened,\n \"app-navigation-entry--pinned\": $props.pinned,\n \"app-navigation-entry--collapsible\": $props.allowCollapse && !!_ctx.$slots.default\n }, \"app-navigation-entry-wrapper\"])\n }, [\n (openBlock(), createBlock(resolveDynamicComponent($options.isRouterLink ? \"router-link\" : \"NcVNodes\"), normalizeProps(guardReactiveProps({ ...$options.isRouterLink && { custom: true, to: $props.to } })), {\n default: withCtx(({ href: routerLinkHref, navigate, isActive }) => [\n createElementVNode(\"div\", {\n class: normalizeClass([\"app-navigation-entry\", {\n \"app-navigation-entry--editing\": $data.editingActive,\n \"app-navigation-entry--deleted\": $props.undo,\n \"app-navigation-entry--legacy\": $setup.isLegacy34,\n active: $props.to && isActive || $props.active\n }])\n }, [\n !$props.undo ? (openBlock(), createElementBlock(\"a\", {\n key: 0,\n class: \"app-navigation-entry-link\",\n \"aria-current\": $props.active || $props.to && isActive ? \"page\" : void 0,\n \"aria-description\": $props.ariaDescription,\n \"aria-expanded\": !!_ctx.$slots.default ? $data.opened.toString() : void 0,\n href: $props.href || routerLinkHref || \"#\",\n target: $options.isExternal($props.href) ? \"_blank\" : void 0,\n title: $props.title || $props.name,\n onBlur: _cache[1] || (_cache[1] = (...args) => $options.handleBlur && $options.handleBlur(...args)),\n onClick: ($event) => $options.onClick($event, navigate, routerLinkHref),\n onFocus: _cache[2] || (_cache[2] = (...args) => $options.handleFocus && $options.handleFocus(...args)),\n onKeydown: _cache[3] || (_cache[3] = withKeys(withModifiers((...args) => $options.handleTab && $options.handleTab(...args), [\"exact\"]), [\"tab\"]))\n }, [\n createElementVNode(\"div\", {\n class: normalizeClass([\"app-navigation-entry-icon\", { [$props.icon]: $props.icon }])\n }, [\n $props.loading ? (openBlock(), createBlock(_component_NcLoadingIcon, { key: 0 })) : renderSlot(_ctx.$slots, \"icon\", {\n key: 1,\n active: $props.active || $props.to && isActive\n }, void 0, true)\n ], 2),\n createElementVNode(\"span\", {\n class: normalizeClass([\"app-navigation-entry__name\", { \"hidden-visually\": $data.editingActive }])\n }, toDisplayString($props.name), 3),\n $data.editingActive ? (openBlock(), createElementBlock(\"div\", _hoisted_3, [\n createVNode(_component_NcInputConfirmCancel, {\n ref: \"editingInput\",\n modelValue: $data.editingValue,\n \"onUpdate:modelValue\": _cache[0] || (_cache[0] = ($event) => $data.editingValue = $event),\n placeholder: $props.editPlaceholder !== \"\" ? $props.editPlaceholder : $props.name,\n primary: $props.to && isActive || $props.active,\n onCancel: $options.cancelEditing,\n onConfirm: $options.handleEditingDone\n }, null, 8, [\"modelValue\", \"placeholder\", \"primary\", \"onCancel\", \"onConfirm\"])\n ])) : createCommentVNode(\"\", true)\n ], 40, _hoisted_2)) : createCommentVNode(\"\", true),\n $props.undo ? (openBlock(), createElementBlock(\"div\", _hoisted_4, [\n createElementVNode(\"div\", _hoisted_5, toDisplayString($props.name), 1)\n ])) : createCommentVNode(\"\", true),\n (!!_ctx.$slots.actions || !!_ctx.$slots.counter || $props.editable || $props.undo) && !$data.editingActive ? (openBlock(), createElementBlock(\"div\", {\n key: 2,\n class: normalizeClass([\"app-navigation-entry__utils\", { \"app-navigation-entry__utils--display-actions\": $props.forceDisplayActions || $data.menuOpenLocalValue || $props.menuOpen }])\n }, [\n !!_ctx.$slots.counter ? (openBlock(), createElementBlock(\"div\", _hoisted_6, [\n renderSlot(_ctx.$slots, \"counter\", {}, void 0, true)\n ])) : createCommentVNode(\"\", true),\n !!_ctx.$slots.actions || $props.editable && !$data.editingActive || $props.undo ? (openBlock(), createBlock(_component_NcActions, {\n key: 1,\n ref: \"actions\",\n class: \"app-navigation-entry__actions\",\n container: \"#app-navigation-vue\",\n boundariesElement: $data.actionsBoundariesElement,\n inline: $props.inlineActions,\n placement: $props.menuPlacement,\n open: $props.menuOpen,\n forceMenu: $props.forceMenu,\n defaultIcon: $props.menuIcon,\n variant: \"tertiary\",\n \"onUpdate:open\": $options.onMenuToggle\n }, {\n icon: withCtx(() => [\n renderSlot(_ctx.$slots, \"menu-icon\", {}, void 0, true)\n ]),\n default: withCtx(() => [\n $props.editable && !$data.editingActive ? (openBlock(), createBlock(_component_NcActionButton, {\n key: 0,\n \"aria-label\": $options.editButtonAriaLabel,\n onClick: $options.handleEdit\n }, {\n icon: withCtx(() => [\n createVNode(_component_Pencil, { size: 20 })\n ]),\n default: withCtx(() => [\n createTextVNode(\" \" + toDisplayString($props.editLabel), 1)\n ]),\n _: 1\n }, 8, [\"aria-label\", \"onClick\"])) : createCommentVNode(\"\", true),\n $props.undo ? (openBlock(), createBlock(_component_NcActionButton, {\n key: 1,\n \"aria-label\": $options.undoButtonAriaLabel,\n onClick: $options.handleUndo\n }, {\n icon: withCtx(() => [\n createVNode(_component_Undo, { size: 20 })\n ]),\n _: 1\n }, 8, [\"aria-label\", \"onClick\"])) : createCommentVNode(\"\", true),\n renderSlot(_ctx.$slots, \"actions\", {}, void 0, true)\n ]),\n _: 3\n }, 8, [\"boundariesElement\", \"inline\", \"placement\", \"open\", \"forceMenu\", \"defaultIcon\", \"onUpdate:open\"])) : createCommentVNode(\"\", true)\n ], 2)) : createCommentVNode(\"\", true),\n $props.allowCollapse && !!_ctx.$slots.default ? (openBlock(), createBlock(_component_NcAppNavigationIconCollapsible, {\n key: 3,\n active: $props.to && isActive || $props.active,\n open: $data.opened,\n onClick: withModifiers($options.toggleCollapse, [\"prevent\", \"stop\"])\n }, null, 8, [\"active\", \"open\", \"onClick\"])) : createCommentVNode(\"\", true),\n renderSlot(_ctx.$slots, \"extra\", {}, void 0, true)\n ], 2)\n ]),\n _: 3\n }, 16)),\n $options.canHaveChildren && !!_ctx.$slots.default ? (openBlock(), createElementBlock(\"ul\", _hoisted_7, [\n renderSlot(_ctx.$slots, \"default\", {}, void 0, true)\n ])) : createCommentVNode(\"\", true)\n ], 10, _hoisted_1);\n}\nconst NcAppNavigationItem = /* @__PURE__ */ _export_sfc(_sfc_main, [[\"render\", _sfc_render], [\"__scopeId\", \"data-v-fcab058b\"]]);\nexport {\n NcAppNavigationItem as N\n};\n//# sourceMappingURL=NcAppNavigationItem-CDeYtA3E.mjs.map\n","import '../assets/NcAppNavigationSearch-DD7mo6OW.css';\nimport { defineComponent, useModel, useSlots, ref, useTemplateRef, watch, openBlock, createElementBlock, normalizeClass, createVNode, unref, withCtx, renderSlot, createCommentVNode, mergeModels, nextTick } from \"vue\";\nimport { useFocusWithin } from \"@vueuse/core\";\nimport { I as IconClose } from \"./Close-CuhcJnX2.mjs\";\nimport { N as NcInputField } from \"./NcInputField-5Sg6EUP6.mjs\";\nimport { r as register, C as t44, u as t16, a as t } from \"./_l10n-wdIzZwir.mjs\";\nimport { _ as _export_sfc } from \"./_plugin-vue_export-helper-1tPrXgE0.mjs\";\nregister(t16, t44);\nconst _sfc_main = /* @__PURE__ */ defineComponent({\n __name: \"NcAppNavigationSearch\",\n props: /* @__PURE__ */ mergeModels({\n /**\n * Text used to label the search input\n */\n label: {\n type: String,\n default: t(\"Search …\")\n },\n /**\n * Placeholder of the search input\n * By default the value of `label` is used.\n */\n placeholder: {\n type: String,\n default: null\n }\n }, {\n \"modelValue\": { default: \"\" },\n \"modelModifiers\": {}\n }),\n emits: [\"update:modelValue\"],\n setup(__props) {\n const model = useModel(__props, \"modelValue\");\n const slots = useSlots();\n const inputElement = ref();\n const { focused: inputHasFocus } = useFocusWithin(inputElement);\n const transitionTimeout = Number.parseInt(window.getComputedStyle(window.document.body).getPropertyValue(\"--animation-quick\")) || 100;\n const actionsContainerElement = useTemplateRef(\"actionsContainer\");\n const hasActions = () => !!slots.actions?.({});\n const showActions = ref(true);\n const timeoutId = ref();\n const hideActions = ref(false);\n watch(inputHasFocus, () => {\n showActions.value = !inputHasFocus.value;\n window.clearTimeout(timeoutId.value);\n if (showActions.value) {\n hideActions.value = false;\n } else {\n window.setTimeout(() => {\n hideActions.value = !showActions.value;\n }, transitionTimeout);\n }\n });\n function onCloseSearch() {\n model.value = \"\";\n if (hasActions()) {\n showActions.value = true;\n nextTick(() => actionsContainerElement.value?.querySelector(\"button\")?.focus());\n }\n }\n return (_ctx, _cache) => {\n return openBlock(), createElementBlock(\"div\", {\n class: normalizeClass([\"app-navigation-search\", {\n \"app-navigation-search--has-actions\": hasActions()\n }])\n }, [\n createVNode(NcInputField, {\n ref_key: \"inputElement\",\n ref: inputElement,\n modelValue: model.value,\n \"onUpdate:modelValue\": _cache[0] || (_cache[0] = ($event) => model.value = $event),\n \"aria-label\": __props.label,\n class: \"app-navigation-search__input\",\n labelOutside: \"\",\n placeholder: __props.placeholder ?? __props.label,\n showTrailingButton: model.value.length > 0,\n trailingButtonLabel: unref(t)(\"Clear search\"),\n type: \"search\",\n onTrailingButtonClick: onCloseSearch\n }, {\n \"trailing-button-icon\": withCtx(() => [\n createVNode(IconClose, { size: 20 })\n ]),\n _: 1\n }, 8, [\"modelValue\", \"aria-label\", \"placeholder\", \"showTrailingButton\", \"trailingButtonLabel\"]),\n hasActions() ? (openBlock(), createElementBlock(\"div\", {\n key: 0,\n ref: \"actionsContainer\",\n class: normalizeClass([\"app-navigation-search__actions\", {\n \"app-navigation-search__actions--hidden\": !showActions.value,\n \"hidden-visually\": hideActions.value\n }])\n }, [\n renderSlot(_ctx.$slots, \"actions\", {}, void 0, true)\n ], 2)) : createCommentVNode(\"\", true)\n ], 2);\n };\n }\n});\nconst NcAppNavigationSearch = /* @__PURE__ */ _export_sfc(_sfc_main, [[\"__scopeId\", \"data-v-191b6717\"]]);\nexport {\n NcAppNavigationSearch as N\n};\n//# sourceMappingURL=NcAppNavigationSearch-CQQWb1Eq.mjs.map\n","import '../assets/NcAppNavigationSettings-mWFhcXm0.css';\nimport { defineComponent, ref, useTemplateRef, computed, openBlock, createElementBlock, normalizeClass, createElementVNode, createVNode, unref, withCtx, createTextVNode, toDisplayString, Transition, withDirectives, renderSlot, vShow } from \"vue\";\nimport { C as mdiCog, D as mdiCogOutline } from \"./mdi-CpchYUUV.mjs\";\nimport { onClickOutside } from \"@vueuse/core\";\nimport { N as NcButton } from \"./NcButton-jvoYS2my.mjs\";\nimport { N as NcIconSvgWrapper } from \"./NcIconSvgWrapper-g8ubWhoz.mjs\";\nimport { r as register, B as t47, a as t } from \"./_l10n-wdIzZwir.mjs\";\nimport { c as createElementId } from \"./createElementId-DhjFt1I9.mjs\";\nimport { a as isLegacy } from \"./legacy-BoqDmOCa.mjs\";\nimport { _ as _export_sfc } from \"./_plugin-vue_export-helper-1tPrXgE0.mjs\";\nregister(t47);\nconst _hoisted_1 = [\"id\"];\nconst _sfc_main = /* @__PURE__ */ defineComponent({\n __name: \"NcAppNavigationSettings\",\n props: {\n excludeClickOutsideSelectors: { default: () => [] },\n name: { default: () => t(\"Settings\") }\n },\n setup(__props) {\n const contentId = createElementId();\n const open = ref(false);\n const container2 = useTemplateRef(\"wrapperElement\");\n const ignore = computed(() => Array.isArray(__props.excludeClickOutsideSelectors) ? __props.excludeClickOutsideSelectors : __props.excludeClickOutsideSelectors.split(\" \"));\n onClickOutside(container2, () => {\n open.value = false;\n }, { ignore });\n return (_ctx, _cache) => {\n return openBlock(), createElementBlock(\"div\", {\n ref: \"wrapperElement\",\n class: normalizeClass(_ctx.$style.container)\n }, [\n createElementVNode(\"div\", {\n class: normalizeClass(_ctx.$style.header)\n }, [\n createVNode(NcButton, {\n \"aria-controls\": unref(contentId),\n \"aria-expanded\": open.value ? \"true\" : \"false\",\n class: normalizeClass(_ctx.$style.button),\n alignment: \"start\",\n variant: \"tertiary\",\n wide: \"\",\n onClick: _cache[0] || (_cache[0] = ($event) => open.value = !open.value)\n }, {\n icon: withCtx(() => [\n createVNode(NcIconSvgWrapper, {\n path: unref(isLegacy) ? unref(mdiCog) : unref(mdiCogOutline)\n }, null, 8, [\"path\"])\n ]),\n default: withCtx(() => [\n createTextVNode(\" \" + toDisplayString(__props.name), 1)\n ]),\n _: 1\n }, 8, [\"aria-controls\", \"aria-expanded\", \"class\"])\n ], 2),\n createVNode(Transition, {\n enterActiveClass: _ctx.$style.animationActive,\n leaveActiveClass: _ctx.$style.animationActive,\n enterFromClass: _ctx.$style.animationStop,\n leaveToClass: _ctx.$style.animationStop\n }, {\n default: withCtx(() => [\n withDirectives(createElementVNode(\"div\", {\n id: unref(contentId),\n class: normalizeClass(_ctx.$style.content)\n }, [\n renderSlot(_ctx.$slots, \"default\")\n ], 10, _hoisted_1), [\n [vShow, open.value]\n ])\n ]),\n _: 3\n }, 8, [\"enterActiveClass\", \"leaveActiveClass\", \"enterFromClass\", \"leaveToClass\"])\n ], 2);\n };\n }\n});\nconst container = \"_container_Cocg7\";\nconst header = \"_header_cORcE\";\nconst button = \"_button_ypW42\";\nconst content = \"_content_IA45l\";\nconst animationActive = \"_animationActive_T-91l\";\nconst animationStop = \"_animationStop_q9z2N\";\nconst style0 = {\n container,\n header,\n button,\n content,\n animationActive,\n animationStop\n};\nconst cssModules = {\n \"$style\": style0\n};\nconst NcAppNavigationSettings = /* @__PURE__ */ _export_sfc(_sfc_main, [[\"__cssModules\", cssModules]]);\nexport {\n NcAppNavigationSettings as N\n};\n//# sourceMappingURL=NcAppNavigationSettings-DoMjRExO.mjs.map\n","import '../assets/NcAppSettingsDialog-Dh_scIK4.css';\nimport { defineComponent, inject, openBlock, createElementBlock, normalizeClass, unref, toDisplayString, useModel, provide, toRef, useTemplateRef, ref, computed, onBeforeUnmount, warn, createBlock, createSlots, withCtx, createElementVNode, renderSlot, createCommentVNode, Fragment, renderList, withKeys, withModifiers, mergeModels } from \"vue\";\nimport debounce from \"debounce\";\nimport { N as NcDialog } from \"./NcDialog-D617YI0t.mjs\";\nimport { _ as _sfc_main$2 } from \"./NcVNodes.vue_vue_type_script_lang-BqUHinRZ.mjs\";\nimport { u as useLocalizedAppName, A as APP_VERSION } from \"./appName-DyNMVZpX.mjs\";\nimport { A as APP_SETTINGS_LEGACY_DESIGN_KEY, a as APP_SETTINGS_REGISTRATION_KEY } from \"./useAppSettingsDialog-C73Wx6iQ.mjs\";\nimport { _ as _export_sfc } from \"./_plugin-vue_export-helper-1tPrXgE0.mjs\";\nimport { useIsMobile } from \"../composables/useIsMobile/index.mjs\";\nimport { r as register, I as t48, a as t } from \"./_l10n-wdIzZwir.mjs\";\nimport { i as isLegacy34 } from \"./legacy-BoqDmOCa.mjs\";\nconst _sfc_main$1 = /* @__PURE__ */ defineComponent({\n __name: \"NcAppSettingsDialogVersion\",\n setup(__props) {\n const legacy = inject(APP_SETTINGS_LEGACY_DESIGN_KEY);\n const localizedAppName = useLocalizedAppName();\n return (_ctx, _cache) => {\n return openBlock(), createElementBlock(\"div\", {\n class: normalizeClass([_ctx.$style.appSettingsDialogVersion, { [_ctx.$style.appSettingsDialogVersion__legacy]: unref(legacy) }])\n }, toDisplayString(unref(localizedAppName)) + \" \" + toDisplayString(unref(APP_VERSION)), 3);\n };\n }\n});\nconst appSettingsDialogVersion = \"_appSettingsDialogVersion_Y2viq\";\nconst appSettingsDialogVersion__legacy = \"_appSettingsDialogVersion__legacy_I-lpS\";\nconst style0 = {\n \"material-design-icon\": \"_material-design-icon_1zyjw\",\n appSettingsDialogVersion,\n appSettingsDialogVersion__legacy\n};\nconst cssModules = {\n \"$style\": style0\n};\nconst NcAppSettingsDialogVersion = /* @__PURE__ */ _export_sfc(_sfc_main$1, [[\"__cssModules\", cssModules]]);\nregister(t48);\nconst _hoisted_1 = {\n key: 0,\n class: \"app-settings__title\"\n};\nconst _hoisted_2 = {\n key: 1,\n class: \"navigation-list\"\n};\nconst _hoisted_3 = [\"aria-current\", \"href\", \"onClick\", \"onKeydown\"];\nconst _hoisted_4 = {\n key: 0,\n class: \"navigation-list__link-icon\"\n};\nconst _hoisted_5 = { class: \"navigation-list__link-text\" };\nconst _sfc_main = /* @__PURE__ */ defineComponent({\n __name: \"NcAppSettingsDialog\",\n props: /* @__PURE__ */ mergeModels({\n showNavigation: { type: Boolean },\n container: { default: \"body\" },\n name: { default: \"\" },\n additionalTrapElements: { default: () => [] },\n legacy: { type: Boolean, default: false },\n noVersion: { type: Boolean, default: false }\n }, {\n \"open\": { type: Boolean, ...{ required: true } },\n \"openModifiers\": {}\n }),\n emits: [\"update:open\"],\n setup(__props) {\n const open = useModel(__props, \"open\");\n const props = __props;\n provide(APP_SETTINGS_REGISTRATION_KEY, {\n registerSection,\n unregisterSection\n });\n provide(APP_SETTINGS_LEGACY_DESIGN_KEY, toRef(() => props.legacy));\n const settingsScrollerElement = useTemplateRef(\"settingsScroller\");\n const isMobile = useIsMobile();\n const selectedSection = ref(\"\");\n const linkClicked = ref(false);\n const registeredSections = ref([]);\n const hasNavigation = computed(() => !isMobile.value && props.showNavigation);\n const hasNavigationIcons = computed(() => registeredSections.value.some(({ icon }) => !!icon));\n const unfocusNavigationItem = debounce(() => {\n selectedSection.value = \"\";\n if (document.activeElement?.className.includes(\"navigation-list__link\")) {\n document.activeElement.blur();\n }\n }, 300);\n const sectionsOrderMap = /* @__PURE__ */ new Map();\n onBeforeUnmount(() => {\n sectionsOrderMap.clear();\n });\n function handleSettingsNavigationClick(item) {\n linkClicked.value = true;\n document.getElementById(\"settings-section_\" + item).scrollIntoView({\n behavior: \"smooth\",\n inline: \"nearest\"\n });\n selectedSection.value = item;\n setTimeout(() => {\n linkClicked.value = false;\n }, 1e3);\n }\n function handleCloseModal(isOpen) {\n if (isOpen) {\n return;\n }\n open.value = false;\n settingsScrollerElement.value.scrollTop = 0;\n }\n function handleScroll() {\n if (open.value && !linkClicked.value) {\n unfocusNavigationItem();\n }\n }\n function registerSection(id, name, order, icon) {\n if (registeredSections.value.some(({ id: otherId }) => id === otherId)) {\n throw new Error(`Duplicate section id found: ${id}. Settings navigation sections must have unique section ids.`);\n }\n if (registeredSections.value.some(({ name: otherName }) => name === otherName)) {\n warn(`Duplicate section name found: ${name}. Settings navigation sections must have unique section names.`);\n }\n if (order !== void 0) {\n sectionsOrderMap.set(id, order);\n } else if (sectionsOrderMap.has(id)) {\n order = sectionsOrderMap.get(id);\n } else {\n order = Math.max(0, ...sectionsOrderMap.values()) + 1;\n sectionsOrderMap.set(id, order);\n }\n registeredSections.value = [...registeredSections.value, { id, name, order, icon }].sort(({ order: orderA }, { order: orderB }) => {\n return orderA - orderB;\n });\n if (registeredSections.value.length === 1) {\n selectedSection.value = id;\n }\n }\n function unregisterSection(id) {\n registeredSections.value = registeredSections.value.filter(({ id: otherId }) => id !== otherId);\n if (selectedSection.value === id) {\n selectedSection.value = registeredSections.value[0]?.id ?? \"\";\n }\n }\n return (_ctx, _cache) => {\n return open.value ? (openBlock(), createBlock(NcDialog, {\n key: 0,\n class: normalizeClass([\"app-settings\", { \"app-settings--legacy\": unref(isLegacy34) }]),\n contentClasses: \"app-settings__content\",\n navigationClasses: \"app-settings__navigation\",\n additionalTrapElements: __props.additionalTrapElements,\n container: __props.container,\n closeOnClickOutside: \"\",\n \"navigation-aria-label\": unref(t)(\"Settings navigation\"),\n size: \"large\",\n name: __props.name,\n \"onUpdate:open\": handleCloseModal\n }, createSlots({\n default: withCtx(() => [\n createElementVNode(\"div\", {\n ref: \"settingsScroller\",\n onScroll: handleScroll\n }, [\n renderSlot(_ctx.$slots, \"default\", {}, void 0, true),\n !__props.noVersion ? (openBlock(), createBlock(NcAppSettingsDialogVersion, { key: 0 })) : createCommentVNode(\"\", true)\n ], 544)\n ]),\n _: 2\n }, [\n hasNavigation.value ? {\n name: \"navigation\",\n fn: withCtx(({ isCollapsed }) => [\n !unref(isLegacy34) ? (openBlock(), createElementBlock(\"div\", _hoisted_1, toDisplayString(__props.name), 1)) : createCommentVNode(\"\", true),\n !isCollapsed ? (openBlock(), createElementBlock(\"ul\", _hoisted_2, [\n (openBlock(true), createElementBlock(Fragment, null, renderList(registeredSections.value, (section) => {\n return openBlock(), createElementBlock(\"li\", {\n key: section.id\n }, [\n createElementVNode(\"a\", {\n \"aria-current\": `${section.id === selectedSection.value}`,\n class: normalizeClass([\"navigation-list__link\", {\n \"navigation-list__link--active\": section.id === selectedSection.value,\n \"navigation-list__link--icon\": hasNavigationIcons.value\n }]),\n href: `#settings-section_${section.id}`,\n tabindex: \"0\",\n onClick: withModifiers(($event) => handleSettingsNavigationClick(section.id), [\"prevent\"]),\n onKeydown: withKeys(($event) => handleSettingsNavigationClick(section.id), [\"enter\"])\n }, [\n hasNavigationIcons.value ? (openBlock(), createElementBlock(\"div\", _hoisted_4, [\n section.icon ? (openBlock(), createBlock(_sfc_main$2, {\n key: 0,\n vnodes: section.icon\n }, null, 8, [\"vnodes\"])) : createCommentVNode(\"\", true)\n ])) : createCommentVNode(\"\", true),\n createElementVNode(\"span\", _hoisted_5, toDisplayString(section.name), 1)\n ], 42, _hoisted_3)\n ]);\n }), 128))\n ])) : createCommentVNode(\"\", true)\n ]),\n key: \"0\"\n } : void 0\n ]), 1032, [\"class\", \"additionalTrapElements\", \"container\", \"navigation-aria-label\", \"name\"])) : createCommentVNode(\"\", true);\n };\n }\n});\nconst NcAppSettingsDialog = /* @__PURE__ */ _export_sfc(_sfc_main, [[\"__scopeId\", \"data-v-71803906\"]]);\nexport {\n NcAppSettingsDialog as N\n};\n//# sourceMappingURL=NcAppSettingsDialog-BPcEYLjP.mjs.map\n","import '../assets/NcAppSettingsShortcutsSection-BHxkQTg2.css';\nimport { defineComponent, openBlock, createBlock, unref, withCtx, createElementVNode, normalizeClass, renderSlot } from \"vue\";\nimport { N as NcAppSettingsSection } from \"./NcAppSettingsSection-BosSmisT.mjs\";\nimport { r as register, p as t31, a as t } from \"./_l10n-wdIzZwir.mjs\";\nimport { _ as _export_sfc } from \"./_plugin-vue_export-helper-1tPrXgE0.mjs\";\nregister(t31);\nconst _sfc_main = /* @__PURE__ */ defineComponent({\n __name: \"NcAppSettingsShortcutsSection\",\n setup(__props) {\n return (_ctx, _cache) => {\n return openBlock(), createBlock(NcAppSettingsSection, {\n id: \"keyboard-shortcuts\",\n name: unref(t)(\"Keyboard shortcuts\")\n }, {\n default: withCtx(() => [\n createElementVNode(\"div\", {\n class: normalizeClass(_ctx.$style.appSettingsSectionShortcuts)\n }, [\n renderSlot(_ctx.$slots, \"default\")\n ], 2)\n ]),\n _: 3\n }, 8, [\"name\"]);\n };\n }\n});\nconst appSettingsSectionShortcuts = \"_appSettingsSectionShortcuts_Epzxx\";\nconst style0 = {\n appSettingsSectionShortcuts\n};\nconst cssModules = {\n \"$style\": style0\n};\nconst NcAppSettingsShortcutsSection = /* @__PURE__ */ _export_sfc(_sfc_main, [[\"__cssModules\", cssModules]]);\nexport {\n NcAppSettingsShortcutsSection as N\n};\n//# sourceMappingURL=NcAppSettingsShortcutsSection-DLwubKV9.mjs.map\n","const directive = {\n mounted(el) {\n el.focus();\n }\n};\nexport {\n directive as default\n};\n//# sourceMappingURL=index.mjs.map\n","// THIS FILE IS AUTOMATICALLY GENERATED DO NOT EDIT DIRECTLY\n// See update-tlds.js for encoding/decoding format\n// https://data.iana.org/TLD/tlds-alpha-by-domain.txt\nconst encodedTlds = 'aaa1rp3bb0ott3vie4c1le2ogado5udhabi7c0ademy5centure6ountant0s9o1tor4d0s1ult4e0g1ro2tna4f0l1rica5g0akhan5ency5i0g1rbus3force5tel5kdn3l0ibaba4pay4lfinanz6state5y2sace3tom5m0azon4ericanexpress7family11x2fam3ica3sterdam8nalytics7droid5quan4z2o0l2partments8p0le4q0uarelle8r0ab1mco4chi3my2pa2t0e3s0da2ia2sociates9t0hleta5torney7u0ction5di0ble3o3spost5thor3o0s4w0s2x0a2z0ure5ba0by2idu3namex4d1k2r0celona5laycard4s5efoot5gains6seball5ketball8uhaus5yern5b0c1t1va3cg1n2d1e0ats2uty4er2rlin4st0buy5t2f1g1h0arti5i0ble3d1ke2ng0o3o1z2j1lack0friday9ockbuster8g1omberg7ue3m0s1w2n0pparibas9o0ats3ehringer8fa2m1nd2o0k0ing5sch2tik2on4t1utique6x2r0adesco6idgestone9oadway5ker3ther5ussels7s1t1uild0ers6siness6y1zz3v1w1y1z0h3ca0b1fe2l0l1vinklein9m0era3p2non3petown5ital0one8r0avan4ds2e0er0s4s2sa1e1h1ino4t0ering5holic7ba1n1re3c1d1enter4o1rn3f0a1d2g1h0anel2nel4rity4se2t2eap3intai5ristmas6ome4urch5i0priani6rcle4sco3tadel4i0c2y3k1l0aims4eaning6ick2nic1que6othing5ud3ub0med6m1n1o0ach3des3ffee4llege4ogne5m0mbank4unity6pany2re3uter5sec4ndos3struction8ulting7tact3ractors9oking4l1p2rsica5untry4pon0s4rses6pa2r0edit0card4union9icket5own3s1uise0s6u0isinella9v1w1x1y0mru3ou3z2dad1nce3ta1e1ing3sun4y2clk3ds2e0al0er2s3gree4livery5l1oitte5ta3mocrat6ntal2ist5si0gn4v2hl2iamonds6et2gital5rect0ory7scount3ver5h2y2j1k1m1np2o0cs1tor4g1mains5t1wnload7rive4tv2ubai3pont4rban5vag2r2z2earth3t2c0o2deka3u0cation8e1g1mail3erck5nergy4gineer0ing9terprises10pson4quipment8r0icsson6ni3s0q1tate5t1u0rovision8s2vents5xchange6pert3osed4ress5traspace10fage2il1rwinds6th3mily4n0s2rm0ers5shion4t3edex3edback6rrari3ero6i0delity5o2lm2nal1nce1ial7re0stone6mdale6sh0ing5t0ness6j1k1lickr3ghts4r2orist4wers5y2m1o0o0d1tball6rd1ex2sale4um3undation8x2r0ee1senius7l1ogans4ntier7tr2ujitsu5n0d2rniture7tbol5yi3ga0l0lery3o1up4me0s3p1rden4y2b0iz3d0n2e0a1nt0ing5orge5f1g0ee3h1i0ft0s3ves2ing5l0ass3e1obal2o4m0ail3bh2o1x2n1odaddy5ld0point6f2odyear5g0le4p1t1v2p1q1r0ainger5phics5tis4een3ipe3ocery4up4s1t1u0cci3ge2ide2tars5ru3w1y2hair2mburg5ngout5us3bo2dfc0bank7ealth0care8lp1sinki6re1mes5iphop4samitsu7tachi5v2k0t2m1n1ockey4ldings5iday5medepot5goods5s0ense7nda3rse3spital5t0ing5t0els3mail5use3w2r1sbc3t1u0ghes5yatt3undai7ibm2cbc2e1u2d1e0ee3fm2kano4l1m0amat4db2mo0bilien9n0c1dustries8finiti5o2g1k1stitute6urance4e4t0ernational10uit4vestments10o1piranga7q1r0ish4s0maili5t0anbul7t0au2v3jaguar4va3cb2e0ep2tzt3welry6io2ll2m0p2nj2o0bs1urg4t1y2p0morgan6rs3uegos4niper7kaufen5ddi3e0rryhotels6properties14fh2g1h1i0a1ds2m1ndle4tchen5wi3m1n1oeln3matsu5sher5p0mg2n2r0d1ed3uokgroup8w1y0oto4z2la0caixa5mborghini8er3nd0rover6xess5salle5t0ino3robe5w0yer5b1c1ds2ease3clerc5frak4gal2o2xus4gbt3i0dl2fe0insurance9style7ghting6ke2lly3mited4o2ncoln4k2ve1ing5k1lc1p2oan0s3cker3us3l1ndon4tte1o3ve3pl0financial11r1s1t0d0a3u0ndbeck6xe1ury5v1y2ma0drid4if1son4keup4n0agement7go3p1rket0ing3s4riott5shalls7ttel5ba2c0kinsey7d1e0d0ia3et2lbourne7me1orial6n0u2rck0msd7g1h1iami3crosoft7l1ni1t2t0subishi9k1l0b1s2m0a2n1o0bi0le4da2e1i1m1nash3ey2ster5rmon3tgage6scow4to0rcycles9v0ie4p1q1r1s0d2t0n1r2u0seum3ic4v1w1x1y1z2na0b1goya4me2vy3ba2c1e0c1t0bank4flix4work5ustar5w0s2xt0direct7us4f0l2g0o2hk2i0co2ke1on3nja3ssan1y5l1o0kia3rton4w0ruz3tv4p1r0a1w2tt2u1yc2z2obi1server7ffice5kinawa6layan0group9lo3m0ega4ne1g1l0ine5oo2pen3racle3nge4g0anic5igins6saka4tsuka4t2vh3pa0ge2nasonic7ris2s1tners4s1y3y2ccw3e0t2f0izer5g1h0armacy6d1ilips5one2to0graphy6s4ysio5ics1tet2ures6d1n0g1k2oneer5zza4k1l0ace2y0station9umbing5s3m1n0c2ohl2ker3litie5rn2st3r0axi3ess3ime3o0d0uctions8f1gressive8mo2perties3y5tection8u0dential9s1t1ub2w0c2y2qa1pon3uebec3st5racing4dio4e0ad1lestate6tor2y4cipes5d0umbrella9hab3ise0n3t2liance6n0t0als5pair3ort3ublican8st0aurant8view0s5xroth6ich0ardli6oh3l1o1p2o0cks3deo3gers4om3s0vp3u0gby3hr2n2w0e2yukyu6sa0arland6fe0ty4kura4le1on3msclub4ung5ndvik0coromant12ofi4p1rl2s1ve2xo3b0i1s2c0b1haeffler7midt4olarships8ol3ule3warz5ience5ot3d1e0arch3t2cure1ity6ek2lect4ner3rvices6ven3w1x0y3fr2g1h0angrila6rp3ell3ia1ksha5oes2p0ping5uji3w3i0lk2na1gles5te3j1k0i0n2y0pe4l0ing4m0art3ile4n0cf3o0ccer3ial4ftbank4ware6hu2lar2utions7ng1y2y2pa0ce3ort2t3r0l2s1t0ada2ples4r1tebank4farm7c0group6ockholm6rage3e3ream4udio2y3yle4u0cks3pplies3y2ort5rf1gery5zuki5v1watch4iss4x1y0dney4stems6z2tab1ipei4lk2obao4rget4tamotors6r2too4x0i3c0i2d0k2eam2ch0nology8l1masek5nnis4va3f1g1h0d1eater2re6iaa2ckets5enda4ps2res2ol4j0maxx4x2k0maxx5l1m0all4n1o0day3kyo3ols3p1ray3shiba5tal3urs3wn2yota3s3r0ade1ing4ining5vel0ers0insurance16ust3v2t1ube2i1nes3shu4v0s2w1z2ua1bank3s2g1k1nicom3versity8o2ol2ps2s1y1z2va0cations7na1guard7c1e0gas3ntures6risign5mögensberater2ung14sicherung10t2g1i0ajes4deo3g1king4llas4n1p1rgin4sa1ion4va1o3laanderen9n1odka3lvo3te1ing3o2yage5u2wales2mart4ter4ng0gou5tch0es6eather0channel12bcam3er2site5d0ding5ibo2r3f1hoswho6ien2ki2lliamhill9n0dows4e1ners6me2oodside6rk0s2ld3w2s1tc1f3xbox3erox4ihuan4n2xx2yz3yachts4hoo3maxun5ndex5e1odobashi7ga2kohama6u0tube6t1un3za0ppos4ra3ero3ip2m1one3uerich6w2';\n// Internationalized domain names containing non-ASCII\nconst encodedUtlds = 'ελ1υ2бг1ел3дети4ею2католик6ом3мкд2он1сква6онлайн5рг3рус2ф2сайт3рб3укр3қаз3հայ3ישראל5קום3ابوظبي5رامكو5لاردن4بحرين5جزائر5سعودية6عليان5مغرب5مارات5یران5بارت2زار4يتك3ھارت5تونس4سودان3رية5شبكة4عراق2ب2مان4فلسطين6قطر3كاثوليك6وم3مصر2ليسيا5وريتانيا7قع4همراه5پاکستان7ڀارت4कॉम3नेट3भारत0म्3ोत5संगठन5বাংলা5ভারত2ৰত4ਭਾਰਤ4ભારત4ଭାରତ4இந்தியா6லங்கை6சிங்கப்பூர்11భారత్5ಭಾರತ4ഭാരതം5ලංකා4คอม3ไทย3ລາວ3გე2みんな3アマゾン4クラウド4グーグル4コム2ストア3セール3ファッション6ポイント4世界2中信1国1國1文网3亚马逊3企业2佛山2信息2健康2八卦2公司1益2台湾1灣2商城1店1标2嘉里0大酒店5在线2大拿2天主教3娱乐2家電2广东2微博2慈善2我爱你3手机2招聘2政务1府2新加坡2闻2时尚2書籍2机构2淡马锡3游戏2澳門2点看2移动2组织机构4网址1店1站1络2联通2谷歌2购物2通販2集团2電訊盈科4飞利浦3食品2餐厅2香格里拉3港2닷넷1컴2삼성2한국2';\n\n/**\n * Finite State Machine generation utilities\n */\n\n/**\n * @template T\n * @typedef {{ [group: string]: T[] }} Collections\n */\n\n/**\n * @typedef {{ [group: string]: true }} Flags\n */\n\n// Keys in scanner Collections instances\nconst numeric = 'numeric';\nconst ascii = 'ascii';\nconst alpha = 'alpha';\nconst asciinumeric = 'asciinumeric';\nconst alphanumeric = 'alphanumeric';\nconst domain = 'domain';\nconst emoji = 'emoji';\nconst scheme = 'scheme';\nconst slashscheme = 'slashscheme';\nconst whitespace = 'whitespace';\n\n/**\n * @template T\n * @param {string} name\n * @param {Collections<T>} groups to register in\n * @returns {T[]} Current list of tokens in the given collection\n */\nfunction registerGroup(name, groups) {\n if (!(name in groups)) {\n groups[name] = [];\n }\n return groups[name];\n}\n\n/**\n * @template T\n * @param {T} t token to add\n * @param {Collections<T>} groups\n * @param {Flags} flags\n */\nfunction addToGroups(t, flags, groups) {\n if (flags[numeric]) {\n flags[asciinumeric] = true;\n flags[alphanumeric] = true;\n }\n if (flags[ascii]) {\n flags[asciinumeric] = true;\n flags[alpha] = true;\n }\n if (flags[asciinumeric]) {\n flags[alphanumeric] = true;\n }\n if (flags[alpha]) {\n flags[alphanumeric] = true;\n }\n if (flags[alphanumeric]) {\n flags[domain] = true;\n }\n if (flags[emoji]) {\n flags[domain] = true;\n }\n for (const k in flags) {\n const group = registerGroup(k, groups);\n if (group.indexOf(t) < 0) {\n group.push(t);\n }\n }\n}\n\n/**\n * @template T\n * @param {T} t token to check\n * @param {Collections<T>} groups\n * @returns {Flags} group flags that contain this token\n */\nfunction flagsForToken(t, groups) {\n const result = {};\n for (const c in groups) {\n if (groups[c].indexOf(t) >= 0) {\n result[c] = true;\n }\n }\n return result;\n}\n\n/**\n * @template T\n * @typedef {null | T } Transition\n */\n\n/**\n * Define a basic state machine state. j is the list of character transitions,\n * jr is the list of regex-match transitions, jd is the default state to\n * transition to t is the accepting token type, if any. If this is the terminal\n * state, then it does not emit a token.\n *\n * The template type T represents the type of the token this state accepts. This\n * should be a string (such as of the token exports in `text.js`) or a\n * MultiToken subclass (from `multi.js`)\n *\n * @template T\n * @param {T} [token] Token that this state emits\n */\nfunction State(token = null) {\n // this.n = null; // DEBUG: State name\n /** @type {{ [input: string]: State<T> }} j */\n this.j = {}; // IMPLEMENTATION 1\n // this.j = []; // IMPLEMENTATION 2\n /** @type {[RegExp, State<T>][]} jr */\n this.jr = [];\n /** @type {?State<T>} jd */\n this.jd = null;\n /** @type {?T} t */\n this.t = token;\n}\n\n/**\n * Scanner token groups\n * @type Collections<string>\n */\nState.groups = {};\nState.prototype = {\n accepts() {\n return !!this.t;\n },\n /**\n * Follow an existing transition from the given input to the next state.\n * Does not mutate.\n * @param {string} input character or token type to transition on\n * @returns {?State<T>} the next state, if any\n */\n go(input) {\n const state = this;\n const nextState = state.j[input];\n if (nextState) {\n return nextState;\n }\n for (let i = 0; i < state.jr.length; i++) {\n const regex = state.jr[i][0];\n const nextState = state.jr[i][1]; // note: might be empty to prevent default jump\n if (nextState && regex.test(input)) {\n return nextState;\n }\n }\n // Nowhere left to jump! Return default, if any\n return state.jd;\n },\n /**\n * Whether the state has a transition for the given input. Set the second\n * argument to true to only look for an exact match (and not a default or\n * regular-expression-based transition)\n * @param {string} input\n * @param {boolean} exactOnly\n */\n has(input, exactOnly = false) {\n return exactOnly ? input in this.j : !!this.go(input);\n },\n /**\n * Short for \"transition all\"; create a transition from the array of items\n * in the given list to the same final resulting state.\n * @param {string | string[]} inputs Group of inputs to transition on\n * @param {Transition<T> | State<T>} [next] Transition options\n * @param {Flags} [flags] Collections flags to add token to\n * @param {Collections<T>} [groups] Master list of token groups\n */\n ta(inputs, next, flags, groups) {\n for (let i = 0; i < inputs.length; i++) {\n this.tt(inputs[i], next, flags, groups);\n }\n },\n /**\n * Short for \"take regexp transition\"; defines a transition for this state\n * when it encounters a token which matches the given regular expression\n * @param {RegExp} regexp Regular expression transition (populate first)\n * @param {T | State<T>} [next] Transition options\n * @param {Flags} [flags] Collections flags to add token to\n * @param {Collections<T>} [groups] Master list of token groups\n * @returns {State<T>} taken after the given input\n */\n tr(regexp, next, flags, groups) {\n groups = groups || State.groups;\n let nextState;\n if (next && next.j) {\n nextState = next;\n } else {\n // Token with maybe token groups\n nextState = new State(next);\n if (flags && groups) {\n addToGroups(next, flags, groups);\n }\n }\n this.jr.push([regexp, nextState]);\n return nextState;\n },\n /**\n * Short for \"take transitions\", will take as many sequential transitions as\n * the length of the given input and returns the\n * resulting final state.\n * @param {string | string[]} input\n * @param {T | State<T>} [next] Transition options\n * @param {Flags} [flags] Collections flags to add token to\n * @param {Collections<T>} [groups] Master list of token groups\n * @returns {State<T>} taken after the given input\n */\n ts(input, next, flags, groups) {\n let state = this;\n const len = input.length;\n if (!len) {\n return state;\n }\n for (let i = 0; i < len - 1; i++) {\n state = state.tt(input[i]);\n }\n return state.tt(input[len - 1], next, flags, groups);\n },\n /**\n * Short for \"take transition\", this is a method for building/working with\n * state machines.\n *\n * If a state already exists for the given input, returns it.\n *\n * If a token is specified, that state will emit that token when reached by\n * the linkify engine.\n *\n * If no state exists, it will be initialized with some default transitions\n * that resemble existing default transitions.\n *\n * If a state is given for the second argument, that state will be\n * transitioned to on the given input regardless of what that input\n * previously did.\n *\n * Specify a token group flags to define groups that this token belongs to.\n * The token will be added to corresponding entires in the given groups\n * object.\n *\n * @param {string} input character, token type to transition on\n * @param {T | State<T>} [next] Transition options\n * @param {Flags} [flags] Collections flags to add token to\n * @param {Collections<T>} [groups] Master list of groups\n * @returns {State<T>} taken after the given input\n */\n tt(input, next, flags, groups) {\n groups = groups || State.groups;\n const state = this;\n\n // Check if existing state given, just a basic transition\n if (next && next.j) {\n state.j[input] = next;\n return next;\n }\n const t = next;\n\n // Take the transition with the usual default mechanisms and use that as\n // a template for creating the next state\n let nextState,\n templateState = state.go(input);\n if (templateState) {\n nextState = new State();\n Object.assign(nextState.j, templateState.j);\n nextState.jr.push.apply(nextState.jr, templateState.jr);\n nextState.jd = templateState.jd;\n nextState.t = templateState.t;\n } else {\n nextState = new State();\n }\n if (t) {\n // Ensure newly token is in the same groups as the old token\n if (groups) {\n if (nextState.t && typeof nextState.t === 'string') {\n const allFlags = Object.assign(flagsForToken(nextState.t, groups), flags);\n addToGroups(t, allFlags, groups);\n } else if (flags) {\n addToGroups(t, flags, groups);\n }\n }\n nextState.t = t; // overwrite anything that was previously there\n }\n state.j[input] = nextState;\n return nextState;\n }\n};\n\n// Helper functions to improve minification (not exported outside linkifyjs module)\n\n/**\n * @template T\n * @param {State<T>} state\n * @param {string | string[]} input\n * @param {Flags} [flags]\n * @param {Collections<T>} [groups]\n */\nconst ta = (state, input, next, flags, groups) => state.ta(input, next, flags, groups);\n\n/**\n * @template T\n * @param {State<T>} state\n * @param {RegExp} regexp\n * @param {T | State<T>} [next]\n * @param {Flags} [flags]\n * @param {Collections<T>} [groups]\n */\nconst tr = (state, regexp, next, flags, groups) => state.tr(regexp, next, flags, groups);\n\n/**\n * @template T\n * @param {State<T>} state\n * @param {string | string[]} input\n * @param {T | State<T>} [next]\n * @param {Flags} [flags]\n * @param {Collections<T>} [groups]\n */\nconst ts = (state, input, next, flags, groups) => state.ts(input, next, flags, groups);\n\n/**\n * @template T\n * @param {State<T>} state\n * @param {string} input\n * @param {T | State<T>} [next]\n * @param {Collections<T>} [groups]\n * @param {Flags} [flags]\n */\nconst tt = (state, input, next, flags, groups) => state.tt(input, next, flags, groups);\n\n/******************************************************************************\nText Tokens\nIdentifiers for token outputs from the regexp scanner\n******************************************************************************/\n\n// A valid web domain token\nconst WORD = 'WORD'; // only contains a-z\nconst UWORD = 'UWORD'; // contains letters other than a-z, used for IDN\nconst ASCIINUMERICAL = 'ASCIINUMERICAL'; // contains a-z, 0-9\nconst ALPHANUMERICAL = 'ALPHANUMERICAL'; // contains numbers and letters other than a-z, used for IDN\n\n// Special case of word\nconst LOCALHOST = 'LOCALHOST';\n\n// Valid top-level domain, special case of WORD (see tlds.js)\nconst TLD = 'TLD';\n\n// Valid IDN TLD, special case of UWORD (see tlds.js)\nconst UTLD = 'UTLD';\n\n// The scheme portion of a web URI protocol. Supported types include: `mailto`,\n// `file`, and user-defined custom protocols. Limited to schemes that contain\n// only letters\nconst SCHEME = 'SCHEME';\n\n// Similar to SCHEME, except makes distinction for schemes that must always be\n// followed by `://`, not just `:`. Supported types include `http`, `https`,\n// `ftp`, `ftps`\nconst SLASH_SCHEME = 'SLASH_SCHEME';\n\n// Any sequence of digits 0-9\nconst NUM = 'NUM';\n\n// Any number of consecutive whitespace characters that are not newline\nconst WS = 'WS';\n\n// New line (unix style)\nconst NL = 'NL'; // \\n\n\n// Opening/closing bracket classes\n// TODO: Rename OPEN -> LEFT and CLOSE -> RIGHT in v5 to fit with Unicode names\n// Also rename angle brackes to LESSTHAN and GREATER THAN\nconst OPENBRACE = 'OPENBRACE'; // {\nconst CLOSEBRACE = 'CLOSEBRACE'; // }\nconst OPENBRACKET = 'OPENBRACKET'; // [\nconst CLOSEBRACKET = 'CLOSEBRACKET'; // ]\nconst OPENPAREN = 'OPENPAREN'; // (\nconst CLOSEPAREN = 'CLOSEPAREN'; // )\nconst OPENANGLEBRACKET = 'OPENANGLEBRACKET'; // <\nconst CLOSEANGLEBRACKET = 'CLOSEANGLEBRACKET'; // >\nconst FULLWIDTHLEFTPAREN = 'FULLWIDTHLEFTPAREN'; // (\nconst FULLWIDTHRIGHTPAREN = 'FULLWIDTHRIGHTPAREN'; // )\nconst LEFTCORNERBRACKET = 'LEFTCORNERBRACKET'; // 「\nconst RIGHTCORNERBRACKET = 'RIGHTCORNERBRACKET'; // 」\nconst LEFTWHITECORNERBRACKET = 'LEFTWHITECORNERBRACKET'; // 『\nconst RIGHTWHITECORNERBRACKET = 'RIGHTWHITECORNERBRACKET'; // 』\nconst FULLWIDTHLESSTHAN = 'FULLWIDTHLESSTHAN'; // <\nconst FULLWIDTHGREATERTHAN = 'FULLWIDTHGREATERTHAN'; // >\n\n// Various symbols\nconst AMPERSAND = 'AMPERSAND'; // &\nconst APOSTROPHE = 'APOSTROPHE'; // '\nconst ASTERISK = 'ASTERISK'; // *\nconst AT = 'AT'; // @\nconst BACKSLASH = 'BACKSLASH'; // \\\nconst BACKTICK = 'BACKTICK'; // `\nconst CARET = 'CARET'; // ^\nconst COLON = 'COLON'; // :\nconst COMMA = 'COMMA'; // ,\nconst DOLLAR = 'DOLLAR'; // $\nconst DOT = 'DOT'; // .\nconst EQUALS = 'EQUALS'; // =\nconst EXCLAMATION = 'EXCLAMATION'; // !\nconst HYPHEN = 'HYPHEN'; // -\nconst PERCENT = 'PERCENT'; // %\nconst PIPE = 'PIPE'; // |\nconst PLUS = 'PLUS'; // +\nconst POUND = 'POUND'; // #\nconst QUERY = 'QUERY'; // ?\nconst QUOTE = 'QUOTE'; // \"\nconst FULLWIDTHMIDDLEDOT = 'FULLWIDTHMIDDLEDOT'; // ・\n\nconst SEMI = 'SEMI'; // ;\nconst SLASH = 'SLASH'; // /\nconst TILDE = 'TILDE'; // ~\nconst UNDERSCORE = 'UNDERSCORE'; // _\n\n// Emoji symbol\nconst EMOJI$1 = 'EMOJI';\n\n// Default token - anything that is not one of the above\nconst SYM = 'SYM';\n\nvar tk = /*#__PURE__*/Object.freeze({\n\t__proto__: null,\n\tALPHANUMERICAL: ALPHANUMERICAL,\n\tAMPERSAND: AMPERSAND,\n\tAPOSTROPHE: APOSTROPHE,\n\tASCIINUMERICAL: ASCIINUMERICAL,\n\tASTERISK: ASTERISK,\n\tAT: AT,\n\tBACKSLASH: BACKSLASH,\n\tBACKTICK: BACKTICK,\n\tCARET: CARET,\n\tCLOSEANGLEBRACKET: CLOSEANGLEBRACKET,\n\tCLOSEBRACE: CLOSEBRACE,\n\tCLOSEBRACKET: CLOSEBRACKET,\n\tCLOSEPAREN: CLOSEPAREN,\n\tCOLON: COLON,\n\tCOMMA: COMMA,\n\tDOLLAR: DOLLAR,\n\tDOT: DOT,\n\tEMOJI: EMOJI$1,\n\tEQUALS: EQUALS,\n\tEXCLAMATION: EXCLAMATION,\n\tFULLWIDTHGREATERTHAN: FULLWIDTHGREATERTHAN,\n\tFULLWIDTHLEFTPAREN: FULLWIDTHLEFTPAREN,\n\tFULLWIDTHLESSTHAN: FULLWIDTHLESSTHAN,\n\tFULLWIDTHMIDDLEDOT: FULLWIDTHMIDDLEDOT,\n\tFULLWIDTHRIGHTPAREN: FULLWIDTHRIGHTPAREN,\n\tHYPHEN: HYPHEN,\n\tLEFTCORNERBRACKET: LEFTCORNERBRACKET,\n\tLEFTWHITECORNERBRACKET: LEFTWHITECORNERBRACKET,\n\tLOCALHOST: LOCALHOST,\n\tNL: NL,\n\tNUM: NUM,\n\tOPENANGLEBRACKET: OPENANGLEBRACKET,\n\tOPENBRACE: OPENBRACE,\n\tOPENBRACKET: OPENBRACKET,\n\tOPENPAREN: OPENPAREN,\n\tPERCENT: PERCENT,\n\tPIPE: PIPE,\n\tPLUS: PLUS,\n\tPOUND: POUND,\n\tQUERY: QUERY,\n\tQUOTE: QUOTE,\n\tRIGHTCORNERBRACKET: RIGHTCORNERBRACKET,\n\tRIGHTWHITECORNERBRACKET: RIGHTWHITECORNERBRACKET,\n\tSCHEME: SCHEME,\n\tSEMI: SEMI,\n\tSLASH: SLASH,\n\tSLASH_SCHEME: SLASH_SCHEME,\n\tSYM: SYM,\n\tTILDE: TILDE,\n\tTLD: TLD,\n\tUNDERSCORE: UNDERSCORE,\n\tUTLD: UTLD,\n\tUWORD: UWORD,\n\tWORD: WORD,\n\tWS: WS\n});\n\n// Note that these two Unicode ones expand into a really big one with Babel\nconst ASCII_LETTER = /[a-z]/;\nconst LETTER = /\\p{L}/u; // Any Unicode character with letter data type\nconst EMOJI = /\\p{Emoji}/u; // Any Unicode emoji character\nconst EMOJI_VARIATION$1 = /\\ufe0f/;\nconst DIGIT = /\\d/;\nconst SPACE = /\\s/;\n\nvar regexp = /*#__PURE__*/Object.freeze({\n\t__proto__: null,\n\tASCII_LETTER: ASCII_LETTER,\n\tDIGIT: DIGIT,\n\tEMOJI: EMOJI,\n\tEMOJI_VARIATION: EMOJI_VARIATION$1,\n\tLETTER: LETTER,\n\tSPACE: SPACE\n});\n\n/**\n\tThe scanner provides an interface that takes a string of text as input, and\n\toutputs an array of tokens instances that can be used for easy URL parsing.\n*/\n\nconst CR = '\\r'; // carriage-return character\nconst LF = '\\n'; // line-feed character\nconst EMOJI_VARIATION = '\\ufe0f'; // Variation selector, follows heart and others\nconst EMOJI_JOINER = '\\u200d'; // zero-width joiner\nconst OBJECT_REPLACEMENT = '\\ufffc'; // whitespace placeholder that sometimes appears in rich text editors\n\nlet tlds = null,\n utlds = null; // don't change so only have to be computed once\n\n/**\n * Scanner output token:\n * - `t` is the token name (e.g., 'NUM', 'EMOJI', 'TLD')\n * - `v` is the value of the token (e.g., '123', '❤️', 'com')\n * - `s` is the start index of the token in the original string\n * - `e` is the end index of the token in the original string\n * @typedef {{t: string, v: string, s: number, e: number}} Token\n */\n\n/**\n * @template T\n * @typedef {{ [collection: string]: T[] }} Collections\n */\n\n/**\n * Initialize the scanner character-based state machine for the given start\n * state\n * @param {[string, boolean][]} customSchemes List of custom schemes, where each\n * item is a length-2 tuple with the first element set to the string scheme, and\n * the second element set to `true` if the `://` after the scheme is optional\n */\nfunction init$2(customSchemes = []) {\n // Frequently used states (name argument removed during minification)\n /** @type Collections<string> */\n const groups = {}; // of tokens\n State.groups = groups;\n /** @type State<string> */\n const Start = new State();\n if (tlds == null) {\n tlds = decodeTlds(encodedTlds);\n }\n if (utlds == null) {\n utlds = decodeTlds(encodedUtlds);\n }\n\n // States for special URL symbols that accept immediately after start\n tt(Start, \"'\", APOSTROPHE);\n tt(Start, '{', OPENBRACE);\n tt(Start, '}', CLOSEBRACE);\n tt(Start, '[', OPENBRACKET);\n tt(Start, ']', CLOSEBRACKET);\n tt(Start, '(', OPENPAREN);\n tt(Start, ')', CLOSEPAREN);\n tt(Start, '<', OPENANGLEBRACKET);\n tt(Start, '>', CLOSEANGLEBRACKET);\n tt(Start, '(', FULLWIDTHLEFTPAREN);\n tt(Start, ')', FULLWIDTHRIGHTPAREN);\n tt(Start, '「', LEFTCORNERBRACKET);\n tt(Start, '」', RIGHTCORNERBRACKET);\n tt(Start, '『', LEFTWHITECORNERBRACKET);\n tt(Start, '』', RIGHTWHITECORNERBRACKET);\n tt(Start, '<', FULLWIDTHLESSTHAN);\n tt(Start, '>', FULLWIDTHGREATERTHAN);\n tt(Start, '&', AMPERSAND);\n tt(Start, '*', ASTERISK);\n tt(Start, '@', AT);\n tt(Start, '`', BACKTICK);\n tt(Start, '^', CARET);\n tt(Start, ':', COLON);\n tt(Start, ',', COMMA);\n tt(Start, '$', DOLLAR);\n tt(Start, '.', DOT);\n tt(Start, '=', EQUALS);\n tt(Start, '!', EXCLAMATION);\n tt(Start, '-', HYPHEN);\n tt(Start, '%', PERCENT);\n tt(Start, '|', PIPE);\n tt(Start, '+', PLUS);\n tt(Start, '#', POUND);\n tt(Start, '?', QUERY);\n tt(Start, '\"', QUOTE);\n tt(Start, '/', SLASH);\n tt(Start, ';', SEMI);\n tt(Start, '~', TILDE);\n tt(Start, '_', UNDERSCORE);\n tt(Start, '\\\\', BACKSLASH);\n tt(Start, '・', FULLWIDTHMIDDLEDOT);\n const Num = tr(Start, DIGIT, NUM, {\n [numeric]: true\n });\n tr(Num, DIGIT, Num);\n const Asciinumeric = tr(Num, ASCII_LETTER, ASCIINUMERICAL, {\n [asciinumeric]: true\n });\n const Alphanumeric = tr(Num, LETTER, ALPHANUMERICAL, {\n [alphanumeric]: true\n });\n\n // State which emits a word token\n const Word = tr(Start, ASCII_LETTER, WORD, {\n [ascii]: true\n });\n tr(Word, DIGIT, Asciinumeric);\n tr(Word, ASCII_LETTER, Word);\n tr(Asciinumeric, DIGIT, Asciinumeric);\n tr(Asciinumeric, ASCII_LETTER, Asciinumeric);\n\n // Same as previous, but specific to non-fsm.ascii alphabet words\n const UWord = tr(Start, LETTER, UWORD, {\n [alpha]: true\n });\n tr(UWord, ASCII_LETTER); // Non-accepting\n tr(UWord, DIGIT, Alphanumeric);\n tr(UWord, LETTER, UWord);\n tr(Alphanumeric, DIGIT, Alphanumeric);\n tr(Alphanumeric, ASCII_LETTER); // Non-accepting\n tr(Alphanumeric, LETTER, Alphanumeric); // Non-accepting\n\n // Whitespace jumps\n // Tokens of only non-newline whitespace are arbitrarily long\n // If any whitespace except newline, more whitespace!\n const Nl = tt(Start, LF, NL, {\n [whitespace]: true\n });\n const Cr = tt(Start, CR, WS, {\n [whitespace]: true\n });\n const Ws = tr(Start, SPACE, WS, {\n [whitespace]: true\n });\n tt(Start, OBJECT_REPLACEMENT, Ws);\n tt(Cr, LF, Nl); // \\r\\n\n tt(Cr, OBJECT_REPLACEMENT, Ws);\n tr(Cr, SPACE, Ws);\n tt(Ws, CR); // non-accepting state to avoid mixing whitespaces\n tt(Ws, LF); // non-accepting state to avoid mixing whitespaces\n tr(Ws, SPACE, Ws);\n tt(Ws, OBJECT_REPLACEMENT, Ws);\n\n // Emoji tokens. They are not grouped by the scanner except in cases where a\n // zero-width joiner is present\n const Emoji = tr(Start, EMOJI, EMOJI$1, {\n [emoji]: true\n });\n tt(Emoji, '#'); // no transition, emoji regex seems to match #\n tr(Emoji, EMOJI, Emoji);\n tt(Emoji, EMOJI_VARIATION, Emoji);\n // tt(Start, EMOJI_VARIATION, Emoji); // This one is sketchy\n\n const EmojiJoiner = tt(Emoji, EMOJI_JOINER);\n tt(EmojiJoiner, '#');\n tr(EmojiJoiner, EMOJI, Emoji);\n // tt(EmojiJoiner, EMOJI_VARIATION, Emoji); // also sketchy\n\n // Generates states for top-level domains\n // Note that this is most accurate when tlds are in alphabetical order\n const wordjr = [[ASCII_LETTER, Word], [DIGIT, Asciinumeric]];\n const uwordjr = [[ASCII_LETTER, null], [LETTER, UWord], [DIGIT, Alphanumeric]];\n for (let i = 0; i < tlds.length; i++) {\n fastts(Start, tlds[i], TLD, WORD, wordjr);\n }\n for (let i = 0; i < utlds.length; i++) {\n fastts(Start, utlds[i], UTLD, UWORD, uwordjr);\n }\n addToGroups(TLD, {\n tld: true,\n ascii: true\n }, groups);\n addToGroups(UTLD, {\n utld: true,\n alpha: true\n }, groups);\n\n // Collect the states generated by different protocols. NOTE: If any new TLDs\n // get added that are also protocols, set the token to be the same as the\n // protocol to ensure parsing works as expected.\n fastts(Start, 'file', SCHEME, WORD, wordjr);\n fastts(Start, 'mailto', SCHEME, WORD, wordjr);\n fastts(Start, 'http', SLASH_SCHEME, WORD, wordjr);\n fastts(Start, 'https', SLASH_SCHEME, WORD, wordjr);\n fastts(Start, 'ftp', SLASH_SCHEME, WORD, wordjr);\n fastts(Start, 'ftps', SLASH_SCHEME, WORD, wordjr);\n addToGroups(SCHEME, {\n scheme: true,\n ascii: true\n }, groups);\n addToGroups(SLASH_SCHEME, {\n slashscheme: true,\n ascii: true\n }, groups);\n\n // Register custom schemes. Assumes each scheme is asciinumeric with hyphens\n customSchemes = customSchemes.sort((a, b) => a[0] > b[0] ? 1 : -1);\n for (let i = 0; i < customSchemes.length; i++) {\n const sch = customSchemes[i][0];\n const optionalSlashSlash = customSchemes[i][1];\n const flags = optionalSlashSlash ? {\n [scheme]: true\n } : {\n [slashscheme]: true\n };\n if (sch.indexOf('-') >= 0) {\n flags[domain] = true;\n } else if (!ASCII_LETTER.test(sch)) {\n flags[numeric] = true; // numbers only\n } else if (DIGIT.test(sch)) {\n flags[asciinumeric] = true;\n } else {\n flags[ascii] = true;\n }\n ts(Start, sch, sch, flags);\n }\n\n // Localhost token\n ts(Start, 'localhost', LOCALHOST, {\n ascii: true\n });\n\n // Set default transition for start state (some symbol)\n Start.jd = new State(SYM);\n return {\n start: Start,\n tokens: Object.assign({\n groups\n }, tk)\n };\n}\n\n/**\n\tGiven a string, returns an array of TOKEN instances representing the\n\tcomposition of that string.\n\n\t@method run\n\t@param {State<string>} start scanner starting state\n\t@param {string} str input string to scan\n\t@return {Token[]} list of tokens, each with a type and value\n*/\nfunction run$1(start, str) {\n // State machine is not case sensitive, so input is tokenized in lowercased\n // form (still returns regular case). Uses selective `toLowerCase` because\n // lowercasing the entire string causes the length and character position to\n // vary in some non-English strings with V8-based runtimes.\n const iterable = stringToArray(str.replace(/[A-Z]/g, c => c.toLowerCase()));\n const charCount = iterable.length; // <= len if there are emojis, etc\n const tokens = []; // return value\n\n // cursor through the string itself, accounting for characters that have\n // width with length 2 such as emojis\n let cursor = 0;\n\n // Cursor through the array-representation of the string\n let charCursor = 0;\n\n // Tokenize the string\n while (charCursor < charCount) {\n let state = start;\n let nextState = null;\n let tokenLength = 0;\n let latestAccepting = null;\n let sinceAccepts = -1;\n let charsSinceAccepts = -1;\n while (charCursor < charCount && (nextState = state.go(iterable[charCursor]))) {\n state = nextState;\n\n // Keep track of the latest accepting state\n if (state.accepts()) {\n sinceAccepts = 0;\n charsSinceAccepts = 0;\n latestAccepting = state;\n } else if (sinceAccepts >= 0) {\n sinceAccepts += iterable[charCursor].length;\n charsSinceAccepts++;\n }\n tokenLength += iterable[charCursor].length;\n cursor += iterable[charCursor].length;\n charCursor++;\n }\n\n // Roll back to the latest accepting state\n cursor -= sinceAccepts;\n charCursor -= charsSinceAccepts;\n tokenLength -= sinceAccepts;\n\n // No more jumps, just make a new token from the last accepting one\n tokens.push({\n t: latestAccepting.t,\n // token type/name\n v: str.slice(cursor - tokenLength, cursor),\n // string value\n s: cursor - tokenLength,\n // start index\n e: cursor // end index (excluding)\n });\n }\n return tokens;\n}\n\n/**\n * Convert a String to an Array of characters, taking into account that some\n * characters like emojis take up two string indexes.\n *\n * Adapted from core-js (MIT license)\n * https://github.com/zloirock/core-js/blob/2d69cf5f99ab3ea3463c395df81e5a15b68f49d9/packages/core-js/internals/string-multibyte.js\n *\n * @function stringToArray\n * @param {string} str\n * @returns {string[]}\n */\nfunction stringToArray(str) {\n const result = [];\n const len = str.length;\n let index = 0;\n while (index < len) {\n let first = str.charCodeAt(index);\n let second;\n let char = first < 0xd800 || first > 0xdbff || index + 1 === len || (second = str.charCodeAt(index + 1)) < 0xdc00 || second > 0xdfff ? str[index] // single character\n : str.slice(index, index + 2); // two-index characters\n result.push(char);\n index += char.length;\n }\n return result;\n}\n\n/**\n * Fast version of ts function for when transition defaults are well known\n * @param {State<string>} state\n * @param {string} input\n * @param {string} t\n * @param {string} defaultt\n * @param {[RegExp, State<string>][]} jr\n * @returns {State<string>}\n */\nfunction fastts(state, input, t, defaultt, jr) {\n let next;\n const len = input.length;\n for (let i = 0; i < len - 1; i++) {\n const char = input[i];\n if (state.j[char]) {\n next = state.j[char];\n } else {\n next = new State(defaultt);\n next.jr = jr.slice();\n state.j[char] = next;\n }\n state = next;\n }\n next = new State(t);\n next.jr = jr.slice();\n state.j[input[len - 1]] = next;\n return next;\n}\n\n/**\n * Converts a string of Top-Level Domain names encoded in update-tlds.js back\n * into a list of strings.\n * @param {str} encoded encoded TLDs string\n * @returns {str[]} original TLDs list\n */\nfunction decodeTlds(encoded) {\n const words = [];\n const stack = [];\n let i = 0;\n let digits = '0123456789';\n while (i < encoded.length) {\n let popDigitCount = 0;\n while (digits.indexOf(encoded[i + popDigitCount]) >= 0) {\n popDigitCount++; // encountered some digits, have to pop to go one level up trie\n }\n if (popDigitCount > 0) {\n words.push(stack.join('')); // whatever preceded the pop digits must be a word\n for (let popCount = parseInt(encoded.substring(i, i + popDigitCount), 10); popCount > 0; popCount--) {\n stack.pop();\n }\n i += popDigitCount;\n } else {\n stack.push(encoded[i]); // drop down a level into the trie\n i++;\n }\n }\n return words;\n}\n\n/**\n * An object where each key is a valid DOM Event Name such as `click` or `focus`\n * and each value is an event handler function.\n *\n * https://developer.mozilla.org/en-US/docs/Web/API/Element#events\n * @typedef {?{ [event: string]: Function }} EventListeners\n */\n\n/**\n * All formatted properties required to render a link, including `tagName`,\n * `attributes`, `content` and `eventListeners`.\n * @typedef {{ tagName: any, attributes: {[attr: string]: any}, content: string,\n * eventListeners: EventListeners }} IntermediateRepresentation\n */\n\n/**\n * Specify either an object described by the template type `O` or a function.\n *\n * The function takes a string value (usually the link's href attribute), the\n * link type (`'url'`, `'hashtag`', etc.) and an internal token representation\n * of the link. It should return an object of the template type `O`\n * @template O\n * @typedef {O | ((value: string, type: string, token: MultiToken) => O)} OptObj\n */\n\n/**\n * Specify either a function described by template type `F` or an object.\n *\n * Each key in the object should be a link type (`'url'`, `'hashtag`', etc.). Each\n * value should be a function with template type `F` that is called when the\n * corresponding link type is encountered.\n * @template F\n * @typedef {F | { [type: string]: F}} OptFn\n */\n\n/**\n * Specify either a value with template type `V`, a function that returns `V` or\n * an object where each value resolves to `V`.\n *\n * The function takes a string value (usually the link's href attribute), the\n * link type (`'url'`, `'hashtag`', etc.) and an internal token representation\n * of the link. It should return an object of the template type `V`\n *\n * For the object, each key should be a link type (`'url'`, `'hashtag`', etc.).\n * Each value should either have type `V` or a function that returns V. This\n * function similarly takes a string value and a token.\n *\n * Example valid types for `Opt<string>`:\n *\n * ```js\n * 'hello'\n * (value, type, token) => 'world'\n * { url: 'hello', email: (value, token) => 'world'}\n * ```\n * @template V\n * @typedef {V | ((value: string, type: string, token: MultiToken) => V) | { [type: string]: V | ((value: string, token: MultiToken) => V) }} Opt\n */\n\n/**\n * See available options: https://linkify.js.org/docs/options.html\n * @typedef {{\n * \tdefaultProtocol?: string,\n * events?: OptObj<EventListeners>,\n * \tformat?: Opt<string>,\n * \tformatHref?: Opt<string>,\n * \tnl2br?: boolean,\n * \ttagName?: Opt<any>,\n * \ttarget?: Opt<string>,\n * \trel?: Opt<string>,\n * \tvalidate?: Opt<boolean>,\n * \ttruncate?: Opt<number>,\n * \tclassName?: Opt<string>,\n * \tattributes?: OptObj<({ [attr: string]: any })>,\n * ignoreTags?: string[],\n * \trender?: OptFn<((ir: IntermediateRepresentation) => any)>\n * }} Opts\n */\n\n/**\n * @type Required<Opts>\n */\nconst defaults = {\n defaultProtocol: 'http',\n events: null,\n format: noop,\n formatHref: noop,\n nl2br: false,\n tagName: 'a',\n target: null,\n rel: null,\n validate: true,\n truncate: Infinity,\n className: null,\n attributes: null,\n ignoreTags: [],\n render: null\n};\n\n/**\n * Utility class for linkify interfaces to apply specified\n * {@link Opts formatting and rendering options}.\n *\n * @param {Opts | Options} [opts] Option value overrides.\n * @param {(ir: IntermediateRepresentation) => any} [defaultRender] (For\n * internal use) default render function that determines how to generate an\n * HTML element based on a link token's derived tagName, attributes and HTML.\n * Similar to render option\n */\nfunction Options(opts, defaultRender = null) {\n let o = Object.assign({}, defaults);\n if (opts) {\n o = Object.assign(o, opts instanceof Options ? opts.o : opts);\n }\n\n // Ensure all ignored tags are uppercase\n const ignoredTags = o.ignoreTags;\n const uppercaseIgnoredTags = [];\n for (let i = 0; i < ignoredTags.length; i++) {\n uppercaseIgnoredTags.push(ignoredTags[i].toUpperCase());\n }\n /** @protected */\n this.o = o;\n if (defaultRender) {\n this.defaultRender = defaultRender;\n }\n this.ignoreTags = uppercaseIgnoredTags;\n}\nOptions.prototype = {\n o: defaults,\n /**\n * @type string[]\n */\n ignoreTags: [],\n /**\n * @param {IntermediateRepresentation} ir\n * @returns {any}\n */\n defaultRender(ir) {\n return ir;\n },\n /**\n * Returns true or false based on whether a token should be displayed as a\n * link based on the user options.\n * @param {MultiToken} token\n * @returns {boolean}\n */\n check(token) {\n return this.get('validate', token.toString(), token);\n },\n // Private methods\n\n /**\n * Resolve an option's value based on the value of the option and the given\n * params. If operator and token are specified and the target option is\n * callable, automatically calls the function with the given argument.\n * @template {keyof Opts} K\n * @param {K} key Name of option to use\n * @param {string} [operator] will be passed to the target option if it's a\n * function. If not specified, RAW function value gets returned\n * @param {MultiToken} [token] The token from linkify.tokenize\n * @returns {Opts[K] | any}\n */\n get(key, operator, token) {\n const isCallable = operator != null;\n let option = this.o[key];\n if (!option) {\n return option;\n }\n if (typeof option === 'object') {\n option = token.t in option ? option[token.t] : defaults[key];\n if (typeof option === 'function' && isCallable) {\n option = option(operator, token);\n }\n } else if (typeof option === 'function' && isCallable) {\n option = option(operator, token.t, token);\n }\n return option;\n },\n /**\n * @template {keyof Opts} L\n * @param {L} key Name of options object to use\n * @param {string} [operator]\n * @param {MultiToken} [token]\n * @returns {Opts[L] | any}\n */\n getObj(key, operator, token) {\n let obj = this.o[key];\n if (typeof obj === 'function' && operator != null) {\n obj = obj(operator, token.t, token);\n }\n return obj;\n },\n /**\n * Convert the given token to a rendered element that may be added to the\n * calling-interface's DOM\n * @param {MultiToken} token Token to render to an HTML element\n * @returns {any} Render result; e.g., HTML string, DOM element, React\n * Component, etc.\n */\n render(token) {\n const ir = token.render(this); // intermediate representation\n const renderFn = this.get('render', null, token) || this.defaultRender;\n return renderFn(ir, token.t, token);\n }\n};\nfunction noop(val) {\n return val;\n}\n\nvar options = /*#__PURE__*/Object.freeze({\n\t__proto__: null,\n\tOptions: Options,\n\tdefaults: defaults\n});\n\n/******************************************************************************\n\tMulti-Tokens\n\tTokens composed of arrays of TextTokens\n******************************************************************************/\n\n/**\n * @param {string} value\n * @param {Token[]} tokens\n */\nfunction MultiToken(value, tokens) {\n this.t = 'token';\n this.v = value;\n this.tk = tokens;\n}\n\n/**\n * Abstract class used for manufacturing tokens of text tokens. That is rather\n * than the value for a token being a small string of text, it's value an array\n * of text tokens.\n *\n * Used for grouping together URLs, emails, hashtags, and other potential\n * creations.\n * @class MultiToken\n * @property {string} t\n * @property {string} v\n * @property {Token[]} tk\n * @abstract\n */\nMultiToken.prototype = {\n isLink: false,\n /**\n * Return the string this token represents.\n * @return {string}\n */\n toString() {\n return this.v;\n },\n /**\n * What should the value for this token be in the `href` HTML attribute?\n * Returns the `.toString` value by default.\n * @param {string} [scheme]\n * @return {string}\n */\n toHref(scheme) {\n return this.toString();\n },\n /**\n * @param {Options} options Formatting options\n * @returns {string}\n */\n toFormattedString(options) {\n const val = this.toString();\n const truncate = options.get('truncate', val, this);\n const formatted = options.get('format', val, this);\n return truncate && formatted.length > truncate ? formatted.substring(0, truncate) + '…' : formatted;\n },\n /**\n *\n * @param {Options} options\n * @returns {string}\n */\n toFormattedHref(options) {\n return options.get('formatHref', this.toHref(options.get('defaultProtocol')), this);\n },\n /**\n * The start index of this token in the original input string\n * @returns {number}\n */\n startIndex() {\n return this.tk[0].s;\n },\n /**\n * The end index of this token in the original input string (up to this\n * index but not including it)\n * @returns {number}\n */\n endIndex() {\n return this.tk[this.tk.length - 1].e;\n },\n /**\n \tReturns an object of relevant values for this token, which includes keys\n \t* type - Kind of token ('url', 'email', etc.)\n \t* value - Original text\n \t* href - The value that should be added to the anchor tag's href\n \t\tattribute\n \t\t@method toObject\n \t@param {string} [protocol] `'http'` by default\n */\n toObject(protocol = defaults.defaultProtocol) {\n return {\n type: this.t,\n value: this.toString(),\n isLink: this.isLink,\n href: this.toHref(protocol),\n start: this.startIndex(),\n end: this.endIndex()\n };\n },\n /**\n *\n * @param {Options} options Formatting option\n */\n toFormattedObject(options) {\n return {\n type: this.t,\n value: this.toFormattedString(options),\n isLink: this.isLink,\n href: this.toFormattedHref(options),\n start: this.startIndex(),\n end: this.endIndex()\n };\n },\n /**\n * Whether this token should be rendered as a link according to the given options\n * @param {Options} options\n * @returns {boolean}\n */\n validate(options) {\n return options.get('validate', this.toString(), this);\n },\n /**\n * Return an object that represents how this link should be rendered.\n * @param {Options} options Formattinng options\n */\n render(options) {\n const token = this;\n const href = this.toHref(options.get('defaultProtocol'));\n const formattedHref = options.get('formatHref', href, this);\n const tagName = options.get('tagName', href, token);\n const content = this.toFormattedString(options);\n const attributes = {};\n const className = options.get('className', href, token);\n const target = options.get('target', href, token);\n const rel = options.get('rel', href, token);\n const attrs = options.getObj('attributes', href, token);\n const eventListeners = options.getObj('events', href, token);\n attributes.href = formattedHref;\n if (className) {\n attributes.class = className;\n }\n if (target) {\n attributes.target = target;\n }\n if (rel) {\n attributes.rel = rel;\n }\n if (attrs) {\n Object.assign(attributes, attrs);\n }\n return {\n tagName,\n attributes,\n content,\n eventListeners\n };\n }\n};\n\n/**\n * Create a new token that can be emitted by the parser state machine\n * @param {string} type readable type of the token\n * @param {object} props properties to assign or override, including isLink = true or false\n * @returns {new (value: string, tokens: Token[]) => MultiToken} new token class\n */\nfunction createTokenClass(type, props) {\n class Token extends MultiToken {\n constructor(value, tokens) {\n super(value, tokens);\n this.t = type;\n }\n }\n for (const p in props) {\n Token.prototype[p] = props[p];\n }\n Token.t = type;\n return Token;\n}\n\n/**\n\tRepresents a list of tokens making up a valid email address\n*/\nconst Email = createTokenClass('email', {\n isLink: true,\n toHref() {\n return 'mailto:' + this.toString();\n }\n});\n\n/**\n\tRepresents some plain text\n*/\nconst Text = createTokenClass('text');\n\n/**\n\tMulti-linebreak token - represents a line break\n\t@class Nl\n*/\nconst Nl = createTokenClass('nl');\n\n/**\n\tRepresents a list of text tokens making up a valid URL\n\t@class Url\n*/\nconst Url = createTokenClass('url', {\n isLink: true,\n /**\n \tLowercases relevant parts of the domain and adds the protocol if\n \trequired. Note that this will not escape unsafe HTML characters in the\n \tURL.\n \t\t@param {string} [scheme] default scheme (e.g., 'https')\n \t@return {string} the full href\n */\n toHref(scheme = defaults.defaultProtocol) {\n // Check if already has a prefix scheme\n return this.hasProtocol() ? this.v : `${scheme}://${this.v}`;\n },\n /**\n * Check whether this URL token has a protocol\n * @return {boolean}\n */\n hasProtocol() {\n const tokens = this.tk;\n return tokens.length >= 2 && tokens[0].t !== LOCALHOST && tokens[1].t === COLON;\n }\n});\n\nvar multi = /*#__PURE__*/Object.freeze({\n\t__proto__: null,\n\tBase: MultiToken,\n\tEmail: Email,\n\tMultiToken: MultiToken,\n\tNl: Nl,\n\tText: Text,\n\tUrl: Url,\n\tcreateTokenClass: createTokenClass\n});\n\n/**\n\tNot exactly parser, more like the second-stage scanner (although we can\n\ttheoretically hotswap the code here with a real parser in the future... but\n\tfor a little URL-finding utility abstract syntax trees may be a little\n\toverkill).\n\n\tURL format: http://en.wikipedia.org/wiki/URI_scheme\n\tEmail format: http://en.wikipedia.org/wiki/EmailAddress (links to RFC in\n\treference)\n\n\t@module linkify\n\t@submodule parser\n\t@main run\n*/\n\nconst makeState = arg => new State(arg);\n\n/**\n * Generate the parser multi token-based state machine\n * @param {{ groups: Collections<string> }} tokens\n */\nfunction init$1({\n groups\n}) {\n // Types of characters the URL can definitely end in\n const qsAccepting = groups.domain.concat([AMPERSAND, ASTERISK, AT, BACKSLASH, BACKTICK, CARET, DOLLAR, EQUALS, HYPHEN, NUM, PERCENT, PIPE, PLUS, POUND, SLASH, SYM, TILDE, UNDERSCORE]);\n\n // Types of tokens that can follow a URL and be part of the query string\n // but cannot be the very last characters\n // Characters that cannot appear in the URL at all should be excluded\n const qsNonAccepting = [APOSTROPHE, COLON, COMMA, DOT, EXCLAMATION, PERCENT, QUERY, QUOTE, SEMI, OPENANGLEBRACKET, CLOSEANGLEBRACKET, OPENBRACE, CLOSEBRACE, CLOSEBRACKET, OPENBRACKET, OPENPAREN, CLOSEPAREN, FULLWIDTHLEFTPAREN, FULLWIDTHRIGHTPAREN, LEFTCORNERBRACKET, RIGHTCORNERBRACKET, LEFTWHITECORNERBRACKET, RIGHTWHITECORNERBRACKET, FULLWIDTHLESSTHAN, FULLWIDTHGREATERTHAN];\n\n // For addresses without the mailto prefix\n // Tokens allowed in the localpart of the email\n const localpartAccepting = [AMPERSAND, APOSTROPHE, ASTERISK, BACKSLASH, BACKTICK, CARET, DOLLAR, EQUALS, HYPHEN, OPENBRACE, CLOSEBRACE, PERCENT, PIPE, PLUS, POUND, QUERY, SLASH, SYM, TILDE, UNDERSCORE];\n\n // The universal starting state.\n /**\n * @type State<Token>\n */\n const Start = makeState();\n const Localpart = tt(Start, TILDE); // Local part of the email address\n ta(Localpart, localpartAccepting, Localpart);\n ta(Localpart, groups.domain, Localpart);\n const Domain = makeState(),\n Scheme = makeState(),\n SlashScheme = makeState();\n ta(Start, groups.domain, Domain); // parsed string ends with a potential domain name (A)\n ta(Start, groups.scheme, Scheme); // e.g., 'mailto'\n ta(Start, groups.slashscheme, SlashScheme); // e.g., 'http'\n\n ta(Domain, localpartAccepting, Localpart);\n ta(Domain, groups.domain, Domain);\n const LocalpartAt = tt(Domain, AT); // Local part of the email address plus @\n\n tt(Localpart, AT, LocalpartAt); // close to an email address now\n\n // Local part of an email address can be e.g. 'http' or 'mailto'\n tt(Scheme, AT, LocalpartAt);\n tt(SlashScheme, AT, LocalpartAt);\n const LocalpartDot = tt(Localpart, DOT); // Local part of the email address plus '.' (localpart cannot end in .)\n ta(LocalpartDot, localpartAccepting, Localpart);\n ta(LocalpartDot, groups.domain, Localpart);\n const EmailDomain = makeState();\n ta(LocalpartAt, groups.domain, EmailDomain); // parsed string starts with local email info + @ with a potential domain name\n ta(EmailDomain, groups.domain, EmailDomain);\n const EmailDomainDot = tt(EmailDomain, DOT); // domain followed by DOT\n ta(EmailDomainDot, groups.domain, EmailDomain);\n const Email$1 = makeState(Email); // Possible email address (could have more tlds)\n ta(EmailDomainDot, groups.tld, Email$1);\n ta(EmailDomainDot, groups.utld, Email$1);\n tt(LocalpartAt, LOCALHOST, Email$1);\n\n // Hyphen can jump back to a domain name\n const EmailDomainHyphen = tt(EmailDomain, HYPHEN); // parsed string starts with local email info + @ with a potential domain name\n tt(EmailDomainHyphen, HYPHEN, EmailDomainHyphen);\n ta(EmailDomainHyphen, groups.domain, EmailDomain);\n ta(Email$1, groups.domain, EmailDomain);\n tt(Email$1, DOT, EmailDomainDot);\n tt(Email$1, HYPHEN, EmailDomainHyphen);\n\n // Account for dots and hyphens. Hyphens are usually parts of domain names\n // (but not TLDs)\n const DomainHyphen = tt(Domain, HYPHEN); // domain followed by hyphen\n const DomainDot = tt(Domain, DOT); // domain followed by DOT\n tt(DomainHyphen, HYPHEN, DomainHyphen);\n ta(DomainHyphen, groups.domain, Domain);\n ta(DomainDot, localpartAccepting, Localpart);\n ta(DomainDot, groups.domain, Domain);\n const DomainDotTld = makeState(Url); // Simplest possible URL with no query string\n ta(DomainDot, groups.tld, DomainDotTld);\n ta(DomainDot, groups.utld, DomainDotTld);\n ta(DomainDotTld, groups.domain, Domain);\n ta(DomainDotTld, localpartAccepting, Localpart);\n tt(DomainDotTld, DOT, DomainDot);\n tt(DomainDotTld, HYPHEN, DomainHyphen);\n tt(DomainDotTld, AT, LocalpartAt);\n const DomainDotTldColon = tt(DomainDotTld, COLON); // URL followed by colon (potential port number here)\n const DomainDotTldColonPort = makeState(Url); // TLD followed by a port number\n ta(DomainDotTldColon, groups.numeric, DomainDotTldColonPort);\n\n // Long URL with optional port and maybe query string\n const Url$1 = makeState(Url);\n\n // URL with extra symbols at the end, followed by an opening bracket\n const UrlNonaccept = makeState(); // URL followed by some symbols (will not be part of the final URL)\n\n // Query strings\n ta(Url$1, qsAccepting, Url$1);\n ta(Url$1, qsNonAccepting, UrlNonaccept);\n ta(UrlNonaccept, qsAccepting, Url$1);\n ta(UrlNonaccept, qsNonAccepting, UrlNonaccept);\n\n // Become real URLs after `SLASH` or `COLON NUM SLASH`\n // Here works with or without scheme:// prefix\n tt(DomainDotTld, SLASH, Url$1);\n tt(DomainDotTldColonPort, SLASH, Url$1);\n\n // Note that domains that begin with schemes are treated slighly differently\n const SchemeColon = tt(Scheme, COLON); // e.g., 'mailto:'\n const SlashSchemeColon = tt(SlashScheme, COLON); // e.g., 'http:'\n const SlashSchemeColonSlash = tt(SlashSchemeColon, SLASH); // e.g., 'http:/'\n\n const UriPrefix = tt(SlashSchemeColonSlash, SLASH); // e.g., 'http://'\n\n // Scheme states can transition to domain states\n ta(Scheme, groups.domain, Domain);\n tt(Scheme, DOT, DomainDot);\n tt(Scheme, HYPHEN, DomainHyphen);\n ta(SlashScheme, groups.domain, Domain);\n tt(SlashScheme, DOT, DomainDot);\n tt(SlashScheme, HYPHEN, DomainHyphen);\n\n // Force URL with scheme prefix followed by anything sane\n ta(SchemeColon, groups.domain, Url$1);\n tt(SchemeColon, SLASH, Url$1);\n tt(SchemeColon, QUERY, Url$1);\n ta(UriPrefix, groups.domain, Url$1);\n ta(UriPrefix, qsAccepting, Url$1);\n tt(UriPrefix, SLASH, Url$1);\n const bracketPairs = [[OPENBRACE, CLOSEBRACE],\n // {}\n [OPENBRACKET, CLOSEBRACKET],\n // []\n [OPENPAREN, CLOSEPAREN],\n // ()\n [OPENANGLEBRACKET, CLOSEANGLEBRACKET],\n // <>\n [FULLWIDTHLEFTPAREN, FULLWIDTHRIGHTPAREN],\n // ()\n [LEFTCORNERBRACKET, RIGHTCORNERBRACKET],\n // 「」\n [LEFTWHITECORNERBRACKET, RIGHTWHITECORNERBRACKET],\n // 『』\n [FULLWIDTHLESSTHAN, FULLWIDTHGREATERTHAN] // <>\n ];\n for (let i = 0; i < bracketPairs.length; i++) {\n const [OPEN, CLOSE] = bracketPairs[i];\n const UrlOpen = tt(Url$1, OPEN); // URL followed by open bracket\n\n // Continue not accepting for open brackets\n tt(UrlNonaccept, OPEN, UrlOpen);\n\n // URL that begins with an opening bracket, followed by a symbols.\n // Note that the final state can still be `UrlOpen` (if the URL has a\n // single opening bracket for some reason).\n const UrlOpenQ = makeState(Url);\n ta(UrlOpen, qsAccepting, UrlOpenQ);\n const UrlOpenSyms = makeState(); // UrlOpen followed by some symbols it cannot end it\n ta(UrlOpen, qsNonAccepting, UrlOpenSyms);\n\n // Closing bracket component. This character WILL be included in the URL.\n // Must come after qsNonAccepting (which includes all close-bracket tokens)\n // so that CLOSE -> Url wins over CLOSE -> UrlOpenSyms.\n tt(UrlOpen, CLOSE, Url$1);\n\n // URL that begins with an opening bracket, followed by some symbols\n ta(UrlOpenQ, qsAccepting, UrlOpenQ);\n ta(UrlOpenQ, qsNonAccepting, UrlOpenSyms);\n ta(UrlOpenSyms, qsAccepting, UrlOpenQ);\n ta(UrlOpenSyms, qsNonAccepting, UrlOpenSyms);\n\n // Close brace/bracket to become regular URL\n tt(UrlOpenQ, CLOSE, Url$1);\n tt(UrlOpenSyms, CLOSE, Url$1);\n }\n tt(Start, LOCALHOST, DomainDotTld); // localhost is a valid URL state\n tt(Start, NL, Nl); // single new line\n\n return {\n start: Start,\n tokens: tk\n };\n}\n\n/**\n * Run the parser state machine on a list of scanned string-based tokens to\n * create a list of multi tokens, each of which represents a URL, email address,\n * plain text, etc.\n *\n * @param {State<MultiToken>} start parser start state\n * @param {string} input the original input used to generate the given tokens\n * @param {Token[]} tokens list of scanned tokens\n * @returns {MultiToken[]}\n */\nfunction run(start, input, tokens) {\n let len = tokens.length;\n let cursor = 0;\n let multis = [];\n let textTokens = [];\n while (cursor < len) {\n let state = start;\n let secondState = null;\n let nextState = null;\n let multiLength = 0;\n let latestAccepting = null;\n let sinceAccepts = -1;\n while (cursor < len && !(secondState = state.go(tokens[cursor].t))) {\n // Starting tokens with nowhere to jump to.\n // Consider these to be just plain text\n textTokens.push(tokens[cursor++]);\n }\n while (cursor < len && (nextState = secondState || state.go(tokens[cursor].t))) {\n // Get the next state\n secondState = null;\n state = nextState;\n\n // Keep track of the latest accepting state\n if (state.accepts()) {\n sinceAccepts = 0;\n latestAccepting = state;\n } else if (sinceAccepts >= 0) {\n sinceAccepts++;\n }\n cursor++;\n multiLength++;\n }\n if (sinceAccepts < 0) {\n // No accepting state was found, part of a regular text token add\n // the first text token to the text tokens array and try again from\n // the next\n cursor -= multiLength;\n if (cursor < len) {\n textTokens.push(tokens[cursor]);\n cursor++;\n }\n } else {\n // Accepting state!\n // First close off the textTokens (if available)\n if (textTokens.length > 0) {\n multis.push(initMultiToken(Text, input, textTokens));\n textTokens = [];\n }\n\n // Roll back to the latest accepting state\n cursor -= sinceAccepts;\n multiLength -= sinceAccepts;\n\n // Create a new multitoken\n const Multi = latestAccepting.t;\n const subtokens = tokens.slice(cursor - multiLength, cursor);\n multis.push(initMultiToken(Multi, input, subtokens));\n }\n }\n\n // Finally close off the textTokens (if available)\n if (textTokens.length > 0) {\n multis.push(initMultiToken(Text, input, textTokens));\n }\n return multis;\n}\n\n/**\n * Utility function for instantiating a new multitoken with all the relevant\n * fields during parsing.\n * @param {new (value: string, tokens: Token[]) => MultiToken} Multi class to instantiate\n * @param {string} input original input string\n * @param {Token[]} tokens consecutive tokens scanned from input string\n * @returns {MultiToken}\n */\nfunction initMultiToken(Multi, input, tokens) {\n const startIdx = tokens[0].s;\n const endIdx = tokens[tokens.length - 1].e;\n const value = input.slice(startIdx, endIdx);\n return new Multi(value, tokens);\n}\n\nconst warn = typeof console !== 'undefined' && console && console.warn || (() => {});\nconst warnAdvice = 'until manual call of linkify.init(). Register all schemes and plugins before invoking linkify the first time.';\n\n// Side-effect initialization state\nconst INIT = {\n scanner: null,\n parser: null,\n tokenQueue: [],\n pluginQueue: [],\n customSchemes: [],\n initialized: false\n};\n\n/**\n * @typedef {{\n * \tstart: State<string>,\n * \ttokens: { groups: Collections<string> } & typeof tk\n * }} ScannerInit\n */\n\n/**\n * @typedef {{\n * \tstart: State<MultiToken>,\n * \ttokens: typeof multi\n * }} ParserInit\n */\n\n/**\n * @typedef {(arg: { scanner: ScannerInit }) => void} TokenPlugin\n */\n\n/**\n * @typedef {(arg: { scanner: ScannerInit, parser: ParserInit }) => void} Plugin\n */\n\n/**\n * De-register all plugins and reset the internal state-machine. Used for\n * testing; not required in practice.\n * @private\n */\nfunction reset() {\n State.groups = {};\n INIT.scanner = null;\n INIT.parser = null;\n INIT.tokenQueue = [];\n INIT.pluginQueue = [];\n INIT.customSchemes = [];\n INIT.initialized = false;\n return INIT;\n}\n\n/**\n * Register a token plugin to allow the scanner to recognize additional token\n * types before the parser state machine is constructed from the results.\n * @param {string} name of plugin to register\n * @param {TokenPlugin} plugin function that accepts the scanner state machine\n * and available scanner tokens and collections and extends the state machine to\n * recognize additional tokens or groups.\n */\nfunction registerTokenPlugin(name, plugin) {\n if (typeof plugin !== 'function') {\n throw new Error(`linkifyjs: Invalid token plugin ${plugin} (expects function)`);\n }\n for (let i = 0; i < INIT.tokenQueue.length; i++) {\n if (name === INIT.tokenQueue[i][0]) {\n warn(`linkifyjs: token plugin \"${name}\" already registered - will be overwritten`);\n INIT.tokenQueue[i] = [name, plugin];\n return;\n }\n }\n INIT.tokenQueue.push([name, plugin]);\n if (INIT.initialized) {\n warn(`linkifyjs: already initialized - will not register token plugin \"${name}\" ${warnAdvice}`);\n }\n}\n\n/**\n * Register a linkify plugin\n * @param {string} name of plugin to register\n * @param {Plugin} plugin function that accepts the parser state machine and\n * extends the parser to recognize additional link types\n */\nfunction registerPlugin(name, plugin) {\n if (typeof plugin !== 'function') {\n throw new Error(`linkifyjs: Invalid plugin ${plugin} (expects function)`);\n }\n for (let i = 0; i < INIT.pluginQueue.length; i++) {\n if (name === INIT.pluginQueue[i][0]) {\n warn(`linkifyjs: plugin \"${name}\" already registered - will be overwritten`);\n INIT.pluginQueue[i] = [name, plugin];\n return;\n }\n }\n INIT.pluginQueue.push([name, plugin]);\n if (INIT.initialized) {\n warn(`linkifyjs: already initialized - will not register plugin \"${name}\" ${warnAdvice}`);\n }\n}\n\n/**\n * Detect URLs with the following additional protocol. Anything with format\n * \"protocol://...\" will be considered a link. If `optionalSlashSlash` is set to\n * `true`, anything with format \"protocol:...\" will be considered a link.\n * @param {string} scheme\n * @param {boolean} [optionalSlashSlash]\n */\nfunction registerCustomProtocol(scheme, optionalSlashSlash = false) {\n if (INIT.initialized) {\n warn(`linkifyjs: already initialized - will not register custom scheme \"${scheme}\" ${warnAdvice}`);\n }\n if (!/^[0-9a-z]+(-[0-9a-z]+)*$/.test(scheme)) {\n throw new Error(`linkifyjs: incorrect scheme format.\n1. Must only contain digits, lowercase ASCII letters or \"-\"\n2. Cannot start or end with \"-\"\n3. \"-\" cannot repeat`);\n }\n INIT.customSchemes.push([scheme, optionalSlashSlash]);\n}\n\n/**\n * Initialize the linkify state machine. Called automatically the first time\n * linkify is called on a string, but may be called manually as well.\n */\nfunction init() {\n // Initialize scanner state machine and plugins\n INIT.scanner = init$2(INIT.customSchemes);\n for (let i = 0; i < INIT.tokenQueue.length; i++) {\n INIT.tokenQueue[i][1]({\n scanner: INIT.scanner\n });\n }\n\n // Initialize parser state machine and plugins\n INIT.parser = init$1(INIT.scanner.tokens);\n for (let i = 0; i < INIT.pluginQueue.length; i++) {\n INIT.pluginQueue[i][1]({\n scanner: INIT.scanner,\n parser: INIT.parser\n });\n }\n INIT.initialized = true;\n return INIT;\n}\n\n/**\n * Parse a string into tokens that represent linkable and non-linkable sub-components\n * @param {string} str\n * @return {MultiToken[]} tokens\n */\nfunction tokenize(str) {\n if (!INIT.initialized) {\n init();\n }\n return run(INIT.parser.start, str, run$1(INIT.scanner.start, str));\n}\ntokenize.scan = run$1; // for testing\n\n/**\n * Find a list of linkable items in the given string.\n * @param {string} str string to find links in\n * @param {string | Opts} [type] either formatting options or specific type of\n * links to find, e.g., 'url' or 'email'\n * @param {Opts} [opts] formatting options for final output. Cannot be specified\n * if opts already provided in `type` argument\n */\nfunction find(str, type = null, opts = null) {\n if (type && typeof type === 'object') {\n if (opts) {\n throw Error(`linkifyjs: Invalid link type ${type}; must be a string`);\n }\n opts = type;\n type = null;\n }\n const options = new Options(opts);\n const tokens = tokenize(str);\n const filtered = [];\n for (let i = 0; i < tokens.length; i++) {\n const token = tokens[i];\n if (token.isLink && (!type || token.t === type) && options.check(token)) {\n filtered.push(token.toFormattedObject(options));\n }\n }\n return filtered;\n}\n\n/**\n * Is the given string valid linkable text of some sort. Note that this does not\n * trim the text for you.\n *\n * Optionally pass in a second `type` param, which is the type of link to test\n * for.\n *\n * For example,\n *\n * linkify.test(str, 'email');\n *\n * Returns `true` if str is a valid email.\n * @param {string} str string to test for links\n * @param {string} [type] optional specific link type to look for\n * @returns boolean true/false\n */\nfunction test(str, type = null) {\n const tokens = tokenize(str);\n return tokens.length === 1 && tokens[0].isLink && (!type || tokens[0].t === type);\n}\n\nexport { MultiToken, Options, State, createTokenClass, find, init, multi, options, regexp, registerCustomProtocol, registerPlugin, registerTokenPlugin, reset, stringToArray, test, multi as text, tokenize };\n","import escapeHTML from \"escape-html\";\nimport { Options, tokenize } from \"linkifyjs\";\nfunction linkifyString(str) {\n const options = new Options({\n defaultProtocol: \"https\",\n target: \"_blank\",\n className: \"external linkified\",\n attributes: {\n rel: \"nofollow noopener noreferrer\"\n }\n }, defaultRender);\n const tokens = tokenize(str);\n const result = [];\n for (const token of tokens) {\n if (token.t === \"nl\" && options.get(\"nl2br\")) {\n result.push(\"<br>\\n\");\n } else if (!token.isLink || !options.check(token)) {\n result.push(escapeHTML(token.toString()));\n } else {\n result.push(options.render(token));\n }\n }\n return result.join(\"\");\n}\nfunction escapeAttr(href) {\n return href.replace(/\"/g, \""\");\n}\nfunction attributesToString(attributes) {\n const result = [];\n for (const attr in attributes) {\n const val = attributes[attr] + \"\";\n result.push(`${attr}=\"${escapeAttr(val)}\"`);\n }\n return result.join(\" \");\n}\nfunction defaultRender({ tagName, attributes, content }) {\n return `<${tagName} ${attributesToString(attributes)}>${escapeHTML(content)}</${tagName}>`;\n}\nconst directive = function(el, { value }) {\n if (value?.linkify === true) {\n el.innerHTML = linkifyString(value.text);\n }\n};\nexport {\n directive as default\n};\n//# sourceMappingURL=index.mjs.map\n","import { defineComponent, inject, withDirectives, openBlock, createElementBlock, createTextVNode, toDisplayString, unref } from \"vue\";\nimport directive from \"../directives/Linkify/index.mjs\";\nconst _hoisted_1 = [\"title\"];\nconst _sfc_main = /* @__PURE__ */ defineComponent({\n __name: \"NcAppSidebarHeader\",\n props: {\n name: {},\n title: {},\n linkify: { type: Boolean }\n },\n setup(__props) {\n const headerRef = inject(\"NcAppSidebar:header:ref\");\n return (_ctx, _cache) => {\n return withDirectives((openBlock(), createElementBlock(\"h2\", {\n ref_key: \"headerRef\",\n ref: headerRef,\n tabindex: \"-1\",\n title: __props.title\n }, [\n createTextVNode(toDisplayString(__props.name), 1)\n ], 8, _hoisted_1)), [\n [unref(directive), { text: __props.name, linkify: __props.linkify }]\n ]);\n };\n }\n});\nexport {\n _sfc_main as _\n};\n//# sourceMappingURL=NcAppSidebarHeader.vue_vue_type_script_setup_true_lang-C-QhdyiN.mjs.map\n","import '../assets/NcAppSidebar-oJQ8kUb0.css';\nimport { vOnClickOutside } from \"@vueuse/components\";\nimport { createFocusTrap } from \"focus-trap\";\nimport { openBlock, createElementBlock, mergeProps, createElementVNode, toDisplayString, createCommentVNode, defineComponent, useModel, normalizeClass, unref, createVNode, withCtx, mergeModels, resolveComponent, withKeys, withModifiers, Fragment, renderList, createBlock, renderSlot, resolveDirective, Transition, withDirectives, Teleport, normalizeStyle, vShow, createTextVNode, warn, ref, provide } from \"vue\";\nimport { I as IconArrowRight } from \"./ArrowRight-B1ncAhus.mjs\";\nimport { I as IconClose } from \"./Close-CuhcJnX2.mjs\";\nimport { _ as _export_sfc } from \"./_plugin-vue_export-helper-1tPrXgE0.mjs\";\nimport { getCanonicalLocale } from \"@nextcloud/l10n\";\nimport { _ as _sfc_main$6 } from \"./NcVNodes.vue_vue_type_script_lang-BqUHinRZ.mjs\";\nimport { i as isLegacy34 } from \"./legacy-BoqDmOCa.mjs\";\nimport { useIsSmallMobile } from \"../composables/useIsMobile/index.mjs\";\nimport directive from \"../directives/Focus/index.mjs\";\nimport { r as register, V as t15, a as t } from \"./_l10n-wdIzZwir.mjs\";\nimport { c as createElementId } from \"./createElementId-DhjFt1I9.mjs\";\nimport { g as getTrapStack } from \"./focusTrap-HJQ4pqHV.mjs\";\nimport { i as isSlotPopulated, N as NcActions } from \"./NcActions-C-wDqSrv.mjs\";\nimport { l as logger } from \"./logger-D3RVzcfQ.mjs\";\nimport { _ as _sfc_main$7 } from \"./NcAppSidebarHeader.vue_vue_type_script_setup_true_lang-C-QhdyiN.mjs\";\nimport { N as NcButton } from \"./NcButton-jvoYS2my.mjs\";\nimport { C as CONTENT_SELECTOR_KEY } from \"./constants-Ciwvl5xb.mjs\";\nimport { N as NcEmptyContent } from \"./NcEmptyContent-CGAPqk4S.mjs\";\nimport { N as NcLoadingIcon } from \"./NcLoadingIcon-BOVpFVQz.mjs\";\nconst _sfc_main$5 = {\n name: \"DockRightIcon\",\n emits: [\"click\"],\n props: {\n title: {\n type: String\n },\n fillColor: {\n type: String,\n default: \"currentColor\"\n },\n size: {\n type: Number,\n default: 24\n }\n }\n};\nconst _hoisted_1$5 = [\"aria-hidden\", \"aria-label\"];\nconst _hoisted_2$3 = [\"fill\", \"width\", \"height\"];\nconst _hoisted_3$3 = { d: \"M20 4H4A2 2 0 0 0 2 6V18A2 2 0 0 0 4 20H20A2 2 0 0 0 22 18V6A2 2 0 0 0 20 4M15 18H4V6H15Z\" };\nconst _hoisted_4$3 = { key: 0 };\nfunction _sfc_render$4(_ctx, _cache, $props, $setup, $data, $options) {\n return openBlock(), createElementBlock(\"span\", mergeProps(_ctx.$attrs, {\n \"aria-hidden\": $props.title ? null : \"true\",\n \"aria-label\": $props.title,\n class: \"material-design-icon dock-right-icon\",\n role: \"img\",\n onClick: _cache[0] || (_cache[0] = ($event) => _ctx.$emit(\"click\", $event))\n }), [\n (openBlock(), createElementBlock(\"svg\", {\n fill: $props.fillColor,\n class: \"material-design-icon__svg\",\n width: $props.size,\n height: $props.size,\n viewBox: \"0 0 24 24\"\n }, [\n createElementVNode(\"path\", _hoisted_3$3, [\n $props.title ? (openBlock(), createElementBlock(\"title\", _hoisted_4$3, toDisplayString($props.title), 1)) : createCommentVNode(\"\", true)\n ])\n ], 8, _hoisted_2$3))\n ], 16, _hoisted_1$5);\n}\nconst IconDockRight = /* @__PURE__ */ _export_sfc(_sfc_main$5, [[\"render\", _sfc_render$4]]);\nconst _sfc_main$4 = {\n name: \"StarIcon\",\n emits: [\"click\"],\n props: {\n title: {\n type: String\n },\n fillColor: {\n type: String,\n default: \"currentColor\"\n },\n size: {\n type: Number,\n default: 24\n }\n }\n};\nconst _hoisted_1$4 = [\"aria-hidden\", \"aria-label\"];\nconst _hoisted_2$2 = [\"fill\", \"width\", \"height\"];\nconst _hoisted_3$2 = { d: \"M12,17.27L18.18,21L16.54,13.97L22,9.24L14.81,8.62L12,2L9.19,8.62L2,9.24L7.45,13.97L5.82,21L12,17.27Z\" };\nconst _hoisted_4$2 = { key: 0 };\nfunction _sfc_render$3(_ctx, _cache, $props, $setup, $data, $options) {\n return openBlock(), createElementBlock(\"span\", mergeProps(_ctx.$attrs, {\n \"aria-hidden\": $props.title ? null : \"true\",\n \"aria-label\": $props.title,\n class: \"material-design-icon star-icon\",\n role: \"img\",\n onClick: _cache[0] || (_cache[0] = ($event) => _ctx.$emit(\"click\", $event))\n }), [\n (openBlock(), createElementBlock(\"svg\", {\n fill: $props.fillColor,\n class: \"material-design-icon__svg\",\n width: $props.size,\n height: $props.size,\n viewBox: \"0 0 24 24\"\n }, [\n createElementVNode(\"path\", _hoisted_3$2, [\n $props.title ? (openBlock(), createElementBlock(\"title\", _hoisted_4$2, toDisplayString($props.title), 1)) : createCommentVNode(\"\", true)\n ])\n ], 8, _hoisted_2$2))\n ], 16, _hoisted_1$4);\n}\nconst IconStar = /* @__PURE__ */ _export_sfc(_sfc_main$4, [[\"render\", _sfc_render$3]]);\nconst _sfc_main$3 = {\n name: \"StarOutlineIcon\",\n emits: [\"click\"],\n props: {\n title: {\n type: String\n },\n fillColor: {\n type: String,\n default: \"currentColor\"\n },\n size: {\n type: Number,\n default: 24\n }\n }\n};\nconst _hoisted_1$3 = [\"aria-hidden\", \"aria-label\"];\nconst _hoisted_2$1 = [\"fill\", \"width\", \"height\"];\nconst _hoisted_3$1 = { d: \"M12,15.39L8.24,17.66L9.23,13.38L5.91,10.5L10.29,10.13L12,6.09L13.71,10.13L18.09,10.5L14.77,13.38L15.76,17.66M22,9.24L14.81,8.63L12,2L9.19,8.63L2,9.24L7.45,13.97L5.82,21L12,17.27L18.18,21L16.54,13.97L22,9.24Z\" };\nconst _hoisted_4$1 = { key: 0 };\nfunction _sfc_render$2(_ctx, _cache, $props, $setup, $data, $options) {\n return openBlock(), createElementBlock(\"span\", mergeProps(_ctx.$attrs, {\n \"aria-hidden\": $props.title ? null : \"true\",\n \"aria-label\": $props.title,\n class: \"material-design-icon star-outline-icon\",\n role: \"img\",\n onClick: _cache[0] || (_cache[0] = ($event) => _ctx.$emit(\"click\", $event))\n }), [\n (openBlock(), createElementBlock(\"svg\", {\n fill: $props.fillColor,\n class: \"material-design-icon__svg\",\n width: $props.size,\n height: $props.size,\n viewBox: \"0 0 24 24\"\n }, [\n createElementVNode(\"path\", _hoisted_3$1, [\n $props.title ? (openBlock(), createElementBlock(\"title\", _hoisted_4$1, toDisplayString($props.title), 1)) : createCommentVNode(\"\", true)\n ])\n ], 8, _hoisted_2$1))\n ], 16, _hoisted_1$3);\n}\nconst IconStarOutline = /* @__PURE__ */ _export_sfc(_sfc_main$3, [[\"render\", _sfc_render$2]]);\nconst _hoisted_1$2 = [\"aria-selected\", \"tabindex\"];\nconst _sfc_main$2 = /* @__PURE__ */ defineComponent({\n __name: \"NcAppSidebarTabsButton\",\n props: /* @__PURE__ */ mergeModels({\n tab: {}\n }, {\n \"selected\": { type: Boolean, ...{ required: true } },\n \"selectedModifiers\": {}\n }),\n emits: [\"update:selected\"],\n setup(__props) {\n const selected = useModel(__props, \"selected\");\n return (_ctx, _cache) => {\n return openBlock(), createElementBlock(\"button\", {\n class: normalizeClass([\"button-vue\", [_ctx.$style.sidebarTabsButton, {\n [_ctx.$style.sidebarTabsButton_selected]: selected.value,\n [_ctx.$style.sidebarTabsButton_legacy]: unref(isLegacy34)\n }]]),\n role: \"tab\",\n \"aria-selected\": selected.value,\n tabindex: selected.value ? 0 : -1,\n onClick: _cache[0] || (_cache[0] = ($event) => selected.value = true)\n }, [\n createElementVNode(\"span\", {\n class: normalizeClass(_ctx.$style.sidebarTabsButton__icon)\n }, [\n createVNode(_sfc_main$6, {\n vnodes: __props.tab.renderIcon()\n }, {\n default: withCtx(() => [\n createElementVNode(\"span\", {\n class: normalizeClass([_ctx.$style.sidebarTabsButton__legacyIcon, __props.tab.icon])\n }, null, 2)\n ]),\n _: 1\n }, 8, [\"vnodes\"])\n ], 2),\n createElementVNode(\"span\", {\n class: normalizeClass(_ctx.$style.sidebarTabsButton__name)\n }, toDisplayString(__props.tab.name), 3)\n ], 10, _hoisted_1$2);\n };\n }\n});\nconst sidebarTabsButton = \"_sidebarTabsButton_OCROY\";\nconst sidebarTabsButton_legacy = \"_sidebarTabsButton_legacy_e9-y9\";\nconst sidebarTabsButton_selected = \"_sidebarTabsButton_selected_S48M1\";\nconst sidebarTabsButton__name = \"_sidebarTabsButton__name_GZRY8\";\nconst sidebarTabsButton__icon = \"_sidebarTabsButton__icon_ZDmkU\";\nconst sidebarTabsButton__legacyIcon = \"_sidebarTabsButton__legacyIcon_y6cLW\";\nconst style0 = {\n \"material-design-icon\": \"_material-design-icon_v9SPG\",\n sidebarTabsButton,\n sidebarTabsButton_legacy,\n sidebarTabsButton_selected,\n sidebarTabsButton__name,\n sidebarTabsButton__icon,\n sidebarTabsButton__legacyIcon\n};\nconst cssModules = {\n \"$style\": style0\n};\nconst NcAppSidebarTabsButton = /* @__PURE__ */ _export_sfc(_sfc_main$2, [[\"__cssModules\", cssModules]]);\nconst _sfc_main$1 = {\n name: \"NcAppSidebarTabs\",\n components: {\n NcAppSidebarTabsButton\n },\n provide() {\n return {\n registerTab: this.registerTab,\n unregisterTab: this.unregisterTab,\n // Getter as an alternative to Vue 2.7 computed(() => this.activeTab)\n getActiveTab: () => this.activeTab,\n // Used to check whether the tab header is shown so the tabs can reference the tab header for `aria-labelledby` or not\n isTablistShown: () => this.hasMultipleTabs\n };\n },\n props: {\n /**\n * Id of the tab to activate\n */\n active: {\n type: String,\n default: \"\"\n },\n /**\n * Force the tab navigation to display even if there is only one tab\n */\n forceTabs: {\n type: Boolean,\n default: false\n }\n },\n emits: [\"update:active\"],\n data(props) {\n return {\n /**\n * Tab descriptions from the passed NcSidebarTab components' props to build the tab navbar from.\n */\n tabs: [],\n /**\n * Local active (open) tab's ID. It allows to use component without v-model:active\n */\n activeTab: props.active,\n isLegacy34\n };\n },\n computed: {\n /**\n * Has multiple tabs. If only one tab - its content is shown without navigation\n *\n * @return {boolean}\n */\n hasMultipleTabs() {\n return this.tabs.length > 1;\n },\n showForSingleTab() {\n return this.forceTabs && this.tabs.length === 1;\n },\n currentTabIndex() {\n return this.tabs.findIndex((tab) => tab.id === this.activeTab);\n }\n },\n watch: {\n tabs() {\n if (this.active) {\n this.updateActive();\n }\n },\n active(active) {\n if (active !== this.activeTab) {\n this.updateActive();\n }\n }\n },\n methods: {\n /**\n * Set the current active tab\n *\n * @param {string} id the id of the tab\n */\n setActive(id) {\n this.activeTab = id;\n this.$emit(\"update:active\", this.activeTab);\n },\n /**\n * Focus the previous tab\n * and emit to the parent component\n */\n focusPreviousTab() {\n if (this.currentTabIndex > 0) {\n this.setActive(this.tabs[this.currentTabIndex - 1].id);\n }\n this.focusActiveTab();\n },\n /**\n * Focus the next tab\n * and emit to the parent component\n */\n focusNextTab() {\n if (this.currentTabIndex < this.tabs.length - 1) {\n this.setActive(this.tabs[this.currentTabIndex + 1].id);\n }\n this.focusActiveTab();\n },\n /**\n * Focus the first tab\n * and emit to the parent component\n */\n focusFirstTab() {\n this.setActive(this.tabs[0].id);\n this.focusActiveTab();\n },\n /**\n * Focus the last tab\n * and emit to the parent component\n */\n focusLastTab() {\n this.setActive(this.tabs[this.tabs.length - 1].id);\n this.focusActiveTab();\n },\n /**\n * Focus the current active tab\n */\n focusActiveTab() {\n this.$el.querySelector(`#tab-button-${this.activeTab}`).focus();\n },\n /**\n * Focus the content on tab\n * see aria accessibility guidelines\n */\n focusActiveTabContent() {\n this.$el.querySelector(\"#tab-\" + this.activeTab).focus();\n },\n /**\n * Update the current active tab\n */\n updateActive() {\n this.activeTab = this.active && this.tabs.some(({ id }) => id === this.active) ? this.active : this.tabs[0]?.id ?? \"\";\n },\n /**\n * Register child tab in the tabs\n *\n * @param {object} tab child tab passed to slot\n */\n registerTab(tab) {\n this.tabs.push(tab);\n this.tabs.sort((a, b) => {\n if (a.order === b.order) {\n return a.name.localeCompare(b.name, [getCanonicalLocale()]);\n }\n return a.order - b.order;\n });\n this.updateActive();\n },\n /**\n * Unregister child tab from the tabs\n *\n * @param {string} id tab's id\n */\n unregisterTab(id) {\n const tabIndex = this.tabs.findIndex((tab) => tab.id === id);\n if (tabIndex !== -1) {\n this.tabs.splice(tabIndex, 1);\n }\n if (this.activeTab === id) {\n this.updateActive();\n }\n }\n }\n};\nconst _hoisted_1$1 = { class: \"app-sidebar-tabs\" };\nfunction _sfc_render$1(_ctx, _cache, $props, $setup, $data, $options) {\n const _component_NcAppSidebarTabsButton = resolveComponent(\"NcAppSidebarTabsButton\");\n return openBlock(), createElementBlock(\"div\", _hoisted_1$1, [\n $options.hasMultipleTabs || $options.showForSingleTab ? (openBlock(), createElementBlock(\"div\", {\n key: 0,\n role: \"tablist\",\n class: normalizeClass([\"app-sidebar-tabs__nav\", { \"app-sidebar-tabs__nav--legacy\": $data.isLegacy34 }]),\n onKeydown: [\n _cache[0] || (_cache[0] = withKeys(withModifiers((...args) => $options.focusPreviousTab && $options.focusPreviousTab(...args), [\"exact\", \"prevent\", \"stop\"]), [\"left\"])),\n _cache[1] || (_cache[1] = withKeys(withModifiers((...args) => $options.focusNextTab && $options.focusNextTab(...args), [\"exact\", \"prevent\", \"stop\"]), [\"right\"])),\n _cache[2] || (_cache[2] = withKeys(withModifiers((...args) => $options.focusActiveTabContent && $options.focusActiveTabContent(...args), [\"exact\", \"prevent\", \"stop\"]), [\"tab\"])),\n _cache[3] || (_cache[3] = withKeys(withModifiers((...args) => $options.focusFirstTab && $options.focusFirstTab(...args), [\"exact\", \"prevent\", \"stop\"]), [\"home\"])),\n _cache[4] || (_cache[4] = withKeys(withModifiers((...args) => $options.focusLastTab && $options.focusLastTab(...args), [\"exact\", \"prevent\", \"stop\"]), [\"end\"])),\n _cache[5] || (_cache[5] = withKeys(withModifiers((...args) => $options.focusFirstTab && $options.focusFirstTab(...args), [\"exact\", \"prevent\", \"stop\"]), [\"page-up\"])),\n _cache[6] || (_cache[6] = withKeys(withModifiers((...args) => $options.focusLastTab && $options.focusLastTab(...args), [\"exact\", \"prevent\", \"stop\"]), [\"page-down\"]))\n ]\n }, [\n (openBlock(true), createElementBlock(Fragment, null, renderList($data.tabs, (tab) => {\n return openBlock(), createBlock(_component_NcAppSidebarTabsButton, {\n id: `tab-button-${tab.id}`,\n key: tab.id,\n class: \"app-sidebar-tabs__tab\",\n \"aria-controls\": `tab-${tab.id}`,\n selected: $data.activeTab === tab.id,\n tab,\n \"onUpdate:selected\": ($event) => $options.setActive(tab.id)\n }, null, 8, [\"id\", \"aria-controls\", \"selected\", \"tab\", \"onUpdate:selected\"]);\n }), 128))\n ], 34)) : createCommentVNode(\"\", true),\n createElementVNode(\"div\", {\n class: normalizeClass([\"app-sidebar-tabs__content\", { \"app-sidebar-tabs__content--multiple\": $options.hasMultipleTabs }])\n }, [\n renderSlot(_ctx.$slots, \"default\", {}, void 0, true)\n ], 2)\n ]);\n}\nconst NcAppSidebarTabs = /* @__PURE__ */ _export_sfc(_sfc_main$1, [[\"render\", _sfc_render$1], [\"__scopeId\", \"data-v-e74d1502\"]]);\nregister(t15);\nconst _sfc_main = {\n name: \"NcAppSidebar\",\n components: {\n NcActions,\n NcAppSidebarHeader: _sfc_main$7,\n NcAppSidebarTabs,\n NcButton,\n NcLoadingIcon,\n NcEmptyContent,\n IconArrowRight,\n IconClose,\n IconDockRight,\n IconStar,\n IconStarOutline\n },\n directives: {\n Focus: directive,\n /** @type {import('vue').ObjectDirective} */\n ClickOutside: vOnClickOutside\n },\n inject: {\n ncContentSelector: {\n from: CONTENT_SELECTOR_KEY,\n default: void 0\n }\n },\n props: {\n /**\n * The active tab\n */\n active: {\n type: String,\n default: \"\"\n },\n /**\n * Main text of the sidebar\n */\n name: {\n type: String,\n required: true\n },\n /**\n * Allow to edit the sidebar name.\n */\n nameEditable: {\n type: Boolean,\n default: false\n },\n /**\n * Placeholder in the edit field if the name is editable.\n */\n namePlaceholder: {\n type: String,\n default: \"\"\n },\n /**\n * Secondary name of the sidebar (subline)\n */\n subname: {\n type: String,\n default: \"\"\n },\n /**\n * Title to display for the subname.\n */\n subtitle: {\n type: String,\n default: \"\"\n },\n /**\n * Url to the top header background image\n * Applied with css\n */\n background: {\n type: String,\n default: \"\"\n },\n /**\n * Enable the favourite icon if not null\n * See fired events\n */\n starred: {\n type: Boolean,\n default: null\n },\n /**\n * Show loading spinner instead of the star icon\n */\n starLoading: {\n type: Boolean,\n default: false\n },\n /**\n * Show loading spinner instead of tabs\n */\n loading: {\n type: Boolean,\n default: false\n },\n /**\n * Display the sidebar in compact mode\n */\n compact: {\n type: Boolean,\n default: false\n },\n /**\n * Only display close button and default slot content.\n * Don't display other header content and primary and secondary actions.\n * Useful when showing the EmptyContent component as content.\n */\n empty: {\n type: Boolean,\n default: false\n },\n /**\n * Force the actions to display in a three dot menu\n */\n forceMenu: {\n type: Boolean,\n default: false\n },\n /**\n * Force the tab navigation to display even if there is only one tab\n */\n forceTabs: {\n type: Boolean,\n default: false\n },\n /**\n * Linkify the name\n */\n linkifyName: {\n type: Boolean,\n default: false\n },\n /**\n * Title to display for the name.\n * Can be set to the same text in case it's too long.\n */\n title: {\n type: String,\n default: \"\"\n },\n /**\n * Allow to conditionally show the sidebar\n * You can also use `v-if` on the sidebar, but using the open prop allow to keep\n * the sidebar inside the DOM for performance if it is opened and closed multiple times.\n *\n * When using the `open` property to close the sidebar a built-in toggle button will be shown to reopen it,\n * similar to the app navigation. You can remove this button with the `no-toggle` prop.\n */\n open: {\n type: Boolean,\n default: true\n },\n /**\n * Custom classes to assign to the sidebar toggle button.\n * If needed this can be used to assign styles to the button using `:deep()` selector.\n */\n toggleClasses: {\n type: [String, Array, Object],\n default: \"\"\n },\n /**\n * Custom attrs to assign to the sidebar toggle button.\n */\n toggleAttrs: {\n type: Object,\n default: void 0\n },\n /**\n * Do not add the built-in toggle button with `open` prop.\n */\n noToggle: {\n type: Boolean,\n default: false\n }\n },\n emits: [\n \"close\",\n \"closed\",\n \"opened\",\n // 'figureClick', not emitted on purpose to make \"hasFigureClickListener\" work\n \"update:active\",\n \"update:name\",\n \"update:nameEditable\",\n \"update:open\",\n \"update:starred\",\n \"submitName\",\n \"dismissEditing\"\n ],\n setup() {\n const headerRef = ref(null);\n provide(\"NcAppSidebar:header:ref\", headerRef);\n return {\n uid: createElementId(),\n isMobile: useIsSmallMobile(),\n headerRef\n };\n },\n data() {\n return {\n changeNameTranslated: t(\"Change name\"),\n closeTranslated: t(\"Close sidebar\"),\n favoriteTranslated: t(\"Favorite\"),\n isStarred: this.starred,\n focusTrap: null,\n elementToReturnFocus: null\n };\n },\n computed: {\n canStar() {\n return this.isStarred !== null;\n },\n hasFigureClickListener() {\n return !!this.$attrs.onFigureClick;\n }\n },\n watch: {\n starred() {\n this.isStarred = this.starred;\n },\n isMobile() {\n this.toggleFocusTrap();\n },\n open() {\n this.checkToggleButtonContainerAvailability();\n }\n },\n created() {\n this.preserveElementToReturnFocus();\n this.checkToggleButtonContainerAvailability();\n },\n beforeUnmount() {\n this.$emit(\"closed\");\n this.focusTrap?.deactivate();\n },\n methods: {\n isSlotPopulated,\n t,\n preserveElementToReturnFocus() {\n if (document.activeElement && document.activeElement !== document.body) {\n this.elementToReturnFocus = document.activeElement;\n if (this.elementToReturnFocus.getAttribute(\"role\") === \"menuitem\") {\n const menu = this.elementToReturnFocus.closest('[role=\"menu\"]');\n if (menu) {\n const menuTrigger = document.querySelector(`[aria-controls=\"${menu.id}\"]`);\n this.elementToReturnFocus = menuTrigger;\n }\n }\n }\n },\n initFocusTrap() {\n if (this.focusTrap) {\n return;\n }\n this.focusTrap = createFocusTrap([\n // The sidebar itself\n this.$refs.sidebar,\n // Nextcloud Server header navigation\n document.querySelector(\"#header\")\n ], {\n allowOutsideClick: true,\n fallbackFocus: this.$refs.closeButton.$el,\n trapStack: getTrapStack(),\n escapeDeactivates: false\n });\n },\n /**\n * Activate focus trap if it is currently needed, otherwise deactivate\n */\n toggleFocusTrap() {\n if (this.open && this.isMobile) {\n this.initFocusTrap();\n this.focusTrap.activate();\n } else {\n this.focusTrap?.deactivate();\n }\n },\n /**\n * Close the sidebar on pressing the escape key on mobile\n *\n * @param {KeyboardEvent} event key down event\n */\n onKeydownEsc(event) {\n if (this.isMobile) {\n event.stopPropagation();\n this.closeSidebar();\n }\n },\n onAfterEnter(element) {\n if (this.elementToReturnFocus) {\n this.focus();\n }\n this.toggleFocusTrap();\n this.$emit(\"opened\", element);\n },\n onAfterLeave(element) {\n this.$emit(\"closed\", element);\n this.toggleFocusTrap();\n this.elementToReturnFocus?.focus({ focusVisible: true });\n this.elementToReturnFocus = null;\n },\n /**\n * Used to tell parent component the user asked to close the sidebar\n *\n * @param {Event} e close icon click event\n */\n closeSidebar(e) {\n this.$emit(\"close\", e);\n this.$emit(\"update:open\", false);\n },\n /**\n * Emit figure click event to parent component\n *\n * @param {Event} e click event\n */\n onFigureClick(e) {\n this.$emit(\"figureClick\", e);\n },\n /**\n * Toggle the favourite state\n * and emit to the parent component\n */\n toggleStarred() {\n this.isStarred = !this.isStarred;\n this.$emit(\"update:starred\", this.isStarred);\n },\n async editName() {\n this.$emit(\"update:nameEditable\", true);\n if (this.nameEditable) {\n await this.$nextTick();\n this.$refs.nameInput.focus();\n }\n },\n /**\n * Focus the sidebar\n *\n * @public\n */\n focus() {\n if (!this.open && !this.noToggle) {\n this.$refs.toggle.$el.focus();\n return;\n }\n try {\n this.headerRef.focus();\n } catch {\n warn(\"NcAppSidebar should have focusable header for accessibility reasons. Use NcAppSidebarHeader component.\");\n }\n },\n /**\n * Focus the active tab\n *\n * @public\n */\n focusActiveTabContent() {\n this.preserveElementToReturnFocus();\n this.$refs.tabs.focusActiveTabContent();\n },\n /**\n * Check if the toggle button container is available\n */\n checkToggleButtonContainerAvailability() {\n if (this.open === false && !this.noToggle && !this.ncContentSelector) {\n logger.warn(\"[NcAppSidebar] It looks like you want to use NcAppSidebar with the built-in toggle button. This feature is only available when NcAppSidebar is used in NcContent.\");\n }\n },\n /**\n * Emit name change event to parent component\n *\n * @param {Event} event input event\n */\n onNameInput(event) {\n this.$emit(\"update:name\", event.target.value);\n },\n /**\n * Emit when the name form edit confirm button is pressed in order\n * to change the name.\n *\n * @param {Event} event submit event\n */\n onSubmitName(event) {\n this.$emit(\"update:nameEditable\", false);\n this.$emit(\"submitName\", event);\n },\n onDismissEditing() {\n this.$emit(\"update:nameEditable\", false);\n this.$emit(\"dismissEditing\");\n },\n onUpdateActive(activeTab) {\n this.$emit(\"update:active\", activeTab);\n }\n }\n};\nconst _hoisted_1 = [\"aria-labelledby\"];\nconst _hoisted_2 = { class: \"app-sidebar-header__info\" };\nconst _hoisted_3 = {\n key: 0,\n class: \"app-sidebar-header__tertiary-actions\"\n};\nconst _hoisted_4 = { class: \"app-sidebar-header__name-container\" };\nconst _hoisted_5 = { class: \"app-sidebar-header__mainname-container\" };\nconst _hoisted_6 = [\"placeholder\", \"value\"];\nconst _hoisted_7 = [\"title\"];\nconst _hoisted_8 = {\n key: 2,\n class: \"app-sidebar-header__description\"\n};\nfunction _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {\n const _component_IconDockRight = resolveComponent(\"IconDockRight\");\n const _component_NcButton = resolveComponent(\"NcButton\");\n const _component_NcLoadingIcon = resolveComponent(\"NcLoadingIcon\");\n const _component_IconStar = resolveComponent(\"IconStar\");\n const _component_IconStarOutline = resolveComponent(\"IconStarOutline\");\n const _component_NcAppSidebarHeader = resolveComponent(\"NcAppSidebarHeader\");\n const _component_IconArrowRight = resolveComponent(\"IconArrowRight\");\n const _component_NcActions = resolveComponent(\"NcActions\");\n const _component_IconClose = resolveComponent(\"IconClose\");\n const _component_NcAppSidebarTabs = resolveComponent(\"NcAppSidebarTabs\");\n const _component_NcEmptyContent = resolveComponent(\"NcEmptyContent\");\n const _directive_focus = resolveDirective(\"focus\");\n const _directive_click_outside = resolveDirective(\"click-outside\");\n return openBlock(), createBlock(Transition, {\n appear: \"\",\n name: \"slide-right\",\n onAfterEnter: $options.onAfterEnter,\n onAfterLeave: $options.onAfterLeave\n }, {\n default: withCtx(() => [\n withDirectives(createElementVNode(\"aside\", {\n id: \"app-sidebar-vue\",\n ref: \"sidebar\",\n class: \"app-sidebar\",\n \"aria-labelledby\": `app-sidebar-vue-${$setup.uid}__header`,\n onKeydown: _cache[6] || (_cache[6] = withKeys((...args) => $options.onKeydownEsc && $options.onKeydownEsc(...args), [\"esc\"]))\n }, [\n $options.ncContentSelector && !$props.open && !$props.noToggle ? (openBlock(), createBlock(Teleport, {\n key: 0,\n to: $options.ncContentSelector\n }, [\n createVNode(_component_NcButton, mergeProps({\n ref: \"toggle\",\n \"aria-label\": $options.t(\"Open sidebar\"),\n class: [\"app-sidebar__toggle\", $props.toggleClasses],\n variant: \"tertiary\"\n }, $props.toggleAttrs, {\n onClick: _cache[0] || (_cache[0] = ($event) => _ctx.$emit(\"update:open\", true))\n }), {\n icon: withCtx(() => [\n renderSlot(_ctx.$slots, \"toggle-icon\", {}, () => [\n createVNode(_component_IconDockRight, { size: 20 })\n ], true)\n ]),\n _: 3\n }, 16, [\"aria-label\", \"class\"])\n ], 8, [\"to\"])) : createCommentVNode(\"\", true),\n createElementVNode(\"header\", {\n class: normalizeClass([\"app-sidebar-header\", {\n \"app-sidebar-header--with-figure\": $options.isSlotPopulated(_ctx.$slots.header?.()) || $props.background,\n \"app-sidebar-header--compact\": $props.compact\n }])\n }, [\n !$props.empty ? renderSlot(_ctx.$slots, \"info\", { key: 0 }, () => [\n createElementVNode(\"div\", _hoisted_2, [\n $options.isSlotPopulated(_ctx.$slots.header?.()) || $props.background ? (openBlock(), createElementBlock(\"div\", {\n key: 0,\n class: normalizeClass([\"app-sidebar-header__figure\", {\n \"app-sidebar-header__figure--with-action\": $options.hasFigureClickListener\n }]),\n style: normalizeStyle({\n backgroundImage: `url(${$props.background})`\n }),\n tabindex: \"0\",\n onClick: _cache[1] || (_cache[1] = (...args) => $options.onFigureClick && $options.onFigureClick(...args)),\n onKeydown: _cache[2] || (_cache[2] = withKeys((...args) => $options.onFigureClick && $options.onFigureClick(...args), [\"enter\"]))\n }, [\n renderSlot(_ctx.$slots, \"header\", { class: \"app-sidebar-header__background\" }, void 0, true)\n ], 38)) : createCommentVNode(\"\", true),\n createElementVNode(\"div\", {\n class: normalizeClass([\"app-sidebar-header__desc\", {\n \"app-sidebar-header__desc--with-tertiary-action\": $options.canStar || $options.isSlotPopulated(_ctx.$slots[\"tertiary-actions\"]?.()),\n \"app-sidebar-header__desc--editable\": $props.nameEditable && !$props.subname,\n \"app-sidebar-header__desc--with-subname--editable\": $props.nameEditable && $props.subname,\n \"app-sidebar-header__desc--without-actions\": !$options.isSlotPopulated(_ctx.$slots[\"secondary-actions\"]?.())\n }])\n }, [\n $options.canStar || $options.isSlotPopulated(_ctx.$slots[\"tertiary-actions\"]?.()) ? (openBlock(), createElementBlock(\"div\", _hoisted_3, [\n renderSlot(_ctx.$slots, \"tertiary-actions\", {}, () => [\n $options.canStar ? (openBlock(), createBlock(_component_NcButton, {\n key: 0,\n \"aria-label\": $data.favoriteTranslated,\n pressed: $data.isStarred,\n class: \"app-sidebar-header__star\",\n variant: \"secondary\",\n onClick: withModifiers($options.toggleStarred, [\"prevent\"])\n }, {\n icon: withCtx(() => [\n $props.starLoading ? (openBlock(), createBlock(_component_NcLoadingIcon, { key: 0 })) : $data.isStarred ? (openBlock(), createBlock(_component_IconStar, {\n key: 1,\n size: 20\n })) : (openBlock(), createBlock(_component_IconStarOutline, {\n key: 2,\n size: 20\n }))\n ]),\n _: 1\n }, 8, [\"aria-label\", \"pressed\", \"onClick\"])) : createCommentVNode(\"\", true)\n ], true)\n ])) : createCommentVNode(\"\", true),\n createElementVNode(\"div\", _hoisted_4, [\n createElementVNode(\"div\", _hoisted_5, [\n withDirectives(createVNode(_component_NcAppSidebarHeader, {\n class: \"app-sidebar-header__mainname\",\n name: $props.name,\n linkify: $props.linkifyName,\n title: $props.title,\n tabindex: $props.nameEditable ? 0 : -1,\n onClick: withModifiers($options.editName, [\"self\"])\n }, null, 8, [\"name\", \"linkify\", \"title\", \"tabindex\", \"onClick\"]), [\n [vShow, !$props.nameEditable]\n ]),\n $props.nameEditable ? withDirectives((openBlock(), createElementBlock(\"form\", {\n key: 0,\n class: \"app-sidebar-header__mainname-form\",\n onSubmit: _cache[5] || (_cache[5] = withModifiers((...args) => $options.onSubmitName && $options.onSubmitName(...args), [\"prevent\"]))\n }, [\n withDirectives(createElementVNode(\"input\", {\n ref: \"nameInput\",\n class: \"app-sidebar-header__mainname-input\",\n type: \"text\",\n placeholder: $props.namePlaceholder,\n value: $props.name,\n onKeydown: _cache[3] || (_cache[3] = withKeys(withModifiers((...args) => $options.onDismissEditing && $options.onDismissEditing(...args), [\"stop\"]), [\"esc\"])),\n onInput: _cache[4] || (_cache[4] = (...args) => $options.onNameInput && $options.onNameInput(...args))\n }, null, 40, _hoisted_6), [\n [_directive_focus]\n ]),\n createVNode(_component_NcButton, {\n \"aria-label\": $data.changeNameTranslated,\n type: \"submit\",\n variant: \"tertiary-no-background\"\n }, {\n icon: withCtx(() => [\n createVNode(_component_IconArrowRight, { size: 20 })\n ]),\n _: 1\n }, 8, [\"aria-label\"])\n ], 32)), [\n [_directive_click_outside, () => $options.onSubmitName()]\n ]) : createCommentVNode(\"\", true),\n $options.isSlotPopulated(_ctx.$slots[\"secondary-actions\"]?.()) ? (openBlock(), createBlock(_component_NcActions, {\n key: 1,\n class: \"app-sidebar-header__menu\",\n forceMenu: $props.forceMenu\n }, {\n default: withCtx(() => [\n renderSlot(_ctx.$slots, \"secondary-actions\", {}, void 0, true)\n ]),\n _: 3\n }, 8, [\"forceMenu\"])) : createCommentVNode(\"\", true)\n ]),\n $props.subname.trim() !== \"\" || _ctx.$slots[\"subname\"] ? (openBlock(), createElementBlock(\"p\", {\n key: 0,\n title: $props.subtitle || void 0,\n class: \"app-sidebar-header__subname\"\n }, [\n renderSlot(_ctx.$slots, \"subname\", {}, () => [\n createTextVNode(toDisplayString($props.subname), 1)\n ], true)\n ], 8, _hoisted_7)) : createCommentVNode(\"\", true)\n ])\n ], 2)\n ])\n ], true) : (openBlock(), createBlock(_component_NcAppSidebarHeader, {\n key: 1,\n class: \"app-sidebar-header__mainname--hidden\",\n name: $props.name,\n tabindex: \"-1\"\n }, null, 8, [\"name\"])),\n createVNode(_component_NcButton, {\n ref: \"closeButton\",\n \"aria-label\": $data.closeTranslated,\n title: $data.closeTranslated,\n class: \"app-sidebar__close\",\n variant: \"tertiary\",\n onClick: withModifiers($options.closeSidebar, [\"prevent\"])\n }, {\n icon: withCtx(() => [\n createVNode(_component_IconClose, { size: 20 })\n ]),\n _: 1\n }, 8, [\"aria-label\", \"title\", \"onClick\"]),\n $options.isSlotPopulated(_ctx.$slots.description?.()) && !$props.empty ? (openBlock(), createElementBlock(\"div\", _hoisted_8, [\n renderSlot(_ctx.$slots, \"description\", {}, void 0, true)\n ])) : createCommentVNode(\"\", true)\n ], 2),\n withDirectives(createVNode(_component_NcAppSidebarTabs, {\n ref: \"tabs\",\n active: $props.active,\n forceTabs: $props.forceTabs,\n \"onUpdate:active\": $options.onUpdateActive\n }, {\n default: withCtx(() => [\n renderSlot(_ctx.$slots, \"default\", {}, void 0, true)\n ]),\n _: 3\n }, 8, [\"active\", \"forceTabs\", \"onUpdate:active\"]), [\n [vShow, !$props.loading]\n ]),\n $props.loading ? (openBlock(), createBlock(_component_NcEmptyContent, { key: 1 }, {\n icon: withCtx(() => [\n createVNode(_component_NcLoadingIcon, { size: 64 })\n ]),\n _: 1\n })) : createCommentVNode(\"\", true)\n ], 40, _hoisted_1), [\n [vShow, $props.open]\n ])\n ]),\n _: 3\n }, 8, [\"onAfterEnter\", \"onAfterLeave\"]);\n}\nconst NcAppSidebar = /* @__PURE__ */ _export_sfc(_sfc_main, [[\"render\", _sfc_render], [\"__scopeId\", \"data-v-e8979b7f\"]]);\nexport {\n NcAppSidebar as N\n};\n//# sourceMappingURL=NcAppSidebar-C8YzAzrZ.mjs.map\n","import PQueue from \"p-queue\";\nconst queue = new PQueue({ concurrency: 5 });\nfunction preloadImage(url) {\n const { resolve, promise } = Promise.withResolvers();\n queue.add(() => {\n const image = new Image();\n image.onerror = () => resolve(false);\n image.onload = () => resolve(true);\n image.src = url;\n return promise;\n });\n return promise;\n}\nexport {\n preloadImage\n};\n//# sourceMappingURL=index.mjs.map\n","import '../assets/NcCollectionList-e5JFvzqX.css';\nimport debounce from \"debounce\";\nimport { resolveComponent, openBlock, createElementBlock, createVNode, toDisplayString, withModifiers, normalizeClass, withDirectives, createElementVNode, vModelText, Fragment, renderList, createBlock, resolveDynamicComponent, withCtx, createCommentVNode, createTextVNode, Transition, ref } from \"vue\";\nimport { r as register, L as t28, a as t, M as t6 } from \"./_l10n-wdIzZwir.mjs\";\nimport { N as NcActionButton } from \"./NcActionButton-BO5T5ePT.mjs\";\nimport { N as NcActions } from \"./NcActions-C-wDqSrv.mjs\";\nimport { N as NcAvatar } from \"./NcAvatar-1KxMUN7V.mjs\";\nimport { g as getRoute } from \"./autolink-DrIurosL.mjs\";\nimport { _ as _export_sfc } from \"./_plugin-vue_export-helper-1tPrXgE0.mjs\";\nimport { l as logger } from \"./logger-D3RVzcfQ.mjs\";\nimport { N as NcSelect } from \"./NcSelect--kERLlBK.mjs\";\nimport axios from \"@nextcloud/axios\";\nimport { generateOcsUrl } from \"@nextcloud/router\";\nregister(t28);\nconst _sfc_main$1 = {\n name: \"NcCollectionListItem\",\n components: {\n NcAvatar,\n NcActions,\n NcActionButton\n },\n props: {\n /**\n * The collection\n */\n collection: {\n type: Object,\n default: null\n },\n /**\n * Current error if any\n */\n error: {\n type: String,\n default: void 0\n }\n },\n emits: [\n \"removeResource\",\n \"renameCollection\"\n ],\n data() {\n return {\n detailsOpen: false,\n newName: null\n };\n },\n computed: {\n getIcon() {\n return (resource) => [resource.iconClass];\n },\n typeClass() {\n return (resource) => \"resource-type-\" + resource.type;\n },\n resources() {\n return this.collection.resources?.filter((resource) => !Array.isArray(resource)) ?? [];\n },\n getComponent() {\n return (resource) => {\n const route = getRoute(this.$router, resource.link);\n return route ? { component: \"router-link\", to: route, href: void 0 } : { component: \"a\", to: void 0, href: resource.link };\n };\n },\n iconUrl() {\n return (resource) => {\n if (resource.mimetype) {\n return OC.MimeType.getIconUrl(resource.mimetype);\n }\n if (resource.iconUrl) {\n return resource.iconUrl;\n }\n return \"\";\n };\n }\n },\n methods: {\n t,\n toggleDetails() {\n this.detailsOpen = !this.detailsOpen;\n },\n showDetails() {\n this.detailsOpen = true;\n },\n removeResource(collection, resource) {\n this.$emit(\"removeResource\", {\n collectionId: collection.id,\n resourceType: resource.type,\n resourceId: resource.id\n });\n },\n openRename() {\n this.newName = this.collection.name;\n },\n renameCollection() {\n if (this.newName) {\n this.$emit(\"renameCollection\", {\n collectionId: this.collection.id,\n name: this.newName\n });\n }\n this.newName = null;\n }\n }\n};\nconst _hoisted_1$1 = { class: \"collection-list-item\" };\nconst _hoisted_2$1 = {\n key: 2,\n class: \"linked-icons\"\n};\nconst _hoisted_3$1 = [\"src\", \"alt\"];\nconst _hoisted_4$1 = {\n key: 3,\n class: \"sharingOptionsGroup\"\n};\nconst _hoisted_5$1 = {\n key: 0,\n class: \"error\"\n};\nconst _hoisted_6$1 = {\n key: 0,\n class: \"resource-list-details\"\n};\nconst _hoisted_7$1 = [\"src\", \"alt\"];\nconst _hoisted_8$1 = { class: \"resource-name\" };\nconst _hoisted_9 = [\"onClick\"];\nfunction _sfc_render$1(_ctx, _cache, $props, $setup, $data, $options) {\n const _component_NcAvatar = resolveComponent(\"NcAvatar\");\n const _component_NcActionButton = resolveComponent(\"NcActionButton\");\n const _component_NcActions = resolveComponent(\"NcActions\");\n return openBlock(), createElementBlock(\"li\", _hoisted_1$1, [\n createVNode(_component_NcAvatar, {\n displayName: $props.collection.name,\n allowPlaceholder: \"\",\n class: \"collection-avatar\"\n }, null, 8, [\"displayName\"]),\n $data.newName === null ? (openBlock(), createElementBlock(\"span\", {\n key: 0,\n class: \"collection-item-name\",\n title: \"\",\n onClick: _cache[0] || (_cache[0] = (...args) => $options.showDetails && $options.showDetails(...args))\n }, toDisplayString($props.collection.name), 1)) : (openBlock(), createElementBlock(\"form\", {\n key: 1,\n class: normalizeClass({ \"should-shake\": $props.error }),\n onSubmit: _cache[2] || (_cache[2] = withModifiers((...args) => $options.renameCollection && $options.renameCollection(...args), [\"prevent\"]))\n }, [\n withDirectives(createElementVNode(\"input\", {\n \"onUpdate:modelValue\": _cache[1] || (_cache[1] = ($event) => $data.newName = $event),\n type: \"text\",\n autocomplete: \"off\",\n autocapitalize: \"off\"\n }, null, 512), [\n [vModelText, $data.newName]\n ]),\n _cache[3] || (_cache[3] = createElementVNode(\"input\", {\n type: \"submit\",\n value: \"\",\n class: \"icon-confirm\"\n }, null, -1))\n ], 34)),\n !$data.detailsOpen && $data.newName === null ? (openBlock(), createElementBlock(\"div\", _hoisted_2$1, [\n (openBlock(true), createElementBlock(Fragment, null, renderList($options.resources.slice(0, 2), (resource) => {\n return openBlock(), createBlock(resolveDynamicComponent($options.getComponent(resource).component), {\n key: resource.type + \"|\" + resource.id,\n title: resource.name,\n to: $options.getComponent(resource).to,\n href: $options.getComponent(resource).href,\n class: normalizeClass($options.typeClass(resource))\n }, {\n default: withCtx(() => [\n createElementVNode(\"img\", {\n src: $options.iconUrl(resource),\n alt: resource.name\n }, null, 8, _hoisted_3$1)\n ]),\n _: 2\n }, 1032, [\"title\", \"to\", \"href\", \"class\"]);\n }), 128))\n ])) : createCommentVNode(\"\", true),\n $data.newName === null ? (openBlock(), createElementBlock(\"span\", _hoisted_4$1, [\n createVNode(_component_NcActions, null, {\n default: withCtx(() => [\n createVNode(_component_NcActionButton, {\n icon: \"icon-info\",\n onClick: withModifiers($options.toggleDetails, [\"prevent\"])\n }, {\n default: withCtx(() => [\n createTextVNode(toDisplayString($data.detailsOpen ? $options.t(\"Hide details\") : $options.t(\"Show details\")), 1)\n ]),\n _: 1\n }, 8, [\"onClick\"]),\n createVNode(_component_NcActionButton, {\n icon: \"icon-rename\",\n onClick: withModifiers($options.openRename, [\"prevent\"])\n }, {\n default: withCtx(() => [\n createTextVNode(toDisplayString($options.t(\"Rename project\")), 1)\n ]),\n _: 1\n }, 8, [\"onClick\"])\n ]),\n _: 1\n })\n ])) : createCommentVNode(\"\", true),\n createVNode(Transition, { name: \"fade\" }, {\n default: withCtx(() => [\n $props.error ? (openBlock(), createElementBlock(\"div\", _hoisted_5$1, toDisplayString($props.error), 1)) : createCommentVNode(\"\", true)\n ]),\n _: 1\n }),\n createVNode(Transition, { name: \"fade\" }, {\n default: withCtx(() => [\n $data.detailsOpen ? (openBlock(), createElementBlock(\"ul\", _hoisted_6$1, [\n (openBlock(true), createElementBlock(Fragment, null, renderList($options.resources, (resource) => {\n return openBlock(), createElementBlock(\"li\", {\n key: resource.type + \"|\" + resource.id,\n class: normalizeClass($options.typeClass(resource))\n }, [\n (openBlock(), createBlock(resolveDynamicComponent($options.getComponent(resource).component), {\n to: $options.getComponent(resource).to,\n href: $options.getComponent(resource).href\n }, {\n default: withCtx(() => [\n createElementVNode(\"img\", {\n src: $options.iconUrl(resource),\n alt: resource.name\n }, null, 8, _hoisted_7$1),\n createElementVNode(\"span\", _hoisted_8$1, toDisplayString(resource.name || \"\"), 1)\n ]),\n _: 2\n }, 1032, [\"to\", \"href\"])),\n createElementVNode(\"span\", {\n class: \"icon-close\",\n onClick: ($event) => $options.removeResource($props.collection, resource)\n }, null, 8, _hoisted_9)\n ], 2);\n }), 128))\n ])) : createCommentVNode(\"\", true)\n ]),\n _: 1\n })\n ]);\n}\nconst NcCollectionListItem = /* @__PURE__ */ _export_sfc(_sfc_main$1, [[\"render\", _sfc_render$1], [\"__scopeId\", \"data-v-8ebb9fc1\"]]);\nregister(t6);\nfunction extractOcsData(response) {\n return response.data.ocs.data;\n}\nfunction renameCollectionService(collectionId, collectionName) {\n return axios.put(generateOcsUrl(\"collaboration/resources/collections/{collectionId}\", { collectionId }), { collectionName }).then(extractOcsData);\n}\nfunction getCollectionsByResourceService(resourceType, resourceId) {\n return axios.get(generateOcsUrl(\"collaboration/resources/{resourceType}/{resourceId}\", { resourceType, resourceId })).then(extractOcsData);\n}\nfunction createCollectionService(resourceType, resourceId, name) {\n return axios.post(generateOcsUrl(\"collaboration/resources/{resourceType}/{resourceId}\", { resourceType, resourceId }), { name }).then(extractOcsData);\n}\nfunction addResourceService(collectionId, resourceType, resourceId) {\n return axios.post(generateOcsUrl(\"collaboration/resources/collections/{collectionId}\", { collectionId }), { resourceType, resourceId }).then(extractOcsData);\n}\nfunction removeResourceService(collectionId, resourceType, resourceId) {\n return axios.delete(generateOcsUrl(\"collaboration/resources/collections/{collectionId}\", { collectionId }), { params: { resourceType, resourceId } }).then(extractOcsData);\n}\nfunction searchService(query) {\n return axios.get(generateOcsUrl(\"collaboration/resources/collections/search/{query}\", { query })).then(extractOcsData);\n}\nfunction useCollections() {\n const storedCollections = ref([]);\n const addCollections = (collections) => {\n storedCollections.value = collections;\n };\n const addCollection = (collection) => {\n storedCollections.value.push(collection);\n };\n const removeCollection = (collectionId) => {\n storedCollections.value = storedCollections.value.filter((item) => item.id !== collectionId);\n };\n const updateCollection = (collection) => {\n const index = storedCollections.value.findIndex((item) => item.id === collection.id);\n if (index !== -1) {\n storedCollections.value[index] = collection;\n } else {\n addCollection(collection);\n }\n };\n const fetchCollectionsByResource = async ({ resourceType, resourceId }) => {\n const collections = await getCollectionsByResourceService(resourceType, resourceId);\n addCollections(collections);\n };\n const createCollection = async ({ baseResourceType, baseResourceId, resourceType, resourceId, name }) => {\n const collection = await createCollectionService(baseResourceType, baseResourceId, name);\n addCollection(collection);\n await addResourceToCollection({\n collectionId: collection.id,\n resourceType,\n resourceId\n });\n };\n const renameCollection = async ({ collectionId, name }) => {\n const collection = await renameCollectionService(collectionId, name);\n updateCollection(collection);\n };\n async function addResourceToCollection({ collectionId, resourceType, resourceId }) {\n const collection = await addResourceService(collectionId, resourceType, String(resourceId));\n updateCollection(collection);\n }\n const removeResourceFromCollection = async ({ collectionId, resourceType, resourceId }) => {\n const collection = await removeResourceService(collectionId, resourceType, String(resourceId));\n if (collection.resources.length > 0) {\n updateCollection(collection);\n } else {\n removeCollection(collectionId);\n }\n };\n return {\n storedCollections,\n fetchCollectionsByResource,\n createCollection,\n renameCollection,\n addResourceToCollection,\n removeResourceFromCollection\n };\n}\nconst METHOD_CREATE_COLLECTION = 0;\nconst METHOD_ADD_TO_COLLECTION = 1;\nconst _sfc_main = {\n name: \"NcCollectionList\",\n components: {\n NcCollectionListItem,\n NcAvatar,\n NcSelect\n },\n props: {\n /**\n * Resource type identifier\n */\n type: {\n type: String,\n default: null\n },\n /**\n * Unique id of the resource\n */\n id: {\n type: String,\n default: null\n },\n /**\n * Name of the resource\n */\n name: {\n type: String,\n default: \"\"\n },\n /**\n * Whether the component is active (to start fetch resources)\n */\n isActive: {\n type: Boolean,\n default: true\n }\n },\n setup() {\n const {\n storedCollections,\n fetchCollectionsByResource,\n createCollection,\n addResourceToCollection,\n removeResourceFromCollection,\n renameCollection\n } = useCollections();\n const searchCollections = ref([]);\n const search = debounce(function(query, loading) {\n if (query !== \"\") {\n loading(true);\n searchService(query).then((collections) => {\n searchCollections.value = collections;\n }).catch((error) => {\n logger.error(\"Failed to search for collections\", { error });\n }).finally(() => {\n loading(false);\n });\n }\n }, 500);\n return {\n storedCollections,\n fetchCollectionsByResource,\n createCollection,\n addResourceToCollection,\n removeResourceFromCollection,\n renameCollection,\n searchCollections,\n search\n };\n },\n data() {\n return {\n selectIsOpen: false,\n generatingCodes: false,\n codes: void 0,\n value: null,\n model: {},\n collectionsError: {},\n error: null,\n isSelectOpen: false\n };\n },\n computed: {\n collections() {\n return this.storedCollections.filter((collection) => collection.resources.some((resource) => resource && resource.id === String(this.id) && resource.type === this.type));\n },\n placeholder() {\n return this.isSelectOpen ? t(\"Type to search for existing projects\") : t(\"Add to a project\");\n },\n options() {\n const options = [];\n window.OCP.Collaboration.getTypes().sort().forEach((type) => {\n options.push({\n method: METHOD_CREATE_COLLECTION,\n type,\n title: window.OCP.Collaboration.getLabel(type),\n class: window.OCP.Collaboration.getIcon(type),\n action: () => window.OCP.Collaboration.trigger(type)\n });\n });\n for (const index in this.searchCollections) {\n if (!this.collections.find((collection) => collection.id === this.searchCollections[index].id)) {\n options.push({\n method: METHOD_ADD_TO_COLLECTION,\n title: this.searchCollections[index].name,\n collectionId: this.searchCollections[index].id\n });\n }\n }\n return options;\n },\n resourceIdentifier() {\n return {\n resourceType: this.type,\n resourceId: this.id,\n isActive: this.isActive\n };\n }\n },\n watch: {\n resourceIdentifier: {\n deep: true,\n immediate: true,\n handler(resourceIdentifier) {\n if (!resourceIdentifier.isActive || !resourceIdentifier.resourceId || !resourceIdentifier.resourceType) {\n return;\n }\n this.fetchCollectionsByResource(resourceIdentifier);\n }\n }\n },\n methods: {\n t,\n select(selectedOption) {\n if (selectedOption.method === METHOD_CREATE_COLLECTION) {\n selectedOption.action().then((resourceId) => {\n this.createCollection({\n baseResourceType: this.type,\n baseResourceId: this.id,\n resourceType: selectedOption.type,\n resourceId,\n name: this.name\n }).catch((e) => {\n this.setError(t(\"Failed to create a project\"), e);\n });\n }).catch((e) => {\n logger.error(\"[NcCollectionList] No resource selected\", e);\n });\n }\n if (selectedOption.method === METHOD_ADD_TO_COLLECTION) {\n this.addResourceToCollection({\n collectionId: selectedOption.collectionId,\n resourceType: this.type,\n resourceId: this.id\n }).catch((e) => {\n this.setError(t(\"Failed to add the item to the project\"), e);\n });\n }\n this.value = null;\n },\n showSelect() {\n this.selectIsOpen = true;\n this.$refs.select.$el.focus();\n },\n setError(error, e) {\n logger.error(error, { error: e });\n this.error = error;\n setTimeout(() => {\n this.error = null;\n }, 5e3);\n },\n renameCollectionFromItem({ collectionId, name }) {\n this.renameCollection({ collectionId, name }).catch((e) => {\n logger.error(t(\"Failed to rename the project\"), { error: e });\n this.collectionsError[collectionId] = t(\"Failed to rename the project\");\n setTimeout(() => {\n this.collectionsError[collectionId] = null;\n }, 5e3);\n });\n }\n }\n};\nconst _hoisted_1 = {\n key: 0,\n id: \"collection-list\",\n class: \"collection-list\"\n};\nconst _hoisted_2 = { id: \"collection-select-container\" };\nconst _hoisted_3 = { class: \"option__desc\" };\nconst _hoisted_4 = { class: \"option__title\" };\nconst _hoisted_5 = { class: \"option__wrapper\" };\nconst _hoisted_6 = { class: \"option__title\" };\nconst _hoisted_7 = { class: \"hint\" };\nconst _hoisted_8 = {\n key: 0,\n class: \"error\"\n};\nfunction _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {\n const _component_NcAvatar = resolveComponent(\"NcAvatar\");\n const _component_NcSelect = resolveComponent(\"NcSelect\");\n const _component_NcCollectionListItem = resolveComponent(\"NcCollectionListItem\");\n return $options.collections && $props.type && $props.id ? (openBlock(), createElementBlock(\"ul\", _hoisted_1, [\n createElementVNode(\"li\", {\n onClick: _cache[3] || (_cache[3] = (...args) => $options.showSelect && $options.showSelect(...args))\n }, [\n _cache[4] || (_cache[4] = createElementVNode(\"div\", { class: \"avatar\" }, [\n createElementVNode(\"span\", { class: \"icon-projects\" })\n ], -1)),\n createElementVNode(\"div\", _hoisted_2, [\n createVNode(_component_NcSelect, {\n ref: \"select\",\n modelValue: $data.value,\n \"onUpdate:modelValue\": _cache[0] || (_cache[0] = ($event) => $data.value = $event),\n \"aria-label-combobox\": $options.t(\"Add to a project\"),\n options: $options.options,\n placeholder: $options.placeholder,\n label: \"title\",\n limit: 5,\n onClose: _cache[1] || (_cache[1] = ($event) => $data.isSelectOpen = false),\n onOpen: _cache[2] || (_cache[2] = ($event) => $data.isSelectOpen = true),\n \"onOption:selected\": $options.select,\n onSearch: $setup.search\n }, {\n \"selected-option\": withCtx((option) => [\n createElementVNode(\"span\", _hoisted_3, [\n createElementVNode(\"span\", _hoisted_4, toDisplayString(option.title), 1)\n ])\n ]),\n option: withCtx((option) => [\n createElementVNode(\"span\", _hoisted_5, [\n option.class ? (openBlock(), createElementBlock(\"span\", {\n key: 0,\n class: normalizeClass([option.class, \"avatar\"])\n }, null, 2)) : option.method !== 2 ? (openBlock(), createBlock(_component_NcAvatar, {\n key: 1,\n allowPlaceholder: \"\",\n displayName: option.title\n }, null, 8, [\"displayName\"])) : createCommentVNode(\"\", true),\n createElementVNode(\"span\", _hoisted_6, toDisplayString(option.title), 1)\n ])\n ]),\n default: withCtx(() => [\n createElementVNode(\"p\", _hoisted_7, toDisplayString($options.t(\"Connect items to a project to make them easier to find\")), 1)\n ]),\n _: 1\n }, 8, [\"modelValue\", \"aria-label-combobox\", \"options\", \"placeholder\", \"onOption:selected\", \"onSearch\"])\n ])\n ]),\n createVNode(Transition, { name: \"fade\" }, {\n default: withCtx(() => [\n $data.error ? (openBlock(), createElementBlock(\"li\", _hoisted_8, toDisplayString($data.error), 1)) : createCommentVNode(\"\", true)\n ]),\n _: 1\n }),\n (openBlock(true), createElementBlock(Fragment, null, renderList($options.collections, (collection) => {\n return openBlock(), createBlock(_component_NcCollectionListItem, {\n key: collection.id,\n collection,\n error: $data.collectionsError[collection.id],\n onRenameCollection: $options.renameCollectionFromItem,\n onRemoveResource: $setup.removeResourceFromCollection\n }, null, 8, [\"collection\", \"error\", \"onRenameCollection\", \"onRemoveResource\"]);\n }), 128))\n ])) : createCommentVNode(\"\", true);\n}\nconst NcCollectionList = /* @__PURE__ */ _export_sfc(_sfc_main, [[\"render\", _sfc_render], [\"__scopeId\", \"data-v-0e169eff\"]]);\nexport {\n NcCollectionList as N\n};\n//# sourceMappingURL=NcCollectionList-B9qCtjJw.mjs.map\n","import '../assets/NcDashboardWidget-nZuIL1UN.css';\nimport { openBlock, createElementBlock, mergeProps, createElementVNode, toDisplayString, createCommentVNode, resolveComponent, createBlock, withCtx, renderSlot, createVNode, Fragment, renderList, toHandlers } from \"vue\";\nimport { _ as _export_sfc } from \"./_plugin-vue_export-helper-1tPrXgE0.mjs\";\nimport { r as register, z as t35, a as t } from \"./_l10n-wdIzZwir.mjs\";\nimport { N as NcAvatar } from \"./NcAvatar-1KxMUN7V.mjs\";\nimport { N as NcDashboardWidgetItem } from \"./NcDashboardWidgetItem-DwDndrm_.mjs\";\nimport { N as NcEmptyContent } from \"./NcEmptyContent-CGAPqk4S.mjs\";\nconst _sfc_main$1 = {\n name: \"CheckIcon\",\n emits: [\"click\"],\n props: {\n title: {\n type: String\n },\n fillColor: {\n type: String,\n default: \"currentColor\"\n },\n size: {\n type: Number,\n default: 24\n }\n }\n};\nconst _hoisted_1$1 = [\"aria-hidden\", \"aria-label\"];\nconst _hoisted_2$1 = [\"fill\", \"width\", \"height\"];\nconst _hoisted_3$1 = { d: \"M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z\" };\nconst _hoisted_4 = { key: 0 };\nfunction _sfc_render$1(_ctx, _cache, $props, $setup, $data, $options) {\n return openBlock(), createElementBlock(\"span\", mergeProps(_ctx.$attrs, {\n \"aria-hidden\": $props.title ? null : \"true\",\n \"aria-label\": $props.title,\n class: \"material-design-icon check-icon\",\n role: \"img\",\n onClick: _cache[0] || (_cache[0] = ($event) => _ctx.$emit(\"click\", $event))\n }), [\n (openBlock(), createElementBlock(\"svg\", {\n fill: $props.fillColor,\n class: \"material-design-icon__svg\",\n width: $props.size,\n height: $props.size,\n viewBox: \"0 0 24 24\"\n }, [\n createElementVNode(\"path\", _hoisted_3$1, [\n $props.title ? (openBlock(), createElementBlock(\"title\", _hoisted_4, toDisplayString($props.title), 1)) : createCommentVNode(\"\", true)\n ])\n ], 8, _hoisted_2$1))\n ], 16, _hoisted_1$1);\n}\nconst Check = /* @__PURE__ */ _export_sfc(_sfc_main$1, [[\"render\", _sfc_render$1]]);\nregister(t35);\nconst _sfc_main = {\n name: \"NcDashboardWidget\",\n components: {\n NcAvatar,\n NcDashboardWidgetItem,\n NcEmptyContent,\n Check\n },\n props: {\n /**\n * An array containing the items to show (specific structure must be respected,\n * except if you override item rendering in the default slot).\n */\n items: {\n type: Array,\n default: () => {\n return [];\n }\n },\n /**\n * If this is set, a \"show more\" text is displayed on the widget's bottom.\n * It's a link pointing to this URL.\n */\n showMoreUrl: {\n type: String,\n default: \"\"\n },\n /**\n * The text of show more button.\n *\n * Expected to be in the form \"More {itemName} …\"\n */\n showMoreLabel: {\n type: String,\n default: t(\"More items …\")\n },\n /**\n * A boolean to put the widget in a loading state.\n */\n loading: {\n type: Boolean,\n default: false\n },\n /**\n * An object containing context menu entries that will be displayed for each item.\n */\n itemMenu: {\n type: Object,\n default: () => {\n return {};\n }\n },\n /**\n * Whether both the items and the empty content message are shown.\n * Usefull for e.g. showing \"No mentions\" and a list of elements.\n */\n showItemsAndEmptyContent: {\n type: Boolean,\n default: false\n },\n /**\n * The text to show in the empty content area.\n */\n emptyContentMessage: {\n type: String,\n default: \"\"\n },\n /**\n * The text to show in the half empty content area.\n */\n halfEmptyContentMessage: {\n type: String,\n default: \"\"\n }\n },\n computed: {\n // forward menu events to my parent\n handlers() {\n const h = {};\n for (const evName in this.itemMenu) {\n h[evName] = (it) => {\n this.$emit(evName, it);\n };\n }\n return h;\n },\n displayedItems() {\n const nbItems = this.showMoreUrl && this.items.length >= this.maxItemNumber ? this.maxItemNumber - 1 : this.maxItemNumber;\n return this.items.slice(0, nbItems);\n },\n showHalfEmptyContentArea() {\n return this.showItemsAndEmptyContent && this.halfEmptyContentString && this.items.length !== 0;\n },\n halfEmptyContentString() {\n return this.halfEmptyContentMessage || this.emptyContentMessage;\n },\n maxItemNumber() {\n return this.showItemsAndEmptyContent ? 5 : 7;\n },\n showMore() {\n return this.showMoreUrl && this.items.length >= this.maxItemNumber;\n }\n }\n};\nconst _hoisted_1 = { class: \"dashboard-widget\" };\nconst _hoisted_2 = { key: 1 };\nconst _hoisted_3 = [\"href\"];\nfunction _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {\n const _component_Check = resolveComponent(\"Check\");\n const _component_NcEmptyContent = resolveComponent(\"NcEmptyContent\");\n const _component_NcDashboardWidgetItem = resolveComponent(\"NcDashboardWidgetItem\");\n const _component_NcAvatar = resolveComponent(\"NcAvatar\");\n return openBlock(), createElementBlock(\"div\", _hoisted_1, [\n $options.showHalfEmptyContentArea ? (openBlock(), createBlock(_component_NcEmptyContent, {\n key: 0,\n description: $options.halfEmptyContentString,\n class: \"half-screen\"\n }, {\n icon: withCtx(() => [\n renderSlot(_ctx.$slots, \"halfEmptyContentIcon\", {}, () => [\n createVNode(_component_Check)\n ], true)\n ]),\n _: 3\n }, 8, [\"description\"])) : createCommentVNode(\"\", true),\n createElementVNode(\"ul\", null, [\n (openBlock(true), createElementBlock(Fragment, null, renderList($options.displayedItems, (item) => {\n return openBlock(), createElementBlock(\"li\", {\n key: item.id\n }, [\n renderSlot(_ctx.$slots, \"default\", { item }, () => [\n createVNode(_component_NcDashboardWidgetItem, mergeProps({ ref_for: true }, item, { itemMenu: $props.itemMenu }, toHandlers($options.handlers)), null, 16, [\"itemMenu\"])\n ], true)\n ]);\n }), 128))\n ]),\n $props.loading ? (openBlock(), createElementBlock(\"div\", _hoisted_2, [\n (openBlock(), createElementBlock(Fragment, null, renderList(7, (i) => {\n return createElementVNode(\"div\", {\n key: i,\n class: \"item-list__entry\"\n }, [\n createVNode(_component_NcAvatar, {\n class: \"item-avatar\",\n size: 44\n }),\n _cache[0] || (_cache[0] = createElementVNode(\"div\", { class: \"item__details\" }, [\n createElementVNode(\"h3\", null, \" \"),\n createElementVNode(\"p\", { class: \"message\" }, \"   \")\n ], -1))\n ]);\n }), 64))\n ])) : $props.items.length === 0 ? renderSlot(_ctx.$slots, \"empty-content\", { key: 2 }, () => [\n $props.emptyContentMessage ? (openBlock(), createBlock(_component_NcEmptyContent, {\n key: 0,\n description: $props.emptyContentMessage\n }, {\n icon: withCtx(() => [\n renderSlot(_ctx.$slots, \"emptyContentIcon\", {}, void 0, true)\n ]),\n _: 3\n }, 8, [\"description\"])) : createCommentVNode(\"\", true)\n ], true) : $options.showMore ? (openBlock(), createElementBlock(\"a\", {\n key: 3,\n href: $props.showMoreUrl,\n target: \"_blank\",\n class: \"more\",\n tabindex: \"0\"\n }, toDisplayString($props.showMoreLabel), 9, _hoisted_3)) : createCommentVNode(\"\", true)\n ]);\n}\nconst NcDashboardWidget = /* @__PURE__ */ _export_sfc(_sfc_main, [[\"render\", _sfc_render], [\"__scopeId\", \"data-v-8dabc003\"]]);\nexport {\n NcDashboardWidget as N\n};\n//# sourceMappingURL=NcDashboardWidget-zmbDEGL-.mjs.map\n","import '../assets/NcFilePicker-BdjtiV3h.css';\nimport { openBlock, createElementBlock, mergeProps, createElementVNode, toDisplayString, createCommentVNode, defineComponent, useTemplateRef, computed, normalizeClass, createVNode, withCtx, createBlock, createTextVNode, unref, Fragment, renderList, renderSlot, nextTick } from \"vue\";\nimport { _ as _export_sfc } from \"./_plugin-vue_export-helper-1tPrXgE0.mjs\";\nimport { N as NcActionButton } from \"./NcActionButton-BO5T5ePT.mjs\";\nimport { N as NcActionCaption } from \"./NcActionCaption-f7L9gBlT.mjs\";\nimport { N as NcActions } from \"./NcActions-C-wDqSrv.mjs\";\nimport { N as NcIconSvgWrapper } from \"./NcIconSvgWrapper-g8ubWhoz.mjs\";\nimport { N as NcLoadingIcon } from \"./NcLoadingIcon-BOVpFVQz.mjs\";\nimport { getGettextBuilder } from \"@nextcloud/l10n/gettext\";\nconst _sfc_main$3 = {\n name: \"FolderUploadIcon\",\n emits: [\"click\"],\n props: {\n title: {\n type: String\n },\n fillColor: {\n type: String,\n default: \"currentColor\"\n },\n size: {\n type: Number,\n default: 24\n }\n }\n};\nconst _hoisted_1$3 = [\"aria-hidden\", \"aria-label\"];\nconst _hoisted_2$2 = [\"fill\", \"width\", \"height\"];\nconst _hoisted_3$2 = { d: \"M20,6A2,2 0 0,1 22,8V18A2,2 0 0,1 20,20H4A2,2 0 0,1 2,18V6A2,2 0 0,1 4,4H10L12,6H20M10.75,13H14V17H16V13H19.25L15,8.75\" };\nconst _hoisted_4$2 = { key: 0 };\nfunction _sfc_render$2(_ctx, _cache, $props, $setup, $data, $options) {\n return openBlock(), createElementBlock(\"span\", mergeProps(_ctx.$attrs, {\n \"aria-hidden\": $props.title ? null : \"true\",\n \"aria-label\": $props.title,\n class: \"material-design-icon folder-upload-icon\",\n role: \"img\",\n onClick: _cache[0] || (_cache[0] = ($event) => _ctx.$emit(\"click\", $event))\n }), [\n (openBlock(), createElementBlock(\"svg\", {\n fill: $props.fillColor,\n class: \"material-design-icon__svg\",\n width: $props.size,\n height: $props.size,\n viewBox: \"0 0 24 24\"\n }, [\n createElementVNode(\"path\", _hoisted_3$2, [\n $props.title ? (openBlock(), createElementBlock(\"title\", _hoisted_4$2, toDisplayString($props.title), 1)) : createCommentVNode(\"\", true)\n ])\n ], 8, _hoisted_2$2))\n ], 16, _hoisted_1$3);\n}\nconst IconFolderUpload = /* @__PURE__ */ _export_sfc(_sfc_main$3, [[\"render\", _sfc_render$2]]);\nconst _sfc_main$2 = {\n name: \"PlusIcon\",\n emits: [\"click\"],\n props: {\n title: {\n type: String\n },\n fillColor: {\n type: String,\n default: \"currentColor\"\n },\n size: {\n type: Number,\n default: 24\n }\n }\n};\nconst _hoisted_1$2 = [\"aria-hidden\", \"aria-label\"];\nconst _hoisted_2$1 = [\"fill\", \"width\", \"height\"];\nconst _hoisted_3$1 = { d: \"M19,13H13V19H11V13H5V11H11V5H13V11H19V13Z\" };\nconst _hoisted_4$1 = { key: 0 };\nfunction _sfc_render$1(_ctx, _cache, $props, $setup, $data, $options) {\n return openBlock(), createElementBlock(\"span\", mergeProps(_ctx.$attrs, {\n \"aria-hidden\": $props.title ? null : \"true\",\n \"aria-label\": $props.title,\n class: \"material-design-icon plus-icon\",\n role: \"img\",\n onClick: _cache[0] || (_cache[0] = ($event) => _ctx.$emit(\"click\", $event))\n }), [\n (openBlock(), createElementBlock(\"svg\", {\n fill: $props.fillColor,\n class: \"material-design-icon__svg\",\n width: $props.size,\n height: $props.size,\n viewBox: \"0 0 24 24\"\n }, [\n createElementVNode(\"path\", _hoisted_3$1, [\n $props.title ? (openBlock(), createElementBlock(\"title\", _hoisted_4$1, toDisplayString($props.title), 1)) : createCommentVNode(\"\", true)\n ])\n ], 8, _hoisted_2$1))\n ], 16, _hoisted_1$2);\n}\nconst IconPlus = /* @__PURE__ */ _export_sfc(_sfc_main$2, [[\"render\", _sfc_render$1]]);\nconst _sfc_main$1 = {\n name: \"UploadIcon\",\n emits: [\"click\"],\n props: {\n title: {\n type: String\n },\n fillColor: {\n type: String,\n default: \"currentColor\"\n },\n size: {\n type: Number,\n default: 24\n }\n }\n};\nconst _hoisted_1$1 = [\"aria-hidden\", \"aria-label\"];\nconst _hoisted_2 = [\"fill\", \"width\", \"height\"];\nconst _hoisted_3 = { d: \"M9,16V10H5L12,3L19,10H15V16H9M5,20V18H19V20H5Z\" };\nconst _hoisted_4 = { key: 0 };\nfunction _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {\n return openBlock(), createElementBlock(\"span\", mergeProps(_ctx.$attrs, {\n \"aria-hidden\": $props.title ? null : \"true\",\n \"aria-label\": $props.title,\n class: \"material-design-icon upload-icon\",\n role: \"img\",\n onClick: _cache[0] || (_cache[0] = ($event) => _ctx.$emit(\"click\", $event))\n }), [\n (openBlock(), createElementBlock(\"svg\", {\n fill: $props.fillColor,\n class: \"material-design-icon__svg\",\n width: $props.size,\n height: $props.size,\n viewBox: \"0 0 24 24\"\n }, [\n createElementVNode(\"path\", _hoisted_3, [\n $props.title ? (openBlock(), createElementBlock(\"title\", _hoisted_4, toDisplayString($props.title), 1)) : createCommentVNode(\"\", true)\n ])\n ], 8, _hoisted_2))\n ], 16, _hoisted_1$1);\n}\nconst IconUpload = /* @__PURE__ */ _export_sfc(_sfc_main$1, [[\"render\", _sfc_render]]);\n/*!\n * SPDX-FileCopyrightText: 2020 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\nconst gtBuilder = getGettextBuilder().detectLanguage();\nconst gt = gtBuilder.build();\ngt.ngettext.bind(gt);\nconst t = gt.gettext.bind(gt);\nconst _hoisted_1 = [\"accept\", \"multiple\"];\nconst _sfc_main = /* @__PURE__ */ defineComponent({\n __name: \"NcFilePicker\",\n props: {\n accept: { default: void 0 },\n actionCaption: { default: \"\" },\n actions: { default: () => [] },\n directory: { type: Boolean },\n directoryOnly: { type: Boolean },\n disabled: { type: Boolean },\n iconOnly: { type: Boolean },\n label: { default: void 0 },\n loading: { type: Boolean },\n multiple: { type: Boolean },\n variant: { default: \"primary\" }\n },\n emits: [\"pick\"],\n setup(__props, { expose: __expose, emit: __emit }) {\n const props = __props;\n const emit = __emit;\n __expose({\n reset\n });\n const formElement = useTemplateRef(\"form\");\n const inputElement = useTemplateRef(\"input\");\n const currentLabel = computed(() => {\n if (props.loading) {\n return t(\"Uploading …\");\n } else if (props.label) {\n return props.label;\n } else if (props.directoryOnly) {\n return t(\"Pick folder\");\n }\n return props.multiple ? t(\"Pick files\") : t(\"Pick file\");\n });\n const canUploadFolders = computed(() => {\n return (props.directory || props.directoryOnly) && \"webkitdirectory\" in HTMLInputElement.prototype;\n });\n function triggerPickFiles(uploadFolders) {\n reset();\n if (canUploadFolders.value) {\n inputElement.value.webkitdirectory = uploadFolders;\n }\n nextTick(() => inputElement.value.click());\n }\n function onPick() {\n const files = inputElement.value?.files ? Array.from(inputElement.value.files) : [];\n emit(\"pick\", files);\n }\n function reset() {\n formElement.value.reset();\n }\n return (_ctx, _cache) => {\n return openBlock(), createElementBlock(\"form\", {\n ref: \"form\",\n class: normalizeClass(_ctx.$style.filePicker)\n }, [\n createVNode(NcActions, {\n \"aria-label\": currentLabel.value,\n disabled: __props.disabled || __props.loading,\n menuName: __props.iconOnly ? void 0 : currentLabel.value,\n forceName: !__props.iconOnly,\n variant: __props.variant\n }, {\n icon: withCtx(() => [\n !__props.loading ? renderSlot(_ctx.$slots, \"icon\", { key: 0 }, () => [\n createVNode(IconPlus, { size: 20 })\n ]) : (openBlock(), createBlock(NcLoadingIcon, { key: 1 }))\n ]),\n default: withCtx(() => [\n __props.actionCaption ? (openBlock(), createBlock(NcActionCaption, {\n key: 0,\n name: __props.actionCaption\n }, null, 8, [\"name\"])) : createCommentVNode(\"\", true),\n !__props.directoryOnly ? (openBlock(), createBlock(NcActionButton, {\n key: 1,\n closeAfterClick: \"\",\n onClick: _cache[0] || (_cache[0] = ($event) => triggerPickFiles(false))\n }, {\n icon: withCtx(() => [\n createVNode(IconUpload, { size: 20 })\n ]),\n default: withCtx(() => [\n createTextVNode(\" \" + toDisplayString(canUploadFolders.value || _ctx.$slots.actions ? __props.multiple ? unref(t)(\"Upload files\") : unref(t)(\"Upload file\") : currentLabel.value), 1)\n ]),\n _: 1\n })) : createCommentVNode(\"\", true),\n canUploadFolders.value ? (openBlock(), createBlock(NcActionButton, {\n key: 2,\n closeAfterClick: \"\",\n onClick: _cache[1] || (_cache[1] = ($event) => triggerPickFiles(true))\n }, {\n icon: withCtx(() => [\n createVNode(IconFolderUpload, {\n style: { \"color\": \"var(--color-primary-element)\" },\n size: 20\n })\n ]),\n default: withCtx(() => [\n createTextVNode(\" \" + toDisplayString(!__props.directoryOnly || _ctx.$slots.actions ? unref(t)(\"Upload folder\") : currentLabel.value), 1)\n ]),\n _: 1\n })) : createCommentVNode(\"\", true),\n (openBlock(true), createElementBlock(Fragment, null, renderList(__props.actions, (group) => {\n return openBlock(), createElementBlock(Fragment, null, [\n group.caption ? (openBlock(), createBlock(NcActionCaption, {\n key: group.caption,\n name: group.caption\n }, null, 8, [\"name\"])) : createCommentVNode(\"\", true),\n (openBlock(true), createElementBlock(Fragment, null, renderList(group.actions ?? [group], (action) => {\n return openBlock(), createBlock(NcActionButton, {\n key: action.label,\n closeAfterClick: \"\",\n onClick: action.onClick\n }, {\n icon: withCtx(() => [\n createVNode(NcIconSvgWrapper, {\n svg: action.iconSvg\n }, null, 8, [\"svg\"])\n ]),\n default: withCtx(() => [\n createTextVNode(\" \" + toDisplayString(action.label), 1)\n ]),\n _: 2\n }, 1032, [\"onClick\"]);\n }), 128))\n ], 64);\n }), 256))\n ]),\n _: 3\n }, 8, [\"aria-label\", \"disabled\", \"menuName\", \"forceName\", \"variant\"]),\n createElementVNode(\"input\", {\n ref: \"input\",\n accept: __props.accept?.join(\", \"),\n \"aria-hidden\": \"true\",\n class: \"hidden-visually\",\n multiple: __props.multiple,\n type: \"file\",\n onChange: onPick\n }, null, 40, _hoisted_1),\n renderSlot(_ctx.$slots, \"default\")\n ], 2);\n };\n }\n});\nconst filePicker = \"_filePicker_Unq7q\";\nconst style0 = {\n filePicker\n};\nconst cssModules = {\n \"$style\": style0\n};\nconst NcFilePicker = /* @__PURE__ */ _export_sfc(_sfc_main, [[\"__cssModules\", cssModules]]);\nexport {\n NcFilePicker as N\n};\n//# sourceMappingURL=NcFilePicker-bD2toutn.mjs.map\n","import '../assets/NcKbd-DcC56WbC.css';\nimport { defineComponent, computed, openBlock, createElementBlock, normalizeClass, renderSlot, createTextVNode, toDisplayString } from \"vue\";\nimport { r as register, o as t7, a as t } from \"./_l10n-wdIzZwir.mjs\";\nimport { i as isMac } from \"./platform-CC2ecGvV.mjs\";\nimport { _ as _export_sfc } from \"./_plugin-vue_export-helper-1tPrXgE0.mjs\";\nregister(t7);\nconst _sfc_main = /* @__PURE__ */ defineComponent({\n __name: \"NcKbd\",\n props: {\n symbol: { default: () => void 0 },\n mac: { type: Boolean, default: () => isMac }\n },\n setup(__props) {\n const labels = computed(() => ({\n ArrowUp: \"↑\",\n ArrowDown: \"↓\",\n ArrowLeft: \"←\",\n ArrowRight: \"→\",\n Control: !__props.mac ? t(\"Ctrl\") : \"⌘\",\n Alt: !__props.mac ? t(\"Alt\") : \"⌥\",\n Shift: !__props.mac ? t(\"Shift\") : \"⇧\",\n Enter: !__props.mac ? t(\"Enter\") : \"⏎\",\n Tab: !__props.mac ? t(\"Tab\") : \"⇥\",\n Delete: !__props.mac ? t(\"Delete\") : \"⌫\",\n Escape: !__props.mac ? t(\"Escape\") : \"⎋\",\n Space: t(\"Space\")\n // TRANSLATORS: Space key on keyboard\n }));\n const label = computed(() => __props.symbol && labels.value[__props.symbol] || __props.symbol);\n return (_ctx, _cache) => {\n return openBlock(), createElementBlock(\"kbd\", {\n class: normalizeClass(_ctx.$style.kbd)\n }, [\n renderSlot(_ctx.$slots, \"default\", {}, () => [\n createTextVNode(toDisplayString(label.value), 1)\n ])\n ], 2);\n };\n }\n});\nconst kbd = \"_kbd_ixPyw\";\nconst style0 = {\n \"material-design-icon\": \"_material-design-icon_ZhQq1\",\n kbd\n};\nconst cssModules = {\n \"$style\": style0\n};\nconst NcKbd = /* @__PURE__ */ _export_sfc(_sfc_main, [[\"__cssModules\", cssModules]]);\nexport {\n NcKbd as N\n};\n//# sourceMappingURL=NcKbd-Bh_Tk6Ar.mjs.map\n","import '../assets/NcHotkeyList-BigfRqyr.css';\nimport { defineComponent, openBlock, createElementBlock, normalizeClass, createElementVNode, toDisplayString, unref, renderSlot } from \"vue\";\nimport { r as register, p as t31, a as t } from \"./_l10n-wdIzZwir.mjs\";\nimport { c as createElementId } from \"./createElementId-DhjFt1I9.mjs\";\nimport { _ as _export_sfc } from \"./_plugin-vue_export-helper-1tPrXgE0.mjs\";\nregister(t31);\nconst _sfc_main = /* @__PURE__ */ defineComponent({\n __name: \"NcHotkeyList\",\n props: {\n label: { default: () => void 0 }\n },\n setup(__props) {\n const labelId = `NcHotkeyList_${createElementId()}`;\n return (_ctx, _cache) => {\n return openBlock(), createElementBlock(\"div\", {\n class: normalizeClass(_ctx.$style.hotkeyList)\n }, [\n createElementVNode(\"div\", {\n id: labelId,\n class: normalizeClass([_ctx.$style.hotkeyList__heading, { \"hidden-visually\": !__props.label }])\n }, toDisplayString(__props.label || unref(t)(\"Keyboard shortcuts\")), 3),\n createElementVNode(\"ul\", { \"aria-labelledby\": labelId }, [\n renderSlot(_ctx.$slots, \"default\")\n ])\n ], 2);\n };\n }\n});\nconst hotkeyList = \"_hotkeyList_zH7bt\";\nconst hotkeyList__heading = \"_hotkeyList__heading_SuOfz\";\nconst style0 = {\n hotkeyList,\n hotkeyList__heading\n};\nconst cssModules = {\n \"$style\": style0\n};\nconst NcHotkeyList = /* @__PURE__ */ _export_sfc(_sfc_main, [[\"__cssModules\", cssModules]]);\nexport {\n NcHotkeyList as N\n};\n//# sourceMappingURL=NcHotkeyList-B4WjTLAp.mjs.map\n","import '../assets/NcListItemIcon-DJRcmlo1.css';\nimport \"escape-html\";\nimport \"striptags\";\nimport { resolveComponent, openBlock, createElementBlock, normalizeStyle, normalizeClass, createVNode, mergeProps, createElementVNode, createBlock, toDisplayString, createCommentVNode, renderSlot } from \"vue\";\nimport \"../composables/useIsDarkTheme/index.mjs\";\nimport \"@nextcloud/router\";\nimport \"../functions/isDarkTheme/index.mjs\";\nimport \"./NcMentionBubble.vue_vue_type_style_index_0_scoped_3c4a673d_lang-DyqakLm5.mjs\";\nimport { _ as _export_sfc } from \"./_plugin-vue_export-helper-1tPrXgE0.mjs\";\nimport { u as userStatus, N as NcAvatar } from \"./NcAvatar-1KxMUN7V.mjs\";\nimport { _ as _sfc_main$1 } from \"./NcHighlight.vue_vue_type_script_lang-DnWQDM_2.mjs\";\nimport { N as NcIconSvgWrapper } from \"./NcIconSvgWrapper-g8ubWhoz.mjs\";\nconst margin = 8;\nconst defaultSize = 32;\nconst _sfc_main = {\n name: \"NcListItemIcon\",\n components: {\n NcAvatar,\n NcHighlight: _sfc_main$1,\n NcIconSvgWrapper\n },\n mixins: [\n userStatus\n ],\n props: {\n /**\n * Default first line text\n */\n name: {\n type: String,\n required: true\n },\n /**\n * Secondary optional line\n * Only visible on size of 32 and above\n */\n subname: {\n type: String,\n default: \"\"\n },\n /**\n * Icon class to be displayed at the end of the component\n */\n icon: {\n type: String,\n default: \"\"\n },\n /**\n * SVG icon to be displayed at the end of the component\n */\n iconSvg: {\n type: String,\n default: \"\"\n },\n /**\n * Descriptive name for the icon\n */\n iconName: {\n type: String,\n default: \"\"\n },\n /**\n * Search within the highlight of name/subname\n */\n search: {\n type: String,\n default: \"\"\n },\n /**\n * Set a size in px that will define the avatar height/width\n * and therefore, the height of the component\n */\n avatarSize: {\n type: Number,\n default: defaultSize\n },\n /**\n * Disable the margins of this component.\n * Useful for integration in `NcSelect` for example\n */\n noMargin: {\n type: Boolean,\n default: false\n },\n /**\n * See the [Avatar](#Avatar) displayName prop\n * Fallback to name\n */\n displayName: {\n type: String,\n default: null\n },\n /**\n * See the [Avatar](#Avatar) isNoUser prop\n * Enable/disable the UserStatus fetching\n */\n isNoUser: {\n type: Boolean,\n default: false\n },\n /**\n * Unique list item ID\n */\n id: {\n type: String,\n default: null\n }\n },\n setup() {\n return {\n margin,\n defaultSize\n };\n },\n computed: {\n hasIcon() {\n return this.icon !== \"\";\n },\n hasIconSvg() {\n return this.iconSvg !== \"\";\n },\n isValidSubname() {\n return this.subname?.trim?.() !== \"\";\n },\n isSizeBigEnough() {\n return this.avatarSize >= 26;\n },\n cssVars() {\n const margin2 = this.noMargin ? 0 : this.margin;\n return {\n \"--height\": this.avatarSize + 2 * margin2 + \"px\",\n \"--margin\": this.margin + \"px\"\n };\n },\n /**\n * Separates the search property into two parts, the first one is the search part on the name, the second on the subname.\n *\n * @return {[string, string]}\n */\n searchParts() {\n const EMAIL_NOTATION = /^([^<]*)<([^>]+)>?$/;\n const match = this.search.match(EMAIL_NOTATION);\n if (this.isNoUser || !match) {\n return [this.search, this.search];\n }\n return [match[1].trim(), match[2]];\n }\n },\n beforeMount() {\n if (!this.isNoUser && !this.subname) {\n this.fetchUserStatus(this.user);\n }\n }\n};\nconst _hoisted_1 = [\"id\"];\nconst _hoisted_2 = { class: \"option__details\" };\nconst _hoisted_3 = { key: 1 };\nconst _hoisted_4 = [\"aria-label\"];\nfunction _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {\n const _component_NcAvatar = resolveComponent(\"NcAvatar\");\n const _component_NcHighlight = resolveComponent(\"NcHighlight\");\n const _component_NcIconSvgWrapper = resolveComponent(\"NcIconSvgWrapper\");\n return openBlock(), createElementBlock(\"span\", {\n id: $props.id,\n class: normalizeClass([\"option\", { \"option--compact\": $props.avatarSize < $setup.defaultSize }]),\n style: normalizeStyle($options.cssVars)\n }, [\n createVNode(_component_NcAvatar, mergeProps(_ctx.$attrs, {\n disableMenu: \"\",\n disableTooltip: \"\",\n displayName: $props.displayName || $props.name,\n isNoUser: $props.isNoUser,\n size: $props.avatarSize,\n class: \"option__avatar\"\n }), null, 16, [\"displayName\", \"isNoUser\", \"size\"]),\n createElementVNode(\"div\", _hoisted_2, [\n createVNode(_component_NcHighlight, {\n class: \"option__lineone\",\n text: $props.name,\n search: $options.searchParts[0]\n }, null, 8, [\"text\", \"search\"]),\n $options.isValidSubname && $options.isSizeBigEnough ? (openBlock(), createBlock(_component_NcHighlight, {\n key: 0,\n class: \"option__linetwo\",\n text: $props.subname,\n search: $options.searchParts[1]\n }, null, 8, [\"text\", \"search\"])) : _ctx.hasStatus ? (openBlock(), createElementBlock(\"span\", _hoisted_3, [\n createElementVNode(\"span\", null, toDisplayString(_ctx.userStatus.icon), 1),\n createElementVNode(\"span\", null, toDisplayString(_ctx.userStatus.message), 1)\n ])) : createCommentVNode(\"\", true)\n ]),\n renderSlot(_ctx.$slots, \"default\", {}, () => [\n $options.hasIconSvg ? (openBlock(), createBlock(_component_NcIconSvgWrapper, {\n key: 0,\n class: \"option__icon\",\n svg: $props.iconSvg,\n name: $props.iconName\n }, null, 8, [\"svg\", \"name\"])) : $options.hasIcon ? (openBlock(), createElementBlock(\"span\", {\n key: 1,\n class: normalizeClass([\"icon option__icon\", $props.icon]),\n \"aria-label\": $props.iconName\n }, null, 10, _hoisted_4)) : createCommentVNode(\"\", true)\n ], true)\n ], 14, _hoisted_1);\n}\nconst NcListItemIcon = /* @__PURE__ */ _export_sfc(_sfc_main, [[\"render\", _sfc_render], [\"__scopeId\", \"data-v-0ee94269\"]]);\nexport {\n NcListItemIcon as N\n};\n//# sourceMappingURL=NcListItemIcon-Dl_tfkk9.mjs.map\n","import '../assets/NcProgressBar-B6wveIA1.css';\nimport { defineComponent, useCssVars, computed, openBlock, createElementBlock, normalizeClass, createElementVNode, toDisplayString, createCommentVNode } from \"vue\";\nimport { _ as _export_sfc } from \"./_plugin-vue_export-helper-1tPrXgE0.mjs\";\nconst _hoisted_1 = [\"aria-valuenow\"];\nconst _hoisted_2 = [\"height\", \"width\"];\nconst _hoisted_3 = [\"stroke-dasharray\", \"stroke-dashoffset\", \"stroke-width\", \"r\", \"cx\", \"cy\"];\nconst _hoisted_4 = [\"stroke-dasharray\", \"stroke-dashoffset\", \"stroke-width\", \"r\", \"cx\", \"cy\"];\nconst _hoisted_5 = {\n key: 1,\n class: \"progress-bar-container\"\n};\nconst _hoisted_6 = [\"value\"];\nconst _hoisted_7 = {\n key: 0,\n class: \"progress-bar__value\"\n};\nconst gridBaseline = Number.parseInt(window.getComputedStyle(document.body).getPropertyValue(\"--default-grid-baseline\"));\nconst clickableArea = Number.parseInt(window.getComputedStyle(document.body).getPropertyValue(\"--default-clickable-area\"));\nconst clickableAreaSmall = Number.parseInt(window.getComputedStyle(document.body).getPropertyValue(\"--clickable-area-small\"));\nconst _sfc_main = /* @__PURE__ */ defineComponent({\n __name: \"NcProgressBar\",\n props: {\n value: { default: 0 },\n size: { default: \"small\" },\n error: { type: Boolean },\n type: { default: \"linear\" },\n color: { default: \"var(--color-primary-element)\" },\n showValue: { type: Boolean, default: false }\n },\n setup(__props) {\n useCssVars((_ctx) => ({\n \"v3a86fec2\": _ctx.color,\n \"v57442460\": heightPx.value\n }));\n const props = __props;\n const normalizedProgress = computed(() => Math.max(0, Math.min(100, props.value)) / 100);\n const height = computed(() => {\n if (typeof props.size === \"number\") {\n return Math.round(props.size);\n }\n if (props.type === \"circular\") {\n if (props.size === \"medium\") {\n return clickableArea;\n } else {\n return clickableAreaSmall;\n }\n }\n if (props.size === \"medium\") {\n return 1.5 * gridBaseline;\n }\n return gridBaseline;\n });\n const heightPx = computed(() => `${height.value}px`);\n const strokeWidth = computed(() => Math.max(gridBaseline, height.value / clickableArea * gridBaseline));\n const circleCenterPosition = computed(() => height.value / 2);\n const circleRadius = computed(() => height.value / 2 - strokeWidth.value);\n const circumference = computed(() => circleRadius.value * 2 * Math.PI);\n return (_ctx, _cache) => {\n return __props.type === \"circular\" ? (openBlock(), createElementBlock(\"span\", {\n key: 0,\n role: \"progressbar\",\n \"aria-valuenow\": __props.value,\n class: normalizeClass([{ \"progress-bar--error\": __props.error }, \"progress-bar progress-bar--circular\"])\n }, [\n (openBlock(), createElementBlock(\"svg\", {\n height: height.value,\n width: height.value\n }, [\n createElementVNode(\"circle\", {\n stroke: \"currentColor\",\n fill: \"transparent\",\n \"stroke-dasharray\": `${normalizedProgress.value * circumference.value} ${(1 - normalizedProgress.value) * circumference.value}`,\n \"stroke-dashoffset\": 0.25 * circumference.value,\n \"stroke-width\": strokeWidth.value,\n r: circleRadius.value,\n cx: circleCenterPosition.value,\n cy: circleCenterPosition.value\n }, null, 8, _hoisted_3),\n createElementVNode(\"circle\", {\n stroke: \"var(--color-background-darker)\",\n fill: \"transparent\",\n \"stroke-dasharray\": `${(1 - normalizedProgress.value) * circumference.value} ${normalizedProgress.value * circumference.value}`,\n \"stroke-dashoffset\": (0.25 - normalizedProgress.value) * circumference.value,\n \"stroke-width\": strokeWidth.value,\n r: circleRadius.value,\n cx: circleCenterPosition.value,\n cy: circleCenterPosition.value\n }, null, 8, _hoisted_4)\n ], 8, _hoisted_2))\n ], 10, _hoisted_1)) : (openBlock(), createElementBlock(\"div\", _hoisted_5, [\n createElementVNode(\"progress\", {\n class: normalizeClass([\"progress-bar progress-bar--linear vue\", { \"progress-bar--error\": __props.error }]),\n value: __props.value,\n max: \"100\"\n }, null, 10, _hoisted_6),\n __props.showValue ? (openBlock(), createElementBlock(\"span\", _hoisted_7, toDisplayString(__props.value) + \"%\", 1)) : createCommentVNode(\"\", true)\n ]));\n };\n }\n});\nconst NcProgressBar = /* @__PURE__ */ _export_sfc(_sfc_main, [[\"__scopeId\", \"data-v-353fa414\"]]);\nexport {\n NcProgressBar as N\n};\n//# sourceMappingURL=NcProgressBar-C-ane-Ni.mjs.map\n","import '../assets/NcRelatedResourcesPanel-BZKjkugM.css';\nimport axios from \"@nextcloud/axios\";\nimport { generateOcsUrl } from \"@nextcloud/router\";\nimport { r as register, S as t38, a as t, T as t42, U as t9 } from \"./_l10n-wdIzZwir.mjs\";\nimport { N as NcButton } from \"./NcButton-jvoYS2my.mjs\";\nimport { g as getRoute } from \"./autolink-DrIurosL.mjs\";\nimport { resolveComponent, openBlock, createElementBlock, createVNode, withCtx, createTextVNode, toDisplayString, createElementVNode, mergeProps, createCommentVNode, Fragment, renderList, createBlock } from \"vue\";\nimport { _ as _export_sfc } from \"./_plugin-vue_export-helper-1tPrXgE0.mjs\";\nimport { getCapabilities } from \"@nextcloud/capabilities\";\nimport { C as ChevronDown } from \"./ChevronDown-C6gc637b.mjs\";\nimport { C as ChevronUp } from \"./ChevronUp-ChH8oB7p.mjs\";\nimport { N as NcIconSvgWrapper } from \"./NcIconSvgWrapper-g8ubWhoz.mjs\";\nimport { l as logger } from \"./logger-D3RVzcfQ.mjs\";\nregister(t38);\nconst _sfc_main$4 = {\n name: \"NcResource\",\n components: {\n NcButton\n },\n props: {\n /**\n * The icon URL to display for the resource\n */\n icon: {\n type: String,\n required: true\n },\n /**\n * The name of the resource to display\n */\n name: {\n type: String,\n required: true\n },\n /**\n * The URL of the resource to link to\n */\n url: {\n type: String,\n required: true\n }\n },\n data() {\n return {\n labelTranslated: t('Open link to \"{resourceName}\"', { resourceName: this.name })\n };\n },\n computed: {\n route() {\n return getRoute(this.$router, this.url);\n }\n },\n methods: {\n t\n }\n};\nconst _hoisted_1$4 = { class: \"resource\" };\nconst _hoisted_2$4 = { class: \"resource__icon\" };\nconst _hoisted_3$3 = [\"src\"];\nfunction _sfc_render$4(_ctx, _cache, $props, $setup, $data, $options) {\n const _component_NcButton = resolveComponent(\"NcButton\");\n return openBlock(), createElementBlock(\"li\", _hoisted_1$4, [\n createVNode(_component_NcButton, {\n class: \"resource__button\",\n \"aria-label\": $data.labelTranslated,\n to: $options.route,\n href: $options.route ? null : $props.url,\n variant: \"tertiary\"\n }, {\n icon: withCtx(() => [\n createElementVNode(\"div\", _hoisted_2$4, [\n createElementVNode(\"img\", { src: $props.icon }, null, 8, _hoisted_3$3)\n ])\n ]),\n default: withCtx(() => [\n createTextVNode(\" \" + toDisplayString($props.name), 1)\n ]),\n _: 1\n }, 8, [\"aria-label\", \"to\", \"href\"])\n ]);\n}\nconst NcResource = /* @__PURE__ */ _export_sfc(_sfc_main$4, [[\"render\", _sfc_render$4], [\"__scopeId\", \"data-v-1f086ea6\"]]);\nconst _sfc_main$3 = {\n name: \"AccountGroupIcon\",\n emits: [\"click\"],\n props: {\n title: {\n type: String\n },\n fillColor: {\n type: String,\n default: \"currentColor\"\n },\n size: {\n type: Number,\n default: 24\n }\n }\n};\nconst _hoisted_1$3 = [\"aria-hidden\", \"aria-label\"];\nconst _hoisted_2$3 = [\"fill\", \"width\", \"height\"];\nconst _hoisted_3$2 = { d: \"M12,5.5A3.5,3.5 0 0,1 15.5,9A3.5,3.5 0 0,1 12,12.5A3.5,3.5 0 0,1 8.5,9A3.5,3.5 0 0,1 12,5.5M5,8C5.56,8 6.08,8.15 6.53,8.42C6.38,9.85 6.8,11.27 7.66,12.38C7.16,13.34 6.16,14 5,14A3,3 0 0,1 2,11A3,3 0 0,1 5,8M19,8A3,3 0 0,1 22,11A3,3 0 0,1 19,14C17.84,14 16.84,13.34 16.34,12.38C17.2,11.27 17.62,9.85 17.47,8.42C17.92,8.15 18.44,8 19,8M5.5,18.25C5.5,16.18 8.41,14.5 12,14.5C15.59,14.5 18.5,16.18 18.5,18.25V20H5.5V18.25M0,20V18.5C0,17.11 1.89,15.94 4.45,15.6C3.86,16.28 3.5,17.22 3.5,18.25V20H0M24,20H20.5V18.25C20.5,17.22 20.14,16.28 19.55,15.6C22.11,15.94 24,17.11 24,18.5V20Z\" };\nconst _hoisted_4$2 = { key: 0 };\nfunction _sfc_render$3(_ctx, _cache, $props, $setup, $data, $options) {\n return openBlock(), createElementBlock(\"span\", mergeProps(_ctx.$attrs, {\n \"aria-hidden\": $props.title ? null : \"true\",\n \"aria-label\": $props.title,\n class: \"material-design-icon account-group-icon\",\n role: \"img\",\n onClick: _cache[0] || (_cache[0] = ($event) => _ctx.$emit(\"click\", $event))\n }), [\n (openBlock(), createElementBlock(\"svg\", {\n fill: $props.fillColor,\n class: \"material-design-icon__svg\",\n width: $props.size,\n height: $props.size,\n viewBox: \"0 0 24 24\"\n }, [\n createElementVNode(\"path\", _hoisted_3$2, [\n $props.title ? (openBlock(), createElementBlock(\"title\", _hoisted_4$2, toDisplayString($props.title), 1)) : createCommentVNode(\"\", true)\n ])\n ], 8, _hoisted_2$3))\n ], 16, _hoisted_1$3);\n}\nconst AccountGroup = /* @__PURE__ */ _export_sfc(_sfc_main$3, [[\"render\", _sfc_render$3]]);\nconst _sfc_main$2 = {\n name: \"OpenInNewIcon\",\n emits: [\"click\"],\n props: {\n title: {\n type: String\n },\n fillColor: {\n type: String,\n default: \"currentColor\"\n },\n size: {\n type: Number,\n default: 24\n }\n }\n};\nconst _hoisted_1$2 = [\"aria-hidden\", \"aria-label\"];\nconst _hoisted_2$2 = [\"fill\", \"width\", \"height\"];\nconst _hoisted_3$1 = { d: \"M14,3V5H17.59L7.76,14.83L9.17,16.24L19,6.41V10H21V3M19,19H5V5H12V3H5C3.89,3 3,3.9 3,5V19A2,2 0 0,0 5,21H19A2,2 0 0,0 21,19V12H19V19Z\" };\nconst _hoisted_4$1 = { key: 0 };\nfunction _sfc_render$2(_ctx, _cache, $props, $setup, $data, $options) {\n return openBlock(), createElementBlock(\"span\", mergeProps(_ctx.$attrs, {\n \"aria-hidden\": $props.title ? null : \"true\",\n \"aria-label\": $props.title,\n class: \"material-design-icon open-in-new-icon\",\n role: \"img\",\n onClick: _cache[0] || (_cache[0] = ($event) => _ctx.$emit(\"click\", $event))\n }), [\n (openBlock(), createElementBlock(\"svg\", {\n fill: $props.fillColor,\n class: \"material-design-icon__svg\",\n width: $props.size,\n height: $props.size,\n viewBox: \"0 0 24 24\"\n }, [\n createElementVNode(\"path\", _hoisted_3$1, [\n $props.title ? (openBlock(), createElementBlock(\"title\", _hoisted_4$1, toDisplayString($props.title), 1)) : createCommentVNode(\"\", true)\n ])\n ], 8, _hoisted_2$2))\n ], 16, _hoisted_1$2);\n}\nconst OpenInNew = /* @__PURE__ */ _export_sfc(_sfc_main$2, [[\"render\", _sfc_render$2]]);\nregister(t42);\nconst teamResourceProviders = getCapabilities()?.circles?.teamResourceProviders ?? [];\nconst _sfc_main$1 = {\n name: \"NcTeamResources\",\n components: {\n AccountGroup,\n ChevronDown,\n ChevronUp,\n OpenInNew,\n NcButton,\n NcIconSvgWrapper\n },\n props: {\n /**\n * The provider ID to fetch resources for\n */\n providerId: {\n type: String,\n default: null\n },\n /**\n * The item ID to fetch resources for\n */\n itemId: {\n type: [String, Number],\n default: null\n }\n },\n data() {\n return {\n appEnabled: OC?.appswebroots?.circles !== void 0 && (OC.config.version.split(\".\")[0] ?? 0) >= 29,\n loading: false,\n teamResources: null,\n teamOpen: []\n };\n },\n computed: {\n isVisible() {\n return !this.loading && this.teamResources?.length > 0;\n },\n teamProviders() {\n return (teamId) => {\n const team = this.teamResources.find((t2) => t2.teamId === teamId);\n return team.resources?.reduce((acc, resource) => {\n if (resource.provider.id === this.providerId && resource.id === String(this.itemId)) {\n return acc;\n }\n if (!acc[resource.provider.id]) {\n acc[resource.provider.id] = resource.provider;\n acc[resource.provider.id].resources = [];\n }\n if (resource.provider.id === this.providerId && resource.id === String(this.itemId)) {\n return acc;\n }\n acc[resource.provider.id].resources.push(resource);\n return acc;\n }, {});\n };\n },\n open() {\n return (teamId) => {\n return this.teamOpen.indexOf(teamId) !== -1;\n };\n }\n },\n watch: {\n providerId() {\n this.fetchTeamResources();\n },\n itemId() {\n this.fetchTeamResources();\n }\n },\n created() {\n this.fetchTeamResources();\n },\n methods: {\n t,\n async fetchTeamResources() {\n if (!teamResourceProviders.includes(this.providerId)) {\n return;\n }\n try {\n this.loading = true;\n const response = await axios.get(generateOcsUrl(`/teams/resources/${this.providerId}/${this.itemId}`));\n this.teamResources = response.data.ocs.data.teams;\n this.teamOpen = [this.teamResources[0]?.teamId];\n } catch (error) {\n this.teamResources = null;\n logger.error(\"[NcTeamResources] Failed to fetch resources\", { error });\n } finally {\n this.loading = false;\n }\n },\n toggleOpen(teamId, open) {\n if (open) {\n this.teamOpen.push(teamId);\n } else {\n this.teamOpen.splice(this.teamOpen.indexOf(teamId), 1);\n }\n }\n }\n};\nconst _hoisted_1$1 = {\n key: 0,\n class: \"team-resources\"\n};\nconst _hoisted_2$1 = { class: \"team-resources__header\" };\nconst _hoisted_3 = [\"open\", \"onToggle\"];\nconst _hoisted_4 = { class: \"related-team__header\" };\nconst _hoisted_5 = { class: \"related-team__name\" };\nconst _hoisted_6 = { key: 0 };\nconst _hoisted_7 = [\"href\"];\nconst _hoisted_8 = {\n key: 0,\n class: \"resource__icon\"\n};\nconst _hoisted_9 = {\n key: 2,\n class: \"resource__icon\"\n};\nconst _hoisted_10 = [\"src\"];\nconst _hoisted_11 = { class: \"resource__name\" };\nfunction _sfc_render$1(_ctx, _cache, $props, $setup, $data, $options) {\n const _component_AccountGroup = resolveComponent(\"AccountGroup\");\n const _component_OpenInNew = resolveComponent(\"OpenInNew\");\n const _component_NcButton = resolveComponent(\"NcButton\");\n const _component_ChevronUp = resolveComponent(\"ChevronUp\");\n const _component_ChevronDown = resolveComponent(\"ChevronDown\");\n const _component_NcIconSvgWrapper = resolveComponent(\"NcIconSvgWrapper\");\n return $data.appEnabled && $options.isVisible ? (openBlock(), createElementBlock(\"div\", _hoisted_1$1, [\n createElementVNode(\"h5\", _hoisted_2$1, toDisplayString($options.t(\"Related team resources\")), 1),\n (openBlock(true), createElementBlock(Fragment, null, renderList($data.teamResources, (team) => {\n return openBlock(), createElementBlock(\"details\", {\n key: team.teamId,\n name: \"Team resources\",\n class: \"related-team\",\n open: $options.open(team.teamId),\n onToggle: (event) => $options.toggleOpen(team.teamId, event.target.open)\n }, [\n createElementVNode(\"summary\", _hoisted_4, [\n createElementVNode(\"h5\", _hoisted_5, [\n createVNode(_component_AccountGroup, { size: 20 }),\n createTextVNode(\" \" + toDisplayString(team.displayName), 1)\n ]),\n createVNode(_component_NcButton, {\n \"aria-label\": $options.t(\"View team\"),\n href: team.link,\n title: $options.t(\"View team\"),\n variant: \"tertiary\"\n }, {\n icon: withCtx(() => [\n createVNode(_component_OpenInNew, { size: 20 })\n ]),\n _: 1\n }, 8, [\"aria-label\", \"href\", \"title\"]),\n $options.open(team.teamId) ? (openBlock(), createBlock(_component_ChevronUp, {\n key: 0,\n size: 20\n })) : (openBlock(), createBlock(_component_ChevronDown, {\n key: 1,\n size: 20\n }))\n ]),\n createElementVNode(\"div\", null, [\n (openBlock(true), createElementBlock(Fragment, null, renderList($options.teamProviders(team.teamId), (provider) => {\n return openBlock(), createElementBlock(\"div\", {\n key: provider.id,\n class: \"related-team-provider\"\n }, [\n provider.resources.length > 0 ? (openBlock(), createElementBlock(\"h6\", _hoisted_6, toDisplayString(provider.name), 1)) : createCommentVNode(\"\", true),\n createElementVNode(\"ul\", null, [\n (openBlock(true), createElementBlock(Fragment, null, renderList(provider.resources, (resource) => {\n return openBlock(), createElementBlock(\"li\", {\n key: resource.url,\n class: \"related-team-resource\"\n }, [\n createElementVNode(\"a\", {\n href: resource.url,\n class: \"related-team-resource__link\"\n }, [\n resource.iconEmoji ? (openBlock(), createElementBlock(\"span\", _hoisted_8, toDisplayString(resource.iconEmoji), 1)) : resource.iconSvg ? (openBlock(), createBlock(_component_NcIconSvgWrapper, {\n key: 1,\n class: \"resource__icon\",\n svg: resource.iconSvg,\n size: 20\n }, null, 8, [\"svg\"])) : resource.iconURL ? (openBlock(), createElementBlock(\"span\", _hoisted_9, [\n createElementVNode(\"img\", {\n src: resource.iconURL,\n alt: \"\"\n }, null, 8, _hoisted_10)\n ])) : createCommentVNode(\"\", true),\n createElementVNode(\"span\", _hoisted_11, toDisplayString(resource.label), 1)\n ], 8, _hoisted_7)\n ]);\n }), 128))\n ])\n ]);\n }), 128))\n ])\n ], 40, _hoisted_3);\n }), 128))\n ])) : createCommentVNode(\"\", true);\n}\nconst NcTeamResources = /* @__PURE__ */ _export_sfc(_sfc_main$1, [[\"render\", _sfc_render$1], [\"__scopeId\", \"data-v-5bd48021\"]]);\nregister(t9);\nconst _sfc_main = {\n name: \"NcRelatedResourcesPanel\",\n components: {\n NcResource,\n NcTeamResources\n },\n /* eslint vue/require-prop-comment: warn -- TODO: Add a proper doc block about what this props do */\n props: {\n /**\n * The provider id implemented with `\\OCA\\RelatedResources\\IRelatedResourceProvider::getProviderId()`\n */\n providerId: {\n type: String,\n default: null\n },\n /**\n * The item id which uniquely identities the e.g. Calendar event, Deck board, file, Talk room, etc.\n */\n itemId: {\n type: [String, Number],\n default: null\n },\n /**\n * Limits to specific resource type. i.e. any provider id implemented with `\\OCA\\RelatedResources\\IRelatedResourceProvider::getProviderId()`\n */\n resourceType: {\n type: String,\n default: \"\"\n },\n /**\n * Set the maximum number of resources to load\n */\n limit: {\n type: Number,\n default: 0\n },\n /**\n * Only used by the files sidebar\n *\n * File info is passed when registered with `OCA.Sharing.ShareTabSections.registerSection()`\n */\n fileInfo: {\n type: Object,\n default: null\n },\n /**\n * The header text to show above the list of resources\n */\n header: {\n type: String,\n default: t(\"Related resources\")\n },\n /**\n * The description text to show below the header\n */\n description: {\n type: String,\n default: t(\"Anything shared with the same group of people will show up here\")\n },\n /**\n * If this element is used on a primary element set to true for primary styling.\n */\n primary: {\n type: Boolean,\n default: false\n }\n },\n emits: [\n \"hasError\",\n \"hasResources\"\n ],\n data() {\n return {\n appEnabled: OC?.appswebroots?.related_resources !== void 0,\n loading: false,\n error: null,\n resources: []\n };\n },\n computed: {\n isVisible() {\n if (this.loading) {\n return false;\n }\n return this.error ?? this.resources.length > 0;\n },\n subline() {\n if (this.error) {\n return t(\"Error getting related resources. Please contact your system administrator if you have any questions.\");\n }\n return this.description;\n },\n hasResourceInfo() {\n if (this.providerId !== null && this.itemId !== null) {\n return true;\n }\n if (this.fileInfo !== null) {\n return true;\n }\n return false;\n },\n isFiles() {\n return this.fileInfo?.id !== void 0;\n },\n url() {\n let providerId;\n let itemId;\n if (this.isFiles) {\n providerId = \"files\";\n itemId = this.fileInfo.id;\n } else {\n providerId = this.providerId;\n itemId = this.itemId;\n }\n return generateOcsUrl(\"/apps/related_resources/related/{providerId}?itemId={itemId}&resourceType={resourceType}&limit={limit}&format=json\", {\n providerId,\n itemId,\n resourceType: this.resourceType,\n limit: this.limit\n });\n }\n },\n watch: {\n providerId() {\n this.fetchRelatedResources();\n },\n itemId() {\n this.fetchRelatedResources();\n },\n fileInfo() {\n this.fetchRelatedResources();\n },\n error(error) {\n this.$emit(\"hasError\", Boolean(error));\n },\n resources(resources) {\n this.$emit(\"hasResources\", resources.length > 0);\n }\n },\n created() {\n this.fetchRelatedResources();\n },\n methods: {\n t,\n async fetchRelatedResources() {\n if (!this.appEnabled || !this.hasResourceInfo) {\n return;\n }\n this.loading = true;\n this.error = null;\n this.resources = [];\n try {\n const response = await axios.get(this.url);\n this.resources = response.data.ocs?.data;\n } catch (error) {\n this.error = error;\n logger.error(\"[NcRelatedResourcesPanel] Failed to fetch resources\", { error });\n } finally {\n this.loading = false;\n }\n }\n }\n};\nconst _hoisted_1 = {\n key: 0,\n class: \"related-resources\"\n};\nconst _hoisted_2 = { class: \"related-resources__header\" };\nfunction _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {\n const _component_NcTeamResources = resolveComponent(\"NcTeamResources\");\n const _component_NcResource = resolveComponent(\"NcResource\");\n return openBlock(), createElementBlock(\"div\", null, [\n createVNode(_component_NcTeamResources, {\n providerId: $props.providerId,\n itemId: $props.itemId\n }, null, 8, [\"providerId\", \"itemId\"]),\n $data.appEnabled && $options.isVisible ? (openBlock(), createElementBlock(\"div\", _hoisted_1, [\n createElementVNode(\"div\", _hoisted_2, [\n createElementVNode(\"h5\", null, toDisplayString($props.header), 1),\n createElementVNode(\"p\", null, toDisplayString($options.subline), 1)\n ]),\n (openBlock(true), createElementBlock(Fragment, null, renderList($data.resources, (resource) => {\n return openBlock(), createBlock(_component_NcResource, {\n key: resource.itemId,\n class: \"related-resources__entry\",\n icon: resource.icon,\n name: resource.title,\n url: resource.url\n }, null, 8, [\"icon\", \"name\", \"url\"]);\n }), 128))\n ])) : createCommentVNode(\"\", true)\n ]);\n}\nconst NcRelatedResourcesPanel = /* @__PURE__ */ _export_sfc(_sfc_main, [[\"render\", _sfc_render], [\"__scopeId\", \"data-v-514f51d3\"]]);\nexport {\n NcRelatedResourcesPanel as N\n};\n//# sourceMappingURL=NcRelatedResourcesPanel-D_Ttpg5_.mjs.map\n","import '../assets/NcSelectUsers-YF5729PJ.css';\nimport { defineComponent, useModel, ref, watch, openBlock, createBlock, unref, mergeProps, withCtx, createVNode, mergeModels } from \"vue\";\nimport { N as NcListItemIcon } from \"./NcListItemIcon-Dl_tfkk9.mjs\";\nimport { N as NcSelect } from \"./NcSelect--kERLlBK.mjs\";\nimport { _ as _export_sfc } from \"./_plugin-vue_export-helper-1tPrXgE0.mjs\";\nconst _sfc_main = /* @__PURE__ */ defineComponent({\n __name: \"NcSelectUsers\",\n props: /* @__PURE__ */ mergeModels({\n ariaLabelClearSelected: {},\n ariaLabelListbox: {},\n ariaLabelDeselectOption: { type: Function },\n disabled: { type: Boolean },\n inputId: {},\n inputLabel: {},\n labelOutside: { type: Boolean },\n keepOpen: { type: Boolean },\n loading: { type: Boolean },\n multiple: { type: Boolean },\n noWrap: { type: Boolean },\n options: {},\n placeholder: {},\n required: { type: Boolean }\n }, {\n \"modelValue\": {},\n \"modelModifiers\": {}\n }),\n emits: /* @__PURE__ */ mergeModels([\"search\"], [\"update:modelValue\"]),\n setup(__props, { emit: __emit }) {\n const modelValue = useModel(__props, \"modelValue\");\n const emit = __emit;\n const search = ref(\"\");\n watch(search, () => emit(\"search\", search.value));\n const clickableArea = Number.parseInt(window.getComputedStyle(document.body).getPropertyValue(\"--default-clickable-area\"));\n const gridBaseLine = Number.parseInt(window.getComputedStyle(document.body).getPropertyValue(\"--default-grid-baseline\"));\n const avatarSize = clickableArea - 2 * gridBaseLine;\n function filterBy(option, label, search2) {\n const EMAIL_NOTATION = /[^<]*<([^>]+)/;\n const match = search2.match(EMAIL_NOTATION);\n const subname = option.subname?.toLocaleLowerCase() ?? \"\";\n return match && subname.indexOf(match[1].toLocaleLowerCase()) > -1 || `${label} ${option.subname}`.toLocaleLowerCase().indexOf(search2.toLocaleLowerCase()) > -1;\n }\n return (_ctx, _cache) => {\n return openBlock(), createBlock(unref(NcSelect), mergeProps({\n modelValue: modelValue.value,\n \"onUpdate:modelValue\": _cache[0] || (_cache[0] = ($event) => modelValue.value = $event),\n class: \"nc-select-users\"\n }, _ctx.$props, {\n filterBy,\n label: \"displayName\",\n onSearch: _cache[1] || (_cache[1] = ($event) => search.value = $event)\n }), {\n option: withCtx((option) => [\n createVNode(unref(NcListItemIcon), mergeProps(option, {\n avatarSize: 32,\n name: option.displayName,\n search: search.value\n }), null, 16, [\"name\", \"search\"])\n ]),\n \"selected-option\": withCtx((selectedOption) => [\n createVNode(unref(NcListItemIcon), mergeProps(selectedOption, {\n avatarSize,\n name: selectedOption.displayName,\n noMargin: \"\",\n search: search.value\n }), null, 16, [\"name\", \"search\"])\n ]),\n _: 1\n }, 16, [\"modelValue\"]);\n };\n }\n});\nconst NcSelectUsers = /* @__PURE__ */ _export_sfc(_sfc_main, [[\"__scopeId\", \"data-v-e8e18fd3\"]]);\nexport {\n NcSelectUsers as N\n};\n//# sourceMappingURL=NcSelectUsers-K14Bepkq.mjs.map\n","import '../assets/NcSettingsSelectGroup-D_fSrafm.css';\nimport axios from \"@nextcloud/axios\";\nimport { generateOcsUrl } from \"@nextcloud/router\";\nimport debounce from \"debounce\";\nimport { N as NcSelect } from \"./NcSelect--kERLlBK.mjs\";\nimport { r as register, i as t50, a as t } from \"./_l10n-wdIzZwir.mjs\";\nimport { c as createElementId } from \"./createElementId-DhjFt1I9.mjs\";\nimport { resolveComponent, openBlock, createElementBlock, toDisplayString, createCommentVNode, createVNode, withDirectives, createElementVNode, vShow } from \"vue\";\nimport { _ as _export_sfc } from \"./_plugin-vue_export-helper-1tPrXgE0.mjs\";\nregister(t50);\nconst _sfc_main = {\n name: \"NcSettingsSelectGroup\",\n components: {\n NcSelect\n },\n props: {\n /**\n * The text of the label element of the select group input\n */\n label: {\n type: String,\n required: true\n },\n /**\n * Placeholder for the input element\n * For backwards compatibility it falls back to the `label` value\n */\n placeholder: {\n type: String,\n default: \"\"\n },\n /**\n * id attribute of the select group element\n */\n id: {\n type: String,\n default: () => \"action-\" + createElementId(),\n validator: (id) => id.trim() !== \"\"\n },\n /**\n * value of the select group input\n * A list of group IDs can be provided\n */\n modelValue: {\n type: Array,\n default: () => []\n },\n /**\n * disabled state of the settings select group input\n */\n disabled: {\n type: Boolean,\n default: false\n }\n },\n emits: [\n \"error\",\n \"input\",\n \"update:modelValue\"\n ],\n data() {\n return {\n /** Temporary store to cache groups */\n groups: {},\n randId: createElementId(),\n errorMessage: \"\"\n };\n },\n computed: {\n /**\n * If the error message should be shown\n */\n hasError() {\n return this.errorMessage !== \"\";\n },\n /**\n * Validate input value and only return valid strings (group IDs)\n *\n * @return {string[]}\n */\n filteredValue() {\n return this.modelValue.filter((group) => group !== \"\" && typeof group === \"string\");\n },\n /**\n * value property converted to an array of group objects used as input for the NcSelect\n */\n inputValue() {\n return this.filteredValue.map((id) => {\n if (typeof this.groups[id] === \"undefined\") {\n return {\n id,\n displayname: id\n };\n }\n return this.groups[id];\n });\n },\n /**\n * Convert groups object to array of groups required for NcSelect.options\n * Filter out currently selected values\n *\n * @return {object[]}\n */\n groupsArray() {\n return Object.values(this.groups).filter((g) => !this.modelValue.includes(g.id));\n }\n },\n watch: {\n /**\n * If the value is changed, check that all groups are loaded so we show the correct display name\n */\n modelValue: {\n handler() {\n const loadedGroupIds = Object.keys(this.groups);\n const missing = this.filteredValue.filter((group) => !loadedGroupIds.includes(group));\n missing.forEach((groupId) => {\n this.loadGroup(groupId);\n });\n },\n // Run the watch handler also when the component is initially mounted\n immediate: true\n }\n },\n /**\n * Load groups matching the empty query to reduce API calls\n */\n async mounted() {\n const storageName = `${appName}:${appVersion}/initialGroups`;\n let savedGroups = window.sessionStorage.getItem(storageName);\n if (savedGroups) {\n savedGroups = Object.fromEntries(JSON.parse(savedGroups).map((group) => [group.id, group]));\n this.groups = { ...this.groups, ...savedGroups };\n } else {\n await this.loadGroup(\"\");\n window.sessionStorage.setItem(storageName, JSON.stringify(Object.values(this.groups)));\n }\n },\n methods: {\n t,\n /**\n * Called when a new group is selected or previous group is deselected to emit the update event\n *\n * @param {object[]} updatedValue Array of selected groups\n */\n update(updatedValue) {\n const value = updatedValue.map((element) => element.id);\n this.$emit(\"update:modelValue\", value);\n },\n /**\n * Use provisioning API to search for given group and save it in the groups object\n *\n * @param {string} query The query like parts of the id oder display name\n * @return {boolean}\n */\n async loadGroup(query) {\n try {\n query = typeof query === \"string\" ? encodeURI(query) : \"\";\n const response = await axios.get(generateOcsUrl(`cloud/groups/details?search=${query}&limit=10`, 2));\n if (this.errorMessage !== \"\") {\n window.setTimeout(() => {\n this.errorMessage = \"\";\n }, 5e3);\n }\n if (Object.keys(response.data.ocs.data.groups).length > 0) {\n const newGroups = Object.fromEntries(response.data.ocs.data.groups.map((element) => [element.id, element]));\n this.groups = { ...this.groups, ...newGroups };\n return true;\n }\n } catch (error) {\n this.$emit(\"error\", error);\n this.errorMessage = t(\"Unable to search the group\");\n }\n return false;\n },\n /**\n * Custom filter function for `NcSelect` to filter by ID *and* display name\n *\n * @param {object} option One of the groups\n * @param {string} label The label property of the group\n * @param {string} search The current search string\n */\n filterGroups(option, label, search) {\n return `${label || \"\"} ${option.id}`.toLocaleLowerCase().indexOf(search.toLocaleLowerCase()) > -1;\n },\n /**\n * Debounce the group search (reduce API calls)\n */\n onSearch: debounce(function(query) {\n this.loadGroup(query);\n }, 200)\n }\n};\nconst _hoisted_1 = [\"for\"];\nfunction _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {\n const _component_NcSelect = resolveComponent(\"NcSelect\");\n return openBlock(), createElementBlock(\"div\", null, [\n $props.label ? (openBlock(), createElementBlock(\"label\", {\n key: 0,\n for: $props.id,\n class: \"hidden-visually\"\n }, toDisplayString($props.label), 9, _hoisted_1)) : createCommentVNode(\"\", true),\n createVNode(_component_NcSelect, {\n modelValue: $options.inputValue,\n options: $options.groupsArray,\n placeholder: $props.placeholder || $props.label,\n filterBy: $options.filterGroups,\n inputId: $props.id,\n limit: 5,\n label: \"displayname\",\n multiple: true,\n closeOnSelect: false,\n disabled: $props.disabled,\n \"onUpdate:modelValue\": $options.update,\n onSearch: $options.onSearch\n }, null, 8, [\"modelValue\", \"options\", \"placeholder\", \"filterBy\", \"inputId\", \"disabled\", \"onUpdate:modelValue\", \"onSearch\"]),\n withDirectives(createElementVNode(\"div\", { class: \"select-group-error\" }, toDisplayString($data.errorMessage), 513), [\n [vShow, $options.hasError]\n ])\n ]);\n}\nconst NcSettingsSelectGroup = /* @__PURE__ */ _export_sfc(_sfc_main, [[\"render\", _sfc_render], [\"__scopeId\", \"data-v-f2b71592\"]]);\nexport {\n NcSettingsSelectGroup as N\n};\n//# sourceMappingURL=NcSettingsSelectGroup-SYJ8-XlR.mjs.map\n","import '../assets/NcTextArea-BxGe3Lqn.css';\nimport { defineComponent, useModel, useAttrs, useTemplateRef, computed, watch, openBlock, createElementBlock, normalizeClass, unref, createElementVNode, mergeProps, toDisplayString, createCommentVNode, createBlock, createTextVNode, mergeModels } from \"vue\";\nimport { d as mdiCheck, j as mdiAlertCircleOutline } from \"./mdi-CpchYUUV.mjs\";\nimport { N as NcIconSvgWrapper } from \"./NcIconSvgWrapper-g8ubWhoz.mjs\";\nimport { c as createElementId } from \"./createElementId-DhjFt1I9.mjs\";\nimport { a as isLegacy } from \"./legacy-BoqDmOCa.mjs\";\nimport { l as logger } from \"./logger-D3RVzcfQ.mjs\";\nimport { _ as _export_sfc } from \"./_plugin-vue_export-helper-1tPrXgE0.mjs\";\nconst _hoisted_1 = { class: \"textarea__main-wrapper\" };\nconst _hoisted_2 = [\"id\", \"aria-describedby\", \"disabled\", \"placeholder\", \"value\"];\nconst _hoisted_3 = [\"for\"];\nconst _hoisted_4 = [\"id\"];\nconst _sfc_main = /* @__PURE__ */ defineComponent({\n ...{ inheritAttrs: false },\n __name: \"NcTextArea\",\n props: /* @__PURE__ */ mergeModels({\n disabled: { type: Boolean },\n error: { type: Boolean },\n helperText: { default: void 0 },\n id: { default: () => createElementId() },\n inputClass: { default: \"\" },\n label: { default: void 0 },\n labelOutside: { type: Boolean },\n placeholder: { default: void 0 },\n resize: { default: \"both\" },\n success: { type: Boolean }\n }, {\n \"modelValue\": { required: true },\n \"modelModifiers\": {}\n }),\n emits: [\"update:modelValue\"],\n setup(__props, { expose: __expose }) {\n const modelValue = useModel(__props, \"modelValue\");\n const props = __props;\n __expose({\n focus,\n select\n });\n const attrs = useAttrs();\n const textAreaElement = useTemplateRef(\"input\");\n const internalPlaceholder = computed(() => props.placeholder || (isLegacy ? props.label : void 0));\n watch(() => props.labelOutside, () => {\n if (!props.labelOutside && !props.label) {\n logger.warn(\"[NcTextArea] You need to add a label to the NcInputField component. Either use the prop label or use an external one, as per the example in the documentation.\");\n }\n });\n const ariaDescribedby = computed(() => {\n const ariaDescribedby2 = [];\n if (props.helperText) {\n ariaDescribedby2.push(`${props.id}-helper-text`);\n }\n if (typeof attrs[\"aria-describedby\"] === \"string\") {\n ariaDescribedby2.push(attrs[\"aria-describedby\"]);\n }\n return ariaDescribedby2.join(\" \") || void 0;\n });\n function handleInput(event) {\n const { value } = event.target;\n modelValue.value = value;\n }\n function focus(options) {\n textAreaElement.value.focus(options);\n }\n function select() {\n textAreaElement.value.select();\n }\n return (_ctx, _cache) => {\n return openBlock(), createElementBlock(\"div\", {\n class: normalizeClass([\"textarea\", [\n _ctx.$attrs.class,\n {\n \"textarea--disabled\": __props.disabled,\n \"textarea--legacy\": unref(isLegacy)\n }\n ]])\n }, [\n createElementVNode(\"div\", _hoisted_1, [\n createElementVNode(\"textarea\", mergeProps({ ..._ctx.$attrs, class: void 0 }, {\n id: __props.id,\n ref: \"input\",\n \"aria-describedby\": ariaDescribedby.value,\n \"aria-live\": \"polite\",\n class: [\"textarea__input\", [\n __props.inputClass,\n {\n \"textarea__input--label-outside\": __props.labelOutside,\n \"textarea__input--legacy\": unref(isLegacy),\n \"textarea__input--success\": __props.success,\n \"textarea__input--error\": __props.error\n }\n ]],\n disabled: __props.disabled,\n placeholder: internalPlaceholder.value,\n style: { resize: __props.resize },\n value: modelValue.value,\n onInput: handleInput\n }), null, 16, _hoisted_2),\n !__props.labelOutside ? (openBlock(), createElementBlock(\"label\", {\n key: 0,\n class: \"textarea__label\",\n for: __props.id\n }, toDisplayString(__props.label), 9, _hoisted_3)) : createCommentVNode(\"\", true)\n ]),\n __props.helperText ? (openBlock(), createElementBlock(\"p\", {\n key: 0,\n id: `${__props.id}-helper-text`,\n class: normalizeClass([\"textarea__helper-text-message\", {\n \"textarea__helper-text-message--error\": __props.error,\n \"textarea__helper-text-message--success\": __props.success\n }])\n }, [\n __props.success ? (openBlock(), createBlock(NcIconSvgWrapper, {\n key: 0,\n class: \"textarea__helper-text-message__icon\",\n path: unref(mdiCheck),\n inline: \"\"\n }, null, 8, [\"path\"])) : __props.error ? (openBlock(), createBlock(NcIconSvgWrapper, {\n key: 1,\n class: \"textarea__helper-text-message__icon\",\n path: unref(mdiAlertCircleOutline),\n inline: \"\"\n }, null, 8, [\"path\"])) : createCommentVNode(\"\", true),\n createTextVNode(\" \" + toDisplayString(__props.helperText), 1)\n ], 10, _hoisted_4)) : createCommentVNode(\"\", true)\n ], 2);\n };\n }\n});\nconst NcTextArea = /* @__PURE__ */ _export_sfc(_sfc_main, [[\"__scopeId\", \"data-v-d327fb49\"]]);\nexport {\n NcTextArea as N\n};\n//# sourceMappingURL=NcTextArea-Dxzj4zdb.mjs.map\n"],"names":["register","_sfc_main","defineComponent","NC_ACTIONS_IS_SEMANTIC_MENU","createElementId","t","_hoisted_1","_hoisted_2","_hoisted_3","_sfc_render","_ctx","_cache","$props","$setup","$data","$options","openBlock","createElementBlock","toDisplayString","createCommentVNode","createElementVNode","renderSlot","NcActionButtonGroup","_export_sfc","NcAppNavigationList","t20","_hoisted_1$1","_sfc_main$1","__props","open","useModel","title","computed","createVNode","unref","NcButton","$event","withCtx","NcIconSvgWrapper","mdiMenuOpen","mdiMenu","NcAppNavigationToggle","props","focusTrap","setHasAppNavigation","inject","HAS_APP_NAVIGATION_KEY","warn","appNavigationContainerElement","useTemplateRef","isMobile","useIsMobile","ref","shouldActivateFocusTrap","watchEffect","watch","toggleFocusTrap","onMounted","subscribe","toggleNavigationByEventBus","emit","createFocusTrap","toggleNavigation","getTrapStack","onUnmounted","unsubscribe","state","bodyStyles","animationLength","open2","handleEsc","normalizeClass","isLegacy34","withKeys","createBlock","NcAppNavigation","NcActions","_hoisted_4","mergeProps","ChevronUp","IconArrowRight","t14","IconClose","newValue","_component_IconArrowRight","resolveComponent","_component_NcButton","_component_IconClose","withModifiers","args","withDirectives","vModelText","NcInputConfirmCancel","_sfc_main$3","_hoisted_1$2","_hoisted_2$2","_hoisted_3$2","_hoisted_4$2","_sfc_render$3","Pencil","_sfc_main$2","_hoisted_2$1","_hoisted_3$1","_hoisted_4$1","_sfc_render$2","Undo","t21","ChevronDown","_sfc_render$1","_component_ChevronUp","_component_ChevronDown","NcAppNavigationIconCollapsible","t23","t51","NcActionButton","NcLoadingIcon","_sfc_main$4","id","newVal","event","navigate","routerLinkHref","href","_hoisted_5","_hoisted_6","_hoisted_7","_component_NcLoadingIcon","_component_NcInputConfirmCancel","_component_Pencil","_component_NcActionButton","_component_Undo","_component_NcActions","_component_NcAppNavigationIconCollapsible","resolveDynamicComponent","normalizeProps","guardReactiveProps","isActive","createTextVNode","NcAppNavigationItem","t16","t44","mergeModels","model","slots","useSlots","inputElement","inputHasFocus","useFocusWithin","transitionTimeout","actionsContainerElement","hasActions","showActions","timeoutId","hideActions","onCloseSearch","nextTick","NcInputField","NcAppNavigationSearch","t47","t48","t31","directive","el","encodedTlds","encodedUtlds","numeric","ascii","alpha","asciinumeric","alphanumeric","domain","emoji","scheme","slashscheme","whitespace","registerGroup","name","groups","addToGroups","flags","k","group","flagsForToken","result","c","State","token","input","nextState","i","regex","exactOnly","inputs","next","regexp","len","templateState","allFlags","ta","tr","ts","tt","WORD","UWORD","ASCIINUMERICAL","ALPHANUMERICAL","LOCALHOST","TLD","UTLD","SCHEME","SLASH_SCHEME","NUM","WS","NL","OPENBRACE","CLOSEBRACE","OPENBRACKET","CLOSEBRACKET","OPENPAREN","CLOSEPAREN","OPENANGLEBRACKET","CLOSEANGLEBRACKET","FULLWIDTHLEFTPAREN","FULLWIDTHRIGHTPAREN","LEFTCORNERBRACKET","RIGHTCORNERBRACKET","LEFTWHITECORNERBRACKET","RIGHTWHITECORNERBRACKET","FULLWIDTHLESSTHAN","FULLWIDTHGREATERTHAN","AMPERSAND","APOSTROPHE","ASTERISK","AT","BACKSLASH","BACKTICK","CARET","COLON","COMMA","DOLLAR","DOT","EQUALS","EXCLAMATION","HYPHEN","PERCENT","PIPE","PLUS","POUND","QUERY","QUOTE","FULLWIDTHMIDDLEDOT","SEMI","SLASH","TILDE","UNDERSCORE","EMOJI$1","SYM","tk","ASCII_LETTER","LETTER","EMOJI","DIGIT","SPACE","CR","LF","EMOJI_VARIATION","EMOJI_JOINER","OBJECT_REPLACEMENT","tlds","utlds","init$2","customSchemes","Start","decodeTlds","Num","Asciinumeric","Alphanumeric","Word","UWord","Nl","Cr","Ws","Emoji","EmojiJoiner","wordjr","uwordjr","fastts","a","b","sch","run$1","start","str","iterable","stringToArray","charCount","tokens","cursor","charCursor","tokenLength","latestAccepting","sinceAccepts","charsSinceAccepts","index","first","second","char","defaultt","jr","encoded","words","stack","digits","popDigitCount","popCount","defaults","noop","Options","opts","defaultRender","o","ignoredTags","uppercaseIgnoredTags","ir","key","operator","isCallable","option","obj","val","MultiToken","value","options","truncate","formatted","protocol","formattedHref","tagName","content","attributes","className","target","rel","attrs","eventListeners","createTokenClass","type","Token","p","Email","Text","Url","makeState","arg","init$1","qsAccepting","qsNonAccepting","localpartAccepting","Localpart","Domain","Scheme","SlashScheme","LocalpartAt","LocalpartDot","EmailDomain","EmailDomainDot","Email$1","EmailDomainHyphen","DomainHyphen","DomainDot","DomainDotTld","DomainDotTldColon","DomainDotTldColonPort","Url$1","UrlNonaccept","SchemeColon","SlashSchemeColon","SlashSchemeColonSlash","UriPrefix","bracketPairs","OPEN","CLOSE","UrlOpen","UrlOpenQ","UrlOpenSyms","run","multis","textTokens","secondState","multiLength","initMultiToken","Multi","subtokens","startIdx","endIdx","INIT","init","tokenize","linkifyString","escapeHTML","escapeAttr","attributesToString","attr","headerRef","_sfc_main$5","_hoisted_1$5","_hoisted_2$3","_hoisted_3$3","_hoisted_4$3","_sfc_render$4","IconDockRight","_hoisted_1$4","IconStar","_hoisted_1$3","IconStarOutline","selected","_sfc_main$6","sidebarTabsButton","sidebarTabsButton_legacy","sidebarTabsButton_selected","sidebarTabsButton__name","sidebarTabsButton__icon","sidebarTabsButton__legacyIcon","style0","cssModules","NcAppSidebarTabsButton","tab","active","getCanonicalLocale","tabIndex","_component_NcAppSidebarTabsButton","Fragment","renderList","NcAppSidebarTabs","t15","_sfc_main$7","NcEmptyContent","vOnClickOutside","CONTENT_SELECTOR_KEY","provide","useIsSmallMobile","isSlotPopulated","menu","menuTrigger","element","logger","activeTab","_hoisted_8","_component_IconDockRight","_component_IconStar","_component_IconStarOutline","_component_NcAppSidebarHeader","_component_NcAppSidebarTabs","_component_NcEmptyContent","_directive_focus","resolveDirective","_directive_click_outside","Transition","Teleport","normalizeStyle","vShow","NcAppSidebar","PQueue","t28","t6","t35","gtBuilder","getGettextBuilder","gt","t7","margin","defaultSize","NcAvatar","userStatus","margin2","EMAIL_NOTATION","match","_component_NcAvatar","_component_NcHighlight","_component_NcIconSvgWrapper","NcListItemIcon","t38","t42","getCapabilities","t9","__emit","modelValue","search","clickableArea","gridBaseLine","avatarSize","filterBy","label","search2","subname","NcSelect","selectedOption","NcSelectUsers","t50","debounce","query","__expose","focus","select","useAttrs","textAreaElement","internalPlaceholder","isLegacy","ariaDescribedby","ariaDescribedby2","handleInput","mdiCheck","mdiAlertCircleOutline","NcTextArea"],"mappings":"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","x_google_ignoreList":[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28]} \ No newline at end of file +{"version":3,"file":"NcTextArea-Dxzj4zdb-DLw_yRcD.chunk.mjs","sources":["../node_modules/@nextcloud/vue/dist/chunks/NcActionButtonGroup-Dd03Oluy.mjs","../node_modules/@nextcloud/vue/dist/chunks/NcAppNavigationList-CGSWabRB.mjs","../node_modules/@nextcloud/vue/dist/chunks/NcAppNavigation-g57j16pB.mjs","../node_modules/@nextcloud/vue/dist/chunks/NcAppNavigationCaption-VjSWJ8R4.mjs","../node_modules/@nextcloud/vue/dist/chunks/ChevronUp-ChH8oB7p.mjs","../node_modules/@nextcloud/vue/dist/chunks/ArrowRight-B1ncAhus.mjs","../node_modules/@nextcloud/vue/dist/chunks/NcInputConfirmCancel-CGTllrXj.mjs","../node_modules/@nextcloud/vue/dist/chunks/NcAppNavigationItem-CDeYtA3E.mjs","../node_modules/@nextcloud/vue/dist/chunks/NcAppNavigationSearch-CQQWb1Eq.mjs","../node_modules/@nextcloud/vue/dist/chunks/NcAppNavigationSettings-DoMjRExO.mjs","../node_modules/@nextcloud/vue/dist/chunks/NcAppSettingsDialog-BPcEYLjP.mjs","../node_modules/@nextcloud/vue/dist/chunks/NcAppSettingsShortcutsSection-DLwubKV9.mjs","../node_modules/@nextcloud/vue/dist/directives/Focus/index.mjs","../node_modules/linkifyjs/dist/linkify.mjs","../node_modules/@nextcloud/vue/dist/directives/Linkify/index.mjs","../node_modules/@nextcloud/vue/dist/chunks/NcAppSidebarHeader.vue_vue_type_script_setup_true_lang-C-QhdyiN.mjs","../node_modules/@nextcloud/vue/dist/chunks/NcAppSidebar-C8YzAzrZ.mjs","../node_modules/@nextcloud/vue/dist/functions/preloadImage/index.mjs","../node_modules/@nextcloud/vue/dist/chunks/NcCollectionList-B9qCtjJw.mjs","../node_modules/@nextcloud/vue/dist/chunks/NcDashboardWidget-zmbDEGL-.mjs","../node_modules/@nextcloud/vue/dist/chunks/NcFilePicker-bD2toutn.mjs","../node_modules/@nextcloud/vue/dist/chunks/NcKbd-Bh_Tk6Ar.mjs","../node_modules/@nextcloud/vue/dist/chunks/NcHotkeyList-B4WjTLAp.mjs","../node_modules/@nextcloud/vue/dist/chunks/NcListItemIcon-Dl_tfkk9.mjs","../node_modules/@nextcloud/vue/dist/chunks/NcProgressBar-C-ane-Ni.mjs","../node_modules/@nextcloud/vue/dist/chunks/NcRelatedResourcesPanel-D_Ttpg5_.mjs","../node_modules/@nextcloud/vue/dist/chunks/NcSelectUsers-K14Bepkq.mjs","../node_modules/@nextcloud/vue/dist/chunks/NcSettingsSelectGroup-SYJ8-XlR.mjs","../node_modules/@nextcloud/vue/dist/chunks/NcTextArea-Dxzj4zdb.mjs"],"sourcesContent":["import '../assets/NcActionButtonGroup-Bt8kRk79.css';\nimport { defineComponent, openBlock, createElementBlock, toDisplayString, createCommentVNode, createElementVNode, renderSlot } from \"vue\";\nimport { r as register, a as t } from \"./_l10n-wdIzZwir.mjs\";\nimport { c as createElementId } from \"./createElementId-DhjFt1I9.mjs\";\nimport { a as NC_ACTIONS_IS_SEMANTIC_MENU } from \"./useNcActions-BzPO2c4h.mjs\";\nimport { _ as _export_sfc } from \"./_plugin-vue_export-helper-1tPrXgE0.mjs\";\nregister();\nconst _sfc_main = defineComponent({\n name: \"NcActionButtonGroup\",\n inject: {\n isInSemanticMenu: {\n from: NC_ACTIONS_IS_SEMANTIC_MENU,\n default: false\n }\n },\n props: {\n /**\n * Optional text shown below the button group\n */\n name: {\n required: false,\n default: void 0,\n type: String\n }\n },\n setup() {\n return {\n labelId: createElementId()\n };\n },\n methods: {\n t\n }\n});\nconst _hoisted_1 = [\"role\"];\nconst _hoisted_2 = [\"id\"];\nconst _hoisted_3 = [\"aria-labelledby\"];\nfunction _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {\n return openBlock(), createElementBlock(\"li\", {\n class: \"nc-button-group-base\",\n role: _ctx.isInSemanticMenu && \"presentation\"\n }, [\n _ctx.name ? (openBlock(), createElementBlock(\"div\", {\n key: 0,\n id: _ctx.labelId\n }, toDisplayString(_ctx.name), 9, _hoisted_2)) : createCommentVNode(\"\", true),\n createElementVNode(\"ul\", {\n class: \"nc-button-group-content\",\n role: \"group\",\n \"aria-labelledby\": _ctx.name ? _ctx.labelId : void 0\n }, [\n renderSlot(_ctx.$slots, \"default\")\n ], 8, _hoisted_3)\n ], 8, _hoisted_1);\n}\nconst NcActionButtonGroup = /* @__PURE__ */ _export_sfc(_sfc_main, [[\"render\", _sfc_render], [\"__scopeId\", \"data-v-6a2b8de0\"]]);\nexport {\n NcActionButtonGroup as N\n};\n//# sourceMappingURL=NcActionButtonGroup-Dd03Oluy.mjs.map\n","import '../assets/NcAppNavigationList--36j6Acm.css';\nimport { openBlock, createElementBlock, renderSlot } from \"vue\";\nimport { _ as _export_sfc } from \"./_plugin-vue_export-helper-1tPrXgE0.mjs\";\nconst _sfc_main = {\n name: \"NcAppNavigationList\"\n};\nconst _hoisted_1 = { class: \"app-navigation-list\" };\nfunction _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {\n return openBlock(), createElementBlock(\"ul\", _hoisted_1, [\n renderSlot(_ctx.$slots, \"default\", {}, void 0, true)\n ]);\n}\nconst NcAppNavigationList = /* @__PURE__ */ _export_sfc(_sfc_main, [[\"render\", _sfc_render], [\"__scopeId\", \"data-v-d72957ed\"]]);\nexport {\n NcAppNavigationList as N\n};\n//# sourceMappingURL=NcAppNavigationList-CGSWabRB.mjs.map\n","import '../assets/NcAppNavigation-OHw55TTZ.css';\nimport { defineComponent, useModel, computed, openBlock, createElementBlock, createVNode, unref, withCtx, inject, warn, useTemplateRef, ref, watchEffect, watch, onMounted, onUnmounted, normalizeClass, createElementVNode, withKeys, renderSlot, createBlock, createCommentVNode } from \"vue\";\nimport { subscribe, emit, unsubscribe } from \"@nextcloud/event-bus\";\nimport { createFocusTrap } from \"focus-trap\";\nimport { N as NcAppNavigationList } from \"./NcAppNavigationList-CGSWabRB.mjs\";\nimport { G as mdiMenuOpen, H as mdiMenu } from \"./mdi-CpchYUUV.mjs\";\nimport { N as NcIconSvgWrapper } from \"./NcIconSvgWrapper-g8ubWhoz.mjs\";\nimport { r as register, P as t20, a as t } from \"./_l10n-wdIzZwir.mjs\";\nimport { N as NcButton } from \"./NcButton-jvoYS2my.mjs\";\nimport { _ as _export_sfc } from \"./_plugin-vue_export-helper-1tPrXgE0.mjs\";\nimport { useIsMobile } from \"../composables/useIsMobile/index.mjs\";\nimport { g as getTrapStack } from \"./focusTrap-HJQ4pqHV.mjs\";\nimport { i as isLegacy34 } from \"./legacy-BoqDmOCa.mjs\";\nimport { H as HAS_APP_NAVIGATION_KEY } from \"./constants-Ciwvl5xb.mjs\";\nregister(t20);\nconst _hoisted_1$1 = { class: \"app-navigation-toggle-wrapper\" };\nconst _sfc_main$1 = /* @__PURE__ */ defineComponent({\n __name: \"NcAppNavigationToggle\",\n props: {\n \"open\": { type: Boolean, ...{ required: true } },\n \"openModifiers\": {}\n },\n emits: [\"update:open\"],\n setup(__props) {\n const open = useModel(__props, \"open\");\n const title = computed(() => open.value ? t(\"Close navigation\") : t(\"Open navigation\"));\n return (_ctx, _cache) => {\n return openBlock(), createElementBlock(\"div\", _hoisted_1$1, [\n createVNode(unref(NcButton), {\n class: \"app-navigation-toggle\",\n \"aria-controls\": \"app-navigation-vue\",\n \"aria-expanded\": open.value ? \"true\" : \"false\",\n \"aria-label\": title.value,\n title: title.value,\n variant: \"tertiary\",\n onClick: _cache[0] || (_cache[0] = ($event) => open.value = !open.value)\n }, {\n icon: withCtx(() => [\n createVNode(NcIconSvgWrapper, {\n path: open.value ? unref(mdiMenuOpen) : unref(mdiMenu)\n }, null, 8, [\"path\"])\n ]),\n _: 1\n }, 8, [\"aria-expanded\", \"aria-label\", \"title\"])\n ]);\n };\n }\n});\nconst NcAppNavigationToggle = /* @__PURE__ */ _export_sfc(_sfc_main$1, [[\"__scopeId\", \"data-v-5a15295d\"]]);\nconst _hoisted_1 = [\"aria-hidden\", \"aria-label\", \"aria-labelledby\", \"inert\"];\nconst _hoisted_2 = { class: \"app-navigation__search\" };\nconst _sfc_main = /* @__PURE__ */ defineComponent({\n __name: \"NcAppNavigation\",\n props: {\n ariaLabel: {},\n ariaLabelledby: {}\n },\n setup(__props) {\n const props = __props;\n let focusTrap;\n const setHasAppNavigation = inject(\n HAS_APP_NAVIGATION_KEY,\n () => warn(\"NcAppNavigation is not mounted inside NcContent, this is probably an error.\"),\n false\n );\n const appNavigationContainerElement = useTemplateRef(\"appNavigationContainer\");\n const isMobile = useIsMobile();\n const open = ref(!isMobile.value);\n const shouldActivateFocusTrap = computed(() => isMobile.value && open.value);\n watchEffect(() => {\n if (!props.ariaLabel && !props.ariaLabelledby) {\n warn(\"NcAppNavigation requires either `ariaLabel` or `ariaLabelledby` to be set for accessibility.\");\n }\n });\n watch(isMobile, () => {\n open.value = !isMobile.value;\n });\n watch(shouldActivateFocusTrap, () => {\n toggleFocusTrap();\n });\n onMounted(() => {\n setHasAppNavigation(true);\n subscribe(\"toggle-navigation\", toggleNavigationByEventBus);\n emit(\"navigation-toggled\", {\n open: open.value\n });\n focusTrap = createFocusTrap(appNavigationContainerElement.value, {\n allowOutsideClick: true,\n clickOutsideDeactivates: () => {\n if (isMobile.value) {\n focusTrap.deactivate({ returnFocus: false });\n toggleNavigation(false);\n }\n return false;\n },\n fallbackFocus: appNavigationContainerElement.value,\n trapStack: getTrapStack(),\n escapeDeactivates: false\n });\n toggleFocusTrap();\n });\n onUnmounted(() => {\n setHasAppNavigation(false);\n unsubscribe(\"toggle-navigation\", toggleNavigationByEventBus);\n focusTrap.deactivate();\n });\n function toggleNavigation(state) {\n if (open.value === state) {\n emit(\"navigation-toggled\", {\n open: open.value\n });\n return;\n }\n open.value = state === void 0 ? !open.value : state;\n const bodyStyles = getComputedStyle(document.body);\n const animationLength = parseInt(bodyStyles.getPropertyValue(\"--animation-quick\")) || 100;\n setTimeout(() => {\n emit(\"navigation-toggled\", {\n open: open.value\n });\n }, 1.5 * animationLength);\n }\n function toggleNavigationByEventBus({ open: open2 }) {\n return toggleNavigation(open2);\n }\n function toggleFocusTrap() {\n if (shouldActivateFocusTrap.value) {\n focusTrap.activate();\n } else {\n focusTrap.deactivate();\n }\n }\n function handleEsc() {\n if (isMobile.value) {\n toggleNavigation(false);\n }\n }\n return (_ctx, _cache) => {\n return openBlock(), createElementBlock(\"div\", {\n ref: \"appNavigationContainer\",\n class: normalizeClass([\"app-navigation\", {\n \"app-navigation--closed\": !open.value,\n \"app-navigation--legacy\": unref(isLegacy34)\n }])\n }, [\n createElementVNode(\"nav\", {\n id: \"app-navigation-vue\",\n \"aria-hidden\": open.value ? \"false\" : \"true\",\n \"aria-label\": __props.ariaLabel || void 0,\n \"aria-labelledby\": __props.ariaLabelledby || void 0,\n class: \"app-navigation__content\",\n inert: !open.value || void 0,\n onKeydown: withKeys(handleEsc, [\"esc\"])\n }, [\n createElementVNode(\"div\", _hoisted_2, [\n renderSlot(_ctx.$slots, \"search\", {}, void 0, true)\n ]),\n createElementVNode(\"div\", {\n class: normalizeClass([\"app-navigation__body\", { \"app-navigation__body--no-list\": !_ctx.$slots.list }])\n }, [\n renderSlot(_ctx.$slots, \"default\", {}, void 0, true)\n ], 2),\n _ctx.$slots.list ? (openBlock(), createBlock(NcAppNavigationList, {\n key: 0,\n class: \"app-navigation__list\"\n }, {\n default: withCtx(() => [\n renderSlot(_ctx.$slots, \"list\", {}, void 0, true)\n ]),\n _: 3\n })) : createCommentVNode(\"\", true),\n renderSlot(_ctx.$slots, \"footer\", {}, void 0, true)\n ], 40, _hoisted_1),\n createVNode(NcAppNavigationToggle, {\n open: open.value,\n \"onUpdate:open\": toggleNavigation\n }, null, 8, [\"open\"])\n ], 2);\n };\n }\n});\nconst NcAppNavigation = /* @__PURE__ */ _export_sfc(_sfc_main, [[\"__scopeId\", \"data-v-1344f70d\"]]);\nexport {\n NcAppNavigation as N\n};\n//# sourceMappingURL=NcAppNavigation-g57j16pB.mjs.map\n","import '../assets/NcAppNavigationCaption-ggcWspH2.css';\nimport { N as NcActions } from \"./NcActions-C-wDqSrv.mjs\";\nimport { resolveComponent, openBlock, createBlock, resolveDynamicComponent, normalizeClass, withCtx, createTextVNode, toDisplayString, createElementBlock, createVNode, normalizeProps, guardReactiveProps, renderSlot, createCommentVNode } from \"vue\";\nimport { _ as _export_sfc } from \"./_plugin-vue_export-helper-1tPrXgE0.mjs\";\nconst _sfc_main = {\n name: \"NcAppNavigationCaption\",\n components: {\n NcActions\n },\n props: {\n /**\n * The text of the caption\n */\n name: {\n type: String,\n required: true\n },\n /**\n * `id` to set on the inner caption\n * Can be used for connecting the `NcActionCaption` with `NcActionList` using `aria-labelledby`.\n */\n headingId: {\n type: String,\n default: null\n },\n /**\n * Enable when used as a heading\n * e.g. Before NcAppNavigationList\n */\n isHeading: {\n type: Boolean,\n default: false\n },\n /**\n * If `isHeading` is set, this defines the heading level that should be used\n */\n headingLevel: {\n type: Number,\n default: 2\n },\n /**\n * Any [NcActions](#/Components/NcActions?id=ncactions-1) prop\n */\n // Not an actual prop but needed to show in vue-styleguidist docs\n ...NcActions.props\n },\n computed: {\n actionsProps() {\n const actionProps = Object.keys(NcActions.props);\n const props = Object.entries(this.$props).filter(([key, _value]) => actionProps.includes(key));\n return Object.fromEntries(props);\n },\n wrapperTag() {\n return this.isHeading ? \"div\" : \"li\";\n },\n captionTag() {\n const headingLevel = Math.max(2, this.headingLevel);\n return this.isHeading ? `h${headingLevel}` : \"span\";\n }\n }\n};\nconst _hoisted_1 = {\n key: 0,\n class: \"app-navigation-caption__actions\"\n};\nfunction _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {\n const _component_NcActions = resolveComponent(\"NcActions\");\n return openBlock(), createBlock(resolveDynamicComponent($options.wrapperTag), {\n class: normalizeClass([\"app-navigation-caption\", { \"app-navigation-caption--heading\": $props.isHeading }])\n }, {\n default: withCtx(() => [\n (openBlock(), createBlock(resolveDynamicComponent($options.captionTag), {\n id: $props.headingId,\n class: \"app-navigation-caption__name\"\n }, {\n default: withCtx(() => [\n createTextVNode(toDisplayString($props.name), 1)\n ]),\n _: 1\n }, 8, [\"id\"])),\n !!_ctx.$slots.actions ? (openBlock(), createElementBlock(\"div\", _hoisted_1, [\n createVNode(_component_NcActions, normalizeProps(guardReactiveProps($options.actionsProps)), {\n icon: withCtx(() => [\n renderSlot(_ctx.$slots, \"actionsTriggerIcon\", {}, void 0, true)\n ]),\n default: withCtx(() => [\n renderSlot(_ctx.$slots, \"actions\", {}, void 0, true)\n ]),\n _: 3\n }, 16)\n ])) : createCommentVNode(\"\", true)\n ]),\n _: 3\n }, 8, [\"class\"]);\n}\nconst NcAppNavigationCaption = /* @__PURE__ */ _export_sfc(_sfc_main, [[\"render\", _sfc_render], [\"__scopeId\", \"data-v-f0e411c2\"]]);\nexport {\n NcAppNavigationCaption as N\n};\n//# sourceMappingURL=NcAppNavigationCaption-VjSWJ8R4.mjs.map\n","import { openBlock, createElementBlock, mergeProps, createElementVNode, toDisplayString, createCommentVNode } from \"vue\";\nimport { _ as _export_sfc } from \"./_plugin-vue_export-helper-1tPrXgE0.mjs\";\nconst _sfc_main = {\n name: \"ChevronUpIcon\",\n emits: [\"click\"],\n props: {\n title: {\n type: String\n },\n fillColor: {\n type: String,\n default: \"currentColor\"\n },\n size: {\n type: Number,\n default: 24\n }\n }\n};\nconst _hoisted_1 = [\"aria-hidden\", \"aria-label\"];\nconst _hoisted_2 = [\"fill\", \"width\", \"height\"];\nconst _hoisted_3 = { d: \"M7.41,15.41L12,10.83L16.59,15.41L18,14L12,8L6,14L7.41,15.41Z\" };\nconst _hoisted_4 = { key: 0 };\nfunction _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {\n return openBlock(), createElementBlock(\"span\", mergeProps(_ctx.$attrs, {\n \"aria-hidden\": $props.title ? null : \"true\",\n \"aria-label\": $props.title,\n class: \"material-design-icon chevron-up-icon\",\n role: \"img\",\n onClick: _cache[0] || (_cache[0] = ($event) => _ctx.$emit(\"click\", $event))\n }), [\n (openBlock(), createElementBlock(\"svg\", {\n fill: $props.fillColor,\n class: \"material-design-icon__svg\",\n width: $props.size,\n height: $props.size,\n viewBox: \"0 0 24 24\"\n }, [\n createElementVNode(\"path\", _hoisted_3, [\n $props.title ? (openBlock(), createElementBlock(\"title\", _hoisted_4, toDisplayString($props.title), 1)) : createCommentVNode(\"\", true)\n ])\n ], 8, _hoisted_2))\n ], 16, _hoisted_1);\n}\nconst ChevronUp = /* @__PURE__ */ _export_sfc(_sfc_main, [[\"render\", _sfc_render]]);\nexport {\n ChevronUp as C\n};\n//# sourceMappingURL=ChevronUp-ChH8oB7p.mjs.map\n","import { openBlock, createElementBlock, mergeProps, createElementVNode, toDisplayString, createCommentVNode } from \"vue\";\nimport { _ as _export_sfc } from \"./_plugin-vue_export-helper-1tPrXgE0.mjs\";\nconst _sfc_main = {\n name: \"ArrowRightIcon\",\n emits: [\"click\"],\n props: {\n title: {\n type: String\n },\n fillColor: {\n type: String,\n default: \"currentColor\"\n },\n size: {\n type: Number,\n default: 24\n }\n }\n};\nconst _hoisted_1 = [\"aria-hidden\", \"aria-label\"];\nconst _hoisted_2 = [\"fill\", \"width\", \"height\"];\nconst _hoisted_3 = { d: \"M4,11V13H16L10.5,18.5L11.92,19.92L19.84,12L11.92,4.08L10.5,5.5L16,11H4Z\" };\nconst _hoisted_4 = { key: 0 };\nfunction _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {\n return openBlock(), createElementBlock(\"span\", mergeProps(_ctx.$attrs, {\n \"aria-hidden\": $props.title ? null : \"true\",\n \"aria-label\": $props.title,\n class: \"material-design-icon arrow-right-icon\",\n role: \"img\",\n onClick: _cache[0] || (_cache[0] = ($event) => _ctx.$emit(\"click\", $event))\n }), [\n (openBlock(), createElementBlock(\"svg\", {\n fill: $props.fillColor,\n class: \"material-design-icon__svg\",\n width: $props.size,\n height: $props.size,\n viewBox: \"0 0 24 24\"\n }, [\n createElementVNode(\"path\", _hoisted_3, [\n $props.title ? (openBlock(), createElementBlock(\"title\", _hoisted_4, toDisplayString($props.title), 1)) : createCommentVNode(\"\", true)\n ])\n ], 8, _hoisted_2))\n ], 16, _hoisted_1);\n}\nconst IconArrowRight = /* @__PURE__ */ _export_sfc(_sfc_main, [[\"render\", _sfc_render]]);\nexport {\n IconArrowRight as I\n};\n//# sourceMappingURL=ArrowRight-B1ncAhus.mjs.map\n","import '../assets/NcInputConfirmCancel-DZEDRf0t.css';\nimport { I as IconArrowRight } from \"./ArrowRight-B1ncAhus.mjs\";\nimport { I as IconClose } from \"./Close-CuhcJnX2.mjs\";\nimport { r as register, k as t14, a as t } from \"./_l10n-wdIzZwir.mjs\";\nimport { i as isLegacy34 } from \"./legacy-BoqDmOCa.mjs\";\nimport { N as NcButton } from \"./NcButton-jvoYS2my.mjs\";\nimport { resolveComponent, openBlock, createElementBlock, normalizeClass, createElementVNode, withModifiers, withKeys, withDirectives, vModelText, createVNode, withCtx } from \"vue\";\nimport { _ as _export_sfc } from \"./_plugin-vue_export-helper-1tPrXgE0.mjs\";\nregister(t14);\nconst _sfc_main = {\n name: \"NcInputConfirmCancel\",\n components: {\n IconArrowRight,\n IconClose,\n NcButton\n },\n props: {\n /**\n * If this element is used on a primary element set to true for primary styling.\n */\n primary: {\n default: false,\n type: Boolean\n },\n /**\n * Placeholder of the edit field\n */\n placeholder: {\n default: \"\",\n type: String\n },\n /**\n * The current name (model value)\n */\n modelValue: {\n default: \"\",\n type: String\n }\n },\n emits: [\n \"cancel\",\n \"confirm\",\n \"update:modelValue\"\n ],\n setup() {\n return { isLegacy34 };\n },\n data() {\n return {\n labelConfirm: t(\"Confirm changes\"),\n labelCancel: t(\"Cancel changes\")\n };\n },\n computed: {\n valueModel: {\n get() {\n return this.modelValue;\n },\n set(newValue) {\n this.$emit(\"update:modelValue\", newValue);\n }\n }\n },\n methods: {\n confirm() {\n this.$emit(\"confirm\");\n },\n cancel() {\n this.$emit(\"cancel\");\n },\n focusInput() {\n this.$refs.input.focus();\n }\n }\n};\nconst _hoisted_1 = [\"placeholder\"];\nfunction _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {\n const _component_IconArrowRight = resolveComponent(\"IconArrowRight\");\n const _component_NcButton = resolveComponent(\"NcButton\");\n const _component_IconClose = resolveComponent(\"IconClose\");\n return openBlock(), createElementBlock(\"div\", {\n class: normalizeClass([\"app-navigation-input-confirm\", { \"app-navigation-input-confirm--legacy\": $setup.isLegacy34 }])\n }, [\n createElementVNode(\"form\", {\n onSubmit: _cache[1] || (_cache[1] = withModifiers((...args) => $options.confirm && $options.confirm(...args), [\"prevent\"])),\n onKeydown: _cache[2] || (_cache[2] = withKeys(withModifiers((...args) => $options.cancel && $options.cancel(...args), [\"exact\", \"stop\", \"prevent\"]), [\"esc\"])),\n onClick: _cache[3] || (_cache[3] = withModifiers(() => {\n }, [\"stop\", \"prevent\"]))\n }, [\n withDirectives(createElementVNode(\"input\", {\n ref: \"input\",\n \"onUpdate:modelValue\": _cache[0] || (_cache[0] = ($event) => $options.valueModel = $event),\n type: \"text\",\n class: \"app-navigation-input-confirm__input\",\n placeholder: $props.placeholder\n }, null, 8, _hoisted_1), [\n [vModelText, $options.valueModel]\n ]),\n createVNode(_component_NcButton, {\n \"aria-label\": $data.labelConfirm,\n type: \"submit\",\n variant: \"primary\",\n onClick: withModifiers($options.confirm, [\"stop\", \"prevent\"])\n }, {\n icon: withCtx(() => [\n createVNode(_component_IconArrowRight, { size: 20 })\n ]),\n _: 1\n }, 8, [\"aria-label\", \"onClick\"]),\n createVNode(_component_NcButton, {\n \"aria-label\": $data.labelCancel,\n type: \"reset\",\n variant: $props.primary ? \"primary\" : \"tertiary\",\n onClick: withModifiers($options.cancel, [\"stop\", \"prevent\"])\n }, {\n icon: withCtx(() => [\n createVNode(_component_IconClose, { size: 20 })\n ]),\n _: 1\n }, 8, [\"aria-label\", \"variant\", \"onClick\"])\n ], 32)\n ], 2);\n}\nconst NcInputConfirmCancel = /* @__PURE__ */ _export_sfc(_sfc_main, [[\"render\", _sfc_render], [\"__scopeId\", \"data-v-6926a0b8\"]]);\nexport {\n NcInputConfirmCancel as N\n};\n//# sourceMappingURL=NcInputConfirmCancel-CGTllrXj.mjs.map\n","import '../assets/NcAppNavigationItem-BZ1xj6Xi.css';\nimport { openBlock, createElementBlock, mergeProps, createElementVNode, toDisplayString, createCommentVNode, resolveComponent, createBlock, normalizeClass, withCtx, resolveDynamicComponent, normalizeProps, guardReactiveProps, withKeys, withModifiers, renderSlot, createVNode, createTextVNode } from \"vue\";\nimport { _ as _export_sfc } from \"./_plugin-vue_export-helper-1tPrXgE0.mjs\";\nimport { C as ChevronDown } from \"./ChevronDown-C6gc637b.mjs\";\nimport { C as ChevronUp } from \"./ChevronUp-ChH8oB7p.mjs\";\nimport { r as register, N as t21, a as t, b as t51, O as t23 } from \"./_l10n-wdIzZwir.mjs\";\nimport { i as isLegacy34 } from \"./legacy-BoqDmOCa.mjs\";\nimport { N as NcButton } from \"./NcButton-jvoYS2my.mjs\";\nimport { N as NcInputConfirmCancel } from \"./NcInputConfirmCancel-CGTllrXj.mjs\";\nimport { useIsMobile } from \"../composables/useIsMobile/index.mjs\";\nimport { c as createElementId } from \"./createElementId-DhjFt1I9.mjs\";\nimport { N as NcActionButton } from \"./NcActionButton-BO5T5ePT.mjs\";\nimport { N as NcActions } from \"./NcActions-C-wDqSrv.mjs\";\nimport { N as NcLoadingIcon } from \"./NcLoadingIcon-BOVpFVQz.mjs\";\nimport { _ as _sfc_main$4 } from \"./NcVNodes.vue_vue_type_script_lang-BqUHinRZ.mjs\";\nconst _sfc_main$3 = {\n name: \"PencilIcon\",\n emits: [\"click\"],\n props: {\n title: {\n type: String\n },\n fillColor: {\n type: String,\n default: \"currentColor\"\n },\n size: {\n type: Number,\n default: 24\n }\n }\n};\nconst _hoisted_1$2 = [\"aria-hidden\", \"aria-label\"];\nconst _hoisted_2$2 = [\"fill\", \"width\", \"height\"];\nconst _hoisted_3$2 = { d: \"M20.71,7.04C21.1,6.65 21.1,6 20.71,5.63L18.37,3.29C18,2.9 17.35,2.9 16.96,3.29L15.12,5.12L18.87,8.87M3,17.25V21H6.75L17.81,9.93L14.06,6.18L3,17.25Z\" };\nconst _hoisted_4$2 = { key: 0 };\nfunction _sfc_render$3(_ctx, _cache, $props, $setup, $data, $options) {\n return openBlock(), createElementBlock(\"span\", mergeProps(_ctx.$attrs, {\n \"aria-hidden\": $props.title ? null : \"true\",\n \"aria-label\": $props.title,\n class: \"material-design-icon pencil-icon\",\n role: \"img\",\n onClick: _cache[0] || (_cache[0] = ($event) => _ctx.$emit(\"click\", $event))\n }), [\n (openBlock(), createElementBlock(\"svg\", {\n fill: $props.fillColor,\n class: \"material-design-icon__svg\",\n width: $props.size,\n height: $props.size,\n viewBox: \"0 0 24 24\"\n }, [\n createElementVNode(\"path\", _hoisted_3$2, [\n $props.title ? (openBlock(), createElementBlock(\"title\", _hoisted_4$2, toDisplayString($props.title), 1)) : createCommentVNode(\"\", true)\n ])\n ], 8, _hoisted_2$2))\n ], 16, _hoisted_1$2);\n}\nconst Pencil = /* @__PURE__ */ _export_sfc(_sfc_main$3, [[\"render\", _sfc_render$3]]);\nconst _sfc_main$2 = {\n name: \"UndoIcon\",\n emits: [\"click\"],\n props: {\n title: {\n type: String\n },\n fillColor: {\n type: String,\n default: \"currentColor\"\n },\n size: {\n type: Number,\n default: 24\n }\n }\n};\nconst _hoisted_1$1 = [\"aria-hidden\", \"aria-label\"];\nconst _hoisted_2$1 = [\"fill\", \"width\", \"height\"];\nconst _hoisted_3$1 = { d: \"M12.5,8C9.85,8 7.45,9 5.6,10.6L2,7V16H11L7.38,12.38C8.77,11.22 10.54,10.5 12.5,10.5C16.04,10.5 19.05,12.81 20.1,16L22.47,15.22C21.08,11.03 17.15,8 12.5,8Z\" };\nconst _hoisted_4$1 = { key: 0 };\nfunction _sfc_render$2(_ctx, _cache, $props, $setup, $data, $options) {\n return openBlock(), createElementBlock(\"span\", mergeProps(_ctx.$attrs, {\n \"aria-hidden\": $props.title ? null : \"true\",\n \"aria-label\": $props.title,\n class: \"material-design-icon undo-icon\",\n role: \"img\",\n onClick: _cache[0] || (_cache[0] = ($event) => _ctx.$emit(\"click\", $event))\n }), [\n (openBlock(), createElementBlock(\"svg\", {\n fill: $props.fillColor,\n class: \"material-design-icon__svg\",\n width: $props.size,\n height: $props.size,\n viewBox: \"0 0 24 24\"\n }, [\n createElementVNode(\"path\", _hoisted_3$1, [\n $props.title ? (openBlock(), createElementBlock(\"title\", _hoisted_4$1, toDisplayString($props.title), 1)) : createCommentVNode(\"\", true)\n ])\n ], 8, _hoisted_2$1))\n ], 16, _hoisted_1$1);\n}\nconst Undo = /* @__PURE__ */ _export_sfc(_sfc_main$2, [[\"render\", _sfc_render$2]]);\nregister(t21);\nconst _sfc_main$1 = {\n name: \"NcAppNavigationIconCollapsible\",\n components: {\n NcButton,\n ChevronDown,\n ChevronUp\n },\n props: {\n /**\n * Is the list currently open (or collapsed)\n */\n open: {\n type: Boolean,\n required: true\n },\n /**\n * Is the navigation item currently active.\n */\n active: {\n type: Boolean,\n required: true\n }\n },\n emits: [\"click\"],\n setup() {\n return { isLegacy34 };\n },\n computed: {\n labelButton() {\n return this.open ? t(\"Collapse menu\") : t(\"Open menu\");\n }\n },\n methods: {\n onClick(e) {\n this.$emit(\"click\", e);\n }\n }\n};\nfunction _sfc_render$1(_ctx, _cache, $props, $setup, $data, $options) {\n const _component_ChevronUp = resolveComponent(\"ChevronUp\");\n const _component_ChevronDown = resolveComponent(\"ChevronDown\");\n const _component_NcButton = resolveComponent(\"NcButton\");\n return openBlock(), createBlock(_component_NcButton, {\n class: normalizeClass([\"icon-collapse\", {\n \"icon-collapse--active\": $props.active,\n \"icon-collapse--open\": $props.open\n }]),\n \"aria-label\": $options.labelButton,\n variant: $props.active && $setup.isLegacy34 ? \"tertiary-on-primary\" : \"tertiary\",\n onClick: $options.onClick\n }, {\n icon: withCtx(() => [\n $props.open ? (openBlock(), createBlock(_component_ChevronUp, {\n key: 0,\n size: 20\n })) : (openBlock(), createBlock(_component_ChevronDown, {\n key: 1,\n size: 20\n }))\n ]),\n _: 1\n }, 8, [\"class\", \"aria-label\", \"variant\", \"onClick\"]);\n}\nconst NcAppNavigationIconCollapsible = /* @__PURE__ */ _export_sfc(_sfc_main$1, [[\"render\", _sfc_render$1], [\"__scopeId\", \"data-v-cfbd3794\"]]);\nregister(t23, t51);\nconst _sfc_main = {\n name: \"NcAppNavigationItem\",\n components: {\n NcActions,\n NcActionButton,\n NcAppNavigationIconCollapsible,\n NcInputConfirmCancel,\n NcLoadingIcon,\n NcVNodes: _sfc_main$4,\n Pencil,\n Undo\n },\n props: {\n /**\n * If you are not using vue-router you can use the property to set this item as the active navigation entry.\n * When using vue-router and the `to` property this is set automatically.\n */\n active: {\n type: Boolean,\n default: false\n },\n /**\n * The main text content of the entry.\n */\n name: {\n type: String,\n required: true\n },\n /**\n * The title attribute of the element.\n */\n title: {\n type: String,\n default: null\n },\n /**\n * id attribute of the list item element\n */\n id: {\n type: String,\n default: () => createElementId(),\n validator: (id) => id.trim() !== \"\"\n },\n /**\n * Refers to the icon on the left, this prop accepts a class\n * like 'icon-category-enabled'.\n */\n icon: {\n type: String,\n default: \"\"\n },\n /**\n * Displays a loading animated icon on the left of the element\n * instead of the icon.\n */\n loading: {\n type: Boolean,\n default: false\n },\n /**\n * Passing in a route will make the root element of this\n * component a `<router-link />` that points to that route.\n * By leaving this blank, the root element will be a `<li>`.\n */\n to: {\n type: [String, Object],\n default: null\n },\n /**\n * A direct link. This will be used as the `href` attribute.\n * This will ignore any `to` prop being defined.\n */\n href: {\n type: String,\n default: null\n },\n /**\n * Gives the possibility to collapse the children elements into the\n * parent element (true) or expands the children elements (false).\n */\n allowCollapse: {\n type: Boolean,\n default: false\n },\n /**\n * Makes the name of the item editable by providing an `ActionButton`\n * component that toggles a form\n */\n editable: {\n type: Boolean,\n default: false\n },\n /**\n * Only for 'editable' items, sets label for the edit action button.\n */\n editLabel: {\n type: String,\n default: \"\"\n },\n /**\n * Only for items in 'editable' mode, sets the placeholder text for the editing form.\n */\n editPlaceholder: {\n type: String,\n default: \"\"\n },\n /**\n * Pins the item to the bottom left area, above the settings. Do not\n * place 'non-pinned' `AppnavigationItem` components below `pinned`\n * ones.\n */\n pinned: {\n type: Boolean,\n default: false\n },\n /**\n * Puts the item in the 'undo' state.\n */\n undo: {\n type: Boolean,\n default: false\n },\n /**\n * The navigation collapsible state (synced)\n */\n open: {\n type: Boolean,\n default: false\n },\n /**\n * The actions menu open state (synced)\n */\n menuOpen: {\n type: Boolean,\n default: false\n },\n /**\n * Force the actions to display in a three dot menu\n */\n forceMenu: {\n type: Boolean,\n default: false\n },\n /**\n * The action's menu default icon\n */\n menuIcon: {\n type: String,\n default: void 0\n },\n /**\n * The action's menu direction\n */\n menuPlacement: {\n type: String,\n default: \"bottom\"\n },\n /**\n * Entry aria details\n */\n ariaDescription: {\n type: String,\n default: null\n },\n /**\n * To be used only when the elements in the actions menu are very important\n */\n forceDisplayActions: {\n type: Boolean,\n default: false\n },\n /**\n * Number of action items outside the menu\n */\n inlineActions: {\n type: Number,\n default: 0\n }\n },\n emits: [\n \"update:menuOpen\",\n \"update:open\",\n \"update:name\",\n \"click\",\n \"undo\"\n ],\n setup() {\n return {\n isMobile: useIsMobile(),\n isLegacy34\n };\n },\n data() {\n return {\n actionsBoundariesElement: void 0,\n editingValue: \"\",\n opened: this.open,\n // Collapsible state\n editingActive: false,\n /**\n * Tracks the open state of the actions menu\n */\n menuOpenLocalValue: false,\n focused: false\n };\n },\n computed: {\n isRouterLink() {\n return this.to && !this.href;\n },\n // Checks if the component is already a children of another\n // instance of AppNavigationItem\n canHaveChildren() {\n if (this.$parent.$options._componentTag === \"AppNavigationItem\") {\n return false;\n } else {\n return true;\n }\n },\n editButtonAriaLabel() {\n return this.editLabel ? this.editLabel : t(\"Edit item\");\n },\n undoButtonAriaLabel() {\n return t(\"Undo changes\");\n }\n },\n watch: {\n open(newVal) {\n this.opened = newVal;\n }\n },\n mounted() {\n this.actionsBoundariesElement = document.querySelector(\"#content-vue\") || void 0;\n },\n methods: {\n // sync opened menu state with prop\n onMenuToggle(state) {\n this.$emit(\"update:menuOpen\", state);\n this.menuOpenLocalValue = state;\n },\n // toggle the collapsible state\n toggleCollapse() {\n this.opened = !this.opened;\n this.$emit(\"update:open\", this.opened);\n },\n /**\n * Handle link click\n *\n * @param {PointerEvent} event - Native click event\n * @param {(event: PointerEvent) => void} [navigate] - VueRouter link's navigate if any\n * @param {string} [routerLinkHref] - VueRouter link's href\n */\n onClick(event, navigate, routerLinkHref) {\n this.$emit(\"click\", event);\n if (event.metaKey || event.altKey || event.ctrlKey || event.shiftKey) {\n return;\n }\n if (routerLinkHref) {\n navigate?.(event);\n event.preventDefault();\n }\n },\n // Edition methods\n handleEdit() {\n this.editingValue = this.name;\n this.editingActive = true;\n this.onMenuToggle(false);\n this.$nextTick(() => {\n this.$refs.editingInput.focusInput();\n });\n },\n cancelEditing() {\n this.editingActive = false;\n },\n handleEditingDone() {\n this.$emit(\"update:name\", this.editingValue);\n this.editingValue = \"\";\n this.editingActive = false;\n },\n // Undo methods\n handleUndo() {\n this.$emit(\"undo\");\n },\n /**\n * Show actions upon focus\n */\n handleFocus() {\n this.focused = true;\n },\n handleBlur() {\n this.focused = false;\n },\n /**\n * This method checks if the root element of the component is focused and\n * if that's the case it focuses the actions button if available\n *\n * @param {Event} e the keydown event\n */\n handleTab(e) {\n if (!this.$refs.actions) {\n return;\n }\n if (this.focused) {\n e.preventDefault();\n this.$refs.actions.$refs.triggerButton.$el.focus();\n this.focused = false;\n } else {\n this.$refs.actions.$refs.triggerButton.$el.blur();\n }\n },\n /**\n * Is this an external link\n *\n * @param {string} href The link to check\n * @return {boolean} Whether it is external or not\n */\n isExternal(href) {\n return href && href.match(/[a-z]+:\\/\\//i);\n }\n }\n};\nconst _hoisted_1 = [\"id\"];\nconst _hoisted_2 = [\"aria-current\", \"aria-description\", \"aria-expanded\", \"href\", \"target\", \"title\", \"onClick\"];\nconst _hoisted_3 = {\n key: 0,\n class: \"editingContainer\"\n};\nconst _hoisted_4 = {\n key: 1,\n class: \"app-navigation-entry__deleted\"\n};\nconst _hoisted_5 = { class: \"app-navigation-entry__deleted-description\" };\nconst _hoisted_6 = {\n key: 0,\n class: \"app-navigation-entry__counter-wrapper\"\n};\nconst _hoisted_7 = {\n key: 0,\n class: \"app-navigation-entry__children\"\n};\nfunction _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {\n const _component_NcLoadingIcon = resolveComponent(\"NcLoadingIcon\");\n const _component_NcInputConfirmCancel = resolveComponent(\"NcInputConfirmCancel\");\n const _component_Pencil = resolveComponent(\"Pencil\");\n const _component_NcActionButton = resolveComponent(\"NcActionButton\");\n const _component_Undo = resolveComponent(\"Undo\");\n const _component_NcActions = resolveComponent(\"NcActions\");\n const _component_NcAppNavigationIconCollapsible = resolveComponent(\"NcAppNavigationIconCollapsible\");\n return openBlock(), createElementBlock(\"li\", {\n id: $props.id,\n class: normalizeClass([{\n \"app-navigation-entry--opened\": $data.opened,\n \"app-navigation-entry--pinned\": $props.pinned,\n \"app-navigation-entry--collapsible\": $props.allowCollapse && !!_ctx.$slots.default\n }, \"app-navigation-entry-wrapper\"])\n }, [\n (openBlock(), createBlock(resolveDynamicComponent($options.isRouterLink ? \"router-link\" : \"NcVNodes\"), normalizeProps(guardReactiveProps({ ...$options.isRouterLink && { custom: true, to: $props.to } })), {\n default: withCtx(({ href: routerLinkHref, navigate, isActive }) => [\n createElementVNode(\"div\", {\n class: normalizeClass([\"app-navigation-entry\", {\n \"app-navigation-entry--editing\": $data.editingActive,\n \"app-navigation-entry--deleted\": $props.undo,\n \"app-navigation-entry--legacy\": $setup.isLegacy34,\n active: $props.to && isActive || $props.active\n }])\n }, [\n !$props.undo ? (openBlock(), createElementBlock(\"a\", {\n key: 0,\n class: \"app-navigation-entry-link\",\n \"aria-current\": $props.active || $props.to && isActive ? \"page\" : void 0,\n \"aria-description\": $props.ariaDescription,\n \"aria-expanded\": !!_ctx.$slots.default ? $data.opened.toString() : void 0,\n href: $props.href || routerLinkHref || \"#\",\n target: $options.isExternal($props.href) ? \"_blank\" : void 0,\n title: $props.title || $props.name,\n onBlur: _cache[1] || (_cache[1] = (...args) => $options.handleBlur && $options.handleBlur(...args)),\n onClick: ($event) => $options.onClick($event, navigate, routerLinkHref),\n onFocus: _cache[2] || (_cache[2] = (...args) => $options.handleFocus && $options.handleFocus(...args)),\n onKeydown: _cache[3] || (_cache[3] = withKeys(withModifiers((...args) => $options.handleTab && $options.handleTab(...args), [\"exact\"]), [\"tab\"]))\n }, [\n createElementVNode(\"div\", {\n class: normalizeClass([\"app-navigation-entry-icon\", { [$props.icon]: $props.icon }])\n }, [\n $props.loading ? (openBlock(), createBlock(_component_NcLoadingIcon, { key: 0 })) : renderSlot(_ctx.$slots, \"icon\", {\n key: 1,\n active: $props.active || $props.to && isActive\n }, void 0, true)\n ], 2),\n createElementVNode(\"span\", {\n class: normalizeClass([\"app-navigation-entry__name\", { \"hidden-visually\": $data.editingActive }])\n }, toDisplayString($props.name), 3),\n $data.editingActive ? (openBlock(), createElementBlock(\"div\", _hoisted_3, [\n createVNode(_component_NcInputConfirmCancel, {\n ref: \"editingInput\",\n modelValue: $data.editingValue,\n \"onUpdate:modelValue\": _cache[0] || (_cache[0] = ($event) => $data.editingValue = $event),\n placeholder: $props.editPlaceholder !== \"\" ? $props.editPlaceholder : $props.name,\n primary: $props.to && isActive || $props.active,\n onCancel: $options.cancelEditing,\n onConfirm: $options.handleEditingDone\n }, null, 8, [\"modelValue\", \"placeholder\", \"primary\", \"onCancel\", \"onConfirm\"])\n ])) : createCommentVNode(\"\", true)\n ], 40, _hoisted_2)) : createCommentVNode(\"\", true),\n $props.undo ? (openBlock(), createElementBlock(\"div\", _hoisted_4, [\n createElementVNode(\"div\", _hoisted_5, toDisplayString($props.name), 1)\n ])) : createCommentVNode(\"\", true),\n (!!_ctx.$slots.actions || !!_ctx.$slots.counter || $props.editable || $props.undo) && !$data.editingActive ? (openBlock(), createElementBlock(\"div\", {\n key: 2,\n class: normalizeClass([\"app-navigation-entry__utils\", { \"app-navigation-entry__utils--display-actions\": $props.forceDisplayActions || $data.menuOpenLocalValue || $props.menuOpen }])\n }, [\n !!_ctx.$slots.counter ? (openBlock(), createElementBlock(\"div\", _hoisted_6, [\n renderSlot(_ctx.$slots, \"counter\", {}, void 0, true)\n ])) : createCommentVNode(\"\", true),\n !!_ctx.$slots.actions || $props.editable && !$data.editingActive || $props.undo ? (openBlock(), createBlock(_component_NcActions, {\n key: 1,\n ref: \"actions\",\n class: \"app-navigation-entry__actions\",\n container: \"#app-navigation-vue\",\n boundariesElement: $data.actionsBoundariesElement,\n inline: $props.inlineActions,\n placement: $props.menuPlacement,\n open: $props.menuOpen,\n forceMenu: $props.forceMenu,\n defaultIcon: $props.menuIcon,\n variant: \"tertiary\",\n \"onUpdate:open\": $options.onMenuToggle\n }, {\n icon: withCtx(() => [\n renderSlot(_ctx.$slots, \"menu-icon\", {}, void 0, true)\n ]),\n default: withCtx(() => [\n $props.editable && !$data.editingActive ? (openBlock(), createBlock(_component_NcActionButton, {\n key: 0,\n \"aria-label\": $options.editButtonAriaLabel,\n onClick: $options.handleEdit\n }, {\n icon: withCtx(() => [\n createVNode(_component_Pencil, { size: 20 })\n ]),\n default: withCtx(() => [\n createTextVNode(\" \" + toDisplayString($props.editLabel), 1)\n ]),\n _: 1\n }, 8, [\"aria-label\", \"onClick\"])) : createCommentVNode(\"\", true),\n $props.undo ? (openBlock(), createBlock(_component_NcActionButton, {\n key: 1,\n \"aria-label\": $options.undoButtonAriaLabel,\n onClick: $options.handleUndo\n }, {\n icon: withCtx(() => [\n createVNode(_component_Undo, { size: 20 })\n ]),\n _: 1\n }, 8, [\"aria-label\", \"onClick\"])) : createCommentVNode(\"\", true),\n renderSlot(_ctx.$slots, \"actions\", {}, void 0, true)\n ]),\n _: 3\n }, 8, [\"boundariesElement\", \"inline\", \"placement\", \"open\", \"forceMenu\", \"defaultIcon\", \"onUpdate:open\"])) : createCommentVNode(\"\", true)\n ], 2)) : createCommentVNode(\"\", true),\n $props.allowCollapse && !!_ctx.$slots.default ? (openBlock(), createBlock(_component_NcAppNavigationIconCollapsible, {\n key: 3,\n active: $props.to && isActive || $props.active,\n open: $data.opened,\n onClick: withModifiers($options.toggleCollapse, [\"prevent\", \"stop\"])\n }, null, 8, [\"active\", \"open\", \"onClick\"])) : createCommentVNode(\"\", true),\n renderSlot(_ctx.$slots, \"extra\", {}, void 0, true)\n ], 2)\n ]),\n _: 3\n }, 16)),\n $options.canHaveChildren && !!_ctx.$slots.default ? (openBlock(), createElementBlock(\"ul\", _hoisted_7, [\n renderSlot(_ctx.$slots, \"default\", {}, void 0, true)\n ])) : createCommentVNode(\"\", true)\n ], 10, _hoisted_1);\n}\nconst NcAppNavigationItem = /* @__PURE__ */ _export_sfc(_sfc_main, [[\"render\", _sfc_render], [\"__scopeId\", \"data-v-fcab058b\"]]);\nexport {\n NcAppNavigationItem as N\n};\n//# sourceMappingURL=NcAppNavigationItem-CDeYtA3E.mjs.map\n","import '../assets/NcAppNavigationSearch-DD7mo6OW.css';\nimport { defineComponent, useModel, useSlots, ref, useTemplateRef, watch, openBlock, createElementBlock, normalizeClass, createVNode, unref, withCtx, renderSlot, createCommentVNode, mergeModels, nextTick } from \"vue\";\nimport { useFocusWithin } from \"@vueuse/core\";\nimport { I as IconClose } from \"./Close-CuhcJnX2.mjs\";\nimport { N as NcInputField } from \"./NcInputField-5Sg6EUP6.mjs\";\nimport { r as register, C as t44, u as t16, a as t } from \"./_l10n-wdIzZwir.mjs\";\nimport { _ as _export_sfc } from \"./_plugin-vue_export-helper-1tPrXgE0.mjs\";\nregister(t16, t44);\nconst _sfc_main = /* @__PURE__ */ defineComponent({\n __name: \"NcAppNavigationSearch\",\n props: /* @__PURE__ */ mergeModels({\n /**\n * Text used to label the search input\n */\n label: {\n type: String,\n default: t(\"Search …\")\n },\n /**\n * Placeholder of the search input\n * By default the value of `label` is used.\n */\n placeholder: {\n type: String,\n default: null\n }\n }, {\n \"modelValue\": { default: \"\" },\n \"modelModifiers\": {}\n }),\n emits: [\"update:modelValue\"],\n setup(__props) {\n const model = useModel(__props, \"modelValue\");\n const slots = useSlots();\n const inputElement = ref();\n const { focused: inputHasFocus } = useFocusWithin(inputElement);\n const transitionTimeout = Number.parseInt(window.getComputedStyle(window.document.body).getPropertyValue(\"--animation-quick\")) || 100;\n const actionsContainerElement = useTemplateRef(\"actionsContainer\");\n const hasActions = () => !!slots.actions?.({});\n const showActions = ref(true);\n const timeoutId = ref();\n const hideActions = ref(false);\n watch(inputHasFocus, () => {\n showActions.value = !inputHasFocus.value;\n window.clearTimeout(timeoutId.value);\n if (showActions.value) {\n hideActions.value = false;\n } else {\n window.setTimeout(() => {\n hideActions.value = !showActions.value;\n }, transitionTimeout);\n }\n });\n function onCloseSearch() {\n model.value = \"\";\n if (hasActions()) {\n showActions.value = true;\n nextTick(() => actionsContainerElement.value?.querySelector(\"button\")?.focus());\n }\n }\n return (_ctx, _cache) => {\n return openBlock(), createElementBlock(\"div\", {\n class: normalizeClass([\"app-navigation-search\", {\n \"app-navigation-search--has-actions\": hasActions()\n }])\n }, [\n createVNode(NcInputField, {\n ref_key: \"inputElement\",\n ref: inputElement,\n modelValue: model.value,\n \"onUpdate:modelValue\": _cache[0] || (_cache[0] = ($event) => model.value = $event),\n \"aria-label\": __props.label,\n class: \"app-navigation-search__input\",\n labelOutside: \"\",\n placeholder: __props.placeholder ?? __props.label,\n showTrailingButton: model.value.length > 0,\n trailingButtonLabel: unref(t)(\"Clear search\"),\n type: \"search\",\n onTrailingButtonClick: onCloseSearch\n }, {\n \"trailing-button-icon\": withCtx(() => [\n createVNode(IconClose, { size: 20 })\n ]),\n _: 1\n }, 8, [\"modelValue\", \"aria-label\", \"placeholder\", \"showTrailingButton\", \"trailingButtonLabel\"]),\n hasActions() ? (openBlock(), createElementBlock(\"div\", {\n key: 0,\n ref: \"actionsContainer\",\n class: normalizeClass([\"app-navigation-search__actions\", {\n \"app-navigation-search__actions--hidden\": !showActions.value,\n \"hidden-visually\": hideActions.value\n }])\n }, [\n renderSlot(_ctx.$slots, \"actions\", {}, void 0, true)\n ], 2)) : createCommentVNode(\"\", true)\n ], 2);\n };\n }\n});\nconst NcAppNavigationSearch = /* @__PURE__ */ _export_sfc(_sfc_main, [[\"__scopeId\", \"data-v-191b6717\"]]);\nexport {\n NcAppNavigationSearch as N\n};\n//# sourceMappingURL=NcAppNavigationSearch-CQQWb1Eq.mjs.map\n","import '../assets/NcAppNavigationSettings-mWFhcXm0.css';\nimport { defineComponent, ref, useTemplateRef, computed, openBlock, createElementBlock, normalizeClass, createElementVNode, createVNode, unref, withCtx, createTextVNode, toDisplayString, Transition, withDirectives, renderSlot, vShow } from \"vue\";\nimport { C as mdiCog, D as mdiCogOutline } from \"./mdi-CpchYUUV.mjs\";\nimport { onClickOutside } from \"@vueuse/core\";\nimport { N as NcButton } from \"./NcButton-jvoYS2my.mjs\";\nimport { N as NcIconSvgWrapper } from \"./NcIconSvgWrapper-g8ubWhoz.mjs\";\nimport { r as register, B as t47, a as t } from \"./_l10n-wdIzZwir.mjs\";\nimport { c as createElementId } from \"./createElementId-DhjFt1I9.mjs\";\nimport { a as isLegacy } from \"./legacy-BoqDmOCa.mjs\";\nimport { _ as _export_sfc } from \"./_plugin-vue_export-helper-1tPrXgE0.mjs\";\nregister(t47);\nconst _hoisted_1 = [\"id\"];\nconst _sfc_main = /* @__PURE__ */ defineComponent({\n __name: \"NcAppNavigationSettings\",\n props: {\n excludeClickOutsideSelectors: { default: () => [] },\n name: { default: () => t(\"Settings\") }\n },\n setup(__props) {\n const contentId = createElementId();\n const open = ref(false);\n const container2 = useTemplateRef(\"wrapperElement\");\n const ignore = computed(() => Array.isArray(__props.excludeClickOutsideSelectors) ? __props.excludeClickOutsideSelectors : __props.excludeClickOutsideSelectors.split(\" \"));\n onClickOutside(container2, () => {\n open.value = false;\n }, { ignore });\n return (_ctx, _cache) => {\n return openBlock(), createElementBlock(\"div\", {\n ref: \"wrapperElement\",\n class: normalizeClass(_ctx.$style.container)\n }, [\n createElementVNode(\"div\", {\n class: normalizeClass(_ctx.$style.header)\n }, [\n createVNode(NcButton, {\n \"aria-controls\": unref(contentId),\n \"aria-expanded\": open.value ? \"true\" : \"false\",\n class: normalizeClass(_ctx.$style.button),\n alignment: \"start\",\n variant: \"tertiary\",\n wide: \"\",\n onClick: _cache[0] || (_cache[0] = ($event) => open.value = !open.value)\n }, {\n icon: withCtx(() => [\n createVNode(NcIconSvgWrapper, {\n path: unref(isLegacy) ? unref(mdiCog) : unref(mdiCogOutline)\n }, null, 8, [\"path\"])\n ]),\n default: withCtx(() => [\n createTextVNode(\" \" + toDisplayString(__props.name), 1)\n ]),\n _: 1\n }, 8, [\"aria-controls\", \"aria-expanded\", \"class\"])\n ], 2),\n createVNode(Transition, {\n enterActiveClass: _ctx.$style.animationActive,\n leaveActiveClass: _ctx.$style.animationActive,\n enterFromClass: _ctx.$style.animationStop,\n leaveToClass: _ctx.$style.animationStop\n }, {\n default: withCtx(() => [\n withDirectives(createElementVNode(\"div\", {\n id: unref(contentId),\n class: normalizeClass(_ctx.$style.content)\n }, [\n renderSlot(_ctx.$slots, \"default\")\n ], 10, _hoisted_1), [\n [vShow, open.value]\n ])\n ]),\n _: 3\n }, 8, [\"enterActiveClass\", \"leaveActiveClass\", \"enterFromClass\", \"leaveToClass\"])\n ], 2);\n };\n }\n});\nconst container = \"_container_Cocg7\";\nconst header = \"_header_cORcE\";\nconst button = \"_button_ypW42\";\nconst content = \"_content_IA45l\";\nconst animationActive = \"_animationActive_T-91l\";\nconst animationStop = \"_animationStop_q9z2N\";\nconst style0 = {\n container,\n header,\n button,\n content,\n animationActive,\n animationStop\n};\nconst cssModules = {\n \"$style\": style0\n};\nconst NcAppNavigationSettings = /* @__PURE__ */ _export_sfc(_sfc_main, [[\"__cssModules\", cssModules]]);\nexport {\n NcAppNavigationSettings as N\n};\n//# sourceMappingURL=NcAppNavigationSettings-DoMjRExO.mjs.map\n","import '../assets/NcAppSettingsDialog-Dh_scIK4.css';\nimport { defineComponent, inject, openBlock, createElementBlock, normalizeClass, unref, toDisplayString, useModel, provide, toRef, useTemplateRef, ref, computed, onBeforeUnmount, warn, createBlock, createSlots, withCtx, createElementVNode, renderSlot, createCommentVNode, Fragment, renderList, withKeys, withModifiers, mergeModels } from \"vue\";\nimport debounce from \"debounce\";\nimport { N as NcDialog } from \"./NcDialog-D617YI0t.mjs\";\nimport { _ as _sfc_main$2 } from \"./NcVNodes.vue_vue_type_script_lang-BqUHinRZ.mjs\";\nimport { u as useLocalizedAppName, A as APP_VERSION } from \"./appName-DyNMVZpX.mjs\";\nimport { A as APP_SETTINGS_LEGACY_DESIGN_KEY, a as APP_SETTINGS_REGISTRATION_KEY } from \"./useAppSettingsDialog-C73Wx6iQ.mjs\";\nimport { _ as _export_sfc } from \"./_plugin-vue_export-helper-1tPrXgE0.mjs\";\nimport { useIsMobile } from \"../composables/useIsMobile/index.mjs\";\nimport { r as register, I as t48, a as t } from \"./_l10n-wdIzZwir.mjs\";\nimport { i as isLegacy34 } from \"./legacy-BoqDmOCa.mjs\";\nconst _sfc_main$1 = /* @__PURE__ */ defineComponent({\n __name: \"NcAppSettingsDialogVersion\",\n setup(__props) {\n const legacy = inject(APP_SETTINGS_LEGACY_DESIGN_KEY);\n const localizedAppName = useLocalizedAppName();\n return (_ctx, _cache) => {\n return openBlock(), createElementBlock(\"div\", {\n class: normalizeClass([_ctx.$style.appSettingsDialogVersion, { [_ctx.$style.appSettingsDialogVersion__legacy]: unref(legacy) }])\n }, toDisplayString(unref(localizedAppName)) + \" \" + toDisplayString(unref(APP_VERSION)), 3);\n };\n }\n});\nconst appSettingsDialogVersion = \"_appSettingsDialogVersion_Y2viq\";\nconst appSettingsDialogVersion__legacy = \"_appSettingsDialogVersion__legacy_I-lpS\";\nconst style0 = {\n \"material-design-icon\": \"_material-design-icon_1zyjw\",\n appSettingsDialogVersion,\n appSettingsDialogVersion__legacy\n};\nconst cssModules = {\n \"$style\": style0\n};\nconst NcAppSettingsDialogVersion = /* @__PURE__ */ _export_sfc(_sfc_main$1, [[\"__cssModules\", cssModules]]);\nregister(t48);\nconst _hoisted_1 = {\n key: 0,\n class: \"app-settings__title\"\n};\nconst _hoisted_2 = {\n key: 1,\n class: \"navigation-list\"\n};\nconst _hoisted_3 = [\"aria-current\", \"href\", \"onClick\", \"onKeydown\"];\nconst _hoisted_4 = {\n key: 0,\n class: \"navigation-list__link-icon\"\n};\nconst _hoisted_5 = { class: \"navigation-list__link-text\" };\nconst _sfc_main = /* @__PURE__ */ defineComponent({\n __name: \"NcAppSettingsDialog\",\n props: /* @__PURE__ */ mergeModels({\n showNavigation: { type: Boolean },\n container: { default: \"body\" },\n name: { default: \"\" },\n additionalTrapElements: { default: () => [] },\n legacy: { type: Boolean, default: false },\n noVersion: { type: Boolean, default: false }\n }, {\n \"open\": { type: Boolean, ...{ required: true } },\n \"openModifiers\": {}\n }),\n emits: [\"update:open\"],\n setup(__props) {\n const open = useModel(__props, \"open\");\n const props = __props;\n provide(APP_SETTINGS_REGISTRATION_KEY, {\n registerSection,\n unregisterSection\n });\n provide(APP_SETTINGS_LEGACY_DESIGN_KEY, toRef(() => props.legacy));\n const settingsScrollerElement = useTemplateRef(\"settingsScroller\");\n const isMobile = useIsMobile();\n const selectedSection = ref(\"\");\n const linkClicked = ref(false);\n const registeredSections = ref([]);\n const hasNavigation = computed(() => !isMobile.value && props.showNavigation);\n const hasNavigationIcons = computed(() => registeredSections.value.some(({ icon }) => !!icon));\n const unfocusNavigationItem = debounce(() => {\n selectedSection.value = \"\";\n if (document.activeElement?.className.includes(\"navigation-list__link\")) {\n document.activeElement.blur();\n }\n }, 300);\n const sectionsOrderMap = /* @__PURE__ */ new Map();\n onBeforeUnmount(() => {\n sectionsOrderMap.clear();\n });\n function handleSettingsNavigationClick(item) {\n linkClicked.value = true;\n document.getElementById(\"settings-section_\" + item).scrollIntoView({\n behavior: \"smooth\",\n inline: \"nearest\"\n });\n selectedSection.value = item;\n setTimeout(() => {\n linkClicked.value = false;\n }, 1e3);\n }\n function handleCloseModal(isOpen) {\n if (isOpen) {\n return;\n }\n open.value = false;\n settingsScrollerElement.value.scrollTop = 0;\n }\n function handleScroll() {\n if (open.value && !linkClicked.value) {\n unfocusNavigationItem();\n }\n }\n function registerSection(id, name, order, icon) {\n if (registeredSections.value.some(({ id: otherId }) => id === otherId)) {\n throw new Error(`Duplicate section id found: ${id}. Settings navigation sections must have unique section ids.`);\n }\n if (registeredSections.value.some(({ name: otherName }) => name === otherName)) {\n warn(`Duplicate section name found: ${name}. Settings navigation sections must have unique section names.`);\n }\n if (order !== void 0) {\n sectionsOrderMap.set(id, order);\n } else if (sectionsOrderMap.has(id)) {\n order = sectionsOrderMap.get(id);\n } else {\n order = Math.max(0, ...sectionsOrderMap.values()) + 1;\n sectionsOrderMap.set(id, order);\n }\n registeredSections.value = [...registeredSections.value, { id, name, order, icon }].sort(({ order: orderA }, { order: orderB }) => {\n return orderA - orderB;\n });\n if (registeredSections.value.length === 1) {\n selectedSection.value = id;\n }\n }\n function unregisterSection(id) {\n registeredSections.value = registeredSections.value.filter(({ id: otherId }) => id !== otherId);\n if (selectedSection.value === id) {\n selectedSection.value = registeredSections.value[0]?.id ?? \"\";\n }\n }\n return (_ctx, _cache) => {\n return open.value ? (openBlock(), createBlock(NcDialog, {\n key: 0,\n class: normalizeClass([\"app-settings\", { \"app-settings--legacy\": unref(isLegacy34) }]),\n contentClasses: \"app-settings__content\",\n navigationClasses: \"app-settings__navigation\",\n additionalTrapElements: __props.additionalTrapElements,\n container: __props.container,\n closeOnClickOutside: \"\",\n \"navigation-aria-label\": unref(t)(\"Settings navigation\"),\n size: \"large\",\n name: __props.name,\n \"onUpdate:open\": handleCloseModal\n }, createSlots({\n default: withCtx(() => [\n createElementVNode(\"div\", {\n ref: \"settingsScroller\",\n onScroll: handleScroll\n }, [\n renderSlot(_ctx.$slots, \"default\", {}, void 0, true),\n !__props.noVersion ? (openBlock(), createBlock(NcAppSettingsDialogVersion, { key: 0 })) : createCommentVNode(\"\", true)\n ], 544)\n ]),\n _: 2\n }, [\n hasNavigation.value ? {\n name: \"navigation\",\n fn: withCtx(({ isCollapsed }) => [\n !unref(isLegacy34) ? (openBlock(), createElementBlock(\"div\", _hoisted_1, toDisplayString(__props.name), 1)) : createCommentVNode(\"\", true),\n !isCollapsed ? (openBlock(), createElementBlock(\"ul\", _hoisted_2, [\n (openBlock(true), createElementBlock(Fragment, null, renderList(registeredSections.value, (section) => {\n return openBlock(), createElementBlock(\"li\", {\n key: section.id\n }, [\n createElementVNode(\"a\", {\n \"aria-current\": `${section.id === selectedSection.value}`,\n class: normalizeClass([\"navigation-list__link\", {\n \"navigation-list__link--active\": section.id === selectedSection.value,\n \"navigation-list__link--icon\": hasNavigationIcons.value\n }]),\n href: `#settings-section_${section.id}`,\n tabindex: \"0\",\n onClick: withModifiers(($event) => handleSettingsNavigationClick(section.id), [\"prevent\"]),\n onKeydown: withKeys(($event) => handleSettingsNavigationClick(section.id), [\"enter\"])\n }, [\n hasNavigationIcons.value ? (openBlock(), createElementBlock(\"div\", _hoisted_4, [\n section.icon ? (openBlock(), createBlock(_sfc_main$2, {\n key: 0,\n vnodes: section.icon\n }, null, 8, [\"vnodes\"])) : createCommentVNode(\"\", true)\n ])) : createCommentVNode(\"\", true),\n createElementVNode(\"span\", _hoisted_5, toDisplayString(section.name), 1)\n ], 42, _hoisted_3)\n ]);\n }), 128))\n ])) : createCommentVNode(\"\", true)\n ]),\n key: \"0\"\n } : void 0\n ]), 1032, [\"class\", \"additionalTrapElements\", \"container\", \"navigation-aria-label\", \"name\"])) : createCommentVNode(\"\", true);\n };\n }\n});\nconst NcAppSettingsDialog = /* @__PURE__ */ _export_sfc(_sfc_main, [[\"__scopeId\", \"data-v-71803906\"]]);\nexport {\n NcAppSettingsDialog as N\n};\n//# sourceMappingURL=NcAppSettingsDialog-BPcEYLjP.mjs.map\n","import '../assets/NcAppSettingsShortcutsSection-BHxkQTg2.css';\nimport { defineComponent, openBlock, createBlock, unref, withCtx, createElementVNode, normalizeClass, renderSlot } from \"vue\";\nimport { N as NcAppSettingsSection } from \"./NcAppSettingsSection-BosSmisT.mjs\";\nimport { r as register, p as t31, a as t } from \"./_l10n-wdIzZwir.mjs\";\nimport { _ as _export_sfc } from \"./_plugin-vue_export-helper-1tPrXgE0.mjs\";\nregister(t31);\nconst _sfc_main = /* @__PURE__ */ defineComponent({\n __name: \"NcAppSettingsShortcutsSection\",\n setup(__props) {\n return (_ctx, _cache) => {\n return openBlock(), createBlock(NcAppSettingsSection, {\n id: \"keyboard-shortcuts\",\n name: unref(t)(\"Keyboard shortcuts\")\n }, {\n default: withCtx(() => [\n createElementVNode(\"div\", {\n class: normalizeClass(_ctx.$style.appSettingsSectionShortcuts)\n }, [\n renderSlot(_ctx.$slots, \"default\")\n ], 2)\n ]),\n _: 3\n }, 8, [\"name\"]);\n };\n }\n});\nconst appSettingsSectionShortcuts = \"_appSettingsSectionShortcuts_Epzxx\";\nconst style0 = {\n appSettingsSectionShortcuts\n};\nconst cssModules = {\n \"$style\": style0\n};\nconst NcAppSettingsShortcutsSection = /* @__PURE__ */ _export_sfc(_sfc_main, [[\"__cssModules\", cssModules]]);\nexport {\n NcAppSettingsShortcutsSection as N\n};\n//# sourceMappingURL=NcAppSettingsShortcutsSection-DLwubKV9.mjs.map\n","const directive = {\n mounted(el) {\n el.focus();\n }\n};\nexport {\n directive as default\n};\n//# sourceMappingURL=index.mjs.map\n","// THIS FILE IS AUTOMATICALLY GENERATED DO NOT EDIT DIRECTLY\n// See update-tlds.js for encoding/decoding format\n// https://data.iana.org/TLD/tlds-alpha-by-domain.txt\nconst encodedTlds = 'aaa1rp3bb0ott3vie4c1le2ogado5udhabi7c0ademy5centure6ountant0s9o1tor4d0s1ult4e0g1ro2tna4f0l1rica5g0akhan5ency5i0g1rbus3force5tel5kdn3l0ibaba4pay4lfinanz6state5y2sace3tom5m0azon4ericanexpress7family11x2fam3ica3sterdam8nalytics7droid5quan4z2o0l2partments8p0le4q0uarelle8r0ab1mco4chi3my2pa2t0e3s0da2ia2sociates9t0hleta5torney7u0ction5di0ble3o3spost5thor3o0s4w0s2x0a2z0ure5ba0by2idu3namex4d1k2r0celona5laycard4s5efoot5gains6seball5ketball8uhaus5yern5b0c1t1va3cg1n2d1e0ats2uty4er2rlin4st0buy5t2f1g1h0arti5i0ble3d1ke2ng0o3o1z2j1lack0friday9ockbuster8g1omberg7ue3m0s1w2n0pparibas9o0ats3ehringer8fa2m1nd2o0k0ing5sch2tik2on4t1utique6x2r0adesco6idgestone9oadway5ker3ther5ussels7s1t1uild0ers6siness6y1zz3v1w1y1z0h3ca0b1fe2l0l1vinklein9m0era3p2non3petown5ital0one8r0avan4ds2e0er0s4s2sa1e1h1ino4t0ering5holic7ba1n1re3c1d1enter4o1rn3f0a1d2g1h0anel2nel4rity4se2t2eap3intai5ristmas6ome4urch5i0priani6rcle4sco3tadel4i0c2y3k1l0aims4eaning6ick2nic1que6othing5ud3ub0med6m1n1o0ach3des3ffee4llege4ogne5m0mbank4unity6pany2re3uter5sec4ndos3struction8ulting7tact3ractors9oking4l1p2rsica5untry4pon0s4rses6pa2r0edit0card4union9icket5own3s1uise0s6u0isinella9v1w1x1y0mru3ou3z2dad1nce3ta1e1ing3sun4y2clk3ds2e0al0er2s3gree4livery5l1oitte5ta3mocrat6ntal2ist5si0gn4v2hl2iamonds6et2gital5rect0ory7scount3ver5h2y2j1k1m1np2o0cs1tor4g1mains5t1wnload7rive4tv2ubai3pont4rban5vag2r2z2earth3t2c0o2deka3u0cation8e1g1mail3erck5nergy4gineer0ing9terprises10pson4quipment8r0icsson6ni3s0q1tate5t1u0rovision8s2vents5xchange6pert3osed4ress5traspace10fage2il1rwinds6th3mily4n0s2rm0ers5shion4t3edex3edback6rrari3ero6i0delity5o2lm2nal1nce1ial7re0stone6mdale6sh0ing5t0ness6j1k1lickr3ghts4r2orist4wers5y2m1o0o0d1tball6rd1ex2sale4um3undation8x2r0ee1senius7l1ogans4ntier7tr2ujitsu5n0d2rniture7tbol5yi3ga0l0lery3o1up4me0s3p1rden4y2b0iz3d0n2e0a1nt0ing5orge5f1g0ee3h1i0ft0s3ves2ing5l0ass3e1obal2o4m0ail3bh2o1x2n1odaddy5ld0point6f2odyear5g0le4p1t1v2p1q1r0ainger5phics5tis4een3ipe3ocery4up4s1t1u0cci3ge2ide2tars5ru3w1y2hair2mburg5ngout5us3bo2dfc0bank7ealth0care8lp1sinki6re1mes5iphop4samitsu7tachi5v2k0t2m1n1ockey4ldings5iday5medepot5goods5s0ense7nda3rse3spital5t0ing5t0els3mail5use3w2r1sbc3t1u0ghes5yatt3undai7ibm2cbc2e1u2d1e0ee3fm2kano4l1m0amat4db2mo0bilien9n0c1dustries8finiti5o2g1k1stitute6urance4e4t0ernational10uit4vestments10o1piranga7q1r0ish4s0maili5t0anbul7t0au2v3jaguar4va3cb2e0ep2tzt3welry6io2ll2m0p2nj2o0bs1urg4t1y2p0morgan6rs3uegos4niper7kaufen5ddi3e0rryhotels6properties14fh2g1h1i0a1ds2m1ndle4tchen5wi3m1n1oeln3matsu5sher5p0mg2n2r0d1ed3uokgroup8w1y0oto4z2la0caixa5mborghini8er3nd0rover6xess5salle5t0ino3robe5w0yer5b1c1ds2ease3clerc5frak4gal2o2xus4gbt3i0dl2fe0insurance9style7ghting6ke2lly3mited4o2ncoln4k2ve1ing5k1lc1p2oan0s3cker3us3l1ndon4tte1o3ve3pl0financial11r1s1t0d0a3u0ndbeck6xe1ury5v1y2ma0drid4if1son4keup4n0agement7go3p1rket0ing3s4riott5shalls7ttel5ba2c0kinsey7d1e0d0ia3et2lbourne7me1orial6n0u2rck0msd7g1h1iami3crosoft7l1ni1t2t0subishi9k1l0b1s2m0a2n1o0bi0le4da2e1i1m1nash3ey2ster5rmon3tgage6scow4to0rcycles9v0ie4p1q1r1s0d2t0n1r2u0seum3ic4v1w1x1y1z2na0b1goya4me2vy3ba2c1e0c1t0bank4flix4work5ustar5w0s2xt0direct7us4f0l2g0o2hk2i0co2ke1on3nja3ssan1y5l1o0kia3rton4w0ruz3tv4p1r0a1w2tt2u1yc2z2obi1server7ffice5kinawa6layan0group9lo3m0ega4ne1g1l0ine5oo2pen3racle3nge4g0anic5igins6saka4tsuka4t2vh3pa0ge2nasonic7ris2s1tners4s1y3y2ccw3e0t2f0izer5g1h0armacy6d1ilips5one2to0graphy6s4ysio5ics1tet2ures6d1n0g1k2oneer5zza4k1l0ace2y0station9umbing5s3m1n0c2ohl2ker3litie5rn2st3r0axi3ess3ime3o0d0uctions8f1gressive8mo2perties3y5tection8u0dential9s1t1ub2w0c2y2qa1pon3uebec3st5racing4dio4e0ad1lestate6tor2y4cipes5d0umbrella9hab3ise0n3t2liance6n0t0als5pair3ort3ublican8st0aurant8view0s5xroth6ich0ardli6oh3l1o1p2o0cks3deo3gers4om3s0vp3u0gby3hr2n2w0e2yukyu6sa0arland6fe0ty4kura4le1on3msclub4ung5ndvik0coromant12ofi4p1rl2s1ve2xo3b0i1s2c0b1haeffler7midt4olarships8ol3ule3warz5ience5ot3d1e0arch3t2cure1ity6ek2lect4ner3rvices6ven3w1x0y3fr2g1h0angrila6rp3ell3ia1ksha5oes2p0ping5uji3w3i0lk2na1gles5te3j1k0i0n2y0pe4l0ing4m0art3ile4n0cf3o0ccer3ial4ftbank4ware6hu2lar2utions7ng1y2y2pa0ce3ort2t3r0l2s1t0ada2ples4r1tebank4farm7c0group6ockholm6rage3e3ream4udio2y3yle4u0cks3pplies3y2ort5rf1gery5zuki5v1watch4iss4x1y0dney4stems6z2tab1ipei4lk2obao4rget4tamotors6r2too4x0i3c0i2d0k2eam2ch0nology8l1masek5nnis4va3f1g1h0d1eater2re6iaa2ckets5enda4ps2res2ol4j0maxx4x2k0maxx5l1m0all4n1o0day3kyo3ols3p1ray3shiba5tal3urs3wn2yota3s3r0ade1ing4ining5vel0ers0insurance16ust3v2t1ube2i1nes3shu4v0s2w1z2ua1bank3s2g1k1nicom3versity8o2ol2ps2s1y1z2va0cations7na1guard7c1e0gas3ntures6risign5mögensberater2ung14sicherung10t2g1i0ajes4deo3g1king4llas4n1p1rgin4sa1ion4va1o3laanderen9n1odka3lvo3te1ing3o2yage5u2wales2mart4ter4ng0gou5tch0es6eather0channel12bcam3er2site5d0ding5ibo2r3f1hoswho6ien2ki2lliamhill9n0dows4e1ners6me2oodside6rk0s2ld3w2s1tc1f3xbox3erox4ihuan4n2xx2yz3yachts4hoo3maxun5ndex5e1odobashi7ga2kohama6u0tube6t1un3za0ppos4ra3ero3ip2m1one3uerich6w2';\n// Internationalized domain names containing non-ASCII\nconst encodedUtlds = 'ελ1υ2бг1ел3дети4ею2католик6ом3мкд2он1сква6онлайн5рг3рус2ф2сайт3рб3укр3қаз3հայ3ישראל5קום3ابوظبي5رامكو5لاردن4بحرين5جزائر5سعودية6عليان5مغرب5مارات5یران5بارت2زار4يتك3ھارت5تونس4سودان3رية5شبكة4عراق2ب2مان4فلسطين6قطر3كاثوليك6وم3مصر2ليسيا5وريتانيا7قع4همراه5پاکستان7ڀارت4कॉम3नेट3भारत0म्3ोत5संगठन5বাংলা5ভারত2ৰত4ਭਾਰਤ4ભારત4ଭାରତ4இந்தியா6லங்கை6சிங்கப்பூர்11భారత్5ಭಾರತ4ഭാരതം5ලංකා4คอม3ไทย3ລາວ3გე2みんな3アマゾン4クラウド4グーグル4コム2ストア3セール3ファッション6ポイント4世界2中信1国1國1文网3亚马逊3企业2佛山2信息2健康2八卦2公司1益2台湾1灣2商城1店1标2嘉里0大酒店5在线2大拿2天主教3娱乐2家電2广东2微博2慈善2我爱你3手机2招聘2政务1府2新加坡2闻2时尚2書籍2机构2淡马锡3游戏2澳門2点看2移动2组织机构4网址1店1站1络2联通2谷歌2购物2通販2集团2電訊盈科4飞利浦3食品2餐厅2香格里拉3港2닷넷1컴2삼성2한국2';\n\n/**\n * Finite State Machine generation utilities\n */\n\n/**\n * @template T\n * @typedef {{ [group: string]: T[] }} Collections\n */\n\n/**\n * @typedef {{ [group: string]: true }} Flags\n */\n\n// Keys in scanner Collections instances\nconst numeric = 'numeric';\nconst ascii = 'ascii';\nconst alpha = 'alpha';\nconst asciinumeric = 'asciinumeric';\nconst alphanumeric = 'alphanumeric';\nconst domain = 'domain';\nconst emoji = 'emoji';\nconst scheme = 'scheme';\nconst slashscheme = 'slashscheme';\nconst whitespace = 'whitespace';\n\n/**\n * @template T\n * @param {string} name\n * @param {Collections<T>} groups to register in\n * @returns {T[]} Current list of tokens in the given collection\n */\nfunction registerGroup(name, groups) {\n if (!(name in groups)) {\n groups[name] = [];\n }\n return groups[name];\n}\n\n/**\n * @template T\n * @param {T} t token to add\n * @param {Collections<T>} groups\n * @param {Flags} flags\n */\nfunction addToGroups(t, flags, groups) {\n if (flags[numeric]) {\n flags[asciinumeric] = true;\n flags[alphanumeric] = true;\n }\n if (flags[ascii]) {\n flags[asciinumeric] = true;\n flags[alpha] = true;\n }\n if (flags[asciinumeric]) {\n flags[alphanumeric] = true;\n }\n if (flags[alpha]) {\n flags[alphanumeric] = true;\n }\n if (flags[alphanumeric]) {\n flags[domain] = true;\n }\n if (flags[emoji]) {\n flags[domain] = true;\n }\n for (const k in flags) {\n const group = registerGroup(k, groups);\n if (group.indexOf(t) < 0) {\n group.push(t);\n }\n }\n}\n\n/**\n * @template T\n * @param {T} t token to check\n * @param {Collections<T>} groups\n * @returns {Flags} group flags that contain this token\n */\nfunction flagsForToken(t, groups) {\n const result = {};\n for (const c in groups) {\n if (groups[c].indexOf(t) >= 0) {\n result[c] = true;\n }\n }\n return result;\n}\n\n/**\n * @template T\n * @typedef {null | T } Transition\n */\n\n/**\n * Define a basic state machine state. j is the list of character transitions,\n * jr is the list of regex-match transitions, jd is the default state to\n * transition to t is the accepting token type, if any. If this is the terminal\n * state, then it does not emit a token.\n *\n * The template type T represents the type of the token this state accepts. This\n * should be a string (such as of the token exports in `text.js`) or a\n * MultiToken subclass (from `multi.js`)\n *\n * @template T\n * @param {T} [token] Token that this state emits\n */\nfunction State(token = null) {\n // this.n = null; // DEBUG: State name\n /** @type {{ [input: string]: State<T> }} j */\n this.j = {}; // IMPLEMENTATION 1\n // this.j = []; // IMPLEMENTATION 2\n /** @type {[RegExp, State<T>][]} jr */\n this.jr = [];\n /** @type {?State<T>} jd */\n this.jd = null;\n /** @type {?T} t */\n this.t = token;\n}\n\n/**\n * Scanner token groups\n * @type Collections<string>\n */\nState.groups = {};\nState.prototype = {\n accepts() {\n return !!this.t;\n },\n /**\n * Follow an existing transition from the given input to the next state.\n * Does not mutate.\n * @param {string} input character or token type to transition on\n * @returns {?State<T>} the next state, if any\n */\n go(input) {\n const state = this;\n const nextState = state.j[input];\n if (nextState) {\n return nextState;\n }\n for (let i = 0; i < state.jr.length; i++) {\n const regex = state.jr[i][0];\n const nextState = state.jr[i][1]; // note: might be empty to prevent default jump\n if (nextState && regex.test(input)) {\n return nextState;\n }\n }\n // Nowhere left to jump! Return default, if any\n return state.jd;\n },\n /**\n * Whether the state has a transition for the given input. Set the second\n * argument to true to only look for an exact match (and not a default or\n * regular-expression-based transition)\n * @param {string} input\n * @param {boolean} exactOnly\n */\n has(input, exactOnly = false) {\n return exactOnly ? input in this.j : !!this.go(input);\n },\n /**\n * Short for \"transition all\"; create a transition from the array of items\n * in the given list to the same final resulting state.\n * @param {string | string[]} inputs Group of inputs to transition on\n * @param {Transition<T> | State<T>} [next] Transition options\n * @param {Flags} [flags] Collections flags to add token to\n * @param {Collections<T>} [groups] Master list of token groups\n */\n ta(inputs, next, flags, groups) {\n for (let i = 0; i < inputs.length; i++) {\n this.tt(inputs[i], next, flags, groups);\n }\n },\n /**\n * Short for \"take regexp transition\"; defines a transition for this state\n * when it encounters a token which matches the given regular expression\n * @param {RegExp} regexp Regular expression transition (populate first)\n * @param {T | State<T>} [next] Transition options\n * @param {Flags} [flags] Collections flags to add token to\n * @param {Collections<T>} [groups] Master list of token groups\n * @returns {State<T>} taken after the given input\n */\n tr(regexp, next, flags, groups) {\n groups = groups || State.groups;\n let nextState;\n if (next && next.j) {\n nextState = next;\n } else {\n // Token with maybe token groups\n nextState = new State(next);\n if (flags && groups) {\n addToGroups(next, flags, groups);\n }\n }\n this.jr.push([regexp, nextState]);\n return nextState;\n },\n /**\n * Short for \"take transitions\", will take as many sequential transitions as\n * the length of the given input and returns the\n * resulting final state.\n * @param {string | string[]} input\n * @param {T | State<T>} [next] Transition options\n * @param {Flags} [flags] Collections flags to add token to\n * @param {Collections<T>} [groups] Master list of token groups\n * @returns {State<T>} taken after the given input\n */\n ts(input, next, flags, groups) {\n let state = this;\n const len = input.length;\n if (!len) {\n return state;\n }\n for (let i = 0; i < len - 1; i++) {\n state = state.tt(input[i]);\n }\n return state.tt(input[len - 1], next, flags, groups);\n },\n /**\n * Short for \"take transition\", this is a method for building/working with\n * state machines.\n *\n * If a state already exists for the given input, returns it.\n *\n * If a token is specified, that state will emit that token when reached by\n * the linkify engine.\n *\n * If no state exists, it will be initialized with some default transitions\n * that resemble existing default transitions.\n *\n * If a state is given for the second argument, that state will be\n * transitioned to on the given input regardless of what that input\n * previously did.\n *\n * Specify a token group flags to define groups that this token belongs to.\n * The token will be added to corresponding entires in the given groups\n * object.\n *\n * @param {string} input character, token type to transition on\n * @param {T | State<T>} [next] Transition options\n * @param {Flags} [flags] Collections flags to add token to\n * @param {Collections<T>} [groups] Master list of groups\n * @returns {State<T>} taken after the given input\n */\n tt(input, next, flags, groups) {\n groups = groups || State.groups;\n const state = this;\n\n // Check if existing state given, just a basic transition\n if (next && next.j) {\n state.j[input] = next;\n return next;\n }\n const t = next;\n\n // Take the transition with the usual default mechanisms and use that as\n // a template for creating the next state\n let nextState,\n templateState = state.go(input);\n if (templateState) {\n nextState = new State();\n Object.assign(nextState.j, templateState.j);\n nextState.jr.push.apply(nextState.jr, templateState.jr);\n nextState.jd = templateState.jd;\n nextState.t = templateState.t;\n } else {\n nextState = new State();\n }\n if (t) {\n // Ensure newly token is in the same groups as the old token\n if (groups) {\n if (nextState.t && typeof nextState.t === 'string') {\n const allFlags = Object.assign(flagsForToken(nextState.t, groups), flags);\n addToGroups(t, allFlags, groups);\n } else if (flags) {\n addToGroups(t, flags, groups);\n }\n }\n nextState.t = t; // overwrite anything that was previously there\n }\n state.j[input] = nextState;\n return nextState;\n }\n};\n\n// Helper functions to improve minification (not exported outside linkifyjs module)\n\n/**\n * @template T\n * @param {State<T>} state\n * @param {string | string[]} input\n * @param {Flags} [flags]\n * @param {Collections<T>} [groups]\n */\nconst ta = (state, input, next, flags, groups) => state.ta(input, next, flags, groups);\n\n/**\n * @template T\n * @param {State<T>} state\n * @param {RegExp} regexp\n * @param {T | State<T>} [next]\n * @param {Flags} [flags]\n * @param {Collections<T>} [groups]\n */\nconst tr = (state, regexp, next, flags, groups) => state.tr(regexp, next, flags, groups);\n\n/**\n * @template T\n * @param {State<T>} state\n * @param {string | string[]} input\n * @param {T | State<T>} [next]\n * @param {Flags} [flags]\n * @param {Collections<T>} [groups]\n */\nconst ts = (state, input, next, flags, groups) => state.ts(input, next, flags, groups);\n\n/**\n * @template T\n * @param {State<T>} state\n * @param {string} input\n * @param {T | State<T>} [next]\n * @param {Collections<T>} [groups]\n * @param {Flags} [flags]\n */\nconst tt = (state, input, next, flags, groups) => state.tt(input, next, flags, groups);\n\n/******************************************************************************\nText Tokens\nIdentifiers for token outputs from the regexp scanner\n******************************************************************************/\n\n// A valid web domain token\nconst WORD = 'WORD'; // only contains a-z\nconst UWORD = 'UWORD'; // contains letters other than a-z, used for IDN\nconst ASCIINUMERICAL = 'ASCIINUMERICAL'; // contains a-z, 0-9\nconst ALPHANUMERICAL = 'ALPHANUMERICAL'; // contains numbers and letters other than a-z, used for IDN\n\n// Special case of word\nconst LOCALHOST = 'LOCALHOST';\n\n// Valid top-level domain, special case of WORD (see tlds.js)\nconst TLD = 'TLD';\n\n// Valid IDN TLD, special case of UWORD (see tlds.js)\nconst UTLD = 'UTLD';\n\n// The scheme portion of a web URI protocol. Supported types include: `mailto`,\n// `file`, and user-defined custom protocols. Limited to schemes that contain\n// only letters\nconst SCHEME = 'SCHEME';\n\n// Similar to SCHEME, except makes distinction for schemes that must always be\n// followed by `://`, not just `:`. Supported types include `http`, `https`,\n// `ftp`, `ftps`\nconst SLASH_SCHEME = 'SLASH_SCHEME';\n\n// Any sequence of digits 0-9\nconst NUM = 'NUM';\n\n// Any number of consecutive whitespace characters that are not newline\nconst WS = 'WS';\n\n// New line (unix style)\nconst NL = 'NL'; // \\n\n\n// Opening/closing bracket classes\n// TODO: Rename OPEN -> LEFT and CLOSE -> RIGHT in v5 to fit with Unicode names\n// Also rename angle brackes to LESSTHAN and GREATER THAN\nconst OPENBRACE = 'OPENBRACE'; // {\nconst CLOSEBRACE = 'CLOSEBRACE'; // }\nconst OPENBRACKET = 'OPENBRACKET'; // [\nconst CLOSEBRACKET = 'CLOSEBRACKET'; // ]\nconst OPENPAREN = 'OPENPAREN'; // (\nconst CLOSEPAREN = 'CLOSEPAREN'; // )\nconst OPENANGLEBRACKET = 'OPENANGLEBRACKET'; // <\nconst CLOSEANGLEBRACKET = 'CLOSEANGLEBRACKET'; // >\nconst FULLWIDTHLEFTPAREN = 'FULLWIDTHLEFTPAREN'; // (\nconst FULLWIDTHRIGHTPAREN = 'FULLWIDTHRIGHTPAREN'; // )\nconst LEFTCORNERBRACKET = 'LEFTCORNERBRACKET'; // 「\nconst RIGHTCORNERBRACKET = 'RIGHTCORNERBRACKET'; // 」\nconst LEFTWHITECORNERBRACKET = 'LEFTWHITECORNERBRACKET'; // 『\nconst RIGHTWHITECORNERBRACKET = 'RIGHTWHITECORNERBRACKET'; // 』\nconst FULLWIDTHLESSTHAN = 'FULLWIDTHLESSTHAN'; // <\nconst FULLWIDTHGREATERTHAN = 'FULLWIDTHGREATERTHAN'; // >\n\n// Various symbols\nconst AMPERSAND = 'AMPERSAND'; // &\nconst APOSTROPHE = 'APOSTROPHE'; // '\nconst ASTERISK = 'ASTERISK'; // *\nconst AT = 'AT'; // @\nconst BACKSLASH = 'BACKSLASH'; // \\\nconst BACKTICK = 'BACKTICK'; // `\nconst CARET = 'CARET'; // ^\nconst COLON = 'COLON'; // :\nconst COMMA = 'COMMA'; // ,\nconst DOLLAR = 'DOLLAR'; // $\nconst DOT = 'DOT'; // .\nconst EQUALS = 'EQUALS'; // =\nconst EXCLAMATION = 'EXCLAMATION'; // !\nconst HYPHEN = 'HYPHEN'; // -\nconst PERCENT = 'PERCENT'; // %\nconst PIPE = 'PIPE'; // |\nconst PLUS = 'PLUS'; // +\nconst POUND = 'POUND'; // #\nconst QUERY = 'QUERY'; // ?\nconst QUOTE = 'QUOTE'; // \"\nconst FULLWIDTHMIDDLEDOT = 'FULLWIDTHMIDDLEDOT'; // ・\n\nconst SEMI = 'SEMI'; // ;\nconst SLASH = 'SLASH'; // /\nconst TILDE = 'TILDE'; // ~\nconst UNDERSCORE = 'UNDERSCORE'; // _\n\n// Emoji symbol\nconst EMOJI$1 = 'EMOJI';\n\n// Default token - anything that is not one of the above\nconst SYM = 'SYM';\n\nvar tk = /*#__PURE__*/Object.freeze({\n\t__proto__: null,\n\tALPHANUMERICAL: ALPHANUMERICAL,\n\tAMPERSAND: AMPERSAND,\n\tAPOSTROPHE: APOSTROPHE,\n\tASCIINUMERICAL: ASCIINUMERICAL,\n\tASTERISK: ASTERISK,\n\tAT: AT,\n\tBACKSLASH: BACKSLASH,\n\tBACKTICK: BACKTICK,\n\tCARET: CARET,\n\tCLOSEANGLEBRACKET: CLOSEANGLEBRACKET,\n\tCLOSEBRACE: CLOSEBRACE,\n\tCLOSEBRACKET: CLOSEBRACKET,\n\tCLOSEPAREN: CLOSEPAREN,\n\tCOLON: COLON,\n\tCOMMA: COMMA,\n\tDOLLAR: DOLLAR,\n\tDOT: DOT,\n\tEMOJI: EMOJI$1,\n\tEQUALS: EQUALS,\n\tEXCLAMATION: EXCLAMATION,\n\tFULLWIDTHGREATERTHAN: FULLWIDTHGREATERTHAN,\n\tFULLWIDTHLEFTPAREN: FULLWIDTHLEFTPAREN,\n\tFULLWIDTHLESSTHAN: FULLWIDTHLESSTHAN,\n\tFULLWIDTHMIDDLEDOT: FULLWIDTHMIDDLEDOT,\n\tFULLWIDTHRIGHTPAREN: FULLWIDTHRIGHTPAREN,\n\tHYPHEN: HYPHEN,\n\tLEFTCORNERBRACKET: LEFTCORNERBRACKET,\n\tLEFTWHITECORNERBRACKET: LEFTWHITECORNERBRACKET,\n\tLOCALHOST: LOCALHOST,\n\tNL: NL,\n\tNUM: NUM,\n\tOPENANGLEBRACKET: OPENANGLEBRACKET,\n\tOPENBRACE: OPENBRACE,\n\tOPENBRACKET: OPENBRACKET,\n\tOPENPAREN: OPENPAREN,\n\tPERCENT: PERCENT,\n\tPIPE: PIPE,\n\tPLUS: PLUS,\n\tPOUND: POUND,\n\tQUERY: QUERY,\n\tQUOTE: QUOTE,\n\tRIGHTCORNERBRACKET: RIGHTCORNERBRACKET,\n\tRIGHTWHITECORNERBRACKET: RIGHTWHITECORNERBRACKET,\n\tSCHEME: SCHEME,\n\tSEMI: SEMI,\n\tSLASH: SLASH,\n\tSLASH_SCHEME: SLASH_SCHEME,\n\tSYM: SYM,\n\tTILDE: TILDE,\n\tTLD: TLD,\n\tUNDERSCORE: UNDERSCORE,\n\tUTLD: UTLD,\n\tUWORD: UWORD,\n\tWORD: WORD,\n\tWS: WS\n});\n\n// Note that these two Unicode ones expand into a really big one with Babel\nconst ASCII_LETTER = /[a-z]/;\nconst LETTER = /\\p{L}/u; // Any Unicode character with letter data type\nconst EMOJI = /\\p{Emoji}/u; // Any Unicode emoji character\nconst EMOJI_VARIATION$1 = /\\ufe0f/;\nconst DIGIT = /\\d/;\nconst SPACE = /\\s/;\n\nvar regexp = /*#__PURE__*/Object.freeze({\n\t__proto__: null,\n\tASCII_LETTER: ASCII_LETTER,\n\tDIGIT: DIGIT,\n\tEMOJI: EMOJI,\n\tEMOJI_VARIATION: EMOJI_VARIATION$1,\n\tLETTER: LETTER,\n\tSPACE: SPACE\n});\n\n/**\n\tThe scanner provides an interface that takes a string of text as input, and\n\toutputs an array of tokens instances that can be used for easy URL parsing.\n*/\n\nconst CR = '\\r'; // carriage-return character\nconst LF = '\\n'; // line-feed character\nconst EMOJI_VARIATION = '\\ufe0f'; // Variation selector, follows heart and others\nconst EMOJI_JOINER = '\\u200d'; // zero-width joiner\nconst OBJECT_REPLACEMENT = '\\ufffc'; // whitespace placeholder that sometimes appears in rich text editors\n\nlet tlds = null,\n utlds = null; // don't change so only have to be computed once\n\n/**\n * Scanner output token:\n * - `t` is the token name (e.g., 'NUM', 'EMOJI', 'TLD')\n * - `v` is the value of the token (e.g., '123', '❤️', 'com')\n * - `s` is the start index of the token in the original string\n * - `e` is the end index of the token in the original string\n * @typedef {{t: string, v: string, s: number, e: number}} Token\n */\n\n/**\n * @template T\n * @typedef {{ [collection: string]: T[] }} Collections\n */\n\n/**\n * Initialize the scanner character-based state machine for the given start\n * state\n * @param {[string, boolean][]} customSchemes List of custom schemes, where each\n * item is a length-2 tuple with the first element set to the string scheme, and\n * the second element set to `true` if the `://` after the scheme is optional\n */\nfunction init$2(customSchemes = []) {\n // Frequently used states (name argument removed during minification)\n /** @type Collections<string> */\n const groups = {}; // of tokens\n State.groups = groups;\n /** @type State<string> */\n const Start = new State();\n if (tlds == null) {\n tlds = decodeTlds(encodedTlds);\n }\n if (utlds == null) {\n utlds = decodeTlds(encodedUtlds);\n }\n\n // States for special URL symbols that accept immediately after start\n tt(Start, \"'\", APOSTROPHE);\n tt(Start, '{', OPENBRACE);\n tt(Start, '}', CLOSEBRACE);\n tt(Start, '[', OPENBRACKET);\n tt(Start, ']', CLOSEBRACKET);\n tt(Start, '(', OPENPAREN);\n tt(Start, ')', CLOSEPAREN);\n tt(Start, '<', OPENANGLEBRACKET);\n tt(Start, '>', CLOSEANGLEBRACKET);\n tt(Start, '(', FULLWIDTHLEFTPAREN);\n tt(Start, ')', FULLWIDTHRIGHTPAREN);\n tt(Start, '「', LEFTCORNERBRACKET);\n tt(Start, '」', RIGHTCORNERBRACKET);\n tt(Start, '『', LEFTWHITECORNERBRACKET);\n tt(Start, '』', RIGHTWHITECORNERBRACKET);\n tt(Start, '<', FULLWIDTHLESSTHAN);\n tt(Start, '>', FULLWIDTHGREATERTHAN);\n tt(Start, '&', AMPERSAND);\n tt(Start, '*', ASTERISK);\n tt(Start, '@', AT);\n tt(Start, '`', BACKTICK);\n tt(Start, '^', CARET);\n tt(Start, ':', COLON);\n tt(Start, ',', COMMA);\n tt(Start, '$', DOLLAR);\n tt(Start, '.', DOT);\n tt(Start, '=', EQUALS);\n tt(Start, '!', EXCLAMATION);\n tt(Start, '-', HYPHEN);\n tt(Start, '%', PERCENT);\n tt(Start, '|', PIPE);\n tt(Start, '+', PLUS);\n tt(Start, '#', POUND);\n tt(Start, '?', QUERY);\n tt(Start, '\"', QUOTE);\n tt(Start, '/', SLASH);\n tt(Start, ';', SEMI);\n tt(Start, '~', TILDE);\n tt(Start, '_', UNDERSCORE);\n tt(Start, '\\\\', BACKSLASH);\n tt(Start, '・', FULLWIDTHMIDDLEDOT);\n const Num = tr(Start, DIGIT, NUM, {\n [numeric]: true\n });\n tr(Num, DIGIT, Num);\n const Asciinumeric = tr(Num, ASCII_LETTER, ASCIINUMERICAL, {\n [asciinumeric]: true\n });\n const Alphanumeric = tr(Num, LETTER, ALPHANUMERICAL, {\n [alphanumeric]: true\n });\n\n // State which emits a word token\n const Word = tr(Start, ASCII_LETTER, WORD, {\n [ascii]: true\n });\n tr(Word, DIGIT, Asciinumeric);\n tr(Word, ASCII_LETTER, Word);\n tr(Asciinumeric, DIGIT, Asciinumeric);\n tr(Asciinumeric, ASCII_LETTER, Asciinumeric);\n\n // Same as previous, but specific to non-fsm.ascii alphabet words\n const UWord = tr(Start, LETTER, UWORD, {\n [alpha]: true\n });\n tr(UWord, ASCII_LETTER); // Non-accepting\n tr(UWord, DIGIT, Alphanumeric);\n tr(UWord, LETTER, UWord);\n tr(Alphanumeric, DIGIT, Alphanumeric);\n tr(Alphanumeric, ASCII_LETTER); // Non-accepting\n tr(Alphanumeric, LETTER, Alphanumeric); // Non-accepting\n\n // Whitespace jumps\n // Tokens of only non-newline whitespace are arbitrarily long\n // If any whitespace except newline, more whitespace!\n const Nl = tt(Start, LF, NL, {\n [whitespace]: true\n });\n const Cr = tt(Start, CR, WS, {\n [whitespace]: true\n });\n const Ws = tr(Start, SPACE, WS, {\n [whitespace]: true\n });\n tt(Start, OBJECT_REPLACEMENT, Ws);\n tt(Cr, LF, Nl); // \\r\\n\n tt(Cr, OBJECT_REPLACEMENT, Ws);\n tr(Cr, SPACE, Ws);\n tt(Ws, CR); // non-accepting state to avoid mixing whitespaces\n tt(Ws, LF); // non-accepting state to avoid mixing whitespaces\n tr(Ws, SPACE, Ws);\n tt(Ws, OBJECT_REPLACEMENT, Ws);\n\n // Emoji tokens. They are not grouped by the scanner except in cases where a\n // zero-width joiner is present\n const Emoji = tr(Start, EMOJI, EMOJI$1, {\n [emoji]: true\n });\n tt(Emoji, '#'); // no transition, emoji regex seems to match #\n tr(Emoji, EMOJI, Emoji);\n tt(Emoji, EMOJI_VARIATION, Emoji);\n // tt(Start, EMOJI_VARIATION, Emoji); // This one is sketchy\n\n const EmojiJoiner = tt(Emoji, EMOJI_JOINER);\n tt(EmojiJoiner, '#');\n tr(EmojiJoiner, EMOJI, Emoji);\n // tt(EmojiJoiner, EMOJI_VARIATION, Emoji); // also sketchy\n\n // Generates states for top-level domains\n // Note that this is most accurate when tlds are in alphabetical order\n const wordjr = [[ASCII_LETTER, Word], [DIGIT, Asciinumeric]];\n const uwordjr = [[ASCII_LETTER, null], [LETTER, UWord], [DIGIT, Alphanumeric]];\n for (let i = 0; i < tlds.length; i++) {\n fastts(Start, tlds[i], TLD, WORD, wordjr);\n }\n for (let i = 0; i < utlds.length; i++) {\n fastts(Start, utlds[i], UTLD, UWORD, uwordjr);\n }\n addToGroups(TLD, {\n tld: true,\n ascii: true\n }, groups);\n addToGroups(UTLD, {\n utld: true,\n alpha: true\n }, groups);\n\n // Collect the states generated by different protocols. NOTE: If any new TLDs\n // get added that are also protocols, set the token to be the same as the\n // protocol to ensure parsing works as expected.\n fastts(Start, 'file', SCHEME, WORD, wordjr);\n fastts(Start, 'mailto', SCHEME, WORD, wordjr);\n fastts(Start, 'http', SLASH_SCHEME, WORD, wordjr);\n fastts(Start, 'https', SLASH_SCHEME, WORD, wordjr);\n fastts(Start, 'ftp', SLASH_SCHEME, WORD, wordjr);\n fastts(Start, 'ftps', SLASH_SCHEME, WORD, wordjr);\n addToGroups(SCHEME, {\n scheme: true,\n ascii: true\n }, groups);\n addToGroups(SLASH_SCHEME, {\n slashscheme: true,\n ascii: true\n }, groups);\n\n // Register custom schemes. Assumes each scheme is asciinumeric with hyphens\n customSchemes = customSchemes.sort((a, b) => a[0] > b[0] ? 1 : -1);\n for (let i = 0; i < customSchemes.length; i++) {\n const sch = customSchemes[i][0];\n const optionalSlashSlash = customSchemes[i][1];\n const flags = optionalSlashSlash ? {\n [scheme]: true\n } : {\n [slashscheme]: true\n };\n if (sch.indexOf('-') >= 0) {\n flags[domain] = true;\n } else if (!ASCII_LETTER.test(sch)) {\n flags[numeric] = true; // numbers only\n } else if (DIGIT.test(sch)) {\n flags[asciinumeric] = true;\n } else {\n flags[ascii] = true;\n }\n ts(Start, sch, sch, flags);\n }\n\n // Localhost token\n ts(Start, 'localhost', LOCALHOST, {\n ascii: true\n });\n\n // Set default transition for start state (some symbol)\n Start.jd = new State(SYM);\n return {\n start: Start,\n tokens: Object.assign({\n groups\n }, tk)\n };\n}\n\n/**\n\tGiven a string, returns an array of TOKEN instances representing the\n\tcomposition of that string.\n\n\t@method run\n\t@param {State<string>} start scanner starting state\n\t@param {string} str input string to scan\n\t@return {Token[]} list of tokens, each with a type and value\n*/\nfunction run$1(start, str) {\n // State machine is not case sensitive, so input is tokenized in lowercased\n // form (still returns regular case). Uses selective `toLowerCase` because\n // lowercasing the entire string causes the length and character position to\n // vary in some non-English strings with V8-based runtimes.\n const iterable = stringToArray(str.replace(/[A-Z]/g, c => c.toLowerCase()));\n const charCount = iterable.length; // <= len if there are emojis, etc\n const tokens = []; // return value\n\n // cursor through the string itself, accounting for characters that have\n // width with length 2 such as emojis\n let cursor = 0;\n\n // Cursor through the array-representation of the string\n let charCursor = 0;\n\n // Tokenize the string\n while (charCursor < charCount) {\n let state = start;\n let nextState = null;\n let tokenLength = 0;\n let latestAccepting = null;\n let sinceAccepts = -1;\n let charsSinceAccepts = -1;\n while (charCursor < charCount && (nextState = state.go(iterable[charCursor]))) {\n state = nextState;\n\n // Keep track of the latest accepting state\n if (state.accepts()) {\n sinceAccepts = 0;\n charsSinceAccepts = 0;\n latestAccepting = state;\n } else if (sinceAccepts >= 0) {\n sinceAccepts += iterable[charCursor].length;\n charsSinceAccepts++;\n }\n tokenLength += iterable[charCursor].length;\n cursor += iterable[charCursor].length;\n charCursor++;\n }\n\n // Roll back to the latest accepting state\n cursor -= sinceAccepts;\n charCursor -= charsSinceAccepts;\n tokenLength -= sinceAccepts;\n\n // No more jumps, just make a new token from the last accepting one\n tokens.push({\n t: latestAccepting.t,\n // token type/name\n v: str.slice(cursor - tokenLength, cursor),\n // string value\n s: cursor - tokenLength,\n // start index\n e: cursor // end index (excluding)\n });\n }\n return tokens;\n}\n\n/**\n * Convert a String to an Array of characters, taking into account that some\n * characters like emojis take up two string indexes.\n *\n * Adapted from core-js (MIT license)\n * https://github.com/zloirock/core-js/blob/2d69cf5f99ab3ea3463c395df81e5a15b68f49d9/packages/core-js/internals/string-multibyte.js\n *\n * @function stringToArray\n * @param {string} str\n * @returns {string[]}\n */\nfunction stringToArray(str) {\n const result = [];\n const len = str.length;\n let index = 0;\n while (index < len) {\n let first = str.charCodeAt(index);\n let second;\n let char = first < 0xd800 || first > 0xdbff || index + 1 === len || (second = str.charCodeAt(index + 1)) < 0xdc00 || second > 0xdfff ? str[index] // single character\n : str.slice(index, index + 2); // two-index characters\n result.push(char);\n index += char.length;\n }\n return result;\n}\n\n/**\n * Fast version of ts function for when transition defaults are well known\n * @param {State<string>} state\n * @param {string} input\n * @param {string} t\n * @param {string} defaultt\n * @param {[RegExp, State<string>][]} jr\n * @returns {State<string>}\n */\nfunction fastts(state, input, t, defaultt, jr) {\n let next;\n const len = input.length;\n for (let i = 0; i < len - 1; i++) {\n const char = input[i];\n if (state.j[char]) {\n next = state.j[char];\n } else {\n next = new State(defaultt);\n next.jr = jr.slice();\n state.j[char] = next;\n }\n state = next;\n }\n next = new State(t);\n next.jr = jr.slice();\n state.j[input[len - 1]] = next;\n return next;\n}\n\n/**\n * Converts a string of Top-Level Domain names encoded in update-tlds.js back\n * into a list of strings.\n * @param {str} encoded encoded TLDs string\n * @returns {str[]} original TLDs list\n */\nfunction decodeTlds(encoded) {\n const words = [];\n const stack = [];\n let i = 0;\n let digits = '0123456789';\n while (i < encoded.length) {\n let popDigitCount = 0;\n while (digits.indexOf(encoded[i + popDigitCount]) >= 0) {\n popDigitCount++; // encountered some digits, have to pop to go one level up trie\n }\n if (popDigitCount > 0) {\n words.push(stack.join('')); // whatever preceded the pop digits must be a word\n for (let popCount = parseInt(encoded.substring(i, i + popDigitCount), 10); popCount > 0; popCount--) {\n stack.pop();\n }\n i += popDigitCount;\n } else {\n stack.push(encoded[i]); // drop down a level into the trie\n i++;\n }\n }\n return words;\n}\n\n/**\n * An object where each key is a valid DOM Event Name such as `click` or `focus`\n * and each value is an event handler function.\n *\n * https://developer.mozilla.org/en-US/docs/Web/API/Element#events\n * @typedef {?{ [event: string]: Function }} EventListeners\n */\n\n/**\n * All formatted properties required to render a link, including `tagName`,\n * `attributes`, `content` and `eventListeners`.\n * @typedef {{ tagName: any, attributes: {[attr: string]: any}, content: string,\n * eventListeners: EventListeners }} IntermediateRepresentation\n */\n\n/**\n * Specify either an object described by the template type `O` or a function.\n *\n * The function takes a string value (usually the link's href attribute), the\n * link type (`'url'`, `'hashtag`', etc.) and an internal token representation\n * of the link. It should return an object of the template type `O`\n * @template O\n * @typedef {O | ((value: string, type: string, token: MultiToken) => O)} OptObj\n */\n\n/**\n * Specify either a function described by template type `F` or an object.\n *\n * Each key in the object should be a link type (`'url'`, `'hashtag`', etc.). Each\n * value should be a function with template type `F` that is called when the\n * corresponding link type is encountered.\n * @template F\n * @typedef {F | { [type: string]: F}} OptFn\n */\n\n/**\n * Specify either a value with template type `V`, a function that returns `V` or\n * an object where each value resolves to `V`.\n *\n * The function takes a string value (usually the link's href attribute), the\n * link type (`'url'`, `'hashtag`', etc.) and an internal token representation\n * of the link. It should return an object of the template type `V`\n *\n * For the object, each key should be a link type (`'url'`, `'hashtag`', etc.).\n * Each value should either have type `V` or a function that returns V. This\n * function similarly takes a string value and a token.\n *\n * Example valid types for `Opt<string>`:\n *\n * ```js\n * 'hello'\n * (value, type, token) => 'world'\n * { url: 'hello', email: (value, token) => 'world'}\n * ```\n * @template V\n * @typedef {V | ((value: string, type: string, token: MultiToken) => V) | { [type: string]: V | ((value: string, token: MultiToken) => V) }} Opt\n */\n\n/**\n * See available options: https://linkify.js.org/docs/options.html\n * @typedef {{\n * \tdefaultProtocol?: string,\n * events?: OptObj<EventListeners>,\n * \tformat?: Opt<string>,\n * \tformatHref?: Opt<string>,\n * \tnl2br?: boolean,\n * \ttagName?: Opt<any>,\n * \ttarget?: Opt<string>,\n * \trel?: Opt<string>,\n * \tvalidate?: Opt<boolean>,\n * \ttruncate?: Opt<number>,\n * \tclassName?: Opt<string>,\n * \tattributes?: OptObj<({ [attr: string]: any })>,\n * ignoreTags?: string[],\n * \trender?: OptFn<((ir: IntermediateRepresentation) => any)>\n * }} Opts\n */\n\n/**\n * @type Required<Opts>\n */\nconst defaults = {\n defaultProtocol: 'http',\n events: null,\n format: noop,\n formatHref: noop,\n nl2br: false,\n tagName: 'a',\n target: null,\n rel: null,\n validate: true,\n truncate: Infinity,\n className: null,\n attributes: null,\n ignoreTags: [],\n render: null\n};\n\n/**\n * Utility class for linkify interfaces to apply specified\n * {@link Opts formatting and rendering options}.\n *\n * @param {Opts | Options} [opts] Option value overrides.\n * @param {(ir: IntermediateRepresentation) => any} [defaultRender] (For\n * internal use) default render function that determines how to generate an\n * HTML element based on a link token's derived tagName, attributes and HTML.\n * Similar to render option\n */\nfunction Options(opts, defaultRender = null) {\n let o = Object.assign({}, defaults);\n if (opts) {\n o = Object.assign(o, opts instanceof Options ? opts.o : opts);\n }\n\n // Ensure all ignored tags are uppercase\n const ignoredTags = o.ignoreTags;\n const uppercaseIgnoredTags = [];\n for (let i = 0; i < ignoredTags.length; i++) {\n uppercaseIgnoredTags.push(ignoredTags[i].toUpperCase());\n }\n /** @protected */\n this.o = o;\n if (defaultRender) {\n this.defaultRender = defaultRender;\n }\n this.ignoreTags = uppercaseIgnoredTags;\n}\nOptions.prototype = {\n o: defaults,\n /**\n * @type string[]\n */\n ignoreTags: [],\n /**\n * @param {IntermediateRepresentation} ir\n * @returns {any}\n */\n defaultRender(ir) {\n return ir;\n },\n /**\n * Returns true or false based on whether a token should be displayed as a\n * link based on the user options.\n * @param {MultiToken} token\n * @returns {boolean}\n */\n check(token) {\n return this.get('validate', token.toString(), token);\n },\n // Private methods\n\n /**\n * Resolve an option's value based on the value of the option and the given\n * params. If operator and token are specified and the target option is\n * callable, automatically calls the function with the given argument.\n * @template {keyof Opts} K\n * @param {K} key Name of option to use\n * @param {string} [operator] will be passed to the target option if it's a\n * function. If not specified, RAW function value gets returned\n * @param {MultiToken} [token] The token from linkify.tokenize\n * @returns {Opts[K] | any}\n */\n get(key, operator, token) {\n const isCallable = operator != null;\n let option = this.o[key];\n if (!option) {\n return option;\n }\n if (typeof option === 'object') {\n option = token.t in option ? option[token.t] : defaults[key];\n if (typeof option === 'function' && isCallable) {\n option = option(operator, token);\n }\n } else if (typeof option === 'function' && isCallable) {\n option = option(operator, token.t, token);\n }\n return option;\n },\n /**\n * @template {keyof Opts} L\n * @param {L} key Name of options object to use\n * @param {string} [operator]\n * @param {MultiToken} [token]\n * @returns {Opts[L] | any}\n */\n getObj(key, operator, token) {\n let obj = this.o[key];\n if (typeof obj === 'function' && operator != null) {\n obj = obj(operator, token.t, token);\n }\n return obj;\n },\n /**\n * Convert the given token to a rendered element that may be added to the\n * calling-interface's DOM\n * @param {MultiToken} token Token to render to an HTML element\n * @returns {any} Render result; e.g., HTML string, DOM element, React\n * Component, etc.\n */\n render(token) {\n const ir = token.render(this); // intermediate representation\n const renderFn = this.get('render', null, token) || this.defaultRender;\n return renderFn(ir, token.t, token);\n }\n};\nfunction noop(val) {\n return val;\n}\n\nvar options = /*#__PURE__*/Object.freeze({\n\t__proto__: null,\n\tOptions: Options,\n\tdefaults: defaults\n});\n\n/******************************************************************************\n\tMulti-Tokens\n\tTokens composed of arrays of TextTokens\n******************************************************************************/\n\n/**\n * @param {string} value\n * @param {Token[]} tokens\n */\nfunction MultiToken(value, tokens) {\n this.t = 'token';\n this.v = value;\n this.tk = tokens;\n}\n\n/**\n * Abstract class used for manufacturing tokens of text tokens. That is rather\n * than the value for a token being a small string of text, it's value an array\n * of text tokens.\n *\n * Used for grouping together URLs, emails, hashtags, and other potential\n * creations.\n * @class MultiToken\n * @property {string} t\n * @property {string} v\n * @property {Token[]} tk\n * @abstract\n */\nMultiToken.prototype = {\n isLink: false,\n /**\n * Return the string this token represents.\n * @return {string}\n */\n toString() {\n return this.v;\n },\n /**\n * What should the value for this token be in the `href` HTML attribute?\n * Returns the `.toString` value by default.\n * @param {string} [scheme]\n * @return {string}\n */\n toHref(scheme) {\n return this.toString();\n },\n /**\n * @param {Options} options Formatting options\n * @returns {string}\n */\n toFormattedString(options) {\n const val = this.toString();\n const truncate = options.get('truncate', val, this);\n const formatted = options.get('format', val, this);\n return truncate && formatted.length > truncate ? formatted.substring(0, truncate) + '…' : formatted;\n },\n /**\n *\n * @param {Options} options\n * @returns {string}\n */\n toFormattedHref(options) {\n return options.get('formatHref', this.toHref(options.get('defaultProtocol')), this);\n },\n /**\n * The start index of this token in the original input string\n * @returns {number}\n */\n startIndex() {\n return this.tk[0].s;\n },\n /**\n * The end index of this token in the original input string (up to this\n * index but not including it)\n * @returns {number}\n */\n endIndex() {\n return this.tk[this.tk.length - 1].e;\n },\n /**\n \tReturns an object of relevant values for this token, which includes keys\n \t* type - Kind of token ('url', 'email', etc.)\n \t* value - Original text\n \t* href - The value that should be added to the anchor tag's href\n \t\tattribute\n \t\t@method toObject\n \t@param {string} [protocol] `'http'` by default\n */\n toObject(protocol = defaults.defaultProtocol) {\n return {\n type: this.t,\n value: this.toString(),\n isLink: this.isLink,\n href: this.toHref(protocol),\n start: this.startIndex(),\n end: this.endIndex()\n };\n },\n /**\n *\n * @param {Options} options Formatting option\n */\n toFormattedObject(options) {\n return {\n type: this.t,\n value: this.toFormattedString(options),\n isLink: this.isLink,\n href: this.toFormattedHref(options),\n start: this.startIndex(),\n end: this.endIndex()\n };\n },\n /**\n * Whether this token should be rendered as a link according to the given options\n * @param {Options} options\n * @returns {boolean}\n */\n validate(options) {\n return options.get('validate', this.toString(), this);\n },\n /**\n * Return an object that represents how this link should be rendered.\n * @param {Options} options Formattinng options\n */\n render(options) {\n const token = this;\n const href = this.toHref(options.get('defaultProtocol'));\n const formattedHref = options.get('formatHref', href, this);\n const tagName = options.get('tagName', href, token);\n const content = this.toFormattedString(options);\n const attributes = {};\n const className = options.get('className', href, token);\n const target = options.get('target', href, token);\n const rel = options.get('rel', href, token);\n const attrs = options.getObj('attributes', href, token);\n const eventListeners = options.getObj('events', href, token);\n attributes.href = formattedHref;\n if (className) {\n attributes.class = className;\n }\n if (target) {\n attributes.target = target;\n }\n if (rel) {\n attributes.rel = rel;\n }\n if (attrs) {\n Object.assign(attributes, attrs);\n }\n return {\n tagName,\n attributes,\n content,\n eventListeners\n };\n }\n};\n\n/**\n * Create a new token that can be emitted by the parser state machine\n * @param {string} type readable type of the token\n * @param {object} props properties to assign or override, including isLink = true or false\n * @returns {new (value: string, tokens: Token[]) => MultiToken} new token class\n */\nfunction createTokenClass(type, props) {\n class Token extends MultiToken {\n constructor(value, tokens) {\n super(value, tokens);\n this.t = type;\n }\n }\n for (const p in props) {\n Token.prototype[p] = props[p];\n }\n Token.t = type;\n return Token;\n}\n\n/**\n\tRepresents a list of tokens making up a valid email address\n*/\nconst Email = createTokenClass('email', {\n isLink: true,\n toHref() {\n return 'mailto:' + this.toString();\n }\n});\n\n/**\n\tRepresents some plain text\n*/\nconst Text = createTokenClass('text');\n\n/**\n\tMulti-linebreak token - represents a line break\n\t@class Nl\n*/\nconst Nl = createTokenClass('nl');\n\n/**\n\tRepresents a list of text tokens making up a valid URL\n\t@class Url\n*/\nconst Url = createTokenClass('url', {\n isLink: true,\n /**\n \tLowercases relevant parts of the domain and adds the protocol if\n \trequired. Note that this will not escape unsafe HTML characters in the\n \tURL.\n \t\t@param {string} [scheme] default scheme (e.g., 'https')\n \t@return {string} the full href\n */\n toHref(scheme = defaults.defaultProtocol) {\n // Check if already has a prefix scheme\n return this.hasProtocol() ? this.v : `${scheme}://${this.v}`;\n },\n /**\n * Check whether this URL token has a protocol\n * @return {boolean}\n */\n hasProtocol() {\n const tokens = this.tk;\n return tokens.length >= 2 && tokens[0].t !== LOCALHOST && tokens[1].t === COLON;\n }\n});\n\nvar multi = /*#__PURE__*/Object.freeze({\n\t__proto__: null,\n\tBase: MultiToken,\n\tEmail: Email,\n\tMultiToken: MultiToken,\n\tNl: Nl,\n\tText: Text,\n\tUrl: Url,\n\tcreateTokenClass: createTokenClass\n});\n\n/**\n\tNot exactly parser, more like the second-stage scanner (although we can\n\ttheoretically hotswap the code here with a real parser in the future... but\n\tfor a little URL-finding utility abstract syntax trees may be a little\n\toverkill).\n\n\tURL format: http://en.wikipedia.org/wiki/URI_scheme\n\tEmail format: http://en.wikipedia.org/wiki/EmailAddress (links to RFC in\n\treference)\n\n\t@module linkify\n\t@submodule parser\n\t@main run\n*/\n\nconst makeState = arg => new State(arg);\n\n/**\n * Generate the parser multi token-based state machine\n * @param {{ groups: Collections<string> }} tokens\n */\nfunction init$1({\n groups\n}) {\n // Types of characters the URL can definitely end in\n const qsAccepting = groups.domain.concat([AMPERSAND, ASTERISK, AT, BACKSLASH, BACKTICK, CARET, DOLLAR, EQUALS, HYPHEN, NUM, PERCENT, PIPE, PLUS, POUND, SLASH, SYM, TILDE, UNDERSCORE]);\n\n // Types of tokens that can follow a URL and be part of the query string\n // but cannot be the very last characters\n // Characters that cannot appear in the URL at all should be excluded\n const qsNonAccepting = [APOSTROPHE, COLON, COMMA, DOT, EXCLAMATION, PERCENT, QUERY, QUOTE, SEMI, OPENANGLEBRACKET, CLOSEANGLEBRACKET, OPENBRACE, CLOSEBRACE, CLOSEBRACKET, OPENBRACKET, OPENPAREN, CLOSEPAREN, FULLWIDTHLEFTPAREN, FULLWIDTHRIGHTPAREN, LEFTCORNERBRACKET, RIGHTCORNERBRACKET, LEFTWHITECORNERBRACKET, RIGHTWHITECORNERBRACKET, FULLWIDTHLESSTHAN, FULLWIDTHGREATERTHAN];\n\n // For addresses without the mailto prefix\n // Tokens allowed in the localpart of the email\n const localpartAccepting = [AMPERSAND, APOSTROPHE, ASTERISK, BACKSLASH, BACKTICK, CARET, DOLLAR, EQUALS, HYPHEN, OPENBRACE, CLOSEBRACE, PERCENT, PIPE, PLUS, POUND, QUERY, SLASH, SYM, TILDE, UNDERSCORE];\n\n // The universal starting state.\n /**\n * @type State<Token>\n */\n const Start = makeState();\n const Localpart = tt(Start, TILDE); // Local part of the email address\n ta(Localpart, localpartAccepting, Localpart);\n ta(Localpart, groups.domain, Localpart);\n const Domain = makeState(),\n Scheme = makeState(),\n SlashScheme = makeState();\n ta(Start, groups.domain, Domain); // parsed string ends with a potential domain name (A)\n ta(Start, groups.scheme, Scheme); // e.g., 'mailto'\n ta(Start, groups.slashscheme, SlashScheme); // e.g., 'http'\n\n ta(Domain, localpartAccepting, Localpart);\n ta(Domain, groups.domain, Domain);\n const LocalpartAt = tt(Domain, AT); // Local part of the email address plus @\n\n tt(Localpart, AT, LocalpartAt); // close to an email address now\n\n // Local part of an email address can be e.g. 'http' or 'mailto'\n tt(Scheme, AT, LocalpartAt);\n tt(SlashScheme, AT, LocalpartAt);\n const LocalpartDot = tt(Localpart, DOT); // Local part of the email address plus '.' (localpart cannot end in .)\n ta(LocalpartDot, localpartAccepting, Localpart);\n ta(LocalpartDot, groups.domain, Localpart);\n const EmailDomain = makeState();\n ta(LocalpartAt, groups.domain, EmailDomain); // parsed string starts with local email info + @ with a potential domain name\n ta(EmailDomain, groups.domain, EmailDomain);\n const EmailDomainDot = tt(EmailDomain, DOT); // domain followed by DOT\n ta(EmailDomainDot, groups.domain, EmailDomain);\n const Email$1 = makeState(Email); // Possible email address (could have more tlds)\n ta(EmailDomainDot, groups.tld, Email$1);\n ta(EmailDomainDot, groups.utld, Email$1);\n tt(LocalpartAt, LOCALHOST, Email$1);\n\n // Hyphen can jump back to a domain name\n const EmailDomainHyphen = tt(EmailDomain, HYPHEN); // parsed string starts with local email info + @ with a potential domain name\n tt(EmailDomainHyphen, HYPHEN, EmailDomainHyphen);\n ta(EmailDomainHyphen, groups.domain, EmailDomain);\n ta(Email$1, groups.domain, EmailDomain);\n tt(Email$1, DOT, EmailDomainDot);\n tt(Email$1, HYPHEN, EmailDomainHyphen);\n\n // Account for dots and hyphens. Hyphens are usually parts of domain names\n // (but not TLDs)\n const DomainHyphen = tt(Domain, HYPHEN); // domain followed by hyphen\n const DomainDot = tt(Domain, DOT); // domain followed by DOT\n tt(DomainHyphen, HYPHEN, DomainHyphen);\n ta(DomainHyphen, groups.domain, Domain);\n ta(DomainDot, localpartAccepting, Localpart);\n ta(DomainDot, groups.domain, Domain);\n const DomainDotTld = makeState(Url); // Simplest possible URL with no query string\n ta(DomainDot, groups.tld, DomainDotTld);\n ta(DomainDot, groups.utld, DomainDotTld);\n ta(DomainDotTld, groups.domain, Domain);\n ta(DomainDotTld, localpartAccepting, Localpart);\n tt(DomainDotTld, DOT, DomainDot);\n tt(DomainDotTld, HYPHEN, DomainHyphen);\n tt(DomainDotTld, AT, LocalpartAt);\n const DomainDotTldColon = tt(DomainDotTld, COLON); // URL followed by colon (potential port number here)\n const DomainDotTldColonPort = makeState(Url); // TLD followed by a port number\n ta(DomainDotTldColon, groups.numeric, DomainDotTldColonPort);\n\n // Long URL with optional port and maybe query string\n const Url$1 = makeState(Url);\n\n // URL with extra symbols at the end, followed by an opening bracket\n const UrlNonaccept = makeState(); // URL followed by some symbols (will not be part of the final URL)\n\n // Query strings\n ta(Url$1, qsAccepting, Url$1);\n ta(Url$1, qsNonAccepting, UrlNonaccept);\n ta(UrlNonaccept, qsAccepting, Url$1);\n ta(UrlNonaccept, qsNonAccepting, UrlNonaccept);\n\n // Become real URLs after `SLASH` or `COLON NUM SLASH`\n // Here works with or without scheme:// prefix\n tt(DomainDotTld, SLASH, Url$1);\n tt(DomainDotTldColonPort, SLASH, Url$1);\n\n // Note that domains that begin with schemes are treated slighly differently\n const SchemeColon = tt(Scheme, COLON); // e.g., 'mailto:'\n const SlashSchemeColon = tt(SlashScheme, COLON); // e.g., 'http:'\n const SlashSchemeColonSlash = tt(SlashSchemeColon, SLASH); // e.g., 'http:/'\n\n const UriPrefix = tt(SlashSchemeColonSlash, SLASH); // e.g., 'http://'\n\n // Scheme states can transition to domain states\n ta(Scheme, groups.domain, Domain);\n tt(Scheme, DOT, DomainDot);\n tt(Scheme, HYPHEN, DomainHyphen);\n ta(SlashScheme, groups.domain, Domain);\n tt(SlashScheme, DOT, DomainDot);\n tt(SlashScheme, HYPHEN, DomainHyphen);\n\n // Force URL with scheme prefix followed by anything sane\n ta(SchemeColon, groups.domain, Url$1);\n tt(SchemeColon, SLASH, Url$1);\n tt(SchemeColon, QUERY, Url$1);\n ta(UriPrefix, groups.domain, Url$1);\n ta(UriPrefix, qsAccepting, Url$1);\n tt(UriPrefix, SLASH, Url$1);\n const bracketPairs = [[OPENBRACE, CLOSEBRACE],\n // {}\n [OPENBRACKET, CLOSEBRACKET],\n // []\n [OPENPAREN, CLOSEPAREN],\n // ()\n [OPENANGLEBRACKET, CLOSEANGLEBRACKET],\n // <>\n [FULLWIDTHLEFTPAREN, FULLWIDTHRIGHTPAREN],\n // ()\n [LEFTCORNERBRACKET, RIGHTCORNERBRACKET],\n // 「」\n [LEFTWHITECORNERBRACKET, RIGHTWHITECORNERBRACKET],\n // 『』\n [FULLWIDTHLESSTHAN, FULLWIDTHGREATERTHAN] // <>\n ];\n for (let i = 0; i < bracketPairs.length; i++) {\n const [OPEN, CLOSE] = bracketPairs[i];\n const UrlOpen = tt(Url$1, OPEN); // URL followed by open bracket\n\n // Continue not accepting for open brackets\n tt(UrlNonaccept, OPEN, UrlOpen);\n\n // URL that begins with an opening bracket, followed by a symbols.\n // Note that the final state can still be `UrlOpen` (if the URL has a\n // single opening bracket for some reason).\n const UrlOpenQ = makeState(Url);\n ta(UrlOpen, qsAccepting, UrlOpenQ);\n const UrlOpenSyms = makeState(); // UrlOpen followed by some symbols it cannot end it\n ta(UrlOpen, qsNonAccepting, UrlOpenSyms);\n\n // Closing bracket component. This character WILL be included in the URL.\n // Must come after qsNonAccepting (which includes all close-bracket tokens)\n // so that CLOSE -> Url wins over CLOSE -> UrlOpenSyms.\n tt(UrlOpen, CLOSE, Url$1);\n\n // URL that begins with an opening bracket, followed by some symbols\n ta(UrlOpenQ, qsAccepting, UrlOpenQ);\n ta(UrlOpenQ, qsNonAccepting, UrlOpenSyms);\n ta(UrlOpenSyms, qsAccepting, UrlOpenQ);\n ta(UrlOpenSyms, qsNonAccepting, UrlOpenSyms);\n\n // Close brace/bracket to become regular URL\n tt(UrlOpenQ, CLOSE, Url$1);\n tt(UrlOpenSyms, CLOSE, Url$1);\n }\n tt(Start, LOCALHOST, DomainDotTld); // localhost is a valid URL state\n tt(Start, NL, Nl); // single new line\n\n return {\n start: Start,\n tokens: tk\n };\n}\n\n/**\n * Run the parser state machine on a list of scanned string-based tokens to\n * create a list of multi tokens, each of which represents a URL, email address,\n * plain text, etc.\n *\n * @param {State<MultiToken>} start parser start state\n * @param {string} input the original input used to generate the given tokens\n * @param {Token[]} tokens list of scanned tokens\n * @returns {MultiToken[]}\n */\nfunction run(start, input, tokens) {\n let len = tokens.length;\n let cursor = 0;\n let multis = [];\n let textTokens = [];\n while (cursor < len) {\n let state = start;\n let secondState = null;\n let nextState = null;\n let multiLength = 0;\n let latestAccepting = null;\n let sinceAccepts = -1;\n while (cursor < len && !(secondState = state.go(tokens[cursor].t))) {\n // Starting tokens with nowhere to jump to.\n // Consider these to be just plain text\n textTokens.push(tokens[cursor++]);\n }\n while (cursor < len && (nextState = secondState || state.go(tokens[cursor].t))) {\n // Get the next state\n secondState = null;\n state = nextState;\n\n // Keep track of the latest accepting state\n if (state.accepts()) {\n sinceAccepts = 0;\n latestAccepting = state;\n } else if (sinceAccepts >= 0) {\n sinceAccepts++;\n }\n cursor++;\n multiLength++;\n }\n if (sinceAccepts < 0) {\n // No accepting state was found, part of a regular text token add\n // the first text token to the text tokens array and try again from\n // the next\n cursor -= multiLength;\n if (cursor < len) {\n textTokens.push(tokens[cursor]);\n cursor++;\n }\n } else {\n // Accepting state!\n // First close off the textTokens (if available)\n if (textTokens.length > 0) {\n multis.push(initMultiToken(Text, input, textTokens));\n textTokens = [];\n }\n\n // Roll back to the latest accepting state\n cursor -= sinceAccepts;\n multiLength -= sinceAccepts;\n\n // Create a new multitoken\n const Multi = latestAccepting.t;\n const subtokens = tokens.slice(cursor - multiLength, cursor);\n multis.push(initMultiToken(Multi, input, subtokens));\n }\n }\n\n // Finally close off the textTokens (if available)\n if (textTokens.length > 0) {\n multis.push(initMultiToken(Text, input, textTokens));\n }\n return multis;\n}\n\n/**\n * Utility function for instantiating a new multitoken with all the relevant\n * fields during parsing.\n * @param {new (value: string, tokens: Token[]) => MultiToken} Multi class to instantiate\n * @param {string} input original input string\n * @param {Token[]} tokens consecutive tokens scanned from input string\n * @returns {MultiToken}\n */\nfunction initMultiToken(Multi, input, tokens) {\n const startIdx = tokens[0].s;\n const endIdx = tokens[tokens.length - 1].e;\n const value = input.slice(startIdx, endIdx);\n return new Multi(value, tokens);\n}\n\nconst warn = typeof console !== 'undefined' && console && console.warn || (() => {});\nconst warnAdvice = 'until manual call of linkify.init(). Register all schemes and plugins before invoking linkify the first time.';\n\n// Side-effect initialization state\nconst INIT = {\n scanner: null,\n parser: null,\n tokenQueue: [],\n pluginQueue: [],\n customSchemes: [],\n initialized: false\n};\n\n/**\n * @typedef {{\n * \tstart: State<string>,\n * \ttokens: { groups: Collections<string> } & typeof tk\n * }} ScannerInit\n */\n\n/**\n * @typedef {{\n * \tstart: State<MultiToken>,\n * \ttokens: typeof multi\n * }} ParserInit\n */\n\n/**\n * @typedef {(arg: { scanner: ScannerInit }) => void} TokenPlugin\n */\n\n/**\n * @typedef {(arg: { scanner: ScannerInit, parser: ParserInit }) => void} Plugin\n */\n\n/**\n * De-register all plugins and reset the internal state-machine. Used for\n * testing; not required in practice.\n * @private\n */\nfunction reset() {\n State.groups = {};\n INIT.scanner = null;\n INIT.parser = null;\n INIT.tokenQueue = [];\n INIT.pluginQueue = [];\n INIT.customSchemes = [];\n INIT.initialized = false;\n return INIT;\n}\n\n/**\n * Register a token plugin to allow the scanner to recognize additional token\n * types before the parser state machine is constructed from the results.\n * @param {string} name of plugin to register\n * @param {TokenPlugin} plugin function that accepts the scanner state machine\n * and available scanner tokens and collections and extends the state machine to\n * recognize additional tokens or groups.\n */\nfunction registerTokenPlugin(name, plugin) {\n if (typeof plugin !== 'function') {\n throw new Error(`linkifyjs: Invalid token plugin ${plugin} (expects function)`);\n }\n for (let i = 0; i < INIT.tokenQueue.length; i++) {\n if (name === INIT.tokenQueue[i][0]) {\n warn(`linkifyjs: token plugin \"${name}\" already registered - will be overwritten`);\n INIT.tokenQueue[i] = [name, plugin];\n return;\n }\n }\n INIT.tokenQueue.push([name, plugin]);\n if (INIT.initialized) {\n warn(`linkifyjs: already initialized - will not register token plugin \"${name}\" ${warnAdvice}`);\n }\n}\n\n/**\n * Register a linkify plugin\n * @param {string} name of plugin to register\n * @param {Plugin} plugin function that accepts the parser state machine and\n * extends the parser to recognize additional link types\n */\nfunction registerPlugin(name, plugin) {\n if (typeof plugin !== 'function') {\n throw new Error(`linkifyjs: Invalid plugin ${plugin} (expects function)`);\n }\n for (let i = 0; i < INIT.pluginQueue.length; i++) {\n if (name === INIT.pluginQueue[i][0]) {\n warn(`linkifyjs: plugin \"${name}\" already registered - will be overwritten`);\n INIT.pluginQueue[i] = [name, plugin];\n return;\n }\n }\n INIT.pluginQueue.push([name, plugin]);\n if (INIT.initialized) {\n warn(`linkifyjs: already initialized - will not register plugin \"${name}\" ${warnAdvice}`);\n }\n}\n\n/**\n * Detect URLs with the following additional protocol. Anything with format\n * \"protocol://...\" will be considered a link. If `optionalSlashSlash` is set to\n * `true`, anything with format \"protocol:...\" will be considered a link.\n * @param {string} scheme\n * @param {boolean} [optionalSlashSlash]\n */\nfunction registerCustomProtocol(scheme, optionalSlashSlash = false) {\n if (INIT.initialized) {\n warn(`linkifyjs: already initialized - will not register custom scheme \"${scheme}\" ${warnAdvice}`);\n }\n if (!/^[0-9a-z]+(-[0-9a-z]+)*$/.test(scheme)) {\n throw new Error(`linkifyjs: incorrect scheme format.\n1. Must only contain digits, lowercase ASCII letters or \"-\"\n2. Cannot start or end with \"-\"\n3. \"-\" cannot repeat`);\n }\n INIT.customSchemes.push([scheme, optionalSlashSlash]);\n}\n\n/**\n * Initialize the linkify state machine. Called automatically the first time\n * linkify is called on a string, but may be called manually as well.\n */\nfunction init() {\n // Initialize scanner state machine and plugins\n INIT.scanner = init$2(INIT.customSchemes);\n for (let i = 0; i < INIT.tokenQueue.length; i++) {\n INIT.tokenQueue[i][1]({\n scanner: INIT.scanner\n });\n }\n\n // Initialize parser state machine and plugins\n INIT.parser = init$1(INIT.scanner.tokens);\n for (let i = 0; i < INIT.pluginQueue.length; i++) {\n INIT.pluginQueue[i][1]({\n scanner: INIT.scanner,\n parser: INIT.parser\n });\n }\n INIT.initialized = true;\n return INIT;\n}\n\n/**\n * Parse a string into tokens that represent linkable and non-linkable sub-components\n * @param {string} str\n * @return {MultiToken[]} tokens\n */\nfunction tokenize(str) {\n if (!INIT.initialized) {\n init();\n }\n return run(INIT.parser.start, str, run$1(INIT.scanner.start, str));\n}\ntokenize.scan = run$1; // for testing\n\n/**\n * Find a list of linkable items in the given string.\n * @param {string} str string to find links in\n * @param {string | Opts} [type] either formatting options or specific type of\n * links to find, e.g., 'url' or 'email'\n * @param {Opts} [opts] formatting options for final output. Cannot be specified\n * if opts already provided in `type` argument\n */\nfunction find(str, type = null, opts = null) {\n if (type && typeof type === 'object') {\n if (opts) {\n throw Error(`linkifyjs: Invalid link type ${type}; must be a string`);\n }\n opts = type;\n type = null;\n }\n const options = new Options(opts);\n const tokens = tokenize(str);\n const filtered = [];\n for (let i = 0; i < tokens.length; i++) {\n const token = tokens[i];\n if (token.isLink && (!type || token.t === type) && options.check(token)) {\n filtered.push(token.toFormattedObject(options));\n }\n }\n return filtered;\n}\n\n/**\n * Is the given string valid linkable text of some sort. Note that this does not\n * trim the text for you.\n *\n * Optionally pass in a second `type` param, which is the type of link to test\n * for.\n *\n * For example,\n *\n * linkify.test(str, 'email');\n *\n * Returns `true` if str is a valid email.\n * @param {string} str string to test for links\n * @param {string} [type] optional specific link type to look for\n * @returns boolean true/false\n */\nfunction test(str, type = null) {\n const tokens = tokenize(str);\n return tokens.length === 1 && tokens[0].isLink && (!type || tokens[0].t === type);\n}\n\nexport { MultiToken, Options, State, createTokenClass, find, init, multi, options, regexp, registerCustomProtocol, registerPlugin, registerTokenPlugin, reset, stringToArray, test, multi as text, tokenize };\n","import escapeHTML from \"escape-html\";\nimport { Options, tokenize } from \"linkifyjs\";\nfunction linkifyString(str) {\n const options = new Options({\n defaultProtocol: \"https\",\n target: \"_blank\",\n className: \"external linkified\",\n attributes: {\n rel: \"nofollow noopener noreferrer\"\n }\n }, defaultRender);\n const tokens = tokenize(str);\n const result = [];\n for (const token of tokens) {\n if (token.t === \"nl\" && options.get(\"nl2br\")) {\n result.push(\"<br>\\n\");\n } else if (!token.isLink || !options.check(token)) {\n result.push(escapeHTML(token.toString()));\n } else {\n result.push(options.render(token));\n }\n }\n return result.join(\"\");\n}\nfunction escapeAttr(href) {\n return href.replace(/\"/g, \""\");\n}\nfunction attributesToString(attributes) {\n const result = [];\n for (const attr in attributes) {\n const val = attributes[attr] + \"\";\n result.push(`${attr}=\"${escapeAttr(val)}\"`);\n }\n return result.join(\" \");\n}\nfunction defaultRender({ tagName, attributes, content }) {\n return `<${tagName} ${attributesToString(attributes)}>${escapeHTML(content)}</${tagName}>`;\n}\nconst directive = function(el, { value }) {\n if (value?.linkify === true) {\n el.innerHTML = linkifyString(value.text);\n }\n};\nexport {\n directive as default\n};\n//# sourceMappingURL=index.mjs.map\n","import { defineComponent, inject, withDirectives, openBlock, createElementBlock, createTextVNode, toDisplayString, unref } from \"vue\";\nimport directive from \"../directives/Linkify/index.mjs\";\nconst _hoisted_1 = [\"title\"];\nconst _sfc_main = /* @__PURE__ */ defineComponent({\n __name: \"NcAppSidebarHeader\",\n props: {\n name: {},\n title: {},\n linkify: { type: Boolean }\n },\n setup(__props) {\n const headerRef = inject(\"NcAppSidebar:header:ref\");\n return (_ctx, _cache) => {\n return withDirectives((openBlock(), createElementBlock(\"h2\", {\n ref_key: \"headerRef\",\n ref: headerRef,\n tabindex: \"-1\",\n title: __props.title\n }, [\n createTextVNode(toDisplayString(__props.name), 1)\n ], 8, _hoisted_1)), [\n [unref(directive), { text: __props.name, linkify: __props.linkify }]\n ]);\n };\n }\n});\nexport {\n _sfc_main as _\n};\n//# sourceMappingURL=NcAppSidebarHeader.vue_vue_type_script_setup_true_lang-C-QhdyiN.mjs.map\n","import '../assets/NcAppSidebar-oJQ8kUb0.css';\nimport { vOnClickOutside } from \"@vueuse/components\";\nimport { createFocusTrap } from \"focus-trap\";\nimport { openBlock, createElementBlock, mergeProps, createElementVNode, toDisplayString, createCommentVNode, defineComponent, useModel, normalizeClass, unref, createVNode, withCtx, mergeModels, resolveComponent, withKeys, withModifiers, Fragment, renderList, createBlock, renderSlot, resolveDirective, Transition, withDirectives, Teleport, normalizeStyle, vShow, createTextVNode, warn, ref, provide } from \"vue\";\nimport { I as IconArrowRight } from \"./ArrowRight-B1ncAhus.mjs\";\nimport { I as IconClose } from \"./Close-CuhcJnX2.mjs\";\nimport { _ as _export_sfc } from \"./_plugin-vue_export-helper-1tPrXgE0.mjs\";\nimport { getCanonicalLocale } from \"@nextcloud/l10n\";\nimport { _ as _sfc_main$6 } from \"./NcVNodes.vue_vue_type_script_lang-BqUHinRZ.mjs\";\nimport { i as isLegacy34 } from \"./legacy-BoqDmOCa.mjs\";\nimport { useIsSmallMobile } from \"../composables/useIsMobile/index.mjs\";\nimport directive from \"../directives/Focus/index.mjs\";\nimport { r as register, V as t15, a as t } from \"./_l10n-wdIzZwir.mjs\";\nimport { c as createElementId } from \"./createElementId-DhjFt1I9.mjs\";\nimport { g as getTrapStack } from \"./focusTrap-HJQ4pqHV.mjs\";\nimport { i as isSlotPopulated, N as NcActions } from \"./NcActions-C-wDqSrv.mjs\";\nimport { l as logger } from \"./logger-D3RVzcfQ.mjs\";\nimport { _ as _sfc_main$7 } from \"./NcAppSidebarHeader.vue_vue_type_script_setup_true_lang-C-QhdyiN.mjs\";\nimport { N as NcButton } from \"./NcButton-jvoYS2my.mjs\";\nimport { C as CONTENT_SELECTOR_KEY } from \"./constants-Ciwvl5xb.mjs\";\nimport { N as NcEmptyContent } from \"./NcEmptyContent-CGAPqk4S.mjs\";\nimport { N as NcLoadingIcon } from \"./NcLoadingIcon-BOVpFVQz.mjs\";\nconst _sfc_main$5 = {\n name: \"DockRightIcon\",\n emits: [\"click\"],\n props: {\n title: {\n type: String\n },\n fillColor: {\n type: String,\n default: \"currentColor\"\n },\n size: {\n type: Number,\n default: 24\n }\n }\n};\nconst _hoisted_1$5 = [\"aria-hidden\", \"aria-label\"];\nconst _hoisted_2$3 = [\"fill\", \"width\", \"height\"];\nconst _hoisted_3$3 = { d: \"M20 4H4A2 2 0 0 0 2 6V18A2 2 0 0 0 4 20H20A2 2 0 0 0 22 18V6A2 2 0 0 0 20 4M15 18H4V6H15Z\" };\nconst _hoisted_4$3 = { key: 0 };\nfunction _sfc_render$4(_ctx, _cache, $props, $setup, $data, $options) {\n return openBlock(), createElementBlock(\"span\", mergeProps(_ctx.$attrs, {\n \"aria-hidden\": $props.title ? null : \"true\",\n \"aria-label\": $props.title,\n class: \"material-design-icon dock-right-icon\",\n role: \"img\",\n onClick: _cache[0] || (_cache[0] = ($event) => _ctx.$emit(\"click\", $event))\n }), [\n (openBlock(), createElementBlock(\"svg\", {\n fill: $props.fillColor,\n class: \"material-design-icon__svg\",\n width: $props.size,\n height: $props.size,\n viewBox: \"0 0 24 24\"\n }, [\n createElementVNode(\"path\", _hoisted_3$3, [\n $props.title ? (openBlock(), createElementBlock(\"title\", _hoisted_4$3, toDisplayString($props.title), 1)) : createCommentVNode(\"\", true)\n ])\n ], 8, _hoisted_2$3))\n ], 16, _hoisted_1$5);\n}\nconst IconDockRight = /* @__PURE__ */ _export_sfc(_sfc_main$5, [[\"render\", _sfc_render$4]]);\nconst _sfc_main$4 = {\n name: \"StarIcon\",\n emits: [\"click\"],\n props: {\n title: {\n type: String\n },\n fillColor: {\n type: String,\n default: \"currentColor\"\n },\n size: {\n type: Number,\n default: 24\n }\n }\n};\nconst _hoisted_1$4 = [\"aria-hidden\", \"aria-label\"];\nconst _hoisted_2$2 = [\"fill\", \"width\", \"height\"];\nconst _hoisted_3$2 = { d: \"M12,17.27L18.18,21L16.54,13.97L22,9.24L14.81,8.62L12,2L9.19,8.62L2,9.24L7.45,13.97L5.82,21L12,17.27Z\" };\nconst _hoisted_4$2 = { key: 0 };\nfunction _sfc_render$3(_ctx, _cache, $props, $setup, $data, $options) {\n return openBlock(), createElementBlock(\"span\", mergeProps(_ctx.$attrs, {\n \"aria-hidden\": $props.title ? null : \"true\",\n \"aria-label\": $props.title,\n class: \"material-design-icon star-icon\",\n role: \"img\",\n onClick: _cache[0] || (_cache[0] = ($event) => _ctx.$emit(\"click\", $event))\n }), [\n (openBlock(), createElementBlock(\"svg\", {\n fill: $props.fillColor,\n class: \"material-design-icon__svg\",\n width: $props.size,\n height: $props.size,\n viewBox: \"0 0 24 24\"\n }, [\n createElementVNode(\"path\", _hoisted_3$2, [\n $props.title ? (openBlock(), createElementBlock(\"title\", _hoisted_4$2, toDisplayString($props.title), 1)) : createCommentVNode(\"\", true)\n ])\n ], 8, _hoisted_2$2))\n ], 16, _hoisted_1$4);\n}\nconst IconStar = /* @__PURE__ */ _export_sfc(_sfc_main$4, [[\"render\", _sfc_render$3]]);\nconst _sfc_main$3 = {\n name: \"StarOutlineIcon\",\n emits: [\"click\"],\n props: {\n title: {\n type: String\n },\n fillColor: {\n type: String,\n default: \"currentColor\"\n },\n size: {\n type: Number,\n default: 24\n }\n }\n};\nconst _hoisted_1$3 = [\"aria-hidden\", \"aria-label\"];\nconst _hoisted_2$1 = [\"fill\", \"width\", \"height\"];\nconst _hoisted_3$1 = { d: \"M12,15.39L8.24,17.66L9.23,13.38L5.91,10.5L10.29,10.13L12,6.09L13.71,10.13L18.09,10.5L14.77,13.38L15.76,17.66M22,9.24L14.81,8.63L12,2L9.19,8.63L2,9.24L7.45,13.97L5.82,21L12,17.27L18.18,21L16.54,13.97L22,9.24Z\" };\nconst _hoisted_4$1 = { key: 0 };\nfunction _sfc_render$2(_ctx, _cache, $props, $setup, $data, $options) {\n return openBlock(), createElementBlock(\"span\", mergeProps(_ctx.$attrs, {\n \"aria-hidden\": $props.title ? null : \"true\",\n \"aria-label\": $props.title,\n class: \"material-design-icon star-outline-icon\",\n role: \"img\",\n onClick: _cache[0] || (_cache[0] = ($event) => _ctx.$emit(\"click\", $event))\n }), [\n (openBlock(), createElementBlock(\"svg\", {\n fill: $props.fillColor,\n class: \"material-design-icon__svg\",\n width: $props.size,\n height: $props.size,\n viewBox: \"0 0 24 24\"\n }, [\n createElementVNode(\"path\", _hoisted_3$1, [\n $props.title ? (openBlock(), createElementBlock(\"title\", _hoisted_4$1, toDisplayString($props.title), 1)) : createCommentVNode(\"\", true)\n ])\n ], 8, _hoisted_2$1))\n ], 16, _hoisted_1$3);\n}\nconst IconStarOutline = /* @__PURE__ */ _export_sfc(_sfc_main$3, [[\"render\", _sfc_render$2]]);\nconst _hoisted_1$2 = [\"aria-selected\", \"tabindex\"];\nconst _sfc_main$2 = /* @__PURE__ */ defineComponent({\n __name: \"NcAppSidebarTabsButton\",\n props: /* @__PURE__ */ mergeModels({\n tab: {}\n }, {\n \"selected\": { type: Boolean, ...{ required: true } },\n \"selectedModifiers\": {}\n }),\n emits: [\"update:selected\"],\n setup(__props) {\n const selected = useModel(__props, \"selected\");\n return (_ctx, _cache) => {\n return openBlock(), createElementBlock(\"button\", {\n class: normalizeClass([\"button-vue\", [_ctx.$style.sidebarTabsButton, {\n [_ctx.$style.sidebarTabsButton_selected]: selected.value,\n [_ctx.$style.sidebarTabsButton_legacy]: unref(isLegacy34)\n }]]),\n role: \"tab\",\n \"aria-selected\": selected.value,\n tabindex: selected.value ? 0 : -1,\n onClick: _cache[0] || (_cache[0] = ($event) => selected.value = true)\n }, [\n createElementVNode(\"span\", {\n class: normalizeClass(_ctx.$style.sidebarTabsButton__icon)\n }, [\n createVNode(_sfc_main$6, {\n vnodes: __props.tab.renderIcon()\n }, {\n default: withCtx(() => [\n createElementVNode(\"span\", {\n class: normalizeClass([_ctx.$style.sidebarTabsButton__legacyIcon, __props.tab.icon])\n }, null, 2)\n ]),\n _: 1\n }, 8, [\"vnodes\"])\n ], 2),\n createElementVNode(\"span\", {\n class: normalizeClass(_ctx.$style.sidebarTabsButton__name)\n }, toDisplayString(__props.tab.name), 3)\n ], 10, _hoisted_1$2);\n };\n }\n});\nconst sidebarTabsButton = \"_sidebarTabsButton_OCROY\";\nconst sidebarTabsButton_legacy = \"_sidebarTabsButton_legacy_e9-y9\";\nconst sidebarTabsButton_selected = \"_sidebarTabsButton_selected_S48M1\";\nconst sidebarTabsButton__name = \"_sidebarTabsButton__name_GZRY8\";\nconst sidebarTabsButton__icon = \"_sidebarTabsButton__icon_ZDmkU\";\nconst sidebarTabsButton__legacyIcon = \"_sidebarTabsButton__legacyIcon_y6cLW\";\nconst style0 = {\n \"material-design-icon\": \"_material-design-icon_v9SPG\",\n sidebarTabsButton,\n sidebarTabsButton_legacy,\n sidebarTabsButton_selected,\n sidebarTabsButton__name,\n sidebarTabsButton__icon,\n sidebarTabsButton__legacyIcon\n};\nconst cssModules = {\n \"$style\": style0\n};\nconst NcAppSidebarTabsButton = /* @__PURE__ */ _export_sfc(_sfc_main$2, [[\"__cssModules\", cssModules]]);\nconst _sfc_main$1 = {\n name: \"NcAppSidebarTabs\",\n components: {\n NcAppSidebarTabsButton\n },\n provide() {\n return {\n registerTab: this.registerTab,\n unregisterTab: this.unregisterTab,\n // Getter as an alternative to Vue 2.7 computed(() => this.activeTab)\n getActiveTab: () => this.activeTab,\n // Used to check whether the tab header is shown so the tabs can reference the tab header for `aria-labelledby` or not\n isTablistShown: () => this.hasMultipleTabs\n };\n },\n props: {\n /**\n * Id of the tab to activate\n */\n active: {\n type: String,\n default: \"\"\n },\n /**\n * Force the tab navigation to display even if there is only one tab\n */\n forceTabs: {\n type: Boolean,\n default: false\n }\n },\n emits: [\"update:active\"],\n data(props) {\n return {\n /**\n * Tab descriptions from the passed NcSidebarTab components' props to build the tab navbar from.\n */\n tabs: [],\n /**\n * Local active (open) tab's ID. It allows to use component without v-model:active\n */\n activeTab: props.active,\n isLegacy34\n };\n },\n computed: {\n /**\n * Has multiple tabs. If only one tab - its content is shown without navigation\n *\n * @return {boolean}\n */\n hasMultipleTabs() {\n return this.tabs.length > 1;\n },\n showForSingleTab() {\n return this.forceTabs && this.tabs.length === 1;\n },\n currentTabIndex() {\n return this.tabs.findIndex((tab) => tab.id === this.activeTab);\n }\n },\n watch: {\n tabs() {\n if (this.active) {\n this.updateActive();\n }\n },\n active(active) {\n if (active !== this.activeTab) {\n this.updateActive();\n }\n }\n },\n methods: {\n /**\n * Set the current active tab\n *\n * @param {string} id the id of the tab\n */\n setActive(id) {\n this.activeTab = id;\n this.$emit(\"update:active\", this.activeTab);\n },\n /**\n * Focus the previous tab\n * and emit to the parent component\n */\n focusPreviousTab() {\n if (this.currentTabIndex > 0) {\n this.setActive(this.tabs[this.currentTabIndex - 1].id);\n }\n this.focusActiveTab();\n },\n /**\n * Focus the next tab\n * and emit to the parent component\n */\n focusNextTab() {\n if (this.currentTabIndex < this.tabs.length - 1) {\n this.setActive(this.tabs[this.currentTabIndex + 1].id);\n }\n this.focusActiveTab();\n },\n /**\n * Focus the first tab\n * and emit to the parent component\n */\n focusFirstTab() {\n this.setActive(this.tabs[0].id);\n this.focusActiveTab();\n },\n /**\n * Focus the last tab\n * and emit to the parent component\n */\n focusLastTab() {\n this.setActive(this.tabs[this.tabs.length - 1].id);\n this.focusActiveTab();\n },\n /**\n * Focus the current active tab\n */\n focusActiveTab() {\n this.$el.querySelector(`#tab-button-${this.activeTab}`).focus();\n },\n /**\n * Focus the content on tab\n * see aria accessibility guidelines\n */\n focusActiveTabContent() {\n this.$el.querySelector(\"#tab-\" + this.activeTab).focus();\n },\n /**\n * Update the current active tab\n */\n updateActive() {\n this.activeTab = this.active && this.tabs.some(({ id }) => id === this.active) ? this.active : this.tabs[0]?.id ?? \"\";\n },\n /**\n * Register child tab in the tabs\n *\n * @param {object} tab child tab passed to slot\n */\n registerTab(tab) {\n this.tabs.push(tab);\n this.tabs.sort((a, b) => {\n if (a.order === b.order) {\n return a.name.localeCompare(b.name, [getCanonicalLocale()]);\n }\n return a.order - b.order;\n });\n this.updateActive();\n },\n /**\n * Unregister child tab from the tabs\n *\n * @param {string} id tab's id\n */\n unregisterTab(id) {\n const tabIndex = this.tabs.findIndex((tab) => tab.id === id);\n if (tabIndex !== -1) {\n this.tabs.splice(tabIndex, 1);\n }\n if (this.activeTab === id) {\n this.updateActive();\n }\n }\n }\n};\nconst _hoisted_1$1 = { class: \"app-sidebar-tabs\" };\nfunction _sfc_render$1(_ctx, _cache, $props, $setup, $data, $options) {\n const _component_NcAppSidebarTabsButton = resolveComponent(\"NcAppSidebarTabsButton\");\n return openBlock(), createElementBlock(\"div\", _hoisted_1$1, [\n $options.hasMultipleTabs || $options.showForSingleTab ? (openBlock(), createElementBlock(\"div\", {\n key: 0,\n role: \"tablist\",\n class: normalizeClass([\"app-sidebar-tabs__nav\", { \"app-sidebar-tabs__nav--legacy\": $data.isLegacy34 }]),\n onKeydown: [\n _cache[0] || (_cache[0] = withKeys(withModifiers((...args) => $options.focusPreviousTab && $options.focusPreviousTab(...args), [\"exact\", \"prevent\", \"stop\"]), [\"left\"])),\n _cache[1] || (_cache[1] = withKeys(withModifiers((...args) => $options.focusNextTab && $options.focusNextTab(...args), [\"exact\", \"prevent\", \"stop\"]), [\"right\"])),\n _cache[2] || (_cache[2] = withKeys(withModifiers((...args) => $options.focusActiveTabContent && $options.focusActiveTabContent(...args), [\"exact\", \"prevent\", \"stop\"]), [\"tab\"])),\n _cache[3] || (_cache[3] = withKeys(withModifiers((...args) => $options.focusFirstTab && $options.focusFirstTab(...args), [\"exact\", \"prevent\", \"stop\"]), [\"home\"])),\n _cache[4] || (_cache[4] = withKeys(withModifiers((...args) => $options.focusLastTab && $options.focusLastTab(...args), [\"exact\", \"prevent\", \"stop\"]), [\"end\"])),\n _cache[5] || (_cache[5] = withKeys(withModifiers((...args) => $options.focusFirstTab && $options.focusFirstTab(...args), [\"exact\", \"prevent\", \"stop\"]), [\"page-up\"])),\n _cache[6] || (_cache[6] = withKeys(withModifiers((...args) => $options.focusLastTab && $options.focusLastTab(...args), [\"exact\", \"prevent\", \"stop\"]), [\"page-down\"]))\n ]\n }, [\n (openBlock(true), createElementBlock(Fragment, null, renderList($data.tabs, (tab) => {\n return openBlock(), createBlock(_component_NcAppSidebarTabsButton, {\n id: `tab-button-${tab.id}`,\n key: tab.id,\n class: \"app-sidebar-tabs__tab\",\n \"aria-controls\": `tab-${tab.id}`,\n selected: $data.activeTab === tab.id,\n tab,\n \"onUpdate:selected\": ($event) => $options.setActive(tab.id)\n }, null, 8, [\"id\", \"aria-controls\", \"selected\", \"tab\", \"onUpdate:selected\"]);\n }), 128))\n ], 34)) : createCommentVNode(\"\", true),\n createElementVNode(\"div\", {\n class: normalizeClass([\"app-sidebar-tabs__content\", { \"app-sidebar-tabs__content--multiple\": $options.hasMultipleTabs }])\n }, [\n renderSlot(_ctx.$slots, \"default\", {}, void 0, true)\n ], 2)\n ]);\n}\nconst NcAppSidebarTabs = /* @__PURE__ */ _export_sfc(_sfc_main$1, [[\"render\", _sfc_render$1], [\"__scopeId\", \"data-v-e74d1502\"]]);\nregister(t15);\nconst _sfc_main = {\n name: \"NcAppSidebar\",\n components: {\n NcActions,\n NcAppSidebarHeader: _sfc_main$7,\n NcAppSidebarTabs,\n NcButton,\n NcLoadingIcon,\n NcEmptyContent,\n IconArrowRight,\n IconClose,\n IconDockRight,\n IconStar,\n IconStarOutline\n },\n directives: {\n Focus: directive,\n /** @type {import('vue').ObjectDirective} */\n ClickOutside: vOnClickOutside\n },\n inject: {\n ncContentSelector: {\n from: CONTENT_SELECTOR_KEY,\n default: void 0\n }\n },\n props: {\n /**\n * The active tab\n */\n active: {\n type: String,\n default: \"\"\n },\n /**\n * Main text of the sidebar\n */\n name: {\n type: String,\n required: true\n },\n /**\n * Allow to edit the sidebar name.\n */\n nameEditable: {\n type: Boolean,\n default: false\n },\n /**\n * Placeholder in the edit field if the name is editable.\n */\n namePlaceholder: {\n type: String,\n default: \"\"\n },\n /**\n * Secondary name of the sidebar (subline)\n */\n subname: {\n type: String,\n default: \"\"\n },\n /**\n * Title to display for the subname.\n */\n subtitle: {\n type: String,\n default: \"\"\n },\n /**\n * Url to the top header background image\n * Applied with css\n */\n background: {\n type: String,\n default: \"\"\n },\n /**\n * Enable the favourite icon if not null\n * See fired events\n */\n starred: {\n type: Boolean,\n default: null\n },\n /**\n * Show loading spinner instead of the star icon\n */\n starLoading: {\n type: Boolean,\n default: false\n },\n /**\n * Show loading spinner instead of tabs\n */\n loading: {\n type: Boolean,\n default: false\n },\n /**\n * Display the sidebar in compact mode\n */\n compact: {\n type: Boolean,\n default: false\n },\n /**\n * Only display close button and default slot content.\n * Don't display other header content and primary and secondary actions.\n * Useful when showing the EmptyContent component as content.\n */\n empty: {\n type: Boolean,\n default: false\n },\n /**\n * Force the actions to display in a three dot menu\n */\n forceMenu: {\n type: Boolean,\n default: false\n },\n /**\n * Force the tab navigation to display even if there is only one tab\n */\n forceTabs: {\n type: Boolean,\n default: false\n },\n /**\n * Linkify the name\n */\n linkifyName: {\n type: Boolean,\n default: false\n },\n /**\n * Title to display for the name.\n * Can be set to the same text in case it's too long.\n */\n title: {\n type: String,\n default: \"\"\n },\n /**\n * Allow to conditionally show the sidebar\n * You can also use `v-if` on the sidebar, but using the open prop allow to keep\n * the sidebar inside the DOM for performance if it is opened and closed multiple times.\n *\n * When using the `open` property to close the sidebar a built-in toggle button will be shown to reopen it,\n * similar to the app navigation. You can remove this button with the `no-toggle` prop.\n */\n open: {\n type: Boolean,\n default: true\n },\n /**\n * Custom classes to assign to the sidebar toggle button.\n * If needed this can be used to assign styles to the button using `:deep()` selector.\n */\n toggleClasses: {\n type: [String, Array, Object],\n default: \"\"\n },\n /**\n * Custom attrs to assign to the sidebar toggle button.\n */\n toggleAttrs: {\n type: Object,\n default: void 0\n },\n /**\n * Do not add the built-in toggle button with `open` prop.\n */\n noToggle: {\n type: Boolean,\n default: false\n }\n },\n emits: [\n \"close\",\n \"closed\",\n \"opened\",\n // 'figureClick', not emitted on purpose to make \"hasFigureClickListener\" work\n \"update:active\",\n \"update:name\",\n \"update:nameEditable\",\n \"update:open\",\n \"update:starred\",\n \"submitName\",\n \"dismissEditing\"\n ],\n setup() {\n const headerRef = ref(null);\n provide(\"NcAppSidebar:header:ref\", headerRef);\n return {\n uid: createElementId(),\n isMobile: useIsSmallMobile(),\n headerRef\n };\n },\n data() {\n return {\n changeNameTranslated: t(\"Change name\"),\n closeTranslated: t(\"Close sidebar\"),\n favoriteTranslated: t(\"Favorite\"),\n isStarred: this.starred,\n focusTrap: null,\n elementToReturnFocus: null\n };\n },\n computed: {\n canStar() {\n return this.isStarred !== null;\n },\n hasFigureClickListener() {\n return !!this.$attrs.onFigureClick;\n }\n },\n watch: {\n starred() {\n this.isStarred = this.starred;\n },\n isMobile() {\n this.toggleFocusTrap();\n },\n open() {\n this.checkToggleButtonContainerAvailability();\n }\n },\n created() {\n this.preserveElementToReturnFocus();\n this.checkToggleButtonContainerAvailability();\n },\n beforeUnmount() {\n this.$emit(\"closed\");\n this.focusTrap?.deactivate();\n },\n methods: {\n isSlotPopulated,\n t,\n preserveElementToReturnFocus() {\n if (document.activeElement && document.activeElement !== document.body) {\n this.elementToReturnFocus = document.activeElement;\n if (this.elementToReturnFocus.getAttribute(\"role\") === \"menuitem\") {\n const menu = this.elementToReturnFocus.closest('[role=\"menu\"]');\n if (menu) {\n const menuTrigger = document.querySelector(`[aria-controls=\"${menu.id}\"]`);\n this.elementToReturnFocus = menuTrigger;\n }\n }\n }\n },\n initFocusTrap() {\n if (this.focusTrap) {\n return;\n }\n this.focusTrap = createFocusTrap([\n // The sidebar itself\n this.$refs.sidebar,\n // Nextcloud Server header navigation\n document.querySelector(\"#header\")\n ], {\n allowOutsideClick: true,\n fallbackFocus: this.$refs.closeButton.$el,\n trapStack: getTrapStack(),\n escapeDeactivates: false\n });\n },\n /**\n * Activate focus trap if it is currently needed, otherwise deactivate\n */\n toggleFocusTrap() {\n if (this.open && this.isMobile) {\n this.initFocusTrap();\n this.focusTrap.activate();\n } else {\n this.focusTrap?.deactivate();\n }\n },\n /**\n * Close the sidebar on pressing the escape key on mobile\n *\n * @param {KeyboardEvent} event key down event\n */\n onKeydownEsc(event) {\n if (this.isMobile) {\n event.stopPropagation();\n this.closeSidebar();\n }\n },\n onAfterEnter(element) {\n if (this.elementToReturnFocus) {\n this.focus();\n }\n this.toggleFocusTrap();\n this.$emit(\"opened\", element);\n },\n onAfterLeave(element) {\n this.$emit(\"closed\", element);\n this.toggleFocusTrap();\n this.elementToReturnFocus?.focus({ focusVisible: true });\n this.elementToReturnFocus = null;\n },\n /**\n * Used to tell parent component the user asked to close the sidebar\n *\n * @param {Event} e close icon click event\n */\n closeSidebar(e) {\n this.$emit(\"close\", e);\n this.$emit(\"update:open\", false);\n },\n /**\n * Emit figure click event to parent component\n *\n * @param {Event} e click event\n */\n onFigureClick(e) {\n this.$emit(\"figureClick\", e);\n },\n /**\n * Toggle the favourite state\n * and emit to the parent component\n */\n toggleStarred() {\n this.isStarred = !this.isStarred;\n this.$emit(\"update:starred\", this.isStarred);\n },\n async editName() {\n this.$emit(\"update:nameEditable\", true);\n if (this.nameEditable) {\n await this.$nextTick();\n this.$refs.nameInput.focus();\n }\n },\n /**\n * Focus the sidebar\n *\n * @public\n */\n focus() {\n if (!this.open && !this.noToggle) {\n this.$refs.toggle.$el.focus();\n return;\n }\n try {\n this.headerRef.focus();\n } catch {\n warn(\"NcAppSidebar should have focusable header for accessibility reasons. Use NcAppSidebarHeader component.\");\n }\n },\n /**\n * Focus the active tab\n *\n * @public\n */\n focusActiveTabContent() {\n this.preserveElementToReturnFocus();\n this.$refs.tabs.focusActiveTabContent();\n },\n /**\n * Check if the toggle button container is available\n */\n checkToggleButtonContainerAvailability() {\n if (this.open === false && !this.noToggle && !this.ncContentSelector) {\n logger.warn(\"[NcAppSidebar] It looks like you want to use NcAppSidebar with the built-in toggle button. This feature is only available when NcAppSidebar is used in NcContent.\");\n }\n },\n /**\n * Emit name change event to parent component\n *\n * @param {Event} event input event\n */\n onNameInput(event) {\n this.$emit(\"update:name\", event.target.value);\n },\n /**\n * Emit when the name form edit confirm button is pressed in order\n * to change the name.\n *\n * @param {Event} event submit event\n */\n onSubmitName(event) {\n this.$emit(\"update:nameEditable\", false);\n this.$emit(\"submitName\", event);\n },\n onDismissEditing() {\n this.$emit(\"update:nameEditable\", false);\n this.$emit(\"dismissEditing\");\n },\n onUpdateActive(activeTab) {\n this.$emit(\"update:active\", activeTab);\n }\n }\n};\nconst _hoisted_1 = [\"aria-labelledby\"];\nconst _hoisted_2 = { class: \"app-sidebar-header__info\" };\nconst _hoisted_3 = {\n key: 0,\n class: \"app-sidebar-header__tertiary-actions\"\n};\nconst _hoisted_4 = { class: \"app-sidebar-header__name-container\" };\nconst _hoisted_5 = { class: \"app-sidebar-header__mainname-container\" };\nconst _hoisted_6 = [\"placeholder\", \"value\"];\nconst _hoisted_7 = [\"title\"];\nconst _hoisted_8 = {\n key: 2,\n class: \"app-sidebar-header__description\"\n};\nfunction _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {\n const _component_IconDockRight = resolveComponent(\"IconDockRight\");\n const _component_NcButton = resolveComponent(\"NcButton\");\n const _component_NcLoadingIcon = resolveComponent(\"NcLoadingIcon\");\n const _component_IconStar = resolveComponent(\"IconStar\");\n const _component_IconStarOutline = resolveComponent(\"IconStarOutline\");\n const _component_NcAppSidebarHeader = resolveComponent(\"NcAppSidebarHeader\");\n const _component_IconArrowRight = resolveComponent(\"IconArrowRight\");\n const _component_NcActions = resolveComponent(\"NcActions\");\n const _component_IconClose = resolveComponent(\"IconClose\");\n const _component_NcAppSidebarTabs = resolveComponent(\"NcAppSidebarTabs\");\n const _component_NcEmptyContent = resolveComponent(\"NcEmptyContent\");\n const _directive_focus = resolveDirective(\"focus\");\n const _directive_click_outside = resolveDirective(\"click-outside\");\n return openBlock(), createBlock(Transition, {\n appear: \"\",\n name: \"slide-right\",\n onAfterEnter: $options.onAfterEnter,\n onAfterLeave: $options.onAfterLeave\n }, {\n default: withCtx(() => [\n withDirectives(createElementVNode(\"aside\", {\n id: \"app-sidebar-vue\",\n ref: \"sidebar\",\n class: \"app-sidebar\",\n \"aria-labelledby\": `app-sidebar-vue-${$setup.uid}__header`,\n onKeydown: _cache[6] || (_cache[6] = withKeys((...args) => $options.onKeydownEsc && $options.onKeydownEsc(...args), [\"esc\"]))\n }, [\n $options.ncContentSelector && !$props.open && !$props.noToggle ? (openBlock(), createBlock(Teleport, {\n key: 0,\n to: $options.ncContentSelector\n }, [\n createVNode(_component_NcButton, mergeProps({\n ref: \"toggle\",\n \"aria-label\": $options.t(\"Open sidebar\"),\n class: [\"app-sidebar__toggle\", $props.toggleClasses],\n variant: \"tertiary\"\n }, $props.toggleAttrs, {\n onClick: _cache[0] || (_cache[0] = ($event) => _ctx.$emit(\"update:open\", true))\n }), {\n icon: withCtx(() => [\n renderSlot(_ctx.$slots, \"toggle-icon\", {}, () => [\n createVNode(_component_IconDockRight, { size: 20 })\n ], true)\n ]),\n _: 3\n }, 16, [\"aria-label\", \"class\"])\n ], 8, [\"to\"])) : createCommentVNode(\"\", true),\n createElementVNode(\"header\", {\n class: normalizeClass([\"app-sidebar-header\", {\n \"app-sidebar-header--with-figure\": $options.isSlotPopulated(_ctx.$slots.header?.()) || $props.background,\n \"app-sidebar-header--compact\": $props.compact\n }])\n }, [\n !$props.empty ? renderSlot(_ctx.$slots, \"info\", { key: 0 }, () => [\n createElementVNode(\"div\", _hoisted_2, [\n $options.isSlotPopulated(_ctx.$slots.header?.()) || $props.background ? (openBlock(), createElementBlock(\"div\", {\n key: 0,\n class: normalizeClass([\"app-sidebar-header__figure\", {\n \"app-sidebar-header__figure--with-action\": $options.hasFigureClickListener\n }]),\n style: normalizeStyle({\n backgroundImage: `url(${$props.background})`\n }),\n tabindex: \"0\",\n onClick: _cache[1] || (_cache[1] = (...args) => $options.onFigureClick && $options.onFigureClick(...args)),\n onKeydown: _cache[2] || (_cache[2] = withKeys((...args) => $options.onFigureClick && $options.onFigureClick(...args), [\"enter\"]))\n }, [\n renderSlot(_ctx.$slots, \"header\", { class: \"app-sidebar-header__background\" }, void 0, true)\n ], 38)) : createCommentVNode(\"\", true),\n createElementVNode(\"div\", {\n class: normalizeClass([\"app-sidebar-header__desc\", {\n \"app-sidebar-header__desc--with-tertiary-action\": $options.canStar || $options.isSlotPopulated(_ctx.$slots[\"tertiary-actions\"]?.()),\n \"app-sidebar-header__desc--editable\": $props.nameEditable && !$props.subname,\n \"app-sidebar-header__desc--with-subname--editable\": $props.nameEditable && $props.subname,\n \"app-sidebar-header__desc--without-actions\": !$options.isSlotPopulated(_ctx.$slots[\"secondary-actions\"]?.())\n }])\n }, [\n $options.canStar || $options.isSlotPopulated(_ctx.$slots[\"tertiary-actions\"]?.()) ? (openBlock(), createElementBlock(\"div\", _hoisted_3, [\n renderSlot(_ctx.$slots, \"tertiary-actions\", {}, () => [\n $options.canStar ? (openBlock(), createBlock(_component_NcButton, {\n key: 0,\n \"aria-label\": $data.favoriteTranslated,\n pressed: $data.isStarred,\n class: \"app-sidebar-header__star\",\n variant: \"secondary\",\n onClick: withModifiers($options.toggleStarred, [\"prevent\"])\n }, {\n icon: withCtx(() => [\n $props.starLoading ? (openBlock(), createBlock(_component_NcLoadingIcon, { key: 0 })) : $data.isStarred ? (openBlock(), createBlock(_component_IconStar, {\n key: 1,\n size: 20\n })) : (openBlock(), createBlock(_component_IconStarOutline, {\n key: 2,\n size: 20\n }))\n ]),\n _: 1\n }, 8, [\"aria-label\", \"pressed\", \"onClick\"])) : createCommentVNode(\"\", true)\n ], true)\n ])) : createCommentVNode(\"\", true),\n createElementVNode(\"div\", _hoisted_4, [\n createElementVNode(\"div\", _hoisted_5, [\n withDirectives(createVNode(_component_NcAppSidebarHeader, {\n class: \"app-sidebar-header__mainname\",\n name: $props.name,\n linkify: $props.linkifyName,\n title: $props.title,\n tabindex: $props.nameEditable ? 0 : -1,\n onClick: withModifiers($options.editName, [\"self\"])\n }, null, 8, [\"name\", \"linkify\", \"title\", \"tabindex\", \"onClick\"]), [\n [vShow, !$props.nameEditable]\n ]),\n $props.nameEditable ? withDirectives((openBlock(), createElementBlock(\"form\", {\n key: 0,\n class: \"app-sidebar-header__mainname-form\",\n onSubmit: _cache[5] || (_cache[5] = withModifiers((...args) => $options.onSubmitName && $options.onSubmitName(...args), [\"prevent\"]))\n }, [\n withDirectives(createElementVNode(\"input\", {\n ref: \"nameInput\",\n class: \"app-sidebar-header__mainname-input\",\n type: \"text\",\n placeholder: $props.namePlaceholder,\n value: $props.name,\n onKeydown: _cache[3] || (_cache[3] = withKeys(withModifiers((...args) => $options.onDismissEditing && $options.onDismissEditing(...args), [\"stop\"]), [\"esc\"])),\n onInput: _cache[4] || (_cache[4] = (...args) => $options.onNameInput && $options.onNameInput(...args))\n }, null, 40, _hoisted_6), [\n [_directive_focus]\n ]),\n createVNode(_component_NcButton, {\n \"aria-label\": $data.changeNameTranslated,\n type: \"submit\",\n variant: \"tertiary-no-background\"\n }, {\n icon: withCtx(() => [\n createVNode(_component_IconArrowRight, { size: 20 })\n ]),\n _: 1\n }, 8, [\"aria-label\"])\n ], 32)), [\n [_directive_click_outside, () => $options.onSubmitName()]\n ]) : createCommentVNode(\"\", true),\n $options.isSlotPopulated(_ctx.$slots[\"secondary-actions\"]?.()) ? (openBlock(), createBlock(_component_NcActions, {\n key: 1,\n class: \"app-sidebar-header__menu\",\n forceMenu: $props.forceMenu\n }, {\n default: withCtx(() => [\n renderSlot(_ctx.$slots, \"secondary-actions\", {}, void 0, true)\n ]),\n _: 3\n }, 8, [\"forceMenu\"])) : createCommentVNode(\"\", true)\n ]),\n $props.subname.trim() !== \"\" || _ctx.$slots[\"subname\"] ? (openBlock(), createElementBlock(\"p\", {\n key: 0,\n title: $props.subtitle || void 0,\n class: \"app-sidebar-header__subname\"\n }, [\n renderSlot(_ctx.$slots, \"subname\", {}, () => [\n createTextVNode(toDisplayString($props.subname), 1)\n ], true)\n ], 8, _hoisted_7)) : createCommentVNode(\"\", true)\n ])\n ], 2)\n ])\n ], true) : (openBlock(), createBlock(_component_NcAppSidebarHeader, {\n key: 1,\n class: \"app-sidebar-header__mainname--hidden\",\n name: $props.name,\n tabindex: \"-1\"\n }, null, 8, [\"name\"])),\n createVNode(_component_NcButton, {\n ref: \"closeButton\",\n \"aria-label\": $data.closeTranslated,\n title: $data.closeTranslated,\n class: \"app-sidebar__close\",\n variant: \"tertiary\",\n onClick: withModifiers($options.closeSidebar, [\"prevent\"])\n }, {\n icon: withCtx(() => [\n createVNode(_component_IconClose, { size: 20 })\n ]),\n _: 1\n }, 8, [\"aria-label\", \"title\", \"onClick\"]),\n $options.isSlotPopulated(_ctx.$slots.description?.()) && !$props.empty ? (openBlock(), createElementBlock(\"div\", _hoisted_8, [\n renderSlot(_ctx.$slots, \"description\", {}, void 0, true)\n ])) : createCommentVNode(\"\", true)\n ], 2),\n withDirectives(createVNode(_component_NcAppSidebarTabs, {\n ref: \"tabs\",\n active: $props.active,\n forceTabs: $props.forceTabs,\n \"onUpdate:active\": $options.onUpdateActive\n }, {\n default: withCtx(() => [\n renderSlot(_ctx.$slots, \"default\", {}, void 0, true)\n ]),\n _: 3\n }, 8, [\"active\", \"forceTabs\", \"onUpdate:active\"]), [\n [vShow, !$props.loading]\n ]),\n $props.loading ? (openBlock(), createBlock(_component_NcEmptyContent, { key: 1 }, {\n icon: withCtx(() => [\n createVNode(_component_NcLoadingIcon, { size: 64 })\n ]),\n _: 1\n })) : createCommentVNode(\"\", true)\n ], 40, _hoisted_1), [\n [vShow, $props.open]\n ])\n ]),\n _: 3\n }, 8, [\"onAfterEnter\", \"onAfterLeave\"]);\n}\nconst NcAppSidebar = /* @__PURE__ */ _export_sfc(_sfc_main, [[\"render\", _sfc_render], [\"__scopeId\", \"data-v-e8979b7f\"]]);\nexport {\n NcAppSidebar as N\n};\n//# sourceMappingURL=NcAppSidebar-C8YzAzrZ.mjs.map\n","import PQueue from \"p-queue\";\nconst queue = new PQueue({ concurrency: 5 });\nfunction preloadImage(url) {\n const { resolve, promise } = Promise.withResolvers();\n queue.add(() => {\n const image = new Image();\n image.onerror = () => resolve(false);\n image.onload = () => resolve(true);\n image.src = url;\n return promise;\n });\n return promise;\n}\nexport {\n preloadImage\n};\n//# sourceMappingURL=index.mjs.map\n","import '../assets/NcCollectionList-e5JFvzqX.css';\nimport debounce from \"debounce\";\nimport { resolveComponent, openBlock, createElementBlock, createVNode, toDisplayString, withModifiers, normalizeClass, withDirectives, createElementVNode, vModelText, Fragment, renderList, createBlock, resolveDynamicComponent, withCtx, createCommentVNode, createTextVNode, Transition, ref } from \"vue\";\nimport { r as register, L as t28, a as t, M as t6 } from \"./_l10n-wdIzZwir.mjs\";\nimport { N as NcActionButton } from \"./NcActionButton-BO5T5ePT.mjs\";\nimport { N as NcActions } from \"./NcActions-C-wDqSrv.mjs\";\nimport { N as NcAvatar } from \"./NcAvatar-1KxMUN7V.mjs\";\nimport { g as getRoute } from \"./autolink-DrIurosL.mjs\";\nimport { _ as _export_sfc } from \"./_plugin-vue_export-helper-1tPrXgE0.mjs\";\nimport { l as logger } from \"./logger-D3RVzcfQ.mjs\";\nimport { N as NcSelect } from \"./NcSelect--kERLlBK.mjs\";\nimport axios from \"@nextcloud/axios\";\nimport { generateOcsUrl } from \"@nextcloud/router\";\nregister(t28);\nconst _sfc_main$1 = {\n name: \"NcCollectionListItem\",\n components: {\n NcAvatar,\n NcActions,\n NcActionButton\n },\n props: {\n /**\n * The collection\n */\n collection: {\n type: Object,\n default: null\n },\n /**\n * Current error if any\n */\n error: {\n type: String,\n default: void 0\n }\n },\n emits: [\n \"removeResource\",\n \"renameCollection\"\n ],\n data() {\n return {\n detailsOpen: false,\n newName: null\n };\n },\n computed: {\n getIcon() {\n return (resource) => [resource.iconClass];\n },\n typeClass() {\n return (resource) => \"resource-type-\" + resource.type;\n },\n resources() {\n return this.collection.resources?.filter((resource) => !Array.isArray(resource)) ?? [];\n },\n getComponent() {\n return (resource) => {\n const route = getRoute(this.$router, resource.link);\n return route ? { component: \"router-link\", to: route, href: void 0 } : { component: \"a\", to: void 0, href: resource.link };\n };\n },\n iconUrl() {\n return (resource) => {\n if (resource.mimetype) {\n return OC.MimeType.getIconUrl(resource.mimetype);\n }\n if (resource.iconUrl) {\n return resource.iconUrl;\n }\n return \"\";\n };\n }\n },\n methods: {\n t,\n toggleDetails() {\n this.detailsOpen = !this.detailsOpen;\n },\n showDetails() {\n this.detailsOpen = true;\n },\n removeResource(collection, resource) {\n this.$emit(\"removeResource\", {\n collectionId: collection.id,\n resourceType: resource.type,\n resourceId: resource.id\n });\n },\n openRename() {\n this.newName = this.collection.name;\n },\n renameCollection() {\n if (this.newName) {\n this.$emit(\"renameCollection\", {\n collectionId: this.collection.id,\n name: this.newName\n });\n }\n this.newName = null;\n }\n }\n};\nconst _hoisted_1$1 = { class: \"collection-list-item\" };\nconst _hoisted_2$1 = {\n key: 2,\n class: \"linked-icons\"\n};\nconst _hoisted_3$1 = [\"src\", \"alt\"];\nconst _hoisted_4$1 = {\n key: 3,\n class: \"sharingOptionsGroup\"\n};\nconst _hoisted_5$1 = {\n key: 0,\n class: \"error\"\n};\nconst _hoisted_6$1 = {\n key: 0,\n class: \"resource-list-details\"\n};\nconst _hoisted_7$1 = [\"src\", \"alt\"];\nconst _hoisted_8$1 = { class: \"resource-name\" };\nconst _hoisted_9 = [\"onClick\"];\nfunction _sfc_render$1(_ctx, _cache, $props, $setup, $data, $options) {\n const _component_NcAvatar = resolveComponent(\"NcAvatar\");\n const _component_NcActionButton = resolveComponent(\"NcActionButton\");\n const _component_NcActions = resolveComponent(\"NcActions\");\n return openBlock(), createElementBlock(\"li\", _hoisted_1$1, [\n createVNode(_component_NcAvatar, {\n displayName: $props.collection.name,\n allowPlaceholder: \"\",\n class: \"collection-avatar\"\n }, null, 8, [\"displayName\"]),\n $data.newName === null ? (openBlock(), createElementBlock(\"span\", {\n key: 0,\n class: \"collection-item-name\",\n title: \"\",\n onClick: _cache[0] || (_cache[0] = (...args) => $options.showDetails && $options.showDetails(...args))\n }, toDisplayString($props.collection.name), 1)) : (openBlock(), createElementBlock(\"form\", {\n key: 1,\n class: normalizeClass({ \"should-shake\": $props.error }),\n onSubmit: _cache[2] || (_cache[2] = withModifiers((...args) => $options.renameCollection && $options.renameCollection(...args), [\"prevent\"]))\n }, [\n withDirectives(createElementVNode(\"input\", {\n \"onUpdate:modelValue\": _cache[1] || (_cache[1] = ($event) => $data.newName = $event),\n type: \"text\",\n autocomplete: \"off\",\n autocapitalize: \"off\"\n }, null, 512), [\n [vModelText, $data.newName]\n ]),\n _cache[3] || (_cache[3] = createElementVNode(\"input\", {\n type: \"submit\",\n value: \"\",\n class: \"icon-confirm\"\n }, null, -1))\n ], 34)),\n !$data.detailsOpen && $data.newName === null ? (openBlock(), createElementBlock(\"div\", _hoisted_2$1, [\n (openBlock(true), createElementBlock(Fragment, null, renderList($options.resources.slice(0, 2), (resource) => {\n return openBlock(), createBlock(resolveDynamicComponent($options.getComponent(resource).component), {\n key: resource.type + \"|\" + resource.id,\n title: resource.name,\n to: $options.getComponent(resource).to,\n href: $options.getComponent(resource).href,\n class: normalizeClass($options.typeClass(resource))\n }, {\n default: withCtx(() => [\n createElementVNode(\"img\", {\n src: $options.iconUrl(resource),\n alt: resource.name\n }, null, 8, _hoisted_3$1)\n ]),\n _: 2\n }, 1032, [\"title\", \"to\", \"href\", \"class\"]);\n }), 128))\n ])) : createCommentVNode(\"\", true),\n $data.newName === null ? (openBlock(), createElementBlock(\"span\", _hoisted_4$1, [\n createVNode(_component_NcActions, null, {\n default: withCtx(() => [\n createVNode(_component_NcActionButton, {\n icon: \"icon-info\",\n onClick: withModifiers($options.toggleDetails, [\"prevent\"])\n }, {\n default: withCtx(() => [\n createTextVNode(toDisplayString($data.detailsOpen ? $options.t(\"Hide details\") : $options.t(\"Show details\")), 1)\n ]),\n _: 1\n }, 8, [\"onClick\"]),\n createVNode(_component_NcActionButton, {\n icon: \"icon-rename\",\n onClick: withModifiers($options.openRename, [\"prevent\"])\n }, {\n default: withCtx(() => [\n createTextVNode(toDisplayString($options.t(\"Rename project\")), 1)\n ]),\n _: 1\n }, 8, [\"onClick\"])\n ]),\n _: 1\n })\n ])) : createCommentVNode(\"\", true),\n createVNode(Transition, { name: \"fade\" }, {\n default: withCtx(() => [\n $props.error ? (openBlock(), createElementBlock(\"div\", _hoisted_5$1, toDisplayString($props.error), 1)) : createCommentVNode(\"\", true)\n ]),\n _: 1\n }),\n createVNode(Transition, { name: \"fade\" }, {\n default: withCtx(() => [\n $data.detailsOpen ? (openBlock(), createElementBlock(\"ul\", _hoisted_6$1, [\n (openBlock(true), createElementBlock(Fragment, null, renderList($options.resources, (resource) => {\n return openBlock(), createElementBlock(\"li\", {\n key: resource.type + \"|\" + resource.id,\n class: normalizeClass($options.typeClass(resource))\n }, [\n (openBlock(), createBlock(resolveDynamicComponent($options.getComponent(resource).component), {\n to: $options.getComponent(resource).to,\n href: $options.getComponent(resource).href\n }, {\n default: withCtx(() => [\n createElementVNode(\"img\", {\n src: $options.iconUrl(resource),\n alt: resource.name\n }, null, 8, _hoisted_7$1),\n createElementVNode(\"span\", _hoisted_8$1, toDisplayString(resource.name || \"\"), 1)\n ]),\n _: 2\n }, 1032, [\"to\", \"href\"])),\n createElementVNode(\"span\", {\n class: \"icon-close\",\n onClick: ($event) => $options.removeResource($props.collection, resource)\n }, null, 8, _hoisted_9)\n ], 2);\n }), 128))\n ])) : createCommentVNode(\"\", true)\n ]),\n _: 1\n })\n ]);\n}\nconst NcCollectionListItem = /* @__PURE__ */ _export_sfc(_sfc_main$1, [[\"render\", _sfc_render$1], [\"__scopeId\", \"data-v-8ebb9fc1\"]]);\nregister(t6);\nfunction extractOcsData(response) {\n return response.data.ocs.data;\n}\nfunction renameCollectionService(collectionId, collectionName) {\n return axios.put(generateOcsUrl(\"collaboration/resources/collections/{collectionId}\", { collectionId }), { collectionName }).then(extractOcsData);\n}\nfunction getCollectionsByResourceService(resourceType, resourceId) {\n return axios.get(generateOcsUrl(\"collaboration/resources/{resourceType}/{resourceId}\", { resourceType, resourceId })).then(extractOcsData);\n}\nfunction createCollectionService(resourceType, resourceId, name) {\n return axios.post(generateOcsUrl(\"collaboration/resources/{resourceType}/{resourceId}\", { resourceType, resourceId }), { name }).then(extractOcsData);\n}\nfunction addResourceService(collectionId, resourceType, resourceId) {\n return axios.post(generateOcsUrl(\"collaboration/resources/collections/{collectionId}\", { collectionId }), { resourceType, resourceId }).then(extractOcsData);\n}\nfunction removeResourceService(collectionId, resourceType, resourceId) {\n return axios.delete(generateOcsUrl(\"collaboration/resources/collections/{collectionId}\", { collectionId }), { params: { resourceType, resourceId } }).then(extractOcsData);\n}\nfunction searchService(query) {\n return axios.get(generateOcsUrl(\"collaboration/resources/collections/search/{query}\", { query })).then(extractOcsData);\n}\nfunction useCollections() {\n const storedCollections = ref([]);\n const addCollections = (collections) => {\n storedCollections.value = collections;\n };\n const addCollection = (collection) => {\n storedCollections.value.push(collection);\n };\n const removeCollection = (collectionId) => {\n storedCollections.value = storedCollections.value.filter((item) => item.id !== collectionId);\n };\n const updateCollection = (collection) => {\n const index = storedCollections.value.findIndex((item) => item.id === collection.id);\n if (index !== -1) {\n storedCollections.value[index] = collection;\n } else {\n addCollection(collection);\n }\n };\n const fetchCollectionsByResource = async ({ resourceType, resourceId }) => {\n const collections = await getCollectionsByResourceService(resourceType, resourceId);\n addCollections(collections);\n };\n const createCollection = async ({ baseResourceType, baseResourceId, resourceType, resourceId, name }) => {\n const collection = await createCollectionService(baseResourceType, baseResourceId, name);\n addCollection(collection);\n await addResourceToCollection({\n collectionId: collection.id,\n resourceType,\n resourceId\n });\n };\n const renameCollection = async ({ collectionId, name }) => {\n const collection = await renameCollectionService(collectionId, name);\n updateCollection(collection);\n };\n async function addResourceToCollection({ collectionId, resourceType, resourceId }) {\n const collection = await addResourceService(collectionId, resourceType, String(resourceId));\n updateCollection(collection);\n }\n const removeResourceFromCollection = async ({ collectionId, resourceType, resourceId }) => {\n const collection = await removeResourceService(collectionId, resourceType, String(resourceId));\n if (collection.resources.length > 0) {\n updateCollection(collection);\n } else {\n removeCollection(collectionId);\n }\n };\n return {\n storedCollections,\n fetchCollectionsByResource,\n createCollection,\n renameCollection,\n addResourceToCollection,\n removeResourceFromCollection\n };\n}\nconst METHOD_CREATE_COLLECTION = 0;\nconst METHOD_ADD_TO_COLLECTION = 1;\nconst _sfc_main = {\n name: \"NcCollectionList\",\n components: {\n NcCollectionListItem,\n NcAvatar,\n NcSelect\n },\n props: {\n /**\n * Resource type identifier\n */\n type: {\n type: String,\n default: null\n },\n /**\n * Unique id of the resource\n */\n id: {\n type: String,\n default: null\n },\n /**\n * Name of the resource\n */\n name: {\n type: String,\n default: \"\"\n },\n /**\n * Whether the component is active (to start fetch resources)\n */\n isActive: {\n type: Boolean,\n default: true\n }\n },\n setup() {\n const {\n storedCollections,\n fetchCollectionsByResource,\n createCollection,\n addResourceToCollection,\n removeResourceFromCollection,\n renameCollection\n } = useCollections();\n const searchCollections = ref([]);\n const search = debounce(function(query, loading) {\n if (query !== \"\") {\n loading(true);\n searchService(query).then((collections) => {\n searchCollections.value = collections;\n }).catch((error) => {\n logger.error(\"Failed to search for collections\", { error });\n }).finally(() => {\n loading(false);\n });\n }\n }, 500);\n return {\n storedCollections,\n fetchCollectionsByResource,\n createCollection,\n addResourceToCollection,\n removeResourceFromCollection,\n renameCollection,\n searchCollections,\n search\n };\n },\n data() {\n return {\n selectIsOpen: false,\n generatingCodes: false,\n codes: void 0,\n value: null,\n model: {},\n collectionsError: {},\n error: null,\n isSelectOpen: false\n };\n },\n computed: {\n collections() {\n return this.storedCollections.filter((collection) => collection.resources.some((resource) => resource && resource.id === String(this.id) && resource.type === this.type));\n },\n placeholder() {\n return this.isSelectOpen ? t(\"Type to search for existing projects\") : t(\"Add to a project\");\n },\n options() {\n const options = [];\n window.OCP.Collaboration.getTypes().sort().forEach((type) => {\n options.push({\n method: METHOD_CREATE_COLLECTION,\n type,\n title: window.OCP.Collaboration.getLabel(type),\n class: window.OCP.Collaboration.getIcon(type),\n action: () => window.OCP.Collaboration.trigger(type)\n });\n });\n for (const index in this.searchCollections) {\n if (!this.collections.find((collection) => collection.id === this.searchCollections[index].id)) {\n options.push({\n method: METHOD_ADD_TO_COLLECTION,\n title: this.searchCollections[index].name,\n collectionId: this.searchCollections[index].id\n });\n }\n }\n return options;\n },\n resourceIdentifier() {\n return {\n resourceType: this.type,\n resourceId: this.id,\n isActive: this.isActive\n };\n }\n },\n watch: {\n resourceIdentifier: {\n deep: true,\n immediate: true,\n handler(resourceIdentifier) {\n if (!resourceIdentifier.isActive || !resourceIdentifier.resourceId || !resourceIdentifier.resourceType) {\n return;\n }\n this.fetchCollectionsByResource(resourceIdentifier);\n }\n }\n },\n methods: {\n t,\n select(selectedOption) {\n if (selectedOption.method === METHOD_CREATE_COLLECTION) {\n selectedOption.action().then((resourceId) => {\n this.createCollection({\n baseResourceType: this.type,\n baseResourceId: this.id,\n resourceType: selectedOption.type,\n resourceId,\n name: this.name\n }).catch((e) => {\n this.setError(t(\"Failed to create a project\"), e);\n });\n }).catch((e) => {\n logger.error(\"[NcCollectionList] No resource selected\", e);\n });\n }\n if (selectedOption.method === METHOD_ADD_TO_COLLECTION) {\n this.addResourceToCollection({\n collectionId: selectedOption.collectionId,\n resourceType: this.type,\n resourceId: this.id\n }).catch((e) => {\n this.setError(t(\"Failed to add the item to the project\"), e);\n });\n }\n this.value = null;\n },\n showSelect() {\n this.selectIsOpen = true;\n this.$refs.select.$el.focus();\n },\n setError(error, e) {\n logger.error(error, { error: e });\n this.error = error;\n setTimeout(() => {\n this.error = null;\n }, 5e3);\n },\n renameCollectionFromItem({ collectionId, name }) {\n this.renameCollection({ collectionId, name }).catch((e) => {\n logger.error(t(\"Failed to rename the project\"), { error: e });\n this.collectionsError[collectionId] = t(\"Failed to rename the project\");\n setTimeout(() => {\n this.collectionsError[collectionId] = null;\n }, 5e3);\n });\n }\n }\n};\nconst _hoisted_1 = {\n key: 0,\n id: \"collection-list\",\n class: \"collection-list\"\n};\nconst _hoisted_2 = { id: \"collection-select-container\" };\nconst _hoisted_3 = { class: \"option__desc\" };\nconst _hoisted_4 = { class: \"option__title\" };\nconst _hoisted_5 = { class: \"option__wrapper\" };\nconst _hoisted_6 = { class: \"option__title\" };\nconst _hoisted_7 = { class: \"hint\" };\nconst _hoisted_8 = {\n key: 0,\n class: \"error\"\n};\nfunction _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {\n const _component_NcAvatar = resolveComponent(\"NcAvatar\");\n const _component_NcSelect = resolveComponent(\"NcSelect\");\n const _component_NcCollectionListItem = resolveComponent(\"NcCollectionListItem\");\n return $options.collections && $props.type && $props.id ? (openBlock(), createElementBlock(\"ul\", _hoisted_1, [\n createElementVNode(\"li\", {\n onClick: _cache[3] || (_cache[3] = (...args) => $options.showSelect && $options.showSelect(...args))\n }, [\n _cache[4] || (_cache[4] = createElementVNode(\"div\", { class: \"avatar\" }, [\n createElementVNode(\"span\", { class: \"icon-projects\" })\n ], -1)),\n createElementVNode(\"div\", _hoisted_2, [\n createVNode(_component_NcSelect, {\n ref: \"select\",\n modelValue: $data.value,\n \"onUpdate:modelValue\": _cache[0] || (_cache[0] = ($event) => $data.value = $event),\n \"aria-label-combobox\": $options.t(\"Add to a project\"),\n options: $options.options,\n placeholder: $options.placeholder,\n label: \"title\",\n limit: 5,\n onClose: _cache[1] || (_cache[1] = ($event) => $data.isSelectOpen = false),\n onOpen: _cache[2] || (_cache[2] = ($event) => $data.isSelectOpen = true),\n \"onOption:selected\": $options.select,\n onSearch: $setup.search\n }, {\n \"selected-option\": withCtx((option) => [\n createElementVNode(\"span\", _hoisted_3, [\n createElementVNode(\"span\", _hoisted_4, toDisplayString(option.title), 1)\n ])\n ]),\n option: withCtx((option) => [\n createElementVNode(\"span\", _hoisted_5, [\n option.class ? (openBlock(), createElementBlock(\"span\", {\n key: 0,\n class: normalizeClass([option.class, \"avatar\"])\n }, null, 2)) : option.method !== 2 ? (openBlock(), createBlock(_component_NcAvatar, {\n key: 1,\n allowPlaceholder: \"\",\n displayName: option.title\n }, null, 8, [\"displayName\"])) : createCommentVNode(\"\", true),\n createElementVNode(\"span\", _hoisted_6, toDisplayString(option.title), 1)\n ])\n ]),\n default: withCtx(() => [\n createElementVNode(\"p\", _hoisted_7, toDisplayString($options.t(\"Connect items to a project to make them easier to find\")), 1)\n ]),\n _: 1\n }, 8, [\"modelValue\", \"aria-label-combobox\", \"options\", \"placeholder\", \"onOption:selected\", \"onSearch\"])\n ])\n ]),\n createVNode(Transition, { name: \"fade\" }, {\n default: withCtx(() => [\n $data.error ? (openBlock(), createElementBlock(\"li\", _hoisted_8, toDisplayString($data.error), 1)) : createCommentVNode(\"\", true)\n ]),\n _: 1\n }),\n (openBlock(true), createElementBlock(Fragment, null, renderList($options.collections, (collection) => {\n return openBlock(), createBlock(_component_NcCollectionListItem, {\n key: collection.id,\n collection,\n error: $data.collectionsError[collection.id],\n onRenameCollection: $options.renameCollectionFromItem,\n onRemoveResource: $setup.removeResourceFromCollection\n }, null, 8, [\"collection\", \"error\", \"onRenameCollection\", \"onRemoveResource\"]);\n }), 128))\n ])) : createCommentVNode(\"\", true);\n}\nconst NcCollectionList = /* @__PURE__ */ _export_sfc(_sfc_main, [[\"render\", _sfc_render], [\"__scopeId\", \"data-v-0e169eff\"]]);\nexport {\n NcCollectionList as N\n};\n//# sourceMappingURL=NcCollectionList-B9qCtjJw.mjs.map\n","import '../assets/NcDashboardWidget-nZuIL1UN.css';\nimport { openBlock, createElementBlock, mergeProps, createElementVNode, toDisplayString, createCommentVNode, resolveComponent, createBlock, withCtx, renderSlot, createVNode, Fragment, renderList, toHandlers } from \"vue\";\nimport { _ as _export_sfc } from \"./_plugin-vue_export-helper-1tPrXgE0.mjs\";\nimport { r as register, z as t35, a as t } from \"./_l10n-wdIzZwir.mjs\";\nimport { N as NcAvatar } from \"./NcAvatar-1KxMUN7V.mjs\";\nimport { N as NcDashboardWidgetItem } from \"./NcDashboardWidgetItem-DwDndrm_.mjs\";\nimport { N as NcEmptyContent } from \"./NcEmptyContent-CGAPqk4S.mjs\";\nconst _sfc_main$1 = {\n name: \"CheckIcon\",\n emits: [\"click\"],\n props: {\n title: {\n type: String\n },\n fillColor: {\n type: String,\n default: \"currentColor\"\n },\n size: {\n type: Number,\n default: 24\n }\n }\n};\nconst _hoisted_1$1 = [\"aria-hidden\", \"aria-label\"];\nconst _hoisted_2$1 = [\"fill\", \"width\", \"height\"];\nconst _hoisted_3$1 = { d: \"M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z\" };\nconst _hoisted_4 = { key: 0 };\nfunction _sfc_render$1(_ctx, _cache, $props, $setup, $data, $options) {\n return openBlock(), createElementBlock(\"span\", mergeProps(_ctx.$attrs, {\n \"aria-hidden\": $props.title ? null : \"true\",\n \"aria-label\": $props.title,\n class: \"material-design-icon check-icon\",\n role: \"img\",\n onClick: _cache[0] || (_cache[0] = ($event) => _ctx.$emit(\"click\", $event))\n }), [\n (openBlock(), createElementBlock(\"svg\", {\n fill: $props.fillColor,\n class: \"material-design-icon__svg\",\n width: $props.size,\n height: $props.size,\n viewBox: \"0 0 24 24\"\n }, [\n createElementVNode(\"path\", _hoisted_3$1, [\n $props.title ? (openBlock(), createElementBlock(\"title\", _hoisted_4, toDisplayString($props.title), 1)) : createCommentVNode(\"\", true)\n ])\n ], 8, _hoisted_2$1))\n ], 16, _hoisted_1$1);\n}\nconst Check = /* @__PURE__ */ _export_sfc(_sfc_main$1, [[\"render\", _sfc_render$1]]);\nregister(t35);\nconst _sfc_main = {\n name: \"NcDashboardWidget\",\n components: {\n NcAvatar,\n NcDashboardWidgetItem,\n NcEmptyContent,\n Check\n },\n props: {\n /**\n * An array containing the items to show (specific structure must be respected,\n * except if you override item rendering in the default slot).\n */\n items: {\n type: Array,\n default: () => {\n return [];\n }\n },\n /**\n * If this is set, a \"show more\" text is displayed on the widget's bottom.\n * It's a link pointing to this URL.\n */\n showMoreUrl: {\n type: String,\n default: \"\"\n },\n /**\n * The text of show more button.\n *\n * Expected to be in the form \"More {itemName} …\"\n */\n showMoreLabel: {\n type: String,\n default: t(\"More items …\")\n },\n /**\n * A boolean to put the widget in a loading state.\n */\n loading: {\n type: Boolean,\n default: false\n },\n /**\n * An object containing context menu entries that will be displayed for each item.\n */\n itemMenu: {\n type: Object,\n default: () => {\n return {};\n }\n },\n /**\n * Whether both the items and the empty content message are shown.\n * Usefull for e.g. showing \"No mentions\" and a list of elements.\n */\n showItemsAndEmptyContent: {\n type: Boolean,\n default: false\n },\n /**\n * The text to show in the empty content area.\n */\n emptyContentMessage: {\n type: String,\n default: \"\"\n },\n /**\n * The text to show in the half empty content area.\n */\n halfEmptyContentMessage: {\n type: String,\n default: \"\"\n }\n },\n computed: {\n // forward menu events to my parent\n handlers() {\n const h = {};\n for (const evName in this.itemMenu) {\n h[evName] = (it) => {\n this.$emit(evName, it);\n };\n }\n return h;\n },\n displayedItems() {\n const nbItems = this.showMoreUrl && this.items.length >= this.maxItemNumber ? this.maxItemNumber - 1 : this.maxItemNumber;\n return this.items.slice(0, nbItems);\n },\n showHalfEmptyContentArea() {\n return this.showItemsAndEmptyContent && this.halfEmptyContentString && this.items.length !== 0;\n },\n halfEmptyContentString() {\n return this.halfEmptyContentMessage || this.emptyContentMessage;\n },\n maxItemNumber() {\n return this.showItemsAndEmptyContent ? 5 : 7;\n },\n showMore() {\n return this.showMoreUrl && this.items.length >= this.maxItemNumber;\n }\n }\n};\nconst _hoisted_1 = { class: \"dashboard-widget\" };\nconst _hoisted_2 = { key: 1 };\nconst _hoisted_3 = [\"href\"];\nfunction _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {\n const _component_Check = resolveComponent(\"Check\");\n const _component_NcEmptyContent = resolveComponent(\"NcEmptyContent\");\n const _component_NcDashboardWidgetItem = resolveComponent(\"NcDashboardWidgetItem\");\n const _component_NcAvatar = resolveComponent(\"NcAvatar\");\n return openBlock(), createElementBlock(\"div\", _hoisted_1, [\n $options.showHalfEmptyContentArea ? (openBlock(), createBlock(_component_NcEmptyContent, {\n key: 0,\n description: $options.halfEmptyContentString,\n class: \"half-screen\"\n }, {\n icon: withCtx(() => [\n renderSlot(_ctx.$slots, \"halfEmptyContentIcon\", {}, () => [\n createVNode(_component_Check)\n ], true)\n ]),\n _: 3\n }, 8, [\"description\"])) : createCommentVNode(\"\", true),\n createElementVNode(\"ul\", null, [\n (openBlock(true), createElementBlock(Fragment, null, renderList($options.displayedItems, (item) => {\n return openBlock(), createElementBlock(\"li\", {\n key: item.id\n }, [\n renderSlot(_ctx.$slots, \"default\", { item }, () => [\n createVNode(_component_NcDashboardWidgetItem, mergeProps({ ref_for: true }, item, { itemMenu: $props.itemMenu }, toHandlers($options.handlers)), null, 16, [\"itemMenu\"])\n ], true)\n ]);\n }), 128))\n ]),\n $props.loading ? (openBlock(), createElementBlock(\"div\", _hoisted_2, [\n (openBlock(), createElementBlock(Fragment, null, renderList(7, (i) => {\n return createElementVNode(\"div\", {\n key: i,\n class: \"item-list__entry\"\n }, [\n createVNode(_component_NcAvatar, {\n class: \"item-avatar\",\n size: 44\n }),\n _cache[0] || (_cache[0] = createElementVNode(\"div\", { class: \"item__details\" }, [\n createElementVNode(\"h3\", null, \" \"),\n createElementVNode(\"p\", { class: \"message\" }, \"   \")\n ], -1))\n ]);\n }), 64))\n ])) : $props.items.length === 0 ? renderSlot(_ctx.$slots, \"empty-content\", { key: 2 }, () => [\n $props.emptyContentMessage ? (openBlock(), createBlock(_component_NcEmptyContent, {\n key: 0,\n description: $props.emptyContentMessage\n }, {\n icon: withCtx(() => [\n renderSlot(_ctx.$slots, \"emptyContentIcon\", {}, void 0, true)\n ]),\n _: 3\n }, 8, [\"description\"])) : createCommentVNode(\"\", true)\n ], true) : $options.showMore ? (openBlock(), createElementBlock(\"a\", {\n key: 3,\n href: $props.showMoreUrl,\n target: \"_blank\",\n class: \"more\",\n tabindex: \"0\"\n }, toDisplayString($props.showMoreLabel), 9, _hoisted_3)) : createCommentVNode(\"\", true)\n ]);\n}\nconst NcDashboardWidget = /* @__PURE__ */ _export_sfc(_sfc_main, [[\"render\", _sfc_render], [\"__scopeId\", \"data-v-8dabc003\"]]);\nexport {\n NcDashboardWidget as N\n};\n//# sourceMappingURL=NcDashboardWidget-zmbDEGL-.mjs.map\n","import '../assets/NcFilePicker-BdjtiV3h.css';\nimport { openBlock, createElementBlock, mergeProps, createElementVNode, toDisplayString, createCommentVNode, defineComponent, useTemplateRef, computed, normalizeClass, createVNode, withCtx, createBlock, createTextVNode, unref, Fragment, renderList, renderSlot, nextTick } from \"vue\";\nimport { _ as _export_sfc } from \"./_plugin-vue_export-helper-1tPrXgE0.mjs\";\nimport { N as NcActionButton } from \"./NcActionButton-BO5T5ePT.mjs\";\nimport { N as NcActionCaption } from \"./NcActionCaption-f7L9gBlT.mjs\";\nimport { N as NcActions } from \"./NcActions-C-wDqSrv.mjs\";\nimport { N as NcIconSvgWrapper } from \"./NcIconSvgWrapper-g8ubWhoz.mjs\";\nimport { N as NcLoadingIcon } from \"./NcLoadingIcon-BOVpFVQz.mjs\";\nimport { getGettextBuilder } from \"@nextcloud/l10n/gettext\";\nconst _sfc_main$3 = {\n name: \"FolderUploadIcon\",\n emits: [\"click\"],\n props: {\n title: {\n type: String\n },\n fillColor: {\n type: String,\n default: \"currentColor\"\n },\n size: {\n type: Number,\n default: 24\n }\n }\n};\nconst _hoisted_1$3 = [\"aria-hidden\", \"aria-label\"];\nconst _hoisted_2$2 = [\"fill\", \"width\", \"height\"];\nconst _hoisted_3$2 = { d: \"M20,6A2,2 0 0,1 22,8V18A2,2 0 0,1 20,20H4A2,2 0 0,1 2,18V6A2,2 0 0,1 4,4H10L12,6H20M10.75,13H14V17H16V13H19.25L15,8.75\" };\nconst _hoisted_4$2 = { key: 0 };\nfunction _sfc_render$2(_ctx, _cache, $props, $setup, $data, $options) {\n return openBlock(), createElementBlock(\"span\", mergeProps(_ctx.$attrs, {\n \"aria-hidden\": $props.title ? null : \"true\",\n \"aria-label\": $props.title,\n class: \"material-design-icon folder-upload-icon\",\n role: \"img\",\n onClick: _cache[0] || (_cache[0] = ($event) => _ctx.$emit(\"click\", $event))\n }), [\n (openBlock(), createElementBlock(\"svg\", {\n fill: $props.fillColor,\n class: \"material-design-icon__svg\",\n width: $props.size,\n height: $props.size,\n viewBox: \"0 0 24 24\"\n }, [\n createElementVNode(\"path\", _hoisted_3$2, [\n $props.title ? (openBlock(), createElementBlock(\"title\", _hoisted_4$2, toDisplayString($props.title), 1)) : createCommentVNode(\"\", true)\n ])\n ], 8, _hoisted_2$2))\n ], 16, _hoisted_1$3);\n}\nconst IconFolderUpload = /* @__PURE__ */ _export_sfc(_sfc_main$3, [[\"render\", _sfc_render$2]]);\nconst _sfc_main$2 = {\n name: \"PlusIcon\",\n emits: [\"click\"],\n props: {\n title: {\n type: String\n },\n fillColor: {\n type: String,\n default: \"currentColor\"\n },\n size: {\n type: Number,\n default: 24\n }\n }\n};\nconst _hoisted_1$2 = [\"aria-hidden\", \"aria-label\"];\nconst _hoisted_2$1 = [\"fill\", \"width\", \"height\"];\nconst _hoisted_3$1 = { d: \"M19,13H13V19H11V13H5V11H11V5H13V11H19V13Z\" };\nconst _hoisted_4$1 = { key: 0 };\nfunction _sfc_render$1(_ctx, _cache, $props, $setup, $data, $options) {\n return openBlock(), createElementBlock(\"span\", mergeProps(_ctx.$attrs, {\n \"aria-hidden\": $props.title ? null : \"true\",\n \"aria-label\": $props.title,\n class: \"material-design-icon plus-icon\",\n role: \"img\",\n onClick: _cache[0] || (_cache[0] = ($event) => _ctx.$emit(\"click\", $event))\n }), [\n (openBlock(), createElementBlock(\"svg\", {\n fill: $props.fillColor,\n class: \"material-design-icon__svg\",\n width: $props.size,\n height: $props.size,\n viewBox: \"0 0 24 24\"\n }, [\n createElementVNode(\"path\", _hoisted_3$1, [\n $props.title ? (openBlock(), createElementBlock(\"title\", _hoisted_4$1, toDisplayString($props.title), 1)) : createCommentVNode(\"\", true)\n ])\n ], 8, _hoisted_2$1))\n ], 16, _hoisted_1$2);\n}\nconst IconPlus = /* @__PURE__ */ _export_sfc(_sfc_main$2, [[\"render\", _sfc_render$1]]);\nconst _sfc_main$1 = {\n name: \"UploadIcon\",\n emits: [\"click\"],\n props: {\n title: {\n type: String\n },\n fillColor: {\n type: String,\n default: \"currentColor\"\n },\n size: {\n type: Number,\n default: 24\n }\n }\n};\nconst _hoisted_1$1 = [\"aria-hidden\", \"aria-label\"];\nconst _hoisted_2 = [\"fill\", \"width\", \"height\"];\nconst _hoisted_3 = { d: \"M9,16V10H5L12,3L19,10H15V16H9M5,20V18H19V20H5Z\" };\nconst _hoisted_4 = { key: 0 };\nfunction _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {\n return openBlock(), createElementBlock(\"span\", mergeProps(_ctx.$attrs, {\n \"aria-hidden\": $props.title ? null : \"true\",\n \"aria-label\": $props.title,\n class: \"material-design-icon upload-icon\",\n role: \"img\",\n onClick: _cache[0] || (_cache[0] = ($event) => _ctx.$emit(\"click\", $event))\n }), [\n (openBlock(), createElementBlock(\"svg\", {\n fill: $props.fillColor,\n class: \"material-design-icon__svg\",\n width: $props.size,\n height: $props.size,\n viewBox: \"0 0 24 24\"\n }, [\n createElementVNode(\"path\", _hoisted_3, [\n $props.title ? (openBlock(), createElementBlock(\"title\", _hoisted_4, toDisplayString($props.title), 1)) : createCommentVNode(\"\", true)\n ])\n ], 8, _hoisted_2))\n ], 16, _hoisted_1$1);\n}\nconst IconUpload = /* @__PURE__ */ _export_sfc(_sfc_main$1, [[\"render\", _sfc_render]]);\n/*!\n * SPDX-FileCopyrightText: 2020 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\nconst gtBuilder = getGettextBuilder().detectLanguage();\nconst gt = gtBuilder.build();\ngt.ngettext.bind(gt);\nconst t = gt.gettext.bind(gt);\nconst _hoisted_1 = [\"accept\", \"multiple\"];\nconst _sfc_main = /* @__PURE__ */ defineComponent({\n __name: \"NcFilePicker\",\n props: {\n accept: { default: void 0 },\n actionCaption: { default: \"\" },\n actions: { default: () => [] },\n directory: { type: Boolean },\n directoryOnly: { type: Boolean },\n disabled: { type: Boolean },\n iconOnly: { type: Boolean },\n label: { default: void 0 },\n loading: { type: Boolean },\n multiple: { type: Boolean },\n variant: { default: \"primary\" }\n },\n emits: [\"pick\"],\n setup(__props, { expose: __expose, emit: __emit }) {\n const props = __props;\n const emit = __emit;\n __expose({\n reset\n });\n const formElement = useTemplateRef(\"form\");\n const inputElement = useTemplateRef(\"input\");\n const currentLabel = computed(() => {\n if (props.loading) {\n return t(\"Uploading …\");\n } else if (props.label) {\n return props.label;\n } else if (props.directoryOnly) {\n return t(\"Pick folder\");\n }\n return props.multiple ? t(\"Pick files\") : t(\"Pick file\");\n });\n const canUploadFolders = computed(() => {\n return (props.directory || props.directoryOnly) && \"webkitdirectory\" in HTMLInputElement.prototype;\n });\n function triggerPickFiles(uploadFolders) {\n reset();\n if (canUploadFolders.value) {\n inputElement.value.webkitdirectory = uploadFolders;\n }\n nextTick(() => inputElement.value.click());\n }\n function onPick() {\n const files = inputElement.value?.files ? Array.from(inputElement.value.files) : [];\n emit(\"pick\", files);\n }\n function reset() {\n formElement.value.reset();\n }\n return (_ctx, _cache) => {\n return openBlock(), createElementBlock(\"form\", {\n ref: \"form\",\n class: normalizeClass(_ctx.$style.filePicker)\n }, [\n createVNode(NcActions, {\n \"aria-label\": currentLabel.value,\n disabled: __props.disabled || __props.loading,\n menuName: __props.iconOnly ? void 0 : currentLabel.value,\n forceName: !__props.iconOnly,\n variant: __props.variant\n }, {\n icon: withCtx(() => [\n !__props.loading ? renderSlot(_ctx.$slots, \"icon\", { key: 0 }, () => [\n createVNode(IconPlus, { size: 20 })\n ]) : (openBlock(), createBlock(NcLoadingIcon, { key: 1 }))\n ]),\n default: withCtx(() => [\n __props.actionCaption ? (openBlock(), createBlock(NcActionCaption, {\n key: 0,\n name: __props.actionCaption\n }, null, 8, [\"name\"])) : createCommentVNode(\"\", true),\n !__props.directoryOnly ? (openBlock(), createBlock(NcActionButton, {\n key: 1,\n closeAfterClick: \"\",\n onClick: _cache[0] || (_cache[0] = ($event) => triggerPickFiles(false))\n }, {\n icon: withCtx(() => [\n createVNode(IconUpload, { size: 20 })\n ]),\n default: withCtx(() => [\n createTextVNode(\" \" + toDisplayString(canUploadFolders.value || _ctx.$slots.actions ? __props.multiple ? unref(t)(\"Upload files\") : unref(t)(\"Upload file\") : currentLabel.value), 1)\n ]),\n _: 1\n })) : createCommentVNode(\"\", true),\n canUploadFolders.value ? (openBlock(), createBlock(NcActionButton, {\n key: 2,\n closeAfterClick: \"\",\n onClick: _cache[1] || (_cache[1] = ($event) => triggerPickFiles(true))\n }, {\n icon: withCtx(() => [\n createVNode(IconFolderUpload, {\n style: { \"color\": \"var(--color-primary-element)\" },\n size: 20\n })\n ]),\n default: withCtx(() => [\n createTextVNode(\" \" + toDisplayString(!__props.directoryOnly || _ctx.$slots.actions ? unref(t)(\"Upload folder\") : currentLabel.value), 1)\n ]),\n _: 1\n })) : createCommentVNode(\"\", true),\n (openBlock(true), createElementBlock(Fragment, null, renderList(__props.actions, (group) => {\n return openBlock(), createElementBlock(Fragment, null, [\n group.caption ? (openBlock(), createBlock(NcActionCaption, {\n key: group.caption,\n name: group.caption\n }, null, 8, [\"name\"])) : createCommentVNode(\"\", true),\n (openBlock(true), createElementBlock(Fragment, null, renderList(group.actions ?? [group], (action) => {\n return openBlock(), createBlock(NcActionButton, {\n key: action.label,\n closeAfterClick: \"\",\n onClick: action.onClick\n }, {\n icon: withCtx(() => [\n createVNode(NcIconSvgWrapper, {\n svg: action.iconSvg\n }, null, 8, [\"svg\"])\n ]),\n default: withCtx(() => [\n createTextVNode(\" \" + toDisplayString(action.label), 1)\n ]),\n _: 2\n }, 1032, [\"onClick\"]);\n }), 128))\n ], 64);\n }), 256))\n ]),\n _: 3\n }, 8, [\"aria-label\", \"disabled\", \"menuName\", \"forceName\", \"variant\"]),\n createElementVNode(\"input\", {\n ref: \"input\",\n accept: __props.accept?.join(\", \"),\n \"aria-hidden\": \"true\",\n class: \"hidden-visually\",\n multiple: __props.multiple,\n type: \"file\",\n onChange: onPick\n }, null, 40, _hoisted_1),\n renderSlot(_ctx.$slots, \"default\")\n ], 2);\n };\n }\n});\nconst filePicker = \"_filePicker_Unq7q\";\nconst style0 = {\n filePicker\n};\nconst cssModules = {\n \"$style\": style0\n};\nconst NcFilePicker = /* @__PURE__ */ _export_sfc(_sfc_main, [[\"__cssModules\", cssModules]]);\nexport {\n NcFilePicker as N\n};\n//# sourceMappingURL=NcFilePicker-bD2toutn.mjs.map\n","import '../assets/NcKbd-DcC56WbC.css';\nimport { defineComponent, computed, openBlock, createElementBlock, normalizeClass, renderSlot, createTextVNode, toDisplayString } from \"vue\";\nimport { r as register, o as t7, a as t } from \"./_l10n-wdIzZwir.mjs\";\nimport { i as isMac } from \"./platform-CC2ecGvV.mjs\";\nimport { _ as _export_sfc } from \"./_plugin-vue_export-helper-1tPrXgE0.mjs\";\nregister(t7);\nconst _sfc_main = /* @__PURE__ */ defineComponent({\n __name: \"NcKbd\",\n props: {\n symbol: { default: () => void 0 },\n mac: { type: Boolean, default: () => isMac }\n },\n setup(__props) {\n const labels = computed(() => ({\n ArrowUp: \"↑\",\n ArrowDown: \"↓\",\n ArrowLeft: \"←\",\n ArrowRight: \"→\",\n Control: !__props.mac ? t(\"Ctrl\") : \"⌘\",\n Alt: !__props.mac ? t(\"Alt\") : \"⌥\",\n Shift: !__props.mac ? t(\"Shift\") : \"⇧\",\n Enter: !__props.mac ? t(\"Enter\") : \"⏎\",\n Tab: !__props.mac ? t(\"Tab\") : \"⇥\",\n Delete: !__props.mac ? t(\"Delete\") : \"⌫\",\n Escape: !__props.mac ? t(\"Escape\") : \"⎋\",\n Space: t(\"Space\")\n // TRANSLATORS: Space key on keyboard\n }));\n const label = computed(() => __props.symbol && labels.value[__props.symbol] || __props.symbol);\n return (_ctx, _cache) => {\n return openBlock(), createElementBlock(\"kbd\", {\n class: normalizeClass(_ctx.$style.kbd)\n }, [\n renderSlot(_ctx.$slots, \"default\", {}, () => [\n createTextVNode(toDisplayString(label.value), 1)\n ])\n ], 2);\n };\n }\n});\nconst kbd = \"_kbd_ixPyw\";\nconst style0 = {\n \"material-design-icon\": \"_material-design-icon_ZhQq1\",\n kbd\n};\nconst cssModules = {\n \"$style\": style0\n};\nconst NcKbd = /* @__PURE__ */ _export_sfc(_sfc_main, [[\"__cssModules\", cssModules]]);\nexport {\n NcKbd as N\n};\n//# sourceMappingURL=NcKbd-Bh_Tk6Ar.mjs.map\n","import '../assets/NcHotkeyList-BigfRqyr.css';\nimport { defineComponent, openBlock, createElementBlock, normalizeClass, createElementVNode, toDisplayString, unref, renderSlot } from \"vue\";\nimport { r as register, p as t31, a as t } from \"./_l10n-wdIzZwir.mjs\";\nimport { c as createElementId } from \"./createElementId-DhjFt1I9.mjs\";\nimport { _ as _export_sfc } from \"./_plugin-vue_export-helper-1tPrXgE0.mjs\";\nregister(t31);\nconst _sfc_main = /* @__PURE__ */ defineComponent({\n __name: \"NcHotkeyList\",\n props: {\n label: { default: () => void 0 }\n },\n setup(__props) {\n const labelId = `NcHotkeyList_${createElementId()}`;\n return (_ctx, _cache) => {\n return openBlock(), createElementBlock(\"div\", {\n class: normalizeClass(_ctx.$style.hotkeyList)\n }, [\n createElementVNode(\"div\", {\n id: labelId,\n class: normalizeClass([_ctx.$style.hotkeyList__heading, { \"hidden-visually\": !__props.label }])\n }, toDisplayString(__props.label || unref(t)(\"Keyboard shortcuts\")), 3),\n createElementVNode(\"ul\", { \"aria-labelledby\": labelId }, [\n renderSlot(_ctx.$slots, \"default\")\n ])\n ], 2);\n };\n }\n});\nconst hotkeyList = \"_hotkeyList_zH7bt\";\nconst hotkeyList__heading = \"_hotkeyList__heading_SuOfz\";\nconst style0 = {\n hotkeyList,\n hotkeyList__heading\n};\nconst cssModules = {\n \"$style\": style0\n};\nconst NcHotkeyList = /* @__PURE__ */ _export_sfc(_sfc_main, [[\"__cssModules\", cssModules]]);\nexport {\n NcHotkeyList as N\n};\n//# sourceMappingURL=NcHotkeyList-B4WjTLAp.mjs.map\n","import '../assets/NcListItemIcon-DJRcmlo1.css';\nimport \"escape-html\";\nimport \"striptags\";\nimport { resolveComponent, openBlock, createElementBlock, normalizeStyle, normalizeClass, createVNode, mergeProps, createElementVNode, createBlock, toDisplayString, createCommentVNode, renderSlot } from \"vue\";\nimport \"../composables/useIsDarkTheme/index.mjs\";\nimport \"@nextcloud/router\";\nimport \"../functions/isDarkTheme/index.mjs\";\nimport \"./NcMentionBubble.vue_vue_type_style_index_0_scoped_3c4a673d_lang-DyqakLm5.mjs\";\nimport { _ as _export_sfc } from \"./_plugin-vue_export-helper-1tPrXgE0.mjs\";\nimport { u as userStatus, N as NcAvatar } from \"./NcAvatar-1KxMUN7V.mjs\";\nimport { _ as _sfc_main$1 } from \"./NcHighlight.vue_vue_type_script_lang-DnWQDM_2.mjs\";\nimport { N as NcIconSvgWrapper } from \"./NcIconSvgWrapper-g8ubWhoz.mjs\";\nconst margin = 8;\nconst defaultSize = 32;\nconst _sfc_main = {\n name: \"NcListItemIcon\",\n components: {\n NcAvatar,\n NcHighlight: _sfc_main$1,\n NcIconSvgWrapper\n },\n mixins: [\n userStatus\n ],\n props: {\n /**\n * Default first line text\n */\n name: {\n type: String,\n required: true\n },\n /**\n * Secondary optional line\n * Only visible on size of 32 and above\n */\n subname: {\n type: String,\n default: \"\"\n },\n /**\n * Icon class to be displayed at the end of the component\n */\n icon: {\n type: String,\n default: \"\"\n },\n /**\n * SVG icon to be displayed at the end of the component\n */\n iconSvg: {\n type: String,\n default: \"\"\n },\n /**\n * Descriptive name for the icon\n */\n iconName: {\n type: String,\n default: \"\"\n },\n /**\n * Search within the highlight of name/subname\n */\n search: {\n type: String,\n default: \"\"\n },\n /**\n * Set a size in px that will define the avatar height/width\n * and therefore, the height of the component\n */\n avatarSize: {\n type: Number,\n default: defaultSize\n },\n /**\n * Disable the margins of this component.\n * Useful for integration in `NcSelect` for example\n */\n noMargin: {\n type: Boolean,\n default: false\n },\n /**\n * See the [Avatar](#Avatar) displayName prop\n * Fallback to name\n */\n displayName: {\n type: String,\n default: null\n },\n /**\n * See the [Avatar](#Avatar) isNoUser prop\n * Enable/disable the UserStatus fetching\n */\n isNoUser: {\n type: Boolean,\n default: false\n },\n /**\n * Unique list item ID\n */\n id: {\n type: String,\n default: null\n }\n },\n setup() {\n return {\n margin,\n defaultSize\n };\n },\n computed: {\n hasIcon() {\n return this.icon !== \"\";\n },\n hasIconSvg() {\n return this.iconSvg !== \"\";\n },\n isValidSubname() {\n return this.subname?.trim?.() !== \"\";\n },\n isSizeBigEnough() {\n return this.avatarSize >= 26;\n },\n cssVars() {\n const margin2 = this.noMargin ? 0 : this.margin;\n return {\n \"--height\": this.avatarSize + 2 * margin2 + \"px\",\n \"--margin\": this.margin + \"px\"\n };\n },\n /**\n * Separates the search property into two parts, the first one is the search part on the name, the second on the subname.\n *\n * @return {[string, string]}\n */\n searchParts() {\n const EMAIL_NOTATION = /^([^<]*)<([^>]+)>?$/;\n const match = this.search.match(EMAIL_NOTATION);\n if (this.isNoUser || !match) {\n return [this.search, this.search];\n }\n return [match[1].trim(), match[2]];\n }\n },\n beforeMount() {\n if (!this.isNoUser && !this.subname) {\n this.fetchUserStatus(this.user);\n }\n }\n};\nconst _hoisted_1 = [\"id\"];\nconst _hoisted_2 = { class: \"option__details\" };\nconst _hoisted_3 = { key: 1 };\nconst _hoisted_4 = [\"aria-label\"];\nfunction _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {\n const _component_NcAvatar = resolveComponent(\"NcAvatar\");\n const _component_NcHighlight = resolveComponent(\"NcHighlight\");\n const _component_NcIconSvgWrapper = resolveComponent(\"NcIconSvgWrapper\");\n return openBlock(), createElementBlock(\"span\", {\n id: $props.id,\n class: normalizeClass([\"option\", { \"option--compact\": $props.avatarSize < $setup.defaultSize }]),\n style: normalizeStyle($options.cssVars)\n }, [\n createVNode(_component_NcAvatar, mergeProps(_ctx.$attrs, {\n disableMenu: \"\",\n disableTooltip: \"\",\n displayName: $props.displayName || $props.name,\n isNoUser: $props.isNoUser,\n size: $props.avatarSize,\n class: \"option__avatar\"\n }), null, 16, [\"displayName\", \"isNoUser\", \"size\"]),\n createElementVNode(\"div\", _hoisted_2, [\n createVNode(_component_NcHighlight, {\n class: \"option__lineone\",\n text: $props.name,\n search: $options.searchParts[0]\n }, null, 8, [\"text\", \"search\"]),\n $options.isValidSubname && $options.isSizeBigEnough ? (openBlock(), createBlock(_component_NcHighlight, {\n key: 0,\n class: \"option__linetwo\",\n text: $props.subname,\n search: $options.searchParts[1]\n }, null, 8, [\"text\", \"search\"])) : _ctx.hasStatus ? (openBlock(), createElementBlock(\"span\", _hoisted_3, [\n createElementVNode(\"span\", null, toDisplayString(_ctx.userStatus.icon), 1),\n createElementVNode(\"span\", null, toDisplayString(_ctx.userStatus.message), 1)\n ])) : createCommentVNode(\"\", true)\n ]),\n renderSlot(_ctx.$slots, \"default\", {}, () => [\n $options.hasIconSvg ? (openBlock(), createBlock(_component_NcIconSvgWrapper, {\n key: 0,\n class: \"option__icon\",\n svg: $props.iconSvg,\n name: $props.iconName\n }, null, 8, [\"svg\", \"name\"])) : $options.hasIcon ? (openBlock(), createElementBlock(\"span\", {\n key: 1,\n class: normalizeClass([\"icon option__icon\", $props.icon]),\n \"aria-label\": $props.iconName\n }, null, 10, _hoisted_4)) : createCommentVNode(\"\", true)\n ], true)\n ], 14, _hoisted_1);\n}\nconst NcListItemIcon = /* @__PURE__ */ _export_sfc(_sfc_main, [[\"render\", _sfc_render], [\"__scopeId\", \"data-v-0ee94269\"]]);\nexport {\n NcListItemIcon as N\n};\n//# sourceMappingURL=NcListItemIcon-Dl_tfkk9.mjs.map\n","import '../assets/NcProgressBar-B6wveIA1.css';\nimport { defineComponent, useCssVars, computed, openBlock, createElementBlock, normalizeClass, createElementVNode, toDisplayString, createCommentVNode } from \"vue\";\nimport { _ as _export_sfc } from \"./_plugin-vue_export-helper-1tPrXgE0.mjs\";\nconst _hoisted_1 = [\"aria-valuenow\"];\nconst _hoisted_2 = [\"height\", \"width\"];\nconst _hoisted_3 = [\"stroke-dasharray\", \"stroke-dashoffset\", \"stroke-width\", \"r\", \"cx\", \"cy\"];\nconst _hoisted_4 = [\"stroke-dasharray\", \"stroke-dashoffset\", \"stroke-width\", \"r\", \"cx\", \"cy\"];\nconst _hoisted_5 = {\n key: 1,\n class: \"progress-bar-container\"\n};\nconst _hoisted_6 = [\"value\"];\nconst _hoisted_7 = {\n key: 0,\n class: \"progress-bar__value\"\n};\nconst gridBaseline = Number.parseInt(window.getComputedStyle(document.body).getPropertyValue(\"--default-grid-baseline\"));\nconst clickableArea = Number.parseInt(window.getComputedStyle(document.body).getPropertyValue(\"--default-clickable-area\"));\nconst clickableAreaSmall = Number.parseInt(window.getComputedStyle(document.body).getPropertyValue(\"--clickable-area-small\"));\nconst _sfc_main = /* @__PURE__ */ defineComponent({\n __name: \"NcProgressBar\",\n props: {\n value: { default: 0 },\n size: { default: \"small\" },\n error: { type: Boolean },\n type: { default: \"linear\" },\n color: { default: \"var(--color-primary-element)\" },\n showValue: { type: Boolean, default: false }\n },\n setup(__props) {\n useCssVars((_ctx) => ({\n \"v3a86fec2\": _ctx.color,\n \"v57442460\": heightPx.value\n }));\n const props = __props;\n const normalizedProgress = computed(() => Math.max(0, Math.min(100, props.value)) / 100);\n const height = computed(() => {\n if (typeof props.size === \"number\") {\n return Math.round(props.size);\n }\n if (props.type === \"circular\") {\n if (props.size === \"medium\") {\n return clickableArea;\n } else {\n return clickableAreaSmall;\n }\n }\n if (props.size === \"medium\") {\n return 1.5 * gridBaseline;\n }\n return gridBaseline;\n });\n const heightPx = computed(() => `${height.value}px`);\n const strokeWidth = computed(() => Math.max(gridBaseline, height.value / clickableArea * gridBaseline));\n const circleCenterPosition = computed(() => height.value / 2);\n const circleRadius = computed(() => height.value / 2 - strokeWidth.value);\n const circumference = computed(() => circleRadius.value * 2 * Math.PI);\n return (_ctx, _cache) => {\n return __props.type === \"circular\" ? (openBlock(), createElementBlock(\"span\", {\n key: 0,\n role: \"progressbar\",\n \"aria-valuenow\": __props.value,\n class: normalizeClass([{ \"progress-bar--error\": __props.error }, \"progress-bar progress-bar--circular\"])\n }, [\n (openBlock(), createElementBlock(\"svg\", {\n height: height.value,\n width: height.value\n }, [\n createElementVNode(\"circle\", {\n stroke: \"currentColor\",\n fill: \"transparent\",\n \"stroke-dasharray\": `${normalizedProgress.value * circumference.value} ${(1 - normalizedProgress.value) * circumference.value}`,\n \"stroke-dashoffset\": 0.25 * circumference.value,\n \"stroke-width\": strokeWidth.value,\n r: circleRadius.value,\n cx: circleCenterPosition.value,\n cy: circleCenterPosition.value\n }, null, 8, _hoisted_3),\n createElementVNode(\"circle\", {\n stroke: \"var(--color-background-darker)\",\n fill: \"transparent\",\n \"stroke-dasharray\": `${(1 - normalizedProgress.value) * circumference.value} ${normalizedProgress.value * circumference.value}`,\n \"stroke-dashoffset\": (0.25 - normalizedProgress.value) * circumference.value,\n \"stroke-width\": strokeWidth.value,\n r: circleRadius.value,\n cx: circleCenterPosition.value,\n cy: circleCenterPosition.value\n }, null, 8, _hoisted_4)\n ], 8, _hoisted_2))\n ], 10, _hoisted_1)) : (openBlock(), createElementBlock(\"div\", _hoisted_5, [\n createElementVNode(\"progress\", {\n class: normalizeClass([\"progress-bar progress-bar--linear vue\", { \"progress-bar--error\": __props.error }]),\n value: __props.value,\n max: \"100\"\n }, null, 10, _hoisted_6),\n __props.showValue ? (openBlock(), createElementBlock(\"span\", _hoisted_7, toDisplayString(__props.value) + \"%\", 1)) : createCommentVNode(\"\", true)\n ]));\n };\n }\n});\nconst NcProgressBar = /* @__PURE__ */ _export_sfc(_sfc_main, [[\"__scopeId\", \"data-v-353fa414\"]]);\nexport {\n NcProgressBar as N\n};\n//# sourceMappingURL=NcProgressBar-C-ane-Ni.mjs.map\n","import '../assets/NcRelatedResourcesPanel-BZKjkugM.css';\nimport axios from \"@nextcloud/axios\";\nimport { generateOcsUrl } from \"@nextcloud/router\";\nimport { r as register, S as t38, a as t, T as t42, U as t9 } from \"./_l10n-wdIzZwir.mjs\";\nimport { N as NcButton } from \"./NcButton-jvoYS2my.mjs\";\nimport { g as getRoute } from \"./autolink-DrIurosL.mjs\";\nimport { resolveComponent, openBlock, createElementBlock, createVNode, withCtx, createTextVNode, toDisplayString, createElementVNode, mergeProps, createCommentVNode, Fragment, renderList, createBlock } from \"vue\";\nimport { _ as _export_sfc } from \"./_plugin-vue_export-helper-1tPrXgE0.mjs\";\nimport { getCapabilities } from \"@nextcloud/capabilities\";\nimport { C as ChevronDown } from \"./ChevronDown-C6gc637b.mjs\";\nimport { C as ChevronUp } from \"./ChevronUp-ChH8oB7p.mjs\";\nimport { N as NcIconSvgWrapper } from \"./NcIconSvgWrapper-g8ubWhoz.mjs\";\nimport { l as logger } from \"./logger-D3RVzcfQ.mjs\";\nregister(t38);\nconst _sfc_main$4 = {\n name: \"NcResource\",\n components: {\n NcButton\n },\n props: {\n /**\n * The icon URL to display for the resource\n */\n icon: {\n type: String,\n required: true\n },\n /**\n * The name of the resource to display\n */\n name: {\n type: String,\n required: true\n },\n /**\n * The URL of the resource to link to\n */\n url: {\n type: String,\n required: true\n }\n },\n data() {\n return {\n labelTranslated: t('Open link to \"{resourceName}\"', { resourceName: this.name })\n };\n },\n computed: {\n route() {\n return getRoute(this.$router, this.url);\n }\n },\n methods: {\n t\n }\n};\nconst _hoisted_1$4 = { class: \"resource\" };\nconst _hoisted_2$4 = { class: \"resource__icon\" };\nconst _hoisted_3$3 = [\"src\"];\nfunction _sfc_render$4(_ctx, _cache, $props, $setup, $data, $options) {\n const _component_NcButton = resolveComponent(\"NcButton\");\n return openBlock(), createElementBlock(\"li\", _hoisted_1$4, [\n createVNode(_component_NcButton, {\n class: \"resource__button\",\n \"aria-label\": $data.labelTranslated,\n to: $options.route,\n href: $options.route ? null : $props.url,\n variant: \"tertiary\"\n }, {\n icon: withCtx(() => [\n createElementVNode(\"div\", _hoisted_2$4, [\n createElementVNode(\"img\", { src: $props.icon }, null, 8, _hoisted_3$3)\n ])\n ]),\n default: withCtx(() => [\n createTextVNode(\" \" + toDisplayString($props.name), 1)\n ]),\n _: 1\n }, 8, [\"aria-label\", \"to\", \"href\"])\n ]);\n}\nconst NcResource = /* @__PURE__ */ _export_sfc(_sfc_main$4, [[\"render\", _sfc_render$4], [\"__scopeId\", \"data-v-1f086ea6\"]]);\nconst _sfc_main$3 = {\n name: \"AccountGroupIcon\",\n emits: [\"click\"],\n props: {\n title: {\n type: String\n },\n fillColor: {\n type: String,\n default: \"currentColor\"\n },\n size: {\n type: Number,\n default: 24\n }\n }\n};\nconst _hoisted_1$3 = [\"aria-hidden\", \"aria-label\"];\nconst _hoisted_2$3 = [\"fill\", \"width\", \"height\"];\nconst _hoisted_3$2 = { d: \"M12,5.5A3.5,3.5 0 0,1 15.5,9A3.5,3.5 0 0,1 12,12.5A3.5,3.5 0 0,1 8.5,9A3.5,3.5 0 0,1 12,5.5M5,8C5.56,8 6.08,8.15 6.53,8.42C6.38,9.85 6.8,11.27 7.66,12.38C7.16,13.34 6.16,14 5,14A3,3 0 0,1 2,11A3,3 0 0,1 5,8M19,8A3,3 0 0,1 22,11A3,3 0 0,1 19,14C17.84,14 16.84,13.34 16.34,12.38C17.2,11.27 17.62,9.85 17.47,8.42C17.92,8.15 18.44,8 19,8M5.5,18.25C5.5,16.18 8.41,14.5 12,14.5C15.59,14.5 18.5,16.18 18.5,18.25V20H5.5V18.25M0,20V18.5C0,17.11 1.89,15.94 4.45,15.6C3.86,16.28 3.5,17.22 3.5,18.25V20H0M24,20H20.5V18.25C20.5,17.22 20.14,16.28 19.55,15.6C22.11,15.94 24,17.11 24,18.5V20Z\" };\nconst _hoisted_4$2 = { key: 0 };\nfunction _sfc_render$3(_ctx, _cache, $props, $setup, $data, $options) {\n return openBlock(), createElementBlock(\"span\", mergeProps(_ctx.$attrs, {\n \"aria-hidden\": $props.title ? null : \"true\",\n \"aria-label\": $props.title,\n class: \"material-design-icon account-group-icon\",\n role: \"img\",\n onClick: _cache[0] || (_cache[0] = ($event) => _ctx.$emit(\"click\", $event))\n }), [\n (openBlock(), createElementBlock(\"svg\", {\n fill: $props.fillColor,\n class: \"material-design-icon__svg\",\n width: $props.size,\n height: $props.size,\n viewBox: \"0 0 24 24\"\n }, [\n createElementVNode(\"path\", _hoisted_3$2, [\n $props.title ? (openBlock(), createElementBlock(\"title\", _hoisted_4$2, toDisplayString($props.title), 1)) : createCommentVNode(\"\", true)\n ])\n ], 8, _hoisted_2$3))\n ], 16, _hoisted_1$3);\n}\nconst AccountGroup = /* @__PURE__ */ _export_sfc(_sfc_main$3, [[\"render\", _sfc_render$3]]);\nconst _sfc_main$2 = {\n name: \"OpenInNewIcon\",\n emits: [\"click\"],\n props: {\n title: {\n type: String\n },\n fillColor: {\n type: String,\n default: \"currentColor\"\n },\n size: {\n type: Number,\n default: 24\n }\n }\n};\nconst _hoisted_1$2 = [\"aria-hidden\", \"aria-label\"];\nconst _hoisted_2$2 = [\"fill\", \"width\", \"height\"];\nconst _hoisted_3$1 = { d: \"M14,3V5H17.59L7.76,14.83L9.17,16.24L19,6.41V10H21V3M19,19H5V5H12V3H5C3.89,3 3,3.9 3,5V19A2,2 0 0,0 5,21H19A2,2 0 0,0 21,19V12H19V19Z\" };\nconst _hoisted_4$1 = { key: 0 };\nfunction _sfc_render$2(_ctx, _cache, $props, $setup, $data, $options) {\n return openBlock(), createElementBlock(\"span\", mergeProps(_ctx.$attrs, {\n \"aria-hidden\": $props.title ? null : \"true\",\n \"aria-label\": $props.title,\n class: \"material-design-icon open-in-new-icon\",\n role: \"img\",\n onClick: _cache[0] || (_cache[0] = ($event) => _ctx.$emit(\"click\", $event))\n }), [\n (openBlock(), createElementBlock(\"svg\", {\n fill: $props.fillColor,\n class: \"material-design-icon__svg\",\n width: $props.size,\n height: $props.size,\n viewBox: \"0 0 24 24\"\n }, [\n createElementVNode(\"path\", _hoisted_3$1, [\n $props.title ? (openBlock(), createElementBlock(\"title\", _hoisted_4$1, toDisplayString($props.title), 1)) : createCommentVNode(\"\", true)\n ])\n ], 8, _hoisted_2$2))\n ], 16, _hoisted_1$2);\n}\nconst OpenInNew = /* @__PURE__ */ _export_sfc(_sfc_main$2, [[\"render\", _sfc_render$2]]);\nregister(t42);\nconst teamResourceProviders = getCapabilities()?.circles?.teamResourceProviders ?? [];\nconst _sfc_main$1 = {\n name: \"NcTeamResources\",\n components: {\n AccountGroup,\n ChevronDown,\n ChevronUp,\n OpenInNew,\n NcButton,\n NcIconSvgWrapper\n },\n props: {\n /**\n * The provider ID to fetch resources for\n */\n providerId: {\n type: String,\n default: null\n },\n /**\n * The item ID to fetch resources for\n */\n itemId: {\n type: [String, Number],\n default: null\n }\n },\n data() {\n return {\n appEnabled: OC?.appswebroots?.circles !== void 0 && (OC.config.version.split(\".\")[0] ?? 0) >= 29,\n loading: false,\n teamResources: null,\n teamOpen: []\n };\n },\n computed: {\n isVisible() {\n return !this.loading && this.teamResources?.length > 0;\n },\n teamProviders() {\n return (teamId) => {\n const team = this.teamResources.find((t2) => t2.teamId === teamId);\n return team.resources?.reduce((acc, resource) => {\n if (resource.provider.id === this.providerId && resource.id === String(this.itemId)) {\n return acc;\n }\n if (!acc[resource.provider.id]) {\n acc[resource.provider.id] = resource.provider;\n acc[resource.provider.id].resources = [];\n }\n if (resource.provider.id === this.providerId && resource.id === String(this.itemId)) {\n return acc;\n }\n acc[resource.provider.id].resources.push(resource);\n return acc;\n }, {});\n };\n },\n open() {\n return (teamId) => {\n return this.teamOpen.indexOf(teamId) !== -1;\n };\n }\n },\n watch: {\n providerId() {\n this.fetchTeamResources();\n },\n itemId() {\n this.fetchTeamResources();\n }\n },\n created() {\n this.fetchTeamResources();\n },\n methods: {\n t,\n async fetchTeamResources() {\n if (!teamResourceProviders.includes(this.providerId)) {\n return;\n }\n try {\n this.loading = true;\n const response = await axios.get(generateOcsUrl(`/teams/resources/${this.providerId}/${this.itemId}`));\n this.teamResources = response.data.ocs.data.teams;\n this.teamOpen = [this.teamResources[0]?.teamId];\n } catch (error) {\n this.teamResources = null;\n logger.error(\"[NcTeamResources] Failed to fetch resources\", { error });\n } finally {\n this.loading = false;\n }\n },\n toggleOpen(teamId, open) {\n if (open) {\n this.teamOpen.push(teamId);\n } else {\n this.teamOpen.splice(this.teamOpen.indexOf(teamId), 1);\n }\n }\n }\n};\nconst _hoisted_1$1 = {\n key: 0,\n class: \"team-resources\"\n};\nconst _hoisted_2$1 = { class: \"team-resources__header\" };\nconst _hoisted_3 = [\"open\", \"onToggle\"];\nconst _hoisted_4 = { class: \"related-team__header\" };\nconst _hoisted_5 = { class: \"related-team__name\" };\nconst _hoisted_6 = { key: 0 };\nconst _hoisted_7 = [\"href\"];\nconst _hoisted_8 = {\n key: 0,\n class: \"resource__icon\"\n};\nconst _hoisted_9 = {\n key: 2,\n class: \"resource__icon\"\n};\nconst _hoisted_10 = [\"src\"];\nconst _hoisted_11 = { class: \"resource__name\" };\nfunction _sfc_render$1(_ctx, _cache, $props, $setup, $data, $options) {\n const _component_AccountGroup = resolveComponent(\"AccountGroup\");\n const _component_OpenInNew = resolveComponent(\"OpenInNew\");\n const _component_NcButton = resolveComponent(\"NcButton\");\n const _component_ChevronUp = resolveComponent(\"ChevronUp\");\n const _component_ChevronDown = resolveComponent(\"ChevronDown\");\n const _component_NcIconSvgWrapper = resolveComponent(\"NcIconSvgWrapper\");\n return $data.appEnabled && $options.isVisible ? (openBlock(), createElementBlock(\"div\", _hoisted_1$1, [\n createElementVNode(\"h5\", _hoisted_2$1, toDisplayString($options.t(\"Related team resources\")), 1),\n (openBlock(true), createElementBlock(Fragment, null, renderList($data.teamResources, (team) => {\n return openBlock(), createElementBlock(\"details\", {\n key: team.teamId,\n name: \"Team resources\",\n class: \"related-team\",\n open: $options.open(team.teamId),\n onToggle: (event) => $options.toggleOpen(team.teamId, event.target.open)\n }, [\n createElementVNode(\"summary\", _hoisted_4, [\n createElementVNode(\"h5\", _hoisted_5, [\n createVNode(_component_AccountGroup, { size: 20 }),\n createTextVNode(\" \" + toDisplayString(team.displayName), 1)\n ]),\n createVNode(_component_NcButton, {\n \"aria-label\": $options.t(\"View team\"),\n href: team.link,\n title: $options.t(\"View team\"),\n variant: \"tertiary\"\n }, {\n icon: withCtx(() => [\n createVNode(_component_OpenInNew, { size: 20 })\n ]),\n _: 1\n }, 8, [\"aria-label\", \"href\", \"title\"]),\n $options.open(team.teamId) ? (openBlock(), createBlock(_component_ChevronUp, {\n key: 0,\n size: 20\n })) : (openBlock(), createBlock(_component_ChevronDown, {\n key: 1,\n size: 20\n }))\n ]),\n createElementVNode(\"div\", null, [\n (openBlock(true), createElementBlock(Fragment, null, renderList($options.teamProviders(team.teamId), (provider) => {\n return openBlock(), createElementBlock(\"div\", {\n key: provider.id,\n class: \"related-team-provider\"\n }, [\n provider.resources.length > 0 ? (openBlock(), createElementBlock(\"h6\", _hoisted_6, toDisplayString(provider.name), 1)) : createCommentVNode(\"\", true),\n createElementVNode(\"ul\", null, [\n (openBlock(true), createElementBlock(Fragment, null, renderList(provider.resources, (resource) => {\n return openBlock(), createElementBlock(\"li\", {\n key: resource.url,\n class: \"related-team-resource\"\n }, [\n createElementVNode(\"a\", {\n href: resource.url,\n class: \"related-team-resource__link\"\n }, [\n resource.iconEmoji ? (openBlock(), createElementBlock(\"span\", _hoisted_8, toDisplayString(resource.iconEmoji), 1)) : resource.iconSvg ? (openBlock(), createBlock(_component_NcIconSvgWrapper, {\n key: 1,\n class: \"resource__icon\",\n svg: resource.iconSvg,\n size: 20\n }, null, 8, [\"svg\"])) : resource.iconURL ? (openBlock(), createElementBlock(\"span\", _hoisted_9, [\n createElementVNode(\"img\", {\n src: resource.iconURL,\n alt: \"\"\n }, null, 8, _hoisted_10)\n ])) : createCommentVNode(\"\", true),\n createElementVNode(\"span\", _hoisted_11, toDisplayString(resource.label), 1)\n ], 8, _hoisted_7)\n ]);\n }), 128))\n ])\n ]);\n }), 128))\n ])\n ], 40, _hoisted_3);\n }), 128))\n ])) : createCommentVNode(\"\", true);\n}\nconst NcTeamResources = /* @__PURE__ */ _export_sfc(_sfc_main$1, [[\"render\", _sfc_render$1], [\"__scopeId\", \"data-v-5bd48021\"]]);\nregister(t9);\nconst _sfc_main = {\n name: \"NcRelatedResourcesPanel\",\n components: {\n NcResource,\n NcTeamResources\n },\n /* eslint vue/require-prop-comment: warn -- TODO: Add a proper doc block about what this props do */\n props: {\n /**\n * The provider id implemented with `\\OCA\\RelatedResources\\IRelatedResourceProvider::getProviderId()`\n */\n providerId: {\n type: String,\n default: null\n },\n /**\n * The item id which uniquely identities the e.g. Calendar event, Deck board, file, Talk room, etc.\n */\n itemId: {\n type: [String, Number],\n default: null\n },\n /**\n * Limits to specific resource type. i.e. any provider id implemented with `\\OCA\\RelatedResources\\IRelatedResourceProvider::getProviderId()`\n */\n resourceType: {\n type: String,\n default: \"\"\n },\n /**\n * Set the maximum number of resources to load\n */\n limit: {\n type: Number,\n default: 0\n },\n /**\n * Only used by the files sidebar\n *\n * File info is passed when registered with `OCA.Sharing.ShareTabSections.registerSection()`\n */\n fileInfo: {\n type: Object,\n default: null\n },\n /**\n * The header text to show above the list of resources\n */\n header: {\n type: String,\n default: t(\"Related resources\")\n },\n /**\n * The description text to show below the header\n */\n description: {\n type: String,\n default: t(\"Anything shared with the same group of people will show up here\")\n },\n /**\n * If this element is used on a primary element set to true for primary styling.\n */\n primary: {\n type: Boolean,\n default: false\n }\n },\n emits: [\n \"hasError\",\n \"hasResources\"\n ],\n data() {\n return {\n appEnabled: OC?.appswebroots?.related_resources !== void 0,\n loading: false,\n error: null,\n resources: []\n };\n },\n computed: {\n isVisible() {\n if (this.loading) {\n return false;\n }\n return this.error ?? this.resources.length > 0;\n },\n subline() {\n if (this.error) {\n return t(\"Error getting related resources. Please contact your system administrator if you have any questions.\");\n }\n return this.description;\n },\n hasResourceInfo() {\n if (this.providerId !== null && this.itemId !== null) {\n return true;\n }\n if (this.fileInfo !== null) {\n return true;\n }\n return false;\n },\n isFiles() {\n return this.fileInfo?.id !== void 0;\n },\n url() {\n let providerId;\n let itemId;\n if (this.isFiles) {\n providerId = \"files\";\n itemId = this.fileInfo.id;\n } else {\n providerId = this.providerId;\n itemId = this.itemId;\n }\n return generateOcsUrl(\"/apps/related_resources/related/{providerId}?itemId={itemId}&resourceType={resourceType}&limit={limit}&format=json\", {\n providerId,\n itemId,\n resourceType: this.resourceType,\n limit: this.limit\n });\n }\n },\n watch: {\n providerId() {\n this.fetchRelatedResources();\n },\n itemId() {\n this.fetchRelatedResources();\n },\n fileInfo() {\n this.fetchRelatedResources();\n },\n error(error) {\n this.$emit(\"hasError\", Boolean(error));\n },\n resources(resources) {\n this.$emit(\"hasResources\", resources.length > 0);\n }\n },\n created() {\n this.fetchRelatedResources();\n },\n methods: {\n t,\n async fetchRelatedResources() {\n if (!this.appEnabled || !this.hasResourceInfo) {\n return;\n }\n this.loading = true;\n this.error = null;\n this.resources = [];\n try {\n const response = await axios.get(this.url);\n this.resources = response.data.ocs?.data;\n } catch (error) {\n this.error = error;\n logger.error(\"[NcRelatedResourcesPanel] Failed to fetch resources\", { error });\n } finally {\n this.loading = false;\n }\n }\n }\n};\nconst _hoisted_1 = {\n key: 0,\n class: \"related-resources\"\n};\nconst _hoisted_2 = { class: \"related-resources__header\" };\nfunction _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {\n const _component_NcTeamResources = resolveComponent(\"NcTeamResources\");\n const _component_NcResource = resolveComponent(\"NcResource\");\n return openBlock(), createElementBlock(\"div\", null, [\n createVNode(_component_NcTeamResources, {\n providerId: $props.providerId,\n itemId: $props.itemId\n }, null, 8, [\"providerId\", \"itemId\"]),\n $data.appEnabled && $options.isVisible ? (openBlock(), createElementBlock(\"div\", _hoisted_1, [\n createElementVNode(\"div\", _hoisted_2, [\n createElementVNode(\"h5\", null, toDisplayString($props.header), 1),\n createElementVNode(\"p\", null, toDisplayString($options.subline), 1)\n ]),\n (openBlock(true), createElementBlock(Fragment, null, renderList($data.resources, (resource) => {\n return openBlock(), createBlock(_component_NcResource, {\n key: resource.itemId,\n class: \"related-resources__entry\",\n icon: resource.icon,\n name: resource.title,\n url: resource.url\n }, null, 8, [\"icon\", \"name\", \"url\"]);\n }), 128))\n ])) : createCommentVNode(\"\", true)\n ]);\n}\nconst NcRelatedResourcesPanel = /* @__PURE__ */ _export_sfc(_sfc_main, [[\"render\", _sfc_render], [\"__scopeId\", \"data-v-514f51d3\"]]);\nexport {\n NcRelatedResourcesPanel as N\n};\n//# sourceMappingURL=NcRelatedResourcesPanel-D_Ttpg5_.mjs.map\n","import '../assets/NcSelectUsers-YF5729PJ.css';\nimport { defineComponent, useModel, ref, watch, openBlock, createBlock, unref, mergeProps, withCtx, createVNode, mergeModels } from \"vue\";\nimport { N as NcListItemIcon } from \"./NcListItemIcon-Dl_tfkk9.mjs\";\nimport { N as NcSelect } from \"./NcSelect--kERLlBK.mjs\";\nimport { _ as _export_sfc } from \"./_plugin-vue_export-helper-1tPrXgE0.mjs\";\nconst _sfc_main = /* @__PURE__ */ defineComponent({\n __name: \"NcSelectUsers\",\n props: /* @__PURE__ */ mergeModels({\n ariaLabelClearSelected: {},\n ariaLabelListbox: {},\n ariaLabelDeselectOption: { type: Function },\n disabled: { type: Boolean },\n inputId: {},\n inputLabel: {},\n labelOutside: { type: Boolean },\n keepOpen: { type: Boolean },\n loading: { type: Boolean },\n multiple: { type: Boolean },\n noWrap: { type: Boolean },\n options: {},\n placeholder: {},\n required: { type: Boolean }\n }, {\n \"modelValue\": {},\n \"modelModifiers\": {}\n }),\n emits: /* @__PURE__ */ mergeModels([\"search\"], [\"update:modelValue\"]),\n setup(__props, { emit: __emit }) {\n const modelValue = useModel(__props, \"modelValue\");\n const emit = __emit;\n const search = ref(\"\");\n watch(search, () => emit(\"search\", search.value));\n const clickableArea = Number.parseInt(window.getComputedStyle(document.body).getPropertyValue(\"--default-clickable-area\"));\n const gridBaseLine = Number.parseInt(window.getComputedStyle(document.body).getPropertyValue(\"--default-grid-baseline\"));\n const avatarSize = clickableArea - 2 * gridBaseLine;\n function filterBy(option, label, search2) {\n const EMAIL_NOTATION = /[^<]*<([^>]+)/;\n const match = search2.match(EMAIL_NOTATION);\n const subname = option.subname?.toLocaleLowerCase() ?? \"\";\n return match && subname.indexOf(match[1].toLocaleLowerCase()) > -1 || `${label} ${option.subname}`.toLocaleLowerCase().indexOf(search2.toLocaleLowerCase()) > -1;\n }\n return (_ctx, _cache) => {\n return openBlock(), createBlock(unref(NcSelect), mergeProps({\n modelValue: modelValue.value,\n \"onUpdate:modelValue\": _cache[0] || (_cache[0] = ($event) => modelValue.value = $event),\n class: \"nc-select-users\"\n }, _ctx.$props, {\n filterBy,\n label: \"displayName\",\n onSearch: _cache[1] || (_cache[1] = ($event) => search.value = $event)\n }), {\n option: withCtx((option) => [\n createVNode(unref(NcListItemIcon), mergeProps(option, {\n avatarSize: 32,\n name: option.displayName,\n search: search.value\n }), null, 16, [\"name\", \"search\"])\n ]),\n \"selected-option\": withCtx((selectedOption) => [\n createVNode(unref(NcListItemIcon), mergeProps(selectedOption, {\n avatarSize,\n name: selectedOption.displayName,\n noMargin: \"\",\n search: search.value\n }), null, 16, [\"name\", \"search\"])\n ]),\n _: 1\n }, 16, [\"modelValue\"]);\n };\n }\n});\nconst NcSelectUsers = /* @__PURE__ */ _export_sfc(_sfc_main, [[\"__scopeId\", \"data-v-e8e18fd3\"]]);\nexport {\n NcSelectUsers as N\n};\n//# sourceMappingURL=NcSelectUsers-K14Bepkq.mjs.map\n","import '../assets/NcSettingsSelectGroup-D_fSrafm.css';\nimport axios from \"@nextcloud/axios\";\nimport { generateOcsUrl } from \"@nextcloud/router\";\nimport debounce from \"debounce\";\nimport { N as NcSelect } from \"./NcSelect--kERLlBK.mjs\";\nimport { r as register, i as t50, a as t } from \"./_l10n-wdIzZwir.mjs\";\nimport { c as createElementId } from \"./createElementId-DhjFt1I9.mjs\";\nimport { resolveComponent, openBlock, createElementBlock, toDisplayString, createCommentVNode, createVNode, withDirectives, createElementVNode, vShow } from \"vue\";\nimport { _ as _export_sfc } from \"./_plugin-vue_export-helper-1tPrXgE0.mjs\";\nregister(t50);\nconst _sfc_main = {\n name: \"NcSettingsSelectGroup\",\n components: {\n NcSelect\n },\n props: {\n /**\n * The text of the label element of the select group input\n */\n label: {\n type: String,\n required: true\n },\n /**\n * Placeholder for the input element\n * For backwards compatibility it falls back to the `label` value\n */\n placeholder: {\n type: String,\n default: \"\"\n },\n /**\n * id attribute of the select group element\n */\n id: {\n type: String,\n default: () => \"action-\" + createElementId(),\n validator: (id) => id.trim() !== \"\"\n },\n /**\n * value of the select group input\n * A list of group IDs can be provided\n */\n modelValue: {\n type: Array,\n default: () => []\n },\n /**\n * disabled state of the settings select group input\n */\n disabled: {\n type: Boolean,\n default: false\n }\n },\n emits: [\n \"error\",\n \"input\",\n \"update:modelValue\"\n ],\n data() {\n return {\n /** Temporary store to cache groups */\n groups: {},\n randId: createElementId(),\n errorMessage: \"\"\n };\n },\n computed: {\n /**\n * If the error message should be shown\n */\n hasError() {\n return this.errorMessage !== \"\";\n },\n /**\n * Validate input value and only return valid strings (group IDs)\n *\n * @return {string[]}\n */\n filteredValue() {\n return this.modelValue.filter((group) => group !== \"\" && typeof group === \"string\");\n },\n /**\n * value property converted to an array of group objects used as input for the NcSelect\n */\n inputValue() {\n return this.filteredValue.map((id) => {\n if (typeof this.groups[id] === \"undefined\") {\n return {\n id,\n displayname: id\n };\n }\n return this.groups[id];\n });\n },\n /**\n * Convert groups object to array of groups required for NcSelect.options\n * Filter out currently selected values\n *\n * @return {object[]}\n */\n groupsArray() {\n return Object.values(this.groups).filter((g) => !this.modelValue.includes(g.id));\n }\n },\n watch: {\n /**\n * If the value is changed, check that all groups are loaded so we show the correct display name\n */\n modelValue: {\n handler() {\n const loadedGroupIds = Object.keys(this.groups);\n const missing = this.filteredValue.filter((group) => !loadedGroupIds.includes(group));\n missing.forEach((groupId) => {\n this.loadGroup(groupId);\n });\n },\n // Run the watch handler also when the component is initially mounted\n immediate: true\n }\n },\n /**\n * Load groups matching the empty query to reduce API calls\n */\n async mounted() {\n const storageName = `${appName}:${appVersion}/initialGroups`;\n let savedGroups = window.sessionStorage.getItem(storageName);\n if (savedGroups) {\n savedGroups = Object.fromEntries(JSON.parse(savedGroups).map((group) => [group.id, group]));\n this.groups = { ...this.groups, ...savedGroups };\n } else {\n await this.loadGroup(\"\");\n window.sessionStorage.setItem(storageName, JSON.stringify(Object.values(this.groups)));\n }\n },\n methods: {\n t,\n /**\n * Called when a new group is selected or previous group is deselected to emit the update event\n *\n * @param {object[]} updatedValue Array of selected groups\n */\n update(updatedValue) {\n const value = updatedValue.map((element) => element.id);\n this.$emit(\"update:modelValue\", value);\n },\n /**\n * Use provisioning API to search for given group and save it in the groups object\n *\n * @param {string} query The query like parts of the id oder display name\n * @return {boolean}\n */\n async loadGroup(query) {\n try {\n query = typeof query === \"string\" ? encodeURI(query) : \"\";\n const response = await axios.get(generateOcsUrl(`cloud/groups/details?search=${query}&limit=10`, 2));\n if (this.errorMessage !== \"\") {\n window.setTimeout(() => {\n this.errorMessage = \"\";\n }, 5e3);\n }\n if (Object.keys(response.data.ocs.data.groups).length > 0) {\n const newGroups = Object.fromEntries(response.data.ocs.data.groups.map((element) => [element.id, element]));\n this.groups = { ...this.groups, ...newGroups };\n return true;\n }\n } catch (error) {\n this.$emit(\"error\", error);\n this.errorMessage = t(\"Unable to search the group\");\n }\n return false;\n },\n /**\n * Custom filter function for `NcSelect` to filter by ID *and* display name\n *\n * @param {object} option One of the groups\n * @param {string} label The label property of the group\n * @param {string} search The current search string\n */\n filterGroups(option, label, search) {\n return `${label || \"\"} ${option.id}`.toLocaleLowerCase().indexOf(search.toLocaleLowerCase()) > -1;\n },\n /**\n * Debounce the group search (reduce API calls)\n */\n onSearch: debounce(function(query) {\n this.loadGroup(query);\n }, 200)\n }\n};\nconst _hoisted_1 = [\"for\"];\nfunction _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {\n const _component_NcSelect = resolveComponent(\"NcSelect\");\n return openBlock(), createElementBlock(\"div\", null, [\n $props.label ? (openBlock(), createElementBlock(\"label\", {\n key: 0,\n for: $props.id,\n class: \"hidden-visually\"\n }, toDisplayString($props.label), 9, _hoisted_1)) : createCommentVNode(\"\", true),\n createVNode(_component_NcSelect, {\n modelValue: $options.inputValue,\n options: $options.groupsArray,\n placeholder: $props.placeholder || $props.label,\n filterBy: $options.filterGroups,\n inputId: $props.id,\n limit: 5,\n label: \"displayname\",\n multiple: true,\n closeOnSelect: false,\n disabled: $props.disabled,\n \"onUpdate:modelValue\": $options.update,\n onSearch: $options.onSearch\n }, null, 8, [\"modelValue\", \"options\", \"placeholder\", \"filterBy\", \"inputId\", \"disabled\", \"onUpdate:modelValue\", \"onSearch\"]),\n withDirectives(createElementVNode(\"div\", { class: \"select-group-error\" }, toDisplayString($data.errorMessage), 513), [\n [vShow, $options.hasError]\n ])\n ]);\n}\nconst NcSettingsSelectGroup = /* @__PURE__ */ _export_sfc(_sfc_main, [[\"render\", _sfc_render], [\"__scopeId\", \"data-v-f2b71592\"]]);\nexport {\n NcSettingsSelectGroup as N\n};\n//# sourceMappingURL=NcSettingsSelectGroup-SYJ8-XlR.mjs.map\n","import '../assets/NcTextArea-BxGe3Lqn.css';\nimport { defineComponent, useModel, useAttrs, useTemplateRef, computed, watch, openBlock, createElementBlock, normalizeClass, unref, createElementVNode, mergeProps, toDisplayString, createCommentVNode, createBlock, createTextVNode, mergeModels } from \"vue\";\nimport { d as mdiCheck, j as mdiAlertCircleOutline } from \"./mdi-CpchYUUV.mjs\";\nimport { N as NcIconSvgWrapper } from \"./NcIconSvgWrapper-g8ubWhoz.mjs\";\nimport { c as createElementId } from \"./createElementId-DhjFt1I9.mjs\";\nimport { a as isLegacy } from \"./legacy-BoqDmOCa.mjs\";\nimport { l as logger } from \"./logger-D3RVzcfQ.mjs\";\nimport { _ as _export_sfc } from \"./_plugin-vue_export-helper-1tPrXgE0.mjs\";\nconst _hoisted_1 = { class: \"textarea__main-wrapper\" };\nconst _hoisted_2 = [\"id\", \"aria-describedby\", \"disabled\", \"placeholder\", \"value\"];\nconst _hoisted_3 = [\"for\"];\nconst _hoisted_4 = [\"id\"];\nconst _sfc_main = /* @__PURE__ */ defineComponent({\n ...{ inheritAttrs: false },\n __name: \"NcTextArea\",\n props: /* @__PURE__ */ mergeModels({\n disabled: { type: Boolean },\n error: { type: Boolean },\n helperText: { default: void 0 },\n id: { default: () => createElementId() },\n inputClass: { default: \"\" },\n label: { default: void 0 },\n labelOutside: { type: Boolean },\n placeholder: { default: void 0 },\n resize: { default: \"both\" },\n success: { type: Boolean }\n }, {\n \"modelValue\": { required: true },\n \"modelModifiers\": {}\n }),\n emits: [\"update:modelValue\"],\n setup(__props, { expose: __expose }) {\n const modelValue = useModel(__props, \"modelValue\");\n const props = __props;\n __expose({\n focus,\n select\n });\n const attrs = useAttrs();\n const textAreaElement = useTemplateRef(\"input\");\n const internalPlaceholder = computed(() => props.placeholder || (isLegacy ? props.label : void 0));\n watch(() => props.labelOutside, () => {\n if (!props.labelOutside && !props.label) {\n logger.warn(\"[NcTextArea] You need to add a label to the NcInputField component. Either use the prop label or use an external one, as per the example in the documentation.\");\n }\n });\n const ariaDescribedby = computed(() => {\n const ariaDescribedby2 = [];\n if (props.helperText) {\n ariaDescribedby2.push(`${props.id}-helper-text`);\n }\n if (typeof attrs[\"aria-describedby\"] === \"string\") {\n ariaDescribedby2.push(attrs[\"aria-describedby\"]);\n }\n return ariaDescribedby2.join(\" \") || void 0;\n });\n function handleInput(event) {\n const { value } = event.target;\n modelValue.value = value;\n }\n function focus(options) {\n textAreaElement.value.focus(options);\n }\n function select() {\n textAreaElement.value.select();\n }\n return (_ctx, _cache) => {\n return openBlock(), createElementBlock(\"div\", {\n class: normalizeClass([\"textarea\", [\n _ctx.$attrs.class,\n {\n \"textarea--disabled\": __props.disabled,\n \"textarea--legacy\": unref(isLegacy)\n }\n ]])\n }, [\n createElementVNode(\"div\", _hoisted_1, [\n createElementVNode(\"textarea\", mergeProps({ ..._ctx.$attrs, class: void 0 }, {\n id: __props.id,\n ref: \"input\",\n \"aria-describedby\": ariaDescribedby.value,\n \"aria-live\": \"polite\",\n class: [\"textarea__input\", [\n __props.inputClass,\n {\n \"textarea__input--label-outside\": __props.labelOutside,\n \"textarea__input--legacy\": unref(isLegacy),\n \"textarea__input--success\": __props.success,\n \"textarea__input--error\": __props.error\n }\n ]],\n disabled: __props.disabled,\n placeholder: internalPlaceholder.value,\n style: { resize: __props.resize },\n value: modelValue.value,\n onInput: handleInput\n }), null, 16, _hoisted_2),\n !__props.labelOutside ? (openBlock(), createElementBlock(\"label\", {\n key: 0,\n class: \"textarea__label\",\n for: __props.id\n }, toDisplayString(__props.label), 9, _hoisted_3)) : createCommentVNode(\"\", true)\n ]),\n __props.helperText ? (openBlock(), createElementBlock(\"p\", {\n key: 0,\n id: `${__props.id}-helper-text`,\n class: normalizeClass([\"textarea__helper-text-message\", {\n \"textarea__helper-text-message--error\": __props.error,\n \"textarea__helper-text-message--success\": __props.success\n }])\n }, [\n __props.success ? (openBlock(), createBlock(NcIconSvgWrapper, {\n key: 0,\n class: \"textarea__helper-text-message__icon\",\n path: unref(mdiCheck),\n inline: \"\"\n }, null, 8, [\"path\"])) : __props.error ? (openBlock(), createBlock(NcIconSvgWrapper, {\n key: 1,\n class: \"textarea__helper-text-message__icon\",\n path: unref(mdiAlertCircleOutline),\n inline: \"\"\n }, null, 8, [\"path\"])) : createCommentVNode(\"\", true),\n createTextVNode(\" \" + toDisplayString(__props.helperText), 1)\n ], 10, _hoisted_4)) : createCommentVNode(\"\", true)\n ], 2);\n };\n }\n});\nconst NcTextArea = /* @__PURE__ */ _export_sfc(_sfc_main, [[\"__scopeId\", \"data-v-d327fb49\"]]);\nexport {\n NcTextArea as N\n};\n//# sourceMappingURL=NcTextArea-Dxzj4zdb.mjs.map\n"],"names":["register","_sfc_main","defineComponent","NC_ACTIONS_IS_SEMANTIC_MENU","createElementId","t","_hoisted_1","_hoisted_2","_hoisted_3","_sfc_render","_ctx","_cache","$props","$setup","$data","$options","openBlock","createElementBlock","toDisplayString","createCommentVNode","createElementVNode","renderSlot","NcActionButtonGroup","_export_sfc","NcAppNavigationList","t20","_hoisted_1$1","_sfc_main$1","__props","open","useModel","title","computed","createVNode","unref","NcButton","$event","withCtx","NcIconSvgWrapper","mdiMenuOpen","mdiMenu","NcAppNavigationToggle","props","focusTrap","setHasAppNavigation","inject","HAS_APP_NAVIGATION_KEY","warn","appNavigationContainerElement","useTemplateRef","isMobile","useIsMobile","ref","shouldActivateFocusTrap","watchEffect","watch","toggleFocusTrap","onMounted","subscribe","toggleNavigationByEventBus","emit","createFocusTrap","toggleNavigation","getTrapStack","onUnmounted","unsubscribe","state","bodyStyles","animationLength","open2","handleEsc","normalizeClass","isLegacy34","withKeys","createBlock","NcAppNavigation","NcActions","_hoisted_4","mergeProps","ChevronUp","IconArrowRight","t14","IconClose","newValue","_component_IconArrowRight","resolveComponent","_component_NcButton","_component_IconClose","withModifiers","args","withDirectives","vModelText","NcInputConfirmCancel","_sfc_main$3","_hoisted_1$2","_hoisted_2$2","_hoisted_3$2","_hoisted_4$2","_sfc_render$3","Pencil","_sfc_main$2","_hoisted_2$1","_hoisted_3$1","_hoisted_4$1","_sfc_render$2","Undo","t21","ChevronDown","_sfc_render$1","_component_ChevronUp","_component_ChevronDown","NcAppNavigationIconCollapsible","t23","t51","NcActionButton","NcLoadingIcon","_sfc_main$4","id","newVal","event","navigate","routerLinkHref","href","_hoisted_5","_hoisted_6","_hoisted_7","_component_NcLoadingIcon","_component_NcInputConfirmCancel","_component_Pencil","_component_NcActionButton","_component_Undo","_component_NcActions","_component_NcAppNavigationIconCollapsible","resolveDynamicComponent","normalizeProps","guardReactiveProps","isActive","createTextVNode","NcAppNavigationItem","t16","t44","mergeModels","model","slots","useSlots","inputElement","inputHasFocus","useFocusWithin","transitionTimeout","actionsContainerElement","hasActions","showActions","timeoutId","hideActions","onCloseSearch","nextTick","NcInputField","NcAppNavigationSearch","t47","t48","t31","directive","el","encodedTlds","encodedUtlds","numeric","ascii","alpha","asciinumeric","alphanumeric","domain","emoji","scheme","slashscheme","whitespace","registerGroup","name","groups","addToGroups","flags","k","group","flagsForToken","result","c","State","token","input","nextState","i","regex","exactOnly","inputs","next","regexp","len","templateState","allFlags","ta","tr","ts","tt","WORD","UWORD","ASCIINUMERICAL","ALPHANUMERICAL","LOCALHOST","TLD","UTLD","SCHEME","SLASH_SCHEME","NUM","WS","NL","OPENBRACE","CLOSEBRACE","OPENBRACKET","CLOSEBRACKET","OPENPAREN","CLOSEPAREN","OPENANGLEBRACKET","CLOSEANGLEBRACKET","FULLWIDTHLEFTPAREN","FULLWIDTHRIGHTPAREN","LEFTCORNERBRACKET","RIGHTCORNERBRACKET","LEFTWHITECORNERBRACKET","RIGHTWHITECORNERBRACKET","FULLWIDTHLESSTHAN","FULLWIDTHGREATERTHAN","AMPERSAND","APOSTROPHE","ASTERISK","AT","BACKSLASH","BACKTICK","CARET","COLON","COMMA","DOLLAR","DOT","EQUALS","EXCLAMATION","HYPHEN","PERCENT","PIPE","PLUS","POUND","QUERY","QUOTE","FULLWIDTHMIDDLEDOT","SEMI","SLASH","TILDE","UNDERSCORE","EMOJI$1","SYM","tk","ASCII_LETTER","LETTER","EMOJI","DIGIT","SPACE","CR","LF","EMOJI_VARIATION","EMOJI_JOINER","OBJECT_REPLACEMENT","tlds","utlds","init$2","customSchemes","Start","decodeTlds","Num","Asciinumeric","Alphanumeric","Word","UWord","Nl","Cr","Ws","Emoji","EmojiJoiner","wordjr","uwordjr","fastts","a","b","sch","run$1","start","str","iterable","stringToArray","charCount","tokens","cursor","charCursor","tokenLength","latestAccepting","sinceAccepts","charsSinceAccepts","index","first","second","char","defaultt","jr","encoded","words","stack","digits","popDigitCount","popCount","defaults","noop","Options","opts","defaultRender","o","ignoredTags","uppercaseIgnoredTags","ir","key","operator","isCallable","option","obj","val","MultiToken","value","options","truncate","formatted","protocol","formattedHref","tagName","content","attributes","className","target","rel","attrs","eventListeners","createTokenClass","type","Token","p","Email","Text","Url","makeState","arg","init$1","qsAccepting","qsNonAccepting","localpartAccepting","Localpart","Domain","Scheme","SlashScheme","LocalpartAt","LocalpartDot","EmailDomain","EmailDomainDot","Email$1","EmailDomainHyphen","DomainHyphen","DomainDot","DomainDotTld","DomainDotTldColon","DomainDotTldColonPort","Url$1","UrlNonaccept","SchemeColon","SlashSchemeColon","SlashSchemeColonSlash","UriPrefix","bracketPairs","OPEN","CLOSE","UrlOpen","UrlOpenQ","UrlOpenSyms","run","multis","textTokens","secondState","multiLength","initMultiToken","Multi","subtokens","startIdx","endIdx","INIT","init","tokenize","linkifyString","escapeHTML","escapeAttr","attributesToString","attr","headerRef","_sfc_main$5","_hoisted_1$5","_hoisted_2$3","_hoisted_3$3","_hoisted_4$3","_sfc_render$4","IconDockRight","_hoisted_1$4","IconStar","_hoisted_1$3","IconStarOutline","selected","_sfc_main$6","sidebarTabsButton","sidebarTabsButton_legacy","sidebarTabsButton_selected","sidebarTabsButton__name","sidebarTabsButton__icon","sidebarTabsButton__legacyIcon","style0","cssModules","NcAppSidebarTabsButton","tab","active","getCanonicalLocale","tabIndex","_component_NcAppSidebarTabsButton","Fragment","renderList","NcAppSidebarTabs","t15","_sfc_main$7","NcEmptyContent","vOnClickOutside","CONTENT_SELECTOR_KEY","provide","useIsSmallMobile","isSlotPopulated","menu","menuTrigger","element","logger","activeTab","_hoisted_8","_component_IconDockRight","_component_IconStar","_component_IconStarOutline","_component_NcAppSidebarHeader","_component_NcAppSidebarTabs","_component_NcEmptyContent","_directive_focus","resolveDirective","_directive_click_outside","Transition","Teleport","normalizeStyle","vShow","NcAppSidebar","PQueue","t28","t6","t35","gtBuilder","getGettextBuilder","gt","t7","margin","defaultSize","NcAvatar","userStatus","margin2","EMAIL_NOTATION","match","_component_NcAvatar","_component_NcHighlight","_component_NcIconSvgWrapper","NcListItemIcon","t38","t42","getCapabilities","t9","__emit","modelValue","search","clickableArea","gridBaseLine","avatarSize","filterBy","label","search2","subname","NcSelect","selectedOption","NcSelectUsers","t50","debounce","query","__expose","focus","select","useAttrs","textAreaElement","internalPlaceholder","isLegacy","ariaDescribedby","ariaDescribedby2","handleInput","mdiCheck","mdiAlertCircleOutline","NcTextArea"],"mappings":"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","x_google_ignoreList":[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28]} \ No newline at end of file diff --git a/dist/NcTextArea-Dxzj4zdb-cEtDIZuj.chunk.mjs.map.license b/dist/NcTextArea-Dxzj4zdb-DLw_yRcD.chunk.mjs.map.license similarity index 100% rename from dist/NcTextArea-Dxzj4zdb-cEtDIZuj.chunk.mjs.map.license rename to dist/NcTextArea-Dxzj4zdb-DLw_yRcD.chunk.mjs.map.license diff --git a/dist/NcTextField.vue_vue_type_script_setup_true_lang-Bx2esFU2-D61trFet.chunk.mjs b/dist/NcTextField.vue_vue_type_script_setup_true_lang-Bx2esFU2-CGsfYqql.chunk.mjs similarity index 90% rename from dist/NcTextField.vue_vue_type_script_setup_true_lang-Bx2esFU2-D61trFet.chunk.mjs rename to dist/NcTextField.vue_vue_type_script_setup_true_lang-Bx2esFU2-CGsfYqql.chunk.mjs index ccfb54b1bf0f9..5ce82433ebcf5 100644 --- a/dist/NcTextField.vue_vue_type_script_setup_true_lang-Bx2esFU2-D61trFet.chunk.mjs +++ b/dist/NcTextField.vue_vue_type_script_setup_true_lang-Bx2esFU2-CGsfYqql.chunk.mjs @@ -1,2 +1,2 @@ -import{m as v,a as x,b as V}from"./logger-D3RVzcfQ-Bt9JRPzn.chunk.mjs";import{r as k,t as w,a as I,b as l,N as c}from"./createElementId-DhjFt1I9-BmyhoOWk.chunk.mjs";import{N as p}from"./NcInputField-5Sg6EUP6-DXw-ZWiv.chunk.mjs";import{b as O,n as j,p as E,o as n,c as s,q as F,w as d,i as N,u as t,m as T,s as _,v as C}from"./Web-DYqXJUev.chunk.mjs";k(I,w);const $=O({__name:"NcTextField",props:_({class:{},inputClass:{},id:{},label:{},labelOutside:{type:Boolean},type:{},placeholder:{},showTrailingButton:{type:Boolean},trailingButtonLabel:{default:void 0},success:{type:Boolean},error:{type:Boolean},helperText:{},disabled:{type:Boolean},pill:{type:Boolean},trailingButtonIcon:{default:"close"}},{modelValue:{default:""},modelModifiers:{}}),emits:["update:modelValue"],setup(a,{expose:m}){const i=j(a,"modelValue"),r=a;m({focus:y,select:h});const u=E("inputField"),f={arrowEnd:l("Save changes"),close:l("Clear text"),undo:l("Undo changes")},B=new Set(Object.keys(p.props)),b=C(()=>{const e=Object.fromEntries(Object.entries(r).filter(([o])=>B.has(o)));return e.trailingButtonLabel??=f[r.trailingButtonIcon],e});function y(e){u.value.focus(e)}function h(){u.value.select()}return(e,o)=>(n(),s(t(p),T(b.value,{ref:"inputField",modelValue:i.value,"onUpdate:modelValue":o[0]||(o[0]=g=>i.value=g)}),F({_:2},[e.$slots.icon?{name:"icon",fn:d(()=>[N(e.$slots,"icon")]),key:"0"}:void 0,a.type!=="search"?{name:"trailing-button-icon",fn:d(()=>[a.trailingButtonIcon==="arrowEnd"?(n(),s(t(c),{key:0,directional:"",path:t(v)},null,8,["path"])):(n(),s(t(c),{key:1,path:a.trailingButtonIcon==="undo"?t(x):t(V)},null,8,["path"]))]),key:"1"}:void 0]),1040,["modelValue"]))}});export{$ as _}; -//# sourceMappingURL=NcTextField.vue_vue_type_script_setup_true_lang-Bx2esFU2-D61trFet.chunk.mjs.map +import{m as v,a as x,b as V}from"./logger-D3RVzcfQ-BrUWOyzd.chunk.mjs";import{r as k,t as w,a as I,b as l,N as c}from"./createElementId-DhjFt1I9-BmyhoOWk.chunk.mjs";import{N as p}from"./NcInputField-5Sg6EUP6-CUyzAC2j.chunk.mjs";import{b as O,n as j,p as E,o as n,c as s,q as F,w as d,i as N,u as t,m as T,s as _,v as C}from"./Web-DYqXJUev.chunk.mjs";k(I,w);const $=O({__name:"NcTextField",props:_({class:{},inputClass:{},id:{},label:{},labelOutside:{type:Boolean},type:{},placeholder:{},showTrailingButton:{type:Boolean},trailingButtonLabel:{default:void 0},success:{type:Boolean},error:{type:Boolean},helperText:{},disabled:{type:Boolean},pill:{type:Boolean},trailingButtonIcon:{default:"close"}},{modelValue:{default:""},modelModifiers:{}}),emits:["update:modelValue"],setup(a,{expose:m}){const i=j(a,"modelValue"),r=a;m({focus:y,select:h});const u=E("inputField"),f={arrowEnd:l("Save changes"),close:l("Clear text"),undo:l("Undo changes")},B=new Set(Object.keys(p.props)),b=C(()=>{const e=Object.fromEntries(Object.entries(r).filter(([o])=>B.has(o)));return e.trailingButtonLabel??=f[r.trailingButtonIcon],e});function y(e){u.value.focus(e)}function h(){u.value.select()}return(e,o)=>(n(),s(t(p),T(b.value,{ref:"inputField",modelValue:i.value,"onUpdate:modelValue":o[0]||(o[0]=g=>i.value=g)}),F({_:2},[e.$slots.icon?{name:"icon",fn:d(()=>[N(e.$slots,"icon")]),key:"0"}:void 0,a.type!=="search"?{name:"trailing-button-icon",fn:d(()=>[a.trailingButtonIcon==="arrowEnd"?(n(),s(t(c),{key:0,directional:"",path:t(v)},null,8,["path"])):(n(),s(t(c),{key:1,path:a.trailingButtonIcon==="undo"?t(x):t(V)},null,8,["path"]))]),key:"1"}:void 0]),1040,["modelValue"]))}});export{$ as _}; +//# sourceMappingURL=NcTextField.vue_vue_type_script_setup_true_lang-Bx2esFU2-CGsfYqql.chunk.mjs.map diff --git a/dist/NcTextField.vue_vue_type_script_setup_true_lang-Bx2esFU2-D61trFet.chunk.mjs.license b/dist/NcTextField.vue_vue_type_script_setup_true_lang-Bx2esFU2-CGsfYqql.chunk.mjs.license similarity index 100% rename from dist/NcTextField.vue_vue_type_script_setup_true_lang-Bx2esFU2-D61trFet.chunk.mjs.license rename to dist/NcTextField.vue_vue_type_script_setup_true_lang-Bx2esFU2-CGsfYqql.chunk.mjs.license diff --git a/dist/NcTextField.vue_vue_type_script_setup_true_lang-Bx2esFU2-D61trFet.chunk.mjs.map b/dist/NcTextField.vue_vue_type_script_setup_true_lang-Bx2esFU2-CGsfYqql.chunk.mjs.map similarity index 98% rename from dist/NcTextField.vue_vue_type_script_setup_true_lang-Bx2esFU2-D61trFet.chunk.mjs.map rename to dist/NcTextField.vue_vue_type_script_setup_true_lang-Bx2esFU2-CGsfYqql.chunk.mjs.map index 8c72af3b67649..dc56315b1a982 100644 --- a/dist/NcTextField.vue_vue_type_script_setup_true_lang-Bx2esFU2-D61trFet.chunk.mjs.map +++ b/dist/NcTextField.vue_vue_type_script_setup_true_lang-Bx2esFU2-CGsfYqql.chunk.mjs.map @@ -1 +1 @@ -{"version":3,"file":"NcTextField.vue_vue_type_script_setup_true_lang-Bx2esFU2-D61trFet.chunk.mjs","sources":["../node_modules/@nextcloud/vue/dist/chunks/NcTextField.vue_vue_type_script_setup_true_lang-Bx2esFU2.mjs"],"sourcesContent":["import { defineComponent, useModel, useTemplateRef, computed, openBlock, createBlock, unref, mergeProps, createSlots, withCtx, renderSlot, mergeModels } from \"vue\";\nimport { m as mdiArrowRight, a as mdiUndo, b as mdiClose } from \"./mdi-CpchYUUV.mjs\";\nimport { r as register, b as t51, c as t18, a as t } from \"./_l10n-wdIzZwir.mjs\";\nimport { N as NcIconSvgWrapper } from \"./NcIconSvgWrapper-g8ubWhoz.mjs\";\nimport { N as NcInputField } from \"./NcInputField-5Sg6EUP6.mjs\";\nregister(t18, t51);\nconst _sfc_main = /* @__PURE__ */ defineComponent({\n __name: \"NcTextField\",\n props: /* @__PURE__ */ mergeModels({\n class: {},\n inputClass: {},\n id: {},\n label: {},\n labelOutside: { type: Boolean },\n type: {},\n placeholder: {},\n showTrailingButton: { type: Boolean },\n trailingButtonLabel: { default: void 0 },\n success: { type: Boolean },\n error: { type: Boolean },\n helperText: {},\n disabled: { type: Boolean },\n pill: { type: Boolean },\n trailingButtonIcon: { default: \"close\" }\n }, {\n \"modelValue\": { default: \"\" },\n \"modelModifiers\": {}\n }),\n emits: [\"update:modelValue\"],\n setup(__props, { expose: __expose }) {\n const modelValue = useModel(__props, \"modelValue\");\n const props = __props;\n __expose({\n focus,\n select\n });\n const inputFieldInstance = useTemplateRef(\"inputField\");\n const defaultTrailingButtonLabels = {\n arrowEnd: t(\"Save changes\"),\n close: t(\"Clear text\"),\n undo: t(\"Undo changes\")\n };\n const NcInputFieldPropNames = new Set(Object.keys(NcInputField.props));\n const propsToForward = computed(() => {\n const sharedProps = Object.fromEntries(Object.entries(props).filter(([key]) => NcInputFieldPropNames.has(key)));\n sharedProps.trailingButtonLabel ??= defaultTrailingButtonLabels[props.trailingButtonIcon];\n return sharedProps;\n });\n function focus(options) {\n inputFieldInstance.value.focus(options);\n }\n function select() {\n inputFieldInstance.value.select();\n }\n return (_ctx, _cache) => {\n return openBlock(), createBlock(unref(NcInputField), mergeProps(propsToForward.value, {\n ref: \"inputField\",\n modelValue: modelValue.value,\n \"onUpdate:modelValue\": _cache[0] || (_cache[0] = ($event) => modelValue.value = $event)\n }), createSlots({ _: 2 }, [\n !!_ctx.$slots.icon ? {\n name: \"icon\",\n fn: withCtx(() => [\n renderSlot(_ctx.$slots, \"icon\")\n ]),\n key: \"0\"\n } : void 0,\n __props.type !== \"search\" ? {\n name: \"trailing-button-icon\",\n fn: withCtx(() => [\n __props.trailingButtonIcon === \"arrowEnd\" ? (openBlock(), createBlock(unref(NcIconSvgWrapper), {\n key: 0,\n directional: \"\",\n path: unref(mdiArrowRight)\n }, null, 8, [\"path\"])) : (openBlock(), createBlock(unref(NcIconSvgWrapper), {\n key: 1,\n path: __props.trailingButtonIcon === \"undo\" ? unref(mdiUndo) : unref(mdiClose)\n }, null, 8, [\"path\"]))\n ]),\n key: \"1\"\n } : void 0\n ]), 1040, [\"modelValue\"]);\n };\n }\n});\nexport {\n _sfc_main as _\n};\n//# sourceMappingURL=NcTextField.vue_vue_type_script_setup_true_lang-Bx2esFU2.mjs.map\n"],"names":["register","t18","t51","_sfc_main","defineComponent","mergeModels","__props","__expose","modelValue","useModel","props","focus","select","inputFieldInstance","useTemplateRef","defaultTrailingButtonLabels","t","NcInputFieldPropNames","NcInputField","propsToForward","computed","sharedProps","key","options","_ctx","_cache","openBlock","createBlock","unref","mergeProps","$event","createSlots","withCtx","renderSlot","NcIconSvgWrapper","mdiArrowRight","mdiUndo","mdiClose"],"mappings":"8VAKAA,EAASC,EAAKC,CAAG,EACZ,MAACC,EAA4BC,EAAgB,CAChD,OAAQ,cACR,MAAuBC,EAAY,CACjC,MAAO,CAAA,EACP,WAAY,CAAA,EACZ,GAAI,CAAA,EACJ,MAAO,CAAA,EACP,aAAc,CAAE,KAAM,OAAO,EAC7B,KAAM,CAAA,EACN,YAAa,CAAA,EACb,mBAAoB,CAAE,KAAM,OAAO,EACnC,oBAAqB,CAAE,QAAS,MAAM,EACtC,QAAS,CAAE,KAAM,OAAO,EACxB,MAAO,CAAE,KAAM,OAAO,EACtB,WAAY,CAAA,EACZ,SAAU,CAAE,KAAM,OAAO,EACzB,KAAM,CAAE,KAAM,OAAO,EACrB,mBAAoB,CAAE,QAAS,OAAO,CAC1C,EAAK,CACD,WAAc,CAAE,QAAS,EAAE,EAC3B,eAAkB,CAAA,CACtB,CAAG,EACD,MAAO,CAAC,mBAAmB,EAC3B,MAAMC,EAAS,CAAE,OAAQC,CAAQ,EAAI,CACnC,MAAMC,EAAaC,EAASH,EAAS,YAAY,EAC3CI,EAAQJ,EACdC,EAAS,CACP,MAAAI,EACA,OAAAC,CACN,CAAK,EACD,MAAMC,EAAqBC,EAAe,YAAY,EAChDC,EAA8B,CAClC,SAAUC,EAAE,cAAc,EAC1B,MAAOA,EAAE,YAAY,EACrB,KAAMA,EAAE,cAAc,CAC5B,EACUC,EAAwB,IAAI,IAAI,OAAO,KAAKC,EAAa,KAAK,CAAC,EAC/DC,EAAiBC,EAAS,IAAM,CACpC,MAAMC,EAAc,OAAO,YAAY,OAAO,QAAQX,CAAK,EAAE,OAAO,CAAC,CAACY,CAAG,IAAML,EAAsB,IAAIK,CAAG,CAAC,CAAC,EAC9G,OAAAD,EAAY,sBAAwBN,EAA4BL,EAAM,kBAAkB,EACjFW,CACT,CAAC,EACD,SAASV,EAAMY,EAAS,CACtBV,EAAmB,MAAM,MAAMU,CAAO,CACxC,CACA,SAASX,GAAS,CAChBC,EAAmB,MAAM,OAAM,CACjC,CACA,MAAO,CAACW,EAAMC,KACLC,EAAS,EAAIC,EAAYC,EAAMV,CAAY,EAAGW,EAAWV,EAAe,MAAO,CACpF,IAAK,aACL,WAAYX,EAAW,MACvB,sBAAuBiB,EAAO,CAAC,IAAMA,EAAO,CAAC,EAAKK,GAAWtB,EAAW,MAAQsB,EACxF,CAAO,EAAGC,EAAY,CAAE,EAAG,CAAC,EAAI,CACtBP,EAAK,OAAO,KAAO,CACnB,KAAM,OACN,GAAIQ,EAAQ,IAAM,CAChBC,EAAWT,EAAK,OAAQ,MAAM,CAC1C,CAAW,EACD,IAAK,GACf,EAAY,OACJlB,EAAQ,OAAS,SAAW,CAC1B,KAAM,uBACN,GAAI0B,EAAQ,IAAM,CAChB1B,EAAQ,qBAAuB,YAAcoB,EAAS,EAAIC,EAAYC,EAAMM,CAAgB,EAAG,CAC7F,IAAK,EACL,YAAa,GACb,KAAMN,EAAMO,CAAa,CACvC,EAAe,KAAM,EAAG,CAAC,MAAM,CAAC,IAAMT,EAAS,EAAIC,EAAYC,EAAMM,CAAgB,EAAG,CAC1E,IAAK,EACL,KAAM5B,EAAQ,qBAAuB,OAASsB,EAAMQ,CAAO,EAAIR,EAAMS,CAAQ,CAC3F,EAAe,KAAM,EAAG,CAAC,MAAM,CAAC,EAChC,CAAW,EACD,IAAK,GACf,EAAY,MACZ,CAAO,EAAG,KAAM,CAAC,YAAY,CAAC,EAE5B,CACF,CAAC","x_google_ignoreList":[0]} \ No newline at end of file +{"version":3,"file":"NcTextField.vue_vue_type_script_setup_true_lang-Bx2esFU2-CGsfYqql.chunk.mjs","sources":["../node_modules/@nextcloud/vue/dist/chunks/NcTextField.vue_vue_type_script_setup_true_lang-Bx2esFU2.mjs"],"sourcesContent":["import { defineComponent, useModel, useTemplateRef, computed, openBlock, createBlock, unref, mergeProps, createSlots, withCtx, renderSlot, mergeModels } from \"vue\";\nimport { m as mdiArrowRight, a as mdiUndo, b as mdiClose } from \"./mdi-CpchYUUV.mjs\";\nimport { r as register, b as t51, c as t18, a as t } from \"./_l10n-wdIzZwir.mjs\";\nimport { N as NcIconSvgWrapper } from \"./NcIconSvgWrapper-g8ubWhoz.mjs\";\nimport { N as NcInputField } from \"./NcInputField-5Sg6EUP6.mjs\";\nregister(t18, t51);\nconst _sfc_main = /* @__PURE__ */ defineComponent({\n __name: \"NcTextField\",\n props: /* @__PURE__ */ mergeModels({\n class: {},\n inputClass: {},\n id: {},\n label: {},\n labelOutside: { type: Boolean },\n type: {},\n placeholder: {},\n showTrailingButton: { type: Boolean },\n trailingButtonLabel: { default: void 0 },\n success: { type: Boolean },\n error: { type: Boolean },\n helperText: {},\n disabled: { type: Boolean },\n pill: { type: Boolean },\n trailingButtonIcon: { default: \"close\" }\n }, {\n \"modelValue\": { default: \"\" },\n \"modelModifiers\": {}\n }),\n emits: [\"update:modelValue\"],\n setup(__props, { expose: __expose }) {\n const modelValue = useModel(__props, \"modelValue\");\n const props = __props;\n __expose({\n focus,\n select\n });\n const inputFieldInstance = useTemplateRef(\"inputField\");\n const defaultTrailingButtonLabels = {\n arrowEnd: t(\"Save changes\"),\n close: t(\"Clear text\"),\n undo: t(\"Undo changes\")\n };\n const NcInputFieldPropNames = new Set(Object.keys(NcInputField.props));\n const propsToForward = computed(() => {\n const sharedProps = Object.fromEntries(Object.entries(props).filter(([key]) => NcInputFieldPropNames.has(key)));\n sharedProps.trailingButtonLabel ??= defaultTrailingButtonLabels[props.trailingButtonIcon];\n return sharedProps;\n });\n function focus(options) {\n inputFieldInstance.value.focus(options);\n }\n function select() {\n inputFieldInstance.value.select();\n }\n return (_ctx, _cache) => {\n return openBlock(), createBlock(unref(NcInputField), mergeProps(propsToForward.value, {\n ref: \"inputField\",\n modelValue: modelValue.value,\n \"onUpdate:modelValue\": _cache[0] || (_cache[0] = ($event) => modelValue.value = $event)\n }), createSlots({ _: 2 }, [\n !!_ctx.$slots.icon ? {\n name: \"icon\",\n fn: withCtx(() => [\n renderSlot(_ctx.$slots, \"icon\")\n ]),\n key: \"0\"\n } : void 0,\n __props.type !== \"search\" ? {\n name: \"trailing-button-icon\",\n fn: withCtx(() => [\n __props.trailingButtonIcon === \"arrowEnd\" ? (openBlock(), createBlock(unref(NcIconSvgWrapper), {\n key: 0,\n directional: \"\",\n path: unref(mdiArrowRight)\n }, null, 8, [\"path\"])) : (openBlock(), createBlock(unref(NcIconSvgWrapper), {\n key: 1,\n path: __props.trailingButtonIcon === \"undo\" ? unref(mdiUndo) : unref(mdiClose)\n }, null, 8, [\"path\"]))\n ]),\n key: \"1\"\n } : void 0\n ]), 1040, [\"modelValue\"]);\n };\n }\n});\nexport {\n _sfc_main as _\n};\n//# sourceMappingURL=NcTextField.vue_vue_type_script_setup_true_lang-Bx2esFU2.mjs.map\n"],"names":["register","t18","t51","_sfc_main","defineComponent","mergeModels","__props","__expose","modelValue","useModel","props","focus","select","inputFieldInstance","useTemplateRef","defaultTrailingButtonLabels","t","NcInputFieldPropNames","NcInputField","propsToForward","computed","sharedProps","key","options","_ctx","_cache","openBlock","createBlock","unref","mergeProps","$event","createSlots","withCtx","renderSlot","NcIconSvgWrapper","mdiArrowRight","mdiUndo","mdiClose"],"mappings":"8VAKAA,EAASC,EAAKC,CAAG,EACZ,MAACC,EAA4BC,EAAgB,CAChD,OAAQ,cACR,MAAuBC,EAAY,CACjC,MAAO,CAAA,EACP,WAAY,CAAA,EACZ,GAAI,CAAA,EACJ,MAAO,CAAA,EACP,aAAc,CAAE,KAAM,OAAO,EAC7B,KAAM,CAAA,EACN,YAAa,CAAA,EACb,mBAAoB,CAAE,KAAM,OAAO,EACnC,oBAAqB,CAAE,QAAS,MAAM,EACtC,QAAS,CAAE,KAAM,OAAO,EACxB,MAAO,CAAE,KAAM,OAAO,EACtB,WAAY,CAAA,EACZ,SAAU,CAAE,KAAM,OAAO,EACzB,KAAM,CAAE,KAAM,OAAO,EACrB,mBAAoB,CAAE,QAAS,OAAO,CAC1C,EAAK,CACD,WAAc,CAAE,QAAS,EAAE,EAC3B,eAAkB,CAAA,CACtB,CAAG,EACD,MAAO,CAAC,mBAAmB,EAC3B,MAAMC,EAAS,CAAE,OAAQC,CAAQ,EAAI,CACnC,MAAMC,EAAaC,EAASH,EAAS,YAAY,EAC3CI,EAAQJ,EACdC,EAAS,CACP,MAAAI,EACA,OAAAC,CACN,CAAK,EACD,MAAMC,EAAqBC,EAAe,YAAY,EAChDC,EAA8B,CAClC,SAAUC,EAAE,cAAc,EAC1B,MAAOA,EAAE,YAAY,EACrB,KAAMA,EAAE,cAAc,CAC5B,EACUC,EAAwB,IAAI,IAAI,OAAO,KAAKC,EAAa,KAAK,CAAC,EAC/DC,EAAiBC,EAAS,IAAM,CACpC,MAAMC,EAAc,OAAO,YAAY,OAAO,QAAQX,CAAK,EAAE,OAAO,CAAC,CAACY,CAAG,IAAML,EAAsB,IAAIK,CAAG,CAAC,CAAC,EAC9G,OAAAD,EAAY,sBAAwBN,EAA4BL,EAAM,kBAAkB,EACjFW,CACT,CAAC,EACD,SAASV,EAAMY,EAAS,CACtBV,EAAmB,MAAM,MAAMU,CAAO,CACxC,CACA,SAASX,GAAS,CAChBC,EAAmB,MAAM,OAAM,CACjC,CACA,MAAO,CAACW,EAAMC,KACLC,EAAS,EAAIC,EAAYC,EAAMV,CAAY,EAAGW,EAAWV,EAAe,MAAO,CACpF,IAAK,aACL,WAAYX,EAAW,MACvB,sBAAuBiB,EAAO,CAAC,IAAMA,EAAO,CAAC,EAAKK,GAAWtB,EAAW,MAAQsB,EACxF,CAAO,EAAGC,EAAY,CAAE,EAAG,CAAC,EAAI,CACtBP,EAAK,OAAO,KAAO,CACnB,KAAM,OACN,GAAIQ,EAAQ,IAAM,CAChBC,EAAWT,EAAK,OAAQ,MAAM,CAC1C,CAAW,EACD,IAAK,GACf,EAAY,OACJlB,EAAQ,OAAS,SAAW,CAC1B,KAAM,uBACN,GAAI0B,EAAQ,IAAM,CAChB1B,EAAQ,qBAAuB,YAAcoB,EAAS,EAAIC,EAAYC,EAAMM,CAAgB,EAAG,CAC7F,IAAK,EACL,YAAa,GACb,KAAMN,EAAMO,CAAa,CACvC,EAAe,KAAM,EAAG,CAAC,MAAM,CAAC,IAAMT,EAAS,EAAIC,EAAYC,EAAMM,CAAgB,EAAG,CAC1E,IAAK,EACL,KAAM5B,EAAQ,qBAAuB,OAASsB,EAAMQ,CAAO,EAAIR,EAAMS,CAAQ,CAC3F,EAAe,KAAM,EAAG,CAAC,MAAM,CAAC,EAChC,CAAW,EACD,IAAK,GACf,EAAY,MACZ,CAAO,EAAG,KAAM,CAAC,YAAY,CAAC,EAE5B,CACF,CAAC","x_google_ignoreList":[0]} \ No newline at end of file diff --git a/dist/NcTextField.vue_vue_type_script_setup_true_lang-Bx2esFU2-D61trFet.chunk.mjs.map.license b/dist/NcTextField.vue_vue_type_script_setup_true_lang-Bx2esFU2-CGsfYqql.chunk.mjs.map.license similarity index 100% rename from dist/NcTextField.vue_vue_type_script_setup_true_lang-Bx2esFU2-D61trFet.chunk.mjs.map.license rename to dist/NcTextField.vue_vue_type_script_setup_true_lang-Bx2esFU2-CGsfYqql.chunk.mjs.map.license diff --git a/dist/NcUserBubble-BXR7vT0V-CXAEWnoj.chunk.mjs b/dist/NcUserBubble-BXR7vT0V-BaTRETFp.chunk.mjs similarity index 90% rename from dist/NcUserBubble-BXR7vT0V-CXAEWnoj.chunk.mjs rename to dist/NcUserBubble-BXR7vT0V-BaTRETFp.chunk.mjs index 2aa30f0b980a6..2062a87d33e80 100644 --- a/dist/NcUserBubble-BXR7vT0V-CXAEWnoj.chunk.mjs +++ b/dist/NcUserBubble-BXR7vT0V-BaTRETFp.chunk.mjs @@ -1,2 +1,2 @@ -import{R as z}from"./logger-D3RVzcfQ-Bt9JRPzn.chunk.mjs";import{N as U}from"./NcAvatar-1KxMUN7V-X_YNB4Fv.chunk.mjs";import{q as x}from"./NcModal-DiDvgcU8-7_SNLMd-.chunk.mjs";import{_ as y}from"./createElementId-DhjFt1I9-BmyhoOWk.chunk.mjs";import{b as k,n as B,z as R,o as l,c,w as i,i as o,C as b,m as S,k as C,O as L,g as M,t as q,f as g,h as H,s as f,v as s,ak as O}from"./Web-DYqXJUev.chunk.mjs";const T={};function W(a,n){return l(),g("div",null,[o(a.$slots,"trigger")])}const j=y(T,[["render",W]]),A={class:"user-bubble__name"},D={key:0,class:"user-bubble__secondary"},E=k({__name:"NcUserBubble",props:f({avatarImage:{default:void 0},user:{default:void 0},displayName:{default:void 0},showUserStatus:{type:Boolean},url:{default:void 0},to:{default:void 0},primary:{type:Boolean},size:{default:20},margin:{default:2}},{open:{type:Boolean},openModifiers:{}}),emits:f(["click"],["update:open"]),setup(a,{emit:n}){const d=B(a,"open"),e=a,_=n,p=s(()=>{if(!e.avatarImage)return!1;try{return!!new URL(e.avatarImage)}catch{return!1}}),m=s(()=>!!e.avatarImage),h=s(()=>({marginInlineStart:`${e.margin}px`})),v=s(()=>{if(!e.url||e.url.trim()==="")return!1;try{return!!new URL(e.url,e.url?.startsWith?.("/")?window.location.href:void 0)}catch{return O("[NcUserBubble] Invalid URL passed",{url:e.url}),!1}}),w=s(()=>v.value?e.url:void 0),N=s(()=>v.value?"a":e.to?z:"div"),I=s(()=>({height:`${e.size}px`,lineHeight:`${e.size}px`,borderRadius:`${e.size/2}px`}));return R([()=>e.displayName,()=>e.user],()=>{!e.displayName&&e.user}),(r,t)=>(l(),c(b(r.$slots.default?x:j),{shown:d.value,"onUpdate:shown":t[1]||(t[1]=u=>d.value=u),class:"user-bubble__wrapper",trigger:"hover focus"},{trigger:i(({attrs:u})=>[(l(),c(b(N.value),S({class:["user-bubble__content",{"user-bubble__content--primary":a.primary}],style:I.value,to:a.to,href:w.value},u,{onClick:t[0]||(t[0]=$=>_("click",$))}),{default:i(()=>[C(U,{url:m.value&&p.value?a.avatarImage:void 0,iconClass:m.value&&!p.value?a.avatarImage:void 0,user:a.user,displayName:a.displayName,size:a.size-a.margin*2,style:L(h.value),disableTooltip:"",disableMenu:"",hideStatus:!a.showUserStatus,class:"user-bubble__avatar"},null,8,["url","iconClass","user","displayName","size","style","hideStatus"]),M("span",A,q(a.displayName||a.user),1),r.$slots.name?(l(),g("span",D,[o(r.$slots,"name",{},void 0,!0)])):H("",!0)]),_:3},16,["class","style","to","href"]))]),default:i(()=>[o(r.$slots,"default",{},void 0,!0)]),_:3},40,["shown"]))}}),K=y(E,[["__scopeId","data-v-9189d023"]]);export{K as N}; -//# sourceMappingURL=NcUserBubble-BXR7vT0V-CXAEWnoj.chunk.mjs.map +import{R as z}from"./logger-D3RVzcfQ-BrUWOyzd.chunk.mjs";import{N as U}from"./NcAvatar-1KxMUN7V-R6Nmwuvb.chunk.mjs";import{q as x}from"./NcModal-DiDvgcU8-Cb_C64qI.chunk.mjs";import{_ as y}from"./createElementId-DhjFt1I9-BmyhoOWk.chunk.mjs";import{b as k,n as B,z as R,o as l,c,w as i,i as o,C as b,m as S,k as C,O as L,g as M,t as q,f as g,h as H,s as f,v as s,ak as O}from"./Web-DYqXJUev.chunk.mjs";const T={};function W(a,n){return l(),g("div",null,[o(a.$slots,"trigger")])}const j=y(T,[["render",W]]),A={class:"user-bubble__name"},D={key:0,class:"user-bubble__secondary"},E=k({__name:"NcUserBubble",props:f({avatarImage:{default:void 0},user:{default:void 0},displayName:{default:void 0},showUserStatus:{type:Boolean},url:{default:void 0},to:{default:void 0},primary:{type:Boolean},size:{default:20},margin:{default:2}},{open:{type:Boolean},openModifiers:{}}),emits:f(["click"],["update:open"]),setup(a,{emit:n}){const d=B(a,"open"),e=a,_=n,p=s(()=>{if(!e.avatarImage)return!1;try{return!!new URL(e.avatarImage)}catch{return!1}}),m=s(()=>!!e.avatarImage),h=s(()=>({marginInlineStart:`${e.margin}px`})),v=s(()=>{if(!e.url||e.url.trim()==="")return!1;try{return!!new URL(e.url,e.url?.startsWith?.("/")?window.location.href:void 0)}catch{return O("[NcUserBubble] Invalid URL passed",{url:e.url}),!1}}),w=s(()=>v.value?e.url:void 0),N=s(()=>v.value?"a":e.to?z:"div"),I=s(()=>({height:`${e.size}px`,lineHeight:`${e.size}px`,borderRadius:`${e.size/2}px`}));return R([()=>e.displayName,()=>e.user],()=>{!e.displayName&&e.user}),(r,t)=>(l(),c(b(r.$slots.default?x:j),{shown:d.value,"onUpdate:shown":t[1]||(t[1]=u=>d.value=u),class:"user-bubble__wrapper",trigger:"hover focus"},{trigger:i(({attrs:u})=>[(l(),c(b(N.value),S({class:["user-bubble__content",{"user-bubble__content--primary":a.primary}],style:I.value,to:a.to,href:w.value},u,{onClick:t[0]||(t[0]=$=>_("click",$))}),{default:i(()=>[C(U,{url:m.value&&p.value?a.avatarImage:void 0,iconClass:m.value&&!p.value?a.avatarImage:void 0,user:a.user,displayName:a.displayName,size:a.size-a.margin*2,style:L(h.value),disableTooltip:"",disableMenu:"",hideStatus:!a.showUserStatus,class:"user-bubble__avatar"},null,8,["url","iconClass","user","displayName","size","style","hideStatus"]),M("span",A,q(a.displayName||a.user),1),r.$slots.name?(l(),g("span",D,[o(r.$slots,"name",{},void 0,!0)])):H("",!0)]),_:3},16,["class","style","to","href"]))]),default:i(()=>[o(r.$slots,"default",{},void 0,!0)]),_:3},40,["shown"]))}}),K=y(E,[["__scopeId","data-v-9189d023"]]);export{K as N}; +//# sourceMappingURL=NcUserBubble-BXR7vT0V-BaTRETFp.chunk.mjs.map diff --git a/dist/NcUserBubble-BXR7vT0V-CXAEWnoj.chunk.mjs.license b/dist/NcUserBubble-BXR7vT0V-BaTRETFp.chunk.mjs.license similarity index 100% rename from dist/NcUserBubble-BXR7vT0V-CXAEWnoj.chunk.mjs.license rename to dist/NcUserBubble-BXR7vT0V-BaTRETFp.chunk.mjs.license diff --git a/dist/NcUserBubble-BXR7vT0V-CXAEWnoj.chunk.mjs.map b/dist/NcUserBubble-BXR7vT0V-BaTRETFp.chunk.mjs.map similarity index 99% rename from dist/NcUserBubble-BXR7vT0V-CXAEWnoj.chunk.mjs.map rename to dist/NcUserBubble-BXR7vT0V-BaTRETFp.chunk.mjs.map index e2d67fbd42131..beab33f4910a0 100644 --- a/dist/NcUserBubble-BXR7vT0V-CXAEWnoj.chunk.mjs.map +++ b/dist/NcUserBubble-BXR7vT0V-BaTRETFp.chunk.mjs.map @@ -1 +1 @@ -{"version":3,"file":"NcUserBubble-BXR7vT0V-CXAEWnoj.chunk.mjs","sources":["../node_modules/@nextcloud/vue/dist/chunks/NcUserBubble-BXR7vT0V.mjs"],"sourcesContent":["import '../assets/NcUserBubble-DFUmBxeb.css';\nimport { openBlock, createElementBlock, renderSlot, defineComponent, useModel, computed, warn, watch, createBlock, resolveDynamicComponent, withCtx, mergeProps, createVNode, normalizeStyle, createElementVNode, toDisplayString, createCommentVNode, mergeModels } from \"vue\";\nimport { RouterLink } from \"vue-router\";\nimport { N as NcAvatar } from \"./NcAvatar-1KxMUN7V.mjs\";\nimport { N as NcPopover } from \"./NcPopover-B87bEPLq.mjs\";\nimport { _ as _export_sfc } from \"./_plugin-vue_export-helper-1tPrXgE0.mjs\";\nconst _sfc_main$1 = {};\nfunction _sfc_render(_ctx, _cache) {\n return openBlock(), createElementBlock(\"div\", null, [\n renderSlot(_ctx.$slots, \"trigger\")\n ]);\n}\nconst NcUserBubbleDiv = /* @__PURE__ */ _export_sfc(_sfc_main$1, [[\"render\", _sfc_render]]);\nconst _hoisted_1 = { class: \"user-bubble__name\" };\nconst _hoisted_2 = {\n key: 0,\n class: \"user-bubble__secondary\"\n};\nconst _sfc_main = /* @__PURE__ */ defineComponent({\n __name: \"NcUserBubble\",\n props: /* @__PURE__ */ mergeModels({\n avatarImage: { default: void 0 },\n user: { default: void 0 },\n displayName: { default: void 0 },\n showUserStatus: { type: Boolean },\n url: { default: void 0 },\n to: { default: void 0 },\n primary: { type: Boolean },\n size: { default: 20 },\n margin: { default: 2 }\n }, {\n \"open\": { type: Boolean },\n \"openModifiers\": {}\n }),\n emits: /* @__PURE__ */ mergeModels([\"click\"], [\"update:open\"]),\n setup(__props, { emit: __emit }) {\n const isOpen = useModel(__props, \"open\");\n const props = __props;\n const emit = __emit;\n const isAvatarUrl = computed(() => {\n if (!props.avatarImage) {\n return false;\n }\n try {\n const url = new URL(props.avatarImage);\n return !!url;\n } catch {\n return false;\n }\n });\n const isCustomAvatar = computed(() => !!props.avatarImage);\n const avatarStyle = computed(() => ({\n marginInlineStart: `${props.margin}px`\n }));\n const hasUrl = computed(() => {\n if (!props.url || props.url.trim() === \"\") {\n return false;\n }\n try {\n const url = new URL(props.url, props.url?.startsWith?.(\"/\") ? window.location.href : void 0);\n return !!url;\n } catch {\n warn(\"[NcUserBubble] Invalid URL passed\", { url: props.url });\n return false;\n }\n });\n const href = computed(() => hasUrl.value ? props.url : void 0);\n const contentComponent = computed(() => {\n if (hasUrl.value) {\n return \"a\";\n } else if (props.to) {\n return RouterLink;\n } else {\n return \"div\";\n }\n });\n const contentStyle = computed(() => ({\n height: `${props.size}px`,\n lineHeight: `${props.size}px`,\n borderRadius: `${props.size / 2}px`\n }));\n watch([() => props.displayName, () => props.user], () => {\n if (!props.displayName && !props.user) {\n warn(\"[NcUserBubble] At least `displayName` or `user` property should be set.\");\n }\n });\n return (_ctx, _cache) => {\n return openBlock(), createBlock(resolveDynamicComponent(!!_ctx.$slots.default ? NcPopover : NcUserBubbleDiv), {\n shown: isOpen.value,\n \"onUpdate:shown\": _cache[1] || (_cache[1] = ($event) => isOpen.value = $event),\n class: \"user-bubble__wrapper\",\n trigger: \"hover focus\"\n }, {\n trigger: withCtx(({ attrs }) => [\n (openBlock(), createBlock(resolveDynamicComponent(contentComponent.value), mergeProps({\n class: [\"user-bubble__content\", { \"user-bubble__content--primary\": __props.primary }],\n style: contentStyle.value,\n to: __props.to,\n href: href.value\n }, attrs, {\n onClick: _cache[0] || (_cache[0] = ($event) => emit(\"click\", $event))\n }), {\n default: withCtx(() => [\n createVNode(NcAvatar, {\n url: isCustomAvatar.value && isAvatarUrl.value ? __props.avatarImage : void 0,\n iconClass: isCustomAvatar.value && !isAvatarUrl.value ? __props.avatarImage : void 0,\n user: __props.user,\n displayName: __props.displayName,\n size: __props.size - __props.margin * 2,\n style: normalizeStyle(avatarStyle.value),\n disableTooltip: \"\",\n disableMenu: \"\",\n hideStatus: !__props.showUserStatus,\n class: \"user-bubble__avatar\"\n }, null, 8, [\"url\", \"iconClass\", \"user\", \"displayName\", \"size\", \"style\", \"hideStatus\"]),\n createElementVNode(\"span\", _hoisted_1, toDisplayString(__props.displayName || __props.user), 1),\n !!_ctx.$slots.name ? (openBlock(), createElementBlock(\"span\", _hoisted_2, [\n renderSlot(_ctx.$slots, \"name\", {}, void 0, true)\n ])) : createCommentVNode(\"\", true)\n ]),\n _: 3\n }, 16, [\"class\", \"style\", \"to\", \"href\"]))\n ]),\n default: withCtx(() => [\n renderSlot(_ctx.$slots, \"default\", {}, void 0, true)\n ]),\n _: 3\n }, 40, [\"shown\"]);\n };\n }\n});\nconst NcUserBubble = /* @__PURE__ */ _export_sfc(_sfc_main, [[\"__scopeId\", \"data-v-9189d023\"]]);\nexport {\n NcUserBubble as N\n};\n//# sourceMappingURL=NcUserBubble-BXR7vT0V.mjs.map\n"],"names":["_sfc_main$1","_sfc_render","_ctx","_cache","openBlock","createElementBlock","renderSlot","NcUserBubbleDiv","_export_sfc","_hoisted_1","_hoisted_2","_sfc_main","defineComponent","mergeModels","__props","__emit","isOpen","useModel","props","emit","isAvatarUrl","computed","isCustomAvatar","avatarStyle","hasUrl","warn","href","contentComponent","RouterLink","contentStyle","watch","createBlock","resolveDynamicComponent","NcPopover","$event","withCtx","attrs","mergeProps","createVNode","NcAvatar","normalizeStyle","createElementVNode","toDisplayString","createCommentVNode","NcUserBubble"],"mappings":"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","x_google_ignoreList":[0]} \ No newline at end of file +{"version":3,"file":"NcUserBubble-BXR7vT0V-BaTRETFp.chunk.mjs","sources":["../node_modules/@nextcloud/vue/dist/chunks/NcUserBubble-BXR7vT0V.mjs"],"sourcesContent":["import '../assets/NcUserBubble-DFUmBxeb.css';\nimport { openBlock, createElementBlock, renderSlot, defineComponent, useModel, computed, warn, watch, createBlock, resolveDynamicComponent, withCtx, mergeProps, createVNode, normalizeStyle, createElementVNode, toDisplayString, createCommentVNode, mergeModels } from \"vue\";\nimport { RouterLink } from \"vue-router\";\nimport { N as NcAvatar } from \"./NcAvatar-1KxMUN7V.mjs\";\nimport { N as NcPopover } from \"./NcPopover-B87bEPLq.mjs\";\nimport { _ as _export_sfc } from \"./_plugin-vue_export-helper-1tPrXgE0.mjs\";\nconst _sfc_main$1 = {};\nfunction _sfc_render(_ctx, _cache) {\n return openBlock(), createElementBlock(\"div\", null, [\n renderSlot(_ctx.$slots, \"trigger\")\n ]);\n}\nconst NcUserBubbleDiv = /* @__PURE__ */ _export_sfc(_sfc_main$1, [[\"render\", _sfc_render]]);\nconst _hoisted_1 = { class: \"user-bubble__name\" };\nconst _hoisted_2 = {\n key: 0,\n class: \"user-bubble__secondary\"\n};\nconst _sfc_main = /* @__PURE__ */ defineComponent({\n __name: \"NcUserBubble\",\n props: /* @__PURE__ */ mergeModels({\n avatarImage: { default: void 0 },\n user: { default: void 0 },\n displayName: { default: void 0 },\n showUserStatus: { type: Boolean },\n url: { default: void 0 },\n to: { default: void 0 },\n primary: { type: Boolean },\n size: { default: 20 },\n margin: { default: 2 }\n }, {\n \"open\": { type: Boolean },\n \"openModifiers\": {}\n }),\n emits: /* @__PURE__ */ mergeModels([\"click\"], [\"update:open\"]),\n setup(__props, { emit: __emit }) {\n const isOpen = useModel(__props, \"open\");\n const props = __props;\n const emit = __emit;\n const isAvatarUrl = computed(() => {\n if (!props.avatarImage) {\n return false;\n }\n try {\n const url = new URL(props.avatarImage);\n return !!url;\n } catch {\n return false;\n }\n });\n const isCustomAvatar = computed(() => !!props.avatarImage);\n const avatarStyle = computed(() => ({\n marginInlineStart: `${props.margin}px`\n }));\n const hasUrl = computed(() => {\n if (!props.url || props.url.trim() === \"\") {\n return false;\n }\n try {\n const url = new URL(props.url, props.url?.startsWith?.(\"/\") ? window.location.href : void 0);\n return !!url;\n } catch {\n warn(\"[NcUserBubble] Invalid URL passed\", { url: props.url });\n return false;\n }\n });\n const href = computed(() => hasUrl.value ? props.url : void 0);\n const contentComponent = computed(() => {\n if (hasUrl.value) {\n return \"a\";\n } else if (props.to) {\n return RouterLink;\n } else {\n return \"div\";\n }\n });\n const contentStyle = computed(() => ({\n height: `${props.size}px`,\n lineHeight: `${props.size}px`,\n borderRadius: `${props.size / 2}px`\n }));\n watch([() => props.displayName, () => props.user], () => {\n if (!props.displayName && !props.user) {\n warn(\"[NcUserBubble] At least `displayName` or `user` property should be set.\");\n }\n });\n return (_ctx, _cache) => {\n return openBlock(), createBlock(resolveDynamicComponent(!!_ctx.$slots.default ? NcPopover : NcUserBubbleDiv), {\n shown: isOpen.value,\n \"onUpdate:shown\": _cache[1] || (_cache[1] = ($event) => isOpen.value = $event),\n class: \"user-bubble__wrapper\",\n trigger: \"hover focus\"\n }, {\n trigger: withCtx(({ attrs }) => [\n (openBlock(), createBlock(resolveDynamicComponent(contentComponent.value), mergeProps({\n class: [\"user-bubble__content\", { \"user-bubble__content--primary\": __props.primary }],\n style: contentStyle.value,\n to: __props.to,\n href: href.value\n }, attrs, {\n onClick: _cache[0] || (_cache[0] = ($event) => emit(\"click\", $event))\n }), {\n default: withCtx(() => [\n createVNode(NcAvatar, {\n url: isCustomAvatar.value && isAvatarUrl.value ? __props.avatarImage : void 0,\n iconClass: isCustomAvatar.value && !isAvatarUrl.value ? __props.avatarImage : void 0,\n user: __props.user,\n displayName: __props.displayName,\n size: __props.size - __props.margin * 2,\n style: normalizeStyle(avatarStyle.value),\n disableTooltip: \"\",\n disableMenu: \"\",\n hideStatus: !__props.showUserStatus,\n class: \"user-bubble__avatar\"\n }, null, 8, [\"url\", \"iconClass\", \"user\", \"displayName\", \"size\", \"style\", \"hideStatus\"]),\n createElementVNode(\"span\", _hoisted_1, toDisplayString(__props.displayName || __props.user), 1),\n !!_ctx.$slots.name ? (openBlock(), createElementBlock(\"span\", _hoisted_2, [\n renderSlot(_ctx.$slots, \"name\", {}, void 0, true)\n ])) : createCommentVNode(\"\", true)\n ]),\n _: 3\n }, 16, [\"class\", \"style\", \"to\", \"href\"]))\n ]),\n default: withCtx(() => [\n renderSlot(_ctx.$slots, \"default\", {}, void 0, true)\n ]),\n _: 3\n }, 40, [\"shown\"]);\n };\n }\n});\nconst NcUserBubble = /* @__PURE__ */ _export_sfc(_sfc_main, [[\"__scopeId\", \"data-v-9189d023\"]]);\nexport {\n NcUserBubble as N\n};\n//# sourceMappingURL=NcUserBubble-BXR7vT0V.mjs.map\n"],"names":["_sfc_main$1","_sfc_render","_ctx","_cache","openBlock","createElementBlock","renderSlot","NcUserBubbleDiv","_export_sfc","_hoisted_1","_hoisted_2","_sfc_main","defineComponent","mergeModels","__props","__emit","isOpen","useModel","props","emit","isAvatarUrl","computed","isCustomAvatar","avatarStyle","hasUrl","warn","href","contentComponent","RouterLink","contentStyle","watch","createBlock","resolveDynamicComponent","NcPopover","$event","withCtx","attrs","mergeProps","createVNode","NcAvatar","normalizeStyle","createElementVNode","toDisplayString","createCommentVNode","NcUserBubble"],"mappings":"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","x_google_ignoreList":[0]} \ No newline at end of file diff --git a/dist/NcUserBubble-BXR7vT0V-CXAEWnoj.chunk.mjs.map.license b/dist/NcUserBubble-BXR7vT0V-BaTRETFp.chunk.mjs.map.license similarity index 100% rename from dist/NcUserBubble-BXR7vT0V-CXAEWnoj.chunk.mjs.map.license rename to dist/NcUserBubble-BXR7vT0V-BaTRETFp.chunk.mjs.map.license diff --git a/dist/NcUserStatusIcon-BF5OEQFU-Bh_IaQ_D.chunk.mjs b/dist/NcUserStatusIcon-BF5OEQFU-pJ2xeKbO.chunk.mjs similarity index 97% rename from dist/NcUserStatusIcon-BF5OEQFU-Bh_IaQ_D.chunk.mjs rename to dist/NcUserStatusIcon-BF5OEQFU-pJ2xeKbO.chunk.mjs index 2a56733bf624c..ab7409c20df5e 100644 --- a/dist/NcUserStatusIcon-BF5OEQFU-Bh_IaQ_D.chunk.mjs +++ b/dist/NcUserStatusIcon-BF5OEQFU-pJ2xeKbO.chunk.mjs @@ -1,4 +1,4 @@ -import{c as p}from"./index-CkGt55pS.chunk.mjs";import{g as T}from"./public-C1mLBHT3.chunk.mjs";import{c as g}from"./index-Cp0kcsps.chunk.mjs";import{r as l,f as h,g as q,_ as w,b as s}from"./createElementId-DhjFt1I9-BmyhoOWk.chunk.mjs";import{l as f}from"./logger-D3RVzcfQ-Bt9JRPzn.chunk.mjs";import{b as x,n as m,z as y,o as b,f as D,y as B,h as I,s as S,v as o}from"./Web-DYqXJUev.chunk.mjs";const P=`<!-- +import{c as p}from"./index-CkGt55pS.chunk.mjs";import{g as T}from"./public-C1mLBHT3.chunk.mjs";import{c as g}from"./index-Cp0kcsps.chunk.mjs";import{r as l,f as h,g as q,_ as w,b as s}from"./createElementId-DhjFt1I9-BmyhoOWk.chunk.mjs";import{l as f}from"./logger-D3RVzcfQ-BrUWOyzd.chunk.mjs";import{b as x,n as m,z as y,o as b,f as D,y as B,h as I,s as S,v as o}from"./Web-DYqXJUev.chunk.mjs";const P=`<!-- - SPDX-FileCopyrightText: 2020 Google Inc. - SPDX-License-Identifier: Apache-2.0 --> @@ -44,4 +44,4 @@ import{c as p}from"./index-CkGt55pS.chunk.mjs";import{g as T}from"./public-C1mLB d="m424-296 282-282-56-56-226 226-114-114-56 56 170 170Zm56 216q-83 0-156-31.5T197-197q-54-54-85.5-127T80-480q0-83 31.5-156T197-763q54-54 127-85.5T480-880q83 0 156 31.5T763-763q54 54 85.5 127T880-480q0 83-31.5 156T763-197q-54 54-127 85.5T480-80Z"/> </svg> `;l(h),l(q);function L(a){switch(a){case"away":return s("away");case"busy":return s("busy");case"dnd":return s("do not disturb");case"online":return s("online");case"invisible":return s("invisible");case"offline":return s("offline");default:return a}}const _=["aria-hidden","aria-label","innerHTML"],C=x({__name:"NcUserStatusIcon",props:S({user:{default:void 0},ariaHidden:{type:[Boolean,String],default:!1}},{status:{},statusModifiers:{}}),emits:["update:status"],setup(a){const e=m(a,"status"),i=a,v=o(()=>e.value&&["invisible","offline"].includes(e.value)),n=o(()=>e.value&&(!i.ariaHidden||i.ariaHidden==="false")?s("User status: {status}",{status:L(e.value)}):void 0);y(()=>i.user,async r=>{if(!e.value&&r&&T()?.user_status?.enabled)try{const{data:t}=await p.get(g("/apps/user_status/api/v1/statuses/{user}",{user:r}));e.value=t.ocs?.data?.status}catch(t){f.debug("Error while fetching user status",{error:t})}},{immediate:!0});const c={online:M,away:P,busy:X,dnd:Z,invisible:u,offline:u},d=o(()=>e.value&&c[e.value]);return(r,t)=>e.value?(b(),D("span",{key:0,class:B(["user-status-icon",{"user-status-icon--invisible":v.value}]),"aria-hidden":!n.value||void 0,"aria-label":n.value,role:"img",innerHTML:d.value},null,10,_)):I("",!0)}}),k=w(C,[["__scopeId","data-v-881a79fb"]]);export{k as N,L as g}; -//# sourceMappingURL=NcUserStatusIcon-BF5OEQFU-Bh_IaQ_D.chunk.mjs.map +//# sourceMappingURL=NcUserStatusIcon-BF5OEQFU-pJ2xeKbO.chunk.mjs.map diff --git a/dist/NcUserStatusIcon-BF5OEQFU-Bh_IaQ_D.chunk.mjs.license b/dist/NcUserStatusIcon-BF5OEQFU-pJ2xeKbO.chunk.mjs.license similarity index 100% rename from dist/NcUserStatusIcon-BF5OEQFU-Bh_IaQ_D.chunk.mjs.license rename to dist/NcUserStatusIcon-BF5OEQFU-pJ2xeKbO.chunk.mjs.license diff --git a/dist/NcUserStatusIcon-BF5OEQFU-Bh_IaQ_D.chunk.mjs.map b/dist/NcUserStatusIcon-BF5OEQFU-pJ2xeKbO.chunk.mjs.map similarity index 99% rename from dist/NcUserStatusIcon-BF5OEQFU-Bh_IaQ_D.chunk.mjs.map rename to dist/NcUserStatusIcon-BF5OEQFU-pJ2xeKbO.chunk.mjs.map index de7238b3fee0e..991fcfc777ed1 100644 --- a/dist/NcUserStatusIcon-BF5OEQFU-Bh_IaQ_D.chunk.mjs.map +++ b/dist/NcUserStatusIcon-BF5OEQFU-pJ2xeKbO.chunk.mjs.map @@ -1 +1 @@ -{"version":3,"file":"NcUserStatusIcon-BF5OEQFU-Bh_IaQ_D.chunk.mjs","sources":["../node_modules/@nextcloud/vue/dist/chunks/NcUserStatusIcon-BF5OEQFU.mjs"],"sourcesContent":["import '../assets/NcUserStatusIcon-B3aHoBAd.css';\nimport { defineComponent, useModel, computed, watch, openBlock, createElementBlock, normalizeClass, createCommentVNode, mergeModels } from \"vue\";\nimport axios from \"@nextcloud/axios\";\nimport { getCapabilities } from \"@nextcloud/capabilities\";\nimport { generateOcsUrl } from \"@nextcloud/router\";\nimport { r as register, Q as t52, R as t11, a as t } from \"./_l10n-wdIzZwir.mjs\";\nimport { l as logger } from \"./logger-D3RVzcfQ.mjs\";\nimport { _ as _export_sfc } from \"./_plugin-vue_export-helper-1tPrXgE0.mjs\";\nconst awaySvg = '<!--\\n - SPDX-FileCopyrightText: 2020 Google Inc.\\n - SPDX-License-Identifier: Apache-2.0\\n-->\\n<svg viewBox=\"0 -960 960 960\" width=\"24px\" height=\"24px\" xmlns=\"http://www.w3.org/2000/svg\">\\n\t<path\\n\t\tfill=\"var(--user-status-color-away, var(--color-warning, #C88800))\"\\n\t\td=\"m612-292 56-56-148-148v-184h-80v216l172 172ZM480-80q-83 0-156-31.5T197-197q-54-54-85.5-127T80-480q0-83 31.5-156T197-763q54-54 127-85.5T480-880q83 0 156 31.5T763-763q54 54 85.5 127T880-480q0 83-31.5 156T763-197q-54 54-127 85.5T480-80Z\"/>\\n</svg>\\n';\nconst busySvg = '<!--\\n - SPDX-FileCopyrightText: 2020 Google Inc.\\n - SPDX-License-Identifier: Apache-2.0\\n-->\\n<svg viewBox=\"0 -960 960 960\" width=\"24px\" height=\"24px\" xmlns=\"http://www.w3.org/2000/svg\">\\n\t<path\\n\t\tfill=\"var(--user-status-color-busy, var(--color-error, #DB0606))\"\\n\t\td=\"M480-80q-83 0-156-31.5T197-197q-54-54-85.5-127T80-480q0-83 31.5-156T197-763q54-54 127-85.5T480-880q83 0 156 31.5T763-763q54 54 85.5 127T880-480q0 83-31.5 156T763-197q-54 54-127 85.5T480-80Z\"/>\\n</svg>\\n';\nconst dndSvg = '<!--\\n - SPDX-FileCopyrightText: 2020 Google Inc.\\n - SPDX-License-Identifier: Apache-2.0\\n-->\\n<svg viewBox=\"0 -960 960 960\" width=\"24px\" height=\"24px\" xmlns=\"http://www.w3.org/2000/svg\">\\n\t<path\\n\t\tfill=\"var(--user-status-color-busy, var(--color-error, #DB0606))\"\\n\t\td=\"M280-440h400v-80H280v80ZM480-80q-83 0-156-31.5T197-197q-54-54-85.5-127T80-480q0-83 31.5-156T197-763q54-54 127-85.5T480-880q83 0 156 31.5T763-763q54 54 85.5 127T880-480q0 83-31.5 156T763-197q-54 54-127 85.5T480-80Z\"/>\\n</svg>\\n';\nconst invisibleSvg = '<!--\\n - SPDX-FileCopyrightText: 2020 Google Inc.\\n - SPDX-License-Identifier: Apache-2.0\\n-->\\n<svg viewBox=\"0 -960 960 960\" width=\"24px\" height=\"24px\" xmlns=\"http://www.w3.org/2000/svg\">\\n\t<path\\n\t\tfill=\"var(--user-status-color-offline, var(--color-text-maxcontrast, #6B6B6B))\"\\n\t\td=\"M480-80q-83 0-156-31.5T197-197q-54-54-85.5-127T80-480q0-83 31.5-156T197-763q54-54 127-85.5T480-880q83 0 156 31.5T763-763q54 54 85.5 127T880-480q0 83-31.5 156T763-197q-54 54-127 85.5T480-80Zm0-80q134 0 227-93t93-227q0-134-93-227t-227-93q-134 0-227 93t-93 227q0 134 93 227t227 93Zm0-320Z\"/>\\n</svg>\\n';\nconst onlineSvg = '<!--\\n - SPDX-FileCopyrightText: 2020 Google Inc.\\n - SPDX-License-Identifier: Apache-2.0\\n-->\\n<svg viewBox=\"0 -960 960 960\" width=\"24px\" height=\"24px\" xmlns=\"http://www.w3.org/2000/svg\">\\n\t<path\\n\t\tfill=\"var(--user-status-color-online, var(--color-success, #2D7B41))\"\\n\t\td=\"m424-296 282-282-56-56-226 226-114-114-56 56 170 170Zm56 216q-83 0-156-31.5T197-197q-54-54-85.5-127T80-480q0-83 31.5-156T197-763q54-54 127-85.5T480-880q83 0 156 31.5T763-763q54 54 85.5 127T880-480q0 83-31.5 156T763-197q-54 54-127 85.5T480-80Z\"/>\\n</svg>\\n';\nregister(t52);\nregister(t11);\nfunction getUserStatusText(status) {\n switch (status) {\n case \"away\":\n return t(\"away\");\n // TRANSLATORS: User status if the user is currently away from keyboard\n case \"busy\":\n return t(\"busy\");\n case \"dnd\":\n return t(\"do not disturb\");\n case \"online\":\n return t(\"online\");\n case \"invisible\":\n return t(\"invisible\");\n case \"offline\":\n return t(\"offline\");\n default:\n return status;\n }\n}\nconst _hoisted_1 = [\"aria-hidden\", \"aria-label\", \"innerHTML\"];\nconst _sfc_main = /* @__PURE__ */ defineComponent({\n __name: \"NcUserStatusIcon\",\n props: /* @__PURE__ */ mergeModels({\n user: { default: void 0 },\n ariaHidden: { type: [Boolean, String], default: false }\n }, {\n \"status\": {},\n \"statusModifiers\": {}\n }),\n emits: [\"update:status\"],\n setup(__props) {\n const status = useModel(__props, \"status\");\n const props = __props;\n const isInvisible = computed(() => status.value && [\"invisible\", \"offline\"].includes(status.value));\n const ariaLabel = computed(() => status.value && (!props.ariaHidden || props.ariaHidden === \"false\") ? t(\"User status: {status}\", { status: getUserStatusText(status.value) }) : void 0);\n watch(() => props.user, async (user) => {\n if (!status.value && user && getCapabilities()?.user_status?.enabled) {\n try {\n const { data } = await axios.get(generateOcsUrl(\"/apps/user_status/api/v1/statuses/{user}\", { user }));\n status.value = data.ocs?.data?.status;\n } catch (error) {\n logger.debug(\"Error while fetching user status\", { error });\n }\n }\n }, { immediate: true });\n const matchSvg = {\n online: onlineSvg,\n away: awaySvg,\n busy: busySvg,\n dnd: dndSvg,\n invisible: invisibleSvg,\n offline: invisibleSvg\n };\n const activeSvg = computed(() => status.value && matchSvg[status.value]);\n return (_ctx, _cache) => {\n return status.value ? (openBlock(), createElementBlock(\"span\", {\n key: 0,\n class: normalizeClass([\"user-status-icon\", {\n \"user-status-icon--invisible\": isInvisible.value\n }]),\n \"aria-hidden\": !ariaLabel.value || void 0,\n \"aria-label\": ariaLabel.value,\n role: \"img\",\n innerHTML: activeSvg.value\n }, null, 10, _hoisted_1)) : createCommentVNode(\"\", true);\n };\n }\n});\nconst NcUserStatusIcon = /* @__PURE__ */ _export_sfc(_sfc_main, [[\"__scopeId\", \"data-v-881a79fb\"]]);\nexport {\n NcUserStatusIcon as N,\n getUserStatusText as g\n};\n//# sourceMappingURL=NcUserStatusIcon-BF5OEQFU.mjs.map\n"],"names":["awaySvg","busySvg","dndSvg","invisibleSvg","onlineSvg","register","t52","t11","getUserStatusText","status","t","_hoisted_1","_sfc_main","defineComponent","mergeModels","__props","useModel","props","isInvisible","computed","ariaLabel","watch","user","getCapabilities","data","axios","generateOcsUrl","error","logger","matchSvg","activeSvg","_ctx","_cache","openBlock","createElementBlock","normalizeClass","createCommentVNode","NcUserStatusIcon","_export_sfc"],"mappings":"0YAQA,MAAMA,EAAU;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EACVC,EAAU;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EACVC,EAAS;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EACTC,EAAe;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EACfC,EAAY;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAClBC,EAASC,CAAG,EACZD,EAASE,CAAG,EACZ,SAASC,EAAkBC,EAAQ,CACjC,OAAQA,EAAM,CACZ,IAAK,OACH,OAAOC,EAAE,MAAM,EAEjB,IAAK,OACH,OAAOA,EAAE,MAAM,EACjB,IAAK,MACH,OAAOA,EAAE,gBAAgB,EAC3B,IAAK,SACH,OAAOA,EAAE,QAAQ,EACnB,IAAK,YACH,OAAOA,EAAE,WAAW,EACtB,IAAK,UACH,OAAOA,EAAE,SAAS,EACpB,QACE,OAAOD,CACb,CACA,CACA,MAAME,EAAa,CAAC,cAAe,aAAc,WAAW,EACtDC,EAA4BC,EAAgB,CAChD,OAAQ,mBACR,MAAuBC,EAAY,CACjC,KAAM,CAAE,QAAS,MAAM,EACvB,WAAY,CAAE,KAAM,CAAC,QAAS,MAAM,EAAG,QAAS,EAAK,CACzD,EAAK,CACD,OAAU,CAAA,EACV,gBAAmB,CAAA,CACvB,CAAG,EACD,MAAO,CAAC,eAAe,EACvB,MAAMC,EAAS,CACb,MAAMN,EAASO,EAASD,EAAS,QAAQ,EACnCE,EAAQF,EACRG,EAAcC,EAAS,IAAMV,EAAO,OAAS,CAAC,YAAa,SAAS,EAAE,SAASA,EAAO,KAAK,CAAC,EAC5FW,EAAYD,EAAS,IAAMV,EAAO,QAAU,CAACQ,EAAM,YAAcA,EAAM,aAAe,SAAWP,EAAE,wBAAyB,CAAE,OAAQF,EAAkBC,EAAO,KAAK,EAAG,EAAI,MAAM,EACvLY,EAAM,IAAMJ,EAAM,KAAM,MAAOK,GAAS,CACtC,GAAI,CAACb,EAAO,OAASa,GAAQC,EAAe,GAAI,aAAa,QAC3D,GAAI,CACF,KAAM,CAAE,KAAAC,GAAS,MAAMC,EAAM,IAAIC,EAAe,2CAA4C,CAAE,KAAAJ,CAAI,CAAE,CAAC,EACrGb,EAAO,MAAQe,EAAK,KAAK,MAAM,MACjC,OAASG,EAAO,CACdC,EAAO,MAAM,mCAAoC,CAAE,MAAAD,CAAK,CAAE,CAC5D,CAEJ,EAAG,CAAE,UAAW,GAAM,EACtB,MAAME,EAAW,CACf,OAAQzB,EACR,KAAMJ,EACN,KAAMC,EACN,IAAKC,EACL,UAAWC,EACX,QAASA,CACf,EACU2B,EAAYX,EAAS,IAAMV,EAAO,OAASoB,EAASpB,EAAO,KAAK,CAAC,EACvE,MAAO,CAACsB,EAAMC,IACLvB,EAAO,OAASwB,EAAS,EAAIC,EAAmB,OAAQ,CAC7D,IAAK,EACL,MAAOC,EAAe,CAAC,mBAAoB,CACzC,8BAA+BjB,EAAY,KACrD,CAAS,CAAC,EACF,cAAe,CAACE,EAAU,OAAS,OACnC,aAAcA,EAAU,MACxB,KAAM,MACN,UAAWU,EAAU,KAC7B,EAAS,KAAM,GAAInB,CAAU,GAAKyB,EAAmB,GAAI,EAAI,CAE3D,CACF,CAAC,EACKC,EAAmCC,EAAY1B,EAAW,CAAC,CAAC,YAAa,iBAAiB,CAAC,CAAC","x_google_ignoreList":[0]} \ No newline at end of file +{"version":3,"file":"NcUserStatusIcon-BF5OEQFU-pJ2xeKbO.chunk.mjs","sources":["../node_modules/@nextcloud/vue/dist/chunks/NcUserStatusIcon-BF5OEQFU.mjs"],"sourcesContent":["import '../assets/NcUserStatusIcon-B3aHoBAd.css';\nimport { defineComponent, useModel, computed, watch, openBlock, createElementBlock, normalizeClass, createCommentVNode, mergeModels } from \"vue\";\nimport axios from \"@nextcloud/axios\";\nimport { getCapabilities } from \"@nextcloud/capabilities\";\nimport { generateOcsUrl } from \"@nextcloud/router\";\nimport { r as register, Q as t52, R as t11, a as t } from \"./_l10n-wdIzZwir.mjs\";\nimport { l as logger } from \"./logger-D3RVzcfQ.mjs\";\nimport { _ as _export_sfc } from \"./_plugin-vue_export-helper-1tPrXgE0.mjs\";\nconst awaySvg = '<!--\\n - SPDX-FileCopyrightText: 2020 Google Inc.\\n - SPDX-License-Identifier: Apache-2.0\\n-->\\n<svg viewBox=\"0 -960 960 960\" width=\"24px\" height=\"24px\" xmlns=\"http://www.w3.org/2000/svg\">\\n\t<path\\n\t\tfill=\"var(--user-status-color-away, var(--color-warning, #C88800))\"\\n\t\td=\"m612-292 56-56-148-148v-184h-80v216l172 172ZM480-80q-83 0-156-31.5T197-197q-54-54-85.5-127T80-480q0-83 31.5-156T197-763q54-54 127-85.5T480-880q83 0 156 31.5T763-763q54 54 85.5 127T880-480q0 83-31.5 156T763-197q-54 54-127 85.5T480-80Z\"/>\\n</svg>\\n';\nconst busySvg = '<!--\\n - SPDX-FileCopyrightText: 2020 Google Inc.\\n - SPDX-License-Identifier: Apache-2.0\\n-->\\n<svg viewBox=\"0 -960 960 960\" width=\"24px\" height=\"24px\" xmlns=\"http://www.w3.org/2000/svg\">\\n\t<path\\n\t\tfill=\"var(--user-status-color-busy, var(--color-error, #DB0606))\"\\n\t\td=\"M480-80q-83 0-156-31.5T197-197q-54-54-85.5-127T80-480q0-83 31.5-156T197-763q54-54 127-85.5T480-880q83 0 156 31.5T763-763q54 54 85.5 127T880-480q0 83-31.5 156T763-197q-54 54-127 85.5T480-80Z\"/>\\n</svg>\\n';\nconst dndSvg = '<!--\\n - SPDX-FileCopyrightText: 2020 Google Inc.\\n - SPDX-License-Identifier: Apache-2.0\\n-->\\n<svg viewBox=\"0 -960 960 960\" width=\"24px\" height=\"24px\" xmlns=\"http://www.w3.org/2000/svg\">\\n\t<path\\n\t\tfill=\"var(--user-status-color-busy, var(--color-error, #DB0606))\"\\n\t\td=\"M280-440h400v-80H280v80ZM480-80q-83 0-156-31.5T197-197q-54-54-85.5-127T80-480q0-83 31.5-156T197-763q54-54 127-85.5T480-880q83 0 156 31.5T763-763q54 54 85.5 127T880-480q0 83-31.5 156T763-197q-54 54-127 85.5T480-80Z\"/>\\n</svg>\\n';\nconst invisibleSvg = '<!--\\n - SPDX-FileCopyrightText: 2020 Google Inc.\\n - SPDX-License-Identifier: Apache-2.0\\n-->\\n<svg viewBox=\"0 -960 960 960\" width=\"24px\" height=\"24px\" xmlns=\"http://www.w3.org/2000/svg\">\\n\t<path\\n\t\tfill=\"var(--user-status-color-offline, var(--color-text-maxcontrast, #6B6B6B))\"\\n\t\td=\"M480-80q-83 0-156-31.5T197-197q-54-54-85.5-127T80-480q0-83 31.5-156T197-763q54-54 127-85.5T480-880q83 0 156 31.5T763-763q54 54 85.5 127T880-480q0 83-31.5 156T763-197q-54 54-127 85.5T480-80Zm0-80q134 0 227-93t93-227q0-134-93-227t-227-93q-134 0-227 93t-93 227q0 134 93 227t227 93Zm0-320Z\"/>\\n</svg>\\n';\nconst onlineSvg = '<!--\\n - SPDX-FileCopyrightText: 2020 Google Inc.\\n - SPDX-License-Identifier: Apache-2.0\\n-->\\n<svg viewBox=\"0 -960 960 960\" width=\"24px\" height=\"24px\" xmlns=\"http://www.w3.org/2000/svg\">\\n\t<path\\n\t\tfill=\"var(--user-status-color-online, var(--color-success, #2D7B41))\"\\n\t\td=\"m424-296 282-282-56-56-226 226-114-114-56 56 170 170Zm56 216q-83 0-156-31.5T197-197q-54-54-85.5-127T80-480q0-83 31.5-156T197-763q54-54 127-85.5T480-880q83 0 156 31.5T763-763q54 54 85.5 127T880-480q0 83-31.5 156T763-197q-54 54-127 85.5T480-80Z\"/>\\n</svg>\\n';\nregister(t52);\nregister(t11);\nfunction getUserStatusText(status) {\n switch (status) {\n case \"away\":\n return t(\"away\");\n // TRANSLATORS: User status if the user is currently away from keyboard\n case \"busy\":\n return t(\"busy\");\n case \"dnd\":\n return t(\"do not disturb\");\n case \"online\":\n return t(\"online\");\n case \"invisible\":\n return t(\"invisible\");\n case \"offline\":\n return t(\"offline\");\n default:\n return status;\n }\n}\nconst _hoisted_1 = [\"aria-hidden\", \"aria-label\", \"innerHTML\"];\nconst _sfc_main = /* @__PURE__ */ defineComponent({\n __name: \"NcUserStatusIcon\",\n props: /* @__PURE__ */ mergeModels({\n user: { default: void 0 },\n ariaHidden: { type: [Boolean, String], default: false }\n }, {\n \"status\": {},\n \"statusModifiers\": {}\n }),\n emits: [\"update:status\"],\n setup(__props) {\n const status = useModel(__props, \"status\");\n const props = __props;\n const isInvisible = computed(() => status.value && [\"invisible\", \"offline\"].includes(status.value));\n const ariaLabel = computed(() => status.value && (!props.ariaHidden || props.ariaHidden === \"false\") ? t(\"User status: {status}\", { status: getUserStatusText(status.value) }) : void 0);\n watch(() => props.user, async (user) => {\n if (!status.value && user && getCapabilities()?.user_status?.enabled) {\n try {\n const { data } = await axios.get(generateOcsUrl(\"/apps/user_status/api/v1/statuses/{user}\", { user }));\n status.value = data.ocs?.data?.status;\n } catch (error) {\n logger.debug(\"Error while fetching user status\", { error });\n }\n }\n }, { immediate: true });\n const matchSvg = {\n online: onlineSvg,\n away: awaySvg,\n busy: busySvg,\n dnd: dndSvg,\n invisible: invisibleSvg,\n offline: invisibleSvg\n };\n const activeSvg = computed(() => status.value && matchSvg[status.value]);\n return (_ctx, _cache) => {\n return status.value ? (openBlock(), createElementBlock(\"span\", {\n key: 0,\n class: normalizeClass([\"user-status-icon\", {\n \"user-status-icon--invisible\": isInvisible.value\n }]),\n \"aria-hidden\": !ariaLabel.value || void 0,\n \"aria-label\": ariaLabel.value,\n role: \"img\",\n innerHTML: activeSvg.value\n }, null, 10, _hoisted_1)) : createCommentVNode(\"\", true);\n };\n }\n});\nconst NcUserStatusIcon = /* @__PURE__ */ _export_sfc(_sfc_main, [[\"__scopeId\", \"data-v-881a79fb\"]]);\nexport {\n NcUserStatusIcon as N,\n getUserStatusText as g\n};\n//# sourceMappingURL=NcUserStatusIcon-BF5OEQFU.mjs.map\n"],"names":["awaySvg","busySvg","dndSvg","invisibleSvg","onlineSvg","register","t52","t11","getUserStatusText","status","t","_hoisted_1","_sfc_main","defineComponent","mergeModels","__props","useModel","props","isInvisible","computed","ariaLabel","watch","user","getCapabilities","data","axios","generateOcsUrl","error","logger","matchSvg","activeSvg","_ctx","_cache","openBlock","createElementBlock","normalizeClass","createCommentVNode","NcUserStatusIcon","_export_sfc"],"mappings":"0YAQA,MAAMA,EAAU;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EACVC,EAAU;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EACVC,EAAS;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EACTC,EAAe;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EACfC,EAAY;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAClBC,EAASC,CAAG,EACZD,EAASE,CAAG,EACZ,SAASC,EAAkBC,EAAQ,CACjC,OAAQA,EAAM,CACZ,IAAK,OACH,OAAOC,EAAE,MAAM,EAEjB,IAAK,OACH,OAAOA,EAAE,MAAM,EACjB,IAAK,MACH,OAAOA,EAAE,gBAAgB,EAC3B,IAAK,SACH,OAAOA,EAAE,QAAQ,EACnB,IAAK,YACH,OAAOA,EAAE,WAAW,EACtB,IAAK,UACH,OAAOA,EAAE,SAAS,EACpB,QACE,OAAOD,CACb,CACA,CACA,MAAME,EAAa,CAAC,cAAe,aAAc,WAAW,EACtDC,EAA4BC,EAAgB,CAChD,OAAQ,mBACR,MAAuBC,EAAY,CACjC,KAAM,CAAE,QAAS,MAAM,EACvB,WAAY,CAAE,KAAM,CAAC,QAAS,MAAM,EAAG,QAAS,EAAK,CACzD,EAAK,CACD,OAAU,CAAA,EACV,gBAAmB,CAAA,CACvB,CAAG,EACD,MAAO,CAAC,eAAe,EACvB,MAAMC,EAAS,CACb,MAAMN,EAASO,EAASD,EAAS,QAAQ,EACnCE,EAAQF,EACRG,EAAcC,EAAS,IAAMV,EAAO,OAAS,CAAC,YAAa,SAAS,EAAE,SAASA,EAAO,KAAK,CAAC,EAC5FW,EAAYD,EAAS,IAAMV,EAAO,QAAU,CAACQ,EAAM,YAAcA,EAAM,aAAe,SAAWP,EAAE,wBAAyB,CAAE,OAAQF,EAAkBC,EAAO,KAAK,EAAG,EAAI,MAAM,EACvLY,EAAM,IAAMJ,EAAM,KAAM,MAAOK,GAAS,CACtC,GAAI,CAACb,EAAO,OAASa,GAAQC,EAAe,GAAI,aAAa,QAC3D,GAAI,CACF,KAAM,CAAE,KAAAC,GAAS,MAAMC,EAAM,IAAIC,EAAe,2CAA4C,CAAE,KAAAJ,CAAI,CAAE,CAAC,EACrGb,EAAO,MAAQe,EAAK,KAAK,MAAM,MACjC,OAASG,EAAO,CACdC,EAAO,MAAM,mCAAoC,CAAE,MAAAD,CAAK,CAAE,CAC5D,CAEJ,EAAG,CAAE,UAAW,GAAM,EACtB,MAAME,EAAW,CACf,OAAQzB,EACR,KAAMJ,EACN,KAAMC,EACN,IAAKC,EACL,UAAWC,EACX,QAASA,CACf,EACU2B,EAAYX,EAAS,IAAMV,EAAO,OAASoB,EAASpB,EAAO,KAAK,CAAC,EACvE,MAAO,CAACsB,EAAMC,IACLvB,EAAO,OAASwB,EAAS,EAAIC,EAAmB,OAAQ,CAC7D,IAAK,EACL,MAAOC,EAAe,CAAC,mBAAoB,CACzC,8BAA+BjB,EAAY,KACrD,CAAS,CAAC,EACF,cAAe,CAACE,EAAU,OAAS,OACnC,aAAcA,EAAU,MACxB,KAAM,MACN,UAAWU,EAAU,KAC7B,EAAS,KAAM,GAAInB,CAAU,GAAKyB,EAAmB,GAAI,EAAI,CAE3D,CACF,CAAC,EACKC,EAAmCC,EAAY1B,EAAW,CAAC,CAAC,YAAa,iBAAiB,CAAC,CAAC","x_google_ignoreList":[0]} \ No newline at end of file diff --git a/dist/NcUserStatusIcon-BF5OEQFU-Bh_IaQ_D.chunk.mjs.map.license b/dist/NcUserStatusIcon-BF5OEQFU-pJ2xeKbO.chunk.mjs.map.license similarity index 100% rename from dist/NcUserStatusIcon-BF5OEQFU-Bh_IaQ_D.chunk.mjs.map.license rename to dist/NcUserStatusIcon-BF5OEQFU-pJ2xeKbO.chunk.mjs.map.license diff --git a/dist/PencilOutline-DhyEf5vr.chunk.mjs b/dist/PencilOutline-CA_ZiZlA.chunk.mjs similarity index 96% rename from dist/PencilOutline-DhyEf5vr.chunk.mjs rename to dist/PencilOutline-CA_ZiZlA.chunk.mjs index 7509cd1ae5e6b..ecfd612ad7e54 100644 --- a/dist/PencilOutline-DhyEf5vr.chunk.mjs +++ b/dist/PencilOutline-CA_ZiZlA.chunk.mjs @@ -1,2 +1,2 @@ -import{n as y,e as f}from"./logger-D3RVzcfQ-Bt9JRPzn.chunk.mjs";import{_ as k,N as g}from"./createElementId-DhjFt1I9-BmyhoOWk.chunk.mjs";import{x as C,e as x}from"./NcModal-DiDvgcU8-7_SNLMd-.chunk.mjs";import{r as _,o as i,f as a,g as c,i as v,O as V,y as d,t as l,h as o,c as h,m as p}from"./Web-DYqXJUev.chunk.mjs";import{_ as L}from"./public-C1mLBHT3.chunk.mjs";const S={beforeUpdate(){this.text=this.getText()},data(){return{text:this.getText()}},computed:{isLongText(){return this.text&&this.text.trim().length>20}},methods:{getText(){return this.$slots.default?.()[0].children?.trim?.()||""}}},I={mixins:[S],props:{icon:{type:String,default:""},name:{type:String,default:""},title:{type:String,default:""},closeAfterClick:{type:Boolean,default:!1},ariaLabel:{type:String,default:null}},inject:{closeMenu:{from:C}},emits:["click"],created(){"ariaHidden"in this.$attrs},computed:{isIconUrl(){try{return!!new URL(this.icon,this.icon.startsWith("/")?window.location.origin:void 0)}catch{return!1}}},methods:{onClick(t){this.$emit("click",t),this.closeAfterClick&&this.closeMenu(!1)}}},M={name:"NcActionButton",components:{NcIconSvgWrapper:g},mixins:[I],inject:{isInSemanticMenu:{from:x,default:!1}},props:{disabled:{type:Boolean,default:!1},isMenu:{type:Boolean,default:!1},type:{type:String,default:"button",validator:t=>["button","checkbox","radio","reset","submit"].includes(t)},modelValue:{type:[Boolean,String],default:null},value:{type:String,default:null},description:{type:String,default:""}},emits:["update:modelValue"],setup(){return{mdiCheck:f,mdiChevronRight:y}},computed:{isFocusable(){return!this.disabled},isChecked(){return this.type==="radio"&&typeof this.modelValue!="boolean"?this.modelValue===this.value:this.modelValue},nativeType(){return this.type==="submit"||this.type==="reset"?this.type:"button"},buttonAttributes(){const t={};return this.isInSemanticMenu?(t.role="menuitem",this.type==="radio"?(t.role="menuitemradio",t["aria-checked"]=this.isChecked?"true":"false"):(this.type==="checkbox"||this.nativeType==="button"&&this.modelValue!==null)&&(t.role="menuitemcheckbox",t["aria-checked"]=this.modelValue===null?"mixed":this.modelValue?"true":"false")):this.modelValue!==null&&this.nativeType==="button"&&(t["aria-pressed"]=this.modelValue?"true":"false"),t}},methods:{handleClick(t){this.onClick(t),(this.modelValue!==null||this.type!=="button")&&(this.type==="radio"?typeof this.modelValue!="boolean"?this.isChecked||this.$emit("update:modelValue",this.value):this.$emit("update:modelValue",!this.isChecked):this.$emit("update:modelValue",!this.isChecked))}}},$=["role"],T=["aria-label","disabled","title","type"],w={class:"action-button__longtext-wrapper"},A={key:0,class:"action-button__name"},B=["textContent"],N={key:2,class:"action-button__text"},U=["textContent"],z={key:2,class:"action-button__pressed-icon material-design-icon"};function H(t,s,e,u,m,n){const r=_("NcIconSvgWrapper");return i(),a("li",{class:d(["action",{"action--disabled":e.disabled}]),role:n.isInSemanticMenu&&"presentation"},[c("button",p({"aria-label":t.ariaLabel,class:["action-button button-vue",{"action-button--active":n.isChecked,focusable:n.isFocusable}],disabled:e.disabled,title:t.title,type:n.nativeType},n.buttonAttributes,{onClick:s[0]||(s[0]=(...b)=>n.handleClick&&n.handleClick(...b))}),[v(t.$slots,"icon",{},()=>[c("span",{class:d([[t.isIconUrl?"action-button__icon--url":t.icon],"action-button__icon"]),style:V({backgroundImage:t.isIconUrl?`url(${t.icon})`:null}),"aria-hidden":"true"},null,6)],!0),c("span",w,[t.name?(i(),a("strong",A,l(t.name),1)):o("",!0),t.isLongText?(i(),a("span",{key:1,class:"action-button__longtext",textContent:l(t.text)},null,8,B)):(i(),a("span",N,l(t.text),1)),e.description?(i(),a("span",{key:3,class:"action-button__description",textContent:l(e.description)},null,8,U)):o("",!0)]),e.isMenu?(i(),h(r,{key:0,class:"action-button__menu-icon",directional:"",path:u.mdiChevronRight},null,8,["path"])):n.isChecked?(i(),h(r,{key:1,path:u.mdiCheck,class:"action-button__pressed-icon"},null,8,["path"])):n.isChecked===!1?(i(),a("span",z)):o("",!0),o("",!0)],16,T)],10,$)}const J=k(M,[["render",H],["__scopeId","data-v-6c2daf4e"]]),R={name:"PencilOutlineIcon",emits:["click"],props:{title:{type:String},fillColor:{type:String,default:"currentColor"},size:{type:Number,default:24}}},W=["aria-hidden","aria-label"],j=["fill","width","height"],F={d:"M14.06,9L15,9.94L5.92,19H5V18.08L14.06,9M17.66,3C17.41,3 17.15,3.1 16.96,3.29L15.13,5.12L18.88,8.87L20.71,7.04C21.1,6.65 21.1,6 20.71,5.63L18.37,3.29C18.17,3.09 17.92,3 17.66,3M14.06,6.19L3,17.25V21H6.75L17.81,9.94L14.06,6.19Z"},O={key:0};function P(t,s,e,u,m,n){return i(),a("span",p(t.$attrs,{"aria-hidden":e.title?null:"true","aria-label":e.title,class:"material-design-icon pencil-outline-icon",role:"img",onClick:s[0]||(s[0]=r=>t.$emit("click",r))}),[(i(),a("svg",{fill:e.fillColor,class:"material-design-icon__svg",width:e.size,height:e.size,viewBox:"0 0 24 24"},[c("path",F,[e.title?(i(),a("title",O,l(e.title),1)):o("",!0)])],8,j))],16,W)}const K=L(R,[["render",P]]);export{I as A,J as N,K as P,S as a}; -//# sourceMappingURL=PencilOutline-DhyEf5vr.chunk.mjs.map +import{n as y,e as f}from"./logger-D3RVzcfQ-BrUWOyzd.chunk.mjs";import{_ as k,N as g}from"./createElementId-DhjFt1I9-BmyhoOWk.chunk.mjs";import{x as C,e as x}from"./NcModal-DiDvgcU8-Cb_C64qI.chunk.mjs";import{r as _,o as i,f as a,g as c,i as v,O as V,y as d,t as l,h as o,c as h,m as p}from"./Web-DYqXJUev.chunk.mjs";import{_ as L}from"./public-C1mLBHT3.chunk.mjs";const S={beforeUpdate(){this.text=this.getText()},data(){return{text:this.getText()}},computed:{isLongText(){return this.text&&this.text.trim().length>20}},methods:{getText(){return this.$slots.default?.()[0].children?.trim?.()||""}}},I={mixins:[S],props:{icon:{type:String,default:""},name:{type:String,default:""},title:{type:String,default:""},closeAfterClick:{type:Boolean,default:!1},ariaLabel:{type:String,default:null}},inject:{closeMenu:{from:C}},emits:["click"],created(){"ariaHidden"in this.$attrs},computed:{isIconUrl(){try{return!!new URL(this.icon,this.icon.startsWith("/")?window.location.origin:void 0)}catch{return!1}}},methods:{onClick(t){this.$emit("click",t),this.closeAfterClick&&this.closeMenu(!1)}}},M={name:"NcActionButton",components:{NcIconSvgWrapper:g},mixins:[I],inject:{isInSemanticMenu:{from:x,default:!1}},props:{disabled:{type:Boolean,default:!1},isMenu:{type:Boolean,default:!1},type:{type:String,default:"button",validator:t=>["button","checkbox","radio","reset","submit"].includes(t)},modelValue:{type:[Boolean,String],default:null},value:{type:String,default:null},description:{type:String,default:""}},emits:["update:modelValue"],setup(){return{mdiCheck:f,mdiChevronRight:y}},computed:{isFocusable(){return!this.disabled},isChecked(){return this.type==="radio"&&typeof this.modelValue!="boolean"?this.modelValue===this.value:this.modelValue},nativeType(){return this.type==="submit"||this.type==="reset"?this.type:"button"},buttonAttributes(){const t={};return this.isInSemanticMenu?(t.role="menuitem",this.type==="radio"?(t.role="menuitemradio",t["aria-checked"]=this.isChecked?"true":"false"):(this.type==="checkbox"||this.nativeType==="button"&&this.modelValue!==null)&&(t.role="menuitemcheckbox",t["aria-checked"]=this.modelValue===null?"mixed":this.modelValue?"true":"false")):this.modelValue!==null&&this.nativeType==="button"&&(t["aria-pressed"]=this.modelValue?"true":"false"),t}},methods:{handleClick(t){this.onClick(t),(this.modelValue!==null||this.type!=="button")&&(this.type==="radio"?typeof this.modelValue!="boolean"?this.isChecked||this.$emit("update:modelValue",this.value):this.$emit("update:modelValue",!this.isChecked):this.$emit("update:modelValue",!this.isChecked))}}},$=["role"],T=["aria-label","disabled","title","type"],w={class:"action-button__longtext-wrapper"},A={key:0,class:"action-button__name"},B=["textContent"],N={key:2,class:"action-button__text"},U=["textContent"],z={key:2,class:"action-button__pressed-icon material-design-icon"};function H(t,s,e,u,m,n){const r=_("NcIconSvgWrapper");return i(),a("li",{class:d(["action",{"action--disabled":e.disabled}]),role:n.isInSemanticMenu&&"presentation"},[c("button",p({"aria-label":t.ariaLabel,class:["action-button button-vue",{"action-button--active":n.isChecked,focusable:n.isFocusable}],disabled:e.disabled,title:t.title,type:n.nativeType},n.buttonAttributes,{onClick:s[0]||(s[0]=(...b)=>n.handleClick&&n.handleClick(...b))}),[v(t.$slots,"icon",{},()=>[c("span",{class:d([[t.isIconUrl?"action-button__icon--url":t.icon],"action-button__icon"]),style:V({backgroundImage:t.isIconUrl?`url(${t.icon})`:null}),"aria-hidden":"true"},null,6)],!0),c("span",w,[t.name?(i(),a("strong",A,l(t.name),1)):o("",!0),t.isLongText?(i(),a("span",{key:1,class:"action-button__longtext",textContent:l(t.text)},null,8,B)):(i(),a("span",N,l(t.text),1)),e.description?(i(),a("span",{key:3,class:"action-button__description",textContent:l(e.description)},null,8,U)):o("",!0)]),e.isMenu?(i(),h(r,{key:0,class:"action-button__menu-icon",directional:"",path:u.mdiChevronRight},null,8,["path"])):n.isChecked?(i(),h(r,{key:1,path:u.mdiCheck,class:"action-button__pressed-icon"},null,8,["path"])):n.isChecked===!1?(i(),a("span",z)):o("",!0),o("",!0)],16,T)],10,$)}const J=k(M,[["render",H],["__scopeId","data-v-6c2daf4e"]]),R={name:"PencilOutlineIcon",emits:["click"],props:{title:{type:String},fillColor:{type:String,default:"currentColor"},size:{type:Number,default:24}}},W=["aria-hidden","aria-label"],j=["fill","width","height"],F={d:"M14.06,9L15,9.94L5.92,19H5V18.08L14.06,9M17.66,3C17.41,3 17.15,3.1 16.96,3.29L15.13,5.12L18.88,8.87L20.71,7.04C21.1,6.65 21.1,6 20.71,5.63L18.37,3.29C18.17,3.09 17.92,3 17.66,3M14.06,6.19L3,17.25V21H6.75L17.81,9.94L14.06,6.19Z"},O={key:0};function P(t,s,e,u,m,n){return i(),a("span",p(t.$attrs,{"aria-hidden":e.title?null:"true","aria-label":e.title,class:"material-design-icon pencil-outline-icon",role:"img",onClick:s[0]||(s[0]=r=>t.$emit("click",r))}),[(i(),a("svg",{fill:e.fillColor,class:"material-design-icon__svg",width:e.size,height:e.size,viewBox:"0 0 24 24"},[c("path",F,[e.title?(i(),a("title",O,l(e.title),1)):o("",!0)])],8,j))],16,W)}const K=L(R,[["render",P]]);export{I as A,J as N,K as P,S as a}; +//# sourceMappingURL=PencilOutline-CA_ZiZlA.chunk.mjs.map diff --git a/dist/PencilOutline-DhyEf5vr.chunk.mjs.license b/dist/PencilOutline-CA_ZiZlA.chunk.mjs.license similarity index 100% rename from dist/PencilOutline-DhyEf5vr.chunk.mjs.license rename to dist/PencilOutline-CA_ZiZlA.chunk.mjs.license diff --git a/dist/PencilOutline-DhyEf5vr.chunk.mjs.map b/dist/PencilOutline-CA_ZiZlA.chunk.mjs.map similarity index 99% rename from dist/PencilOutline-DhyEf5vr.chunk.mjs.map rename to dist/PencilOutline-CA_ZiZlA.chunk.mjs.map index e3de2d3ec925b..de7674cddda95 100644 --- a/dist/PencilOutline-DhyEf5vr.chunk.mjs.map +++ b/dist/PencilOutline-CA_ZiZlA.chunk.mjs.map @@ -1 +1 @@ -{"version":3,"file":"PencilOutline-DhyEf5vr.chunk.mjs","sources":["../node_modules/@nextcloud/vue/dist/chunks/actionGlobal-BZFdtdJL.mjs","../node_modules/@nextcloud/vue/dist/chunks/actionText-BXR0sWNu.mjs","../node_modules/@nextcloud/vue/dist/chunks/NcActionButton-BO5T5ePT.mjs","../node_modules/vue-material-design-icons/PencilOutline.vue"],"sourcesContent":["const ActionGlobalMixin = {\n beforeUpdate() {\n this.text = this.getText();\n },\n data() {\n return {\n // $slots are not reactive.\n // We need to update the content manually\n text: this.getText()\n };\n },\n computed: {\n isLongText() {\n return this.text && this.text.trim().length > 20;\n }\n },\n methods: {\n getText() {\n return this.$slots.default?.()[0].children?.trim?.() || \"\";\n }\n }\n};\nexport {\n ActionGlobalMixin as A\n};\n//# sourceMappingURL=actionGlobal-BZFdtdJL.mjs.map\n","import { warn } from \"vue\";\nimport { N as NC_ACTIONS_CLOSE_MENU } from \"./useNcActions-BzPO2c4h.mjs\";\nimport { A as ActionGlobalMixin } from \"./actionGlobal-BZFdtdJL.mjs\";\nconst ActionTextMixin = {\n mixins: [ActionGlobalMixin],\n props: {\n /**\n * Icon to show with the action, can be either a CSS class or an URL\n */\n icon: {\n type: String,\n default: \"\"\n },\n /**\n * The main text content of the entry.\n */\n name: {\n type: String,\n default: \"\"\n },\n /**\n * The title attribute of the element.\n */\n title: {\n type: String,\n default: \"\"\n },\n /**\n * Whether we close the Actions menu after the click\n */\n closeAfterClick: {\n type: Boolean,\n default: false\n },\n /**\n * Aria label for the button. Not needed if the button has text.\n */\n ariaLabel: {\n type: String,\n default: null\n }\n },\n inject: {\n closeMenu: {\n from: NC_ACTIONS_CLOSE_MENU\n }\n },\n emits: [\n \"click\"\n ],\n created() {\n if (\"ariaHidden\" in this.$attrs) {\n warn(\"[NcAction*]: Do not set the ariaHidden attribute as the root element will inherit the incorrect aria-hidden.\");\n }\n },\n computed: {\n /**\n * Check if icon prop is an URL\n *\n * @return {boolean} Whether the icon prop is an URL\n */\n isIconUrl() {\n try {\n return !!new URL(this.icon, this.icon.startsWith(\"/\") ? window.location.origin : void 0);\n } catch {\n return false;\n }\n }\n },\n methods: {\n onClick(event) {\n this.$emit(\"click\", event);\n if (this.closeAfterClick) {\n this.closeMenu(false);\n }\n }\n }\n};\nexport {\n ActionTextMixin as A\n};\n//# sourceMappingURL=actionText-BXR0sWNu.mjs.map\n","import '../assets/NcActionButton-DLer-aUY.css';\nimport { c as mdiChevronRight, d as mdiCheck } from \"./mdi-CpchYUUV.mjs\";\nimport { N as NcIconSvgWrapper } from \"./NcIconSvgWrapper-g8ubWhoz.mjs\";\nimport { A as ActionTextMixin } from \"./actionText-BXR0sWNu.mjs\";\nimport { a as NC_ACTIONS_IS_SEMANTIC_MENU } from \"./useNcActions-BzPO2c4h.mjs\";\nimport { resolveComponent, openBlock, createElementBlock, normalizeClass, createElementVNode, mergeProps, renderSlot, normalizeStyle, toDisplayString, createCommentVNode, createBlock } from \"vue\";\nimport { _ as _export_sfc } from \"./_plugin-vue_export-helper-1tPrXgE0.mjs\";\nconst _sfc_main = {\n name: \"NcActionButton\",\n components: {\n NcIconSvgWrapper\n },\n mixins: [ActionTextMixin],\n inject: {\n isInSemanticMenu: {\n from: NC_ACTIONS_IS_SEMANTIC_MENU,\n default: false\n }\n },\n props: {\n /**\n * disabled state of the action button\n */\n disabled: {\n type: Boolean,\n default: false\n },\n /**\n * If this is a menu, a chevron icon will\n * be added at the end of the line\n */\n isMenu: {\n type: Boolean,\n default: false\n },\n /**\n * The button's behavior, by default the button acts like a normal button with optional toggle button behavior if `modelValue` is `true` or `false`.\n * But you can also set to checkbox button behavior with tri-state or radio button like behavior.\n * This extends the native HTML button type attribute.\n */\n type: {\n type: String,\n default: \"button\",\n validator: (behavior) => [\"button\", \"checkbox\", \"radio\", \"reset\", \"submit\"].includes(behavior)\n },\n /**\n * The buttons state if `type` is 'checkbox' or 'radio' (meaning if it is pressed / selected).\n * For checkbox and toggle button behavior - boolean value.\n * For radio button behavior - could be a boolean checked or a string with the value of the button.\n * Note: Unlike native radio buttons, NcActionButton are not grouped by name, so you need to connect them by bind correct modelValue.\n *\n * **This is not availabe for `type='submit'` or `type='reset'`**\n *\n * If using `type='checkbox'` a `model-value` of `true` means checked, `false` means unchecked and `null` means indeterminate (tri-state)\n * For `type='radio'` `null` is equal to `false`\n */\n modelValue: {\n type: [Boolean, String],\n default: null\n },\n /**\n * The value used for the `modelValue` when this component is used with radio behavior\n * Similar to the `value` attribute of `<input type=\"radio\">`\n */\n value: {\n type: String,\n default: null\n },\n /**\n * Small underlying text content of the entry\n */\n description: {\n type: String,\n default: \"\"\n }\n },\n emits: [\"update:modelValue\"],\n setup() {\n return {\n mdiCheck,\n mdiChevronRight\n };\n },\n computed: {\n /**\n * determines if the action is focusable\n *\n * @return {boolean} is the action focusable ?\n */\n isFocusable() {\n return !this.disabled;\n },\n /**\n * The current \"checked\" or \"pressed\" state for the model behavior\n */\n isChecked() {\n if (this.type === \"radio\" && typeof this.modelValue !== \"boolean\") {\n return this.modelValue === this.value;\n }\n return this.modelValue;\n },\n /**\n * The native HTML type to set on the button\n */\n nativeType() {\n if (this.type === \"submit\" || this.type === \"reset\") {\n return this.type;\n }\n return \"button\";\n },\n /**\n * HTML attributes to bind to the <button>\n */\n buttonAttributes() {\n const attributes = {};\n if (this.isInSemanticMenu) {\n attributes.role = \"menuitem\";\n if (this.type === \"radio\") {\n attributes.role = \"menuitemradio\";\n attributes[\"aria-checked\"] = this.isChecked ? \"true\" : \"false\";\n } else if (this.type === \"checkbox\" || this.nativeType === \"button\" && this.modelValue !== null) {\n attributes.role = \"menuitemcheckbox\";\n attributes[\"aria-checked\"] = this.modelValue === null ? \"mixed\" : this.modelValue ? \"true\" : \"false\";\n }\n } else if (this.modelValue !== null && this.nativeType === \"button\") {\n attributes[\"aria-pressed\"] = this.modelValue ? \"true\" : \"false\";\n }\n return attributes;\n }\n },\n methods: {\n /**\n * Forward click event, let mixin handle the close-after-click and emit new modelValue if needed\n *\n * @param {MouseEvent} event - The click event\n */\n handleClick(event) {\n this.onClick(event);\n if (this.modelValue !== null || this.type !== \"button\") {\n if (this.type === \"radio\") {\n if (typeof this.modelValue !== \"boolean\") {\n if (!this.isChecked) {\n this.$emit(\"update:modelValue\", this.value);\n }\n } else {\n this.$emit(\"update:modelValue\", !this.isChecked);\n }\n } else {\n this.$emit(\"update:modelValue\", !this.isChecked);\n }\n }\n }\n }\n};\nconst _hoisted_1 = [\"role\"];\nconst _hoisted_2 = [\"aria-label\", \"disabled\", \"title\", \"type\"];\nconst _hoisted_3 = { class: \"action-button__longtext-wrapper\" };\nconst _hoisted_4 = {\n key: 0,\n class: \"action-button__name\"\n};\nconst _hoisted_5 = [\"textContent\"];\nconst _hoisted_6 = {\n key: 2,\n class: \"action-button__text\"\n};\nconst _hoisted_7 = [\"textContent\"];\nconst _hoisted_8 = {\n key: 2,\n class: \"action-button__pressed-icon material-design-icon\"\n};\nfunction _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {\n const _component_NcIconSvgWrapper = resolveComponent(\"NcIconSvgWrapper\");\n return openBlock(), createElementBlock(\"li\", {\n class: normalizeClass([\"action\", { \"action--disabled\": $props.disabled }]),\n role: $options.isInSemanticMenu && \"presentation\"\n }, [\n createElementVNode(\"button\", mergeProps({\n \"aria-label\": _ctx.ariaLabel,\n class: [\"action-button button-vue\", {\n \"action-button--active\": $options.isChecked,\n focusable: $options.isFocusable\n }],\n disabled: $props.disabled,\n title: _ctx.title,\n type: $options.nativeType\n }, $options.buttonAttributes, {\n onClick: _cache[0] || (_cache[0] = (...args) => $options.handleClick && $options.handleClick(...args))\n }), [\n renderSlot(_ctx.$slots, \"icon\", {}, () => [\n createElementVNode(\"span\", {\n class: normalizeClass([[_ctx.isIconUrl ? \"action-button__icon--url\" : _ctx.icon], \"action-button__icon\"]),\n style: normalizeStyle({ backgroundImage: _ctx.isIconUrl ? `url(${_ctx.icon})` : null }),\n \"aria-hidden\": \"true\"\n }, null, 6)\n ], true),\n createElementVNode(\"span\", _hoisted_3, [\n _ctx.name ? (openBlock(), createElementBlock(\"strong\", _hoisted_4, toDisplayString(_ctx.name), 1)) : createCommentVNode(\"\", true),\n _ctx.isLongText ? (openBlock(), createElementBlock(\"span\", {\n key: 1,\n class: \"action-button__longtext\",\n textContent: toDisplayString(_ctx.text)\n }, null, 8, _hoisted_5)) : (openBlock(), createElementBlock(\"span\", _hoisted_6, toDisplayString(_ctx.text), 1)),\n $props.description ? (openBlock(), createElementBlock(\"span\", {\n key: 3,\n class: \"action-button__description\",\n textContent: toDisplayString($props.description)\n }, null, 8, _hoisted_7)) : createCommentVNode(\"\", true)\n ]),\n $props.isMenu ? (openBlock(), createBlock(_component_NcIconSvgWrapper, {\n key: 0,\n class: \"action-button__menu-icon\",\n directional: \"\",\n path: $setup.mdiChevronRight\n }, null, 8, [\"path\"])) : $options.isChecked ? (openBlock(), createBlock(_component_NcIconSvgWrapper, {\n key: 1,\n path: $setup.mdiCheck,\n class: \"action-button__pressed-icon\"\n }, null, 8, [\"path\"])) : $options.isChecked === false ? (openBlock(), createElementBlock(\"span\", _hoisted_8)) : createCommentVNode(\"\", true),\n createCommentVNode(\"\", true)\n ], 16, _hoisted_2)\n ], 10, _hoisted_1);\n}\nconst NcActionButton = /* @__PURE__ */ _export_sfc(_sfc_main, [[\"render\", _sfc_render], [\"__scopeId\", \"data-v-6c2daf4e\"]]);\nexport {\n NcActionButton as N\n};\n//# sourceMappingURL=NcActionButton-BO5T5ePT.mjs.map\n","<template>\n <span v-bind=\"$attrs\"\n :aria-hidden=\"title ? null : 'true'\"\n :aria-label=\"title\"\n class=\"material-design-icon pencil-outline-icon\"\n role=\"img\"\n @click=\"$emit('click', $event)\">\n <svg :fill=\"fillColor\"\n class=\"material-design-icon__svg\"\n :width=\"size\"\n :height=\"size\"\n viewBox=\"0 0 24 24\">\n <path d=\"M14.06,9L15,9.94L5.92,19H5V18.08L14.06,9M17.66,3C17.41,3 17.15,3.1 16.96,3.29L15.13,5.12L18.88,8.87L20.71,7.04C21.1,6.65 21.1,6 20.71,5.63L18.37,3.29C18.17,3.09 17.92,3 17.66,3M14.06,6.19L3,17.25V21H6.75L17.81,9.94L14.06,6.19Z\">\n <title v-if=\"title\">{{ title }}\n \n \n \n\n\n"],"names":["ActionGlobalMixin","ActionTextMixin","NC_ACTIONS_CLOSE_MENU","event","_sfc_main","NcIconSvgWrapper","NC_ACTIONS_IS_SEMANTIC_MENU","behavior","mdiCheck","mdiChevronRight","attributes","_hoisted_1","_hoisted_2","_hoisted_3","_hoisted_4","_hoisted_5","_hoisted_6","_hoisted_7","_hoisted_8","_sfc_render","_ctx","_cache","$props","$setup","$data","$options","_component_NcIconSvgWrapper","resolveComponent","openBlock","createElementBlock","normalizeClass","createElementVNode","mergeProps","args","renderSlot","normalizeStyle","toDisplayString","createCommentVNode","createBlock","NcActionButton","_export_sfc","_createElementBlock","_mergeProps","$event","_createElementVNode","_openBlock"],"mappings":"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","x_google_ignoreList":[0,1,2,3]} \ No newline at end of file +{"version":3,"file":"PencilOutline-CA_ZiZlA.chunk.mjs","sources":["../node_modules/@nextcloud/vue/dist/chunks/actionGlobal-BZFdtdJL.mjs","../node_modules/@nextcloud/vue/dist/chunks/actionText-BXR0sWNu.mjs","../node_modules/@nextcloud/vue/dist/chunks/NcActionButton-BO5T5ePT.mjs","../node_modules/vue-material-design-icons/PencilOutline.vue"],"sourcesContent":["const ActionGlobalMixin = {\n beforeUpdate() {\n this.text = this.getText();\n },\n data() {\n return {\n // $slots are not reactive.\n // We need to update the content manually\n text: this.getText()\n };\n },\n computed: {\n isLongText() {\n return this.text && this.text.trim().length > 20;\n }\n },\n methods: {\n getText() {\n return this.$slots.default?.()[0].children?.trim?.() || \"\";\n }\n }\n};\nexport {\n ActionGlobalMixin as A\n};\n//# sourceMappingURL=actionGlobal-BZFdtdJL.mjs.map\n","import { warn } from \"vue\";\nimport { N as NC_ACTIONS_CLOSE_MENU } from \"./useNcActions-BzPO2c4h.mjs\";\nimport { A as ActionGlobalMixin } from \"./actionGlobal-BZFdtdJL.mjs\";\nconst ActionTextMixin = {\n mixins: [ActionGlobalMixin],\n props: {\n /**\n * Icon to show with the action, can be either a CSS class or an URL\n */\n icon: {\n type: String,\n default: \"\"\n },\n /**\n * The main text content of the entry.\n */\n name: {\n type: String,\n default: \"\"\n },\n /**\n * The title attribute of the element.\n */\n title: {\n type: String,\n default: \"\"\n },\n /**\n * Whether we close the Actions menu after the click\n */\n closeAfterClick: {\n type: Boolean,\n default: false\n },\n /**\n * Aria label for the button. Not needed if the button has text.\n */\n ariaLabel: {\n type: String,\n default: null\n }\n },\n inject: {\n closeMenu: {\n from: NC_ACTIONS_CLOSE_MENU\n }\n },\n emits: [\n \"click\"\n ],\n created() {\n if (\"ariaHidden\" in this.$attrs) {\n warn(\"[NcAction*]: Do not set the ariaHidden attribute as the root element will inherit the incorrect aria-hidden.\");\n }\n },\n computed: {\n /**\n * Check if icon prop is an URL\n *\n * @return {boolean} Whether the icon prop is an URL\n */\n isIconUrl() {\n try {\n return !!new URL(this.icon, this.icon.startsWith(\"/\") ? window.location.origin : void 0);\n } catch {\n return false;\n }\n }\n },\n methods: {\n onClick(event) {\n this.$emit(\"click\", event);\n if (this.closeAfterClick) {\n this.closeMenu(false);\n }\n }\n }\n};\nexport {\n ActionTextMixin as A\n};\n//# sourceMappingURL=actionText-BXR0sWNu.mjs.map\n","import '../assets/NcActionButton-DLer-aUY.css';\nimport { c as mdiChevronRight, d as mdiCheck } from \"./mdi-CpchYUUV.mjs\";\nimport { N as NcIconSvgWrapper } from \"./NcIconSvgWrapper-g8ubWhoz.mjs\";\nimport { A as ActionTextMixin } from \"./actionText-BXR0sWNu.mjs\";\nimport { a as NC_ACTIONS_IS_SEMANTIC_MENU } from \"./useNcActions-BzPO2c4h.mjs\";\nimport { resolveComponent, openBlock, createElementBlock, normalizeClass, createElementVNode, mergeProps, renderSlot, normalizeStyle, toDisplayString, createCommentVNode, createBlock } from \"vue\";\nimport { _ as _export_sfc } from \"./_plugin-vue_export-helper-1tPrXgE0.mjs\";\nconst _sfc_main = {\n name: \"NcActionButton\",\n components: {\n NcIconSvgWrapper\n },\n mixins: [ActionTextMixin],\n inject: {\n isInSemanticMenu: {\n from: NC_ACTIONS_IS_SEMANTIC_MENU,\n default: false\n }\n },\n props: {\n /**\n * disabled state of the action button\n */\n disabled: {\n type: Boolean,\n default: false\n },\n /**\n * If this is a menu, a chevron icon will\n * be added at the end of the line\n */\n isMenu: {\n type: Boolean,\n default: false\n },\n /**\n * The button's behavior, by default the button acts like a normal button with optional toggle button behavior if `modelValue` is `true` or `false`.\n * But you can also set to checkbox button behavior with tri-state or radio button like behavior.\n * This extends the native HTML button type attribute.\n */\n type: {\n type: String,\n default: \"button\",\n validator: (behavior) => [\"button\", \"checkbox\", \"radio\", \"reset\", \"submit\"].includes(behavior)\n },\n /**\n * The buttons state if `type` is 'checkbox' or 'radio' (meaning if it is pressed / selected).\n * For checkbox and toggle button behavior - boolean value.\n * For radio button behavior - could be a boolean checked or a string with the value of the button.\n * Note: Unlike native radio buttons, NcActionButton are not grouped by name, so you need to connect them by bind correct modelValue.\n *\n * **This is not availabe for `type='submit'` or `type='reset'`**\n *\n * If using `type='checkbox'` a `model-value` of `true` means checked, `false` means unchecked and `null` means indeterminate (tri-state)\n * For `type='radio'` `null` is equal to `false`\n */\n modelValue: {\n type: [Boolean, String],\n default: null\n },\n /**\n * The value used for the `modelValue` when this component is used with radio behavior\n * Similar to the `value` attribute of ``\n */\n value: {\n type: String,\n default: null\n },\n /**\n * Small underlying text content of the entry\n */\n description: {\n type: String,\n default: \"\"\n }\n },\n emits: [\"update:modelValue\"],\n setup() {\n return {\n mdiCheck,\n mdiChevronRight\n };\n },\n computed: {\n /**\n * determines if the action is focusable\n *\n * @return {boolean} is the action focusable ?\n */\n isFocusable() {\n return !this.disabled;\n },\n /**\n * The current \"checked\" or \"pressed\" state for the model behavior\n */\n isChecked() {\n if (this.type === \"radio\" && typeof this.modelValue !== \"boolean\") {\n return this.modelValue === this.value;\n }\n return this.modelValue;\n },\n /**\n * The native HTML type to set on the button\n */\n nativeType() {\n if (this.type === \"submit\" || this.type === \"reset\") {\n return this.type;\n }\n return \"button\";\n },\n /**\n * HTML attributes to bind to the