You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 
nextcloud-server/dist/dashboard-main.js

3 lines
122 KiB

/*! For license information please see dashboard-main.js.LICENSE.txt */
(()=>{var e,n={2735:(e,n,o)=>{"use strict";var a=o(20144),i=o(79753),r=o(77958),s=o(43554),l=o(93664),c=o(29497),d=o(9980),u=o.n(d),p=o(83344),h=o(70332),f=o(77531);const g={data(){return{isMobile:this._isMobile()}},beforeMount(){window.addEventListener("resize",this._onResize)},beforeDestroy(){window.removeEventListener("resize",this._onResize)},methods:{_onResize(){this.isMobile=this._isMobile()},_isMobile:()=>document.documentElement.clientWidth<768}};var v=o(23928),m=o(22304),b=o(47659),A=o(57395),y=o(82472),x=o(87001),w=o(8492),C=o(62431),S=o(63221),k=o(81243),_=o(50417),E=o(65476),D=o(66962),O=o(27657),N=o(2047),I=o(66089),T=o(28332),M=o(44216),j=o(18798),P=o(9691),B=o(42088),L=o(18140),W=o(79655),F=o(5864),R=o(28454),U=o(10744),$=o(40408),G=o(63511),z=o(6773),Z=o(19148),H=o(39919),V=o(12926),Y=o(32888),X=o(935),q=o(18181),K=o(24021),Q=o(63295),J=o(7206),tt=o(95141),et=o(64634),nt=o(79579),ot=o(55242),at=o(52506),it=o(72964),rt=o(50750),st=o(23398),lt=o(96750),ct=o(21748),dt=o(95699),ut=o(87604),pt=o(54405),ht=o(34221),ft=o(1739),gt=o(96247),vt=o(69366),mt=o(94637),bt=o(14783),At=o(75540),yt=(o(94802),o(57670)),xt=o(36736),wt=(o(69183),o(60736)),Ct=o(75903),St=o(23443),kt=o(98182),_t=o(73526),Et=o(96239),Dt=o(96908),Ot=o(85980),Nt=(o(52299),o(50279),o(31443),o(95101),o(90318)),It=o(17593),Tt=o(99640),Mt=(o(84722),o(76692),o(40946),o(73045));v.Z,m.N,b.Z,A.Z,y.N,x.Z,w.Z,C.Z,k.Z,_.Z,E.Z,S.N,D.N,O.Z,N.Z,I.N,T.N,M.Z,j.N,P.Z,B.N,L.N,W.Z,F.N,R.Z,U.N,$.Z,bt.N,G.N,z.N,Z.N,c.Z,H.N,V.N,Y.N,X.Z,q.N,K.N,Q.N,J.Z,tt.Z,et.N,nt.N,ot.N,at.Z,it.Z,rt.N,st.N,lt.N,ct.N,dt.N,ut.Z,mt.N,p.Z,pt.Z,ht.N,ft.N,gt.N,vt.N,bt.a,At.N,wt.N,yt.N,Ct.N,St.N,kt.N,_t.N,Ot.Z,xt.N,Et.N,Dt.N,h.N,Symbol.toStringTag,Nt.X,It.X,Mt.VTooltip,Symbol.toStringTag;var jt=o(11734);const Pt={name:"ApiDashboardWidget",components:{NcAvatar:G.N,NcDashboardWidget:q.N,NcDashboardWidgetItem:K.N,NcEmptyContent:at.Z,NcButton:c.Z,CheckIcon:jt.default},props:{widget:{type:[Object,void 0],default:void 0},data:{type:[Object,void 0],default:void 0},loading:{type:Boolean,required:!0}},computed:{items(){return this.data?.items??[]},emptyContentMessage(){return this.data?.emptyContentMessage??""},halfEmptyContentMessage(){return this.data?.halfEmptyContentMessage??""},newButton(){return this.widget?.buttons?.find((t=>"new"===t.type))},moreButton(){return this.widget?.buttons?.find((t=>"more"===t.type))},setupButton(){return this.widget?.buttons?.find((t=>"setup"===t.type))},showMoreLabel(){return this.moreButton?.text},showMoreUrl(){return this.moreButton?.link}}};var Bt=o(51900);const Lt=(0,Bt.Z)(Pt,(function(){var t=this,e=t._self._c;return e("NcDashboardWidget",{attrs:{items:t.items,"show-more-label":t.showMoreLabel,"show-more-url":t.showMoreUrl,loading:t.loading,"show-items-and-empty-content":!!t.halfEmptyContentMessage,"half-empty-content-message":t.halfEmptyContentMessage},scopedSlots:t._u([{key:"default",fn:function(n){let{item:o}=n;return[e("NcDashboardWidgetItem",{attrs:{"target-url":o.link,"overlay-icon-url":o.overlayIconUrl?o.overlayIconUrl:"","main-text":o.title,"sub-text":o.subtitle},scopedSlots:t._u([{key:"avatar",fn:function(){return[o.iconUrl?[e("NcAvatar",{attrs:{size:44,url:o.iconUrl}})]:t._e()]},proxy:!0}],null,!0)})]}},{key:"empty-content",fn:function(){return[0===t.items.length?e("NcEmptyContent",{attrs:{description:t.emptyContentMessage},scopedSlots:t._u([{key:"icon",fn:function(){return[t.emptyContentMessage?e("CheckIcon",{attrs:{size:65}}):t._e()]},proxy:!0},{key:"action",fn:function(){return[t.setupButton?e("NcButton",{attrs:{href:t.setupButton.link}},[t._v("\n\t\t\t\t\t"+t._s(t.setupButton.text)+"\n\t\t\t\t")]):t._e()]},proxy:!0}],null,!1,4172361897)}):t._e()]},proxy:!0}])})}),[],!1,null,"d91c9686",null).exports;var Wt=o(25108);const Ft=(0,s.j)("dashboard","panels"),Rt=(0,s.j)("dashboard","firstRun"),Ut={weather:{text:t("dashboard","Weather"),icon:"icon-weather-status"},status:{text:t("dashboard","Status")}},$t={name:"DashboardApp",components:{ApiDashboardWidget:Lt,NcButton:c.Z,Draggable:u(),NcModal:p.Z,Pencil:f.default,NcUserStatusIcon:h.N},mixins:[g],data:()=>({isAdmin:(0,r.ts)().isAdmin,timer:new Date,registeredStatus:[],callbacks:{},callbacksStatus:{},allCallbacksStatus:{},statusInfo:Ut,enabledStatuses:(0,s.j)("dashboard","statuses"),panels:Ft,firstRun:Rt,displayName:(0,r.ts)()?.displayName,uid:(0,r.ts)()?.uid,layout:(0,s.j)("dashboard","layout").filter((t=>Ft[t])),modal:!1,appStoreUrl:(0,i.generateUrl)("/settings/apps/dashboard"),statuses:{},apiWidgets:[],apiWidgetItems:{},loadingItems:!0}),computed:{greeting(){const e=this.timer.getHours();let n;n=e>=22||e<5?"night":e>=18?"evening":e>=12?"afternoon":"morning";const o={morning:{generic:t("dashboard","Good morning"),withName:t("dashboard","Good morning, {name}",{name:this.displayName},void 0,{escape:!1})},afternoon:{generic:t("dashboard","Good afternoon"),withName:t("dashboard","Good afternoon, {name}",{name:this.displayName},void 0,{escape:!1})},evening:{generic:t("dashboard","Good evening"),withName:t("dashboard","Good evening, {name}",{name:this.displayName},void 0,{escape:!1})},night:{generic:t("dashboard","Hello"),withName:t("dashboard","Hello, {name}",{name:this.displayName},void 0,{escape:!1})}};return{text:this.displayName&&this.uid!==this.displayName?o[n].withName:o[n].generic}},isActive(){return t=>this.layout.indexOf(t.id)>-1},isStatusActive(){return t=>!(t in this.enabledStatuses)||this.enabledStatuses[t]},sortedAllStatuses(){return Object.keys(this.allCallbacksStatus).slice().sort(this.sortStatuses)},sortedPanels(){return Object.values(this.panels).sort(((t,e)=>{const n=this.layout.indexOf(t.id),o=this.layout.indexOf(e.id);return-1===n||-1===o?o-n||t.id-e.id:n-o||t.id-e.id}))},sortedRegisteredStatus(){return this.registeredStatus.slice().sort(this.sortStatuses)}},watch:{callbacks(){this.rerenderPanels()},callbacksStatus(){for(const t in this.callbacksStatus){const e=this.$refs["status-"+t];this.statuses[t]&&this.statuses[t].mounted||(e?(this.callbacksStatus[t](e[0]),a.default.set(this.statuses,t,{mounted:!0})):Wt.error("Failed to register panel in the frontend as no backend data was provided for "+t))}}},async created(){await this.fetchApiWidgets();const t=Object.values(this.apiWidgets).filter((t=>this.isApiWidgetV2(t.id))).map((t=>t.id));await Promise.all(t.map((t=>this.fetchApiWidgetItems([t],!0))));for(const t of Object.values(this.apiWidgets))t.reload_interval>0&&setInterval((async()=>{await this.fetchApiWidgetItems([t.id],!0)}),1e3*t.reload_interval)},mounted(){this.updateSkipLink(),window.addEventListener("scroll",this.handleScroll),setInterval((()=>{this.timer=new Date}),3e4),this.firstRun&&window.addEventListener("scroll",this.disableFirstrunHint)},destroyed(){window.removeEventListener("scroll",this.handleScroll)},methods:{register(t,e){a.default.set(this.callbacks,t,e)},registerStatus(t,e){a.default.set(this.allCallbacksStatus,t,e),this.isStatusActive(t)&&(this.registeredStatus.push(t),this.$nextTick((()=>{a.default.set(this.callbacksStatus,t,e)})))},rerenderPanels(){for(const t in this.callbacks){if(this.isApiWidgetV2(this.panels[t].id))continue;const e=this.$refs[t];-1!==this.layout.indexOf(t)&&(this.panels[t]&&this.panels[t].mounted||(e?(this.callbacks[t](e[0],{widget:this.panels[t]}),a.default.set(this.panels[t],"mounted",!0)):Wt.error("Failed to register panel in the frontend as no backend data was provided for "+t)))}},saveLayout(){l.Z.post((0,i.generateUrl)("/apps/dashboard/layout"),{layout:this.layout.join(",")})},saveStatuses(){l.Z.post((0,i.generateUrl)("/apps/dashboard/statuses"),{statuses:JSON.stringify(this.enabledStatuses)})},showModal(){this.modal=!0,this.firstRun=!1},closeModal(){this.modal=!1},updateCheckbox(t,e){const n=this.layout.indexOf(t.id);!e&&n>-1?this.layout.splice(n,1):this.layout.push(t.id),a.default.set(this.panels[t.id],"mounted",!1),this.saveLayout(),this.$nextTick((()=>this.rerenderPanels()))},disableFirstrunHint(){window.removeEventListener("scroll",this.disableFirstrunHint),setTimeout((()=>{this.firstRun=!1}),1e3)},updateSkipLink(){document.getElementsByClassName("skip-navigation")[0].setAttribute("href","#app-dashboard")},updateStatusCheckbox(t,e){e?this.enableStatus(t):this.disableStatus(t)},enableStatus(t){this.enabledStatuses[t]=!0,this.registerStatus(t,this.allCallbacksStatus[t]),this.saveStatuses()},disableStatus(t){this.enabledStatuses[t]=!1;const e=this.registeredStatus.findIndex((e=>e===t));-1!==e&&(this.registeredStatus.splice(e,1),a.default.set(this.statuses,t,{mounted:!1}),this.$nextTick((()=>{a.default.delete(this.callbacksStatus,t)}))),this.saveStatuses()},sortStatuses(t,e){const n=t.toLowerCase(),o=e.toLowerCase();return n>o?1:n<o?-1:0},handleScroll(){window.scrollY>70?document.body.classList.add("dashboard--scrolled"):document.body.classList.remove("dashboard--scrolled")},async fetchApiWidgets(){const t=await l.Z.get((0,i.generateOcsUrl)("/apps/dashboard/api/v1/widgets"));this.apiWidgets=t.data.ocs.data},async fetchApiWidgetItems(t){let e=arguments.length>1&&void 0!==arguments[1]&&arguments[1];try{const n=(0,i.generateOcsUrl)("/apps/dashboard/api/v2/widget-items"),o=new URLSearchParams(t.map((t=>["widgets[]",t]))),a=(await l.Z.get(`${n}?${o.toString()}`)).data.ocs.data;this.apiWidgetItems=e?Object.assign({},this.apiWidgetItems,a):a}finally{this.loadingItems=!1}},isApiWidgetV2(t){for(const e of Object.values(this.apiWidgets))if(e.id===t&&e.item_api_versions.includes(2))return!0;return!1}}};var Gt=o(93379),zt=o.n(Gt),Zt=o(7795),Ht=o.n(Zt),Vt=o(90569),Yt=o.n(Vt),Xt=o(3565),qt=o.n(Xt),Kt=o(19216),Qt=o.n(Kt),Jt=o(44589),te=o.n(Jt),ee=o(80441),ne={};ne.styleTagTransform=te(),ne.setAttributes=qt(),ne.insert=Yt().bind(null,"head"),ne.domAPI=Ht(),ne.insertStyleElement=Qt(),zt()(ee.Z,ne),ee.Z&&ee.Z.locals&&ee.Z.locals;var oe=o(25115),ae={};ae.styleTagTransform=te(),ae.setAttributes=qt(),ae.insert=Yt().bind(null,"head"),ae.domAPI=Ht(),ae.insertStyleElement=Qt(),zt()(oe.Z,ae),oe.Z&&oe.Z.locals&&oe.Z.locals;const ie=(0,Bt.Z)($t,(function(){var t=this,e=t._self._c;return e("div",{attrs:{id:"app-dashboard"}},[e("h2",[t._v(t._s(t.greeting.text))]),t._v(" "),e("ul",{staticClass:"statuses"},t._l(t.sortedRegisteredStatus,(function(t){return e("li",{key:t,attrs:{id:"status-"+t}},[e("div",{ref:"status-"+t,refInFor:!0})])})),0),t._v(" "),e("Draggable",t._b({staticClass:"panels",attrs:{handle:".panel--header"},on:{end:t.saveLayout},model:{value:t.layout,callback:function(e){t.layout=e},expression:"layout"}},"Draggable",{swapThreshold:.3,delay:500,delayOnTouchOnly:!0,touchStartThreshold:3},!1),[t._l(t.layout,(function(n){return[t.isApiWidgetV2(t.panels[n].id)?e("div",{key:`${t.panels[n].id}-v2`,staticClass:"panel"},[e("div",{staticClass:"panel--header"},[e("h2",[e("span",{class:t.apiWidgets[t.panels[n].id].icon_class,attrs:{"aria-labelledby":`panel-${t.panels[n].id}--header--icon--description`,"aria-hidden":"true",role:"img"}}),t._v("\n\t\t\t\t\t\t"+t._s(t.apiWidgets[t.panels[n].id].title)+"\n\t\t\t\t\t")]),t._v(" "),e("span",{staticClass:"hidden-visually",attrs:{id:`panel-${t.panels[n].id}--header--icon--description`}},[t._v("\n\t\t\t\t\t\t"+t._s(t.t("dashboard",'"{title} icon"',{title:t.apiWidgets[t.panels[n].id].title}))+"\n\t\t\t\t\t")])]),t._v(" "),e("div",{staticClass:"panel--content"},[e("ApiDashboardWidget",{attrs:{widget:t.apiWidgets[t.panels[n].id],data:t.apiWidgetItems[t.panels[n].id],loading:t.loadingItems}})],1)]):e("div",{key:t.panels[n].id,staticClass:"panel"},[e("div",{staticClass:"panel--header"},[e("h2",[e("span",{class:t.panels[n].iconClass,attrs:{"aria-labelledby":`panel-${t.panels[n].id}--header--icon--description`,"aria-hidden":"true",role:"img"}}),t._v("\n\t\t\t\t\t\t"+t._s(t.panels[n].title)+"\n\t\t\t\t\t")]),t._v(" "),e("span",{staticClass:"hidden-visually",attrs:{id:`panel-${t.panels[n].id}--header--icon--description`}},[t._v(" "+t._s(t.t("dashboard",'"{title} icon"',{title:t.panels[n].title}))+" ")])]),t._v(" "),e("div",{staticClass:"panel--content",class:{loading:!t.panels[n].mounted}},[e("div",{ref:t.panels[n].id,refInFor:!0,attrs:{"data-id":t.panels[n].id}})])])]}))],2),t._v(" "),e("div",{staticClass:"footer"},[e("NcButton",{on:{click:t.showModal},scopedSlots:t._u([{key:"icon",fn:function(){return[e("Pencil",{attrs:{size:20}})]},proxy:!0}])},[t._v("\n\t\t\t"+t._s(t.t("dashboard","Customize"))+"\n\t\t")])],1),t._v(" "),t.modal?e("NcModal",{attrs:{size:"large"},on:{close:t.closeModal}},[e("div",{staticClass:"modal__content"},[e("h2",[t._v(t._s(t.t("dashboard","Edit widgets")))]),t._v(" "),e("ol",{staticClass:"panels"},t._l(t.sortedAllStatuses,(function(n){return e("li",{key:n,class:"panel-"+n},[e("input",{staticClass:"checkbox",attrs:{id:"status-checkbox-"+n,type:"checkbox"},domProps:{checked:t.isStatusActive(n)},on:{input:function(e){return t.updateStatusCheckbox(n,e.target.checked)}}}),t._v(" "),e("label",{attrs:{for:"status-checkbox-"+n}},["status"===n?e("NcUserStatusIcon",{attrs:{status:"online","aria-hidden":"true"}}):e("span",{class:t.statusInfo[n].icon,attrs:{"aria-hidden":"true"}}),t._v("\n\t\t\t\t\t\t"+t._s(t.statusInfo[n].text)+"\n\t\t\t\t\t")],1)])})),0),t._v(" "),e("Draggable",t._b({staticClass:"panels",attrs:{tag:"ol",handle:".draggable"},on:{end:t.saveLayout},model:{value:t.layout,callback:function(e){t.layout=e},expression:"layout"}},"Draggable",{swapThreshold:.3,delay:500,delayOnTouchOnly:!0,touchStartThreshold:3},!1),t._l(t.sortedPanels,(function(n){return e("li",{key:n.id,class:"panel-"+n.id},[e("input",{staticClass:"checkbox",attrs:{id:"panel-checkbox-"+n.id,type:"checkbox"},domProps:{checked:t.isActive(n)},on:{input:function(e){return t.updateCheckbox(n,e.target.checked)}}}),t._v(" "),e("label",{class:{draggable:t.isActive(n)},attrs:{for:"panel-checkbox-"+n.id}},[e("span",{class:n.iconClass,attrs:{"aria-hidden":"true"}}),t._v("\n\t\t\t\t\t\t"+t._s(n.title)+"\n\t\t\t\t\t")])])})),0),t._v(" "),t.isAdmin?e("a",{staticClass:"button",attrs:{href:t.appStoreUrl}},[t._v(t._s(t.t("dashboard","Get more widgets from the App Store")))]):t._e(),t._v(" "),t.statuses.weather&&t.isStatusActive("weather")?e("div",[e("h2",[t._v(t._s(t.t("dashboard","Weather service")))]),t._v(" "),e("p",[t._v("\n\t\t\t\t\t"+t._s(t.t("dashboard","For your privacy, the weather data is requested by your Nextcloud server on your behalf so the weather service receives no personal information."))+"\n\t\t\t\t")]),t._v(" "),e("p",{staticClass:"credits--end"},[e("a",{attrs:{href:"https://api.met.no/doc/TermsOfService",target:"_blank",rel:"noopener"}},[t._v(t._s(t.t("dashboard","Weather data from Met.no")))]),t._v(",\n\t\t\t\t\t"),e("a",{attrs:{href:"https://wiki.osmfoundation.org/wiki/Privacy_Policy",target:"_blank",rel:"noopener"}},[t._v(t._s(t.t("dashboard","geocoding with Nominatim")))]),t._v(",\n\t\t\t\t\t"),e("a",{attrs:{href:"https://www.opentopodata.org/#public-api",target:"_blank",rel:"noopener"}},[t._v(t._s(t.t("dashboard","elevation data from OpenTopoData")))]),t._v(".\n\t\t\t\t")])]):t._e()],1)]):t._e()],1)}),[],!1,null,"499391f2",null).exports;var re=o(31352);o.nc=btoa((0,r.IH)()),a.default.directive("Tooltip",Tt.Z),a.default.prototype.t=re.Iu,window.OCA.Files||(window.OCA.Files={}),Object.assign(window.OCA.Files,{App:{fileList:{filesClient:OC.Files.getClient()}}},window.OCA.Files);const se=new(a.default.extend(ie))({}).$mount("#app-content-vue");window.OCA.Dashboard={register:(t,e)=>se.register(t,e),registerStatus:(t,e)=>se.registerStatus(t,e)}},80441:(t,e,n)=>{"use strict";n.d(e,{Z:()=>s});var o=n(87537),a=n.n(o),i=n(23645),r=n.n(i)()(a());r.push([t.id,"#app-dashboard[data-v-499391f2]{width:100%;min-height:100%;background-size:cover;background-position:center center;background-repeat:no-repeat;background-attachment:fixed}#app-dashboard>h2[data-v-499391f2]{color:var(--color-primary-text);text-align:center;font-size:32px;line-height:130%;padding:1rem 0}.panels[data-v-499391f2]{width:auto;margin:auto;max-width:1800px;display:flex;justify-content:center;flex-direction:row;align-items:flex-start;flex-wrap:wrap}.panel[data-v-499391f2],.panels>div[data-v-499391f2]{--color-text-maxcontrast: var(--color-text-maxcontrast-background-blur, var(--color-main-text));width:320px;max-width:100%;margin:16px;align-self:stretch;background-color:var(--color-main-background-blur);-webkit-backdrop-filter:var(--filter-background-blur);backdrop-filter:var(--filter-background-blur);border-radius:var(--border-radius-rounded)}#body-user.theme--highcontrast .panel[data-v-499391f2],#body-user.theme--highcontrast .panels>div[data-v-499391f2]{border:2px solid var(--color-border)}.panel.sortable-ghost[data-v-499391f2],.panels>div.sortable-ghost[data-v-499391f2]{opacity:.1}.panel>.panel--header[data-v-499391f2],.panels>div>.panel--header[data-v-499391f2]{display:flex;z-index:1;top:50px;padding:16px;cursor:grab}.panel>.panel--header[data-v-499391f2],.panel>.panel--header[data-v-499391f2] *,.panels>div>.panel--header[data-v-499391f2],.panels>div>.panel--header[data-v-499391f2] *{-webkit-touch-callout:none;-webkit-user-select:none;-khtml-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.panel>.panel--header[data-v-499391f2]:active,.panels>div>.panel--header[data-v-499391f2]:active{cursor:grabbing}.panel>.panel--header a[data-v-499391f2],.panels>div>.panel--header a[data-v-499391f2]{flex-grow:1}.panel>.panel--header>h2[data-v-499391f2],.panels>div>.panel--header>h2[data-v-499391f2]{display:block;align-items:center;flex-grow:1;margin:0;font-size:20px;line-height:24px;font-weight:bold;padding:16px 8px;height:56px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;cursor:grab}.panel>.panel--header>h2 span[data-v-499391f2],.panels>div>.panel--header>h2 span[data-v-499391f2]{background-size:32px;width:32px;height:32px;margin-right:16px;background-position:center;float:left;margin-top:-6px}.panel>.panel--content[data-v-499391f2],.panels>div>.panel--content[data-v-499391f2]{margin:0 16px 16px 16px;height:424px;overflow:visible}@media only screen and (max-width: 709px){.panel>.panel--content[data-v-499391f2],.panels>div>.panel--content[data-v-499391f2]{height:auto}}.footer[data-v-499391f2]{display:flex;justify-content:center;transition:bottom var(--animation-slow) ease-in-out;padding:1rem 0}.edit-panels[data-v-499391f2]{display:inline-block;margin:auto;background-position:16px center;padding:12px 16px;padding-left:36px;border-radius:var(--border-radius-pill);max-width:200px;opacity:1;text-align:center}.button[data-v-499391f2],.button-vue[data-v-499391f2],.edit-panels[data-v-499391f2],.statuses[data-v-499391f2] .action-item .action-item__menutoggle,.statuses[data-v-499391f2] .action-item.action-item--open .action-item__menutoggle{--color-text-maxcontrast: var(--color-text-maxcontrast-background-blur, var(--color-main-text));background-color:var(--color-main-background-blur);-webkit-backdrop-filter:var(--filter-background-blur);backdrop-filter:var(--filter-background-blur);opacity:1 !important}.button[data-v-499391f2]:hover,.button[data-v-499391f2]:focus,.button[data-v-499391f2]:active,.button-vue[data-v-499391f2]:hover,.button-vue[data-v-499391f2]:focus,.button-vue[data-v-499391f2]:active,.edit-panels[data-v-499391f2]:hover,.edit-panels[data-v-499391f2]:focus,.edit-panels[data-v-499391f2]:active,.statuses[data-v-499391f2] .action-item .action-item__menutoggle:hover,.statuses[data-v-499391f2] .action-item .action-item__menutoggle:focus,.statuses[data-v-499391f2] .action-item .action-item__menutoggle:active,.statuses[data-v-499391f2] .action-item.action-item--open .action-item__menutoggle:hover,.statuses[data-v-499391f2] .action-item.action-item--open .action-item__menutoggle:focus,.statuses[data-v-499391f2] .action-item.action-item--open .action-item__menutoggle:active{background-color:var(--color-background-hover) !important}.button[data-v-499391f2]:focus-visible,.button-vue[data-v-499391f2]:focus-visible,.edit-panels[data-v-499391f2]:focus-visible,.statuses[data-v-499391f2] .action-item .action-item__menutoggle:focus-visible,.statuses[data-v-499391f2] .action-item.action-item--open .action-item__menutoggle:focus-visible{box-shadow:0 0 0 4px var(--color-main-background) !important;outline:2px solid var(--color-main-text) !important}.modal__content[data-v-499391f2]{padding:32px 16px;text-align:center}.modal__content ol[data-v-499391f2]{display:flex;flex-direction:row;justify-content:center;list-style-type:none;padding-bottom:16px}.modal__content li label[data-v-499391f2]{position:relative;display:block;padding:48px 16px 14px 16px;margin:8px;width:140px;background-color:var(--color-background-hover);border:2px solid var(--color-main-background);border-radius:var(--border-radius-large);text-align:left;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.modal__content li label span[data-v-499391f2]{position:absolute;top:16px;width:24px;height:24px;background-size:24px}.modal__content li label[data-v-499391f2]:hover{border-color:var(--color-primary-element)}.modal__content li:not(.panel-status) label span[data-v-499391f2]{filter:var(--background-invert-if-dark)}.modal__content li input[type=checkbox].checkbox+label[data-v-499391f2]:before{position:absolute;right:12px;top:16px}.modal__content li input:focus+label[data-v-499391f2]{border-color:var(--color-primary-element)}.modal__content h2[data-v-499391f2]{font-weight:bold;margin-top:12px}.modal__content .button[data-v-499391f2]{display:inline-block;padding:10px 16px;margin:0}.modal__content p[data-v-499391f2]{max-width:650px;margin:0 auto}.modal__content p a[data-v-499391f2]:hover,.modal__content p a[data-v-499391f2]:focus{border-bottom:2px solid var(--color-border)}.modal__content .credits--end[data-v-499391f2]{padding-bottom:32px;color:var(--color-text-maxcontrast)}.modal__content .credits--end a[data-v-499391f2]{color:var(--color-text-maxcontrast)}.flip-list-move[data-v-499391f2]{transition:transform var(--animation-slow)}.statuses[data-v-499391f2]{display:flex;flex-direction:row;justify-content:center;flex-wrap:wrap;margin-bottom:36px}.statuses>li[data-v-499391f2]{margin:8px}","",{version:3,sources:["webpack://./apps/dashboard/src/DashboardApp.vue"],names:[],mappings:"AACA,gCACC,UAAA,CACA,eAAA,CACA,qBAAA,CACA,iCAAA,CACA,2BAAA,CACA,2BAAA,CAEA,mCAEC,+BAAA,CACA,iBAAA,CACA,cAAA,CACA,gBAAA,CACA,cAAA,CAIF,yBACC,UAAA,CACA,WAAA,CACA,gBAAA,CACA,YAAA,CACA,sBAAA,CACA,kBAAA,CACA,sBAAA,CACA,cAAA,CAGD,qDAEC,+FAAA,CAEA,WAAA,CACA,cAAA,CACA,WAAA,CACA,kBAAA,CACA,kDAAA,CACA,qDAAA,CACA,6CAAA,CACA,0CAAA,CAEA,mHACC,oCAAA,CAGD,mFACE,UAAA,CAGF,mFACC,YAAA,CACA,SAAA,CACA,QAAA,CACA,YAAA,CACA,WAAA,CAEA,0KACC,0BAAA,CACA,wBAAA,CACA,uBAAA,CACA,qBAAA,CACA,oBAAA,CACA,gBAAA,CAGD,iGACC,eAAA,CAGD,uFACC,WAAA,CAGD,yFACC,aAAA,CACA,kBAAA,CACA,WAAA,CACA,QAAA,CACA,cAAA,CACA,gBAAA,CACA,gBAAA,CACA,gBAAA,CACA,WAAA,CACA,kBAAA,CACA,eAAA,CACA,sBAAA,CACA,WAAA,CACA,mGACC,oBAAA,CACA,UAAA,CACA,WAAA,CACA,iBAAA,CACA,0BAAA,CACA,UAAA,CACA,eAAA,CAKH,qFACC,uBAAA,CACA,YAAA,CAEA,gBAAA,CAID,0CACC,qFACC,WAAA,CAAA,CAKH,yBACC,YAAA,CACA,sBAAA,CACA,mDAAA,CACA,cAAA,CAGD,8BACC,oBAAA,CACA,WAAA,CACA,+BAAA,CACA,iBAAA,CACA,iBAAA,CACA,uCAAA,CACA,eAAA,CACA,SAAA,CACA,iBAAA,CAGD,wOAMC,+FAAA,CAEA,kDAAA,CACA,qDAAA,CACA,6CAAA,CACA,oBAAA,CAEA,uxBAGC,yDAAA,CAED,8SACC,4DAAA,CACA,mDAAA,CAIF,iCACC,iBAAA,CACA,iBAAA,CAEA,oCACC,YAAA,CACA,kBAAA,CACA,sBAAA,CACA,oBAAA,CACA,mBAAA,CAGA,0CACC,iBAAA,CACA,aAAA,CACA,2BAAA,CACA,UAAA,CACA,WAAA,CACA,8CAAA,CACA,6CAAA,CACA,wCAAA,CACA,eAAA,CACA,eAAA,CACA,sBAAA,CACA,kBAAA,CAEA,+CACC,iBAAA,CACA,QAAA,CACA,UAAA,CACA,WAAA,CACA,oBAAA,CAGD,gDACC,yCAAA,CAKF,kEACC,uCAAA,CAGD,+EACC,iBAAA,CACA,UAAA,CACA,QAAA,CAGD,sDACC,yCAAA,CAIF,oCACC,gBAAA,CACA,eAAA,CAID,yCACC,oBAAA,CACA,iBAAA,CACA,QAAA,CAGD,mCACC,eAAA,CACA,aAAA,CAEA,sFAEC,2CAAA,CAIF,+CACC,mBAAA,CACA,mCAAA,CAEA,iDACC,mCAAA,CAKH,iCACC,0CAAA,CAGD,2BACC,YAAA,CACA,kBAAA,CACA,sBAAA,CACA,cAAA,CACA,kBAAA,CAEA,8BACC,UAAA",sourcesContent:["\n#app-dashboard {\n\twidth: 100%;\n\tmin-height: 100%;\n\tbackground-size: cover;\n\tbackground-position: center center;\n\tbackground-repeat: no-repeat;\n\tbackground-attachment: fixed;\n\n\t> h2 {\n\t\t// this is shown directly on the background which has `color-primary`, so we need `color-primary-text`\n\t\tcolor: var(--color-primary-text);\n\t\ttext-align: center;\n\t\tfont-size: 32px;\n\t\tline-height: 130%;\n\t\tpadding: 1rem 0;\n\t}\n}\n\n.panels {\n\twidth: auto;\n\tmargin: auto;\n\tmax-width: 1800px;\n\tdisplay: flex;\n\tjustify-content: center;\n\tflex-direction: row;\n\talign-items: flex-start;\n\tflex-wrap: wrap;\n}\n\n.panel, .panels > div {\n\t// Ensure the maxcontrast color is set for the background\n\t--color-text-maxcontrast: var(--color-text-maxcontrast-background-blur, var(--color-main-text));\n\n\twidth: 320px;\n\tmax-width: 100%;\n\tmargin: 16px;\n\talign-self: stretch;\n\tbackground-color: var(--color-main-background-blur);\n\t-webkit-backdrop-filter: var(--filter-background-blur);\n\tbackdrop-filter: var(--filter-background-blur);\n\tborder-radius: var(--border-radius-rounded);\n\n\t#body-user.theme--highcontrast & {\n\t\tborder: 2px solid var(--color-border);\n\t}\n\n\t&.sortable-ghost {\n\t\t opacity: 0.1;\n\t}\n\n\t& > .panel--header {\n\t\tdisplay: flex;\n\t\tz-index: 1;\n\t\ttop: 50px;\n\t\tpadding: 16px;\n\t\tcursor: grab;\n\n\t\t&, ::v-deep * {\n\t\t\t-webkit-touch-callout: none;\n\t\t\t-webkit-user-select: none;\n\t\t\t-khtml-user-select: none;\n\t\t\t-moz-user-select: none;\n\t\t\t-ms-user-select: none;\n\t\t\tuser-select: none;\n\t\t}\n\n\t\t&:active {\n\t\t\tcursor: grabbing;\n\t\t}\n\n\t\ta {\n\t\t\tflex-grow: 1;\n\t\t}\n\n\t\t> h2 {\n\t\t\tdisplay: block;\n\t\t\talign-items: center;\n\t\t\tflex-grow: 1;\n\t\t\tmargin: 0;\n\t\t\tfont-size: 20px;\n\t\t\tline-height: 24px;\n\t\t\tfont-weight: bold;\n\t\t\tpadding: 16px 8px;\n\t\t\theight: 56px;\n\t\t\twhite-space: nowrap;\n\t\t\toverflow: hidden;\n\t\t\ttext-overflow: ellipsis;\n\t\t\tcursor: grab;\n\t\t\tspan {\n\t\t\t\tbackground-size: 32px;\n\t\t\t\twidth: 32px;\n\t\t\t\theight: 32px;\n\t\t\t\tmargin-right: 16px;\n\t\t\t\tbackground-position: center;\n\t\t\t\tfloat: left;\n\t\t\t\tmargin-top: -6px;\n\t\t\t}\n\t\t}\n\t}\n\n\t& > .panel--content {\n\t\tmargin: 0 16px 16px 16px;\n\t\theight: 424px;\n\t\t// We specifically do not want scrollbars inside widgets\n\t\toverflow: visible;\n\t}\n\n\t// No need to extend height of widgets if only one column is shown\n\t@media only screen and (max-width: 709px) {\n\t\t& > .panel--content {\n\t\t\theight: auto;\n\t\t}\n\t}\n}\n\n.footer {\n\tdisplay: flex;\n\tjustify-content: center;\n\ttransition: bottom var(--animation-slow) ease-in-out;\n\tpadding: 1rem 0;\n}\n\n.edit-panels {\n\tdisplay: inline-block;\n\tmargin:auto;\n\tbackground-position: 16px center;\n\tpadding: 12px 16px;\n\tpadding-left: 36px;\n\tborder-radius: var(--border-radius-pill);\n\tmax-width: 200px;\n\topacity: 1;\n\ttext-align: center;\n}\n\n.button,\n.button-vue,\n.edit-panels,\n.statuses ::v-deep .action-item .action-item__menutoggle,\n.statuses ::v-deep .action-item.action-item--open .action-item__menutoggle {\n\t// Ensure the maxcontrast color is set for the background\n\t--color-text-maxcontrast: var(--color-text-maxcontrast-background-blur, var(--color-main-text));\n\n\tbackground-color: var(--color-main-background-blur);\n\t-webkit-backdrop-filter: var(--filter-background-blur);\n\tbackdrop-filter: var(--filter-background-blur);\n\topacity: 1 !important;\n\n\t&:hover,\n\t&:focus,\n\t&:active {\n\t\tbackground-color: var(--color-background-hover)!important;\n\t}\n\t&:focus-visible {\n\t\tbox-shadow: 0 0 0 4px var(--color-main-background) !important;\n\t\toutline: 2px solid var(--color-main-text) !important;\n\t}\n}\n\n.modal__content {\n\tpadding: 32px 16px;\n\ttext-align: center;\n\n\tol {\n\t\tdisplay: flex;\n\t\tflex-direction: row;\n\t\tjustify-content: center;\n\t\tlist-style-type: none;\n\t\tpadding-bottom: 16px;\n\t}\n\tli {\n\t\tlabel {\n\t\t\tposition: relative;\n\t\t\tdisplay: block;\n\t\t\tpadding: 48px 16px 14px 16px;\n\t\t\tmargin: 8px;\n\t\t\twidth: 140px;\n\t\t\tbackground-color: var(--color-background-hover);\n\t\t\tborder: 2px solid var(--color-main-background);\n\t\t\tborder-radius: var(--border-radius-large);\n\t\t\ttext-align: left;\n\t\t\toverflow: hidden;\n\t\t\ttext-overflow: ellipsis;\n\t\t\twhite-space: nowrap;\n\n\t\t\tspan {\n\t\t\t\tposition: absolute;\n\t\t\t\ttop: 16px;\n\t\t\t\twidth: 24px;\n\t\t\t\theight: 24px;\n\t\t\t\tbackground-size: 24px;\n\t\t\t}\n\n\t\t\t&:hover {\n\t\t\t\tborder-color: var(--color-primary-element);\n\t\t\t}\n\t\t}\n\n\t\t// Do not invert status icons\n\t\t&:not(.panel-status) label span {\n\t\t\tfilter: var(--background-invert-if-dark);\n\t\t}\n\n\t\tinput[type='checkbox'].checkbox + label:before {\n\t\t\tposition: absolute;\n\t\t\tright: 12px;\n\t\t\ttop: 16px;\n\t\t}\n\n\t\tinput:focus + label {\n\t\t\tborder-color: var(--color-primary-element);\n\t\t}\n\t}\n\n\th2 {\n\t\tfont-weight: bold;\n\t\tmargin-top: 12px;\n\t}\n\n\t// Adjust design of 'Get more widgets' button\n\t.button {\n\t\tdisplay: inline-block;\n\t\tpadding: 10px 16px;\n\t\tmargin: 0;\n\t}\n\n\tp {\n\t\tmax-width: 650px;\n\t\tmargin: 0 auto;\n\n\t\ta:hover,\n\t\ta:focus {\n\t\t\tborder-bottom: 2px solid var(--color-border);\n\t\t}\n\t}\n\n\t.credits--end {\n\t\tpadding-bottom: 32px;\n\t\tcolor: var(--color-text-maxcontrast);\n\n\t\ta {\n\t\t\tcolor: var(--color-text-maxcontrast);\n\t\t}\n\t}\n}\n\n.flip-list-move {\n\ttransition: transform var(--animation-slow);\n}\n\n.statuses {\n\tdisplay: flex;\n\tflex-direction: row;\n\tjustify-content: center;\n\tflex-wrap: wrap;\n\tmargin-bottom: 36px;\n\n\t& > li {\n\t\tmargin: 8px;\n\t}\n}\n"],sourceRoot:""}]);const s=r},25115:(t,e,n)=>{"use strict";n.d(e,{Z:()=>s});var o=n(87537),a=n.n(o),i=n(23645),r=n.n(i)()(a());r.push([t.id,"\nhtml, body {\n\tbackground-attachment: fixed;\n}\n#body-user #header {\n\tposition: fixed;\n}\n#content {\n\toverflow: auto;\n}\n","",{version:3,sources:["webpack://./apps/dashboard/src/DashboardApp.vue"],names:[],mappings:";AAktBA;CACA,4BAAA;AACA;AAEA;CACA,eAAA;AACA;AAEA;CACA,cAAA;AACA",sourcesContent:["<template>\n\t<div id=\"app-dashboard\">\n\t\t<h2>{{ greeting.text }}</h2>\n\t\t<ul class=\"statuses\">\n\t\t\t<li v-for=\"status in sortedRegisteredStatus\"\n\t\t\t\t:id=\"'status-' + status\"\n\t\t\t\t:key=\"status\">\n\t\t\t\t<div :ref=\"'status-' + status\" />\n\t\t\t</li>\n\t\t</ul>\n\n\t\t<Draggable v-model=\"layout\"\n\t\t\tclass=\"panels\"\n\t\t\tv-bind=\"{swapThreshold: 0.30, delay: 500, delayOnTouchOnly: true, touchStartThreshold: 3}\"\n\t\t\thandle=\".panel--header\"\n\t\t\t@end=\"saveLayout\">\n\t\t\t<template v-for=\"panelId in layout\">\n\t\t\t\t<div v-if=\"isApiWidgetV2(panels[panelId].id)\"\n\t\t\t\t\t:key=\"`${panels[panelId].id}-v2`\"\n\t\t\t\t\tclass=\"panel\">\n\t\t\t\t\t<div class=\"panel--header\">\n\t\t\t\t\t\t<h2>\n\t\t\t\t\t\t\t<span :aria-labelledby=\"`panel-${panels[panelId].id}--header--icon--description`\"\n\t\t\t\t\t\t\t\taria-hidden=\"true\"\n\t\t\t\t\t\t\t\t:class=\"apiWidgets[panels[panelId].id].icon_class\"\n\t\t\t\t\t\t\t\trole=\"img\" />\n\t\t\t\t\t\t\t{{ apiWidgets[panels[panelId].id].title }}\n\t\t\t\t\t\t</h2>\n\t\t\t\t\t\t<span :id=\"`panel-${panels[panelId].id}--header--icon--description`\" class=\"hidden-visually\">\n\t\t\t\t\t\t\t{{ t('dashboard', '\"{title} icon\"', { title: apiWidgets[panels[panelId].id].title }) }}\n\t\t\t\t\t\t</span>\n\t\t\t\t\t</div>\n\t\t\t\t\t<div class=\"panel--content\">\n\t\t\t\t\t\t<ApiDashboardWidget :widget=\"apiWidgets[panels[panelId].id]\"\n\t\t\t\t\t\t\t:data=\"apiWidgetItems[panels[panelId].id]\"\n\t\t\t\t\t\t\t:loading=\"loadingItems\" />\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t\t<div v-else :key=\"panels[panelId].id\" class=\"panel\">\n\t\t\t\t\t<div class=\"panel--header\">\n\t\t\t\t\t\t<h2>\n\t\t\t\t\t\t\t<span :aria-labelledby=\"`panel-${panels[panelId].id}--header--icon--description`\"\n\t\t\t\t\t\t\t\taria-hidden=\"true\"\n\t\t\t\t\t\t\t\t:class=\"panels[panelId].iconClass\"\n\t\t\t\t\t\t\t\trole=\"img\" />\n\t\t\t\t\t\t\t{{ panels[panelId].title }}\n\t\t\t\t\t\t</h2>\n\t\t\t\t\t\t<span :id=\"`panel-${panels[panelId].id}--header--icon--description`\" class=\"hidden-visually\"> {{ t('dashboard', '\"{title} icon\"', { title: panels[panelId].title }) }} </span>\n\t\t\t\t\t</div>\n\t\t\t\t\t<div class=\"panel--content\" :class=\"{ loading: !panels[panelId].mounted }\">\n\t\t\t\t\t\t<div :ref=\"panels[panelId].id\" :data-id=\"panels[panelId].id\" />\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t</template>\n\t\t</Draggable>\n\n\t\t<div class=\"footer\">\n\t\t\t<NcButton @click=\"showModal\">\n\t\t\t\t<template #icon>\n\t\t\t\t\t<Pencil :size=\"20\" />\n\t\t\t\t</template>\n\t\t\t\t{{ t('dashboard', 'Customize') }}\n\t\t\t</NcButton>\n\t\t</div>\n\n\t\t<NcModal v-if=\"modal\" size=\"large\" @close=\"closeModal\">\n\t\t\t<div class=\"modal__content\">\n\t\t\t\t<h2>{{ t('dashboard', 'Edit widgets') }}</h2>\n\t\t\t\t<ol class=\"panels\">\n\t\t\t\t\t<li v-for=\"status in sortedAllStatuses\" :key=\"status\" :class=\"'panel-' + status\">\n\t\t\t\t\t\t<input :id=\"'status-checkbox-' + status\"\n\t\t\t\t\t\t\ttype=\"checkbox\"\n\t\t\t\t\t\t\tclass=\"checkbox\"\n\t\t\t\t\t\t\t:checked=\"isStatusActive(status)\"\n\t\t\t\t\t\t\t@input=\"updateStatusCheckbox(status, $event.target.checked)\">\n\t\t\t\t\t\t<label :for=\"'status-checkbox-' + status\">\n\t\t\t\t\t\t\t<NcUserStatusIcon v-if=\"status === 'status'\" status=\"online\" aria-hidden=\"true\" />\n\t\t\t\t\t\t\t<span v-else :class=\"statusInfo[status].icon\" aria-hidden=\"true\" />\n\t\t\t\t\t\t\t{{ statusInfo[status].text }}\n\t\t\t\t\t\t</label>\n\t\t\t\t\t</li>\n\t\t\t\t</ol>\n\t\t\t\t<Draggable v-model=\"layout\"\n\t\t\t\t\tclass=\"panels\"\n\t\t\t\t\ttag=\"ol\"\n\t\t\t\t\tv-bind=\"{swapThreshold: 0.30, delay: 500, delayOnTouchOnly: true, touchStartThreshold: 3}\"\n\t\t\t\t\thandle=\".draggable\"\n\t\t\t\t\t@end=\"saveLayout\">\n\t\t\t\t\t<li v-for=\"panel in sortedPanels\" :key=\"panel.id\" :class=\"'panel-' + panel.id\">\n\t\t\t\t\t\t<input :id=\"'panel-checkbox-' + panel.id\"\n\t\t\t\t\t\t\ttype=\"checkbox\"\n\t\t\t\t\t\t\tclass=\"checkbox\"\n\t\t\t\t\t\t\t:checked=\"isActive(panel)\"\n\t\t\t\t\t\t\t@input=\"updateCheckbox(panel, $event.target.checked)\">\n\t\t\t\t\t\t<label :for=\"'panel-checkbox-' + panel.id\" :class=\"{ draggable: isActive(panel) }\">\n\t\t\t\t\t\t\t<span :class=\"panel.iconClass\" aria-hidden=\"true\" />\n\t\t\t\t\t\t\t{{ panel.title }}\n\t\t\t\t\t\t</label>\n\t\t\t\t\t</li>\n\t\t\t\t</Draggable>\n\n\t\t\t\t<a v-if=\"isAdmin\" :href=\"appStoreUrl\" class=\"button\">{{ t('dashboard', 'Get more widgets from the App Store') }}</a>\n\n\t\t\t\t<div v-if=\"statuses.weather && isStatusActive('weather')\">\n\t\t\t\t\t<h2>{{ t('dashboard', 'Weather service') }}</h2>\n\t\t\t\t\t<p>\n\t\t\t\t\t\t{{ t('dashboard', 'For your privacy, the weather data is requested by your Nextcloud server on your behalf so the weather service receives no personal information.') }}\n\t\t\t\t\t</p>\n\t\t\t\t\t<p class=\"credits--end\">\n\t\t\t\t\t\t<a href=\"https://api.met.no/doc/TermsOfService\" target=\"_blank\" rel=\"noopener\">{{ t('dashboard', 'Weather data from Met.no') }}</a>,\n\t\t\t\t\t\t<a href=\"https://wiki.osmfoundation.org/wiki/Privacy_Policy\" target=\"_blank\" rel=\"noopener\">{{ t('dashboard', 'geocoding with Nominatim') }}</a>,\n\t\t\t\t\t\t<a href=\"https://www.opentopodata.org/#public-api\" target=\"_blank\" rel=\"noopener\">{{ t('dashboard', 'elevation data from OpenTopoData') }}</a>.\n\t\t\t\t\t</p>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t</NcModal>\n\t</div>\n</template>\n\n<script>\nimport { generateUrl, generateOcsUrl } from '@nextcloud/router'\nimport { getCurrentUser } from '@nextcloud/auth'\nimport { loadState } from '@nextcloud/initial-state'\nimport axios from '@nextcloud/axios'\nimport NcButton from '@nextcloud/vue/dist/Components/NcButton.js'\nimport Draggable from 'vuedraggable'\nimport NcModal from '@nextcloud/vue/dist/Components/NcModal.js'\nimport NcUserStatusIcon from '@nextcloud/vue/dist/Components/NcUserStatusIcon.js'\nimport Pencil from 'vue-material-design-icons/Pencil.vue'\nimport Vue from 'vue'\n\nimport isMobile from './mixins/isMobile.js'\nimport ApiDashboardWidget from './components/ApiDashboardWidget.vue'\n\nconst panels = loadState('dashboard', 'panels')\nconst firstRun = loadState('dashboard', 'firstRun')\n\nconst statusInfo = {\n\tweather: {\n\t\ttext: t('dashboard', 'Weather'),\n\t\ticon: 'icon-weather-status',\n\t},\n\tstatus: {\n\t\ttext: t('dashboard', 'Status'),\n\t},\n}\n\nexport default {\n\tname: 'DashboardApp',\n\tcomponents: {\n\t\tApiDashboardWidget,\n\t\tNcButton,\n\t\tDraggable,\n\t\tNcModal,\n\t\tPencil,\n\t\tNcUserStatusIcon,\n\t},\n\tmixins: [\n\t\tisMobile,\n\t],\n\n\tdata() {\n\t\treturn {\n\t\t\tisAdmin: getCurrentUser().isAdmin,\n\t\t\ttimer: new Date(),\n\t\t\tregisteredStatus: [],\n\t\t\tcallbacks: {},\n\t\t\tcallbacksStatus: {},\n\t\t\tallCallbacksStatus: {},\n\t\t\tstatusInfo,\n\t\t\tenabledStatuses: loadState('dashboard', 'statuses'),\n\t\t\tpanels,\n\t\t\tfirstRun,\n\t\t\tdisplayName: getCurrentUser()?.displayName,\n\t\t\tuid: getCurrentUser()?.uid,\n\t\t\tlayout: loadState('dashboard', 'layout').filter((panelId) => panels[panelId]),\n\t\t\tmodal: false,\n\t\t\tappStoreUrl: generateUrl('/settings/apps/dashboard'),\n\t\t\tstatuses: {},\n\t\t\tapiWidgets: [],\n\t\t\tapiWidgetItems: {},\n\t\t\tloadingItems: true,\n\t\t}\n\t},\n\tcomputed: {\n\t\tgreeting() {\n\t\t\tconst time = this.timer.getHours()\n\n\t\t\t// Determine part of the day\n\t\t\tlet partOfDay\n\t\t\tif (time >= 22 || time < 5) {\n\t\t\t\tpartOfDay = 'night'\n\t\t\t} else if (time >= 18) {\n\t\t\t\tpartOfDay = 'evening'\n\t\t\t} else if (time >= 12) {\n\t\t\t\tpartOfDay = 'afternoon'\n\t\t\t} else {\n\t\t\t\tpartOfDay = 'morning'\n\t\t\t}\n\n\t\t\t// Define the greetings\n\t\t\tconst good = {\n\t\t\t\tmorning: {\n\t\t\t\t\tgeneric: t('dashboard', 'Good morning'),\n\t\t\t\t\twithName: t('dashboard', 'Good morning, {name}', { name: this.displayName }, undefined, { escape: false }),\n\t\t\t\t},\n\t\t\t\tafternoon: {\n\t\t\t\t\tgeneric: t('dashboard', 'Good afternoon'),\n\t\t\t\t\twithName: t('dashboard', 'Good afternoon, {name}', { name: this.displayName }, undefined, { escape: false }),\n\t\t\t\t},\n\t\t\t\tevening: {\n\t\t\t\t\tgeneric: t('dashboard', 'Good evening'),\n\t\t\t\t\twithName: t('dashboard', 'Good evening, {name}', { name: this.displayName }, undefined, { escape: false }),\n\t\t\t\t},\n\t\t\t\tnight: {\n\t\t\t\t\t// Don't use \"Good night\" as it's not a greeting\n\t\t\t\t\tgeneric: t('dashboard', 'Hello'),\n\t\t\t\t\twithName: t('dashboard', 'Hello, {name}', { name: this.displayName }, undefined, { escape: false }),\n\t\t\t\t},\n\t\t\t}\n\n\t\t\t// Figure out which greeting to show\n\t\t\tconst shouldShowName = this.displayName && this.uid !== this.displayName\n\t\t\treturn { text: shouldShowName ? good[partOfDay].withName : good[partOfDay].generic }\n\t\t},\n\n\t\tisActive() {\n\t\t\treturn (panel) => this.layout.indexOf(panel.id) > -1\n\t\t},\n\t\tisStatusActive() {\n\t\t\treturn (status) => !(status in this.enabledStatuses) || this.enabledStatuses[status]\n\t\t},\n\n\t\tsortedAllStatuses() {\n\t\t\treturn Object.keys(this.allCallbacksStatus).slice().sort(this.sortStatuses)\n\t\t},\n\t\tsortedPanels() {\n\t\t\treturn Object.values(this.panels).sort((a, b) => {\n\t\t\t\tconst indexA = this.layout.indexOf(a.id)\n\t\t\t\tconst indexB = this.layout.indexOf(b.id)\n\t\t\t\tif (indexA === -1 || indexB === -1) {\n\t\t\t\t\treturn indexB - indexA || a.id - b.id\n\t\t\t\t}\n\t\t\t\treturn indexA - indexB || a.id - b.id\n\t\t\t})\n\t\t},\n\t\tsortedRegisteredStatus() {\n\t\t\treturn this.registeredStatus.slice().sort(this.sortStatuses)\n\t\t},\n\t},\n\n\twatch: {\n\t\tcallbacks() {\n\t\t\tthis.rerenderPanels()\n\t\t},\n\t\tcallbacksStatus() {\n\t\t\tfor (const app in this.callbacksStatus) {\n\t\t\t\tconst element = this.$refs['status-' + app]\n\t\t\t\tif (this.statuses[app] && this.statuses[app].mounted) {\n\t\t\t\t\tcontinue\n\t\t\t\t}\n\t\t\t\tif (element) {\n\t\t\t\t\tthis.callbacksStatus[app](element[0])\n\t\t\t\t\tVue.set(this.statuses, app, { mounted: true })\n\t\t\t\t} else {\n\t\t\t\t\tconsole.error('Failed to register panel in the frontend as no backend data was provided for ' + app)\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t},\n\n\tasync created() {\n\t\tawait this.fetchApiWidgets()\n\n\t\tconst apiWidgetIdsToFetch = Object\n\t\t\t.values(this.apiWidgets)\n\t\t\t.filter(widget => this.isApiWidgetV2(widget.id))\n\t\t\t.map(widget => widget.id)\n\t\tawait Promise.all(apiWidgetIdsToFetch.map(id => this.fetchApiWidgetItems([id], true)))\n\n\t\tfor (const widget of Object.values(this.apiWidgets)) {\n\t\t\tif (widget.reload_interval > 0) {\n\t\t\t\tsetInterval(async () => {\n\t\t\t\t\tawait this.fetchApiWidgetItems([widget.id], true)\n\t\t\t\t}, widget.reload_interval * 1000)\n\t\t\t}\n\t\t}\n\t},\n\tmounted() {\n\t\tthis.updateSkipLink()\n\t\twindow.addEventListener('scroll', this.handleScroll)\n\n\t\tsetInterval(() => {\n\t\t\tthis.timer = new Date()\n\t\t}, 30000)\n\n\t\tif (this.firstRun) {\n\t\t\twindow.addEventListener('scroll', this.disableFirstrunHint)\n\t\t}\n\t},\n\tdestroyed() {\n\t\twindow.removeEventListener('scroll', this.handleScroll)\n\t},\n\n\tmethods: {\n\t\t/**\n\t\t * Method to register panels that will be called by the integrating apps\n\t\t *\n\t\t * @param {string} app The unique app id for the widget\n\t\t * @param {Function} callback The callback function to register a panel which gets the DOM element passed as parameter\n\t\t */\n\t\tregister(app, callback) {\n\t\t\tVue.set(this.callbacks, app, callback)\n\t\t},\n\t\tregisterStatus(app, callback) {\n\t\t\t// always save callbacks in case user enables the status later\n\t\t\tVue.set(this.allCallbacksStatus, app, callback)\n\t\t\t// register only if status is enabled or missing from config\n\t\t\tif (this.isStatusActive(app)) {\n\t\t\t\tthis.registeredStatus.push(app)\n\t\t\t\tthis.$nextTick(() => {\n\t\t\t\t\tVue.set(this.callbacksStatus, app, callback)\n\t\t\t\t})\n\t\t\t}\n\t\t},\n\t\trerenderPanels() {\n\t\t\tfor (const app in this.callbacks) {\n\t\t\t\t// TODO: Properly rerender v2 widgets\n\t\t\t\tif (this.isApiWidgetV2(this.panels[app].id)) {\n\t\t\t\t\tcontinue\n\t\t\t\t}\n\n\t\t\t\tconst element = this.$refs[app]\n\t\t\t\tif (this.layout.indexOf(app) === -1) {\n\t\t\t\t\tcontinue\n\t\t\t\t}\n\t\t\t\tif (this.panels[app] && this.panels[app].mounted) {\n\t\t\t\t\tcontinue\n\t\t\t\t}\n\t\t\t\tif (element) {\n\t\t\t\t\tthis.callbacks[app](element[0], {\n\t\t\t\t\t\twidget: this.panels[app],\n\t\t\t\t\t})\n\t\t\t\t\tVue.set(this.panels[app], 'mounted', true)\n\t\t\t\t} else {\n\t\t\t\t\tconsole.error('Failed to register panel in the frontend as no backend data was provided for ' + app)\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\tsaveLayout() {\n\t\t\taxios.post(generateUrl('/apps/dashboard/layout'), {\n\t\t\t\tlayout: this.layout.join(','),\n\t\t\t})\n\t\t},\n\t\tsaveStatuses() {\n\t\t\taxios.post(generateUrl('/apps/dashboard/statuses'), {\n\t\t\t\tstatuses: JSON.stringify(this.enabledStatuses),\n\t\t\t})\n\t\t},\n\t\tshowModal() {\n\t\t\tthis.modal = true\n\t\t\tthis.firstRun = false\n\t\t},\n\t\tcloseModal() {\n\t\t\tthis.modal = false\n\t\t},\n\t\tupdateCheckbox(panel, currentValue) {\n\t\t\tconst index = this.layout.indexOf(panel.id)\n\t\t\tif (!currentValue && index > -1) {\n\t\t\t\tthis.layout.splice(index, 1)\n\n\t\t\t} else {\n\t\t\t\tthis.layout.push(panel.id)\n\t\t\t}\n\t\t\tVue.set(this.panels[panel.id], 'mounted', false)\n\t\t\tthis.saveLayout()\n\t\t\tthis.$nextTick(() => this.rerenderPanels())\n\t\t},\n\t\tdisableFirstrunHint() {\n\t\t\twindow.removeEventListener('scroll', this.disableFirstrunHint)\n\t\t\tsetTimeout(() => {\n\t\t\t\tthis.firstRun = false\n\t\t\t}, 1000)\n\t\t},\n\t\tupdateSkipLink() {\n\t\t\t// Make sure \"Skip to main content\" link points to the app content\n\t\t\tdocument.getElementsByClassName('skip-navigation')[0].setAttribute('href', '#app-dashboard')\n\t\t},\n\t\tupdateStatusCheckbox(app, checked) {\n\t\t\tif (checked) {\n\t\t\t\tthis.enableStatus(app)\n\t\t\t} else {\n\t\t\t\tthis.disableStatus(app)\n\t\t\t}\n\t\t},\n\t\tenableStatus(app) {\n\t\t\tthis.enabledStatuses[app] = true\n\t\t\tthis.registerStatus(app, this.allCallbacksStatus[app])\n\t\t\tthis.saveStatuses()\n\t\t},\n\t\tdisableStatus(app) {\n\t\t\tthis.enabledStatuses[app] = false\n\t\t\tconst i = this.registeredStatus.findIndex((s) => s === app)\n\t\t\tif (i !== -1) {\n\t\t\t\tthis.registeredStatus.splice(i, 1)\n\t\t\t\tVue.set(this.statuses, app, { mounted: false })\n\t\t\t\tthis.$nextTick(() => {\n\t\t\t\t\tVue.delete(this.callbacksStatus, app)\n\t\t\t\t})\n\t\t\t}\n\t\t\tthis.saveStatuses()\n\t\t},\n\t\tsortStatuses(a, b) {\n\t\t\tconst al = a.toLowerCase()\n\t\t\tconst bl = b.toLowerCase()\n\t\t\treturn al > bl\n\t\t\t\t? 1\n\t\t\t\t: al < bl\n\t\t\t\t\t? -1\n\t\t\t\t\t: 0\n\t\t},\n\t\thandleScroll() {\n\t\t\tif (window.scrollY > 70) {\n\t\t\t\tdocument.body.classList.add('dashboard--scrolled')\n\t\t\t} else {\n\t\t\t\tdocument.body.classList.remove('dashboard--scrolled')\n\t\t\t}\n\t\t},\n\t\tasync fetchApiWidgets() {\n\t\t\tconst response = await axios.get(generateOcsUrl('/apps/dashboard/api/v1/widgets'))\n\t\t\tthis.apiWidgets = response.data.ocs.data\n\t\t},\n\t\tasync fetchApiWidgetItems(widgetIds, merge = false) {\n\t\t\ttry {\n\t\t\t\tconst url = generateOcsUrl('/apps/dashboard/api/v2/widget-items')\n\t\t\t\tconst params = new URLSearchParams(widgetIds.map(id => ['widgets[]', id]))\n\t\t\t\tconst response = await axios.get(`${url}?${params.toString()}`)\n\t\t\t\tconst widgetItems = response.data.ocs.data\n\t\t\t\tif (merge) {\n\t\t\t\t\tthis.apiWidgetItems = Object.assign({}, this.apiWidgetItems, widgetItems)\n\t\t\t\t} else {\n\t\t\t\t\tthis.apiWidgetItems = widgetItems\n\t\t\t\t}\n\t\t\t} finally {\n\t\t\t\tthis.loadingItems = false\n\t\t\t}\n\t\t},\n\t\tisApiWidgetV2(id) {\n\t\t\tfor (const widget of Object.values(this.apiWidgets)) {\n\t\t\t\tif (widget.id === id && widget.item_api_versions.includes(2)) {\n\t\t\t\t\treturn true\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn false\n\t\t},\n\t},\n}\n<\/script>\n\n<style lang=\"scss\" scoped>\n#app-dashboard {\n\twidth: 100%;\n\tmin-height: 100%;\n\tbackground-size: cover;\n\tbackground-position: center center;\n\tbackground-repeat: no-repeat;\n\tbackground-attachment: fixed;\n\n\t> h2 {\n\t\t// this is shown directly on the background which has `color-primary`, so we need `color-primary-text`\n\t\tcolor: var(--color-primary-text);\n\t\ttext-align: center;\n\t\tfont-size: 32px;\n\t\tline-height: 130%;\n\t\tpadding: 1rem 0;\n\t}\n}\n\n.panels {\n\twidth: auto;\n\tmargin: auto;\n\tmax-width: 1800px;\n\tdisplay: flex;\n\tjustify-content: center;\n\tflex-direction: row;\n\talign-items: flex-start;\n\tflex-wrap: wrap;\n}\n\n.panel, .panels > div {\n\t// Ensure the maxcontrast color is set for the background\n\t--color-text-maxcontrast: var(--color-text-maxcontrast-background-blur, var(--color-main-text));\n\n\twidth: 320px;\n\tmax-width: 100%;\n\tmargin: 16px;\n\talign-self: stretch;\n\tbackground-color: var(--color-main-background-blur);\n\t-webkit-backdrop-filter: var(--filter-background-blur);\n\tbackdrop-filter: var(--filter-background-blur);\n\tborder-radius: var(--border-radius-rounded);\n\n\t#body-user.theme--highcontrast & {\n\t\tborder: 2px solid var(--color-border);\n\t}\n\n\t&.sortable-ghost {\n\t\t opacity: 0.1;\n\t}\n\n\t& > .panel--header {\n\t\tdisplay: flex;\n\t\tz-index: 1;\n\t\ttop: 50px;\n\t\tpadding: 16px;\n\t\tcursor: grab;\n\n\t\t&, ::v-deep * {\n\t\t\t-webkit-touch-callout: none;\n\t\t\t-webkit-user-select: none;\n\t\t\t-khtml-user-select: none;\n\t\t\t-moz-user-select: none;\n\t\t\t-ms-user-select: none;\n\t\t\tuser-select: none;\n\t\t}\n\n\t\t&:active {\n\t\t\tcursor: grabbing;\n\t\t}\n\n\t\ta {\n\t\t\tflex-grow: 1;\n\t\t}\n\n\t\t> h2 {\n\t\t\tdisplay: block;\n\t\t\talign-items: center;\n\t\t\tflex-grow: 1;\n\t\t\tmargin: 0;\n\t\t\tfont-size: 20px;\n\t\t\tline-height: 24px;\n\t\t\tfont-weight: bold;\n\t\t\tpadding: 16px 8px;\n\t\t\theight: 56px;\n\t\t\twhite-space: nowrap;\n\t\t\toverflow: hidden;\n\t\t\ttext-overflow: ellipsis;\n\t\t\tcursor: grab;\n\t\t\tspan {\n\t\t\t\tbackground-size: 32px;\n\t\t\t\twidth: 32px;\n\t\t\t\theight: 32px;\n\t\t\t\tmargin-right: 16px;\n\t\t\t\tbackground-position: center;\n\t\t\t\tfloat: left;\n\t\t\t\tmargin-top: -6px;\n\t\t\t}\n\t\t}\n\t}\n\n\t& > .panel--content {\n\t\tmargin: 0 16px 16px 16px;\n\t\theight: 424px;\n\t\t// We specifically do not want scrollbars inside widgets\n\t\toverflow: visible;\n\t}\n\n\t// No need to extend height of widgets if only one column is shown\n\t@media only screen and (max-width: 709px) {\n\t\t& > .panel--content {\n\t\t\theight: auto;\n\t\t}\n\t}\n}\n\n.footer {\n\tdisplay: flex;\n\tjustify-content: center;\n\ttransition: bottom var(--animation-slow) ease-in-out;\n\tpadding: 1rem 0;\n}\n\n.edit-panels {\n\tdisplay: inline-block;\n\tmargin:auto;\n\tbackground-position: 16px center;\n\tpadding: 12px 16px;\n\tpadding-left: 36px;\n\tborder-radius: var(--border-radius-pill);\n\tmax-width: 200px;\n\topacity: 1;\n\ttext-align: center;\n}\n\n.button,\n.button-vue,\n.edit-panels,\n.statuses ::v-deep .action-item .action-item__menutoggle,\n.statuses ::v-deep .action-item.action-item--open .action-item__menutoggle {\n\t// Ensure the maxcontrast color is set for the background\n\t--color-text-maxcontrast: var(--color-text-maxcontrast-background-blur, var(--color-main-text));\n\n\tbackground-color: var(--color-main-background-blur);\n\t-webkit-backdrop-filter: var(--filter-background-blur);\n\tbackdrop-filter: var(--filter-background-blur);\n\topacity: 1 !important;\n\n\t&:hover,\n\t&:focus,\n\t&:active {\n\t\tbackground-color: var(--color-background-hover)!important;\n\t}\n\t&:focus-visible {\n\t\tbox-shadow: 0 0 0 4px var(--color-main-background) !important;\n\t\toutline: 2px solid var(--color-main-text) !important;\n\t}\n}\n\n.modal__content {\n\tpadding: 32px 16px;\n\ttext-align: center;\n\n\tol {\n\t\tdisplay: flex;\n\t\tflex-direction: row;\n\t\tjustify-content: center;\n\t\tlist-style-type: none;\n\t\tpadding-bottom: 16px;\n\t}\n\tli {\n\t\tlabel {\n\t\t\tposition: relative;\n\t\t\tdisplay: block;\n\t\t\tpadding: 48px 16px 14px 16px;\n\t\t\tmargin: 8px;\n\t\t\twidth: 140px;\n\t\t\tbackground-color: var(--color-background-hover);\n\t\t\tborder: 2px solid var(--color-main-background);\n\t\t\tborder-radius: var(--border-radius-large);\n\t\t\ttext-align: left;\n\t\t\toverflow: hidden;\n\t\t\ttext-overflow: ellipsis;\n\t\t\twhite-space: nowrap;\n\n\t\t\tspan {\n\t\t\t\tposition: absolute;\n\t\t\t\ttop: 16px;\n\t\t\t\twidth: 24px;\n\t\t\t\theight: 24px;\n\t\t\t\tbackground-size: 24px;\n\t\t\t}\n\n\t\t\t&:hover {\n\t\t\t\tborder-color: var(--color-primary-element);\n\t\t\t}\n\t\t}\n\n\t\t// Do not invert status icons\n\t\t&:not(.panel-status) label span {\n\t\t\tfilter: var(--background-invert-if-dark);\n\t\t}\n\n\t\tinput[type='checkbox'].checkbox + label:before {\n\t\t\tposition: absolute;\n\t\t\tright: 12px;\n\t\t\ttop: 16px;\n\t\t}\n\n\t\tinput:focus + label {\n\t\t\tborder-color: var(--color-primary-element);\n\t\t}\n\t}\n\n\th2 {\n\t\tfont-weight: bold;\n\t\tmargin-top: 12px;\n\t}\n\n\t// Adjust design of 'Get more widgets' button\n\t.button {\n\t\tdisplay: inline-block;\n\t\tpadding: 10px 16px;\n\t\tmargin: 0;\n\t}\n\n\tp {\n\t\tmax-width: 650px;\n\t\tmargin: 0 auto;\n\n\t\ta:hover,\n\t\ta:focus {\n\t\t\tborder-bottom: 2px solid var(--color-border);\n\t\t}\n\t}\n\n\t.credits--end {\n\t\tpadding-bottom: 32px;\n\t\tcolor: var(--color-text-maxcontrast);\n\n\t\ta {\n\t\t\tcolor: var(--color-text-maxcontrast);\n\t\t}\n\t}\n}\n\n.flip-list-move {\n\ttransition: transform var(--animation-slow);\n}\n\n.statuses {\n\tdisplay: flex;\n\tflex-direction: row;\n\tjustify-content: center;\n\tflex-wrap: wrap;\n\tmargin-bottom: 36px;\n\n\t& > li {\n\t\tmargin: 8px;\n\t}\n}\n</style>\n<style>\nhtml, body {\n\tbackground-attachment: fixed;\n}\n\n#body-user #header {\n\tposition: fixed;\n}\n\n#content {\n\toverflow: auto;\n}\n</style>\n"],sourceRoot:""}]);const s=r},31715:(t,e,n)=>{"use strict";function o(t){return o="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},o(t)}function a(t,e,n){return e in t?Object.defineProperty(t,e,{value:n,enumerable:!0,configurable:!0,writable:!0}):t[e]=n,t}function i(){return i=Object.assign||function(t){for(var e=1;e<arguments.length;e++){var n=arguments[e];for(var o in n)Object.prototype.hasOwnProperty.call(n,o)&&(t[o]=n[o])}return t},i.apply(this,arguments)}function r(t){for(var e=1;e<arguments.length;e++){var n=null!=arguments[e]?arguments[e]:{},o=Object.keys(n);"function"==typeof Object.getOwnPropertySymbols&&(o=o.concat(Object.getOwnPropertySymbols(n).filter((function(t){return Object.getOwnPropertyDescriptor(n,t).enumerable})))),o.forEach((function(e){a(t,e,n[e])}))}return t}function s(t){if("undefined"!=typeof window&&window.navigator)return!!navigator.userAgent.match(t)}n.r(e),n.d(e,{MultiDrag:()=>ve,Sortable:()=>Lt,Swap:()=>ie,default:()=>Ae});var l=s(/(?:Trident.*rv[ :]?11\.|msie|iemobile|Windows Phone)/i),c=s(/Edge/i),d=s(/firefox/i),u=s(/safari/i)&&!s(/chrome/i)&&!s(/android/i),p=s(/iP(ad|od|hone)/i),h=s(/chrome/i)&&s(/android/i),f={capture:!1,passive:!1};function g(t,e,n){t.addEventListener(e,n,!l&&f)}function v(t,e,n){t.removeEventListener(e,n,!l&&f)}function m(t,e){if(e){if(">"===e[0]&&(e=e.substring(1)),t)try{if(t.matches)return t.matches(e);if(t.msMatchesSelector)return t.msMatchesSelector(e);if(t.webkitMatchesSelector)return t.webkitMatchesSelector(e)}catch(t){return!1}return!1}}function b(t){return t.host&&t!==document&&t.host.nodeType?t.host:t.parentNode}function A(t,e,n,o){if(t){n=n||document;do{if(null!=e&&(">"===e[0]?t.parentNode===n&&m(t,e):m(t,e))||o&&t===n)return t;if(t===n)break}while(t=b(t))}return null}var y,x=/\s+/g;function w(t,e,n){if(t&&e)if(t.classList)t.classList[n?"add":"remove"](e);else{var o=(" "+t.className+" ").replace(x," ").replace(" "+e+" "," ");t.className=(o+(n?" "+e:"")).replace(x," ")}}function C(t,e,n){var o=t&&t.style;if(o){if(void 0===n)return document.defaultView&&document.defaultView.getComputedStyle?n=document.defaultView.getComputedStyle(t,""):t.currentStyle&&(n=t.currentStyle),void 0===e?n:n[e];e in o||-1!==e.indexOf("webkit")||(e="-webkit-"+e),o[e]=n+("string"==typeof n?"":"px")}}function S(t,e){var n="";if("string"==typeof t)n=t;else do{var o=C(t,"transform");o&&"none"!==o&&(n=o+" "+n)}while(!e&&(t=t.parentNode));var a=window.DOMMatrix||window.WebKitCSSMatrix||window.CSSMatrix||window.MSCSSMatrix;return a&&new a(n)}function k(t,e,n){if(t){var o=t.getElementsByTagName(e),a=0,i=o.length;if(n)for(;a<i;a++)n(o[a],a);return o}return[]}function _(){return document.scrollingElement||document.documentElement}function E(t,e,n,o,a){if(t.getBoundingClientRect||t===window){var i,r,s,c,d,u,p;if(t!==window&&t!==_()?(r=(i=t.getBoundingClientRect()).top,s=i.left,c=i.bottom,d=i.right,u=i.height,p=i.width):(r=0,s=0,c=window.innerHeight,d=window.innerWidth,u=window.innerHeight,p=window.innerWidth),(e||n)&&t!==window&&(a=a||t.parentNode,!l))do{if(a&&a.getBoundingClientRect&&("none"!==C(a,"transform")||n&&"static"!==C(a,"position"))){var h=a.getBoundingClientRect();r-=h.top+parseInt(C(a,"border-top-width")),s-=h.left+parseInt(C(a,"border-left-width")),c=r+i.height,d=s+i.width;break}}while(a=a.parentNode);if(o&&t!==window){var f=S(a||t),g=f&&f.a,v=f&&f.d;f&&(c=(r/=v)+(u/=v),d=(s/=g)+(p/=g))}return{top:r,left:s,bottom:c,right:d,width:p,height:u}}}function D(t,e,n){for(var o=M(t,!0),a=E(t)[e];o;){var i=E(o)[n];if(!("top"===n||"left"===n?a>=i:a<=i))return o;if(o===_())break;o=M(o,!1)}return!1}function O(t,e,n){for(var o=0,a=0,i=t.children;a<i.length;){if("none"!==i[a].style.display&&i[a]!==Lt.ghost&&i[a]!==Lt.dragged&&A(i[a],n.draggable,t,!1)){if(o===e)return i[a];o++}a++}return null}function N(t,e){for(var n=t.lastElementChild;n&&(n===Lt.ghost||"none"===C(n,"display")||e&&!m(n,e));)n=n.previousElementSibling;return n||null}function I(t,e){var n=0;if(!t||!t.parentNode)return-1;for(;t=t.previousElementSibling;)"TEMPLATE"===t.nodeName.toUpperCase()||t===Lt.clone||e&&!m(t,e)||n++;return n}function T(t){var e=0,n=0,o=_();if(t)do{var a=S(t),i=a.a,r=a.d;e+=t.scrollLeft*i,n+=t.scrollTop*r}while(t!==o&&(t=t.parentNode));return[e,n]}function M(t,e){if(!t||!t.getBoundingClientRect)return _();var n=t,o=!1;do{if(n.clientWidth<n.scrollWidth||n.clientHeight<n.scrollHeight){var a=C(n);if(n.clientWidth<n.scrollWidth&&("auto"==a.overflowX||"scroll"==a.overflowX)||n.clientHeight<n.scrollHeight&&("auto"==a.overflowY||"scroll"==a.overflowY)){if(!n.getBoundingClientRect||n===document.body)return _();if(o||e)return n;o=!0}}}while(n=n.parentNode);return _()}function j(t,e){return Math.round(t.top)===Math.round(e.top)&&Math.round(t.left)===Math.round(e.left)&&Math.round(t.height)===Math.round(e.height)&&Math.round(t.width)===Math.round(e.width)}function P(t,e){return function(){if(!y){var n=arguments;1===n.length?t.call(this,n[0]):t.apply(this,n),y=setTimeout((function(){y=void 0}),e)}}}function B(t,e,n){t.scrollLeft+=e,t.scrollTop+=n}function L(t){var e=window.Polymer,n=window.jQuery||window.Zepto;return e&&e.dom?e.dom(t).cloneNode(!0):n?n(t).clone(!0)[0]:t.cloneNode(!0)}function W(t,e){C(t,"position","absolute"),C(t,"top",e.top),C(t,"left",e.left),C(t,"width",e.width),C(t,"height",e.height)}function F(t){C(t,"position",""),C(t,"top",""),C(t,"left",""),C(t,"width",""),C(t,"height","")}var R="Sortable"+(new Date).getTime();var U=[],$={initializeByDefault:!0},G={mount:function(t){for(var e in $)$.hasOwnProperty(e)&&!(e in t)&&(t[e]=$[e]);U.push(t)},pluginEvent:function(t,e,n){var o=this;this.eventCanceled=!1,n.cancel=function(){o.eventCanceled=!0};var a=t+"Global";U.forEach((function(o){e[o.pluginName]&&(e[o.pluginName][a]&&e[o.pluginName][a](r({sortable:e},n)),e.options[o.pluginName]&&e[o.pluginName][t]&&e[o.pluginName][t](r({sortable:e},n)))}))},initializePlugins:function(t,e,n,o){for(var a in U.forEach((function(o){var a=o.pluginName;if(t.options[a]||o.initializeByDefault){var r=new o(t,e,t.options);r.sortable=t,r.options=t.options,t[a]=r,i(n,r.defaults)}})),t.options)if(t.options.hasOwnProperty(a)){var r=this.modifyOption(t,a,t.options[a]);void 0!==r&&(t.options[a]=r)}},getEventProperties:function(t,e){var n={};return U.forEach((function(o){"function"==typeof o.eventProperties&&i(n,o.eventProperties.call(e[o.pluginName],t))})),n},modifyOption:function(t,e,n){var o;return U.forEach((function(a){t[a.pluginName]&&a.optionListeners&&"function"==typeof a.optionListeners[e]&&(o=a.optionListeners[e].call(t[a.pluginName],n))})),o}};function z(t){var e=t.sortable,n=t.rootEl,o=t.name,a=t.targetEl,i=t.cloneEl,s=t.toEl,d=t.fromEl,u=t.oldIndex,p=t.newIndex,h=t.oldDraggableIndex,f=t.newDraggableIndex,g=t.originalEvent,v=t.putSortable,m=t.extraEventProperties;if(e=e||n&&n[R]){var b,A=e.options,y="on"+o.charAt(0).toUpperCase()+o.substr(1);!window.CustomEvent||l||c?(b=document.createEvent("Event")).initEvent(o,!0,!0):b=new CustomEvent(o,{bubbles:!0,cancelable:!0}),b.to=s||n,b.from=d||n,b.item=a||n,b.clone=i,b.oldIndex=u,b.newIndex=p,b.oldDraggableIndex=h,b.newDraggableIndex=f,b.originalEvent=g,b.pullMode=v?v.lastPutMode:void 0;var x=r({},m,G.getEventProperties(o,e));for(var w in x)b[w]=x[w];n&&n.dispatchEvent(b),A[y]&&A[y].call(e,b)}}var Z=function(t,e){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{},o=n.evt,a=function(t,e){if(null==t)return{};var n,o,a=function(t,e){if(null==t)return{};var n,o,a={},i=Object.keys(t);for(o=0;o<i.length;o++)n=i[o],e.indexOf(n)>=0||(a[n]=t[n]);return a}(t,e);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(t);for(o=0;o<i.length;o++)n=i[o],e.indexOf(n)>=0||Object.prototype.propertyIsEnumerable.call(t,n)&&(a[n]=t[n])}return a}(n,["evt"]);G.pluginEvent.bind(Lt)(t,e,r({dragEl:V,parentEl:Y,ghostEl:X,rootEl:q,nextEl:K,lastDownEl:Q,cloneEl:J,cloneHidden:tt,dragStarted:ht,putSortable:rt,activeSortable:Lt.active,originalEvent:o,oldIndex:et,oldDraggableIndex:ot,newIndex:nt,newDraggableIndex:at,hideGhostForTarget:Mt,unhideGhostForTarget:jt,cloneNowHidden:function(){tt=!0},cloneNowShown:function(){tt=!1},dispatchSortableEvent:function(t){H({sortable:e,name:t,originalEvent:o})}},a))};function H(t){z(r({putSortable:rt,cloneEl:J,targetEl:V,rootEl:q,oldIndex:et,oldDraggableIndex:ot,newIndex:nt,newDraggableIndex:at},t))}var V,Y,X,q,K,Q,J,tt,et,nt,ot,at,it,rt,st,lt,ct,dt,ut,pt,ht,ft,gt,vt,mt,bt=!1,At=!1,yt=[],xt=!1,wt=!1,Ct=[],St=!1,kt=[],_t="undefined"!=typeof document,Et=p,Dt=c||l?"cssFloat":"float",Ot=_t&&!h&&!p&&"draggable"in document.createElement("div"),Nt=function(){if(_t){if(l)return!1;var t=document.createElement("x");return t.style.cssText="pointer-events:auto","auto"===t.style.pointerEvents}}(),It=function(t,e){var n=C(t),o=parseInt(n.width)-parseInt(n.paddingLeft)-parseInt(n.paddingRight)-parseInt(n.borderLeftWidth)-parseInt(n.borderRightWidth),a=O(t,0,e),i=O(t,1,e),r=a&&C(a),s=i&&C(i),l=r&&parseInt(r.marginLeft)+parseInt(r.marginRight)+E(a).width,c=s&&parseInt(s.marginLeft)+parseInt(s.marginRight)+E(i).width;if("flex"===n.display)return"column"===n.flexDirection||"column-reverse"===n.flexDirection?"vertical":"horizontal";if("grid"===n.display)return n.gridTemplateColumns.split(" ").length<=1?"vertical":"horizontal";if(a&&r.float&&"none"!==r.float){var d="left"===r.float?"left":"right";return!i||"both"!==s.clear&&s.clear!==d?"horizontal":"vertical"}return a&&("block"===r.display||"flex"===r.display||"table"===r.display||"grid"===r.display||l>=o&&"none"===n[Dt]||i&&"none"===n[Dt]&&l+c>o)?"vertical":"horizontal"},Tt=function(t){function e(t,n){return function(o,a,i,r){var s=o.options.group.name&&a.options.group.name&&o.options.group.name===a.options.group.name;if(null==t&&(n||s))return!0;if(null==t||!1===t)return!1;if(n&&"clone"===t)return t;if("function"==typeof t)return e(t(o,a,i,r),n)(o,a,i,r);var l=(n?o:a).options.group.name;return!0===t||"string"==typeof t&&t===l||t.join&&t.indexOf(l)>-1}}var n={},a=t.group;a&&"object"==o(a)||(a={name:a}),n.name=a.name,n.checkPull=e(a.pull,!0),n.checkPut=e(a.put),n.revertClone=a.revertClone,t.group=n},Mt=function(){!Nt&&X&&C(X,"display","none")},jt=function(){!Nt&&X&&C(X,"display","")};_t&&document.addEventListener("click",(function(t){if(At)return t.preventDefault(),t.stopPropagation&&t.stopPropagation(),t.stopImmediatePropagation&&t.stopImmediatePropagation(),At=!1,!1}),!0);var Pt=function(t){if(V){t=t.touches?t.touches[0]:t;var e=(a=t.clientX,i=t.clientY,yt.some((function(t){if(!N(t)){var e=E(t),n=t[R].options.emptyInsertThreshold,o=a>=e.left-n&&a<=e.right+n,s=i>=e.top-n&&i<=e.bottom+n;return n&&o&&s?r=t:void 0}})),r);if(e){var n={};for(var o in t)t.hasOwnProperty(o)&&(n[o]=t[o]);n.target=n.rootEl=e,n.preventDefault=void 0,n.stopPropagation=void 0,e[R]._onDragOver(n)}}var a,i,r},Bt=function(t){V&&V.parentNode[R]._isOutsideThisEl(t.target)};function Lt(t,e){if(!t||!t.nodeType||1!==t.nodeType)throw"Sortable: `el` must be an HTMLElement, not ".concat({}.toString.call(t));this.el=t,this.options=e=i({},e),t[R]=this;var n,o,a={group:null,sort:!0,disabled:!1,store:null,handle:null,draggable:/^[uo]l$/i.test(t.nodeName)?">li":">*",swapThreshold:1,invertSwap:!1,invertedSwapThreshold:null,removeCloneOnHide:!0,direction:function(){return It(t,this.options)},ghostClass:"sortable-ghost",chosenClass:"sortable-chosen",dragClass:"sortable-drag",ignore:"a, img",filter:null,preventOnFilter:!0,animation:0,easing:null,setData:function(t,e){t.setData("Text",e.textContent)},dropBubble:!1,dragoverBubble:!1,dataIdAttr:"data-id",delay:0,delayOnTouchOnly:!1,touchStartThreshold:(Number.parseInt?Number:window).parseInt(window.devicePixelRatio,10)||1,forceFallback:!1,fallbackClass:"sortable-fallback",fallbackOnBody:!1,fallbackTolerance:0,fallbackOffset:{x:0,y:0},supportPointer:!1!==Lt.supportPointer&&"PointerEvent"in window,emptyInsertThreshold:5};for(var s in G.initializePlugins(this,t,a),a)!(s in e)&&(e[s]=a[s]);for(var l in Tt(e),this)"_"===l.charAt(0)&&"function"==typeof this[l]&&(this[l]=this[l].bind(this));this.nativeDraggable=!e.forceFallback&&Ot,this.nativeDraggable&&(this.options.touchStartThreshold=1),e.supportPointer?g(t,"pointerdown",this._onTapStart):(g(t,"mousedown",this._onTapStart),g(t,"touchstart",this._onTapStart)),this.nativeDraggable&&(g(t,"dragover",this),g(t,"dragenter",this)),yt.push(this.el),e.store&&e.store.get&&this.sort(e.store.get(this)||[]),i(this,(o=[],{captureAnimationState:function(){o=[],this.options.animation&&[].slice.call(this.el.children).forEach((function(t){if("none"!==C(t,"display")&&t!==Lt.ghost){o.push({target:t,rect:E(t)});var e=r({},o[o.length-1].rect);if(t.thisAnimationDuration){var n=S(t,!0);n&&(e.top-=n.f,e.left-=n.e)}t.fromRect=e}}))},addAnimationState:function(t){o.push(t)},removeAnimationState:function(t){o.splice(function(t,e){for(var n in t)if(t.hasOwnProperty(n))for(var o in e)if(e.hasOwnProperty(o)&&e[o]===t[n][o])return Number(n);return-1}(o,{target:t}),1)},animateAll:function(t){var e=this;if(!this.options.animation)return clearTimeout(n),void("function"==typeof t&&t());var a=!1,i=0;o.forEach((function(t){var n=0,o=t.target,r=o.fromRect,s=E(o),l=o.prevFromRect,c=o.prevToRect,d=t.rect,u=S(o,!0);u&&(s.top-=u.f,s.left-=u.e),o.toRect=s,o.thisAnimationDuration&&j(l,s)&&!j(r,s)&&(d.top-s.top)/(d.left-s.left)==(r.top-s.top)/(r.left-s.left)&&(n=function(t,e,n,o){return Math.sqrt(Math.pow(e.top-t.top,2)+Math.pow(e.left-t.left,2))/Math.sqrt(Math.pow(e.top-n.top,2)+Math.pow(e.left-n.left,2))*o.animation}(d,l,c,e.options)),j(s,r)||(o.prevFromRect=r,o.prevToRect=s,n||(n=e.options.animation),e.animate(o,d,s,n)),n&&(a=!0,i=Math.max(i,n),clearTimeout(o.animationResetTimer),o.animationResetTimer=setTimeout((function(){o.animationTime=0,o.prevFromRect=null,o.fromRect=null,o.prevToRect=null,o.thisAnimationDuration=null}),n),o.thisAnimationDuration=n)})),clearTimeout(n),a?n=setTimeout((function(){"function"==typeof t&&t()}),i):"function"==typeof t&&t(),o=[]},animate:function(t,e,n,o){if(o){C(t,"transition",""),C(t,"transform","");var a=S(this.el),i=a&&a.a,r=a&&a.d,s=(e.left-n.left)/(i||1),l=(e.top-n.top)/(r||1);t.animatingX=!!s,t.animatingY=!!l,C(t,"transform","translate3d("+s+"px,"+l+"px,0)"),function(t){t.offsetWidth}(t),C(t,"transition","transform "+o+"ms"+(this.options.easing?" "+this.options.easing:"")),C(t,"transform","translate3d(0,0,0)"),"number"==typeof t.animated&&clearTimeout(t.animated),t.animated=setTimeout((function(){C(t,"transition",""),C(t,"transform",""),t.animated=!1,t.animatingX=!1,t.animatingY=!1}),o)}}}))}function Wt(t,e,n,o,a,i,r,s){var d,u,p=t[R],h=p.options.onMove;return!window.CustomEvent||l||c?(d=document.createEvent("Event")).initEvent("move",!0,!0):d=new CustomEvent("move",{bubbles:!0,cancelable:!0}),d.to=e,d.from=t,d.dragged=n,d.draggedRect=o,d.related=a||e,d.relatedRect=i||E(e),d.willInsertAfter=s,d.originalEvent=r,t.dispatchEvent(d),h&&(u=h.call(p,d,r)),u}function Ft(t){t.draggable=!1}function Rt(){St=!1}function Ut(t){for(var e=t.tagName+t.className+t.src+t.href+t.textContent,n=e.length,o=0;n--;)o+=e.charCodeAt(n);return o.toString(36)}function $t(t){return setTimeout(t,0)}function Gt(t){return clearTimeout(t)}Lt.prototype={constructor:Lt,_isOutsideThisEl:function(t){this.el.contains(t)||t===this.el||(ft=null)},_getDirection:function(t,e){return"function"==typeof this.options.direction?this.options.direction.call(this,t,e,V):this.options.direction},_onTapStart:function(t){if(t.cancelable){var e=this,n=this.el,o=this.options,a=o.preventOnFilter,i=t.type,r=t.touches&&t.touches[0]||t.pointerType&&"touch"===t.pointerType&&t,s=(r||t).target,l=t.target.shadowRoot&&(t.path&&t.path[0]||t.composedPath&&t.composedPath()[0])||s,c=o.filter;if(function(t){kt.length=0;for(var e=t.getElementsByTagName("input"),n=e.length;n--;){var o=e[n];o.checked&&kt.push(o)}}(n),!V&&!(/mousedown|pointerdown/.test(i)&&0!==t.button||o.disabled||l.isContentEditable||(s=A(s,o.draggable,n,!1))&&s.animated||Q===s)){if(et=I(s),ot=I(s,o.draggable),"function"==typeof c){if(c.call(this,t,s,this))return H({sortable:e,rootEl:l,name:"filter",targetEl:s,toEl:n,fromEl:n}),Z("filter",e,{evt:t}),void(a&&t.cancelable&&t.preventDefault())}else if(c&&(c=c.split(",").some((function(o){if(o=A(l,o.trim(),n,!1))return H({sortable:e,rootEl:o,name:"filter",targetEl:s,fromEl:n,toEl:n}),Z("filter",e,{evt:t}),!0}))))return void(a&&t.cancelable&&t.preventDefault());o.handle&&!A(l,o.handle,n,!1)||this._prepareDragStart(t,r,s)}}},_prepareDragStart:function(t,e,n){var o,a=this,i=a.el,r=a.options,s=i.ownerDocument;if(n&&!V&&n.parentNode===i){var u=E(n);if(q=i,Y=(V=n).parentNode,K=V.nextSibling,Q=n,it=r.group,Lt.dragged=V,st={target:V,clientX:(e||t).clientX,clientY:(e||t).clientY},ut=st.clientX-u.left,pt=st.clientY-u.top,this._lastX=(e||t).clientX,this._lastY=(e||t).clientY,V.style["will-change"]="all",o=function(){Z("delayEnded",a,{evt:t}),Lt.eventCanceled?a._onDrop():(a._disableDelayedDragEvents(),!d&&a.nativeDraggable&&(V.draggable=!0),a._triggerDragStart(t,e),H({sortable:a,name:"choose",originalEvent:t}),w(V,r.chosenClass,!0))},r.ignore.split(",").forEach((function(t){k(V,t.trim(),Ft)})),g(s,"dragover",Pt),g(s,"mousemove",Pt),g(s,"touchmove",Pt),g(s,"mouseup",a._onDrop),g(s,"touchend",a._onDrop),g(s,"touchcancel",a._onDrop),d&&this.nativeDraggable&&(this.options.touchStartThreshold=4,V.draggable=!0),Z("delayStart",this,{evt:t}),!r.delay||r.delayOnTouchOnly&&!e||this.nativeDraggable&&(c||l))o();else{if(Lt.eventCanceled)return void this._onDrop();g(s,"mouseup",a._disableDelayedDrag),g(s,"touchend",a._disableDelayedDrag),g(s,"touchcancel",a._disableDelayedDrag),g(s,"mousemove",a._delayedDragTouchMoveHandler),g(s,"touchmove",a._delayedDragTouchMoveHandler),r.supportPointer&&g(s,"pointermove",a._delayedDragTouchMoveHandler),a._dragStartTimer=setTimeout(o,r.delay)}}},_delayedDragTouchMoveHandler:function(t){var e=t.touches?t.touches[0]:t;Math.max(Math.abs(e.clientX-this._lastX),Math.abs(e.clientY-this._lastY))>=Math.floor(this.options.touchStartThreshold/(this.nativeDraggable&&window.devicePixelRatio||1))&&this._disableDelayedDrag()},_disableDelayedDrag:function(){V&&Ft(V),clearTimeout(this._dragStartTimer),this._disableDelayedDragEvents()},_disableDelayedDragEvents:function(){var t=this.el.ownerDocument;v(t,"mouseup",this._disableDelayedDrag),v(t,"touchend",this._disableDelayedDrag),v(t,"touchcancel",this._disableDelayedDrag),v(t,"mousemove",this._delayedDragTouchMoveHandler),v(t,"touchmove",this._delayedDragTouchMoveHandler),v(t,"pointermove",this._delayedDragTouchMoveHandler)},_triggerDragStart:function(t,e){e=e||"touch"==t.pointerType&&t,!this.nativeDraggable||e?this.options.supportPointer?g(document,"pointermove",this._onTouchMove):g(document,e?"touchmove":"mousemove",this._onTouchMove):(g(V,"dragend",this),g(q,"dragstart",this._onDragStart));try{document.selection?$t((function(){document.selection.empty()})):window.getSelection().removeAllRanges()}catch(t){}},_dragStarted:function(t,e){if(bt=!1,q&&V){Z("dragStarted",this,{evt:e}),this.nativeDraggable&&g(document,"dragover",Bt);var n=this.options;!t&&w(V,n.dragClass,!1),w(V,n.ghostClass,!0),Lt.active=this,t&&this._appendGhost(),H({sortable:this,name:"start",originalEvent:e})}else this._nulling()},_emulateDragOver:function(){if(lt){this._lastX=lt.clientX,this._lastY=lt.clientY,Mt();for(var t=document.elementFromPoint(lt.clientX,lt.clientY),e=t;t&&t.shadowRoot&&(t=t.shadowRoot.elementFromPoint(lt.clientX,lt.clientY))!==e;)e=t;if(V.parentNode[R]._isOutsideThisEl(t),e)do{if(e[R]&&e[R]._onDragOver({clientX:lt.clientX,clientY:lt.clientY,target:t,rootEl:e})&&!this.options.dragoverBubble)break;t=e}while(e=e.parentNode);jt()}},_onTouchMove:function(t){if(st){var e=this.options,n=e.fallbackTolerance,o=e.fallbackOffset,a=t.touches?t.touches[0]:t,i=X&&S(X,!0),r=X&&i&&i.a,s=X&&i&&i.d,l=Et&&mt&&T(mt),c=(a.clientX-st.clientX+o.x)/(r||1)+(l?l[0]-Ct[0]:0)/(r||1),d=(a.clientY-st.clientY+o.y)/(s||1)+(l?l[1]-Ct[1]:0)/(s||1);if(!Lt.active&&!bt){if(n&&Math.max(Math.abs(a.clientX-this._lastX),Math.abs(a.clientY-this._lastY))<n)return;this._onDragStart(t,!0)}if(X){i?(i.e+=c-(ct||0),i.f+=d-(dt||0)):i={a:1,b:0,c:0,d:1,e:c,f:d};var u="matrix(".concat(i.a,",").concat(i.b,",").concat(i.c,",").concat(i.d,",").concat(i.e,",").concat(i.f,")");C(X,"webkitTransform",u),C(X,"mozTransform",u),C(X,"msTransform",u),C(X,"transform",u),ct=c,dt=d,lt=a}t.cancelable&&t.preventDefault()}},_appendGhost:function(){if(!X){var t=this.options.fallbackOnBody?document.body:q,e=E(V,!0,Et,!0,t),n=this.options;if(Et){for(mt=t;"static"===C(mt,"position")&&"none"===C(mt,"transform")&&mt!==document;)mt=mt.parentNode;mt!==document.body&&mt!==document.documentElement?(mt===document&&(mt=_()),e.top+=mt.scrollTop,e.left+=mt.scrollLeft):mt=_(),Ct=T(mt)}w(X=V.cloneNode(!0),n.ghostClass,!1),w(X,n.fallbackClass,!0),w(X,n.dragClass,!0),C(X,"transition",""),C(X,"transform",""),C(X,"box-sizing","border-box"),C(X,"margin",0),C(X,"top",e.top),C(X,"left",e.left),C(X,"width",e.width),C(X,"height",e.height),C(X,"opacity","0.8"),C(X,"position",Et?"absolute":"fixed"),C(X,"zIndex","100000"),C(X,"pointerEvents","none"),Lt.ghost=X,t.appendChild(X),C(X,"transform-origin",ut/parseInt(X.style.width)*100+"% "+pt/parseInt(X.style.height)*100+"%")}},_onDragStart:function(t,e){var n=this,o=t.dataTransfer,a=n.options;Z("dragStart",this,{evt:t}),Lt.eventCanceled?this._onDrop():(Z("setupClone",this),Lt.eventCanceled||((J=L(V)).draggable=!1,J.style["will-change"]="",this._hideClone(),w(J,this.options.chosenClass,!1),Lt.clone=J),n.cloneId=$t((function(){Z("clone",n),Lt.eventCanceled||(n.options.removeCloneOnHide||q.insertBefore(J,V),n._hideClone(),H({sortable:n,name:"clone"}))})),!e&&w(V,a.dragClass,!0),e?(At=!0,n._loopId=setInterval(n._emulateDragOver,50)):(v(document,"mouseup",n._onDrop),v(document,"touchend",n._onDrop),v(document,"touchcancel",n._onDrop),o&&(o.effectAllowed="move",a.setData&&a.setData.call(n,o,V)),g(document,"drop",n),C(V,"transform","translateZ(0)")),bt=!0,n._dragStartId=$t(n._dragStarted.bind(n,e,t)),g(document,"selectstart",n),ht=!0,u&&C(document.body,"user-select","none"))},_onDragOver:function(t){var e,n,o,a,i=this.el,s=t.target,l=this.options,c=l.group,d=Lt.active,u=it===c,p=l.sort,h=rt||d,f=this,g=!1;if(!St){if(void 0!==t.preventDefault&&t.cancelable&&t.preventDefault(),s=A(s,l.draggable,i,!0),L("dragOver"),Lt.eventCanceled)return g;if(V.contains(t.target)||s.animated&&s.animatingX&&s.animatingY||f._ignoreWhileAnimating===s)return F(!1);if(At=!1,d&&!l.disabled&&(u?p||(o=!q.contains(V)):rt===this||(this.lastPutMode=it.checkPull(this,d,V,t))&&c.checkPut(this,d,V,t))){if(a="vertical"===this._getDirection(t,s),e=E(V),L("dragOverValid"),Lt.eventCanceled)return g;if(o)return Y=q,W(),this._hideClone(),L("revert"),Lt.eventCanceled||(K?q.insertBefore(V,K):q.appendChild(V)),F(!0);var v=N(i,l.draggable);if(!v||function(t,e,n){var o=E(N(n.el,n.options.draggable));return e?t.clientX>o.right+10||t.clientX<=o.right&&t.clientY>o.bottom&&t.clientX>=o.left:t.clientX>o.right&&t.clientY>o.top||t.clientX<=o.right&&t.clientY>o.bottom+10}(t,a,this)&&!v.animated){if(v===V)return F(!1);if(v&&i===t.target&&(s=v),s&&(n=E(s)),!1!==Wt(q,i,V,e,s,n,t,!!s))return W(),i.appendChild(V),Y=i,U(),F(!0)}else if(s.parentNode===i){n=E(s);var m,b,y,x=V.parentNode!==i,S=!function(t,e,n){var o=n?t.left:t.top,a=n?t.right:t.bottom,i=n?t.width:t.height,r=n?e.left:e.top,s=n?e.right:e.bottom,l=n?e.width:e.height;return o===r||a===s||o+i/2===r+l/2}(V.animated&&V.toRect||e,s.animated&&s.toRect||n,a),k=a?"top":"left",_=D(s,"top","top")||D(V,"top","top"),O=_?_.scrollTop:void 0;if(ft!==s&&(b=n[k],xt=!1,wt=!S&&l.invertSwap||x),m=function(t,e,n,o,a,i,r,s){var l=o?t.clientY:t.clientX,c=o?n.height:n.width,d=o?n.top:n.left,u=o?n.bottom:n.right,p=!1;if(!r)if(s&&vt<c*a){if(!xt&&(1===gt?l>d+c*i/2:l<u-c*i/2)&&(xt=!0),xt)p=!0;else if(1===gt?l<d+vt:l>u-vt)return-gt}else if(l>d+c*(1-a)/2&&l<u-c*(1-a)/2)return function(t){return I(V)<I(t)?1:-1}(e);return(p=p||r)&&(l<d+c*i/2||l>u-c*i/2)?l>d+c/2?1:-1:0}(t,s,n,a,S?1:l.swapThreshold,null==l.invertedSwapThreshold?l.swapThreshold:l.invertedSwapThreshold,wt,ft===s),0!==m){var T=I(V);do{T-=m,y=Y.children[T]}while(y&&("none"===C(y,"display")||y===X))}if(0===m||y===s)return F(!1);ft=s,gt=m;var M=s.nextElementSibling,j=!1,P=Wt(q,i,V,e,s,n,t,j=1===m);if(!1!==P)return 1!==P&&-1!==P||(j=1===P),St=!0,setTimeout(Rt,30),W(),j&&!M?i.appendChild(V):s.parentNode.insertBefore(V,j?M:s),_&&B(_,0,O-_.scrollTop),Y=V.parentNode,void 0===b||wt||(vt=Math.abs(b-E(s)[k])),U(),F(!0)}if(i.contains(V))return F(!1)}return!1}function L(l,c){Z(l,f,r({evt:t,isOwner:u,axis:a?"vertical":"horizontal",revert:o,dragRect:e,targetRect:n,canSort:p,fromSortable:h,target:s,completed:F,onMove:function(n,o){return Wt(q,i,V,e,n,E(n),t,o)},changed:U},c))}function W(){L("dragOverAnimationCapture"),f.captureAnimationState(),f!==h&&h.captureAnimationState()}function F(e){return L("dragOverCompleted",{insertion:e}),e&&(u?d._hideClone():d._showClone(f),f!==h&&(w(V,rt?rt.options.ghostClass:d.options.ghostClass,!1),w(V,l.ghostClass,!0)),rt!==f&&f!==Lt.active?rt=f:f===Lt.active&&rt&&(rt=null),h===f&&(f._ignoreWhileAnimating=s),f.animateAll((function(){L("dragOverAnimationComplete"),f._ignoreWhileAnimating=null})),f!==h&&(h.animateAll(),h._ignoreWhileAnimating=null)),(s===V&&!V.animated||s===i&&!s.animated)&&(ft=null),l.dragoverBubble||t.rootEl||s===document||(V.parentNode[R]._isOutsideThisEl(t.target),!e&&Pt(t)),!l.dragoverBubble&&t.stopPropagation&&t.stopPropagation(),g=!0}function U(){nt=I(V),at=I(V,l.draggable),H({sortable:f,name:"change",toEl:i,newIndex:nt,newDraggableIndex:at,originalEvent:t})}},_ignoreWhileAnimating:null,_offMoveEvents:function(){v(document,"mousemove",this._onTouchMove),v(document,"touchmove",this._onTouchMove),v(document,"pointermove",this._onTouchMove),v(document,"dragover",Pt),v(document,"mousemove",Pt),v(document,"touchmove",Pt)},_offUpEvents:function(){var t=this.el.ownerDocument;v(t,"mouseup",this._onDrop),v(t,"touchend",this._onDrop),v(t,"pointerup",this._onDrop),v(t,"touchcancel",this._onDrop),v(document,"selectstart",this)},_onDrop:function(t){var e=this.el,n=this.options;nt=I(V),at=I(V,n.draggable),Z("drop",this,{evt:t}),Y=V&&V.parentNode,nt=I(V),at=I(V,n.draggable),Lt.eventCanceled||(bt=!1,wt=!1,xt=!1,clearInterval(this._loopId),clearTimeout(this._dragStartTimer),Gt(this.cloneId),Gt(this._dragStartId),this.nativeDraggable&&(v(document,"drop",this),v(e,"dragstart",this._onDragStart)),this._offMoveEvents(),this._offUpEvents(),u&&C(document.body,"user-select",""),C(V,"transform",""),t&&(ht&&(t.cancelable&&t.preventDefault(),!n.dropBubble&&t.stopPropagation()),X&&X.parentNode&&X.parentNode.removeChild(X),(q===Y||rt&&"clone"!==rt.lastPutMode)&&J&&J.parentNode&&J.parentNode.removeChild(J),V&&(this.nativeDraggable&&v(V,"dragend",this),Ft(V),V.style["will-change"]="",ht&&!bt&&w(V,rt?rt.options.ghostClass:this.options.ghostClass,!1),w(V,this.options.chosenClass,!1),H({sortable:this,name:"unchoose",toEl:Y,newIndex:null,newDraggableIndex:null,originalEvent:t}),q!==Y?(nt>=0&&(H({rootEl:Y,name:"add",toEl:Y,fromEl:q,originalEvent:t}),H({sortable:this,name:"remove",toEl:Y,originalEvent:t}),H({rootEl:Y,name:"sort",toEl:Y,fromEl:q,originalEvent:t}),H({sortable:this,name:"sort",toEl:Y,originalEvent:t})),rt&&rt.save()):nt!==et&&nt>=0&&(H({sortable:this,name:"update",toEl:Y,originalEvent:t}),H({sortable:this,name:"sort",toEl:Y,originalEvent:t})),Lt.active&&(null!=nt&&-1!==nt||(nt=et,at=ot),H({sortable:this,name:"end",toEl:Y,originalEvent:t}),this.save())))),this._nulling()},_nulling:function(){Z("nulling",this),q=V=Y=X=K=J=Q=tt=st=lt=ht=nt=at=et=ot=ft=gt=rt=it=Lt.dragged=Lt.ghost=Lt.clone=Lt.active=null,kt.forEach((function(t){t.checked=!0})),kt.length=ct=dt=0},handleEvent:function(t){switch(t.type){case"drop":case"dragend":this._onDrop(t);break;case"dragenter":case"dragover":V&&(this._onDragOver(t),function(t){t.dataTransfer&&(t.dataTransfer.dropEffect="move"),t.cancelable&&t.preventDefault()}(t));break;case"selectstart":t.preventDefault()}},toArray:function(){for(var t,e=[],n=this.el.children,o=0,a=n.length,i=this.options;o<a;o++)A(t=n[o],i.draggable,this.el,!1)&&e.push(t.getAttribute(i.dataIdAttr)||Ut(t));return e},sort:function(t){var e={},n=this.el;this.toArray().forEach((function(t,o){var a=n.children[o];A(a,this.options.draggable,n,!1)&&(e[t]=a)}),this),t.forEach((function(t){e[t]&&(n.removeChild(e[t]),n.appendChild(e[t]))}))},save:function(){var t=this.options.store;t&&t.set&&t.set(this)},closest:function(t,e){return A(t,e||this.options.draggable,this.el,!1)},option:function(t,e){var n=this.options;if(void 0===e)return n[t];var o=G.modifyOption(this,t,e);n[t]=void 0!==o?o:e,"group"===t&&Tt(n)},destroy:function(){Z("destroy",this);var t=this.el;t[R]=null,v(t,"mousedown",this._onTapStart),v(t,"touchstart",this._onTapStart),v(t,"pointerdown",this._onTapStart),this.nativeDraggable&&(v(t,"dragover",this),v(t,"dragenter",this)),Array.prototype.forEach.call(t.querySelectorAll("[draggable]"),(function(t){t.removeAttribute("draggable")})),this._onDrop(),this._disableDelayedDragEvents(),yt.splice(yt.indexOf(this.el),1),this.el=t=null},_hideClone:function(){if(!tt){if(Z("hideClone",this),Lt.eventCanceled)return;C(J,"display","none"),this.options.removeCloneOnHide&&J.parentNode&&J.parentNode.removeChild(J),tt=!0}},_showClone:function(t){if("clone"===t.lastPutMode){if(tt){if(Z("showClone",this),Lt.eventCanceled)return;q.contains(V)&&!this.options.group.revertClone?q.insertBefore(J,V):K?q.insertBefore(J,K):q.appendChild(J),this.options.group.revertClone&&this.animate(V,J),C(J,"display",""),tt=!1}}else this._hideClone()}},_t&&g(document,"touchmove",(function(t){(Lt.active||bt)&&t.cancelable&&t.preventDefault()})),Lt.utils={on:g,off:v,css:C,find:k,is:function(t,e){return!!A(t,e,t,!1)},extend:function(t,e){if(t&&e)for(var n in e)e.hasOwnProperty(n)&&(t[n]=e[n]);return t},throttle:P,closest:A,toggleClass:w,clone:L,index:I,nextTick:$t,cancelNextTick:Gt,detectDirection:It,getChild:O},Lt.get=function(t){return t[R]},Lt.mount=function(){for(var t=arguments.length,e=new Array(t),n=0;n<t;n++)e[n]=arguments[n];e[0].constructor===Array&&(e=e[0]),e.forEach((function(t){if(!t.prototype||!t.prototype.constructor)throw"Sortable: Mounted plugin must be a constructor function, not ".concat({}.toString.call(t));t.utils&&(Lt.utils=r({},Lt.utils,t.utils)),G.mount(t)}))},Lt.create=function(t,e){return new Lt(t,e)},Lt.version="1.10.2";var zt,Zt,Ht,Vt,Yt,Xt,qt=[],Kt=!1;function Qt(){qt.forEach((function(t){clearInterval(t.pid)})),qt=[]}function Jt(){clearInterval(Xt)}var te,ee=P((function(t,e,n,o){if(e.scroll){var a,i=(t.touches?t.touches[0]:t).clientX,r=(t.touches?t.touches[0]:t).clientY,s=e.scrollSensitivity,l=e.scrollSpeed,c=_(),d=!1;Zt!==n&&(Zt=n,Qt(),zt=e.scroll,a=e.scrollFn,!0===zt&&(zt=M(n,!0)));var u=0,p=zt;do{var h=p,f=E(h),g=f.top,v=f.bottom,m=f.left,b=f.right,A=f.width,y=f.height,x=void 0,w=void 0,S=h.scrollWidth,k=h.scrollHeight,D=C(h),O=h.scrollLeft,N=h.scrollTop;h===c?(x=A<S&&("auto"===D.overflowX||"scroll"===D.overflowX||"visible"===D.overflowX),w=y<k&&("auto"===D.overflowY||"scroll"===D.overflowY||"visible"===D.overflowY)):(x=A<S&&("auto"===D.overflowX||"scroll"===D.overflowX),w=y<k&&("auto"===D.overflowY||"scroll"===D.overflowY));var I=x&&(Math.abs(b-i)<=s&&O+A<S)-(Math.abs(m-i)<=s&&!!O),T=w&&(Math.abs(v-r)<=s&&N+y<k)-(Math.abs(g-r)<=s&&!!N);if(!qt[u])for(var j=0;j<=u;j++)qt[j]||(qt[j]={});qt[u].vx==I&&qt[u].vy==T&&qt[u].el===h||(qt[u].el=h,qt[u].vx=I,qt[u].vy=T,clearInterval(qt[u].pid),0==I&&0==T||(d=!0,qt[u].pid=setInterval(function(){o&&0===this.layer&&Lt.active._onTouchMove(Yt);var e=qt[this.layer].vy?qt[this.layer].vy*l:0,n=qt[this.layer].vx?qt[this.layer].vx*l:0;"function"==typeof a&&"continue"!==a.call(Lt.dragged.parentNode[R],n,e,t,Yt,qt[this.layer].el)||B(qt[this.layer].el,n,e)}.bind({layer:u}),24))),u++}while(e.bubbleScroll&&p!==c&&(p=M(p,!1)));Kt=d}}),30),ne=function(t){var e=t.originalEvent,n=t.putSortable,o=t.dragEl,a=t.activeSortable,i=t.dispatchSortableEvent,r=t.hideGhostForTarget,s=t.unhideGhostForTarget;if(e){var l=n||a;r();var c=e.changedTouches&&e.changedTouches.length?e.changedTouches[0]:e,d=document.elementFromPoint(c.clientX,c.clientY);s(),l&&!l.el.contains(d)&&(i("spill"),this.onSpill({dragEl:o,putSortable:n}))}};function oe(){}function ae(){}function ie(){function t(){this.defaults={swapClass:"sortable-swap-highlight"}}return t.prototype={dragStart:function(t){var e=t.dragEl;te=e},dragOverValid:function(t){var e=t.completed,n=t.target,o=t.onMove,a=t.activeSortable,i=t.changed,r=t.cancel;if(a.options.swap){var s=this.sortable.el,l=this.options;if(n&&n!==s){var c=te;!1!==o(n)?(w(n,l.swapClass,!0),te=n):te=null,c&&c!==te&&w(c,l.swapClass,!1)}i(),e(!0),r()}},drop:function(t){var e,n,o,a,i,r,s=t.activeSortable,l=t.putSortable,c=t.dragEl,d=l||this.sortable,u=this.options;te&&w(te,u.swapClass,!1),te&&(u.swap||l&&l.options.swap)&&c!==te&&(d.captureAnimationState(),d!==s&&s.captureAnimationState(),n=te,i=(e=c).parentNode,r=n.parentNode,i&&r&&!i.isEqualNode(n)&&!r.isEqualNode(e)&&(o=I(e),a=I(n),i.isEqualNode(r)&&o<a&&a++,i.insertBefore(n,i.children[o]),r.insertBefore(e,r.children[a])),d.animateAll(),d!==s&&s.animateAll())},nulling:function(){te=null}},i(t,{pluginName:"swap",eventProperties:function(){return{swapItem:te}}})}oe.prototype={startIndex:null,dragStart:function(t){var e=t.oldDraggableIndex;this.startIndex=e},onSpill:function(t){var e=t.dragEl,n=t.putSortable;this.sortable.captureAnimationState(),n&&n.captureAnimationState();var o=O(this.sortable.el,this.startIndex,this.options);o?this.sortable.el.insertBefore(e,o):this.sortable.el.appendChild(e),this.sortable.animateAll(),n&&n.animateAll()},drop:ne},i(oe,{pluginName:"revertOnSpill"}),ae.prototype={onSpill:function(t){var e=t.dragEl,n=t.putSortable||this.sortable;n.captureAnimationState(),e.parentNode&&e.parentNode.removeChild(e),n.animateAll()},drop:ne},i(ae,{pluginName:"removeOnSpill"});var re,se,le,ce,de,ue=[],pe=[],he=!1,fe=!1,ge=!1;function ve(){function t(t){for(var e in this)"_"===e.charAt(0)&&"function"==typeof this[e]&&(this[e]=this[e].bind(this));t.options.supportPointer?g(document,"pointerup",this._deselectMultiDrag):(g(document,"mouseup",this._deselectMultiDrag),g(document,"touchend",this._deselectMultiDrag)),g(document,"keydown",this._checkKeyDown),g(document,"keyup",this._checkKeyUp),this.defaults={selectedClass:"sortable-selected",multiDragKey:null,setData:function(e,n){var o="";ue.length&&se===t?ue.forEach((function(t,e){o+=(e?", ":"")+t.textContent})):o=n.textContent,e.setData("Text",o)}}}return t.prototype={multiDragKeyDown:!1,isMultiDrag:!1,delayStartGlobal:function(t){var e=t.dragEl;le=e},delayEnded:function(){this.isMultiDrag=~ue.indexOf(le)},setupClone:function(t){var e=t.sortable,n=t.cancel;if(this.isMultiDrag){for(var o=0;o<ue.length;o++)pe.push(L(ue[o])),pe[o].sortableIndex=ue[o].sortableIndex,pe[o].draggable=!1,pe[o].style["will-change"]="",w(pe[o],this.options.selectedClass,!1),ue[o]===le&&w(pe[o],this.options.chosenClass,!1);e._hideClone(),n()}},clone:function(t){var e=t.sortable,n=t.rootEl,o=t.dispatchSortableEvent,a=t.cancel;this.isMultiDrag&&(this.options.removeCloneOnHide||ue.length&&se===e&&(me(!0,n),o("clone"),a()))},showClone:function(t){var e=t.cloneNowShown,n=t.rootEl,o=t.cancel;this.isMultiDrag&&(me(!1,n),pe.forEach((function(t){C(t,"display","")})),e(),de=!1,o())},hideClone:function(t){var e=this,n=(t.sortable,t.cloneNowHidden),o=t.cancel;this.isMultiDrag&&(pe.forEach((function(t){C(t,"display","none"),e.options.removeCloneOnHide&&t.parentNode&&t.parentNode.removeChild(t)})),n(),de=!0,o())},dragStartGlobal:function(t){t.sortable,!this.isMultiDrag&&se&&se.multiDrag._deselectMultiDrag(),ue.forEach((function(t){t.sortableIndex=I(t)})),ue=ue.sort((function(t,e){return t.sortableIndex-e.sortableIndex})),ge=!0},dragStarted:function(t){var e=this,n=t.sortable;if(this.isMultiDrag){if(this.options.sort&&(n.captureAnimationState(),this.options.animation)){ue.forEach((function(t){t!==le&&C(t,"position","absolute")}));var o=E(le,!1,!0,!0);ue.forEach((function(t){t!==le&&W(t,o)})),fe=!0,he=!0}n.animateAll((function(){fe=!1,he=!1,e.options.animation&&ue.forEach((function(t){F(t)})),e.options.sort&&be()}))}},dragOver:function(t){var e=t.target,n=t.completed,o=t.cancel;fe&&~ue.indexOf(e)&&(n(!1),o())},revert:function(t){var e=t.fromSortable,n=t.rootEl,o=t.sortable,a=t.dragRect;ue.length>1&&(ue.forEach((function(t){o.addAnimationState({target:t,rect:fe?E(t):a}),F(t),t.fromRect=a,e.removeAnimationState(t)})),fe=!1,function(t,e){ue.forEach((function(n,o){var a=e.children[n.sortableIndex+(t?Number(o):0)];a?e.insertBefore(n,a):e.appendChild(n)}))}(!this.options.removeCloneOnHide,n))},dragOverCompleted:function(t){var e=t.sortable,n=t.isOwner,o=t.insertion,a=t.activeSortable,i=t.parentEl,r=t.putSortable,s=this.options;if(o){if(n&&a._hideClone(),he=!1,s.animation&&ue.length>1&&(fe||!n&&!a.options.sort&&!r)){var l=E(le,!1,!0,!0);ue.forEach((function(t){t!==le&&(W(t,l),i.appendChild(t))})),fe=!0}if(!n)if(fe||be(),ue.length>1){var c=de;a._showClone(e),a.options.animation&&!de&&c&&pe.forEach((function(t){a.addAnimationState({target:t,rect:ce}),t.fromRect=ce,t.thisAnimationDuration=null}))}else a._showClone(e)}},dragOverAnimationCapture:function(t){var e=t.dragRect,n=t.isOwner,o=t.activeSortable;if(ue.forEach((function(t){t.thisAnimationDuration=null})),o.options.animation&&!n&&o.multiDrag.isMultiDrag){ce=i({},e);var a=S(le,!0);ce.top-=a.f,ce.left-=a.e}},dragOverAnimationComplete:function(){fe&&(fe=!1,be())},drop:function(t){var e=t.originalEvent,n=t.rootEl,o=t.parentEl,a=t.sortable,i=t.dispatchSortableEvent,r=t.oldIndex,s=t.putSortable,l=s||this.sortable;if(e){var c=this.options,d=o.children;if(!ge)if(c.multiDragKey&&!this.multiDragKeyDown&&this._deselectMultiDrag(),w(le,c.selectedClass,!~ue.indexOf(le)),~ue.indexOf(le))ue.splice(ue.indexOf(le),1),re=null,z({sortable:a,rootEl:n,name:"deselect",targetEl:le,originalEvt:e});else{if(ue.push(le),z({sortable:a,rootEl:n,name:"select",targetEl:le,originalEvt:e}),e.shiftKey&&re&&a.el.contains(re)){var u,p,h=I(re),f=I(le);if(~h&&~f&&h!==f)for(f>h?(p=h,u=f):(p=f,u=h+1);p<u;p++)~ue.indexOf(d[p])||(w(d[p],c.selectedClass,!0),ue.push(d[p]),z({sortable:a,rootEl:n,name:"select",targetEl:d[p],originalEvt:e}))}else re=le;se=l}if(ge&&this.isMultiDrag){if((o[R].options.sort||o!==n)&&ue.length>1){var g=E(le),v=I(le,":not(."+this.options.selectedClass+")");if(!he&&c.animation&&(le.thisAnimationDuration=null),l.captureAnimationState(),!he&&(c.animation&&(le.fromRect=g,ue.forEach((function(t){if(t.thisAnimationDuration=null,t!==le){var e=fe?E(t):g;t.fromRect=e,l.addAnimationState({target:t,rect:e})}}))),be(),ue.forEach((function(t){d[v]?o.insertBefore(t,d[v]):o.appendChild(t),v++})),r===I(le))){var m=!1;ue.forEach((function(t){t.sortableIndex===I(t)||(m=!0)})),m&&i("update")}ue.forEach((function(t){F(t)})),l.animateAll()}se=l}(n===o||s&&"clone"!==s.lastPutMode)&&pe.forEach((function(t){t.parentNode&&t.parentNode.removeChild(t)}))}},nullingGlobal:function(){this.isMultiDrag=ge=!1,pe.length=0},destroyGlobal:function(){this._deselectMultiDrag(),v(document,"pointerup",this._deselectMultiDrag),v(document,"mouseup",this._deselectMultiDrag),v(document,"touchend",this._deselectMultiDrag),v(document,"keydown",this._checkKeyDown),v(document,"keyup",this._checkKeyUp)},_deselectMultiDrag:function(t){if(!(void 0!==ge&&ge||se!==this.sortable||t&&A(t.target,this.options.draggable,this.sortable.el,!1)||t&&0!==t.button))for(;ue.length;){var e=ue[0];w(e,this.options.selectedClass,!1),ue.shift(),z({sortable:this.sortable,rootEl:this.sortable.el,name:"deselect",targetEl:e,originalEvt:t})}},_checkKeyDown:function(t){t.key===this.options.multiDragKey&&(this.multiDragKeyDown=!0)},_checkKeyUp:function(t){t.key===this.options.multiDragKey&&(this.multiDragKeyDown=!1)}},i(t,{pluginName:"multiDrag",utils:{select:function(t){var e=t.parentNode[R];e&&e.options.multiDrag&&!~ue.indexOf(t)&&(se&&se!==e&&(se.multiDrag._deselectMultiDrag(),se=e),w(t,e.options.selectedClass,!0),ue.push(t))},deselect:function(t){var e=t.parentNode[R],n=ue.indexOf(t);e&&e.options.multiDrag&&~n&&(w(t,e.options.selectedClass,!1),ue.splice(n,1))}},eventProperties:function(){var t,e=this,n=[],o=[];return ue.forEach((function(t){var a;n.push({multiDragElement:t,index:t.sortableIndex}),a=fe&&t!==le?-1:fe?I(t,":not(."+e.options.selectedClass+")"):I(t),o.push({multiDragElement:t,index:a})})),{items:(t=ue,function(t){if(Array.isArray(t)){for(var e=0,n=new Array(t.length);e<t.length;e++)n[e]=t[e];return n}}(t)||function(t){if(Symbol.iterator in Object(t)||"[object Arguments]"===Object.prototype.toString.call(t))return Array.from(t)}(t)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance")}()),clones:[].concat(pe),oldIndicies:n,newIndicies:o}},optionListeners:{multiDragKey:function(t){return"ctrl"===(t=t.toLowerCase())?t="Control":t.length>1&&(t=t.charAt(0).toUpperCase()+t.substr(1)),t}}})}function me(t,e){pe.forEach((function(n,o){var a=e.children[n.sortableIndex+(t?Number(o):0)];a?e.insertBefore(n,a):e.appendChild(n)}))}function be(){ue.forEach((function(t){t!==le&&t.parentNode&&t.parentNode.removeChild(t)}))}Lt.mount(new function(){function t(){for(var t in this.defaults={scroll:!0,scrollSensitivity:30,scrollSpeed:10,bubbleScroll:!0},this)"_"===t.charAt(0)&&"function"==typeof this[t]&&(this[t]=this[t].bind(this))}return t.prototype={dragStarted:function(t){var e=t.originalEvent;this.sortable.nativeDraggable?g(document,"dragover",this._handleAutoScroll):this.options.supportPointer?g(document,"pointermove",this._handleFallbackAutoScroll):e.touches?g(document,"touchmove",this._handleFallbackAutoScroll):g(document,"mousemove",this._handleFallbackAutoScroll)},dragOverCompleted:function(t){var e=t.originalEvent;this.options.dragOverBubble||e.rootEl||this._handleAutoScroll(e)},drop:function(){this.sortable.nativeDraggable?v(document,"dragover",this._handleAutoScroll):(v(document,"pointermove",this._handleFallbackAutoScroll),v(document,"touchmove",this._handleFallbackAutoScroll),v(document,"mousemove",this._handleFallbackAutoScroll)),Jt(),Qt(),clearTimeout(y),y=void 0},nulling:function(){Yt=Zt=zt=Kt=Xt=Ht=Vt=null,qt.length=0},_handleFallbackAutoScroll:function(t){this._handleAutoScroll(t,!0)},_handleAutoScroll:function(t,e){var n=this,o=(t.touches?t.touches[0]:t).clientX,a=(t.touches?t.touches[0]:t).clientY,i=document.elementFromPoint(o,a);if(Yt=t,e||c||l||u){ee(t,this.options,i,e);var r=M(i,!0);!Kt||Xt&&o===Ht&&a===Vt||(Xt&&Jt(),Xt=setInterval((function(){var i=M(document.elementFromPoint(o,a),!0);i!==r&&(r=i,Qt()),ee(t,n.options,i,e)}),10),Ht=o,Vt=a)}else{if(!this.options.bubbleScroll||M(i,!0)===_())return void Qt();ee(t,this.options,M(i,!1),!1)}}},i(t,{pluginName:"scroll",initializeByDefault:!0})}),Lt.mount(ae,oe);const Ae=Lt},9980:function(t,e,n){var o;"undefined"!=typeof self&&self,o=function(t){return function(t){var e={};function n(o){if(e[o])return e[o].exports;var a=e[o]={i:o,l:!1,exports:{}};return t[o].call(a.exports,a,a.exports,n),a.l=!0,a.exports}return n.m=t,n.c=e,n.d=function(t,e,o){n.o(t,e)||Object.defineProperty(t,e,{enumerable:!0,get:o})},n.r=function(t){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})},n.t=function(t,e){if(1&e&&(t=n(t)),8&e)return t;if(4&e&&"object"==typeof t&&t&&t.__esModule)return t;var o=Object.create(null);if(n.r(o),Object.defineProperty(o,"default",{enumerable:!0,value:t}),2&e&&"string"!=typeof t)for(var a in t)n.d(o,a,function(e){return t[e]}.bind(null,a));return o},n.n=function(t){var e=t&&t.__esModule?function(){return t.default}:function(){return t};return n.d(e,"a",e),e},n.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},n.p="",n(n.s="fb15")}({"01f9":function(t,e,n){"use strict";var o=n("2d00"),a=n("5ca1"),i=n("2aba"),r=n("32e9"),s=n("84f2"),l=n("41a0"),c=n("7f20"),d=n("38fd"),u=n("2b4c")("iterator"),p=!([].keys&&"next"in[].keys()),h="keys",f="values",g=function(){return this};t.exports=function(t,e,n,v,m,b,A){l(n,e,v);var y,x,w,C=function(t){if(!p&&t in E)return E[t];switch(t){case h:case f:return function(){return new n(this,t)}}return function(){return new n(this,t)}},S=e+" Iterator",k=m==f,_=!1,E=t.prototype,D=E[u]||E["@@iterator"]||m&&E[m],O=D||C(m),N=m?k?C("entries"):O:void 0,I="Array"==e&&E.entries||D;if(I&&(w=d(I.call(new t)))!==Object.prototype&&w.next&&(c(w,S,!0),o||"function"==typeof w[u]||r(w,u,g)),k&&D&&D.name!==f&&(_=!0,O=function(){return D.call(this)}),o&&!A||!p&&!_&&E[u]||r(E,u,O),s[e]=O,s[S]=g,m)if(y={values:k?O:C(f),keys:b?O:C(h),entries:N},A)for(x in y)x in E||i(E,x,y[x]);else a(a.P+a.F*(p||_),e,y);return y}},"02f4":function(t,e,n){var o=n("4588"),a=n("be13");t.exports=function(t){return function(e,n){var i,r,s=String(a(e)),l=o(n),c=s.length;return l<0||l>=c?t?"":void 0:(i=s.charCodeAt(l))<55296||i>56319||l+1===c||(r=s.charCodeAt(l+1))<56320||r>57343?t?s.charAt(l):i:t?s.slice(l,l+2):r-56320+(i-55296<<10)+65536}}},"0390":function(t,e,n){"use strict";var o=n("02f4")(!0);t.exports=function(t,e,n){return e+(n?o(t,e).length:1)}},"0bfb":function(t,e,n){"use strict";var o=n("cb7c");t.exports=function(){var t=o(this),e="";return t.global&&(e+="g"),t.ignoreCase&&(e+="i"),t.multiline&&(e+="m"),t.unicode&&(e+="u"),t.sticky&&(e+="y"),e}},"0d58":function(t,e,n){var o=n("ce10"),a=n("e11e");t.exports=Object.keys||function(t){return o(t,a)}},1495:function(t,e,n){var o=n("86cc"),a=n("cb7c"),i=n("0d58");t.exports=n("9e1e")?Object.defineProperties:function(t,e){a(t);for(var n,r=i(e),s=r.length,l=0;s>l;)o.f(t,n=r[l++],e[n]);return t}},"214f":function(t,e,n){"use strict";n("b0c5");var o=n("2aba"),a=n("32e9"),i=n("79e5"),r=n("be13"),s=n("2b4c"),l=n("520a"),c=s("species"),d=!i((function(){var t=/./;return t.exec=function(){var t=[];return t.groups={a:"7"},t},"7"!=="".replace(t,"$<a>")})),u=function(){var t=/(?:)/,e=t.exec;t.exec=function(){return e.apply(this,arguments)};var n="ab".split(t);return 2===n.length&&"a"===n[0]&&"b"===n[1]}();t.exports=function(t,e,n){var p=s(t),h=!i((function(){var e={};return e[p]=function(){return 7},7!=""[t](e)})),f=h?!i((function(){var e=!1,n=/a/;return n.exec=function(){return e=!0,null},"split"===t&&(n.constructor={},n.constructor[c]=function(){return n}),n[p](""),!e})):void 0;if(!h||!f||"replace"===t&&!d||"split"===t&&!u){var g=/./[p],v=n(r,p,""[t],(function(t,e,n,o,a){return e.exec===l?h&&!a?{done:!0,value:g.call(e,n,o)}:{done:!0,value:t.call(n,e,o)}:{done:!1}})),m=v[0],b=v[1];o(String.prototype,t,m),a(RegExp.prototype,p,2==e?function(t,e){return b.call(t,this,e)}:function(t){return b.call(t,this)})}}},"230e":function(t,e,n){var o=n("d3f4"),a=n("7726").document,i=o(a)&&o(a.createElement);t.exports=function(t){return i?a.createElement(t):{}}},"23c6":function(t,e,n){var o=n("2d95"),a=n("2b4c")("toStringTag"),i="Arguments"==o(function(){return arguments}());t.exports=function(t){var e,n,r;return void 0===t?"Undefined":null===t?"Null":"string"==typeof(n=function(t,e){try{return t[e]}catch(t){}}(e=Object(t),a))?n:i?o(e):"Object"==(r=o(e))&&"function"==typeof e.callee?"Arguments":r}},2621:function(t,e){e.f=Object.getOwnPropertySymbols},"2aba":function(t,e,n){var o=n("7726"),a=n("32e9"),i=n("69a8"),r=n("ca5a")("src"),s=n("fa5b"),l="toString",c=(""+s).split(l);n("8378").inspectSource=function(t){return s.call(t)},(t.exports=function(t,e,n,s){var l="function"==typeof n;l&&(i(n,"name")||a(n,"name",e)),t[e]!==n&&(l&&(i(n,r)||a(n,r,t[e]?""+t[e]:c.join(String(e)))),t===o?t[e]=n:s?t[e]?t[e]=n:a(t,e,n):(delete t[e],a(t,e,n)))})(Function.prototype,l,(function(){return"function"==typeof this&&this[r]||s.call(this)}))},"2aeb":function(t,e,n){var o=n("cb7c"),a=n("1495"),i=n("e11e"),r=n("613b")("IE_PROTO"),s=function(){},l="prototype",c=function(){var t,e=n("230e")("iframe"),o=i.length;for(e.style.display="none",n("fab2").appendChild(e),e.src="javascript:",(t=e.contentWindow.document).open(),t.write("<script>document.F=Object<\/script>"),t.close(),c=t.F;o--;)delete c[l][i[o]];return c()};t.exports=Object.create||function(t,e){var n;return null!==t?(s[l]=o(t),n=new s,s[l]=null,n[r]=t):n=c(),void 0===e?n:a(n,e)}},"2b4c":function(t,e,n){var o=n("5537")("wks"),a=n("ca5a"),i=n("7726").Symbol,r="function"==typeof i;(t.exports=function(t){return o[t]||(o[t]=r&&i[t]||(r?i:a)("Symbol."+t))}).store=o},"2d00":function(t,e){t.exports=!1},"2d95":function(t,e){var n={}.toString;t.exports=function(t){return n.call(t).slice(8,-1)}},"2fdb":function(t,e,n){"use strict";var o=n("5ca1"),a=n("d2c8"),i="includes";o(o.P+o.F*n("5147")(i),"String",{includes:function(t){return!!~a(this,t,i).indexOf(t,arguments.length>1?arguments[1]:void 0)}})},"32e9":function(t,e,n){var o=n("86cc"),a=n("4630");t.exports=n("9e1e")?function(t,e,n){return o.f(t,e,a(1,n))}:function(t,e,n){return t[e]=n,t}},"38fd":function(t,e,n){var o=n("69a8"),a=n("4bf8"),i=n("613b")("IE_PROTO"),r=Object.prototype;t.exports=Object.getPrototypeOf||function(t){return t=a(t),o(t,i)?t[i]:"function"==typeof t.constructor&&t instanceof t.constructor?t.constructor.prototype:t instanceof Object?r:null}},"41a0":function(t,e,n){"use strict";var o=n("2aeb"),a=n("4630"),i=n("7f20"),r={};n("32e9")(r,n("2b4c")("iterator"),(function(){return this})),t.exports=function(t,e,n){t.prototype=o(r,{next:a(1,n)}),i(t,e+" Iterator")}},"456d":function(t,e,n){var o=n("4bf8"),a=n("0d58");n("5eda")("keys",(function(){return function(t){return a(o(t))}}))},4588:function(t,e){var n=Math.ceil,o=Math.floor;t.exports=function(t){return isNaN(t=+t)?0:(t>0?o:n)(t)}},4630:function(t,e){t.exports=function(t,e){return{enumerable:!(1&t),configurable:!(2&t),writable:!(4&t),value:e}}},"4bf8":function(t,e,n){var o=n("be13");t.exports=function(t){return Object(o(t))}},5147:function(t,e,n){var o=n("2b4c")("match");t.exports=function(t){var e=/./;try{"/./"[t](e)}catch(n){try{return e[o]=!1,!"/./"[t](e)}catch(t){}}return!0}},"520a":function(t,e,n){"use strict";var o,a,i=n("0bfb"),r=RegExp.prototype.exec,s=String.prototype.replace,l=r,c="lastIndex",d=(o=/a/,a=/b*/g,r.call(o,"a"),r.call(a,"a"),0!==o[c]||0!==a[c]),u=void 0!==/()??/.exec("")[1];(d||u)&&(l=function(t){var e,n,o,a,l=this;return u&&(n=new RegExp("^"+l.source+"$(?!\\s)",i.call(l))),d&&(e=l[c]),o=r.call(l,t),d&&o&&(l[c]=l.global?o.index+o[0].length:e),u&&o&&o.length>1&&s.call(o[0],n,(function(){for(a=1;a<arguments.length-2;a++)void 0===arguments[a]&&(o[a]=void 0)})),o}),t.exports=l},"52a7":function(t,e){e.f={}.propertyIsEnumerable},5537:function(t,e,n){var o=n("8378"),a=n("7726"),i="__core-js_shared__",r=a[i]||(a[i]={});(t.exports=function(t,e){return r[t]||(r[t]=void 0!==e?e:{})})("versions",[]).push({version:o.version,mode:n("2d00")?"pure":"global",copyright:"© 2019 Denis Pushkarev (zloirock.ru)"})},"5ca1":function(t,e,n){var o=n("7726"),a=n("8378"),i=n("32e9"),r=n("2aba"),s=n("9b43"),l="prototype",c=function(t,e,n){var d,u,p,h,f=t&c.F,g=t&c.G,v=t&c.S,m=t&c.P,b=t&c.B,A=g?o:v?o[e]||(o[e]={}):(o[e]||{})[l],y=g?a:a[e]||(a[e]={}),x=y[l]||(y[l]={});for(d in g&&(n=e),n)p=((u=!f&&A&&void 0!==A[d])?A:n)[d],h=b&&u?s(p,o):m&&"function"==typeof p?s(Function.call,p):p,A&&r(A,d,p,t&c.U),y[d]!=p&&i(y,d,h),m&&x[d]!=p&&(x[d]=p)};o.core=a,c.F=1,c.G=2,c.S=4,c.P=8,c.B=16,c.W=32,c.U=64,c.R=128,t.exports=c},"5eda":function(t,e,n){var o=n("5ca1"),a=n("8378"),i=n("79e5");t.exports=function(t,e){var n=(a.Object||{})[t]||Object[t],r={};r[t]=e(n),o(o.S+o.F*i((function(){n(1)})),"Object",r)}},"5f1b":function(t,e,n){"use strict";var o=n("23c6"),a=RegExp.prototype.exec;t.exports=function(t,e){var n=t.exec;if("function"==typeof n){var i=n.call(t,e);if("object"!=typeof i)throw new TypeError("RegExp exec method returned something other than an Object or null");return i}if("RegExp"!==o(t))throw new TypeError("RegExp#exec called on incompatible receiver");return a.call(t,e)}},"613b":function(t,e,n){var o=n("5537")("keys"),a=n("ca5a");t.exports=function(t){return o[t]||(o[t]=a(t))}},"626a":function(t,e,n){var o=n("2d95");t.exports=Object("z").propertyIsEnumerable(0)?Object:function(t){return"String"==o(t)?t.split(""):Object(t)}},6762:function(t,e,n){"use strict";var o=n("5ca1"),a=n("c366")(!0);o(o.P,"Array",{includes:function(t){return a(this,t,arguments.length>1?arguments[1]:void 0)}}),n("9c6c")("includes")},6821:function(t,e,n){var o=n("626a"),a=n("be13");t.exports=function(t){return o(a(t))}},"69a8":function(t,e){var n={}.hasOwnProperty;t.exports=function(t,e){return n.call(t,e)}},"6a99":function(t,e,n){var o=n("d3f4");t.exports=function(t,e){if(!o(t))return t;var n,a;if(e&&"function"==typeof(n=t.toString)&&!o(a=n.call(t)))return a;if("function"==typeof(n=t.valueOf)&&!o(a=n.call(t)))return a;if(!e&&"function"==typeof(n=t.toString)&&!o(a=n.call(t)))return a;throw TypeError("Can't convert object to primitive value")}},7333:function(t,e,n){"use strict";var o=n("0d58"),a=n("2621"),i=n("52a7"),r=n("4bf8"),s=n("626a"),l=Object.assign;t.exports=!l||n("79e5")((function(){var t={},e={},n=Symbol(),o="abcdefghijklmnopqrst";return t[n]=7,o.split("").forEach((function(t){e[t]=t})),7!=l({},t)[n]||Object.keys(l({},e)).join("")!=o}))?function(t,e){for(var n=r(t),l=arguments.length,c=1,d=a.f,u=i.f;l>c;)for(var p,h=s(arguments[c++]),f=d?o(h).concat(d(h)):o(h),g=f.length,v=0;g>v;)u.call(h,p=f[v++])&&(n[p]=h[p]);return n}:l},7726:function(t,e){var n=t.exports="undefined"!=typeof window&&window.Math==Math?window:"undefined"!=typeof self&&self.Math==Math?self:Function("return this")();"number"==typeof __g&&(__g=n)},"77f1":function(t,e,n){var o=n("4588"),a=Math.max,i=Math.min;t.exports=function(t,e){return(t=o(t))<0?a(t+e,0):i(t,e)}},"79e5":function(t,e){t.exports=function(t){try{return!!t()}catch(t){return!0}}},"7f20":function(t,e,n){var o=n("86cc").f,a=n("69a8"),i=n("2b4c")("toStringTag");t.exports=function(t,e,n){t&&!a(t=n?t:t.prototype,i)&&o(t,i,{configurable:!0,value:e})}},8378:function(t,e){var n=t.exports={version:"2.6.5"};"number"==typeof __e&&(__e=n)},"84f2":function(t,e){t.exports={}},"86cc":function(t,e,n){var o=n("cb7c"),a=n("c69a"),i=n("6a99"),r=Object.defineProperty;e.f=n("9e1e")?Object.defineProperty:function(t,e,n){if(o(t),e=i(e,!0),o(n),a)try{return r(t,e,n)}catch(t){}if("get"in n||"set"in n)throw TypeError("Accessors not supported!");return"value"in n&&(t[e]=n.value),t}},"9b43":function(t,e,n){var o=n("d8e8");t.exports=function(t,e,n){if(o(t),void 0===e)return t;switch(n){case 1:return function(n){return t.call(e,n)};case 2:return function(n,o){return t.call(e,n,o)};case 3:return function(n,o,a){return t.call(e,n,o,a)}}return function(){return t.apply(e,arguments)}}},"9c6c":function(t,e,n){var o=n("2b4c")("unscopables"),a=Array.prototype;null==a[o]&&n("32e9")(a,o,{}),t.exports=function(t){a[o][t]=!0}},"9def":function(t,e,n){var o=n("4588"),a=Math.min;t.exports=function(t){return t>0?a(o(t),9007199254740991):0}},"9e1e":function(t,e,n){t.exports=!n("79e5")((function(){return 7!=Object.defineProperty({},"a",{get:function(){return 7}}).a}))},a352:function(e,n){e.exports=t},a481:function(t,e,n){"use strict";var o=n("cb7c"),a=n("4bf8"),i=n("9def"),r=n("4588"),s=n("0390"),l=n("5f1b"),c=Math.max,d=Math.min,u=Math.floor,p=/\$([$&`']|\d\d?|<[^>]*>)/g,h=/\$([$&`']|\d\d?)/g;n("214f")("replace",2,(function(t,e,n,f){return[function(o,a){var i=t(this),r=null==o?void 0:o[e];return void 0!==r?r.call(o,i,a):n.call(String(i),o,a)},function(t,e){var a=f(n,t,this,e);if(a.done)return a.value;var u=o(t),p=String(this),h="function"==typeof e;h||(e=String(e));var v=u.global;if(v){var m=u.unicode;u.lastIndex=0}for(var b=[];;){var A=l(u,p);if(null===A)break;if(b.push(A),!v)break;""===String(A[0])&&(u.lastIndex=s(p,i(u.lastIndex),m))}for(var y,x="",w=0,C=0;C<b.length;C++){A=b[C];for(var S=String(A[0]),k=c(d(r(A.index),p.length),0),_=[],E=1;E<A.length;E++)_.push(void 0===(y=A[E])?y:String(y));var D=A.groups;if(h){var O=[S].concat(_,k,p);void 0!==D&&O.push(D);var N=String(e.apply(void 0,O))}else N=g(S,p,k,_,D,e);k>=w&&(x+=p.slice(w,k)+N,w=k+S.length)}return x+p.slice(w)}];function g(t,e,o,i,r,s){var l=o+t.length,c=i.length,d=h;return void 0!==r&&(r=a(r),d=p),n.call(s,d,(function(n,a){var s;switch(a.charAt(0)){case"$":return"$";case"&":return t;case"`":return e.slice(0,o);case"'":return e.slice(l);case"<":s=r[a.slice(1,-1)];break;default:var d=+a;if(0===d)return n;if(d>c){var p=u(d/10);return 0===p?n:p<=c?void 0===i[p-1]?a.charAt(1):i[p-1]+a.charAt(1):n}s=i[d-1]}return void 0===s?"":s}))}}))},aae3:function(t,e,n){var o=n("d3f4"),a=n("2d95"),i=n("2b4c")("match");t.exports=function(t){var e;return o(t)&&(void 0!==(e=t[i])?!!e:"RegExp"==a(t))}},ac6a:function(t,e,n){for(var o=n("cadf"),a=n("0d58"),i=n("2aba"),r=n("7726"),s=n("32e9"),l=n("84f2"),c=n("2b4c"),d=c("iterator"),u=c("toStringTag"),p=l.Array,h={CSSRuleList:!0,CSSStyleDeclaration:!1,CSSValueList:!1,ClientRectList:!1,DOMRectList:!1,DOMStringList:!1,DOMTokenList:!0,DataTransferItemList:!1,FileList:!1,HTMLAllCollection:!1,HTMLCollection:!1,HTMLFormElement:!1,HTMLSelectElement:!1,MediaList:!0,MimeTypeArray:!1,NamedNodeMap:!1,NodeList:!0,PaintRequestList:!1,Plugin:!1,PluginArray:!1,SVGLengthList:!1,SVGNumberList:!1,SVGPathSegList:!1,SVGPointList:!1,SVGStringList:!1,SVGTransformList:!1,SourceBufferList:!1,StyleSheetList:!0,TextTrackCueList:!1,TextTrackList:!1,TouchList:!1},f=a(h),g=0;g<f.length;g++){var v,m=f[g],b=h[m],A=r[m],y=A&&A.prototype;if(y&&(y[d]||s(y,d,p),y[u]||s(y,u,m),l[m]=p,b))for(v in o)y[v]||i(y,v,o[v],!0)}},b0c5:function(t,e,n){"use strict";var o=n("520a");n("5ca1")({target:"RegExp",proto:!0,forced:o!==/./.exec},{exec:o})},be13:function(t,e){t.exports=function(t){if(null==t)throw TypeError("Can't call method on "+t);return t}},c366:function(t,e,n){var o=n("6821"),a=n("9def"),i=n("77f1");t.exports=function(t){return function(e,n,r){var s,l=o(e),c=a(l.length),d=i(r,c);if(t&&n!=n){for(;c>d;)if((s=l[d++])!=s)return!0}else for(;c>d;d++)if((t||d in l)&&l[d]===n)return t||d||0;return!t&&-1}}},c649:function(t,e,n){"use strict";(function(t){n.d(e,"c",(function(){return c})),n.d(e,"a",(function(){return s})),n.d(e,"b",(function(){return i})),n.d(e,"d",(function(){return l})),n("a481");var o,a,i="undefined"!=typeof window?window.console:t.console,r=/-(\w)/g,s=(o=function(t){return t.replace(r,(function(t,e){return e?e.toUpperCase():""}))},a=Object.create(null),function(t){return a[t]||(a[t]=o(t))});function l(t){null!==t.parentElement&&t.parentElement.removeChild(t)}function c(t,e,n){var o=0===n?t.children[0]:t.children[n-1].nextSibling;t.insertBefore(e,o)}}).call(this,n("c8ba"))},c69a:function(t,e,n){t.exports=!n("9e1e")&&!n("79e5")((function(){return 7!=Object.defineProperty(n("230e")("div"),"a",{get:function(){return 7}}).a}))},c8ba:function(t,e){var n;n=function(){return this}();try{n=n||new Function("return this")()}catch(t){"object"==typeof window&&(n=window)}t.exports=n},ca5a:function(t,e){var n=0,o=Math.random();t.exports=function(t){return"Symbol(".concat(void 0===t?"":t,")_",(++n+o).toString(36))}},cadf:function(t,e,n){"use strict";var o=n("9c6c"),a=n("d53b"),i=n("84f2"),r=n("6821");t.exports=n("01f9")(Array,"Array",(function(t,e){this._t=r(t),this._i=0,this._k=e}),(function(){var t=this._t,e=this._k,n=this._i++;return!t||n>=t.length?(this._t=void 0,a(1)):a(0,"keys"==e?n:"values"==e?t[n]:[n,t[n]])}),"values"),i.Arguments=i.Array,o("keys"),o("values"),o("entries")},cb7c:function(t,e,n){var o=n("d3f4");t.exports=function(t){if(!o(t))throw TypeError(t+" is not an object!");return t}},ce10:function(t,e,n){var o=n("69a8"),a=n("6821"),i=n("c366")(!1),r=n("613b")("IE_PROTO");t.exports=function(t,e){var n,s=a(t),l=0,c=[];for(n in s)n!=r&&o(s,n)&&c.push(n);for(;e.length>l;)o(s,n=e[l++])&&(~i(c,n)||c.push(n));return c}},d2c8:function(t,e,n){var o=n("aae3"),a=n("be13");t.exports=function(t,e,n){if(o(e))throw TypeError("String#"+n+" doesn't accept regex!");return String(a(t))}},d3f4:function(t,e){t.exports=function(t){return"object"==typeof t?null!==t:"function"==typeof t}},d53b:function(t,e){t.exports=function(t,e){return{value:e,done:!!t}}},d8e8:function(t,e){t.exports=function(t){if("function"!=typeof t)throw TypeError(t+" is not a function!");return t}},e11e:function(t,e){t.exports="constructor,hasOwnProperty,isPrototypeOf,propertyIsEnumerable,toLocaleString,toString,valueOf".split(",")},f559:function(t,e,n){"use strict";var o=n("5ca1"),a=n("9def"),i=n("d2c8"),r="startsWith",s=""[r];o(o.P+o.F*n("5147")(r),"String",{startsWith:function(t){var e=i(this,t,r),n=a(Math.min(arguments.length>1?arguments[1]:void 0,e.length)),o=String(t);return s?s.call(e,o,n):e.slice(n,n+o.length)===o}})},f6fd:function(t,e){!function(t){var e="currentScript",n=t.getElementsByTagName("script");e in t||Object.defineProperty(t,e,{get:function(){try{throw new Error}catch(o){var t,e=(/.*at [^\(]*\((.*):.+:.+\)$/gi.exec(o.stack)||[!1])[1];for(t in n)if(n[t].src==e||"interactive"==n[t].readyState)return n[t];return null}}})}(document)},f751:function(t,e,n){var o=n("5ca1");o(o.S+o.F,"Object",{assign:n("7333")})},fa5b:function(t,e,n){t.exports=n("5537")("native-function-to-string",Function.toString)},fab2:function(t,e,n){var o=n("7726").document;t.exports=o&&o.documentElement},fb15:function(t,e,n){"use strict";var o;function a(t,e){(null==e||e>t.length)&&(e=t.length);for(var n=0,o=new Array(e);n<e;n++)o[n]=t[n];return o}function i(t,e){if(t){if("string"==typeof t)return a(t,e);var n=Object.prototype.toString.call(t).slice(8,-1);return"Object"===n&&t.constructor&&(n=t.constructor.name),"Map"===n||"Set"===n?Array.from(t):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?a(t,e):void 0}}function r(t){return function(t){if(Array.isArray(t))return a(t)}(t)||function(t){if("undefined"!=typeof Symbol&&Symbol.iterator in Object(t))return Array.from(t)}(t)||i(t)||function(){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.r(e),"undefined"!=typeof window&&(n("f6fd"),(o=window.document.currentScript)&&(o=o.src.match(/(.+\/)[^/]+\.js(\?.*)?$/))&&(n.p=o[1])),n("f751"),n("f559"),n("ac6a"),n("cadf"),n("456d"),n("6762"),n("2fdb");var s=n("a352"),l=n.n(s),c=n("c649");function d(t,e){var n=this;this.$nextTick((function(){return n.$emit(t.toLowerCase(),e)}))}function u(t){var e=this;return function(n){null!==e.realList&&e["onDrag"+t](n),d.call(e,t,n)}}function p(t){return["transition-group","TransitionGroup"].includes(t)}function h(t,e,n){return t[n]||(e[n]?e[n]():void 0)}var f=["Start","Add","Remove","Update","End"],g=["Choose","Unchoose","Sort","Filter","Clone"],v=["Move"].concat(f,g).map((function(t){return"on"+t})),m=null,b={name:"draggable",inheritAttrs:!1,props:{options:Object,list:{type:Array,required:!1,default:null},value:{type:Array,required:!1,default:null},noTransitionOnDrag:{type:Boolean,default:!1},clone:{type:Function,default:function(t){return t}},element:{type:String,default:"div"},tag:{type:String,default:null},move:{type:Function,default:null},componentData:{type:Object,required:!1,default:null}},data:function(){return{transitionMode:!1,noneFunctionalComponentMode:!1}},render:function(t){var e=this.$slots.default;this.transitionMode=function(t){if(!t||1!==t.length)return!1;var e,n,o=(e=t,n=1,function(t){if(Array.isArray(t))return t}(e)||function(t,e){if("undefined"!=typeof Symbol&&Symbol.iterator in Object(t)){var n=[],o=!0,a=!1,i=void 0;try{for(var r,s=t[Symbol.iterator]();!(o=(r=s.next()).done)&&(n.push(r.value),!e||n.length!==e);o=!0);}catch(t){a=!0,i=t}finally{try{o||null==s.return||s.return()}finally{if(a)throw i}}return n}}(e,n)||i(e,n)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}())[0].componentOptions;return!!o&&p(o.tag)}(e);var n=function(t,e,n){var o=0,a=0,i=h(e,n,"header");i&&(o=i.length,t=t?[].concat(r(i),r(t)):r(i));var s=h(e,n,"footer");return s&&(a=s.length,t=t?[].concat(r(t),r(s)):r(s)),{children:t,headerOffset:o,footerOffset:a}}(e,this.$slots,this.$scopedSlots),o=n.children,a=n.headerOffset,s=n.footerOffset;this.headerOffset=a,this.footerOffset=s;var l=function(t,e){var n=null,o=function(t,e){n=function(t,e,n){return void 0===n||((t=t||{})[e]=n),t}(n,t,e)};if(o("attrs",Object.keys(t).filter((function(t){return"id"===t||t.startsWith("data-")})).reduce((function(e,n){return e[n]=t[n],e}),{})),!e)return n;var a=e.on,i=e.props,r=e.attrs;return o("on",a),o("props",i),Object.assign(n.attrs,r),n}(this.$attrs,this.componentData);return t(this.getTag(),l,o)},created:function(){null!==this.list&&null!==this.value&&c.b.error("Value and list props are mutually exclusive! Please set one or another."),"div"!==this.element&&c.b.warn("Element props is deprecated please use tag props instead. See https://github.com/SortableJS/Vue.Draggable/blob/master/documentation/migrate.md#element-props"),void 0!==this.options&&c.b.warn("Options props is deprecated, add sortable options directly as vue.draggable item, or use v-bind. See https://github.com/SortableJS/Vue.Draggable/blob/master/documentation/migrate.md#options-props")},mounted:function(){var t=this;if(this.noneFunctionalComponentMode=this.getTag().toLowerCase()!==this.$el.nodeName.toLowerCase()&&!this.getIsFunctional(),this.noneFunctionalComponentMode&&this.transitionMode)throw new Error("Transition-group inside component is not supported. Please alter tag value or remove transition-group. Current tag value: ".concat(this.getTag()));var e={};f.forEach((function(n){e["on"+n]=u.call(t,n)})),g.forEach((function(n){e["on"+n]=d.bind(t,n)}));var n=Object.keys(this.$attrs).reduce((function(e,n){return e[Object(c.a)(n)]=t.$attrs[n],e}),{}),o=Object.assign({},this.options,n,e,{onMove:function(e,n){return t.onDragMove(e,n)}});!("draggable"in o)&&(o.draggable=">*"),this._sortable=new l.a(this.rootContainer,o),this.computeIndexes()},beforeDestroy:function(){void 0!==this._sortable&&this._sortable.destroy()},computed:{rootContainer:function(){return this.transitionMode?this.$el.children[0]:this.$el},realList:function(){return this.list?this.list:this.value}},watch:{options:{handler:function(t){this.updateOptions(t)},deep:!0},$attrs:{handler:function(t){this.updateOptions(t)},deep:!0},realList:function(){this.computeIndexes()}},methods:{getIsFunctional:function(){var t=this._vnode.fnOptions;return t&&t.functional},getTag:function(){return this.tag||this.element},updateOptions:function(t){for(var e in t){var n=Object(c.a)(e);-1===v.indexOf(n)&&this._sortable.option(n,t[e])}},getChildrenNodes:function(){if(this.noneFunctionalComponentMode)return this.$children[0].$slots.default;var t=this.$slots.default;return this.transitionMode?t[0].child.$slots.default:t},computeIndexes:function(){var t=this;this.$nextTick((function(){t.visibleIndexes=function(t,e,n,o){if(!t)return[];var a=t.map((function(t){return t.elm})),i=e.length-o,s=r(e).map((function(t,e){return e>=i?a.length:a.indexOf(t)}));return n?s.filter((function(t){return-1!==t})):s}(t.getChildrenNodes(),t.rootContainer.children,t.transitionMode,t.footerOffset)}))},getUnderlyingVm:function(t){var e,n,o=(e=this.getChildrenNodes()||[],n=t,e.map((function(t){return t.elm})).indexOf(n));return-1===o?null:{index:o,element:this.realList[o]}},getUnderlyingPotencialDraggableComponent:function(t){var e=t.__vue__;return e&&e.$options&&p(e.$options._componentTag)?e.$parent:!("realList"in e)&&1===e.$children.length&&"realList"in e.$children[0]?e.$children[0]:e},emitChanges:function(t){var e=this;this.$nextTick((function(){e.$emit("change",t)}))},alterList:function(t){if(this.list)t(this.list);else{var e=r(this.value);t(e),this.$emit("input",e)}},spliceList:function(){var t=arguments;this.alterList((function(e){return e.splice.apply(e,r(t))}))},updatePosition:function(t,e){this.alterList((function(n){return n.splice(e,0,n.splice(t,1)[0])}))},getRelatedContextFromMoveEvent:function(t){var e=t.to,n=t.related,o=this.getUnderlyingPotencialDraggableComponent(e);if(!o)return{component:o};var a=o.realList,i={list:a,component:o};if(e!==n&&a&&o.getUnderlyingVm){var r=o.getUnderlyingVm(n);if(r)return Object.assign(r,i)}return i},getVmIndex:function(t){var e=this.visibleIndexes,n=e.length;return t>n-1?n:e[t]},getComponent:function(){return this.$slots.default[0].componentInstance},resetTransitionData:function(t){if(this.noTransitionOnDrag&&this.transitionMode){this.getChildrenNodes()[t].data=null;var e=this.getComponent();e.children=[],e.kept=void 0}},onDragStart:function(t){this.context=this.getUnderlyingVm(t.item),t.item._underlying_vm_=this.clone(this.context.element),m=t.item},onDragAdd:function(t){var e=t.item._underlying_vm_;if(void 0!==e){Object(c.d)(t.item);var n=this.getVmIndex(t.newIndex);this.spliceList(n,0,e),this.computeIndexes();var o={element:e,newIndex:n};this.emitChanges({added:o})}},onDragRemove:function(t){if(Object(c.c)(this.rootContainer,t.item,t.oldIndex),"clone"!==t.pullMode){var e=this.context.index;this.spliceList(e,1);var n={element:this.context.element,oldIndex:e};this.resetTransitionData(e),this.emitChanges({removed:n})}else Object(c.d)(t.clone)},onDragUpdate:function(t){Object(c.d)(t.item),Object(c.c)(t.from,t.item,t.oldIndex);var e=this.context.index,n=this.getVmIndex(t.newIndex);this.updatePosition(e,n);var o={element:this.context.element,oldIndex:e,newIndex:n};this.emitChanges({moved:o})},updateProperty:function(t,e){t.hasOwnProperty(e)&&(t[e]+=this.headerOffset)},computeFutureIndex:function(t,e){if(!t.element)return 0;var n=r(e.to.children).filter((function(t){return"none"!==t.style.display})),o=n.indexOf(e.related),a=t.component.getVmIndex(o);return-1===n.indexOf(m)&&e.willInsertAfter?a+1:a},onDragMove:function(t,e){var n=this.move;if(!n||!this.realList)return!0;var o=this.getRelatedContextFromMoveEvent(t),a=this.context,i=this.computeFutureIndex(o,t);return Object.assign(a,{futureIndex:i}),n(Object.assign({},t,{relatedContext:o,draggedContext:a}),e)},onDragEnd:function(){this.computeIndexes(),m=null}}};"undefined"!=typeof window&&"Vue"in window&&window.Vue.component("draggable",b);var A=b;e.default=A}}).default},t.exports=o(n(31715))},81488:t=>{"use strict";t.exports="data:image/svg+xml,%3csvg%20xmlns=%27http://www.w3.org/2000/svg%27%20width=%2724%27%20height=%2724%27%20fill=%27%23222%27%3e%3cpath%20d=%27M15.4%2016.6L10.8%2012l4.6-4.6L14%206l-6%206%206%206%201.4-1.4z%27/%3e%3c/svg%3e"},34868:t=>{"use strict";t.exports="data:image/svg+xml,%3csvg%20xmlns=%27http://www.w3.org/2000/svg%27%20width=%2724%27%20height=%2724%27%20fill=%27%23222%27%3e%3cpath%20d=%27M18.4%207.4L17%206l-6%206%206%206%201.4-1.4-4.6-4.6%204.6-4.6m-6%200L11%206l-6%206%206%206%201.4-1.4L7.8%2012l4.6-4.6z%27/%3e%3c/svg%3e"},37059:t=>{"use strict";t.exports="data:image/svg+xml,%3csvg%20xmlns=%27http://www.w3.org/2000/svg%27%20width=%2724%27%20height=%2724%27%20fill=%27%23222%27%3e%3cpath%20d=%27M5.6%207.4L7%206l6%206-6%206-1.4-1.4%204.6-4.6-4.6-4.6m6%200L13%206l6%206-6%206-1.4-1.4%204.6-4.6-4.6-4.6z%27/%3e%3c/svg%3e"},75701:t=>{"use strict";t.exports="data:image/svg+xml,%3csvg%20xmlns=%27http://www.w3.org/2000/svg%27%20width=%2724%27%20height=%2724%27%20fill=%27%23222%27%3e%3cpath%20d=%27M8.6%2016.6l4.6-4.6-4.6-4.6L10%206l6%206-6%206-1.4-1.4z%27/%3e%3c/svg%3e"}},o={};function a(t){var e=o[t];if(void 0!==e)return e.exports;var i=o[t]={id:t,loaded:!1,exports:{}};return n[t].call(i.exports,i,i.exports,a),i.loaded=!0,i.exports}a.m=n,e=[],a.O=(t,n,o,i)=>{if(!n){var r=1/0;for(d=0;d<e.length;d++){n=e[d][0],o=e[d][1],i=e[d][2];for(var s=!0,l=0;l<n.length;l++)(!1&i||r>=i)&&Object.keys(a.O).every((t=>a.O[t](n[l])))?n.splice(l--,1):(s=!1,i<r&&(r=i));if(s){e.splice(d--,1);var c=o();void 0!==c&&(t=c)}}return t}i=i||0;for(var d=e.length;d>0&&e[d-1][2]>i;d--)e[d]=e[d-1];e[d]=[n,o,i]},a.n=t=>{var e=t&&t.__esModule?()=>t.default:()=>t;return a.d(e,{a:e}),e},a.d=(t,e)=>{for(var n in e)a.o(e,n)&&!a.o(t,n)&&Object.defineProperty(t,n,{enumerable:!0,get:e[n]})},a.e=()=>Promise.resolve(),a.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(t){if("object"==typeof window)return window}}(),a.o=(t,e)=>Object.prototype.hasOwnProperty.call(t,e),a.r=t=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})},a.nmd=t=>(t.paths=[],t.children||(t.children=[]),t),a.j=4773,(()=>{a.b=document.baseURI||self.location.href;var t={4773:0};a.O.j=e=>0===t[e];var e=(e,n)=>{var o,i,r=n[0],s=n[1],l=n[2],c=0;if(r.some((e=>0!==t[e]))){for(o in s)a.o(s,o)&&(a.m[o]=s[o]);if(l)var d=l(a)}for(e&&e(n);c<r.length;c++)i=r[c],a.o(t,i)&&t[i]&&t[i][0](),t[i]=0;return a.O(d)},n=self.webpackChunknextcloud=self.webpackChunknextcloud||[];n.forEach(e.bind(null,0)),n.push=e.bind(null,n.push.bind(n))})(),a.nc=void 0;var i=a.O(void 0,[7874],(()=>a(2735)));i=a.O(i)})();
//# sourceMappingURL=dashboard-main.js.map?v=acabebf92107041cf571