diff --git a/js/activity-app.mjs b/js/activity-app.mjs index dcd24e8aa..c8934ed6d 100644 --- a/js/activity-app.mjs +++ b/js/activity-app.mjs @@ -1,3 +1,3 @@ (function(){"use strict";try{if(typeof document<"u"){var a=document.createElement("style");a.appendChild(document.createTextNode('@charset "UTF-8";#skip-actions.vue-skip-actions:focus-within{top:0!important;left:0!important;width:100vw;height:100vh;padding:var(--body-container-margin)!important;-webkit-backdrop-filter:brightness(50%);backdrop-filter:brightness(50%)}.material-design-icon[data-v-cfc84a6c]{display:flex;align-self:center;justify-self:center;align-items:center;justify-content:center}.vue-skip-actions__container[data-v-cfc84a6c]{background-color:var(--color-main-background);border-radius:var(--border-radius-large);padding:22px}.vue-skip-actions__headline[data-v-cfc84a6c]{font-weight:700;font-size:20px;line-height:30px;margin-bottom:12px}.vue-skip-actions__buttons[data-v-cfc84a6c]{display:flex;flex-wrap:wrap;gap:12px}.vue-skip-actions__buttons>*[data-v-cfc84a6c]{flex:1 0 fit-content}.vue-skip-actions__image[data-v-cfc84a6c]{margin-top:12px}.content[data-v-cfc84a6c]{box-sizing:border-box;margin:var(--body-container-margin);margin-top:50px;display:flex;width:calc(100% - var(--body-container-margin) * 2);border-radius:var(--body-container-radius);height:var(--body-height);overflow:hidden;padding:0}.content[data-v-cfc84a6c]:not(.with-sidebar--full){position:fixed}.content[data-v-cfc84a6c] *{box-sizing:border-box}.material-design-icon[data-v-7e250fb8]{display:flex;align-self:center;justify-self:center;align-items:center;justify-content:center}.app-details-toggle[data-v-7e250fb8]{position:-webkit-sticky;position:-webkit-sticky;position:sticky;width:44px;height:44px;padding:14px;cursor:pointer;opacity:.6;transform:rotate(180deg);background-color:var(--color-main-background);z-index:2000;top:var(--app-navigation-padding);left:calc(var(--default-clickable-area) + var(--app-navigation-padding) * 2)}.app-details-toggle--mobile[data-v-7e250fb8]{left:var(--app-navigation-padding)}.app-details-toggle[data-v-7e250fb8]:active,.app-details-toggle[data-v-7e250fb8]:hover,.app-details-toggle[data-v-7e250fb8]:focus{opacity:1}.material-design-icon[data-v-a284c47e]{display:flex;align-self:center;justify-self:center;align-items:center;justify-content:center}.app-content[data-v-a284c47e]{position:initial;z-index:1000;flex-basis:100vw;height:100%;margin:0!important;background-color:var(--color-main-background);min-width:0}.app-content[data-v-a284c47e]:not(.app-content--has-list){overflow:auto}.app-content-wrapper[data-v-a284c47e]{position:relative;width:100%;height:100%}.app-content-wrapper--no-split.app-content-wrapper--show-list[data-v-a284c47e] .app-content-list{display:flex}.app-content-wrapper--no-split.app-content-wrapper--show-list[data-v-a284c47e] .app-content-details,.app-content-wrapper--no-split.app-content-wrapper--show-details[data-v-a284c47e] .app-content-list{display:none}.app-content-wrapper--no-split.app-content-wrapper--show-details[data-v-a284c47e] .app-content-details{display:block}[data-v-a284c47e] .splitpanes.default-theme .app-content-list{max-width:none;scrollbar-width:auto}[data-v-a284c47e] .splitpanes.default-theme .splitpanes__pane{background-color:transparent;transition:none}[data-v-a284c47e] .splitpanes.default-theme .splitpanes__pane-list{min-width:300px;position:-webkit-sticky;position:-webkit-sticky;position:sticky}@media only screen and (width < 1024px){[data-v-a284c47e] .splitpanes.default-theme .splitpanes__pane-list{display:none}}[data-v-a284c47e] .splitpanes.default-theme .splitpanes__pane-details{overflow-y:auto}@media only screen and (width < 1024px){[data-v-a284c47e] .splitpanes.default-theme .splitpanes__pane-details{min-width:100%}}[data-v-a284c47e] .splitpanes.default-theme .app-content-wrapper--vertical-split .splitpanes__splitter{width:9px;margin-left:-5px;background-color:transparent;border-left:none}[data-v-a284c47e] .splitpanes.default-theme .app-content-wrapper--vertical-split .splitpanes__splitter:before,[data-v-a284c47e] .splitpanes.default-theme .app-content-wrapper--vertical-split .splitpanes__splitter:after{display:none}[data-v-a284c47e] .splitpanes.default-theme .app-content-wrapper--horizontal-split .splitpanes__splitter{height:9px;margin-top:-5px}.app-content-wrapper--show-list[data-v-a284c47e] .app-content-list{max-width:none}.splitpanes{display:-webkit-box;display:-ms-flexbox;display:flex;width:100%;height:100%}.splitpanes--vertical{-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row}.splitpanes--horizontal{-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}.splitpanes--dragging *{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.splitpanes__pane{width:100%;height:100%;overflow:hidden}.splitpanes--vertical .splitpanes__pane{-webkit-transition:width .2s ease-out;-o-transition:width .2s ease-out;transition:width .2s ease-out}.splitpanes--horizontal .splitpanes__pane{-webkit-transition:height .2s ease-out;-o-transition:height .2s ease-out;transition:height .2s ease-out}.splitpanes--dragging .splitpanes__pane{-webkit-transition:none;-o-transition:none;transition:none}.splitpanes__splitter{-ms-touch-action:none;touch-action:none}.splitpanes--vertical>.splitpanes__splitter{min-width:1px;cursor:col-resize}.splitpanes--horizontal>.splitpanes__splitter{min-height:1px;cursor:row-resize}.splitpanes.default-theme .splitpanes__pane{background-color:#f2f2f2}.splitpanes.default-theme .splitpanes__splitter{background-color:#fff;-webkit-box-sizing:border-box;box-sizing:border-box;position:relative;-ms-flex-negative:0;flex-shrink:0}.splitpanes.default-theme .splitpanes__splitter:before,.splitpanes.default-theme .splitpanes__splitter:after{content:"";position:absolute;top:50%;left:50%;background-color:#00000026;-webkit-transition:background-color .3s;-o-transition:background-color .3s;transition:background-color .3s}.splitpanes.default-theme .splitpanes__splitter:hover:before,.splitpanes.default-theme .splitpanes__splitter:hover:after{background-color:#00000040}.splitpanes.default-theme .splitpanes__splitter:first-child{cursor:auto}.default-theme.splitpanes .splitpanes .splitpanes__splitter{z-index:1}.default-theme.splitpanes--vertical>.splitpanes__splitter,.default-theme .splitpanes--vertical>.splitpanes__splitter{width:7px;border-left:1px solid #eee;margin-left:-1px}.default-theme.splitpanes--vertical>.splitpanes__splitter:before,.default-theme.splitpanes--vertical>.splitpanes__splitter:after,.default-theme .splitpanes--vertical>.splitpanes__splitter:before,.default-theme .splitpanes--vertical>.splitpanes__splitter:after{-webkit-transform:translateY(-50%);-ms-transform:translateY(-50%);transform:translateY(-50%);width:1px;height:30px}.default-theme.splitpanes--vertical>.splitpanes__splitter:before,.default-theme .splitpanes--vertical>.splitpanes__splitter:before{margin-left:-2px}.default-theme.splitpanes--vertical>.splitpanes__splitter:after,.default-theme .splitpanes--vertical>.splitpanes__splitter:after{margin-left:1px}.default-theme.splitpanes--horizontal>.splitpanes__splitter,.default-theme .splitpanes--horizontal>.splitpanes__splitter{height:7px;border-top:1px solid #eee;margin-top:-1px}.default-theme.splitpanes--horizontal>.splitpanes__splitter:before,.default-theme.splitpanes--horizontal>.splitpanes__splitter:after,.default-theme .splitpanes--horizontal>.splitpanes__splitter:before,.default-theme .splitpanes--horizontal>.splitpanes__splitter:after{-webkit-transform:translateX(-50%);-ms-transform:translateX(-50%);transform:translate(-50%);width:30px;height:1px}.default-theme.splitpanes--horizontal>.splitpanes__splitter:before,.default-theme .splitpanes--horizontal>.splitpanes__splitter:before{margin-top:-2px}.default-theme.splitpanes--horizontal>.splitpanes__splitter:after,.default-theme .splitpanes--horizontal>.splitpanes__splitter:after{margin-top:1px}.activity-group__heading[data-v-c16e5a63]{line-height:1.5;margin-block:30px 12px}.activity-group__heading[data-v-c16e5a63]:first-of-type{margin-block-start:0}.activity-app[data-v-499b54a9]{display:flex;flex-direction:column;overflow:hidden}.activity-app__empty-content[data-v-499b54a9]{height:100%}.activity-app__loading-indicator[data-v-499b54a9]{color:var(--color-text-maxcontrast);justify-self:center;margin-block:30px 6px;text-align:center}.activity-app__container[data-v-499b54a9]{display:flex;flex-direction:column;height:100%;width:min(100%,924px);max-width:924px;margin:0 auto;padding-inline:12px;overflow-y:scroll}.activity-app__heading[data-v-499b54a9]{font-weight:700;font-size:20px;line-height:44px;margin:var(--app-navigation-padding, 8px) 0 0 calc(2 * var(--app-navigation-padding, 8px) + 44px)}.material-design-icon{display:flex;align-self:center;justify-self:center;align-items:center;justify-content:center}.app-navigation,.app-content{--app-navigation-padding: calc(var(--default-grid-baseline, 4px) * 2)}.material-design-icon[data-v-42389274]{display:flex;align-self:center;justify-self:center;align-items:center;justify-content:center}.app-navigation[data-v-42389274]{--color-text-maxcontrast: var(--color-text-maxcontrast-background-blur, var(--color-text-maxcontrast-default));transition:transform var(--animation-quick),margin var(--animation-quick);width:300px;--app-navigation-max-width: calc(100vw - (var(--app-navigation-padding) + var(--default-clickable-area) + var(--default-grid-baseline)));max-width:var(--app-navigation-max-width);position:relative;top:0;left:0;padding:0;z-index:1800;height:100%;box-sizing:border-box;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;flex-grow:0;flex-shrink:0;background-color:var(--color-main-background-blur, var(--color-main-background));-webkit-backdrop-filter:var(--filter-background-blur, none);backdrop-filter:var(--filter-background-blur, none)}.app-navigation--close[data-v-42389274]{margin-left:calc(-1*min(300px,var(--app-navigation-max-width)))}.app-navigation__content>ul[data-v-42389274]{position:relative;width:100%;overflow-x:hidden;overflow-y:auto;box-sizing:border-box;display:flex;flex-direction:column;gap:var(--default-grid-baseline, 4px);padding:var(--app-navigation-padding)}.app-navigation .app-navigation__list[data-v-42389274]{height:100%}.app-navigation__body--no-list[data-v-42389274]{flex:1 1 auto;overflow:auto;height:100%}.app-navigation__content[data-v-42389274]{height:100%;display:flex;flex-direction:column}[data-themes*=highcontrast] .app-navigation[data-v-42389274]{border-right:1px solid var(--color-border)}@media only screen and (max-width: 1024px){.app-navigation[data-v-42389274]{position:absolute}}.material-design-icon[data-v-e1dc2b3e]{display:flex;align-self:center;justify-self:center;align-items:center;justify-content:center}.app-navigation-toggle-wrapper[data-v-e1dc2b3e]{position:absolute;top:var(--app-navigation-padding);right:calc(0px - var(--app-navigation-padding));margin-right:-44px}button.app-navigation-toggle[data-v-e1dc2b3e]{background-color:var(--color-main-background)}.material-design-icon[data-v-ac3baea0]{display:flex;align-self:center;justify-self:center;align-items:center;justify-content:center}.app-navigation-list[data-v-ac3baea0]{position:relative;width:100%;overflow-x:hidden;overflow-y:auto;box-sizing:border-box;display:flex;flex-direction:column;gap:var(--default-grid-baseline, 4px);padding:var(--app-navigation-padding)}.material-design-icon[data-v-07582bf6]{display:flex;align-self:center;justify-self:center;align-items:center;justify-content:center}.button-vue.icon-collapse[data-v-07582bf6]{position:relative;z-index:105;color:var(--color-main-text);right:0}.button-vue.icon-collapse--open[data-v-07582bf6]{color:var(--color-main-text)}.button-vue.icon-collapse--open[data-v-07582bf6]:hover{color:var(--color-primary-element)}.material-design-icon[data-v-86815ca2]{display:flex;align-self:center;justify-self:center;align-items:center;justify-content:center}.app-navigation-entry[data-v-86815ca2]{position:relative;display:flex;flex-shrink:0;flex-wrap:wrap;box-sizing:border-box;width:100%;min-height:44px;transition:background-color var(--animation-quick) ease-in-out;transition:background-color .2s ease-in-out;border-radius:var(--border-radius-pill)}.app-navigation-entry-wrapper[data-v-86815ca2]{position:relative;display:flex;flex-shrink:0;flex-wrap:wrap;box-sizing:border-box;width:100%}.app-navigation-entry-wrapper.app-navigation-entry--collapsible:not(.app-navigation-entry--opened)>ul[data-v-86815ca2]{display:none}.app-navigation-entry.active[data-v-86815ca2]{background-color:var(--color-primary-element)!important}.app-navigation-entry.active[data-v-86815ca2]:hover{background-color:var(--color-primary-element-hover)!important}.app-navigation-entry.active .app-navigation-entry-link[data-v-86815ca2],.app-navigation-entry.active .app-navigation-entry-button[data-v-86815ca2]{color:var(--color-primary-element-text)!important}.app-navigation-entry[data-v-86815ca2]:focus-within,.app-navigation-entry[data-v-86815ca2]:hover{background-color:var(--color-background-hover)}.app-navigation-entry.active .app-navigation-entry__children[data-v-86815ca2],.app-navigation-entry:focus-within .app-navigation-entry__children[data-v-86815ca2],.app-navigation-entry:hover .app-navigation-entry__children[data-v-86815ca2]{background-color:var(--color-main-background)}.app-navigation-entry.active .app-navigation-entry__utils .app-navigation-entry__actions[data-v-86815ca2],.app-navigation-entry.app-navigation-entry--deleted .app-navigation-entry__utils .app-navigation-entry__actions[data-v-86815ca2],.app-navigation-entry:focus .app-navigation-entry__utils .app-navigation-entry__actions[data-v-86815ca2],.app-navigation-entry:focus-within .app-navigation-entry__utils .app-navigation-entry__actions[data-v-86815ca2],.app-navigation-entry:hover .app-navigation-entry__utils .app-navigation-entry__actions[data-v-86815ca2]{display:inline-block}.app-navigation-entry.app-navigation-entry--deleted>ul[data-v-86815ca2]{display:none}.app-navigation-entry:not(.app-navigation-entry--editing) .app-navigation-entry-link[data-v-86815ca2],.app-navigation-entry:not(.app-navigation-entry--editing) .app-navigation-entry-button[data-v-86815ca2]{padding-right:14px}.app-navigation-entry .app-navigation-entry-link[data-v-86815ca2],.app-navigation-entry .app-navigation-entry-button[data-v-86815ca2]{z-index:100;display:flex;overflow:hidden;flex:1 1 0;box-sizing:border-box;min-height:44px;padding:0;white-space:nowrap;color:var(--color-main-text);background-repeat:no-repeat;background-position:14px center;background-size:16px 16px;line-height:44px}.app-navigation-entry .app-navigation-entry-link .app-navigation-entry-icon[data-v-86815ca2],.app-navigation-entry .app-navigation-entry-button .app-navigation-entry-icon[data-v-86815ca2]{display:flex;align-items:center;flex:0 0 44px;justify-content:center;width:44px;height:44px;background-size:16px 16px;background-repeat:no-repeat;background-position:14px center}.app-navigation-entry .app-navigation-entry-link .app-navigation-entry__name[data-v-86815ca2],.app-navigation-entry .app-navigation-entry-button .app-navigation-entry__name[data-v-86815ca2]{overflow:hidden;max-width:100%;white-space:nowrap;text-overflow:ellipsis}.app-navigation-entry .app-navigation-entry-link .editingContainer[data-v-86815ca2],.app-navigation-entry .app-navigation-entry-button .editingContainer[data-v-86815ca2]{width:calc(100% - 44px);margin:auto}.app-navigation-entry .app-navigation-entry-link[data-v-86815ca2]:focus-visible,.app-navigation-entry .app-navigation-entry-button[data-v-86815ca2]:focus-visible{box-shadow:0 0 0 4px var(--color-main-background);outline:2px solid var(--color-main-text);border-radius:var(--border-radius-pill)}.app-navigation-entry__children[data-v-86815ca2]{position:relative;display:flex;flex:0 1 auto;flex-direction:column;width:100%;gap:var(--default-grid-baseline, 4px)}.app-navigation-entry__children .app-navigation-entry[data-v-86815ca2]{display:inline-flex;flex-wrap:wrap;padding-left:16px}.app-navigation-entry__deleted[data-v-86815ca2]{display:inline-flex;flex:1 1 0;padding-left:30px!important}.app-navigation-entry__deleted .app-navigation-entry__deleted-description[data-v-86815ca2]{position:relative;overflow:hidden;flex:1 1 0;white-space:nowrap;text-overflow:ellipsis;line-height:44px}.app-navigation-entry__utils[data-v-86815ca2]{display:flex;min-width:44px;align-items:center;flex:0 1 auto;justify-content:flex-end}.app-navigation-entry__utils.app-navigation-entry__utils--display-actions .action-item.app-navigation-entry__actions[data-v-86815ca2]{display:inline-block}.app-navigation-entry__utils .app-navigation-entry__counter-wrapper[data-v-86815ca2]{margin-right:calc(var(--default-grid-baseline) * 3);display:flex;align-items:center;flex:0 1 auto}.app-navigation-entry__utils .action-item.app-navigation-entry__actions[data-v-86815ca2]{display:none}.app-navigation-entry--editing .app-navigation-entry-edit[data-v-86815ca2]{z-index:250;opacity:1}.app-navigation-entry--deleted .app-navigation-entry-deleted[data-v-86815ca2]{z-index:250;transform:translate(0)}.app-navigation-entry--pinned[data-v-86815ca2]{order:2;margin-top:auto}.app-navigation-entry--pinned~.app-navigation-entry--pinned[data-v-86815ca2]{margin-top:0}[data-themes*=highcontrast] .app-navigation-entry[data-v-86815ca2]:active{background-color:var(--color-primary-element-light-hover)!important}.material-design-icon[data-v-51d9ee64]{display:flex;align-self:center;justify-self:center;align-items:center;justify-content:center}/**\n * @copyright Copyright (c) 2019 John Molakvoæ \n *\n * @author John Molakvoæ \n * @author Marco Ambrosini \n *\n * @license GNU AGPL version 3 or any later version\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see .\n *\n */li.action.active[data-v-51d9ee64]{background-color:var(--color-background-hover);border-radius:6px;padding:0}.action--disabled[data-v-51d9ee64]{pointer-events:none;opacity:.5}.action--disabled[data-v-51d9ee64]:hover,.action--disabled[data-v-51d9ee64]:focus{cursor:default;opacity:.5}.action--disabled *[data-v-51d9ee64]{opacity:1!important}.action-button[data-v-51d9ee64]{display:flex;align-items:flex-start;width:100%;height:auto;margin:0;padding:0 14px 0 0;box-sizing:border-box;cursor:pointer;white-space:nowrap;color:var(--color-main-text);border:0;border-radius:0;background-color:transparent;box-shadow:none;font-weight:400;font-size:var(--default-font-size);line-height:44px}.action-button>span[data-v-51d9ee64]{cursor:pointer;white-space:nowrap}.action-button__icon[data-v-51d9ee64]{width:44px;height:44px;opacity:1;background-position:14px center;background-size:16px;background-repeat:no-repeat}.action-button[data-v-51d9ee64] .material-design-icon{width:44px;height:44px;opacity:1}.action-button[data-v-51d9ee64] .material-design-icon .material-design-icon__svg{vertical-align:middle}.action-button__longtext-wrapper[data-v-51d9ee64],.action-button__longtext[data-v-51d9ee64]{max-width:220px;line-height:1.6em;padding:10.8px 0;cursor:pointer;text-align:left;overflow:hidden;text-overflow:ellipsis}.action-button__longtext[data-v-51d9ee64]{cursor:pointer;white-space:pre-wrap!important}.action-button__name[data-v-51d9ee64]{font-weight:700;text-overflow:ellipsis;overflow:hidden;white-space:nowrap;max-width:100%;display:inline-block}.action-button__menu-icon[data-v-51d9ee64],.action-button__pressed-icon[data-v-51d9ee64]{margin-left:auto;margin-right:-14px}.material-design-icon[data-v-dcf0becf]{display:flex;align-self:center;justify-self:center;align-items:center;justify-content:center}.app-navigation-input-confirm[data-v-dcf0becf]{flex:1 0 100%;width:100%}.app-navigation-input-confirm form[data-v-dcf0becf]{display:flex}.app-navigation-input-confirm__input[data-v-dcf0becf]{height:34px;flex:1 1 100%;font-size:100%!important;margin:5px 5px 5px -8px!important;padding:7px!important}.app-navigation-input-confirm__input[data-v-dcf0becf]:active,.app-navigation-input-confirm__input[data-v-dcf0becf]:focus,.app-navigation-input-confirm__input[data-v-dcf0becf]:hover{outline:none;background-color:var(--color-main-background);color:var(--color-main-text);border-color:var(--color-primary-element)}/**\n * @copyright Copyright (c) 2019 John Molakvoæ \n *\n * @author John Molakvoæ \n *\n * @license GNU AGPL version 3 or any later version\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see .\n *\n */.material-design-icon[data-v-4bd59bb1]{display:flex;align-self:center;justify-self:center;align-items:center;justify-content:center}#app-settings[data-v-4bd59bb1]{margin-top:auto;padding:3px}#app-settings__header[data-v-4bd59bb1]{box-sizing:border-box;margin:0 3px 3px}#app-settings__header .settings-button[data-v-4bd59bb1]{display:flex;flex:1 1 0;height:44px;width:100%;padding:0 14px 0 0;margin:0;background-color:var(--color-main-background);box-shadow:none;border:0;border-radius:var(--border-radius-pill);text-align:left;font-weight:400;font-size:100%;color:var(--color-main-text);line-height:44px}#app-settings__header .settings-button[data-v-4bd59bb1]:hover,#app-settings__header .settings-button[data-v-4bd59bb1]:focus{background-color:var(--color-background-hover)}#app-settings__header .settings-button__icon[data-v-4bd59bb1]{width:44px;height:44px;min-width:44px}#app-settings__header .settings-button__label[data-v-4bd59bb1]{overflow:hidden;max-width:100%;white-space:nowrap;text-overflow:ellipsis}#app-settings__content[data-v-4bd59bb1]{display:block;padding:10px;margin-bottom:-3px;max-height:300px;overflow-y:auto;box-sizing:border-box}.slide-up-leave-active[data-v-4bd59bb1],.slide-up-enter-active[data-v-4bd59bb1]{transition-duration:var(--animation-slow);transition-property:max-height,padding;overflow-y:hidden!important}.slide-up-enter[data-v-4bd59bb1],.slide-up-leave-to[data-v-4bd59bb1]{max-height:0!important;padding:0 10px!important}.app-activity .settings-link{max-width:100%}.app-activity .app-navigation-entry.active .navigation-icon{filter:var(--primary-invert-if-dark)}.app-activity .app-navigation-entry:not(.active) .navigation-icon{filter:var(--background-invert-if-dark)}.app-activity .navigation-icon{height:16px;width:16px}')),document.head.appendChild(a)}}catch(t){console.error("vite-plugin-css-injected-by-js",t)}})(); /*! third party licenses: js/vendor.LICENSE.txt */ -import{V as P,d as mt,c as Z,t as A,g as He,e as Ue,s as qe,r as V,o as Fe,w as Ze,a as Ke}from"./index-CmscAddx.mjs";import{e as O,l as St,s as We,u as Ge}from"./logger-CcLDq3iB.mjs";import{u as G,g as Xe,_ as ue,m as q,A as Ye,a as Qe,b as Je,c as tn,r as en,d as nn,v as an,e as rn}from"./Activity-DQDvjcjQ.mjs";import{d as T,D as on,v as S,x as U,g as pe,m as N,n as X,G as sn,u as ln,V as cn,l as kt,a as un,c as he,b as de,e as pn,f as hn,j as dn,h as fn,i as vn,_ as mn,k as gn,o as yn,O as Cn,p as bn,B as _n,q as xn,r as wn,Q as Sn,s as kn,t as fe}from"./NcCheckboxRadioSwitch-BOl1O2zi-BqKsNleQ.mjs";import{z as ve,B as zn}from"./NcNoteCard-B_Q1mnCM-CvHJMgRg.mjs";import"./_commonjsHelpers-BdswosdL.mjs";const st="activity";function z(t,e){for(var n in e)t[n]=e[n];return t}var Nn=/[!'()*]/g,En=function(t){return"%"+t.charCodeAt(0).toString(16)},An=/%2C/g,I=function(t){return encodeURIComponent(t).replace(Nn,En).replace(An,",")};function zt(t){try{return decodeURIComponent(t)}catch{}return t}function Pn(t,e,n){e===void 0&&(e={});var i=n||Mn,a;try{a=i(t||"")}catch{a={}}for(var r in e){var o=e[r];a[r]=Array.isArray(o)?o.map(It):It(o)}return a}var It=function(t){return t==null||typeof t=="object"?t:String(t)};function Mn(t){var e={};return t=t.trim().replace(/^(\?|#|&)/,""),t&&t.split("&").forEach(function(n){var i=n.replace(/\+/g," ").split("="),a=zt(i.shift()),r=i.length>0?zt(i.join("=")):null;e[a]===void 0?e[a]=r:Array.isArray(e[a])?e[a].push(r):e[a]=[e[a],r]}),e}function Ln(t){var e=t?Object.keys(t).map(function(n){var i=t[n];if(i===void 0)return"";if(i===null)return I(n);if(Array.isArray(i)){var a=[];return i.forEach(function(r){r!==void 0&&(r===null?a.push(I(n)):a.push(I(n)+"="+I(r)))}),a.join("&")}return I(n)+"="+I(i)}).filter(function(n){return n.length>0}).join("&"):null;return e?"?"+e:""}var lt=/\/?$/;function ct(t,e,n,i){var a=i&&i.options.stringifyQuery,r=e.query||{};try{r=Nt(r)}catch{}var o={name:e.name||t&&t.name,meta:t&&t.meta||{},path:e.path||"/",hash:e.hash||"",query:r,params:e.params||{},fullPath:Vt(e,a),matched:t?Dn(t):[]};return n&&(o.redirectedFrom=Vt(n,a)),Object.freeze(o)}function Nt(t){if(Array.isArray(t))return t.map(Nt);if(t&&typeof t=="object"){var e={};for(var n in t)e[n]=Nt(t[n]);return e}else return t}var R=ct(null,{path:"/"});function Dn(t){for(var e=[];t;)e.unshift(t),t=t.parent;return e}function Vt(t,e){var n=t.path,i=t.query;i===void 0&&(i={});var a=t.hash;a===void 0&&(a="");var r=e||Ln;return(n||"/")+r(i)+a}function me(t,e,n){return e===R?t===e:e?t.path&&e.path?t.path.replace(lt,"")===e.path.replace(lt,"")&&(n||t.hash===e.hash&&tt(t.query,e.query)):t.name&&e.name?t.name===e.name&&(n||t.hash===e.hash&&tt(t.query,e.query)&&tt(t.params,e.params)):!1:!1}function tt(t,e){if(t===void 0&&(t={}),e===void 0&&(e={}),!t||!e)return t===e;var n=Object.keys(t).sort(),i=Object.keys(e).sort();return n.length!==i.length?!1:n.every(function(a,r){var o=t[a],s=i[r];if(s!==a)return!1;var l=e[a];return o==null||l==null?o===l:typeof o=="object"&&typeof l=="object"?tt(o,l):String(o)===String(l)})}function $n(t,e){return t.path.replace(lt,"/").indexOf(e.path.replace(lt,"/"))===0&&(!e.hash||t.hash===e.hash)&&Rn(t.query,e.query)}function Rn(t,e){for(var n in e)if(!(n in t))return!1;return!0}function ge(t){for(var e=0;e=0&&(e=t.slice(i),t=t.slice(0,i));var a=t.indexOf("?");return a>=0&&(n=t.slice(a+1),t=t.slice(0,a)),{path:t,query:n,hash:e}}function L(t){return t.replace(/\/(?:\s*\/)+/g,"/")}var ut=Array.isArray||function(t){return Object.prototype.toString.call(t)=="[object Array]"},j=_e,In=Lt,Vn=qn,jn=Ce,Hn=be,Un=new RegExp(["(\\\\.)","([\\/.])?(?:(?:\\:(\\w+)(?:\\(((?:\\\\.|[^\\\\()])+)\\))?|\\(((?:\\\\.|[^\\\\()])+)\\))([+*?])?|(\\*))"].join("|"),"g");function Lt(t,e){for(var n=[],i=0,a=0,r="",o=e&&e.delimiter||"/",s;(s=Un.exec(t))!=null;){var l=s[0],u=s[1],m=s.index;if(r+=t.slice(a,m),a=m+l.length,u){r+=u[1];continue}var v=t[a],p=s[2],h=s[3],c=s[4],f=s[5],d=s[6],y=s[7];r&&(n.push(r),r="");var g=p!=null&&v!=null&&v!==p,_=d==="+"||d==="*",b=d==="?"||d==="*",x=s[2]||o,w=c||f;n.push({name:h||i++,prefix:p||"",delimiter:x,optional:b,repeat:_,partial:g,asterisk:!!y,pattern:w?Kn(w):y?".*":"[^"+et(x)+"]+?"})}return a1||!b.length)return b.length===0?t():t("span",{},b)}if(this.tag==="a")_.on=g,_.attrs={href:s,"aria-current":d};else{var x=xe(this.$slots.default);if(x){x.isStatic=!1;var w=x.data=z({},x.data);w.on=w.on||{};for(var M in w.on){var E=w.on[M];M in g&&(w.on[M]=Array.isArray(E)?E:[E])}for(var Q in g)Q in w.on?w.on[Q].push(g[Q]):w.on[Q]=y;var Bt=x.data.attrs=z({},x.data.attrs);Bt.href=s,Bt["aria-current"]=d}else _.on=g}return t(this.tag,_,this.$slots.default)}};function qt(t){if(!(t.metaKey||t.altKey||t.ctrlKey||t.shiftKey)&&!t.defaultPrevented&&!(t.button!==void 0&&t.button!==0)){if(t.currentTarget&&t.currentTarget.getAttribute){var e=t.currentTarget.getAttribute("target");if(/\b_blank\b/i.test(e))return}return t.preventDefault&&t.preventDefault(),!0}}function xe(t){if(t){for(var e,n=0;n-1&&(d.params[b]=c.params[b]);return d.path=nt(g.path,d.params),p(g,d,f)}else if(d.path){d.params={};for(var x=0;x-1}function ft(t,e){return dt(t)&&t._isRouter&&(e==null||t.type===e)}function Xt(t,e,n){var i=function(a){a>=t.length?n():t[a]?e(t[a],function(){i(a+1)}):i(a+1)};i(0)}function vi(t){return function(e,n,i){var a=!1,r=0,o=null;Ae(t,function(s,l,u,m){if(typeof s=="function"&&s.cid===void 0){a=!0,r++;var v=Yt(function(f){gi(f)&&(f=f.default),s.resolved=typeof f=="function"?f:pt.extend(f),u.components[m]=f,r--,r<=0&&i()}),p=Yt(function(f){var d="Failed to resolve async component "+m+": "+f;o||(o=dt(f)?f:new Error(d),i(o))}),h;try{h=s(v,p)}catch(f){p(f)}if(h)if(typeof h.then=="function")h.then(v,p);else{var c=h.component;c&&typeof c.then=="function"&&c.then(v,p)}}}),a||i()}}function Ae(t,e){return Pe(t.map(function(n){return Object.keys(n.components).map(function(i){return e(n.components[i],n.instances[i],n,i)})}))}function Pe(t){return Array.prototype.concat.apply([],t)}var mi=typeof Symbol=="function"&&typeof Symbol.toStringTag=="symbol";function gi(t){return t.__esModule||mi&&t[Symbol.toStringTag]==="Module"}function Yt(t){var e=!1;return function(){for(var n=[],i=arguments.length;i--;)n[i]=arguments[i];if(!e)return e=!0,t.apply(this,n)}}var k=function(t,e){this.router=t,this.base=yi(e),this.current=R,this.pending=null,this.ready=!1,this.readyCbs=[],this.readyErrorCbs=[],this.errorCbs=[],this.listeners=[]};k.prototype.listen=function(t){this.cb=t},k.prototype.onReady=function(t,e){this.ready?t():(this.readyCbs.push(t),e&&this.readyErrorCbs.push(e))},k.prototype.onError=function(t){this.errorCbs.push(t)},k.prototype.transitionTo=function(t,e,n){var i=this,a;try{a=this.router.match(t,this.current)}catch(o){throw this.errorCbs.forEach(function(s){s(o)}),o}var r=this.current;this.confirmTransition(a,function(){i.updateRoute(a),e&&e(a),i.ensureURL(),i.router.afterHooks.forEach(function(o){o&&o(a,r)}),i.ready||(i.ready=!0,i.readyCbs.forEach(function(o){o(a)}))},function(o){n&&n(o),o&&!i.ready&&(!ft(o,B.redirected)||r!==R)&&(i.ready=!0,i.readyErrorCbs.forEach(function(s){s(o)}))})},k.prototype.confirmTransition=function(t,e,n){var i=this,a=this.current;this.pending=t;var r=function(c){!ft(c)&&dt(c)&&(i.errorCbs.length?i.errorCbs.forEach(function(f){f(c)}):console.error(c)),n&&n(c)},o=t.matched.length-1,s=a.matched.length-1;if(me(t,a)&&o===s&&t.matched[o]===a.matched[s])return this.ensureURL(),t.hash&&D(this.router,a,t,!1),r(pi(a,t));var l=Ci(this.current.matched,t.matched),u=l.updated,m=l.deactivated,v=l.activated,p=[].concat(_i(m),this.router.beforeHooks,xi(u),v.map(function(c){return c.beforeEnter}),vi(v)),h=function(c,f){if(i.pending!==t)return r(Gt(a,t));try{c(t,a,function(d){d===!1?(i.ensureURL(!0),r(hi(a,t))):dt(d)?(i.ensureURL(!0),r(d)):typeof d=="string"||typeof d=="object"&&(typeof d.path=="string"||typeof d.name=="string")?(r(ui(a,t)),typeof d=="object"&&d.replace?i.replace(d):i.push(d)):f(d)})}catch(d){r(d)}};Xt(p,h,function(){var c=wi(v),f=c.concat(i.router.resolveHooks);Xt(f,h,function(){if(i.pending!==t)return r(Gt(a,t));i.pending=null,e(t),i.router.app&&i.router.app.$nextTick(function(){ge(t)})})})},k.prototype.updateRoute=function(t){this.current=t,this.cb&&this.cb(t)},k.prototype.setupListeners=function(){},k.prototype.teardown=function(){this.listeners.forEach(function(t){t()}),this.listeners=[],this.current=R,this.pending=null};function yi(t){if(!t)if(Y){var e=document.querySelector("base");t=e&&e.getAttribute("href")||"/",t=t.replace(/^https?:\/\/[^\/]+/,"")}else t="/";return t.charAt(0)!=="/"&&(t="/"+t),t.replace(/\/$/,"")}function Ci(t,e){var n,i=Math.max(t.length,e.length);for(n=0;n0)){var i=this.router,a=i.options.scrollBehavior,r=$&&a;r&&this.listeners.push(Ne());var o=function(){var s=n.current,l=F(n.base);n.current===R&&l===n._startLocation||n.transitionTo(l,function(u){r&&D(i,u,s,!0)})};window.addEventListener("popstate",o),this.listeners.push(function(){window.removeEventListener("popstate",o)})}},e.prototype.go=function(n){window.history.go(n)},e.prototype.push=function(n,i,a){var r=this,o=this,s=o.current;this.transitionTo(n,function(l){ht(L(r.base+l.fullPath)),D(r.router,l,s,!1),i&&i(l)},a)},e.prototype.replace=function(n,i,a){var r=this,o=this,s=o.current;this.transitionTo(n,function(l){Pt(L(r.base+l.fullPath)),D(r.router,l,s,!1),i&&i(l)},a)},e.prototype.ensureURL=function(n){if(F(this.base)!==this.current.fullPath){var i=L(this.base+this.current.fullPath);n?ht(i):Pt(i)}},e.prototype.getCurrentLocation=function(){return F(this.base)},e}(k);function F(t){var e=window.location.pathname,n=e.toLowerCase(),i=t.toLowerCase();return t&&(n===i||n.indexOf(L(i+"/"))===0)&&(e=e.slice(t.length)),(e||"/")+window.location.search+window.location.hash}var De=function(t){function e(n,i,a){t.call(this,n,i),!(a&&ki(this.base))&&Qt()}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype.setupListeners=function(){var n=this;if(!(this.listeners.length>0)){var i=this.router,a=i.options.scrollBehavior,r=$&&a;r&&this.listeners.push(Ne());var o=function(){var l=n.current;Qt()&&n.transitionTo(it(),function(u){r&&D(n.router,u,l,!0),$||at(u.fullPath)})},s=$?"popstate":"hashchange";window.addEventListener(s,o),this.listeners.push(function(){window.removeEventListener(s,o)})}},e.prototype.push=function(n,i,a){var r=this,o=this,s=o.current;this.transitionTo(n,function(l){Jt(l.fullPath),D(r.router,l,s,!1),i&&i(l)},a)},e.prototype.replace=function(n,i,a){var r=this,o=this,s=o.current;this.transitionTo(n,function(l){at(l.fullPath),D(r.router,l,s,!1),i&&i(l)},a)},e.prototype.go=function(n){window.history.go(n)},e.prototype.ensureURL=function(n){var i=this.current.fullPath;it()!==i&&(n?Jt(i):at(i))},e.prototype.getCurrentLocation=function(){return it()},e}(k);function ki(t){var e=F(t);if(!/^\/#/.test(e))return window.location.replace(L(t+"/#"+e)),!0}function Qt(){var t=it();return t.charAt(0)==="/"?!0:(at("/"+t),!1)}function it(){var t=window.location.href,e=t.indexOf("#");return e<0?"":(t=t.slice(e+1),t)}function Mt(t){var e=window.location.href,n=e.indexOf("#"),i=n>=0?e.slice(0,n):e;return i+"#"+t}function Jt(t){$?ht(Mt(t)):window.location.hash=t}function at(t){$?Pt(Mt(t)):window.location.replace(Mt(t))}var zi=function(t){function e(n,i){t.call(this,n,i),this.stack=[],this.index=-1}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype.push=function(n,i,a){var r=this;this.transitionTo(n,function(o){r.stack=r.stack.slice(0,r.index+1).concat(o),r.index++,i&&i(o)},a)},e.prototype.replace=function(n,i,a){var r=this;this.transitionTo(n,function(o){r.stack=r.stack.slice(0,r.index).concat(o),i&&i(o)},a)},e.prototype.go=function(n){var i=this,a=this.index+n;if(!(a<0||a>=this.stack.length)){var r=this.stack[a];this.confirmTransition(r,function(){var o=i.current;i.index=a,i.updateRoute(r),i.router.afterHooks.forEach(function(s){s&&s(r,o)})},function(o){ft(o,B.duplicated)&&(i.index=a)})}},e.prototype.getCurrentLocation=function(){var n=this.stack[this.stack.length-1];return n?n.fullPath:"/"},e.prototype.ensureURL=function(){},e}(k),C=function(t){t===void 0&&(t={}),this.app=null,this.apps=[],this.options=t,this.beforeHooks=[],this.resolveHooks=[],this.afterHooks=[],this.matcher=ni(t.routes||[],this);var e=t.mode||"hash";switch(this.fallback=e==="history"&&!$&&t.fallback!==!1,this.fallback&&(e="hash"),Y||(e="abstract"),this.mode=e,e){case"history":this.history=new Le(this,t.base);break;case"hash":this.history=new De(this,t.base,this.fallback);break;case"abstract":this.history=new zi(this,t.base);break}},te={currentRoute:{configurable:!0}};C.prototype.match=function(t,e,n){return this.matcher.match(t,e,n)},te.currentRoute.get=function(){return this.history&&this.history.current},C.prototype.init=function(t){var e=this;if(this.apps.push(t),t.$once("hook:destroyed",function(){var r=e.apps.indexOf(t);r>-1&&e.apps.splice(r,1),e.app===t&&(e.app=e.apps[0]||null),e.app||e.history.teardown()}),!this.app){this.app=t;var n=this.history;if(n instanceof Le||n instanceof De){var i=function(r){var o=n.current,s=e.options.scrollBehavior,l=$&&s;l&&"fullPath"in r&&D(e,r,o,!1)},a=function(r){n.setupListeners(),i(r)};n.transitionTo(n.getCurrentLocation(),a,a)}n.listen(function(r){e.apps.forEach(function(o){o._route=r})})}},C.prototype.beforeEach=function(t){return _t(this.beforeHooks,t)},C.prototype.beforeResolve=function(t){return _t(this.resolveHooks,t)},C.prototype.afterEach=function(t){return _t(this.afterHooks,t)},C.prototype.onReady=function(t,e){this.history.onReady(t,e)},C.prototype.onError=function(t){this.history.onError(t)},C.prototype.push=function(t,e,n){var i=this;if(!e&&!n&&typeof Promise<"u")return new Promise(function(a,r){i.history.push(t,a,r)});this.history.push(t,e,n)},C.prototype.replace=function(t,e,n){var i=this;if(!e&&!n&&typeof Promise<"u")return new Promise(function(a,r){i.history.replace(t,a,r)});this.history.replace(t,e,n)},C.prototype.go=function(t){this.history.go(t)},C.prototype.back=function(){this.go(-1)},C.prototype.forward=function(){this.go(1)},C.prototype.getMatchedComponents=function(t){var e=t?t.matched?t:this.resolve(t).route:this.currentRoute;return e?[].concat.apply([],e.matched.map(function(n){return Object.keys(n.components).map(function(i){return n.components[i]})})):[]},C.prototype.resolve=function(t,e,n){e=e||this.history.current;var i=Rt(t,e,n,this),a=this.match(i,e),r=a.redirectedFrom||a.fullPath,o=this.history.base,s=Ni(o,r,this.mode);return{location:i,route:a,href:s,normalizedTo:i,resolved:a}},C.prototype.getRoutes=function(){return this.matcher.getRoutes()},C.prototype.addRoute=function(t,e){this.matcher.addRoute(t,e),this.history.current!==R&&this.history.transitionTo(this.history.getCurrentLocation())},C.prototype.addRoutes=function(t){this.matcher.addRoutes(t),this.history.current!==R&&this.history.transitionTo(this.history.getCurrentLocation())},Object.defineProperties(C.prototype,te);var $e=C;function _t(t,e){return t.push(e),function(){var n=t.indexOf(e);n>-1&&t.splice(n,1)}}function Ni(t,e,n){var i=n==="hash"?"#"+e:e;return t?L(t+"/"+i):i}C.install=Et,C.version="3.6.5",C.isNavigationFailure=ft,C.NavigationFailureType=B,C.START_LOCATION=R,Y&&window.Vue&&window.Vue.use(C);let Ei="useandom-26T198340PX75pxJACKVERYMINDBUSHWOLF_GQZbfghjklqvwyzrict",Ai=(t=21)=>{let e="",n=t;for(;n--;)e+=Ei[Math.random()*64|0];return e};function rt(t){"@babel/helpers - typeof";return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?rt=function(e){return typeof e}:rt=function(e){return e&&typeof Symbol=="function"&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},rt(t)}var Re={selector:"vue-portal-target-".concat(Ai())},Pi=function(t){return Re.selector=t},xt=typeof window<"u"&&(typeof document>"u"?"undefined":rt(document))!==void 0,Mi=P.extend({abstract:!0,name:"PortalOutlet",props:["nodes","tag"],data:function(t){return{updatedNodes:t.nodes}},render:function(t){var e=this.updatedNodes&&this.updatedNodes();return e?e.length===1&&!e[0].text?e:t(this.tag||"DIV",e):t()},destroyed:function(){var t=this.$el;t&&t.parentNode.removeChild(t)}}),Oe=P.extend({name:"VueSimplePortal",props:{disabled:{type:Boolean},prepend:{type:Boolean},selector:{type:String,default:function(){return"#".concat(Re.selector)}},tag:{type:String,default:"DIV"}},render:function(t){if(this.disabled){var e=this.$scopedSlots&&this.$scopedSlots.default();return e?e.length<2&&!e[0].text?e:t(this.tag,e):t()}return t()},created:function(){this.getTargetEl()||this.insertTargetEl()},updated:function(){var t=this;this.$nextTick(function(){!t.disabled&&t.slotFn!==t.$scopedSlots.default&&(t.container.updatedNodes=t.$scopedSlots.default),t.slotFn=t.$scopedSlots.default})},beforeDestroy:function(){this.unmount()},watch:{disabled:{immediate:!0,handler:function(t){t?this.unmount():this.$nextTick(this.mount)}}},methods:{getTargetEl:function(){if(xt)return document.querySelector(this.selector)},insertTargetEl:function(){if(xt){var t=document.querySelector("body"),e=document.createElement(this.tag);e.id=this.selector.substring(1),t.appendChild(e)}},mount:function(){if(xt){var t=this.getTargetEl(),e=document.createElement("DIV");this.prepend&&t.firstChild?t.insertBefore(e,t.firstChild):t.appendChild(e),this.container=new Mi({el:e,parent:this,propsData:{tag:this.tag,nodes:this.$scopedSlots.default}})}},unmount:function(){this.container&&(this.container.$destroy(),delete this.container)}}});function Li(t){var e=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{};t.component(e.name||"portal",Oe),e.defaultSelector&&Pi(e.defaultSelector)}typeof window<"u"&&window.Vue&&window.Vue===P&&P.use(Li),T(on);const Di='\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n',$i='\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n',Ri={name:"NcContent",components:{NcButton:U,NcIconSvgWrapper:pe,Teleport:Oe},provide(){return{"NcContent:setHasAppNavigation":this.setAppNavigation}},props:{appName:{type:String,required:!0}},setup(){return{isMobile:G()}},data(){return{hasAppNavigation:!1,currentFocus:""}},computed:{currentImage(){return this.currentFocus==="navigation"?$i:Di}},beforeMount(){const t=document.getElementById("skip-actions");t&&(t.innerHTML="",t.classList.add("vue-skip-actions"))},methods:{t:N,openAppNavigation(){O("toggle-navigation",{open:!0}),this.$nextTick(()=>{window.location.hash="app-navigation-vue",document.getElementById("app-navigation-vue").focus()})},setAppNavigation(t){this.hasAppNavigation=t,this.currentFocus===""&&(this.currentFocus="navigation")}}};var Oi=function(){var t=this,e=t._self._c;return e("div",{class:["content","app-".concat(t.appName.toLowerCase())],attrs:{id:"content-vue"}},[e("Teleport",{attrs:{selector:"#skip-actions"}},[e("div",{staticClass:"vue-skip-actions__container"},[e("div",{staticClass:"vue-skip-actions__headline"},[t._v(" "+t._s(t.t("Keyboard navigation help"))+" ")]),e("div",{staticClass:"vue-skip-actions__buttons"},[e("NcButton",{directives:[{name:"show",rawName:"v-show",value:t.hasAppNavigation,expression:"hasAppNavigation"}],attrs:{type:"tertiary",href:"#app-navigation-vue"},on:{click:function(n){return n.preventDefault(),t.openAppNavigation.apply(null,arguments)},focusin:function(n){t.currentFocus="navigation"},mouseover:function(n){t.currentFocus="navigation"}}},[t._v(" "+t._s(t.t("Skip to app navigation"))+" ")]),e("NcButton",{attrs:{type:"tertiary",href:"#app-content-vue"},on:{focusin:function(n){t.currentFocus="content"},mouseover:function(n){t.currentFocus="content"}}},[t._v(" "+t._s(t.t("Skip to main content"))+" ")])],1),e("NcIconSvgWrapper",{directives:[{name:"show",rawName:"v-show",value:!t.isMobile,expression:"!isMobile"}],staticClass:"vue-skip-actions__image",attrs:{svg:t.currentImage,size:"auto"}})],1),t._v("  ")]),t._t("default")],2)},Ti=[],Bi=S(Ri,Oi,Ti,!1,null,"cfc84a6c",null,null);const Ii=Bi.exports,Vi=mt({__name:"ActivityApp",setup(t){return{__sfc:!0,NcContent:Ii}}});var ji=function(){var t=this,e=t._self._c,n=t._self._setupProxy;return e(n.NcContent,{attrs:{"app-name":"activity"}},[e("router-view",{attrs:{name:"navigation"}}),e("router-view")],1)},Hi=[],Ui=X(Vi,ji,Hi,!1,null,null,null,null);const qi=Ui.exports;var Fi=Object.defineProperty,Zi=Object.defineProperties,Ki=Object.getOwnPropertyDescriptors,vt=Object.getOwnPropertySymbols,Te=Object.prototype.hasOwnProperty,Be=Object.prototype.propertyIsEnumerable,ee=(t,e,n)=>e in t?Fi(t,e,{enumerable:!0,configurable:!0,writable:!0,value:n}):t[e]=n,Wi=(t,e)=>{for(var n in e||(e={}))Te.call(e,n)&&ee(t,n,e[n]);if(vt)for(var n of vt(e))Be.call(e,n)&&ee(t,n,e[n]);return t},Gi=(t,e)=>Zi(t,Ki(e)),Xi=(t,e)=>{var n={};for(var i in t)Te.call(t,i)&&e.indexOf(i)<0&&(n[i]=t[i]);if(t!=null&&vt)for(var i of vt(t))e.indexOf(i)<0&&Be.call(t,i)&&(n[i]=t[i]);return n};function Ie(t,e,n,i,a,r,o,s){var l=typeof t=="function"?t.options:t;e&&(l.render=e,l.staticRenderFns=n,l._compiled=!0),i&&(l.functional=!0),r&&(l._scopeId="data-v-"+r);var u;if(o?(u=function(p){p=p||this.$vnode&&this.$vnode.ssrContext||this.parent&&this.parent.$vnode&&this.parent.$vnode.ssrContext,!p&&typeof __VUE_SSR_CONTEXT__<"u"&&(p=__VUE_SSR_CONTEXT__),a&&a.call(this,p),p&&p._registeredComponents&&p._registeredComponents.add(o)},l._ssrRegister=u):a&&(u=s?function(){a.call(this,(l.functional?this.parent:this).$root.$options.shadowRoot)}:a),u)if(l.functional){l._injectStyles=u;var m=l.render;l.render=function(p,h){return u.call(h),m(p,h)}}else{var v=l.beforeCreate;l.beforeCreate=v?[].concat(v,u):[u]}return{exports:t,options:l}}const Yi={name:"splitpanes",props:{horizontal:{type:Boolean},pushOtherPanes:{type:Boolean,default:!0},dblClickSplitter:{type:Boolean,default:!0},rtl:{type:Boolean,default:!1},firstSplitter:{type:Boolean}},provide(){return{requestUpdate:this.requestUpdate,onPaneAdd:this.onPaneAdd,onPaneRemove:this.onPaneRemove,onPaneClick:this.onPaneClick}},data:()=>({container:null,ready:!1,panes:[],touch:{mouseDown:!1,dragging:!1,activeSplitter:null},splitterTaps:{splitter:null,timeoutId:null}}),computed:{panesCount(){return this.panes.length},indexedPanes(){return this.panes.reduce((t,e)=>(t[e.id]=e)&&t,{})}},methods:{updatePaneComponents(){this.panes.forEach(t=>{t.update&&t.update({[this.horizontal?"height":"width"]:"".concat(this.indexedPanes[t.id].size,"%")})})},bindEvents(){document.addEventListener("mousemove",this.onMouseMove,{passive:!1}),document.addEventListener("mouseup",this.onMouseUp),"ontouchstart"in window&&(document.addEventListener("touchmove",this.onMouseMove,{passive:!1}),document.addEventListener("touchend",this.onMouseUp))},unbindEvents(){document.removeEventListener("mousemove",this.onMouseMove,{passive:!1}),document.removeEventListener("mouseup",this.onMouseUp),"ontouchstart"in window&&(document.removeEventListener("touchmove",this.onMouseMove,{passive:!1}),document.removeEventListener("touchend",this.onMouseUp))},onMouseDown(t,e){this.bindEvents(),this.touch.mouseDown=!0,this.touch.activeSplitter=e},onMouseMove(t){this.touch.mouseDown&&(t.preventDefault(),this.touch.dragging=!0,this.calculatePanesSize(this.getCurrentMouseDrag(t)),this.$emit("resize",this.panes.map(e=>({min:e.min,max:e.max,size:e.size}))))},onMouseUp(){this.touch.dragging&&this.$emit("resized",this.panes.map(t=>({min:t.min,max:t.max,size:t.size}))),this.touch.mouseDown=!1,setTimeout(()=>{this.touch.dragging=!1,this.unbindEvents()},100)},onSplitterClick(t,e){"ontouchstart"in window&&(t.preventDefault(),this.dblClickSplitter&&(this.splitterTaps.splitter===e?(clearTimeout(this.splitterTaps.timeoutId),this.splitterTaps.timeoutId=null,this.onSplitterDblClick(t,e),this.splitterTaps.splitter=null):(this.splitterTaps.splitter=e,this.splitterTaps.timeoutId=setTimeout(()=>{this.splitterTaps.splitter=null},500)))),this.touch.dragging||this.$emit("splitter-click",this.panes[e])},onSplitterDblClick(t,e){let n=0;this.panes=this.panes.map((i,a)=>(i.size=a===e?i.max:i.min,a!==e&&(n+=i.min),i)),this.panes[e].size-=n,this.$emit("pane-maximize",this.panes[e])},onPaneClick(t,e){this.$emit("pane-click",this.indexedPanes[e])},getCurrentMouseDrag(t){const e=this.container.getBoundingClientRect(),{clientX:n,clientY:i}="ontouchstart"in window&&t.touches?t.touches[0]:t;return{x:n-e.left,y:i-e.top}},getCurrentDragPercentage(t){t=t[this.horizontal?"y":"x"];const e=this.container[this.horizontal?"clientHeight":"clientWidth"];return this.rtl&&!this.horizontal&&(t=e-t),t*100/e},calculatePanesSize(t){const e=this.touch.activeSplitter;let n={prevPanesSize:this.sumPrevPanesSize(e),nextPanesSize:this.sumNextPanesSize(e),prevReachedMinPanes:0,nextReachedMinPanes:0};const i=0+(this.pushOtherPanes?0:n.prevPanesSize),a=100-(this.pushOtherPanes?0:n.nextPanesSize),r=Math.max(Math.min(this.getCurrentDragPercentage(t),a),i);let o=[e,e+1],s=this.panes[o[0]]||null,l=this.panes[o[1]]||null;const u=s.max<100&&r>=s.max+n.prevPanesSize,m=l.max<100&&r<=100-(l.max+this.sumNextPanesSize(e+1));if(u||m){u?(s.size=s.max,l.size=Math.max(100-s.max-n.prevPanesSize-n.nextPanesSize,0)):(s.size=Math.max(100-l.max-n.prevPanesSize-this.sumNextPanesSize(e+1),0),l.size=l.max);return}if(this.pushOtherPanes){const v=this.doPushOtherPanes(n,r);if(!v)return;({sums:n,panesToResize:o}=v),s=this.panes[o[0]]||null,l=this.panes[o[1]]||null}s!==null&&(s.size=Math.min(Math.max(r-n.prevPanesSize-n.prevReachedMinPanes,s.min),s.max)),l!==null&&(l.size=Math.min(Math.max(100-r-n.nextPanesSize-n.nextReachedMinPanes,l.min),l.max))},doPushOtherPanes(t,e){const n=this.touch.activeSplitter,i=[n,n+1];return e{r>i[0]&&r<=n&&(a.size=a.min,t.prevReachedMinPanes+=a.min)}),t.prevPanesSize=this.sumPrevPanesSize(i[0]),i[0]===void 0)?(t.prevReachedMinPanes=0,this.panes[0].size=this.panes[0].min,this.panes.forEach((a,r)=>{r>0&&r<=n&&(a.size=a.min,t.prevReachedMinPanes+=a.min)}),this.panes[i[1]].size=100-t.prevReachedMinPanes-this.panes[0].min-t.prevPanesSize-t.nextPanesSize,null):e>100-t.nextPanesSize-this.panes[i[1]].min&&(i[1]=this.findNextExpandedPane(n).index,t.nextReachedMinPanes=0,i[1]>n+1&&this.panes.forEach((a,r)=>{r>n&&r{r=n+1&&(a.size=a.min,t.nextReachedMinPanes+=a.min)}),this.panes[i[0]].size=100-t.prevPanesSize-t.nextReachedMinPanes-this.panes[this.panesCount-1].min-t.nextPanesSize,null):{sums:t,panesToResize:i}},sumPrevPanesSize(t){return this.panes.reduce((e,n,i)=>e+(ie+(i>t+1?n.size:0),0)},findPrevExpandedPane(t){return[...this.panes].reverse().find(e=>e.indexe.min)||{}},findNextExpandedPane(t){return this.panes.find(e=>e.index>t+1&&e.size>e.min)||{}},checkSplitpanesNodes(){Array.from(this.container.children).forEach(t=>{const e=t.classList.contains("splitpanes__pane"),n=t.classList.contains("splitpanes__splitter");if(!e&&!n){t.parentNode.removeChild(t),console.warn("Splitpanes: Only elements are allowed at the root of . One of your DOM nodes was removed.");return}})},addSplitter(t,e,n=!1){const i=t-1,a=document.createElement("div");a.classList.add("splitpanes__splitter"),n||(a.onmousedown=r=>this.onMouseDown(r,i),typeof window<"u"&&"ontouchstart"in window&&(a.ontouchstart=r=>this.onMouseDown(r,i)),a.onclick=r=>this.onSplitterClick(r,i+1)),this.dblClickSplitter&&(a.ondblclick=r=>this.onSplitterDblClick(r,i+1)),e.parentNode.insertBefore(a,e)},removeSplitter(t){t.onmousedown=void 0,t.onclick=void 0,t.ondblclick=void 0,t.parentNode.removeChild(t)},redoSplitters(){const t=Array.from(this.container.children);t.forEach(n=>{n.className.includes("splitpanes__splitter")&&this.removeSplitter(n)});let e=0;t.forEach(n=>{n.className.includes("splitpanes__pane")&&(!e&&this.firstSplitter?this.addSplitter(e,n,!0):e&&this.addSplitter(e,n),e++)})},requestUpdate(t){var e=t,{target:n}=e,i=Xi(e,["target"]);const a=this.indexedPanes[n._uid];Object.entries(i).forEach(([r,o])=>a[r]=o)},onPaneAdd(t){let e=-1;Array.from(t.$el.parentNode.children).some(a=>(a.className.includes("splitpanes__pane")&&e++,a===t.$el));const n=parseFloat(t.minSize),i=parseFloat(t.maxSize);this.panes.splice(e,0,{id:t._uid,index:e,min:isNaN(n)?0:n,max:isNaN(i)?100:i,size:t.size===null?null:parseFloat(t.size),givenSize:t.size,update:t.update}),this.panes.forEach((a,r)=>a.index=r),this.ready&&this.$nextTick(()=>{this.redoSplitters(),this.resetPaneSizes({addedPane:this.panes[e]}),this.$emit("pane-add",{index:e,panes:this.panes.map(a=>({min:a.min,max:a.max,size:a.size}))})})},onPaneRemove(t){const e=this.panes.findIndex(i=>i.id===t._uid),n=this.panes.splice(e,1)[0];this.panes.forEach((i,a)=>i.index=a),this.$nextTick(()=>{this.redoSplitters(),this.resetPaneSizes({removedPane:Gi(Wi({},n),{index:e})}),this.$emit("pane-remove",{removed:n,panes:this.panes.map(i=>({min:i.min,max:i.max,size:i.size}))})})},resetPaneSizes(t={}){!t.addedPane&&!t.removedPane?this.initialPanesSizing():this.panes.some(e=>e.givenSize!==null||e.min||e.max<100)?this.equalizeAfterAddOrRemove(t):this.equalize(),this.ready&&this.$emit("resized",this.panes.map(e=>({min:e.min,max:e.max,size:e.size})))},equalize(){const t=100/this.panesCount;let e=0,n=[],i=[];this.panes.forEach(a=>{a.size=Math.max(Math.min(t,a.max),a.min),e-=a.size,a.size>=a.max&&n.push(a.id),a.size<=a.min&&i.push(a.id)}),e>.1&&this.readjustSizes(e,n,i)},initialPanesSizing(){100/this.panesCount;let t=100,e=[],n=[],i=0;this.panes.forEach(r=>{t-=r.size,r.size!==null&&i++,r.size>=r.max&&e.push(r.id),r.size<=r.min&&n.push(r.id)});let a=100;t>.1&&(this.panes.forEach(r=>{r.size===null&&(r.size=Math.max(Math.min(t/(this.panesCount-i),r.max),r.min)),a-=r.size}),a>.1&&this.readjustSizes(t,e,n))},equalizeAfterAddOrRemove({addedPane:t,removedPane:e}={}){let n=100/this.panesCount,i=0,a=[],r=[];t&&t.givenSize!==null&&(n=(100-t.givenSize)/(this.panesCount-1)),this.panes.forEach(o=>{i-=o.size,o.size>=o.max&&a.push(o.id),o.size<=o.min&&r.push(o.id)}),!(Math.abs(i)<.1)&&(this.panes.forEach(o=>{t&&t.givenSize!==null&&t.id===o.id||(o.size=Math.max(Math.min(n,o.max),o.min)),i-=o.size,o.size>=o.max&&a.push(o.id),o.size<=o.min&&r.push(o.id)}),i>.1&&this.readjustSizes(i,a,r))},readjustSizes(t,e,n){let i;t>0?i=t/(this.panesCount-e.length):i=t/(this.panesCount-n.length),this.panes.forEach((a,r)=>{if(t>0&&!e.includes(a.id)){const o=Math.max(Math.min(a.size+i,a.max),a.min),s=o-a.size;t-=s,a.size=o}else if(!n.includes(a.id)){const o=Math.max(Math.min(a.size+i,a.max),a.min),s=o-a.size;t-=s,a.size=o}a.update({[this.horizontal?"height":"width"]:"".concat(this.indexedPanes[a.id].size,"%")})}),Math.abs(t)>.1&&this.$nextTick(()=>{this.ready&&console.warn("Splitpanes: Could not resize panes correctly due to their constraints.")})}},watch:{panes:{deep:!0,immediate:!1,handler(){this.updatePaneComponents()}},horizontal(){this.updatePaneComponents()},firstSplitter(){this.redoSplitters()},dblClickSplitter(t){[...this.container.querySelectorAll(".splitpanes__splitter")].forEach((e,n)=>{e.ondblclick=t?i=>this.onSplitterDblClick(i,n):void 0})}},beforeDestroy(){this.ready=!1},mounted(){this.container=this.$refs.container,this.checkSplitpanesNodes(),this.redoSplitters(),this.resetPaneSizes(),this.$emit("ready"),this.ready=!0},render(t){return t("div",{ref:"container",class:["splitpanes","splitpanes--".concat(this.horizontal?"horizontal":"vertical"),{"splitpanes--dragging":this.touch.dragging}]},this.$slots.default)}};let Qi,Ji;const ne={};var ta=Ie(Yi,Qi,Ji,!1,ea,null,null,null);function ea(t){for(let e in ne)this[e]=ne[e]}var na=function(){return ta.exports}(),ia=function(){var t=this,e=t.$createElement,n=t._self._c||e;return n("div",{staticClass:"splitpanes__pane",style:t.style,on:{click:function(i){return t.onPaneClick(i,t._uid)}}},[t._t("default")],2)},aa=[];const ra={name:"pane",inject:["requestUpdate","onPaneAdd","onPaneRemove","onPaneClick"],props:{size:{type:[Number,String],default:null},minSize:{type:[Number,String],default:0},maxSize:{type:[Number,String],default:100}},data:()=>({style:{}}),mounted(){this.onPaneAdd(this)},beforeDestroy(){this.onPaneRemove(this)},methods:{update(t){this.style=t}},computed:{sizeNumber(){return this.size||this.size===0?parseFloat(this.size):null},minSizeNumber(){return parseFloat(this.minSize)},maxSizeNumber(){return parseFloat(this.maxSize)}},watch:{sizeNumber(t){this.requestUpdate({target:this,size:t})},minSizeNumber(t){this.requestUpdate({target:this,min:t})},maxSizeNumber(t){this.requestUpdate({target:this,max:t})}}},ie={};var oa=Ie(ra,ia,aa,!1,sa,null,null,null);function sa(t){for(let e in ie)this[e]=ie[e]}var la=function(){return oa.exports}();T(sn);const ca={name:"NcAppDetailsToggle",directives:{tooltip:cn},components:{NcButton:U,ArrowRight:ue},setup(){return{isMobile:G()}},computed:{title(){return N("Go back to the list")}},watch:{isMobile:{immediate:!0,handler(){this.toggleAppNavigationButton(this.isMobile)}}},beforeDestroy(){this.isMobile&&this.toggleAppNavigationButton(!1)},methods:{toggleAppNavigationButton(t=!0){const e=document.querySelector(".app-navigation .app-navigation-toggle");e&&(e.style.display=t?"none":null,t===!0&&O("toggle-navigation",{open:!1}))}}};var ua=function(){var t=this,e=t._self._c;return e("NcButton",{directives:[{name:"tooltip",rawName:"v-tooltip",value:t.title,expression:"title"}],staticClass:"app-details-toggle",class:{"app-details-toggle--mobile":t.isMobile},attrs:{type:"tertiary","aria-label":t.title},scopedSlots:t._u([{key:"icon",fn:function(){return[e("ArrowRight",{attrs:{size:20}})]},proxy:!0}])})},pa=[],ha=S(ca,ua,pa,!1,null,"7e250fb8",null,null);const da=ha.exports,ae=Xe("nextcloud").persist().build(),fa={name:"NcAppContent",components:{NcAppDetailsToggle:da,Pane:la,Splitpanes:na},props:{allowSwipeNavigation:{type:Boolean,default:!0},listSize:{type:Number,default:20},listMinWidth:{type:Number,default:15},listMaxWidth:{type:Number,default:40},paneConfigKey:{type:String,default:""},showDetails:{type:Boolean,default:!0},pageHeading:{type:String,default:null},layout:{type:String,default:"vertical-split",validator(t){return["no-split","vertical-split","horizontal-split"].includes(t)}}},emits:["update:showDetails","resize:list"],setup(){return{isMobile:G()}},data(){return{contentHeight:0,hasList:!1,hasContent:!1,swiping:{},listPaneSize:this.restorePaneConfig()}},computed:{paneConfigID(){if(this.paneConfigKey!=="")return"pane-list-size-".concat(this.paneConfigKey);try{return"pane-list-size-".concat(st)}catch{return console.info("[INFO] AppContent:","falling back to global nextcloud pane config"),"pane-list-size-nextcloud"}},detailsPaneSize(){return this.listPaneSize?100-this.listPaneSize:this.paneDefaults.details.size},paneDefaults(){return{list:{size:this.listSize,min:this.listMinWidth,max:this.listMaxWidth},details:{size:100-this.listSize,min:100-this.listMaxWidth,max:100-this.listMinWidth}}}},updated(){this.checkSlots()},mounted(){this.allowSwipeNavigation&&(this.swiping=ln(this.$el,{onSwipeEnd:this.handleSwipe})),this.checkSlots(),this.restorePaneConfig()},methods:{handleSwipe(t,e){Math.abs(this.swiping.lengthX)>70&&(this.swiping.coordsStart.x<300/2&&e==="right"?O("toggle-navigation",{open:!0}):this.swiping.coordsStart.x<300*1.5&&e==="left"&&O("toggle-navigation",{open:!1}))},handlePaneResize(t){const e=parseInt(t[0].size,10);ae.setItem(this.paneConfigID,JSON.stringify(e)),this.listPaneSize=e,this.$emit("resize:list",{size:e}),console.debug("AppContent pane config",e)},checkSlots(){this.hasList=!!this.$scopedSlots.list,this.hasContent=!!this.$scopedSlots.default},restorePaneConfig(){const t=parseInt(ae.getItem(this.paneConfigID),10);if(!isNaN(t)&&t!==this.listPaneSize)return console.debug("AppContent pane config",t),this.listPaneSize=t,t},hideDetails(){this.$emit("update:showDetails",!1)}}};var va=function(){var t=this,e=t._self._c;return e("main",{staticClass:"app-content no-snapper",class:{"app-content--has-list":t.hasList},attrs:{id:"app-content-vue"}},[t.pageHeading?e("h1",{staticClass:"hidden-visually"},[t._v(" "+t._s(t.pageHeading)+" ")]):t._e(),t.hasList?[t.isMobile||t.layout==="no-split"?e("div",{staticClass:"app-content-wrapper app-content-wrapper--no-split",class:{"app-content-wrapper--show-details":t.showDetails,"app-content-wrapper--show-list":!t.showDetails,"app-content-wrapper--mobile":t.isMobile}},[t.showDetails?e("NcAppDetailsToggle",{nativeOn:{click:function(n){return n.stopPropagation(),n.preventDefault(),t.hideDetails.apply(null,arguments)}}}):t._e(),t.showDetails?t._t("default"):t._t("list")],2):t.layout==="vertical-split"||t.layout==="horizontal-split"?e("div",{staticClass:"app-content-wrapper"},[e("Splitpanes",{staticClass:"default-theme",class:{"splitpanes--horizontal":t.layout==="horizontal-split","splitpanes--vertical":t.layout==="vertical-split"},attrs:{horizontal:t.layout==="horizontal-split"},on:{resized:t.handlePaneResize}},[e("Pane",{staticClass:"splitpanes__pane-list",attrs:{size:t.listPaneSize||t.paneDefaults.list.size,"min-size":t.paneDefaults.list.min,"max-size":t.paneDefaults.list.max}},[t._t("list")],2),e("Pane",{staticClass:"splitpanes__pane-details",attrs:{size:t.detailsPaneSize,"min-size":t.paneDefaults.details.min,"max-size":t.paneDefaults.details.max}},[t._t("default")],2)],1)],1):t._e()]:t._e(),t.hasList?t._e():t._t("default")],2)},ma=[],ga=S(fa,va,ma,!1,null,"a284c47e",null,null);const ya=ga.exports;var Ct=Symbol(),K=Symbol(),re=Symbol(),oe=Symbol(),Tt=function(t){return"frag"in t},Ca={get:function(){return this[K]||this.parentElement},configurable:!0},W=function(t,e){K in t||(t[K]=e,Object.defineProperty(t,"parentNode",Ca))},ba={get:function(){var t=this.parentNode.childNodes,e=t.indexOf(this);return e>-1&&t[e+1]||null}},ot=function(t){re in t||(t[re]=!0,Object.defineProperty(t,"nextSibling",ba))},_a=function(t,e){for(;t.parentNode!==e;){var n=t,i=n.parentNode;i&&(t=i)}return t},wt,Ve=function(t){if(!wt){var e=Object.getOwnPropertyDescriptor(Node.prototype,"childNodes");wt=e.get}var n=wt.apply(t),i=Array.from(n).map(function(a){return _a(a,t)});return i.filter(function(a,r){return a!==i[r-1]})},xa={get:function(){return this.frag||Ve(this)}},wa={get:function(){return this.childNodes[0]||null}};function Sa(){return this.childNodes.length>0}var se=function(t){oe in t||(t[oe]=!0,Object.defineProperties(t,{childNodes:xa,firstChild:wa}),t.hasChildNodes=Sa)};function ka(){var t;(t=this.frag[0]).before.apply(t,arguments)}function za(){var t=this.frag,e=t.splice(0,t.length);e.forEach(function(n){n.remove()})}var Na=function t(e){var n;return(n=Array.prototype).concat.apply(n,e.map(function(i){return Tt(i)?t(i.frag):i}))},Ea=function(t,e){var n=t[Ct];e.before(n),W(n,t),t.frag.unshift(n)};function le(t){if(Tt(this)){var e=this.frag.indexOf(t);if(e>-1){var n=this.frag.splice(e,1),i=n[0];this.frag.length===0&&Ea(this,i),t.remove()}}else{var a=Ve(this),r=a.indexOf(t);r>-1&&t.remove()}return t}function ce(t,e){var n=this,i=t.frag||[t];if(Tt(this)){if(t[K]===this&&t.parentElement)return t;var a=this.frag;if(e){var r=a.indexOf(e);r>-1&&(a.splice.apply(a,[r,0].concat(i)),e.before.apply(e,i))}else{var o=a[a.length-1];a.push.apply(a,i),o.after.apply(o,i)}je(this)}else e?this.childNodes.includes(e)&&e.before.apply(e,i):this.append.apply(this,i);i.forEach(function(l){W(l,n)});var s=i[i.length-1];return ot(s),t}function Aa(t){if(t[K]===this&&t.parentElement)return t;var e=this.frag,n=e[e.length-1];return n.after(t),W(t,this),je(this),e.push(t),t}var je=function(t){var e=t[Ct];t.frag[0]===e&&(t.frag.shift(),e.remove())},Pa={set:function(t){var e=this;if(this.frag[0]!==this[Ct]&&this.frag.slice().forEach(function(i){return e.removeChild(i)}),t){var n=document.createElement("div");n.innerHTML=t,Array.from(n.childNodes).forEach(function(i){e.appendChild(i)})}},get:function(){return""}},Ma={inserted:function(t){var e=t.parentNode,n=t.nextSibling,i=t.previousSibling,a=Array.from(t.childNodes),r=document.createComment("");a.length===0&&a.push(r),t.frag=a,t[Ct]=r;var o=document.createDocumentFragment();o.append.apply(o,Na(a)),t.replaceWith(o),a.forEach(function(s){W(s,t),ot(s)}),se(t),Object.assign(t,{remove:za,appendChild:Aa,insertBefore:ce,removeChild:le,before:ka}),Object.defineProperty(t,"innerHTML",Pa),e&&(Object.assign(e,{removeChild:le,insertBefore:ce}),W(t,e),se(e)),n&&ot(t),i&&ot(i)},unbind:function(t){t.remove()}},La={name:"Fragment",directives:{frag:Ma},render:function(t){return t("div",{directives:[{name:"frag"}]},this.$slots.default)}};const Da=mt({__name:"ActivityGroup",props:{activities:null},setup(t){const e=t,n=Z(()=>{const a=q(),r=q().subtract(1,"day"),o=q(e.activities[0].datetime);return o.isSame(a,"day")?A("activity","Today"):o.isSame(r,"day")?A("activity","Yesterday"):o.format("LL")}),i=Z(()=>{const a=q(e.activities[0].datetime).format("LL");return a!==n.value?a:void 0});return{__sfc:!0,props:e,dateText:n,fullDate:i,Activity:Ye,Fragment:La}}});var $a=function(){var t=this,e=t._self._c,n=t._self._setupProxy;return e(n.Fragment,[e("h2",{staticClass:"activity-group__heading",attrs:{title:n.fullDate}},[t._v(" "+t._s(n.dateText)+" ")]),e("ul",t._l(t.activities,function(i){return e(n.Activity,{key:i.id,attrs:{activity:i,"show-previews":!0}})}),1)])},Ra=[],Oa=X(Da,$a,Ra,!1,null,"c16e5a63",null,null);const Ta=Oa.exports,Ba='\n\n \n\n';function Ia(){var t=He().proxy.$root;if(!t._$route){var e=Ue(!0).run(function(){return qe(Object.assign({},t.$router.currentRoute))});t._$route=e,t.$router.afterEach(function(n){Object.assign(e,n)})}return t._$route}const Va=mt({__name:"ActivityAppFeed",props:{filter:{default:"all"}},setup(t){const e=t,n=kt(st,"navigationList"),i=Ia(),a=V(!1),r=V(!0),o=V([]),s=V(),l=V();un(l,async()=>{r.value&&await v()},{distance:100});const u=Z(()=>{const p={};for(const h of o.value){const c=q(h.datetime).format("LL");p[c]===void 0?p[c]=[h]:p[c].push(h)}return p}),m=Z(()=>n.find(p=>p.id===i.params.filter).name);async function v(){var p,h;if(!a.value)try{const c=(p=s.value)!=null?p:"0";a.value=!0;const f=await de.get(pn("apps/activity/api/v2/activity/{filter}?format=json&previews=true&since={since}",{filter:e.filter,since:c}));o.value.push(...f.data.ocs.data.map(d=>new Je(d))),s.value=f.headers["x-activity-last-given"],r.value=!0}catch(c){if(hn.isAxiosError(c)&&((h=c.response)==null?void 0:h.status)===304){r.value=!1;return}St.error(c),ve(A("activity","Could not load activities"))}finally{a.value=!1}}return Fe(()=>{v()}),Ze(e,()=>{o.value=[],s.value=void 0,v()}),{__sfc:!0,navigationList:n,route:i,props:e,loading:a,hasMoreActivites:r,allActivities:o,lastActivityLoaded:s,container:l,groupedActivities:u,headingTitle:m,loadActivities:v,NcAppContent:ya,NcIconSvgWrapper:pe,NcEmptyContent:Qe,NcLoadingIcon:he,ActivityGroup:Ta,appIconSVG:Ba,t:A}}});var ja=function(){var t=this,e=t._self._c,n=t._self._setupProxy;return e(n.NcAppContent,{staticClass:"activity-app"},[e("h1",{staticClass:"activity-app__heading"},[t._v(" "+t._s(n.headingTitle)+" ")]),n.hasMoreActivites&&n.allActivities.length===0?e(n.NcEmptyContent,{staticClass:"activity-app__empty-content",attrs:{name:n.t("activity","Loading activities"),description:n.t("activity","This stream will show events like additions, changes & shares")},scopedSlots:t._u([{key:"icon",fn:function(){return[e(n.NcLoadingIcon,{attrs:{size:36}})]},proxy:!0}],null,!1,3043861167)}):n.allActivities.length===0?e(n.NcEmptyContent,{staticClass:"activity-app__empty-content",attrs:{name:n.t("activity","No activity yet"),description:n.t("activity","This stream will show events like additions, changes & shares")},scopedSlots:t._u([{key:"icon",fn:function(){return[e(n.NcIconSvgWrapper,{attrs:{svg:n.appIconSVG,size:36}})]},proxy:!0}])}):t._e(),e("div",{ref:"container",staticClass:"activity-app__container"},[t._l(n.groupedActivities,function(i,a){return e(n.ActivityGroup,{key:a,attrs:{activities:i}})}),n.hasMoreActivites&&n.allActivities.length>0?e(n.NcLoadingIcon,{staticClass:"activity-app__loading-indicator",attrs:{name:n.t("activity","Loading more activities"),size:64}}):!n.hasMoreActivites&&n.allActivities.length>0?e("div",{staticClass:"activity-app__loading-indicator"},[t._v(" "+t._s(n.t("activity","No more activities."))+" ")]):t._e()],2)],1)},Ha=[],Ua=X(Va,ja,Ha,!1,null,"499b54a9",null,null);const qa=Ua.exports;T(dn);const Fa={name:"MenuIcon",emits:["click"],props:{title:{type:String},fillColor:{type:String,default:"currentColor"},size:{type:Number,default:24}}};var Za=function(){var t=this,e=t._self._c;return e("span",t._b({staticClass:"material-design-icon menu-icon",attrs:{"aria-hidden":t.title?null:!0,"aria-label":t.title,role:"img"},on:{click:function(n){return t.$emit("click",n)}}},"span",t.$attrs,!1),[e("svg",{staticClass:"material-design-icon__svg",attrs:{fill:t.fillColor,width:t.size,height:t.size,viewBox:"0 0 24 24"}},[e("path",{attrs:{d:"M3,6H21V8H3V6M3,11H21V13H3V11M3,16H21V18H3V16Z"}},[t.title?e("title",[t._v(t._s(t.title))]):t._e()])])])},Ka=[],Wa=S(Fa,Za,Ka,!1,null,null,null,null);const Ga=Wa.exports,Xa={name:"MenuOpenIcon",emits:["click"],props:{title:{type:String},fillColor:{type:String,default:"currentColor"},size:{type:Number,default:24}}};var Ya=function(){var t=this,e=t._self._c;return e("span",t._b({staticClass:"material-design-icon menu-open-icon",attrs:{"aria-hidden":t.title?null:!0,"aria-label":t.title,role:"img"},on:{click:function(n){return t.$emit("click",n)}}},"span",t.$attrs,!1),[e("svg",{staticClass:"material-design-icon__svg",attrs:{fill:t.fillColor,width:t.size,height:t.size,viewBox:"0 0 24 24"}},[e("path",{attrs:{d:"M21,15.61L19.59,17L14.58,12L19.59,7L21,8.39L17.44,12L21,15.61M3,6H16V8H3V6M3,13V11H13V13H3M3,18V16H16V18H3Z"}},[t.title?e("title",[t._v(t._s(t.title))]):t._e()])])])},Qa=[],Ja=S(Xa,Ya,Qa,!1,null,null,null,null);const tr=Ja.exports,er={name:"NcAppNavigationToggle",components:{NcButton:U,MenuIcon:Ga,MenuOpenIcon:tr},props:{open:{type:Boolean,required:!0}},emits:["update:open"],computed:{label(){return this.open?N("Close navigation"):N("Open navigation")}},methods:{toggleNavigation(){this.$emit("update:open",!this.open)}}};var nr=function(){var t=this,e=t._self._c;return e("div",{staticClass:"app-navigation-toggle-wrapper"},[e("NcButton",{staticClass:"app-navigation-toggle",attrs:{type:"tertiary","aria-expanded":t.open?"true":"false","aria-label":t.label,title:t.label,"aria-controls":"app-navigation-vue"},on:{click:t.toggleNavigation},scopedSlots:t._u([{key:"icon",fn:function(){return[t.open?e("MenuOpenIcon",{attrs:{size:20}}):e("MenuIcon",{attrs:{size:20}})]},proxy:!0}])})],1)},ir=[],ar=S(er,nr,ir,!1,null,"e1dc2b3e",null,null);const rr=ar.exports,or={name:"NcAppNavigationList"};var sr=function(){var t=this,e=t._self._c;return e("ul",{staticClass:"app-navigation-list"},[t._t("default")],2)},lr=[],cr=S(or,sr,lr,!1,null,"ac3baea0",null,null);const ur=cr.exports,pr={name:"NcAppNavigation",components:{NcAppNavigationList:ur,NcAppNavigationToggle:rr},inject:{setHasAppNavigation:{default:()=>()=>P.util.warn("NcAppNavigation is not mounted inside NcContent, this is probably an error."),from:"NcContent:setHasAppNavigation"}},props:{ariaLabel:{type:String,default:""},ariaLabelledby:{type:String,default:""}},setup(){return{isMobile:G()}},data(){return{open:!this.isMobile,focusTrap:null}},watch:{isMobile(){this.open=!this.isMobile,this.toggleFocusTrap()},open(){this.toggleFocusTrap()}},mounted(){this.setHasAppNavigation(!0),We("toggle-navigation",this.toggleNavigationByEventBus),O("navigation-toggled",{open:this.open}),this.focusTrap=fn(this.$refs.appNavigationContainer,{allowOutsideClick:!0,fallbackFocus:this.$refs.appNavigationContainer,trapStack:vn(),escapeDeactivates:!1}),this.toggleFocusTrap()},unmounted(){this.setHasAppNavigation(!1),Ge("toggle-navigation",this.toggleNavigationByEventBus),this.focusTrap.deactivate()},methods:{toggleNavigation(t){if(this.open===t){O("navigation-toggled",{open:this.open});return}this.open=typeof t>"u"?!this.open:t;const e=getComputedStyle(document.body),n=parseInt(e.getPropertyValue("--animation-quick"))||100;setTimeout(()=>{O("navigation-toggled",{open:this.open})},1.5*n)},toggleNavigationByEventBus({open:t}){this.toggleNavigation(t)},toggleFocusTrap(){this.isMobile&&this.open?this.focusTrap.activate():this.focusTrap.deactivate()},handleEsc(){this.isMobile&&this.toggleNavigation(!1)}}};var hr=function(){var t=this,e=t._self._c;return e("div",{ref:"appNavigationContainer",staticClass:"app-navigation",class:{"app-navigation--close":!t.open}},[e("nav",{staticClass:"app-navigation__content",attrs:{id:"app-navigation-vue","aria-hidden":t.open?"false":"true","aria-label":t.ariaLabel||void 0,"aria-labelledby":t.ariaLabelledby||void 0,inert:!t.open||void 0},on:{keydown:function(n){return!n.type.indexOf("key")&&t._k(n.keyCode,"esc",27,n.key,["Esc","Escape"])?null:t.handleEsc.apply(null,arguments)}}},[e("div",{staticClass:"app-navigation__body",class:{"app-navigation__body--no-list":!t.$scopedSlots.list}},[t._t("default")],2),t.$scopedSlots.list?e("NcAppNavigationList",{staticClass:"app-navigation__list"},[t._t("list")],2):t._e(),t._t("footer")],2),e("NcAppNavigationToggle",{attrs:{open:t.open},on:{"update:open":t.toggleNavigation}})],1)},dr=[],fr=S(pr,hr,dr,!1,null,"42389274",null,null);const vr=fr.exports,mr={name:"NcActionButton",components:{CheckIcon:tn,ChevronRightIcon:mn},mixins:[en],inject:{isInSemanticMenu:{from:"NcActions:isSemanticMenu",default:!1}},props:{ariaHidden:{type:Boolean,default:null},disabled:{type:Boolean,default:!1},isMenu:{type:Boolean,default:!1},type:{type:String,default:"button",validator:t=>["button","checkbox","radio","reset","submit"].includes(t)},modelValue:{type:[Boolean,String],default:null},value:{type:String,default:null}},computed:{isFocusable(){return!this.disabled},isChecked(){return this.type==="radio"&&typeof this.modelValue!="boolean"?this.modelValue===this.value:this.modelValue},nativeType(){return this.type==="submit"||this.type==="reset"?this.type:"button"},buttonAttributes(){const t={};return this.isInSemanticMenu?(t.role="menuitem",this.type==="radio"?(t.role="menuitemradio",t["aria-checked"]=this.isChecked?"true":"false"):(this.type==="checkbox"||this.nativeType==="button"&&this.modelValue!==null)&&(t.role="menuitemcheckbox",t["aria-checked"]=this.modelValue===null?"mixed":this.modelValue?"true":"false")):this.modelValue!==null&&this.nativeType==="button"&&(t["aria-pressed"]=this.modelValue?"true":"false"),t}},methods:{handleClick(t){this.onClick(t),(this.modelValue!==null||this.type!=="button")&&(this.type==="radio"?typeof this.modelValue!="boolean"?this.isChecked||this.$emit("update:modelValue",this.value):this.$emit("update:modelValue",!this.isChecked):this.$emit("update:modelValue",!this.isChecked))}}};var gr=function(){var t=this,e=t._self._c;return e("li",{staticClass:"action",class:{"action--disabled":t.disabled},attrs:{role:t.isInSemanticMenu&&"presentation"}},[e("button",t._b({class:["action-button button-vue",{"action-button--active":t.isChecked,focusable:t.isFocusable}],attrs:{"aria-label":t.ariaLabel,disabled:t.disabled,title:t.title,type:t.nativeType},on:{click:t.handleClick}},"button",t.buttonAttributes,!1),[t._t("icon",function(){return[e("span",{staticClass:"action-button__icon",class:[t.isIconUrl?"action-button__icon--url":t.icon],style:{backgroundImage:t.isIconUrl?"url(".concat(t.icon,")"):null},attrs:{"aria-hidden":"true"}})]}),t.name?e("span",{staticClass:"action-button__longtext-wrapper"},[e("strong",{staticClass:"action-button__name"},[t._v(" "+t._s(t.name)+" ")]),e("br"),e("span",{staticClass:"action-button__longtext",domProps:{textContent:t._s(t.text)}})]):t.isLongText?e("span",{staticClass:"action-button__longtext",domProps:{textContent:t._s(t.text)}}):e("span",{staticClass:"action-button__text"},[t._v(t._s(t.text))]),t.isMenu?e("ChevronRightIcon",{staticClass:"action-button__menu-icon",attrs:{size:20}}):t.isChecked===!0?e("CheckIcon",{staticClass:"action-button__pressed-icon",attrs:{size:20}}):t.isChecked===!1?e("span",{staticClass:"action-button__pressed-icon material-design-icon"}):t._e(),t._e()],2)])},yr=[],Cr=S(mr,gr,yr,!1,null,"51d9ee64",null,null);const br=Cr.exports,_r={name:"NcVNodes",props:{vnodes:{type:[Array,Object],default:null}},render(t){var e,n,i;return this.vnodes||((e=this.$slots)==null?void 0:e.default)||((i=(n=this.$scopedSlots)==null?void 0:n.default)==null?void 0:i.call(n))}},xr=null,wr=null;var Sr=S(_r,xr,wr,!1,null,null,null,null);const kr=Sr.exports,zr={name:"ChevronUpIcon",emits:["click"],props:{title:{type:String},fillColor:{type:String,default:"currentColor"},size:{type:Number,default:24}}};var Nr=function(){var t=this,e=t._self._c;return e("span",t._b({staticClass:"material-design-icon chevron-up-icon",attrs:{"aria-hidden":t.title?null:!0,"aria-label":t.title,role:"img"},on:{click:function(n){return t.$emit("click",n)}}},"span",t.$attrs,!1),[e("svg",{staticClass:"material-design-icon__svg",attrs:{fill:t.fillColor,width:t.size,height:t.size,viewBox:"0 0 24 24"}},[e("path",{attrs:{d:"M7.41,15.41L12,10.83L16.59,15.41L18,14L12,8L6,14L7.41,15.41Z"}},[t.title?e("title",[t._v(t._s(t.title))]):t._e()])])])},Er=[],Ar=S(zr,Nr,Er,!1,null,null,null,null);const Pr=Ar.exports;T(gn);const Mr={name:"NcInputConfirmCancel",components:{NcButton:U,ArrowRight:ue,Close:yn},props:{primary:{default:!1,type:Boolean},placeholder:{default:"",type:String},value:{default:"",type:String}},emits:["input","confirm","cancel"],data(){return{labelConfirm:N("Confirm changes"),labelCancel:N("Cancel changes")}},computed:{valueModel:{get(){return this.value},set(t){this.$emit("input",t)}}},methods:{confirm(){this.$emit("confirm")},cancel(){this.$emit("cancel")},focusInput(){this.$refs.input.focus()}}};var Lr=function(){var t=this,e=t._self._c;return e("div",{staticClass:"app-navigation-input-confirm"},[e("form",{on:{submit:function(n){return n.preventDefault(),t.confirm.apply(null,arguments)},keydown:function(n){return!n.type.indexOf("key")&&t._k(n.keyCode,"esc",27,n.key,["Esc","Escape"])||n.ctrlKey||n.shiftKey||n.altKey||n.metaKey?null:(n.stopPropagation(),n.preventDefault(),t.cancel.apply(null,arguments))},click:function(n){n.stopPropagation(),n.preventDefault()}}},[e("input",{directives:[{name:"model",rawName:"v-model",value:t.valueModel,expression:"valueModel"}],ref:"input",staticClass:"app-navigation-input-confirm__input",attrs:{type:"text",placeholder:t.placeholder},domProps:{value:t.valueModel},on:{input:function(n){n.target.composing||(t.valueModel=n.target.value)}}}),e("NcButton",{attrs:{"native-type":"submit",type:"primary","aria-label":t.labelConfirm},on:{click:function(n){return n.stopPropagation(),n.preventDefault(),t.confirm.apply(null,arguments)}},scopedSlots:t._u([{key:"icon",fn:function(){return[e("ArrowRight",{attrs:{size:20}})]},proxy:!0}])}),e("NcButton",{attrs:{"native-type":"reset",type:t.primary?"primary":"tertiary","aria-label":t.labelCancel},on:{click:function(n){return n.stopPropagation(),n.preventDefault(),t.cancel.apply(null,arguments)}},scopedSlots:t._u([{key:"icon",fn:function(){return[e("Close",{attrs:{size:20}})]},proxy:!0}])})],1)])},Dr=[],$r=S(Mr,Lr,Dr,!1,null,"dcf0becf",null,null);const Rr=$r.exports;T(Cn);const Or={name:"NcAppNavigationIconCollapsible",components:{NcButton:U,ChevronDown:nn,ChevronUp:Pr},props:{open:{type:Boolean,default:!0}},emits:["click"],computed:{labelButton(){return this.open?N("Collapse menu"):N("Open menu")}},methods:{onClick(t){this.$emit("click",t)}}};var Tr=function(){var t=this,e=t._self._c;return e("NcButton",{staticClass:"icon-collapse",class:{"icon-collapse--open":t.open},attrs:{type:"tertiary","aria-label":t.labelButton},on:{click:t.onClick},scopedSlots:t._u([{key:"icon",fn:function(){return[t.open?e("ChevronUp",{attrs:{size:20}}):e("ChevronDown",{attrs:{size:20}})]},proxy:!0}])})},Br=[],Ir=S(Or,Tr,Br,!1,null,"07582bf6",null,null);const Vr=Ir.exports;T(_n,bn);const jr={name:"PencilIcon",emits:["click"],props:{title:{type:String},fillColor:{type:String,default:"currentColor"},size:{type:Number,default:24}}};var Hr=function(){var t=this,e=t._self._c;return e("span",t._b({staticClass:"material-design-icon pencil-icon",attrs:{"aria-hidden":t.title?null:!0,"aria-label":t.title,role:"img"},on:{click:function(n){return t.$emit("click",n)}}},"span",t.$attrs,!1),[e("svg",{staticClass:"material-design-icon__svg",attrs:{fill:t.fillColor,width:t.size,height:t.size,viewBox:"0 0 24 24"}},[e("path",{attrs:{d:"M20.71,7.04C21.1,6.65 21.1,6 20.71,5.63L18.37,3.29C18,2.9 17.35,2.9 16.96,3.29L15.12,5.12L18.87,8.87M3,17.25V21H6.75L17.81,9.93L14.06,6.18L3,17.25Z"}},[t.title?e("title",[t._v(t._s(t.title))]):t._e()])])])},Ur=[],qr=S(jr,Hr,Ur,!1,null,null,null,null);const Fr=qr.exports,Zr={name:"UndoIcon",emits:["click"],props:{title:{type:String},fillColor:{type:String,default:"currentColor"},size:{type:Number,default:24}}};var Kr=function(){var t=this,e=t._self._c;return e("span",t._b({staticClass:"material-design-icon undo-icon",attrs:{"aria-hidden":t.title?null:!0,"aria-label":t.title,role:"img"},on:{click:function(n){return t.$emit("click",n)}}},"span",t.$attrs,!1),[e("svg",{staticClass:"material-design-icon__svg",attrs:{fill:t.fillColor,width:t.size,height:t.size,viewBox:"0 0 24 24"}},[e("path",{attrs:{d:"M12.5,8C9.85,8 7.45,9 5.6,10.6L2,7V16H11L7.38,12.38C8.77,11.22 10.54,10.5 12.5,10.5C16.04,10.5 19.05,12.81 20.1,16L22.47,15.22C21.08,11.03 17.15,8 12.5,8Z"}},[t.title?e("title",[t._v(t._s(t.title))]):t._e()])])])},Wr=[],Gr=S(Zr,Kr,Wr,!1,null,null,null,null);const Xr=Gr.exports,Yr={name:"NcAppNavigationItem",components:{NcActions:xn,NcActionButton:br,NcAppNavigationIconCollapsible:Vr,NcInputConfirmCancel:Rr,NcLoadingIcon:he,NcVNodes:kr,Pencil:Fr,Undo:Xr},props:{active:{type:Boolean,default:!1},name:{type:String,required:!0},title:{type:String,default:null},id:{type:String,default:()=>"app-navigation-item-"+wn(),validator:t=>t.trim()!==""},icon:{type:String,default:""},loading:{type:Boolean,default:!1},to:{type:[String,Object],default:null},href:{type:String,default:null},exact:{type:Boolean,default:!1},allowCollapse:{type:Boolean,default:!1},editable:{type:Boolean,default:!1},editLabel:{type:String,default:""},editPlaceholder:{type:String,default:""},pinned:{type:Boolean,default:!1},undo:{type:Boolean,default:!1},open:{type:Boolean,default:!1},menuOpen:{type:Boolean,default:!1},forceMenu:{type:Boolean,default:!1},menuIcon:{type:String,default:void 0},menuPlacement:{type:String,default:"bottom"},ariaDescription:{type:String,default:null},forceDisplayActions:{type:Boolean,default:!1},inlineActions:{type:Number,default:0}},emits:["update:menuOpen","update:open","update:name","click","undo"],setup(){return{isMobile:G()}},data(){return{editingValue:"",opened:this.open,editingActive:!1,hasChildren:!1,menuOpenLocalValue:!1,focused:!1,collapsible:!1}},computed:{isRouterLink(){return this.to&&!this.href},canHaveChildren(){return this.$parent.$options._componentTag!=="AppNavigationItem"},hasUtils(){return!!(this.$slots.actions||this.$slots.counter||this.editable||this.undo)},editButtonAriaLabel(){return this.editLabel?this.editLabel:N("Edit item")},undoButtonAriaLabel(){return N("Undo changes")},actionsBoundariesElement(){return document.querySelector("#content-vue")||void 0}},watch:{open(t){this.opened=t}},created(){this.updateSlotInfo()},beforeUpdate(){this.updateSlotInfo()},methods:{onMenuToggle(t){this.$emit("update:menuOpen",t),this.menuOpenLocalValue=t},toggleCollapse(){this.opened=!this.opened,this.$emit("update:open",this.opened)},onClick(t,e,n){this.$emit("click",t),!(t.metaKey||t.altKey||t.ctrlKey||t.shiftKey)&&n&&(e==null||e(t),t.preventDefault())},handleEdit(){this.editingValue=this.name,this.editingActive=!0,this.onMenuToggle(!1),this.$nextTick(()=>{this.$refs.editingInput.focusInput()})},cancelEditing(){this.editingActive=!1},handleEditingDone(){this.$emit("update:name",this.editingValue),this.editingValue="",this.editingActive=!1},handleUndo(){this.$emit("undo")},updateSlotInfo(){this.hasChildren=!!this.$slots.default,this.collapsible=this.allowCollapse&&!!this.$slots.default},handleFocus(){this.focused=!0},handleBlur(){this.focused=!1},handleTab(t){this.$refs.actions&&(this.focused?(t.preventDefault(),this.$refs.actions.$refs.menuButton.$el.focus(),this.focused=!1):this.$refs.actions.$refs.menuButton.$el.blur())},isExternal(t){return t&&t.match(/[a-z]+:\/\//i)}}};var Qr=function(){var t=this,e=t._self._c;return e("li",{staticClass:"app-navigation-entry-wrapper",class:{"app-navigation-entry--opened":t.opened,"app-navigation-entry--pinned":t.pinned,"app-navigation-entry--collapsible":t.collapsible},attrs:{id:t.id}},[e(t.isRouterLink?"router-link":"NcVNodes",{tag:"component",attrs:{custom:!!t.isRouterLink,to:t.to,exact:t.isRouterLink?t.exact:null},scopedSlots:t._u([{key:"default",fn:function({href:n,navigate:i,isActive:a}){return[e("div",{staticClass:"app-navigation-entry",class:{"app-navigation-entry--editing":t.editingActive,"app-navigation-entry--deleted":t.undo,active:a&&t.to||t.active}},[t.undo?t._e():e("a",{staticClass:"app-navigation-entry-link",attrs:{"aria-current":t.active||a&&t.to?"page":void 0,"aria-description":t.ariaDescription,"aria-expanded":t.hasChildren?t.opened.toString():void 0,href:t.href||n||"#",target:t.isExternal(t.href)?"_blank":void 0,title:t.title||t.name},on:{blur:t.handleBlur,click:function(r){return t.onClick(r,i,n)},focus:t.handleFocus,keydown:function(r){return!r.type.indexOf("key")&&t._k(r.keyCode,"tab",9,r.key,"Tab")||r.ctrlKey||r.shiftKey||r.altKey||r.metaKey?null:t.handleTab.apply(null,arguments)}}},[e("div",{staticClass:"app-navigation-entry-icon",class:{[t.icon]:t.icon}},[t.loading?e("NcLoadingIcon"):t._t("icon")],2),t.editingActive?t._e():e("span",{staticClass:"app-navigation-entry__name"},[t._v(" "+t._s(t.name)+" ")]),t.editingActive?e("div",{staticClass:"editingContainer"},[e("NcInputConfirmCancel",{ref:"editingInput",attrs:{placeholder:t.editPlaceholder!==""?t.editPlaceholder:t.name,primary:a&&t.to||t.active},on:{cancel:t.cancelEditing,confirm:t.handleEditingDone},model:{value:t.editingValue,callback:function(r){t.editingValue=r},expression:"editingValue"}})],1):t._e()]),t.undo?e("div",{staticClass:"app-navigation-entry__deleted"},[e("div",{staticClass:"app-navigation-entry__deleted-description"},[t._v(" "+t._s(t.name)+" ")])]):t._e(),t.hasUtils&&!t.editingActive?e("div",{staticClass:"app-navigation-entry__utils",class:{"app-navigation-entry__utils--display-actions":t.forceDisplayActions||t.menuOpenLocalValue||t.menuOpen}},[t.$slots.counter?e("div",{staticClass:"app-navigation-entry__counter-wrapper"},[t._t("counter")],2):t._e(),t.$slots.actions||t.editable&&!t.editingActive||t.undo?e("NcActions",{ref:"actions",staticClass:"app-navigation-entry__actions",attrs:{inline:t.inlineActions,container:"#app-navigation-vue","boundaries-element":t.actionsBoundariesElement,placement:t.menuPlacement,open:t.menuOpen,type:a&&t.to||t.active?"primary":null,"force-menu":t.forceMenu,"default-icon":t.menuIcon},on:{"update:open":t.onMenuToggle},scopedSlots:t._u([{key:"icon",fn:function(){return[t._t("menu-icon")]},proxy:!0}],null,!0)},[t.editable&&!t.editingActive?e("NcActionButton",{attrs:{"aria-label":t.editButtonAriaLabel},on:{click:t.handleEdit},scopedSlots:t._u([{key:"icon",fn:function(){return[e("Pencil",{attrs:{size:20}})]},proxy:!0}],null,!0)},[t._v(" "+t._s(t.editLabel)+" ")]):t._e(),t.undo?e("NcActionButton",{attrs:{"aria-label":t.undoButtonAriaLabel},on:{click:t.handleUndo},scopedSlots:t._u([{key:"icon",fn:function(){return[e("Undo",{attrs:{size:20}})]},proxy:!0}],null,!0)}):t._e(),t._t("actions")],2):t._e()],1):t._e(),t.collapsible?e("NcAppNavigationIconCollapsible",{attrs:{open:t.opened},on:{click:function(r){return r.preventDefault(),r.stopPropagation(),t.toggleCollapse.apply(null,arguments)}}}):t._e(),t._t("extra")],2)]}}],null,!0)}),t.canHaveChildren&&t.hasChildren?e("ul",{staticClass:"app-navigation-entry__children"},[t._t("default")],2):t._e()],1)},Jr=[],to=S(Yr,Qr,Jr,!1,null,"86815ca2",null,null);const eo=to.exports,no={props:{excludeClickOutsideSelectors:{type:[String,Array],default:()=>[]}},computed:{clickOutsideOptions(){return{ignore:Array.isArray(this.excludeClickOutsideSelectors)?this.excludeClickOutsideSelectors:[this.excludeClickOutsideSelectors]}}}};T(Sn);const io={name:"CogIcon",emits:["click"],props:{title:{type:String},fillColor:{type:String,default:"currentColor"},size:{type:Number,default:24}}};var ao=function(){var t=this,e=t._self._c;return e("span",t._b({staticClass:"material-design-icon cog-icon",attrs:{"aria-hidden":t.title?null:!0,"aria-label":t.title,role:"img"},on:{click:function(n){return t.$emit("click",n)}}},"span",t.$attrs,!1),[e("svg",{staticClass:"material-design-icon__svg",attrs:{fill:t.fillColor,width:t.size,height:t.size,viewBox:"0 0 24 24"}},[e("path",{attrs:{d:"M12,15.5A3.5,3.5 0 0,1 8.5,12A3.5,3.5 0 0,1 12,8.5A3.5,3.5 0 0,1 15.5,12A3.5,3.5 0 0,1 12,15.5M19.43,12.97C19.47,12.65 19.5,12.33 19.5,12C19.5,11.67 19.47,11.34 19.43,11L21.54,9.37C21.73,9.22 21.78,8.95 21.66,8.73L19.66,5.27C19.54,5.05 19.27,4.96 19.05,5.05L16.56,6.05C16.04,5.66 15.5,5.32 14.87,5.07L14.5,2.42C14.46,2.18 14.25,2 14,2H10C9.75,2 9.54,2.18 9.5,2.42L9.13,5.07C8.5,5.32 7.96,5.66 7.44,6.05L4.95,5.05C4.73,4.96 4.46,5.05 4.34,5.27L2.34,8.73C2.21,8.95 2.27,9.22 2.46,9.37L4.57,11C4.53,11.34 4.5,11.67 4.5,12C4.5,12.33 4.53,12.65 4.57,12.97L2.46,14.63C2.27,14.78 2.21,15.05 2.34,15.27L4.34,18.73C4.46,18.95 4.73,19.03 4.95,18.95L7.44,17.94C7.96,18.34 8.5,18.68 9.13,18.93L9.5,21.58C9.54,21.82 9.75,22 10,22H14C14.25,22 14.46,21.82 14.5,21.58L14.87,18.93C15.5,18.67 16.04,18.34 16.56,17.94L19.05,18.95C19.27,19.03 19.54,18.95 19.66,18.73L21.66,15.27C21.78,15.05 21.73,14.78 21.54,14.63L19.43,12.97Z"}},[t.title?e("title",[t._v(t._s(t.title))]):t._e()])])])},ro=[],oo=S(io,ao,ro,!1,null,null,null,null);const so=oo.exports,lo={directives:{ClickOutside:an},components:{Cog:so},mixins:[no],props:{name:{type:String,required:!1,default:N("Settings")}},data(){return{open:!1}},computed:{clickOutsideConfig(){return[this.closeMenu,this.clickOutsideOptions]}},methods:{toggleMenu(){this.open=!this.open},closeMenu(){this.open=!1}}};var co=function(){var t=this,e=t._self._c;return e("div",{directives:[{name:"click-outside",rawName:"v-click-outside",value:t.clickOutsideConfig,expression:"clickOutsideConfig"}],class:{open:t.open},attrs:{id:"app-settings"}},[e("div",{attrs:{id:"app-settings__header"}},[e("button",{staticClass:"settings-button",attrs:{type:"button","aria-expanded":t.open?"true":"false","aria-controls":"app-settings__content"},on:{click:t.toggleMenu}},[e("Cog",{staticClass:"settings-button__icon",attrs:{size:20}}),e("span",{staticClass:"settings-button__label"},[t._v(t._s(t.name))])],1)]),e("Transition",{attrs:{name:"slide-up"}},[e("div",{directives:[{name:"show",rawName:"v-show",value:t.open,expression:"open"}],attrs:{id:"app-settings__content"}},[t._t("default")],2)])],1)},uo=[],po=S(lo,co,uo,!1,null,"4bd59bb1",null,null);const ho=po.exports,fo={name:"ContentCopyIcon",emits:["click"],props:{title:{type:String},fillColor:{type:String,default:"currentColor"},size:{type:Number,default:24}}};var vo=function(){var t=this,e=t._self._c;return e("span",t._b({staticClass:"material-design-icon content-copy-icon",attrs:{"aria-hidden":t.title?null:!0,"aria-label":t.title,role:"img"},on:{click:function(n){return t.$emit("click",n)}}},"span",t.$attrs,!1),[e("svg",{staticClass:"material-design-icon__svg",attrs:{fill:t.fillColor,width:t.size,height:t.size,viewBox:"0 0 24 24"}},[e("path",{attrs:{d:"M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"}},[t.title?e("title",[t._v(t._s(t.title))]):t._e()])])])},mo=[],go=X(fo,vo,mo,!1,null,null,null,null);const yo=go.exports,Co=mt({__name:"ActivityAppNavigation",setup(t){const{rssLink:e,personalSettingsLink:n}=kt(st,"settings"),i=kt(st,"navigationList"),a=V(e),r=Z(()=>!!a.value);async function o(){try{const{data:l}=await de.post(fe("/apps/activity/settings/feed"),{enable:!r.value});a.value=l.data.rsslink}catch(l){ve(A("activity","Could not enable RSS link")),St.error(l)}}async function s(){try{window.navigator.clipboard.writeText(a.value),zn(A("activity","RSS link copied to clipboard"))}catch(l){St.debug(l),window.prompt(A("activity","Could not copy the RSS link, please copy manually:"),a.value)}}return{__sfc:!0,initialRSSLink:e,personalSettingsLink:n,navigationList:i,rssLink:a,hasRSSLink:r,toggleRSSLink:o,copyRSSLink:s,t:A,NcAppNavigation:vr,NcAppNavigationItem:eo,NcAppNavigationSettings:ho,NcButton:U,NcCheckboxRadioSwitch:kn,NcInputField:rn,IconContentCopy:yo}}});var bo=function(){var t=this,e=t._self._c,n=t._self._setupProxy;return e(n.NcAppNavigation,{attrs:{"aria-label":n.t("activity","Activity")},scopedSlots:t._u([{key:"list",fn:function(){return t._l(n.navigationList,function(i){return e(n.NcAppNavigationItem,{key:i.id,attrs:{"data-navigation":i.id,to:i.id,name:i.name},scopedSlots:t._u([i.icon?{key:"icon",fn:function(){return[e("img",{staticClass:"navigation-icon",attrs:{alt:"",src:i.icon,role:"presentation"}})]},proxy:!0}:null],null,!0)})})},proxy:!0},{key:"footer",fn:function(){return[e(n.NcAppNavigationSettings,{attrs:{name:n.t("activity","Activity settings")}},[e(n.NcCheckboxRadioSwitch,{attrs:{type:"switch",checked:n.hasRSSLink},on:{"update:checked":n.toggleRSSLink}},[t._v(" "+t._s(n.t("activity","Enable RSS feed"))+" ")]),n.hasRSSLink?e(n.NcInputField,{attrs:{label:n.t("activity","RSS feed"),"show-trailing-button":!0,"trailing-button-label":n.t("activity","Copy RSS feed link"),readonly:"readonly"},on:{"trailing-button-click":n.copyRSSLink},scopedSlots:t._u([{key:"trailing-button-icon",fn:function(){return[e(n.IconContentCopy,{attrs:{size:20}})]},proxy:!0}],null,!1,4025534811),model:{value:n.rssLink,callback:function(i){n.rssLink=i},expression:"rssLink"}}):t._e(),e(n.NcButton,{staticClass:"settings-link",attrs:{href:n.personalSettingsLink,title:n.t("activity","Personal notification settings"),type:"tertiary"}},[t._v(" "+t._s(n.t("activity","Personal notification settings"))+" ")])],1)]},proxy:!0}])})},_o=[],xo=X(Co,bo,_o,!1,null,null,null,null);const wo=xo.exports,So=[{path:"/",name:"root",redirect:{path:"/all"}},{path:"/:filter?",components:{default:qa,navigation:wo},props:{default:!0}}];P.prototype.t=A,P.prototype.n=Ke,P.use($e);const ko=new $e({mode:"history",base:fe("/apps/activity"),linkActiveClass:"active",routes:So});new P({el:"#content",name:"ActivityRoot",router:ko,render:t=>t(qi)}); +import{V as P,d as mt,c as Z,t as A,g as He,e as qe,s as Ue,r as V,o as Fe,w as Ze,a as Ke}from"./index-CmscAddx.mjs";import{e as O,l as St,s as We,u as Ge}from"./logger-CcLDq3iB.mjs";import{u as G,g as Xe,_ as ue,m as U,A as Ye,a as Qe,b as Je,c as tn,r as en,d as nn,v as an,e as rn}from"./Activity-DQDvjcjQ.mjs";import{d as T,D as on,v as S,x as q,g as pe,m as N,n as X,G as sn,u as ln,V as cn,l as kt,a as un,c as he,b as de,e as pn,f as hn,j as dn,h as fn,i as vn,_ as mn,k as gn,o as yn,O as Cn,p as bn,B as _n,q as xn,r as wn,Q as Sn,s as kn,t as fe}from"./NcCheckboxRadioSwitch-BOl1O2zi-BqKsNleQ.mjs";import{z as ve,B as zn}from"./NcNoteCard-B_Q1mnCM-CvHJMgRg.mjs";import"./_commonjsHelpers-BdswosdL.mjs";const st="activity";function z(t,e){for(var n in e)t[n]=e[n];return t}var Nn=/[!'()*]/g,En=function(t){return"%"+t.charCodeAt(0).toString(16)},An=/%2C/g,I=function(t){return encodeURIComponent(t).replace(Nn,En).replace(An,",")};function zt(t){try{return decodeURIComponent(t)}catch{}return t}function Pn(t,e,n){e===void 0&&(e={});var i=n||Mn,a;try{a=i(t||"")}catch{a={}}for(var r in e){var o=e[r];a[r]=Array.isArray(o)?o.map(It):It(o)}return a}var It=function(t){return t==null||typeof t=="object"?t:String(t)};function Mn(t){var e={};return t=t.trim().replace(/^(\?|#|&)/,""),t&&t.split("&").forEach(function(n){var i=n.replace(/\+/g," ").split("="),a=zt(i.shift()),r=i.length>0?zt(i.join("=")):null;e[a]===void 0?e[a]=r:Array.isArray(e[a])?e[a].push(r):e[a]=[e[a],r]}),e}function Ln(t){var e=t?Object.keys(t).map(function(n){var i=t[n];if(i===void 0)return"";if(i===null)return I(n);if(Array.isArray(i)){var a=[];return i.forEach(function(r){r!==void 0&&(r===null?a.push(I(n)):a.push(I(n)+"="+I(r)))}),a.join("&")}return I(n)+"="+I(i)}).filter(function(n){return n.length>0}).join("&"):null;return e?"?"+e:""}var lt=/\/?$/;function ct(t,e,n,i){var a=i&&i.options.stringifyQuery,r=e.query||{};try{r=Nt(r)}catch{}var o={name:e.name||t&&t.name,meta:t&&t.meta||{},path:e.path||"/",hash:e.hash||"",query:r,params:e.params||{},fullPath:Vt(e,a),matched:t?Dn(t):[]};return n&&(o.redirectedFrom=Vt(n,a)),Object.freeze(o)}function Nt(t){if(Array.isArray(t))return t.map(Nt);if(t&&typeof t=="object"){var e={};for(var n in t)e[n]=Nt(t[n]);return e}else return t}var R=ct(null,{path:"/"});function Dn(t){for(var e=[];t;)e.unshift(t),t=t.parent;return e}function Vt(t,e){var n=t.path,i=t.query;i===void 0&&(i={});var a=t.hash;a===void 0&&(a="");var r=e||Ln;return(n||"/")+r(i)+a}function me(t,e,n){return e===R?t===e:e?t.path&&e.path?t.path.replace(lt,"")===e.path.replace(lt,"")&&(n||t.hash===e.hash&&tt(t.query,e.query)):t.name&&e.name?t.name===e.name&&(n||t.hash===e.hash&&tt(t.query,e.query)&&tt(t.params,e.params)):!1:!1}function tt(t,e){if(t===void 0&&(t={}),e===void 0&&(e={}),!t||!e)return t===e;var n=Object.keys(t).sort(),i=Object.keys(e).sort();return n.length!==i.length?!1:n.every(function(a,r){var o=t[a],s=i[r];if(s!==a)return!1;var l=e[a];return o==null||l==null?o===l:typeof o=="object"&&typeof l=="object"?tt(o,l):String(o)===String(l)})}function $n(t,e){return t.path.replace(lt,"/").indexOf(e.path.replace(lt,"/"))===0&&(!e.hash||t.hash===e.hash)&&Rn(t.query,e.query)}function Rn(t,e){for(var n in e)if(!(n in t))return!1;return!0}function ge(t){for(var e=0;e=0&&(e=t.slice(i),t=t.slice(0,i));var a=t.indexOf("?");return a>=0&&(n=t.slice(a+1),t=t.slice(0,a)),{path:t,query:n,hash:e}}function L(t){return t.replace(/\/(?:\s*\/)+/g,"/")}var ut=Array.isArray||function(t){return Object.prototype.toString.call(t)=="[object Array]"},j=_e,In=Lt,Vn=Un,jn=Ce,Hn=be,qn=new RegExp(["(\\\\.)","([\\/.])?(?:(?:\\:(\\w+)(?:\\(((?:\\\\.|[^\\\\()])+)\\))?|\\(((?:\\\\.|[^\\\\()])+)\\))([+*?])?|(\\*))"].join("|"),"g");function Lt(t,e){for(var n=[],i=0,a=0,r="",o=e&&e.delimiter||"/",s;(s=qn.exec(t))!=null;){var l=s[0],u=s[1],m=s.index;if(r+=t.slice(a,m),a=m+l.length,u){r+=u[1];continue}var v=t[a],p=s[2],h=s[3],c=s[4],f=s[5],d=s[6],y=s[7];r&&(n.push(r),r="");var g=p!=null&&v!=null&&v!==p,_=d==="+"||d==="*",b=d==="?"||d==="*",x=s[2]||o,w=c||f;n.push({name:h||i++,prefix:p||"",delimiter:x,optional:b,repeat:_,partial:g,asterisk:!!y,pattern:w?Kn(w):y?".*":"[^"+et(x)+"]+?"})}return a1||!b.length)return b.length===0?t():t("span",{},b)}if(this.tag==="a")_.on=g,_.attrs={href:s,"aria-current":d};else{var x=xe(this.$slots.default);if(x){x.isStatic=!1;var w=x.data=z({},x.data);w.on=w.on||{};for(var M in w.on){var E=w.on[M];M in g&&(w.on[M]=Array.isArray(E)?E:[E])}for(var Q in g)Q in w.on?w.on[Q].push(g[Q]):w.on[Q]=y;var Bt=x.data.attrs=z({},x.data.attrs);Bt.href=s,Bt["aria-current"]=d}else _.on=g}return t(this.tag,_,this.$slots.default)}};function Ut(t){if(!(t.metaKey||t.altKey||t.ctrlKey||t.shiftKey)&&!t.defaultPrevented&&!(t.button!==void 0&&t.button!==0)){if(t.currentTarget&&t.currentTarget.getAttribute){var e=t.currentTarget.getAttribute("target");if(/\b_blank\b/i.test(e))return}return t.preventDefault&&t.preventDefault(),!0}}function xe(t){if(t){for(var e,n=0;n-1&&(d.params[b]=c.params[b]);return d.path=nt(g.path,d.params),p(g,d,f)}else if(d.path){d.params={};for(var x=0;x-1}function ft(t,e){return dt(t)&&t._isRouter&&(e==null||t.type===e)}function Xt(t,e,n){var i=function(a){a>=t.length?n():t[a]?e(t[a],function(){i(a+1)}):i(a+1)};i(0)}function vi(t){return function(e,n,i){var a=!1,r=0,o=null;Ae(t,function(s,l,u,m){if(typeof s=="function"&&s.cid===void 0){a=!0,r++;var v=Yt(function(f){gi(f)&&(f=f.default),s.resolved=typeof f=="function"?f:pt.extend(f),u.components[m]=f,r--,r<=0&&i()}),p=Yt(function(f){var d="Failed to resolve async component "+m+": "+f;o||(o=dt(f)?f:new Error(d),i(o))}),h;try{h=s(v,p)}catch(f){p(f)}if(h)if(typeof h.then=="function")h.then(v,p);else{var c=h.component;c&&typeof c.then=="function"&&c.then(v,p)}}}),a||i()}}function Ae(t,e){return Pe(t.map(function(n){return Object.keys(n.components).map(function(i){return e(n.components[i],n.instances[i],n,i)})}))}function Pe(t){return Array.prototype.concat.apply([],t)}var mi=typeof Symbol=="function"&&typeof Symbol.toStringTag=="symbol";function gi(t){return t.__esModule||mi&&t[Symbol.toStringTag]==="Module"}function Yt(t){var e=!1;return function(){for(var n=[],i=arguments.length;i--;)n[i]=arguments[i];if(!e)return e=!0,t.apply(this,n)}}var k=function(t,e){this.router=t,this.base=yi(e),this.current=R,this.pending=null,this.ready=!1,this.readyCbs=[],this.readyErrorCbs=[],this.errorCbs=[],this.listeners=[]};k.prototype.listen=function(t){this.cb=t},k.prototype.onReady=function(t,e){this.ready?t():(this.readyCbs.push(t),e&&this.readyErrorCbs.push(e))},k.prototype.onError=function(t){this.errorCbs.push(t)},k.prototype.transitionTo=function(t,e,n){var i=this,a;try{a=this.router.match(t,this.current)}catch(o){throw this.errorCbs.forEach(function(s){s(o)}),o}var r=this.current;this.confirmTransition(a,function(){i.updateRoute(a),e&&e(a),i.ensureURL(),i.router.afterHooks.forEach(function(o){o&&o(a,r)}),i.ready||(i.ready=!0,i.readyCbs.forEach(function(o){o(a)}))},function(o){n&&n(o),o&&!i.ready&&(!ft(o,B.redirected)||r!==R)&&(i.ready=!0,i.readyErrorCbs.forEach(function(s){s(o)}))})},k.prototype.confirmTransition=function(t,e,n){var i=this,a=this.current;this.pending=t;var r=function(c){!ft(c)&&dt(c)&&(i.errorCbs.length?i.errorCbs.forEach(function(f){f(c)}):console.error(c)),n&&n(c)},o=t.matched.length-1,s=a.matched.length-1;if(me(t,a)&&o===s&&t.matched[o]===a.matched[s])return this.ensureURL(),t.hash&&D(this.router,a,t,!1),r(pi(a,t));var l=Ci(this.current.matched,t.matched),u=l.updated,m=l.deactivated,v=l.activated,p=[].concat(_i(m),this.router.beforeHooks,xi(u),v.map(function(c){return c.beforeEnter}),vi(v)),h=function(c,f){if(i.pending!==t)return r(Gt(a,t));try{c(t,a,function(d){d===!1?(i.ensureURL(!0),r(hi(a,t))):dt(d)?(i.ensureURL(!0),r(d)):typeof d=="string"||typeof d=="object"&&(typeof d.path=="string"||typeof d.name=="string")?(r(ui(a,t)),typeof d=="object"&&d.replace?i.replace(d):i.push(d)):f(d)})}catch(d){r(d)}};Xt(p,h,function(){var c=wi(v),f=c.concat(i.router.resolveHooks);Xt(f,h,function(){if(i.pending!==t)return r(Gt(a,t));i.pending=null,e(t),i.router.app&&i.router.app.$nextTick(function(){ge(t)})})})},k.prototype.updateRoute=function(t){this.current=t,this.cb&&this.cb(t)},k.prototype.setupListeners=function(){},k.prototype.teardown=function(){this.listeners.forEach(function(t){t()}),this.listeners=[],this.current=R,this.pending=null};function yi(t){if(!t)if(Y){var e=document.querySelector("base");t=e&&e.getAttribute("href")||"/",t=t.replace(/^https?:\/\/[^\/]+/,"")}else t="/";return t.charAt(0)!=="/"&&(t="/"+t),t.replace(/\/$/,"")}function Ci(t,e){var n,i=Math.max(t.length,e.length);for(n=0;n0)){var i=this.router,a=i.options.scrollBehavior,r=$&&a;r&&this.listeners.push(Ne());var o=function(){var s=n.current,l=F(n.base);n.current===R&&l===n._startLocation||n.transitionTo(l,function(u){r&&D(i,u,s,!0)})};window.addEventListener("popstate",o),this.listeners.push(function(){window.removeEventListener("popstate",o)})}},e.prototype.go=function(n){window.history.go(n)},e.prototype.push=function(n,i,a){var r=this,o=this,s=o.current;this.transitionTo(n,function(l){ht(L(r.base+l.fullPath)),D(r.router,l,s,!1),i&&i(l)},a)},e.prototype.replace=function(n,i,a){var r=this,o=this,s=o.current;this.transitionTo(n,function(l){Pt(L(r.base+l.fullPath)),D(r.router,l,s,!1),i&&i(l)},a)},e.prototype.ensureURL=function(n){if(F(this.base)!==this.current.fullPath){var i=L(this.base+this.current.fullPath);n?ht(i):Pt(i)}},e.prototype.getCurrentLocation=function(){return F(this.base)},e}(k);function F(t){var e=window.location.pathname,n=e.toLowerCase(),i=t.toLowerCase();return t&&(n===i||n.indexOf(L(i+"/"))===0)&&(e=e.slice(t.length)),(e||"/")+window.location.search+window.location.hash}var De=function(t){function e(n,i,a){t.call(this,n,i),!(a&&ki(this.base))&&Qt()}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype.setupListeners=function(){var n=this;if(!(this.listeners.length>0)){var i=this.router,a=i.options.scrollBehavior,r=$&&a;r&&this.listeners.push(Ne());var o=function(){var l=n.current;Qt()&&n.transitionTo(it(),function(u){r&&D(n.router,u,l,!0),$||at(u.fullPath)})},s=$?"popstate":"hashchange";window.addEventListener(s,o),this.listeners.push(function(){window.removeEventListener(s,o)})}},e.prototype.push=function(n,i,a){var r=this,o=this,s=o.current;this.transitionTo(n,function(l){Jt(l.fullPath),D(r.router,l,s,!1),i&&i(l)},a)},e.prototype.replace=function(n,i,a){var r=this,o=this,s=o.current;this.transitionTo(n,function(l){at(l.fullPath),D(r.router,l,s,!1),i&&i(l)},a)},e.prototype.go=function(n){window.history.go(n)},e.prototype.ensureURL=function(n){var i=this.current.fullPath;it()!==i&&(n?Jt(i):at(i))},e.prototype.getCurrentLocation=function(){return it()},e}(k);function ki(t){var e=F(t);if(!/^\/#/.test(e))return window.location.replace(L(t+"/#"+e)),!0}function Qt(){var t=it();return t.charAt(0)==="/"?!0:(at("/"+t),!1)}function it(){var t=window.location.href,e=t.indexOf("#");return e<0?"":(t=t.slice(e+1),t)}function Mt(t){var e=window.location.href,n=e.indexOf("#"),i=n>=0?e.slice(0,n):e;return i+"#"+t}function Jt(t){$?ht(Mt(t)):window.location.hash=t}function at(t){$?Pt(Mt(t)):window.location.replace(Mt(t))}var zi=function(t){function e(n,i){t.call(this,n,i),this.stack=[],this.index=-1}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype.push=function(n,i,a){var r=this;this.transitionTo(n,function(o){r.stack=r.stack.slice(0,r.index+1).concat(o),r.index++,i&&i(o)},a)},e.prototype.replace=function(n,i,a){var r=this;this.transitionTo(n,function(o){r.stack=r.stack.slice(0,r.index).concat(o),i&&i(o)},a)},e.prototype.go=function(n){var i=this,a=this.index+n;if(!(a<0||a>=this.stack.length)){var r=this.stack[a];this.confirmTransition(r,function(){var o=i.current;i.index=a,i.updateRoute(r),i.router.afterHooks.forEach(function(s){s&&s(r,o)})},function(o){ft(o,B.duplicated)&&(i.index=a)})}},e.prototype.getCurrentLocation=function(){var n=this.stack[this.stack.length-1];return n?n.fullPath:"/"},e.prototype.ensureURL=function(){},e}(k),C=function(t){t===void 0&&(t={}),this.app=null,this.apps=[],this.options=t,this.beforeHooks=[],this.resolveHooks=[],this.afterHooks=[],this.matcher=ni(t.routes||[],this);var e=t.mode||"hash";switch(this.fallback=e==="history"&&!$&&t.fallback!==!1,this.fallback&&(e="hash"),Y||(e="abstract"),this.mode=e,e){case"history":this.history=new Le(this,t.base);break;case"hash":this.history=new De(this,t.base,this.fallback);break;case"abstract":this.history=new zi(this,t.base);break}},te={currentRoute:{configurable:!0}};C.prototype.match=function(t,e,n){return this.matcher.match(t,e,n)},te.currentRoute.get=function(){return this.history&&this.history.current},C.prototype.init=function(t){var e=this;if(this.apps.push(t),t.$once("hook:destroyed",function(){var r=e.apps.indexOf(t);r>-1&&e.apps.splice(r,1),e.app===t&&(e.app=e.apps[0]||null),e.app||e.history.teardown()}),!this.app){this.app=t;var n=this.history;if(n instanceof Le||n instanceof De){var i=function(r){var o=n.current,s=e.options.scrollBehavior,l=$&&s;l&&"fullPath"in r&&D(e,r,o,!1)},a=function(r){n.setupListeners(),i(r)};n.transitionTo(n.getCurrentLocation(),a,a)}n.listen(function(r){e.apps.forEach(function(o){o._route=r})})}},C.prototype.beforeEach=function(t){return _t(this.beforeHooks,t)},C.prototype.beforeResolve=function(t){return _t(this.resolveHooks,t)},C.prototype.afterEach=function(t){return _t(this.afterHooks,t)},C.prototype.onReady=function(t,e){this.history.onReady(t,e)},C.prototype.onError=function(t){this.history.onError(t)},C.prototype.push=function(t,e,n){var i=this;if(!e&&!n&&typeof Promise<"u")return new Promise(function(a,r){i.history.push(t,a,r)});this.history.push(t,e,n)},C.prototype.replace=function(t,e,n){var i=this;if(!e&&!n&&typeof Promise<"u")return new Promise(function(a,r){i.history.replace(t,a,r)});this.history.replace(t,e,n)},C.prototype.go=function(t){this.history.go(t)},C.prototype.back=function(){this.go(-1)},C.prototype.forward=function(){this.go(1)},C.prototype.getMatchedComponents=function(t){var e=t?t.matched?t:this.resolve(t).route:this.currentRoute;return e?[].concat.apply([],e.matched.map(function(n){return Object.keys(n.components).map(function(i){return n.components[i]})})):[]},C.prototype.resolve=function(t,e,n){e=e||this.history.current;var i=Rt(t,e,n,this),a=this.match(i,e),r=a.redirectedFrom||a.fullPath,o=this.history.base,s=Ni(o,r,this.mode);return{location:i,route:a,href:s,normalizedTo:i,resolved:a}},C.prototype.getRoutes=function(){return this.matcher.getRoutes()},C.prototype.addRoute=function(t,e){this.matcher.addRoute(t,e),this.history.current!==R&&this.history.transitionTo(this.history.getCurrentLocation())},C.prototype.addRoutes=function(t){this.matcher.addRoutes(t),this.history.current!==R&&this.history.transitionTo(this.history.getCurrentLocation())},Object.defineProperties(C.prototype,te);var $e=C;function _t(t,e){return t.push(e),function(){var n=t.indexOf(e);n>-1&&t.splice(n,1)}}function Ni(t,e,n){var i=n==="hash"?"#"+e:e;return t?L(t+"/"+i):i}C.install=Et,C.version="3.6.5",C.isNavigationFailure=ft,C.NavigationFailureType=B,C.START_LOCATION=R,Y&&window.Vue&&window.Vue.use(C);let Ei="useandom-26T198340PX75pxJACKVERYMINDBUSHWOLF_GQZbfghjklqvwyzrict",Ai=(t=21)=>{let e="",n=t;for(;n--;)e+=Ei[Math.random()*64|0];return e};function rt(t){"@babel/helpers - typeof";return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?rt=function(e){return typeof e}:rt=function(e){return e&&typeof Symbol=="function"&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},rt(t)}var Re={selector:"vue-portal-target-".concat(Ai())},Pi=function(t){return Re.selector=t},xt=typeof window<"u"&&(typeof document>"u"?"undefined":rt(document))!==void 0,Mi=P.extend({abstract:!0,name:"PortalOutlet",props:["nodes","tag"],data:function(t){return{updatedNodes:t.nodes}},render:function(t){var e=this.updatedNodes&&this.updatedNodes();return e?e.length===1&&!e[0].text?e:t(this.tag||"DIV",e):t()},destroyed:function(){var t=this.$el;t&&t.parentNode.removeChild(t)}}),Oe=P.extend({name:"VueSimplePortal",props:{disabled:{type:Boolean},prepend:{type:Boolean},selector:{type:String,default:function(){return"#".concat(Re.selector)}},tag:{type:String,default:"DIV"}},render:function(t){if(this.disabled){var e=this.$scopedSlots&&this.$scopedSlots.default();return e?e.length<2&&!e[0].text?e:t(this.tag,e):t()}return t()},created:function(){this.getTargetEl()||this.insertTargetEl()},updated:function(){var t=this;this.$nextTick(function(){!t.disabled&&t.slotFn!==t.$scopedSlots.default&&(t.container.updatedNodes=t.$scopedSlots.default),t.slotFn=t.$scopedSlots.default})},beforeDestroy:function(){this.unmount()},watch:{disabled:{immediate:!0,handler:function(t){t?this.unmount():this.$nextTick(this.mount)}}},methods:{getTargetEl:function(){if(xt)return document.querySelector(this.selector)},insertTargetEl:function(){if(xt){var t=document.querySelector("body"),e=document.createElement(this.tag);e.id=this.selector.substring(1),t.appendChild(e)}},mount:function(){if(xt){var t=this.getTargetEl(),e=document.createElement("DIV");this.prepend&&t.firstChild?t.insertBefore(e,t.firstChild):t.appendChild(e),this.container=new Mi({el:e,parent:this,propsData:{tag:this.tag,nodes:this.$scopedSlots.default}})}},unmount:function(){this.container&&(this.container.$destroy(),delete this.container)}}});function Li(t){var e=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{};t.component(e.name||"portal",Oe),e.defaultSelector&&Pi(e.defaultSelector)}typeof window<"u"&&window.Vue&&window.Vue===P&&P.use(Li),T(on);const Di='\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n',$i='\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n',Ri={name:"NcContent",components:{NcButton:q,NcIconSvgWrapper:pe,Teleport:Oe},provide(){return{"NcContent:setHasAppNavigation":this.setAppNavigation}},props:{appName:{type:String,required:!0}},setup(){return{isMobile:G()}},data(){return{hasAppNavigation:!1,currentFocus:""}},computed:{currentImage(){return this.currentFocus==="navigation"?$i:Di}},beforeMount(){const t=document.getElementById("skip-actions");t&&(t.innerHTML="",t.classList.add("vue-skip-actions"))},methods:{t:N,openAppNavigation(){O("toggle-navigation",{open:!0}),this.$nextTick(()=>{window.location.hash="app-navigation-vue",document.getElementById("app-navigation-vue").focus()})},setAppNavigation(t){this.hasAppNavigation=t,this.currentFocus===""&&(this.currentFocus="navigation")}}};var Oi=function(){var t=this,e=t._self._c;return e("div",{class:["content","app-".concat(t.appName.toLowerCase())],attrs:{id:"content-vue"}},[e("Teleport",{attrs:{selector:"#skip-actions"}},[e("div",{staticClass:"vue-skip-actions__container"},[e("div",{staticClass:"vue-skip-actions__headline"},[t._v(" "+t._s(t.t("Keyboard navigation help"))+" ")]),e("div",{staticClass:"vue-skip-actions__buttons"},[e("NcButton",{directives:[{name:"show",rawName:"v-show",value:t.hasAppNavigation,expression:"hasAppNavigation"}],attrs:{type:"tertiary",href:"#app-navigation-vue"},on:{click:function(n){return n.preventDefault(),t.openAppNavigation.apply(null,arguments)},focusin:function(n){t.currentFocus="navigation"},mouseover:function(n){t.currentFocus="navigation"}}},[t._v(" "+t._s(t.t("Skip to app navigation"))+" ")]),e("NcButton",{attrs:{type:"tertiary",href:"#app-content-vue"},on:{focusin:function(n){t.currentFocus="content"},mouseover:function(n){t.currentFocus="content"}}},[t._v(" "+t._s(t.t("Skip to main content"))+" ")])],1),e("NcIconSvgWrapper",{directives:[{name:"show",rawName:"v-show",value:!t.isMobile,expression:"!isMobile"}],staticClass:"vue-skip-actions__image",attrs:{svg:t.currentImage,size:"auto"}})],1),t._v("  ")]),t._t("default")],2)},Ti=[],Bi=S(Ri,Oi,Ti,!1,null,"cfc84a6c",null,null);const Ii=Bi.exports,Vi=mt({__name:"ActivityApp",setup(t){return{__sfc:!0,NcContent:Ii}}});var ji=function(){var t=this,e=t._self._c,n=t._self._setupProxy;return e(n.NcContent,{attrs:{"app-name":"activity"}},[e("router-view",{attrs:{name:"navigation"}}),e("router-view")],1)},Hi=[],qi=X(Vi,ji,Hi,!1,null,null,null,null);const Ui=qi.exports;var Fi=Object.defineProperty,Zi=Object.defineProperties,Ki=Object.getOwnPropertyDescriptors,vt=Object.getOwnPropertySymbols,Te=Object.prototype.hasOwnProperty,Be=Object.prototype.propertyIsEnumerable,ee=(t,e,n)=>e in t?Fi(t,e,{enumerable:!0,configurable:!0,writable:!0,value:n}):t[e]=n,Wi=(t,e)=>{for(var n in e||(e={}))Te.call(e,n)&&ee(t,n,e[n]);if(vt)for(var n of vt(e))Be.call(e,n)&&ee(t,n,e[n]);return t},Gi=(t,e)=>Zi(t,Ki(e)),Xi=(t,e)=>{var n={};for(var i in t)Te.call(t,i)&&e.indexOf(i)<0&&(n[i]=t[i]);if(t!=null&&vt)for(var i of vt(t))e.indexOf(i)<0&&Be.call(t,i)&&(n[i]=t[i]);return n};function Ie(t,e,n,i,a,r,o,s){var l=typeof t=="function"?t.options:t;e&&(l.render=e,l.staticRenderFns=n,l._compiled=!0),i&&(l.functional=!0),r&&(l._scopeId="data-v-"+r);var u;if(o?(u=function(p){p=p||this.$vnode&&this.$vnode.ssrContext||this.parent&&this.parent.$vnode&&this.parent.$vnode.ssrContext,!p&&typeof __VUE_SSR_CONTEXT__<"u"&&(p=__VUE_SSR_CONTEXT__),a&&a.call(this,p),p&&p._registeredComponents&&p._registeredComponents.add(o)},l._ssrRegister=u):a&&(u=s?function(){a.call(this,(l.functional?this.parent:this).$root.$options.shadowRoot)}:a),u)if(l.functional){l._injectStyles=u;var m=l.render;l.render=function(p,h){return u.call(h),m(p,h)}}else{var v=l.beforeCreate;l.beforeCreate=v?[].concat(v,u):[u]}return{exports:t,options:l}}const Yi={name:"splitpanes",props:{horizontal:{type:Boolean},pushOtherPanes:{type:Boolean,default:!0},dblClickSplitter:{type:Boolean,default:!0},rtl:{type:Boolean,default:!1},firstSplitter:{type:Boolean}},provide(){return{requestUpdate:this.requestUpdate,onPaneAdd:this.onPaneAdd,onPaneRemove:this.onPaneRemove,onPaneClick:this.onPaneClick}},data:()=>({container:null,ready:!1,panes:[],touch:{mouseDown:!1,dragging:!1,activeSplitter:null},splitterTaps:{splitter:null,timeoutId:null}}),computed:{panesCount(){return this.panes.length},indexedPanes(){return this.panes.reduce((t,e)=>(t[e.id]=e)&&t,{})}},methods:{updatePaneComponents(){this.panes.forEach(t=>{t.update&&t.update({[this.horizontal?"height":"width"]:"".concat(this.indexedPanes[t.id].size,"%")})})},bindEvents(){document.addEventListener("mousemove",this.onMouseMove,{passive:!1}),document.addEventListener("mouseup",this.onMouseUp),"ontouchstart"in window&&(document.addEventListener("touchmove",this.onMouseMove,{passive:!1}),document.addEventListener("touchend",this.onMouseUp))},unbindEvents(){document.removeEventListener("mousemove",this.onMouseMove,{passive:!1}),document.removeEventListener("mouseup",this.onMouseUp),"ontouchstart"in window&&(document.removeEventListener("touchmove",this.onMouseMove,{passive:!1}),document.removeEventListener("touchend",this.onMouseUp))},onMouseDown(t,e){this.bindEvents(),this.touch.mouseDown=!0,this.touch.activeSplitter=e},onMouseMove(t){this.touch.mouseDown&&(t.preventDefault(),this.touch.dragging=!0,this.calculatePanesSize(this.getCurrentMouseDrag(t)),this.$emit("resize",this.panes.map(e=>({min:e.min,max:e.max,size:e.size}))))},onMouseUp(){this.touch.dragging&&this.$emit("resized",this.panes.map(t=>({min:t.min,max:t.max,size:t.size}))),this.touch.mouseDown=!1,setTimeout(()=>{this.touch.dragging=!1,this.unbindEvents()},100)},onSplitterClick(t,e){"ontouchstart"in window&&(t.preventDefault(),this.dblClickSplitter&&(this.splitterTaps.splitter===e?(clearTimeout(this.splitterTaps.timeoutId),this.splitterTaps.timeoutId=null,this.onSplitterDblClick(t,e),this.splitterTaps.splitter=null):(this.splitterTaps.splitter=e,this.splitterTaps.timeoutId=setTimeout(()=>{this.splitterTaps.splitter=null},500)))),this.touch.dragging||this.$emit("splitter-click",this.panes[e])},onSplitterDblClick(t,e){let n=0;this.panes=this.panes.map((i,a)=>(i.size=a===e?i.max:i.min,a!==e&&(n+=i.min),i)),this.panes[e].size-=n,this.$emit("pane-maximize",this.panes[e])},onPaneClick(t,e){this.$emit("pane-click",this.indexedPanes[e])},getCurrentMouseDrag(t){const e=this.container.getBoundingClientRect(),{clientX:n,clientY:i}="ontouchstart"in window&&t.touches?t.touches[0]:t;return{x:n-e.left,y:i-e.top}},getCurrentDragPercentage(t){t=t[this.horizontal?"y":"x"];const e=this.container[this.horizontal?"clientHeight":"clientWidth"];return this.rtl&&!this.horizontal&&(t=e-t),t*100/e},calculatePanesSize(t){const e=this.touch.activeSplitter;let n={prevPanesSize:this.sumPrevPanesSize(e),nextPanesSize:this.sumNextPanesSize(e),prevReachedMinPanes:0,nextReachedMinPanes:0};const i=0+(this.pushOtherPanes?0:n.prevPanesSize),a=100-(this.pushOtherPanes?0:n.nextPanesSize),r=Math.max(Math.min(this.getCurrentDragPercentage(t),a),i);let o=[e,e+1],s=this.panes[o[0]]||null,l=this.panes[o[1]]||null;const u=s.max<100&&r>=s.max+n.prevPanesSize,m=l.max<100&&r<=100-(l.max+this.sumNextPanesSize(e+1));if(u||m){u?(s.size=s.max,l.size=Math.max(100-s.max-n.prevPanesSize-n.nextPanesSize,0)):(s.size=Math.max(100-l.max-n.prevPanesSize-this.sumNextPanesSize(e+1),0),l.size=l.max);return}if(this.pushOtherPanes){const v=this.doPushOtherPanes(n,r);if(!v)return;({sums:n,panesToResize:o}=v),s=this.panes[o[0]]||null,l=this.panes[o[1]]||null}s!==null&&(s.size=Math.min(Math.max(r-n.prevPanesSize-n.prevReachedMinPanes,s.min),s.max)),l!==null&&(l.size=Math.min(Math.max(100-r-n.nextPanesSize-n.nextReachedMinPanes,l.min),l.max))},doPushOtherPanes(t,e){const n=this.touch.activeSplitter,i=[n,n+1];return e{r>i[0]&&r<=n&&(a.size=a.min,t.prevReachedMinPanes+=a.min)}),t.prevPanesSize=this.sumPrevPanesSize(i[0]),i[0]===void 0)?(t.prevReachedMinPanes=0,this.panes[0].size=this.panes[0].min,this.panes.forEach((a,r)=>{r>0&&r<=n&&(a.size=a.min,t.prevReachedMinPanes+=a.min)}),this.panes[i[1]].size=100-t.prevReachedMinPanes-this.panes[0].min-t.prevPanesSize-t.nextPanesSize,null):e>100-t.nextPanesSize-this.panes[i[1]].min&&(i[1]=this.findNextExpandedPane(n).index,t.nextReachedMinPanes=0,i[1]>n+1&&this.panes.forEach((a,r)=>{r>n&&r{r=n+1&&(a.size=a.min,t.nextReachedMinPanes+=a.min)}),this.panes[i[0]].size=100-t.prevPanesSize-t.nextReachedMinPanes-this.panes[this.panesCount-1].min-t.nextPanesSize,null):{sums:t,panesToResize:i}},sumPrevPanesSize(t){return this.panes.reduce((e,n,i)=>e+(ie+(i>t+1?n.size:0),0)},findPrevExpandedPane(t){return[...this.panes].reverse().find(e=>e.indexe.min)||{}},findNextExpandedPane(t){return this.panes.find(e=>e.index>t+1&&e.size>e.min)||{}},checkSplitpanesNodes(){Array.from(this.container.children).forEach(t=>{const e=t.classList.contains("splitpanes__pane"),n=t.classList.contains("splitpanes__splitter");if(!e&&!n){t.parentNode.removeChild(t),console.warn("Splitpanes: Only elements are allowed at the root of . One of your DOM nodes was removed.");return}})},addSplitter(t,e,n=!1){const i=t-1,a=document.createElement("div");a.classList.add("splitpanes__splitter"),n||(a.onmousedown=r=>this.onMouseDown(r,i),typeof window<"u"&&"ontouchstart"in window&&(a.ontouchstart=r=>this.onMouseDown(r,i)),a.onclick=r=>this.onSplitterClick(r,i+1)),this.dblClickSplitter&&(a.ondblclick=r=>this.onSplitterDblClick(r,i+1)),e.parentNode.insertBefore(a,e)},removeSplitter(t){t.onmousedown=void 0,t.onclick=void 0,t.ondblclick=void 0,t.parentNode.removeChild(t)},redoSplitters(){const t=Array.from(this.container.children);t.forEach(n=>{n.className.includes("splitpanes__splitter")&&this.removeSplitter(n)});let e=0;t.forEach(n=>{n.className.includes("splitpanes__pane")&&(!e&&this.firstSplitter?this.addSplitter(e,n,!0):e&&this.addSplitter(e,n),e++)})},requestUpdate(t){var e=t,{target:n}=e,i=Xi(e,["target"]);const a=this.indexedPanes[n._uid];Object.entries(i).forEach(([r,o])=>a[r]=o)},onPaneAdd(t){let e=-1;Array.from(t.$el.parentNode.children).some(a=>(a.className.includes("splitpanes__pane")&&e++,a===t.$el));const n=parseFloat(t.minSize),i=parseFloat(t.maxSize);this.panes.splice(e,0,{id:t._uid,index:e,min:isNaN(n)?0:n,max:isNaN(i)?100:i,size:t.size===null?null:parseFloat(t.size),givenSize:t.size,update:t.update}),this.panes.forEach((a,r)=>a.index=r),this.ready&&this.$nextTick(()=>{this.redoSplitters(),this.resetPaneSizes({addedPane:this.panes[e]}),this.$emit("pane-add",{index:e,panes:this.panes.map(a=>({min:a.min,max:a.max,size:a.size}))})})},onPaneRemove(t){const e=this.panes.findIndex(i=>i.id===t._uid),n=this.panes.splice(e,1)[0];this.panes.forEach((i,a)=>i.index=a),this.$nextTick(()=>{this.redoSplitters(),this.resetPaneSizes({removedPane:Gi(Wi({},n),{index:e})}),this.$emit("pane-remove",{removed:n,panes:this.panes.map(i=>({min:i.min,max:i.max,size:i.size}))})})},resetPaneSizes(t={}){!t.addedPane&&!t.removedPane?this.initialPanesSizing():this.panes.some(e=>e.givenSize!==null||e.min||e.max<100)?this.equalizeAfterAddOrRemove(t):this.equalize(),this.ready&&this.$emit("resized",this.panes.map(e=>({min:e.min,max:e.max,size:e.size})))},equalize(){const t=100/this.panesCount;let e=0,n=[],i=[];this.panes.forEach(a=>{a.size=Math.max(Math.min(t,a.max),a.min),e-=a.size,a.size>=a.max&&n.push(a.id),a.size<=a.min&&i.push(a.id)}),e>.1&&this.readjustSizes(e,n,i)},initialPanesSizing(){100/this.panesCount;let t=100,e=[],n=[],i=0;this.panes.forEach(r=>{t-=r.size,r.size!==null&&i++,r.size>=r.max&&e.push(r.id),r.size<=r.min&&n.push(r.id)});let a=100;t>.1&&(this.panes.forEach(r=>{r.size===null&&(r.size=Math.max(Math.min(t/(this.panesCount-i),r.max),r.min)),a-=r.size}),a>.1&&this.readjustSizes(t,e,n))},equalizeAfterAddOrRemove({addedPane:t,removedPane:e}={}){let n=100/this.panesCount,i=0,a=[],r=[];t&&t.givenSize!==null&&(n=(100-t.givenSize)/(this.panesCount-1)),this.panes.forEach(o=>{i-=o.size,o.size>=o.max&&a.push(o.id),o.size<=o.min&&r.push(o.id)}),!(Math.abs(i)<.1)&&(this.panes.forEach(o=>{t&&t.givenSize!==null&&t.id===o.id||(o.size=Math.max(Math.min(n,o.max),o.min)),i-=o.size,o.size>=o.max&&a.push(o.id),o.size<=o.min&&r.push(o.id)}),i>.1&&this.readjustSizes(i,a,r))},readjustSizes(t,e,n){let i;t>0?i=t/(this.panesCount-e.length):i=t/(this.panesCount-n.length),this.panes.forEach((a,r)=>{if(t>0&&!e.includes(a.id)){const o=Math.max(Math.min(a.size+i,a.max),a.min),s=o-a.size;t-=s,a.size=o}else if(!n.includes(a.id)){const o=Math.max(Math.min(a.size+i,a.max),a.min),s=o-a.size;t-=s,a.size=o}a.update({[this.horizontal?"height":"width"]:"".concat(this.indexedPanes[a.id].size,"%")})}),Math.abs(t)>.1&&this.$nextTick(()=>{this.ready&&console.warn("Splitpanes: Could not resize panes correctly due to their constraints.")})}},watch:{panes:{deep:!0,immediate:!1,handler(){this.updatePaneComponents()}},horizontal(){this.updatePaneComponents()},firstSplitter(){this.redoSplitters()},dblClickSplitter(t){[...this.container.querySelectorAll(".splitpanes__splitter")].forEach((e,n)=>{e.ondblclick=t?i=>this.onSplitterDblClick(i,n):void 0})}},beforeDestroy(){this.ready=!1},mounted(){this.container=this.$refs.container,this.checkSplitpanesNodes(),this.redoSplitters(),this.resetPaneSizes(),this.$emit("ready"),this.ready=!0},render(t){return t("div",{ref:"container",class:["splitpanes","splitpanes--".concat(this.horizontal?"horizontal":"vertical"),{"splitpanes--dragging":this.touch.dragging}]},this.$slots.default)}};let Qi,Ji;const ne={};var ta=Ie(Yi,Qi,Ji,!1,ea,null,null,null);function ea(t){for(let e in ne)this[e]=ne[e]}var na=function(){return ta.exports}(),ia=function(){var t=this,e=t.$createElement,n=t._self._c||e;return n("div",{staticClass:"splitpanes__pane",style:t.style,on:{click:function(i){return t.onPaneClick(i,t._uid)}}},[t._t("default")],2)},aa=[];const ra={name:"pane",inject:["requestUpdate","onPaneAdd","onPaneRemove","onPaneClick"],props:{size:{type:[Number,String],default:null},minSize:{type:[Number,String],default:0},maxSize:{type:[Number,String],default:100}},data:()=>({style:{}}),mounted(){this.onPaneAdd(this)},beforeDestroy(){this.onPaneRemove(this)},methods:{update(t){this.style=t}},computed:{sizeNumber(){return this.size||this.size===0?parseFloat(this.size):null},minSizeNumber(){return parseFloat(this.minSize)},maxSizeNumber(){return parseFloat(this.maxSize)}},watch:{sizeNumber(t){this.requestUpdate({target:this,size:t})},minSizeNumber(t){this.requestUpdate({target:this,min:t})},maxSizeNumber(t){this.requestUpdate({target:this,max:t})}}},ie={};var oa=Ie(ra,ia,aa,!1,sa,null,null,null);function sa(t){for(let e in ie)this[e]=ie[e]}var la=function(){return oa.exports}();T(sn);const ca={name:"NcAppDetailsToggle",directives:{tooltip:cn},components:{NcButton:q,ArrowRight:ue},setup(){return{isMobile:G()}},computed:{title(){return N("Go back to the list")}},watch:{isMobile:{immediate:!0,handler(){this.toggleAppNavigationButton(this.isMobile)}}},beforeDestroy(){this.isMobile&&this.toggleAppNavigationButton(!1)},methods:{toggleAppNavigationButton(t=!0){const e=document.querySelector(".app-navigation .app-navigation-toggle");e&&(e.style.display=t?"none":null,t===!0&&O("toggle-navigation",{open:!1}))}}};var ua=function(){var t=this,e=t._self._c;return e("NcButton",{directives:[{name:"tooltip",rawName:"v-tooltip",value:t.title,expression:"title"}],staticClass:"app-details-toggle",class:{"app-details-toggle--mobile":t.isMobile},attrs:{type:"tertiary","aria-label":t.title},scopedSlots:t._u([{key:"icon",fn:function(){return[e("ArrowRight",{attrs:{size:20}})]},proxy:!0}])})},pa=[],ha=S(ca,ua,pa,!1,null,"7e250fb8",null,null);const da=ha.exports,ae=Xe("nextcloud").persist().build(),fa={name:"NcAppContent",components:{NcAppDetailsToggle:da,Pane:la,Splitpanes:na},props:{allowSwipeNavigation:{type:Boolean,default:!0},listSize:{type:Number,default:20},listMinWidth:{type:Number,default:15},listMaxWidth:{type:Number,default:40},paneConfigKey:{type:String,default:""},showDetails:{type:Boolean,default:!0},pageHeading:{type:String,default:null},layout:{type:String,default:"vertical-split",validator(t){return["no-split","vertical-split","horizontal-split"].includes(t)}}},emits:["update:showDetails","resize:list"],setup(){return{isMobile:G()}},data(){return{contentHeight:0,hasList:!1,hasContent:!1,swiping:{},listPaneSize:this.restorePaneConfig()}},computed:{paneConfigID(){if(this.paneConfigKey!=="")return"pane-list-size-".concat(this.paneConfigKey);try{return"pane-list-size-".concat(st)}catch{return console.info("[INFO] AppContent:","falling back to global nextcloud pane config"),"pane-list-size-nextcloud"}},detailsPaneSize(){return this.listPaneSize?100-this.listPaneSize:this.paneDefaults.details.size},paneDefaults(){return{list:{size:this.listSize,min:this.listMinWidth,max:this.listMaxWidth},details:{size:100-this.listSize,min:100-this.listMaxWidth,max:100-this.listMinWidth}}}},updated(){this.checkSlots()},mounted(){this.allowSwipeNavigation&&(this.swiping=ln(this.$el,{onSwipeEnd:this.handleSwipe})),this.checkSlots(),this.restorePaneConfig()},methods:{handleSwipe(t,e){Math.abs(this.swiping.lengthX)>70&&(this.swiping.coordsStart.x<300/2&&e==="right"?O("toggle-navigation",{open:!0}):this.swiping.coordsStart.x<300*1.5&&e==="left"&&O("toggle-navigation",{open:!1}))},handlePaneResize(t){const e=parseInt(t[0].size,10);ae.setItem(this.paneConfigID,JSON.stringify(e)),this.listPaneSize=e,this.$emit("resize:list",{size:e}),console.debug("AppContent pane config",e)},checkSlots(){this.hasList=!!this.$scopedSlots.list,this.hasContent=!!this.$scopedSlots.default},restorePaneConfig(){const t=parseInt(ae.getItem(this.paneConfigID),10);if(!isNaN(t)&&t!==this.listPaneSize)return console.debug("AppContent pane config",t),this.listPaneSize=t,t},hideDetails(){this.$emit("update:showDetails",!1)}}};var va=function(){var t=this,e=t._self._c;return e("main",{staticClass:"app-content no-snapper",class:{"app-content--has-list":t.hasList},attrs:{id:"app-content-vue"}},[t.pageHeading?e("h1",{staticClass:"hidden-visually"},[t._v(" "+t._s(t.pageHeading)+" ")]):t._e(),t.hasList?[t.isMobile||t.layout==="no-split"?e("div",{staticClass:"app-content-wrapper app-content-wrapper--no-split",class:{"app-content-wrapper--show-details":t.showDetails,"app-content-wrapper--show-list":!t.showDetails,"app-content-wrapper--mobile":t.isMobile}},[t.showDetails?e("NcAppDetailsToggle",{nativeOn:{click:function(n){return n.stopPropagation(),n.preventDefault(),t.hideDetails.apply(null,arguments)}}}):t._e(),t.showDetails?t._t("default"):t._t("list")],2):t.layout==="vertical-split"||t.layout==="horizontal-split"?e("div",{staticClass:"app-content-wrapper"},[e("Splitpanes",{staticClass:"default-theme",class:{"splitpanes--horizontal":t.layout==="horizontal-split","splitpanes--vertical":t.layout==="vertical-split"},attrs:{horizontal:t.layout==="horizontal-split"},on:{resized:t.handlePaneResize}},[e("Pane",{staticClass:"splitpanes__pane-list",attrs:{size:t.listPaneSize||t.paneDefaults.list.size,"min-size":t.paneDefaults.list.min,"max-size":t.paneDefaults.list.max}},[t._t("list")],2),e("Pane",{staticClass:"splitpanes__pane-details",attrs:{size:t.detailsPaneSize,"min-size":t.paneDefaults.details.min,"max-size":t.paneDefaults.details.max}},[t._t("default")],2)],1)],1):t._e()]:t._e(),t.hasList?t._e():t._t("default")],2)},ma=[],ga=S(fa,va,ma,!1,null,"a284c47e",null,null);const ya=ga.exports;var Ct=Symbol(),K=Symbol(),re=Symbol(),oe=Symbol(),Tt=function(t){return"frag"in t},Ca={get:function(){return this[K]||this.parentElement},configurable:!0},W=function(t,e){K in t||(t[K]=e,Object.defineProperty(t,"parentNode",Ca))},ba={get:function(){var t=this.parentNode.childNodes,e=t.indexOf(this);return e>-1&&t[e+1]||null}},ot=function(t){re in t||(t[re]=!0,Object.defineProperty(t,"nextSibling",ba))},_a=function(t,e){for(;t.parentNode!==e;){var n=t,i=n.parentNode;i&&(t=i)}return t},wt,Ve=function(t){if(!wt){var e=Object.getOwnPropertyDescriptor(Node.prototype,"childNodes");wt=e.get}var n=wt.apply(t),i=Array.from(n).map(function(a){return _a(a,t)});return i.filter(function(a,r){return a!==i[r-1]})},xa={get:function(){return this.frag||Ve(this)}},wa={get:function(){return this.childNodes[0]||null}};function Sa(){return this.childNodes.length>0}var se=function(t){oe in t||(t[oe]=!0,Object.defineProperties(t,{childNodes:xa,firstChild:wa}),t.hasChildNodes=Sa)};function ka(){var t;(t=this.frag[0]).before.apply(t,arguments)}function za(){var t=this.frag,e=t.splice(0,t.length);e.forEach(function(n){n.remove()})}var Na=function t(e){var n;return(n=Array.prototype).concat.apply(n,e.map(function(i){return Tt(i)?t(i.frag):i}))},Ea=function(t,e){var n=t[Ct];e.before(n),W(n,t),t.frag.unshift(n)};function le(t){if(Tt(this)){var e=this.frag.indexOf(t);if(e>-1){var n=this.frag.splice(e,1),i=n[0];this.frag.length===0&&Ea(this,i),t.remove()}}else{var a=Ve(this),r=a.indexOf(t);r>-1&&t.remove()}return t}function ce(t,e){var n=this,i=t.frag||[t];if(Tt(this)){if(t[K]===this&&t.parentElement)return t;var a=this.frag;if(e){var r=a.indexOf(e);r>-1&&(a.splice.apply(a,[r,0].concat(i)),e.before.apply(e,i))}else{var o=a[a.length-1];a.push.apply(a,i),o.after.apply(o,i)}je(this)}else e?this.childNodes.includes(e)&&e.before.apply(e,i):this.append.apply(this,i);i.forEach(function(l){W(l,n)});var s=i[i.length-1];return ot(s),t}function Aa(t){if(t[K]===this&&t.parentElement)return t;var e=this.frag,n=e[e.length-1];return n.after(t),W(t,this),je(this),e.push(t),t}var je=function(t){var e=t[Ct];t.frag[0]===e&&(t.frag.shift(),e.remove())},Pa={set:function(t){var e=this;if(this.frag[0]!==this[Ct]&&this.frag.slice().forEach(function(i){return e.removeChild(i)}),t){var n=document.createElement("div");n.innerHTML=t,Array.from(n.childNodes).forEach(function(i){e.appendChild(i)})}},get:function(){return""}},Ma={inserted:function(t){var e=t.parentNode,n=t.nextSibling,i=t.previousSibling,a=Array.from(t.childNodes),r=document.createComment("");a.length===0&&a.push(r),t.frag=a,t[Ct]=r;var o=document.createDocumentFragment();o.append.apply(o,Na(a)),t.replaceWith(o),a.forEach(function(s){W(s,t),ot(s)}),se(t),Object.assign(t,{remove:za,appendChild:Aa,insertBefore:ce,removeChild:le,before:ka}),Object.defineProperty(t,"innerHTML",Pa),e&&(Object.assign(e,{removeChild:le,insertBefore:ce}),W(t,e),se(e)),n&&ot(t),i&&ot(i)},unbind:function(t){t.remove()}},La={name:"Fragment",directives:{frag:Ma},render:function(t){return t("div",{directives:[{name:"frag"}]},this.$slots.default)}};const Da=mt({__name:"ActivityGroup",props:{activities:null},setup(t){const e=t,n=Z(()=>{const a=U(),r=U().subtract(1,"day"),o=U(e.activities[0].datetime);return o.isSame(a,"day")?A("activity","Today"):o.isSame(r,"day")?A("activity","Yesterday"):o.format("LL")}),i=Z(()=>{const a=U(e.activities[0].datetime).format("LL");return a!==n.value?a:void 0});return{__sfc:!0,props:e,dateText:n,fullDate:i,Activity:Ye,Fragment:La}}});var $a=function(){var t=this,e=t._self._c,n=t._self._setupProxy;return e(n.Fragment,[e("h2",{staticClass:"activity-group__heading",attrs:{title:n.fullDate}},[t._v(" "+t._s(n.dateText)+" ")]),e("ul",t._l(t.activities,function(i){return e(n.Activity,{key:i.id,attrs:{activity:i,"show-previews":!0}})}),1)])},Ra=[],Oa=X(Da,$a,Ra,!1,null,"c16e5a63",null,null);const Ta=Oa.exports,Ba='';function Ia(){var t=He().proxy.$root;if(!t._$route){var e=qe(!0).run(function(){return Ue(Object.assign({},t.$router.currentRoute))});t._$route=e,t.$router.afterEach(function(n){Object.assign(e,n)})}return t._$route}const Va=mt({__name:"ActivityAppFeed",props:{filter:{default:"all"}},setup(t){const e=t,n=kt(st,"navigationList"),i=Ia(),a=V(!1),r=V(!0),o=V([]),s=V(),l=V();un(l,async()=>{r.value&&await v()},{distance:100});const u=Z(()=>{const p={};for(const h of o.value){const c=U(h.datetime).format("LL");p[c]===void 0?p[c]=[h]:p[c].push(h)}return p}),m=Z(()=>n.find(p=>p.id===i.params.filter).name);async function v(){var p,h;if(!a.value)try{const c=(p=s.value)!=null?p:"0";a.value=!0;const f=await de.get(pn("apps/activity/api/v2/activity/{filter}?format=json&previews=true&since={since}",{filter:e.filter,since:c}));o.value.push(...f.data.ocs.data.map(d=>new Je(d))),s.value=f.headers["x-activity-last-given"],r.value=!0}catch(c){if(hn.isAxiosError(c)&&((h=c.response)==null?void 0:h.status)===304){r.value=!1;return}St.error(c),ve(A("activity","Could not load activities"))}finally{a.value=!1}}return Fe(()=>{v()}),Ze(e,()=>{o.value=[],s.value=void 0,v()}),{__sfc:!0,navigationList:n,route:i,props:e,loading:a,hasMoreActivites:r,allActivities:o,lastActivityLoaded:s,container:l,groupedActivities:u,headingTitle:m,loadActivities:v,NcAppContent:ya,NcIconSvgWrapper:pe,NcEmptyContent:Qe,NcLoadingIcon:he,ActivityGroup:Ta,appIconSVG:Ba,t:A}}});var ja=function(){var t=this,e=t._self._c,n=t._self._setupProxy;return e(n.NcAppContent,{staticClass:"activity-app"},[e("h1",{staticClass:"activity-app__heading"},[t._v(" "+t._s(n.headingTitle)+" ")]),n.hasMoreActivites&&n.allActivities.length===0?e(n.NcEmptyContent,{staticClass:"activity-app__empty-content",attrs:{name:n.t("activity","Loading activities"),description:n.t("activity","This stream will show events like additions, changes & shares")},scopedSlots:t._u([{key:"icon",fn:function(){return[e(n.NcLoadingIcon,{attrs:{size:36}})]},proxy:!0}],null,!1,3043861167)}):n.allActivities.length===0?e(n.NcEmptyContent,{staticClass:"activity-app__empty-content",attrs:{name:n.t("activity","No activity yet"),description:n.t("activity","This stream will show events like additions, changes & shares")},scopedSlots:t._u([{key:"icon",fn:function(){return[e(n.NcIconSvgWrapper,{attrs:{svg:n.appIconSVG,size:36}})]},proxy:!0}])}):t._e(),e("div",{ref:"container",staticClass:"activity-app__container"},[t._l(n.groupedActivities,function(i,a){return e(n.ActivityGroup,{key:a,attrs:{activities:i}})}),n.hasMoreActivites&&n.allActivities.length>0?e(n.NcLoadingIcon,{staticClass:"activity-app__loading-indicator",attrs:{name:n.t("activity","Loading more activities"),size:64}}):!n.hasMoreActivites&&n.allActivities.length>0?e("div",{staticClass:"activity-app__loading-indicator"},[t._v(" "+t._s(n.t("activity","No more activities."))+" ")]):t._e()],2)],1)},Ha=[],qa=X(Va,ja,Ha,!1,null,"499b54a9",null,null);const Ua=qa.exports;T(dn);const Fa={name:"MenuIcon",emits:["click"],props:{title:{type:String},fillColor:{type:String,default:"currentColor"},size:{type:Number,default:24}}};var Za=function(){var t=this,e=t._self._c;return e("span",t._b({staticClass:"material-design-icon menu-icon",attrs:{"aria-hidden":t.title?null:!0,"aria-label":t.title,role:"img"},on:{click:function(n){return t.$emit("click",n)}}},"span",t.$attrs,!1),[e("svg",{staticClass:"material-design-icon__svg",attrs:{fill:t.fillColor,width:t.size,height:t.size,viewBox:"0 0 24 24"}},[e("path",{attrs:{d:"M3,6H21V8H3V6M3,11H21V13H3V11M3,16H21V18H3V16Z"}},[t.title?e("title",[t._v(t._s(t.title))]):t._e()])])])},Ka=[],Wa=S(Fa,Za,Ka,!1,null,null,null,null);const Ga=Wa.exports,Xa={name:"MenuOpenIcon",emits:["click"],props:{title:{type:String},fillColor:{type:String,default:"currentColor"},size:{type:Number,default:24}}};var Ya=function(){var t=this,e=t._self._c;return e("span",t._b({staticClass:"material-design-icon menu-open-icon",attrs:{"aria-hidden":t.title?null:!0,"aria-label":t.title,role:"img"},on:{click:function(n){return t.$emit("click",n)}}},"span",t.$attrs,!1),[e("svg",{staticClass:"material-design-icon__svg",attrs:{fill:t.fillColor,width:t.size,height:t.size,viewBox:"0 0 24 24"}},[e("path",{attrs:{d:"M21,15.61L19.59,17L14.58,12L19.59,7L21,8.39L17.44,12L21,15.61M3,6H16V8H3V6M3,13V11H13V13H3M3,18V16H16V18H3Z"}},[t.title?e("title",[t._v(t._s(t.title))]):t._e()])])])},Qa=[],Ja=S(Xa,Ya,Qa,!1,null,null,null,null);const tr=Ja.exports,er={name:"NcAppNavigationToggle",components:{NcButton:q,MenuIcon:Ga,MenuOpenIcon:tr},props:{open:{type:Boolean,required:!0}},emits:["update:open"],computed:{label(){return this.open?N("Close navigation"):N("Open navigation")}},methods:{toggleNavigation(){this.$emit("update:open",!this.open)}}};var nr=function(){var t=this,e=t._self._c;return e("div",{staticClass:"app-navigation-toggle-wrapper"},[e("NcButton",{staticClass:"app-navigation-toggle",attrs:{type:"tertiary","aria-expanded":t.open?"true":"false","aria-label":t.label,title:t.label,"aria-controls":"app-navigation-vue"},on:{click:t.toggleNavigation},scopedSlots:t._u([{key:"icon",fn:function(){return[t.open?e("MenuOpenIcon",{attrs:{size:20}}):e("MenuIcon",{attrs:{size:20}})]},proxy:!0}])})],1)},ir=[],ar=S(er,nr,ir,!1,null,"e1dc2b3e",null,null);const rr=ar.exports,or={name:"NcAppNavigationList"};var sr=function(){var t=this,e=t._self._c;return e("ul",{staticClass:"app-navigation-list"},[t._t("default")],2)},lr=[],cr=S(or,sr,lr,!1,null,"ac3baea0",null,null);const ur=cr.exports,pr={name:"NcAppNavigation",components:{NcAppNavigationList:ur,NcAppNavigationToggle:rr},inject:{setHasAppNavigation:{default:()=>()=>P.util.warn("NcAppNavigation is not mounted inside NcContent, this is probably an error."),from:"NcContent:setHasAppNavigation"}},props:{ariaLabel:{type:String,default:""},ariaLabelledby:{type:String,default:""}},setup(){return{isMobile:G()}},data(){return{open:!this.isMobile,focusTrap:null}},watch:{isMobile(){this.open=!this.isMobile,this.toggleFocusTrap()},open(){this.toggleFocusTrap()}},mounted(){this.setHasAppNavigation(!0),We("toggle-navigation",this.toggleNavigationByEventBus),O("navigation-toggled",{open:this.open}),this.focusTrap=fn(this.$refs.appNavigationContainer,{allowOutsideClick:!0,fallbackFocus:this.$refs.appNavigationContainer,trapStack:vn(),escapeDeactivates:!1}),this.toggleFocusTrap()},unmounted(){this.setHasAppNavigation(!1),Ge("toggle-navigation",this.toggleNavigationByEventBus),this.focusTrap.deactivate()},methods:{toggleNavigation(t){if(this.open===t){O("navigation-toggled",{open:this.open});return}this.open=typeof t>"u"?!this.open:t;const e=getComputedStyle(document.body),n=parseInt(e.getPropertyValue("--animation-quick"))||100;setTimeout(()=>{O("navigation-toggled",{open:this.open})},1.5*n)},toggleNavigationByEventBus({open:t}){this.toggleNavigation(t)},toggleFocusTrap(){this.isMobile&&this.open?this.focusTrap.activate():this.focusTrap.deactivate()},handleEsc(){this.isMobile&&this.toggleNavigation(!1)}}};var hr=function(){var t=this,e=t._self._c;return e("div",{ref:"appNavigationContainer",staticClass:"app-navigation",class:{"app-navigation--close":!t.open}},[e("nav",{staticClass:"app-navigation__content",attrs:{id:"app-navigation-vue","aria-hidden":t.open?"false":"true","aria-label":t.ariaLabel||void 0,"aria-labelledby":t.ariaLabelledby||void 0,inert:!t.open||void 0},on:{keydown:function(n){return!n.type.indexOf("key")&&t._k(n.keyCode,"esc",27,n.key,["Esc","Escape"])?null:t.handleEsc.apply(null,arguments)}}},[e("div",{staticClass:"app-navigation__body",class:{"app-navigation__body--no-list":!t.$scopedSlots.list}},[t._t("default")],2),t.$scopedSlots.list?e("NcAppNavigationList",{staticClass:"app-navigation__list"},[t._t("list")],2):t._e(),t._t("footer")],2),e("NcAppNavigationToggle",{attrs:{open:t.open},on:{"update:open":t.toggleNavigation}})],1)},dr=[],fr=S(pr,hr,dr,!1,null,"42389274",null,null);const vr=fr.exports,mr={name:"NcActionButton",components:{CheckIcon:tn,ChevronRightIcon:mn},mixins:[en],inject:{isInSemanticMenu:{from:"NcActions:isSemanticMenu",default:!1}},props:{ariaHidden:{type:Boolean,default:null},disabled:{type:Boolean,default:!1},isMenu:{type:Boolean,default:!1},type:{type:String,default:"button",validator:t=>["button","checkbox","radio","reset","submit"].includes(t)},modelValue:{type:[Boolean,String],default:null},value:{type:String,default:null}},computed:{isFocusable(){return!this.disabled},isChecked(){return this.type==="radio"&&typeof this.modelValue!="boolean"?this.modelValue===this.value:this.modelValue},nativeType(){return this.type==="submit"||this.type==="reset"?this.type:"button"},buttonAttributes(){const t={};return this.isInSemanticMenu?(t.role="menuitem",this.type==="radio"?(t.role="menuitemradio",t["aria-checked"]=this.isChecked?"true":"false"):(this.type==="checkbox"||this.nativeType==="button"&&this.modelValue!==null)&&(t.role="menuitemcheckbox",t["aria-checked"]=this.modelValue===null?"mixed":this.modelValue?"true":"false")):this.modelValue!==null&&this.nativeType==="button"&&(t["aria-pressed"]=this.modelValue?"true":"false"),t}},methods:{handleClick(t){this.onClick(t),(this.modelValue!==null||this.type!=="button")&&(this.type==="radio"?typeof this.modelValue!="boolean"?this.isChecked||this.$emit("update:modelValue",this.value):this.$emit("update:modelValue",!this.isChecked):this.$emit("update:modelValue",!this.isChecked))}}};var gr=function(){var t=this,e=t._self._c;return e("li",{staticClass:"action",class:{"action--disabled":t.disabled},attrs:{role:t.isInSemanticMenu&&"presentation"}},[e("button",t._b({class:["action-button button-vue",{"action-button--active":t.isChecked,focusable:t.isFocusable}],attrs:{"aria-label":t.ariaLabel,disabled:t.disabled,title:t.title,type:t.nativeType},on:{click:t.handleClick}},"button",t.buttonAttributes,!1),[t._t("icon",function(){return[e("span",{staticClass:"action-button__icon",class:[t.isIconUrl?"action-button__icon--url":t.icon],style:{backgroundImage:t.isIconUrl?"url(".concat(t.icon,")"):null},attrs:{"aria-hidden":"true"}})]}),t.name?e("span",{staticClass:"action-button__longtext-wrapper"},[e("strong",{staticClass:"action-button__name"},[t._v(" "+t._s(t.name)+" ")]),e("br"),e("span",{staticClass:"action-button__longtext",domProps:{textContent:t._s(t.text)}})]):t.isLongText?e("span",{staticClass:"action-button__longtext",domProps:{textContent:t._s(t.text)}}):e("span",{staticClass:"action-button__text"},[t._v(t._s(t.text))]),t.isMenu?e("ChevronRightIcon",{staticClass:"action-button__menu-icon",attrs:{size:20}}):t.isChecked===!0?e("CheckIcon",{staticClass:"action-button__pressed-icon",attrs:{size:20}}):t.isChecked===!1?e("span",{staticClass:"action-button__pressed-icon material-design-icon"}):t._e(),t._e()],2)])},yr=[],Cr=S(mr,gr,yr,!1,null,"51d9ee64",null,null);const br=Cr.exports,_r={name:"NcVNodes",props:{vnodes:{type:[Array,Object],default:null}},render(t){var e,n,i;return this.vnodes||((e=this.$slots)==null?void 0:e.default)||((i=(n=this.$scopedSlots)==null?void 0:n.default)==null?void 0:i.call(n))}},xr=null,wr=null;var Sr=S(_r,xr,wr,!1,null,null,null,null);const kr=Sr.exports,zr={name:"ChevronUpIcon",emits:["click"],props:{title:{type:String},fillColor:{type:String,default:"currentColor"},size:{type:Number,default:24}}};var Nr=function(){var t=this,e=t._self._c;return e("span",t._b({staticClass:"material-design-icon chevron-up-icon",attrs:{"aria-hidden":t.title?null:!0,"aria-label":t.title,role:"img"},on:{click:function(n){return t.$emit("click",n)}}},"span",t.$attrs,!1),[e("svg",{staticClass:"material-design-icon__svg",attrs:{fill:t.fillColor,width:t.size,height:t.size,viewBox:"0 0 24 24"}},[e("path",{attrs:{d:"M7.41,15.41L12,10.83L16.59,15.41L18,14L12,8L6,14L7.41,15.41Z"}},[t.title?e("title",[t._v(t._s(t.title))]):t._e()])])])},Er=[],Ar=S(zr,Nr,Er,!1,null,null,null,null);const Pr=Ar.exports;T(gn);const Mr={name:"NcInputConfirmCancel",components:{NcButton:q,ArrowRight:ue,Close:yn},props:{primary:{default:!1,type:Boolean},placeholder:{default:"",type:String},value:{default:"",type:String}},emits:["input","confirm","cancel"],data(){return{labelConfirm:N("Confirm changes"),labelCancel:N("Cancel changes")}},computed:{valueModel:{get(){return this.value},set(t){this.$emit("input",t)}}},methods:{confirm(){this.$emit("confirm")},cancel(){this.$emit("cancel")},focusInput(){this.$refs.input.focus()}}};var Lr=function(){var t=this,e=t._self._c;return e("div",{staticClass:"app-navigation-input-confirm"},[e("form",{on:{submit:function(n){return n.preventDefault(),t.confirm.apply(null,arguments)},keydown:function(n){return!n.type.indexOf("key")&&t._k(n.keyCode,"esc",27,n.key,["Esc","Escape"])||n.ctrlKey||n.shiftKey||n.altKey||n.metaKey?null:(n.stopPropagation(),n.preventDefault(),t.cancel.apply(null,arguments))},click:function(n){n.stopPropagation(),n.preventDefault()}}},[e("input",{directives:[{name:"model",rawName:"v-model",value:t.valueModel,expression:"valueModel"}],ref:"input",staticClass:"app-navigation-input-confirm__input",attrs:{type:"text",placeholder:t.placeholder},domProps:{value:t.valueModel},on:{input:function(n){n.target.composing||(t.valueModel=n.target.value)}}}),e("NcButton",{attrs:{"native-type":"submit",type:"primary","aria-label":t.labelConfirm},on:{click:function(n){return n.stopPropagation(),n.preventDefault(),t.confirm.apply(null,arguments)}},scopedSlots:t._u([{key:"icon",fn:function(){return[e("ArrowRight",{attrs:{size:20}})]},proxy:!0}])}),e("NcButton",{attrs:{"native-type":"reset",type:t.primary?"primary":"tertiary","aria-label":t.labelCancel},on:{click:function(n){return n.stopPropagation(),n.preventDefault(),t.cancel.apply(null,arguments)}},scopedSlots:t._u([{key:"icon",fn:function(){return[e("Close",{attrs:{size:20}})]},proxy:!0}])})],1)])},Dr=[],$r=S(Mr,Lr,Dr,!1,null,"dcf0becf",null,null);const Rr=$r.exports;T(Cn);const Or={name:"NcAppNavigationIconCollapsible",components:{NcButton:q,ChevronDown:nn,ChevronUp:Pr},props:{open:{type:Boolean,default:!0}},emits:["click"],computed:{labelButton(){return this.open?N("Collapse menu"):N("Open menu")}},methods:{onClick(t){this.$emit("click",t)}}};var Tr=function(){var t=this,e=t._self._c;return e("NcButton",{staticClass:"icon-collapse",class:{"icon-collapse--open":t.open},attrs:{type:"tertiary","aria-label":t.labelButton},on:{click:t.onClick},scopedSlots:t._u([{key:"icon",fn:function(){return[t.open?e("ChevronUp",{attrs:{size:20}}):e("ChevronDown",{attrs:{size:20}})]},proxy:!0}])})},Br=[],Ir=S(Or,Tr,Br,!1,null,"07582bf6",null,null);const Vr=Ir.exports;T(_n,bn);const jr={name:"PencilIcon",emits:["click"],props:{title:{type:String},fillColor:{type:String,default:"currentColor"},size:{type:Number,default:24}}};var Hr=function(){var t=this,e=t._self._c;return e("span",t._b({staticClass:"material-design-icon pencil-icon",attrs:{"aria-hidden":t.title?null:!0,"aria-label":t.title,role:"img"},on:{click:function(n){return t.$emit("click",n)}}},"span",t.$attrs,!1),[e("svg",{staticClass:"material-design-icon__svg",attrs:{fill:t.fillColor,width:t.size,height:t.size,viewBox:"0 0 24 24"}},[e("path",{attrs:{d:"M20.71,7.04C21.1,6.65 21.1,6 20.71,5.63L18.37,3.29C18,2.9 17.35,2.9 16.96,3.29L15.12,5.12L18.87,8.87M3,17.25V21H6.75L17.81,9.93L14.06,6.18L3,17.25Z"}},[t.title?e("title",[t._v(t._s(t.title))]):t._e()])])])},qr=[],Ur=S(jr,Hr,qr,!1,null,null,null,null);const Fr=Ur.exports,Zr={name:"UndoIcon",emits:["click"],props:{title:{type:String},fillColor:{type:String,default:"currentColor"},size:{type:Number,default:24}}};var Kr=function(){var t=this,e=t._self._c;return e("span",t._b({staticClass:"material-design-icon undo-icon",attrs:{"aria-hidden":t.title?null:!0,"aria-label":t.title,role:"img"},on:{click:function(n){return t.$emit("click",n)}}},"span",t.$attrs,!1),[e("svg",{staticClass:"material-design-icon__svg",attrs:{fill:t.fillColor,width:t.size,height:t.size,viewBox:"0 0 24 24"}},[e("path",{attrs:{d:"M12.5,8C9.85,8 7.45,9 5.6,10.6L2,7V16H11L7.38,12.38C8.77,11.22 10.54,10.5 12.5,10.5C16.04,10.5 19.05,12.81 20.1,16L22.47,15.22C21.08,11.03 17.15,8 12.5,8Z"}},[t.title?e("title",[t._v(t._s(t.title))]):t._e()])])])},Wr=[],Gr=S(Zr,Kr,Wr,!1,null,null,null,null);const Xr=Gr.exports,Yr={name:"NcAppNavigationItem",components:{NcActions:xn,NcActionButton:br,NcAppNavigationIconCollapsible:Vr,NcInputConfirmCancel:Rr,NcLoadingIcon:he,NcVNodes:kr,Pencil:Fr,Undo:Xr},props:{active:{type:Boolean,default:!1},name:{type:String,required:!0},title:{type:String,default:null},id:{type:String,default:()=>"app-navigation-item-"+wn(),validator:t=>t.trim()!==""},icon:{type:String,default:""},loading:{type:Boolean,default:!1},to:{type:[String,Object],default:null},href:{type:String,default:null},exact:{type:Boolean,default:!1},allowCollapse:{type:Boolean,default:!1},editable:{type:Boolean,default:!1},editLabel:{type:String,default:""},editPlaceholder:{type:String,default:""},pinned:{type:Boolean,default:!1},undo:{type:Boolean,default:!1},open:{type:Boolean,default:!1},menuOpen:{type:Boolean,default:!1},forceMenu:{type:Boolean,default:!1},menuIcon:{type:String,default:void 0},menuPlacement:{type:String,default:"bottom"},ariaDescription:{type:String,default:null},forceDisplayActions:{type:Boolean,default:!1},inlineActions:{type:Number,default:0}},emits:["update:menuOpen","update:open","update:name","click","undo"],setup(){return{isMobile:G()}},data(){return{editingValue:"",opened:this.open,editingActive:!1,hasChildren:!1,menuOpenLocalValue:!1,focused:!1,collapsible:!1}},computed:{isRouterLink(){return this.to&&!this.href},canHaveChildren(){return this.$parent.$options._componentTag!=="AppNavigationItem"},hasUtils(){return!!(this.$slots.actions||this.$slots.counter||this.editable||this.undo)},editButtonAriaLabel(){return this.editLabel?this.editLabel:N("Edit item")},undoButtonAriaLabel(){return N("Undo changes")},actionsBoundariesElement(){return document.querySelector("#content-vue")||void 0}},watch:{open(t){this.opened=t}},created(){this.updateSlotInfo()},beforeUpdate(){this.updateSlotInfo()},methods:{onMenuToggle(t){this.$emit("update:menuOpen",t),this.menuOpenLocalValue=t},toggleCollapse(){this.opened=!this.opened,this.$emit("update:open",this.opened)},onClick(t,e,n){this.$emit("click",t),!(t.metaKey||t.altKey||t.ctrlKey||t.shiftKey)&&n&&(e==null||e(t),t.preventDefault())},handleEdit(){this.editingValue=this.name,this.editingActive=!0,this.onMenuToggle(!1),this.$nextTick(()=>{this.$refs.editingInput.focusInput()})},cancelEditing(){this.editingActive=!1},handleEditingDone(){this.$emit("update:name",this.editingValue),this.editingValue="",this.editingActive=!1},handleUndo(){this.$emit("undo")},updateSlotInfo(){this.hasChildren=!!this.$slots.default,this.collapsible=this.allowCollapse&&!!this.$slots.default},handleFocus(){this.focused=!0},handleBlur(){this.focused=!1},handleTab(t){this.$refs.actions&&(this.focused?(t.preventDefault(),this.$refs.actions.$refs.menuButton.$el.focus(),this.focused=!1):this.$refs.actions.$refs.menuButton.$el.blur())},isExternal(t){return t&&t.match(/[a-z]+:\/\//i)}}};var Qr=function(){var t=this,e=t._self._c;return e("li",{staticClass:"app-navigation-entry-wrapper",class:{"app-navigation-entry--opened":t.opened,"app-navigation-entry--pinned":t.pinned,"app-navigation-entry--collapsible":t.collapsible},attrs:{id:t.id}},[e(t.isRouterLink?"router-link":"NcVNodes",{tag:"component",attrs:{custom:!!t.isRouterLink,to:t.to,exact:t.isRouterLink?t.exact:null},scopedSlots:t._u([{key:"default",fn:function({href:n,navigate:i,isActive:a}){return[e("div",{staticClass:"app-navigation-entry",class:{"app-navigation-entry--editing":t.editingActive,"app-navigation-entry--deleted":t.undo,active:a&&t.to||t.active}},[t.undo?t._e():e("a",{staticClass:"app-navigation-entry-link",attrs:{"aria-current":t.active||a&&t.to?"page":void 0,"aria-description":t.ariaDescription,"aria-expanded":t.hasChildren?t.opened.toString():void 0,href:t.href||n||"#",target:t.isExternal(t.href)?"_blank":void 0,title:t.title||t.name},on:{blur:t.handleBlur,click:function(r){return t.onClick(r,i,n)},focus:t.handleFocus,keydown:function(r){return!r.type.indexOf("key")&&t._k(r.keyCode,"tab",9,r.key,"Tab")||r.ctrlKey||r.shiftKey||r.altKey||r.metaKey?null:t.handleTab.apply(null,arguments)}}},[e("div",{staticClass:"app-navigation-entry-icon",class:{[t.icon]:t.icon}},[t.loading?e("NcLoadingIcon"):t._t("icon")],2),t.editingActive?t._e():e("span",{staticClass:"app-navigation-entry__name"},[t._v(" "+t._s(t.name)+" ")]),t.editingActive?e("div",{staticClass:"editingContainer"},[e("NcInputConfirmCancel",{ref:"editingInput",attrs:{placeholder:t.editPlaceholder!==""?t.editPlaceholder:t.name,primary:a&&t.to||t.active},on:{cancel:t.cancelEditing,confirm:t.handleEditingDone},model:{value:t.editingValue,callback:function(r){t.editingValue=r},expression:"editingValue"}})],1):t._e()]),t.undo?e("div",{staticClass:"app-navigation-entry__deleted"},[e("div",{staticClass:"app-navigation-entry__deleted-description"},[t._v(" "+t._s(t.name)+" ")])]):t._e(),t.hasUtils&&!t.editingActive?e("div",{staticClass:"app-navigation-entry__utils",class:{"app-navigation-entry__utils--display-actions":t.forceDisplayActions||t.menuOpenLocalValue||t.menuOpen}},[t.$slots.counter?e("div",{staticClass:"app-navigation-entry__counter-wrapper"},[t._t("counter")],2):t._e(),t.$slots.actions||t.editable&&!t.editingActive||t.undo?e("NcActions",{ref:"actions",staticClass:"app-navigation-entry__actions",attrs:{inline:t.inlineActions,container:"#app-navigation-vue","boundaries-element":t.actionsBoundariesElement,placement:t.menuPlacement,open:t.menuOpen,type:a&&t.to||t.active?"primary":null,"force-menu":t.forceMenu,"default-icon":t.menuIcon},on:{"update:open":t.onMenuToggle},scopedSlots:t._u([{key:"icon",fn:function(){return[t._t("menu-icon")]},proxy:!0}],null,!0)},[t.editable&&!t.editingActive?e("NcActionButton",{attrs:{"aria-label":t.editButtonAriaLabel},on:{click:t.handleEdit},scopedSlots:t._u([{key:"icon",fn:function(){return[e("Pencil",{attrs:{size:20}})]},proxy:!0}],null,!0)},[t._v(" "+t._s(t.editLabel)+" ")]):t._e(),t.undo?e("NcActionButton",{attrs:{"aria-label":t.undoButtonAriaLabel},on:{click:t.handleUndo},scopedSlots:t._u([{key:"icon",fn:function(){return[e("Undo",{attrs:{size:20}})]},proxy:!0}],null,!0)}):t._e(),t._t("actions")],2):t._e()],1):t._e(),t.collapsible?e("NcAppNavigationIconCollapsible",{attrs:{open:t.opened},on:{click:function(r){return r.preventDefault(),r.stopPropagation(),t.toggleCollapse.apply(null,arguments)}}}):t._e(),t._t("extra")],2)]}}],null,!0)}),t.canHaveChildren&&t.hasChildren?e("ul",{staticClass:"app-navigation-entry__children"},[t._t("default")],2):t._e()],1)},Jr=[],to=S(Yr,Qr,Jr,!1,null,"86815ca2",null,null);const eo=to.exports,no={props:{excludeClickOutsideSelectors:{type:[String,Array],default:()=>[]}},computed:{clickOutsideOptions(){return{ignore:Array.isArray(this.excludeClickOutsideSelectors)?this.excludeClickOutsideSelectors:[this.excludeClickOutsideSelectors]}}}};T(Sn);const io={name:"CogIcon",emits:["click"],props:{title:{type:String},fillColor:{type:String,default:"currentColor"},size:{type:Number,default:24}}};var ao=function(){var t=this,e=t._self._c;return e("span",t._b({staticClass:"material-design-icon cog-icon",attrs:{"aria-hidden":t.title?null:!0,"aria-label":t.title,role:"img"},on:{click:function(n){return t.$emit("click",n)}}},"span",t.$attrs,!1),[e("svg",{staticClass:"material-design-icon__svg",attrs:{fill:t.fillColor,width:t.size,height:t.size,viewBox:"0 0 24 24"}},[e("path",{attrs:{d:"M12,15.5A3.5,3.5 0 0,1 8.5,12A3.5,3.5 0 0,1 12,8.5A3.5,3.5 0 0,1 15.5,12A3.5,3.5 0 0,1 12,15.5M19.43,12.97C19.47,12.65 19.5,12.33 19.5,12C19.5,11.67 19.47,11.34 19.43,11L21.54,9.37C21.73,9.22 21.78,8.95 21.66,8.73L19.66,5.27C19.54,5.05 19.27,4.96 19.05,5.05L16.56,6.05C16.04,5.66 15.5,5.32 14.87,5.07L14.5,2.42C14.46,2.18 14.25,2 14,2H10C9.75,2 9.54,2.18 9.5,2.42L9.13,5.07C8.5,5.32 7.96,5.66 7.44,6.05L4.95,5.05C4.73,4.96 4.46,5.05 4.34,5.27L2.34,8.73C2.21,8.95 2.27,9.22 2.46,9.37L4.57,11C4.53,11.34 4.5,11.67 4.5,12C4.5,12.33 4.53,12.65 4.57,12.97L2.46,14.63C2.27,14.78 2.21,15.05 2.34,15.27L4.34,18.73C4.46,18.95 4.73,19.03 4.95,18.95L7.44,17.94C7.96,18.34 8.5,18.68 9.13,18.93L9.5,21.58C9.54,21.82 9.75,22 10,22H14C14.25,22 14.46,21.82 14.5,21.58L14.87,18.93C15.5,18.67 16.04,18.34 16.56,17.94L19.05,18.95C19.27,19.03 19.54,18.95 19.66,18.73L21.66,15.27C21.78,15.05 21.73,14.78 21.54,14.63L19.43,12.97Z"}},[t.title?e("title",[t._v(t._s(t.title))]):t._e()])])])},ro=[],oo=S(io,ao,ro,!1,null,null,null,null);const so=oo.exports,lo={directives:{ClickOutside:an},components:{Cog:so},mixins:[no],props:{name:{type:String,required:!1,default:N("Settings")}},data(){return{open:!1}},computed:{clickOutsideConfig(){return[this.closeMenu,this.clickOutsideOptions]}},methods:{toggleMenu(){this.open=!this.open},closeMenu(){this.open=!1}}};var co=function(){var t=this,e=t._self._c;return e("div",{directives:[{name:"click-outside",rawName:"v-click-outside",value:t.clickOutsideConfig,expression:"clickOutsideConfig"}],class:{open:t.open},attrs:{id:"app-settings"}},[e("div",{attrs:{id:"app-settings__header"}},[e("button",{staticClass:"settings-button",attrs:{type:"button","aria-expanded":t.open?"true":"false","aria-controls":"app-settings__content"},on:{click:t.toggleMenu}},[e("Cog",{staticClass:"settings-button__icon",attrs:{size:20}}),e("span",{staticClass:"settings-button__label"},[t._v(t._s(t.name))])],1)]),e("Transition",{attrs:{name:"slide-up"}},[e("div",{directives:[{name:"show",rawName:"v-show",value:t.open,expression:"open"}],attrs:{id:"app-settings__content"}},[t._t("default")],2)])],1)},uo=[],po=S(lo,co,uo,!1,null,"4bd59bb1",null,null);const ho=po.exports,fo={name:"ContentCopyIcon",emits:["click"],props:{title:{type:String},fillColor:{type:String,default:"currentColor"},size:{type:Number,default:24}}};var vo=function(){var t=this,e=t._self._c;return e("span",t._b({staticClass:"material-design-icon content-copy-icon",attrs:{"aria-hidden":t.title?null:!0,"aria-label":t.title,role:"img"},on:{click:function(n){return t.$emit("click",n)}}},"span",t.$attrs,!1),[e("svg",{staticClass:"material-design-icon__svg",attrs:{fill:t.fillColor,width:t.size,height:t.size,viewBox:"0 0 24 24"}},[e("path",{attrs:{d:"M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"}},[t.title?e("title",[t._v(t._s(t.title))]):t._e()])])])},mo=[],go=X(fo,vo,mo,!1,null,null,null,null);const yo=go.exports,Co=mt({__name:"ActivityAppNavigation",setup(t){const{rssLink:e,personalSettingsLink:n}=kt(st,"settings"),i=kt(st,"navigationList"),a=V(e),r=Z(()=>!!a.value);async function o(){try{const{data:l}=await de.post(fe("/apps/activity/settings/feed"),{enable:!r.value});a.value=l.data.rsslink}catch(l){ve(A("activity","Could not enable RSS link")),St.error(l)}}async function s(){try{window.navigator.clipboard.writeText(a.value),zn(A("activity","RSS link copied to clipboard"))}catch(l){St.debug(l),window.prompt(A("activity","Could not copy the RSS link, please copy manually:"),a.value)}}return{__sfc:!0,initialRSSLink:e,personalSettingsLink:n,navigationList:i,rssLink:a,hasRSSLink:r,toggleRSSLink:o,copyRSSLink:s,t:A,NcAppNavigation:vr,NcAppNavigationItem:eo,NcAppNavigationSettings:ho,NcButton:q,NcCheckboxRadioSwitch:kn,NcInputField:rn,IconContentCopy:yo}}});var bo=function(){var t=this,e=t._self._c,n=t._self._setupProxy;return e(n.NcAppNavigation,{attrs:{"aria-label":n.t("activity","Activity")},scopedSlots:t._u([{key:"list",fn:function(){return t._l(n.navigationList,function(i){return e(n.NcAppNavigationItem,{key:i.id,attrs:{"data-navigation":i.id,to:i.id,name:i.name},scopedSlots:t._u([i.icon?{key:"icon",fn:function(){return[e("img",{staticClass:"navigation-icon",attrs:{alt:"",src:i.icon,role:"presentation"}})]},proxy:!0}:null],null,!0)})})},proxy:!0},{key:"footer",fn:function(){return[e(n.NcAppNavigationSettings,{attrs:{name:n.t("activity","Activity settings")}},[e(n.NcCheckboxRadioSwitch,{attrs:{type:"switch",checked:n.hasRSSLink},on:{"update:checked":n.toggleRSSLink}},[t._v(" "+t._s(n.t("activity","Enable RSS feed"))+" ")]),n.hasRSSLink?e(n.NcInputField,{attrs:{label:n.t("activity","RSS feed"),"show-trailing-button":!0,"trailing-button-label":n.t("activity","Copy RSS feed link"),readonly:"readonly"},on:{"trailing-button-click":n.copyRSSLink},scopedSlots:t._u([{key:"trailing-button-icon",fn:function(){return[e(n.IconContentCopy,{attrs:{size:20}})]},proxy:!0}],null,!1,4025534811),model:{value:n.rssLink,callback:function(i){n.rssLink=i},expression:"rssLink"}}):t._e(),e(n.NcButton,{staticClass:"settings-link",attrs:{href:n.personalSettingsLink,title:n.t("activity","Personal notification settings"),type:"tertiary"}},[t._v(" "+t._s(n.t("activity","Personal notification settings"))+" ")])],1)]},proxy:!0}])})},_o=[],xo=X(Co,bo,_o,!1,null,null,null,null);const wo=xo.exports,So=[{path:"/",name:"root",redirect:{path:"/all"}},{path:"/:filter?",components:{default:Ua,navigation:wo},props:{default:!0}}];P.prototype.t=A,P.prototype.n=Ke,P.use($e);const ko=new $e({mode:"history",base:fe("/apps/activity"),linkActiveClass:"active",routes:So});new P({el:"#content",name:"ActivityRoot",router:ko,render:t=>t(Ui)}); diff --git a/js/activity-app.mjs.map b/js/activity-app.mjs.map index f1fe609fe..9b8b7edc8 100644 --- a/js/activity-app.mjs.map +++ b/js/activity-app.mjs.map @@ -1 +1 @@ -{"version":3,"file":"activity-app.mjs","sources":["../node_modules/vue-router/dist/vue-router.esm.js","../node_modules/nanoid/non-secure/index.js","../node_modules/@linusborg/vue-simple-portal/dist/index.esm.js","../node_modules/@nextcloud/vue/dist/chunks/NcContent-BPA0KfuT.mjs","../node_modules/splitpanes/dist/splitpanes.es.js","../node_modules/@nextcloud/vue/dist/chunks/NcAppContent-BDhK1rUf.mjs","../node_modules/vue-frag/dist/frag.esm.js","../src/components/ActivityGroup.vue","../img/activity-dark.svg?raw","../node_modules/vue-router/composables.mjs","../src/views/ActivityAppFeed.vue","../node_modules/@nextcloud/vue/dist/chunks/NcAppNavigationToggle-D0oeWL17.mjs","../node_modules/@nextcloud/vue/dist/Components/NcAppNavigationList.mjs","../node_modules/@nextcloud/vue/dist/chunks/NcAppNavigation-CElLRpH-.mjs","../node_modules/@nextcloud/vue/dist/Components/NcActionButton.mjs","../node_modules/@nextcloud/vue/dist/Components/NcVNodes.mjs","../node_modules/@nextcloud/vue/dist/chunks/ChevronUp-B6TIgl1a.mjs","../node_modules/@nextcloud/vue/dist/chunks/NcInputConfirmCancel-Nn_JgG9d.mjs","../node_modules/@nextcloud/vue/dist/chunks/NcAppNavigationItem-Djfc0DPY.mjs","../node_modules/@nextcloud/vue/dist/Mixins/clickOutsideOptions.mjs","../node_modules/@nextcloud/vue/dist/chunks/NcAppNavigationSettings-LmpAoM-x.mjs","../node_modules/vue-material-design-icons/ContentCopy.vue","../src/views/ActivityAppNavigation.vue","../src/routes.ts","../src/app.ts"],"sourcesContent":["/*!\n * vue-router v3.6.5\n * (c) 2022 Evan You\n * @license MIT\n */\n/* */\n\nfunction assert (condition, message) {\n if (!condition) {\n throw new Error((\"[vue-router] \" + message))\n }\n}\n\nfunction warn (condition, message) {\n if (!condition) {\n typeof console !== 'undefined' && console.warn((\"[vue-router] \" + message));\n }\n}\n\nfunction extend (a, b) {\n for (var key in b) {\n a[key] = b[key];\n }\n return a\n}\n\n/* */\n\nvar encodeReserveRE = /[!'()*]/g;\nvar encodeReserveReplacer = function (c) { return '%' + c.charCodeAt(0).toString(16); };\nvar commaRE = /%2C/g;\n\n// fixed encodeURIComponent which is more conformant to RFC3986:\n// - escapes [!'()*]\n// - preserve commas\nvar encode = function (str) { return encodeURIComponent(str)\n .replace(encodeReserveRE, encodeReserveReplacer)\n .replace(commaRE, ','); };\n\nfunction decode (str) {\n try {\n return decodeURIComponent(str)\n } catch (err) {\n if (process.env.NODE_ENV !== 'production') {\n warn(false, (\"Error decoding \\\"\" + str + \"\\\". Leaving it intact.\"));\n }\n }\n return str\n}\n\nfunction resolveQuery (\n query,\n extraQuery,\n _parseQuery\n) {\n if ( extraQuery === void 0 ) extraQuery = {};\n\n var parse = _parseQuery || parseQuery;\n var parsedQuery;\n try {\n parsedQuery = parse(query || '');\n } catch (e) {\n process.env.NODE_ENV !== 'production' && warn(false, e.message);\n parsedQuery = {};\n }\n for (var key in extraQuery) {\n var value = extraQuery[key];\n parsedQuery[key] = Array.isArray(value)\n ? value.map(castQueryParamValue)\n : castQueryParamValue(value);\n }\n return parsedQuery\n}\n\nvar castQueryParamValue = function (value) { return (value == null || typeof value === 'object' ? value : String(value)); };\n\nfunction parseQuery (query) {\n var res = {};\n\n query = query.trim().replace(/^(\\?|#|&)/, '');\n\n if (!query) {\n return res\n }\n\n query.split('&').forEach(function (param) {\n var parts = param.replace(/\\+/g, ' ').split('=');\n var key = decode(parts.shift());\n var val = parts.length > 0 ? decode(parts.join('=')) : null;\n\n if (res[key] === undefined) {\n res[key] = val;\n } else if (Array.isArray(res[key])) {\n res[key].push(val);\n } else {\n res[key] = [res[key], val];\n }\n });\n\n return res\n}\n\nfunction stringifyQuery (obj) {\n var res = obj\n ? Object.keys(obj)\n .map(function (key) {\n var val = obj[key];\n\n if (val === undefined) {\n return ''\n }\n\n if (val === null) {\n return encode(key)\n }\n\n if (Array.isArray(val)) {\n var result = [];\n val.forEach(function (val2) {\n if (val2 === undefined) {\n return\n }\n if (val2 === null) {\n result.push(encode(key));\n } else {\n result.push(encode(key) + '=' + encode(val2));\n }\n });\n return result.join('&')\n }\n\n return encode(key) + '=' + encode(val)\n })\n .filter(function (x) { return x.length > 0; })\n .join('&')\n : null;\n return res ? (\"?\" + res) : ''\n}\n\n/* */\n\nvar trailingSlashRE = /\\/?$/;\n\nfunction createRoute (\n record,\n location,\n redirectedFrom,\n router\n) {\n var stringifyQuery = router && router.options.stringifyQuery;\n\n var query = location.query || {};\n try {\n query = clone(query);\n } catch (e) {}\n\n var route = {\n name: location.name || (record && record.name),\n meta: (record && record.meta) || {},\n path: location.path || '/',\n hash: location.hash || '',\n query: query,\n params: location.params || {},\n fullPath: getFullPath(location, stringifyQuery),\n matched: record ? formatMatch(record) : []\n };\n if (redirectedFrom) {\n route.redirectedFrom = getFullPath(redirectedFrom, stringifyQuery);\n }\n return Object.freeze(route)\n}\n\nfunction clone (value) {\n if (Array.isArray(value)) {\n return value.map(clone)\n } else if (value && typeof value === 'object') {\n var res = {};\n for (var key in value) {\n res[key] = clone(value[key]);\n }\n return res\n } else {\n return value\n }\n}\n\n// the starting route that represents the initial state\nvar START = createRoute(null, {\n path: '/'\n});\n\nfunction formatMatch (record) {\n var res = [];\n while (record) {\n res.unshift(record);\n record = record.parent;\n }\n return res\n}\n\nfunction getFullPath (\n ref,\n _stringifyQuery\n) {\n var path = ref.path;\n var query = ref.query; if ( query === void 0 ) query = {};\n var hash = ref.hash; if ( hash === void 0 ) hash = '';\n\n var stringify = _stringifyQuery || stringifyQuery;\n return (path || '/') + stringify(query) + hash\n}\n\nfunction isSameRoute (a, b, onlyPath) {\n if (b === START) {\n return a === b\n } else if (!b) {\n return false\n } else if (a.path && b.path) {\n return a.path.replace(trailingSlashRE, '') === b.path.replace(trailingSlashRE, '') && (onlyPath ||\n a.hash === b.hash &&\n isObjectEqual(a.query, b.query))\n } else if (a.name && b.name) {\n return (\n a.name === b.name &&\n (onlyPath || (\n a.hash === b.hash &&\n isObjectEqual(a.query, b.query) &&\n isObjectEqual(a.params, b.params))\n )\n )\n } else {\n return false\n }\n}\n\nfunction isObjectEqual (a, b) {\n if ( a === void 0 ) a = {};\n if ( b === void 0 ) b = {};\n\n // handle null value #1566\n if (!a || !b) { return a === b }\n var aKeys = Object.keys(a).sort();\n var bKeys = Object.keys(b).sort();\n if (aKeys.length !== bKeys.length) {\n return false\n }\n return aKeys.every(function (key, i) {\n var aVal = a[key];\n var bKey = bKeys[i];\n if (bKey !== key) { return false }\n var bVal = b[key];\n // query values can be null and undefined\n if (aVal == null || bVal == null) { return aVal === bVal }\n // check nested equality\n if (typeof aVal === 'object' && typeof bVal === 'object') {\n return isObjectEqual(aVal, bVal)\n }\n return String(aVal) === String(bVal)\n })\n}\n\nfunction isIncludedRoute (current, target) {\n return (\n current.path.replace(trailingSlashRE, '/').indexOf(\n target.path.replace(trailingSlashRE, '/')\n ) === 0 &&\n (!target.hash || current.hash === target.hash) &&\n queryIncludes(current.query, target.query)\n )\n}\n\nfunction queryIncludes (current, target) {\n for (var key in target) {\n if (!(key in current)) {\n return false\n }\n }\n return true\n}\n\nfunction handleRouteEntered (route) {\n for (var i = 0; i < route.matched.length; i++) {\n var record = route.matched[i];\n for (var name in record.instances) {\n var instance = record.instances[name];\n var cbs = record.enteredCbs[name];\n if (!instance || !cbs) { continue }\n delete record.enteredCbs[name];\n for (var i$1 = 0; i$1 < cbs.length; i$1++) {\n if (!instance._isBeingDestroyed) { cbs[i$1](instance); }\n }\n }\n }\n}\n\nvar View = {\n name: 'RouterView',\n functional: true,\n props: {\n name: {\n type: String,\n default: 'default'\n }\n },\n render: function render (_, ref) {\n var props = ref.props;\n var children = ref.children;\n var parent = ref.parent;\n var data = ref.data;\n\n // used by devtools to display a router-view badge\n data.routerView = true;\n\n // directly use parent context's createElement() function\n // so that components rendered by router-view can resolve named slots\n var h = parent.$createElement;\n var name = props.name;\n var route = parent.$route;\n var cache = parent._routerViewCache || (parent._routerViewCache = {});\n\n // determine current view depth, also check to see if the tree\n // has been toggled inactive but kept-alive.\n var depth = 0;\n var inactive = false;\n while (parent && parent._routerRoot !== parent) {\n var vnodeData = parent.$vnode ? parent.$vnode.data : {};\n if (vnodeData.routerView) {\n depth++;\n }\n if (vnodeData.keepAlive && parent._directInactive && parent._inactive) {\n inactive = true;\n }\n parent = parent.$parent;\n }\n data.routerViewDepth = depth;\n\n // render previous view if the tree is inactive and kept-alive\n if (inactive) {\n var cachedData = cache[name];\n var cachedComponent = cachedData && cachedData.component;\n if (cachedComponent) {\n // #2301\n // pass props\n if (cachedData.configProps) {\n fillPropsinData(cachedComponent, data, cachedData.route, cachedData.configProps);\n }\n return h(cachedComponent, data, children)\n } else {\n // render previous empty view\n return h()\n }\n }\n\n var matched = route.matched[depth];\n var component = matched && matched.components[name];\n\n // render empty node if no matched route or no config component\n if (!matched || !component) {\n cache[name] = null;\n return h()\n }\n\n // cache component\n cache[name] = { component: component };\n\n // attach instance registration hook\n // this will be called in the instance's injected lifecycle hooks\n data.registerRouteInstance = function (vm, val) {\n // val could be undefined for unregistration\n var current = matched.instances[name];\n if (\n (val && current !== vm) ||\n (!val && current === vm)\n ) {\n matched.instances[name] = val;\n }\n }\n\n // also register instance in prepatch hook\n // in case the same component instance is reused across different routes\n ;(data.hook || (data.hook = {})).prepatch = function (_, vnode) {\n matched.instances[name] = vnode.componentInstance;\n };\n\n // register instance in init hook\n // in case kept-alive component be actived when routes changed\n data.hook.init = function (vnode) {\n if (vnode.data.keepAlive &&\n vnode.componentInstance &&\n vnode.componentInstance !== matched.instances[name]\n ) {\n matched.instances[name] = vnode.componentInstance;\n }\n\n // if the route transition has already been confirmed then we weren't\n // able to call the cbs during confirmation as the component was not\n // registered yet, so we call it here.\n handleRouteEntered(route);\n };\n\n var configProps = matched.props && matched.props[name];\n // save route and configProps in cache\n if (configProps) {\n extend(cache[name], {\n route: route,\n configProps: configProps\n });\n fillPropsinData(component, data, route, configProps);\n }\n\n return h(component, data, children)\n }\n};\n\nfunction fillPropsinData (component, data, route, configProps) {\n // resolve props\n var propsToPass = data.props = resolveProps(route, configProps);\n if (propsToPass) {\n // clone to prevent mutation\n propsToPass = data.props = extend({}, propsToPass);\n // pass non-declared props as attrs\n var attrs = data.attrs = data.attrs || {};\n for (var key in propsToPass) {\n if (!component.props || !(key in component.props)) {\n attrs[key] = propsToPass[key];\n delete propsToPass[key];\n }\n }\n }\n}\n\nfunction resolveProps (route, config) {\n switch (typeof config) {\n case 'undefined':\n return\n case 'object':\n return config\n case 'function':\n return config(route)\n case 'boolean':\n return config ? route.params : undefined\n default:\n if (process.env.NODE_ENV !== 'production') {\n warn(\n false,\n \"props in \\\"\" + (route.path) + \"\\\" is a \" + (typeof config) + \", \" +\n \"expecting an object, function or boolean.\"\n );\n }\n }\n}\n\n/* */\n\nfunction resolvePath (\n relative,\n base,\n append\n) {\n var firstChar = relative.charAt(0);\n if (firstChar === '/') {\n return relative\n }\n\n if (firstChar === '?' || firstChar === '#') {\n return base + relative\n }\n\n var stack = base.split('/');\n\n // remove trailing segment if:\n // - not appending\n // - appending to trailing slash (last segment is empty)\n if (!append || !stack[stack.length - 1]) {\n stack.pop();\n }\n\n // resolve relative path\n var segments = relative.replace(/^\\//, '').split('/');\n for (var i = 0; i < segments.length; i++) {\n var segment = segments[i];\n if (segment === '..') {\n stack.pop();\n } else if (segment !== '.') {\n stack.push(segment);\n }\n }\n\n // ensure leading slash\n if (stack[0] !== '') {\n stack.unshift('');\n }\n\n return stack.join('/')\n}\n\nfunction parsePath (path) {\n var hash = '';\n var query = '';\n\n var hashIndex = path.indexOf('#');\n if (hashIndex >= 0) {\n hash = path.slice(hashIndex);\n path = path.slice(0, hashIndex);\n }\n\n var queryIndex = path.indexOf('?');\n if (queryIndex >= 0) {\n query = path.slice(queryIndex + 1);\n path = path.slice(0, queryIndex);\n }\n\n return {\n path: path,\n query: query,\n hash: hash\n }\n}\n\nfunction cleanPath (path) {\n return path.replace(/\\/(?:\\s*\\/)+/g, '/')\n}\n\nvar isarray = Array.isArray || function (arr) {\n return Object.prototype.toString.call(arr) == '[object Array]';\n};\n\n/**\n * Expose `pathToRegexp`.\n */\nvar pathToRegexp_1 = pathToRegexp;\nvar parse_1 = parse;\nvar compile_1 = compile;\nvar tokensToFunction_1 = tokensToFunction;\nvar tokensToRegExp_1 = tokensToRegExp;\n\n/**\n * The main path matching regexp utility.\n *\n * @type {RegExp}\n */\nvar PATH_REGEXP = new RegExp([\n // Match escaped characters that would otherwise appear in future matches.\n // This allows the user to escape special characters that won't transform.\n '(\\\\\\\\.)',\n // Match Express-style parameters and un-named parameters with a prefix\n // and optional suffixes. Matches appear as:\n //\n // \"/:test(\\\\d+)?\" => [\"/\", \"test\", \"\\d+\", undefined, \"?\", undefined]\n // \"/route(\\\\d+)\" => [undefined, undefined, undefined, \"\\d+\", undefined, undefined]\n // \"/*\" => [\"/\", undefined, undefined, undefined, undefined, \"*\"]\n '([\\\\/.])?(?:(?:\\\\:(\\\\w+)(?:\\\\(((?:\\\\\\\\.|[^\\\\\\\\()])+)\\\\))?|\\\\(((?:\\\\\\\\.|[^\\\\\\\\()])+)\\\\))([+*?])?|(\\\\*))'\n].join('|'), 'g');\n\n/**\n * Parse a string for the raw tokens.\n *\n * @param {string} str\n * @param {Object=} options\n * @return {!Array}\n */\nfunction parse (str, options) {\n var tokens = [];\n var key = 0;\n var index = 0;\n var path = '';\n var defaultDelimiter = options && options.delimiter || '/';\n var res;\n\n while ((res = PATH_REGEXP.exec(str)) != null) {\n var m = res[0];\n var escaped = res[1];\n var offset = res.index;\n path += str.slice(index, offset);\n index = offset + m.length;\n\n // Ignore already escaped sequences.\n if (escaped) {\n path += escaped[1];\n continue\n }\n\n var next = str[index];\n var prefix = res[2];\n var name = res[3];\n var capture = res[4];\n var group = res[5];\n var modifier = res[6];\n var asterisk = res[7];\n\n // Push the current path onto the tokens.\n if (path) {\n tokens.push(path);\n path = '';\n }\n\n var partial = prefix != null && next != null && next !== prefix;\n var repeat = modifier === '+' || modifier === '*';\n var optional = modifier === '?' || modifier === '*';\n var delimiter = res[2] || defaultDelimiter;\n var pattern = capture || group;\n\n tokens.push({\n name: name || key++,\n prefix: prefix || '',\n delimiter: delimiter,\n optional: optional,\n repeat: repeat,\n partial: partial,\n asterisk: !!asterisk,\n pattern: pattern ? escapeGroup(pattern) : (asterisk ? '.*' : '[^' + escapeString(delimiter) + ']+?')\n });\n }\n\n // Match any characters still remaining.\n if (index < str.length) {\n path += str.substr(index);\n }\n\n // If the path exists, push it onto the end.\n if (path) {\n tokens.push(path);\n }\n\n return tokens\n}\n\n/**\n * Compile a string to a template function for the path.\n *\n * @param {string} str\n * @param {Object=} options\n * @return {!function(Object=, Object=)}\n */\nfunction compile (str, options) {\n return tokensToFunction(parse(str, options), options)\n}\n\n/**\n * Prettier encoding of URI path segments.\n *\n * @param {string}\n * @return {string}\n */\nfunction encodeURIComponentPretty (str) {\n return encodeURI(str).replace(/[\\/?#]/g, function (c) {\n return '%' + c.charCodeAt(0).toString(16).toUpperCase()\n })\n}\n\n/**\n * Encode the asterisk parameter. Similar to `pretty`, but allows slashes.\n *\n * @param {string}\n * @return {string}\n */\nfunction encodeAsterisk (str) {\n return encodeURI(str).replace(/[?#]/g, function (c) {\n return '%' + c.charCodeAt(0).toString(16).toUpperCase()\n })\n}\n\n/**\n * Expose a method for transforming tokens into the path function.\n */\nfunction tokensToFunction (tokens, options) {\n // Compile all the tokens into regexps.\n var matches = new Array(tokens.length);\n\n // Compile all the patterns before compilation.\n for (var i = 0; i < tokens.length; i++) {\n if (typeof tokens[i] === 'object') {\n matches[i] = new RegExp('^(?:' + tokens[i].pattern + ')$', flags(options));\n }\n }\n\n return function (obj, opts) {\n var path = '';\n var data = obj || {};\n var options = opts || {};\n var encode = options.pretty ? encodeURIComponentPretty : encodeURIComponent;\n\n for (var i = 0; i < tokens.length; i++) {\n var token = tokens[i];\n\n if (typeof token === 'string') {\n path += token;\n\n continue\n }\n\n var value = data[token.name];\n var segment;\n\n if (value == null) {\n if (token.optional) {\n // Prepend partial segment prefixes.\n if (token.partial) {\n path += token.prefix;\n }\n\n continue\n } else {\n throw new TypeError('Expected \"' + token.name + '\" to be defined')\n }\n }\n\n if (isarray(value)) {\n if (!token.repeat) {\n throw new TypeError('Expected \"' + token.name + '\" to not repeat, but received `' + JSON.stringify(value) + '`')\n }\n\n if (value.length === 0) {\n if (token.optional) {\n continue\n } else {\n throw new TypeError('Expected \"' + token.name + '\" to not be empty')\n }\n }\n\n for (var j = 0; j < value.length; j++) {\n segment = encode(value[j]);\n\n if (!matches[i].test(segment)) {\n throw new TypeError('Expected all \"' + token.name + '\" to match \"' + token.pattern + '\", but received `' + JSON.stringify(segment) + '`')\n }\n\n path += (j === 0 ? token.prefix : token.delimiter) + segment;\n }\n\n continue\n }\n\n segment = token.asterisk ? encodeAsterisk(value) : encode(value);\n\n if (!matches[i].test(segment)) {\n throw new TypeError('Expected \"' + token.name + '\" to match \"' + token.pattern + '\", but received \"' + segment + '\"')\n }\n\n path += token.prefix + segment;\n }\n\n return path\n }\n}\n\n/**\n * Escape a regular expression string.\n *\n * @param {string} str\n * @return {string}\n */\nfunction escapeString (str) {\n return str.replace(/([.+*?=^!:${}()[\\]|\\/\\\\])/g, '\\\\$1')\n}\n\n/**\n * Escape the capturing group by escaping special characters and meaning.\n *\n * @param {string} group\n * @return {string}\n */\nfunction escapeGroup (group) {\n return group.replace(/([=!:$\\/()])/g, '\\\\$1')\n}\n\n/**\n * Attach the keys as a property of the regexp.\n *\n * @param {!RegExp} re\n * @param {Array} keys\n * @return {!RegExp}\n */\nfunction attachKeys (re, keys) {\n re.keys = keys;\n return re\n}\n\n/**\n * Get the flags for a regexp from the options.\n *\n * @param {Object} options\n * @return {string}\n */\nfunction flags (options) {\n return options && options.sensitive ? '' : 'i'\n}\n\n/**\n * Pull out keys from a regexp.\n *\n * @param {!RegExp} path\n * @param {!Array} keys\n * @return {!RegExp}\n */\nfunction regexpToRegexp (path, keys) {\n // Use a negative lookahead to match only capturing groups.\n var groups = path.source.match(/\\((?!\\?)/g);\n\n if (groups) {\n for (var i = 0; i < groups.length; i++) {\n keys.push({\n name: i,\n prefix: null,\n delimiter: null,\n optional: false,\n repeat: false,\n partial: false,\n asterisk: false,\n pattern: null\n });\n }\n }\n\n return attachKeys(path, keys)\n}\n\n/**\n * Transform an array into a regexp.\n *\n * @param {!Array} path\n * @param {Array} keys\n * @param {!Object} options\n * @return {!RegExp}\n */\nfunction arrayToRegexp (path, keys, options) {\n var parts = [];\n\n for (var i = 0; i < path.length; i++) {\n parts.push(pathToRegexp(path[i], keys, options).source);\n }\n\n var regexp = new RegExp('(?:' + parts.join('|') + ')', flags(options));\n\n return attachKeys(regexp, keys)\n}\n\n/**\n * Create a path regexp from string input.\n *\n * @param {string} path\n * @param {!Array} keys\n * @param {!Object} options\n * @return {!RegExp}\n */\nfunction stringToRegexp (path, keys, options) {\n return tokensToRegExp(parse(path, options), keys, options)\n}\n\n/**\n * Expose a function for taking tokens and returning a RegExp.\n *\n * @param {!Array} tokens\n * @param {(Array|Object)=} keys\n * @param {Object=} options\n * @return {!RegExp}\n */\nfunction tokensToRegExp (tokens, keys, options) {\n if (!isarray(keys)) {\n options = /** @type {!Object} */ (keys || options);\n keys = [];\n }\n\n options = options || {};\n\n var strict = options.strict;\n var end = options.end !== false;\n var route = '';\n\n // Iterate over the tokens and create our regexp string.\n for (var i = 0; i < tokens.length; i++) {\n var token = tokens[i];\n\n if (typeof token === 'string') {\n route += escapeString(token);\n } else {\n var prefix = escapeString(token.prefix);\n var capture = '(?:' + token.pattern + ')';\n\n keys.push(token);\n\n if (token.repeat) {\n capture += '(?:' + prefix + capture + ')*';\n }\n\n if (token.optional) {\n if (!token.partial) {\n capture = '(?:' + prefix + '(' + capture + '))?';\n } else {\n capture = prefix + '(' + capture + ')?';\n }\n } else {\n capture = prefix + '(' + capture + ')';\n }\n\n route += capture;\n }\n }\n\n var delimiter = escapeString(options.delimiter || '/');\n var endsWithDelimiter = route.slice(-delimiter.length) === delimiter;\n\n // In non-strict mode we allow a slash at the end of match. If the path to\n // match already ends with a slash, we remove it for consistency. The slash\n // is valid at the end of a path match, not in the middle. This is important\n // in non-ending mode, where \"/test/\" shouldn't match \"/test//route\".\n if (!strict) {\n route = (endsWithDelimiter ? route.slice(0, -delimiter.length) : route) + '(?:' + delimiter + '(?=$))?';\n }\n\n if (end) {\n route += '$';\n } else {\n // In non-ending mode, we need the capturing groups to match as much as\n // possible by using a positive lookahead to the end or next path segment.\n route += strict && endsWithDelimiter ? '' : '(?=' + delimiter + '|$)';\n }\n\n return attachKeys(new RegExp('^' + route, flags(options)), keys)\n}\n\n/**\n * Normalize the given path string, returning a regular expression.\n *\n * An empty array can be passed in for the keys, which will hold the\n * placeholder key descriptions. For example, using `/user/:id`, `keys` will\n * contain `[{ name: 'id', delimiter: '/', optional: false, repeat: false }]`.\n *\n * @param {(string|RegExp|Array)} path\n * @param {(Array|Object)=} keys\n * @param {Object=} options\n * @return {!RegExp}\n */\nfunction pathToRegexp (path, keys, options) {\n if (!isarray(keys)) {\n options = /** @type {!Object} */ (keys || options);\n keys = [];\n }\n\n options = options || {};\n\n if (path instanceof RegExp) {\n return regexpToRegexp(path, /** @type {!Array} */ (keys))\n }\n\n if (isarray(path)) {\n return arrayToRegexp(/** @type {!Array} */ (path), /** @type {!Array} */ (keys), options)\n }\n\n return stringToRegexp(/** @type {string} */ (path), /** @type {!Array} */ (keys), options)\n}\npathToRegexp_1.parse = parse_1;\npathToRegexp_1.compile = compile_1;\npathToRegexp_1.tokensToFunction = tokensToFunction_1;\npathToRegexp_1.tokensToRegExp = tokensToRegExp_1;\n\n/* */\n\n// $flow-disable-line\nvar regexpCompileCache = Object.create(null);\n\nfunction fillParams (\n path,\n params,\n routeMsg\n) {\n params = params || {};\n try {\n var filler =\n regexpCompileCache[path] ||\n (regexpCompileCache[path] = pathToRegexp_1.compile(path));\n\n // Fix #2505 resolving asterisk routes { name: 'not-found', params: { pathMatch: '/not-found' }}\n // and fix #3106 so that you can work with location descriptor object having params.pathMatch equal to empty string\n if (typeof params.pathMatch === 'string') { params[0] = params.pathMatch; }\n\n return filler(params, { pretty: true })\n } catch (e) {\n if (process.env.NODE_ENV !== 'production') {\n // Fix #3072 no warn if `pathMatch` is string\n warn(typeof params.pathMatch === 'string', (\"missing param for \" + routeMsg + \": \" + (e.message)));\n }\n return ''\n } finally {\n // delete the 0 if it was added\n delete params[0];\n }\n}\n\n/* */\n\nfunction normalizeLocation (\n raw,\n current,\n append,\n router\n) {\n var next = typeof raw === 'string' ? { path: raw } : raw;\n // named target\n if (next._normalized) {\n return next\n } else if (next.name) {\n next = extend({}, raw);\n var params = next.params;\n if (params && typeof params === 'object') {\n next.params = extend({}, params);\n }\n return next\n }\n\n // relative params\n if (!next.path && next.params && current) {\n next = extend({}, next);\n next._normalized = true;\n var params$1 = extend(extend({}, current.params), next.params);\n if (current.name) {\n next.name = current.name;\n next.params = params$1;\n } else if (current.matched.length) {\n var rawPath = current.matched[current.matched.length - 1].path;\n next.path = fillParams(rawPath, params$1, (\"path \" + (current.path)));\n } else if (process.env.NODE_ENV !== 'production') {\n warn(false, \"relative params navigation requires a current route.\");\n }\n return next\n }\n\n var parsedPath = parsePath(next.path || '');\n var basePath = (current && current.path) || '/';\n var path = parsedPath.path\n ? resolvePath(parsedPath.path, basePath, append || next.append)\n : basePath;\n\n var query = resolveQuery(\n parsedPath.query,\n next.query,\n router && router.options.parseQuery\n );\n\n var hash = next.hash || parsedPath.hash;\n if (hash && hash.charAt(0) !== '#') {\n hash = \"#\" + hash;\n }\n\n return {\n _normalized: true,\n path: path,\n query: query,\n hash: hash\n }\n}\n\n/* */\n\n// work around weird flow bug\nvar toTypes = [String, Object];\nvar eventTypes = [String, Array];\n\nvar noop = function () {};\n\nvar warnedCustomSlot;\nvar warnedTagProp;\nvar warnedEventProp;\n\nvar Link = {\n name: 'RouterLink',\n props: {\n to: {\n type: toTypes,\n required: true\n },\n tag: {\n type: String,\n default: 'a'\n },\n custom: Boolean,\n exact: Boolean,\n exactPath: Boolean,\n append: Boolean,\n replace: Boolean,\n activeClass: String,\n exactActiveClass: String,\n ariaCurrentValue: {\n type: String,\n default: 'page'\n },\n event: {\n type: eventTypes,\n default: 'click'\n }\n },\n render: function render (h) {\n var this$1$1 = this;\n\n var router = this.$router;\n var current = this.$route;\n var ref = router.resolve(\n this.to,\n current,\n this.append\n );\n var location = ref.location;\n var route = ref.route;\n var href = ref.href;\n\n var classes = {};\n var globalActiveClass = router.options.linkActiveClass;\n var globalExactActiveClass = router.options.linkExactActiveClass;\n // Support global empty active class\n var activeClassFallback =\n globalActiveClass == null ? 'router-link-active' : globalActiveClass;\n var exactActiveClassFallback =\n globalExactActiveClass == null\n ? 'router-link-exact-active'\n : globalExactActiveClass;\n var activeClass =\n this.activeClass == null ? activeClassFallback : this.activeClass;\n var exactActiveClass =\n this.exactActiveClass == null\n ? exactActiveClassFallback\n : this.exactActiveClass;\n\n var compareTarget = route.redirectedFrom\n ? createRoute(null, normalizeLocation(route.redirectedFrom), null, router)\n : route;\n\n classes[exactActiveClass] = isSameRoute(current, compareTarget, this.exactPath);\n classes[activeClass] = this.exact || this.exactPath\n ? classes[exactActiveClass]\n : isIncludedRoute(current, compareTarget);\n\n var ariaCurrentValue = classes[exactActiveClass] ? this.ariaCurrentValue : null;\n\n var handler = function (e) {\n if (guardEvent(e)) {\n if (this$1$1.replace) {\n router.replace(location, noop);\n } else {\n router.push(location, noop);\n }\n }\n };\n\n var on = { click: guardEvent };\n if (Array.isArray(this.event)) {\n this.event.forEach(function (e) {\n on[e] = handler;\n });\n } else {\n on[this.event] = handler;\n }\n\n var data = { class: classes };\n\n var scopedSlot =\n !this.$scopedSlots.$hasNormal &&\n this.$scopedSlots.default &&\n this.$scopedSlots.default({\n href: href,\n route: route,\n navigate: handler,\n isActive: classes[activeClass],\n isExactActive: classes[exactActiveClass]\n });\n\n if (scopedSlot) {\n if (process.env.NODE_ENV !== 'production' && !this.custom) {\n !warnedCustomSlot && warn(false, 'In Vue Router 4, the v-slot API will by default wrap its content with an element. Use the custom prop to remove this warning:\\n\\n');\n warnedCustomSlot = true;\n }\n if (scopedSlot.length === 1) {\n return scopedSlot[0]\n } else if (scopedSlot.length > 1 || !scopedSlot.length) {\n if (process.env.NODE_ENV !== 'production') {\n warn(\n false,\n (\" with to=\\\"\" + (this.to) + \"\\\" is trying to use a scoped slot but it didn't provide exactly one child. Wrapping the content with a span element.\")\n );\n }\n return scopedSlot.length === 0 ? h() : h('span', {}, scopedSlot)\n }\n }\n\n if (process.env.NODE_ENV !== 'production') {\n if ('tag' in this.$options.propsData && !warnedTagProp) {\n warn(\n false,\n \"'s tag prop is deprecated and has been removed in Vue Router 4. Use the v-slot API to remove this warning: https://next.router.vuejs.org/guide/migration/#removal-of-event-and-tag-props-in-router-link.\"\n );\n warnedTagProp = true;\n }\n if ('event' in this.$options.propsData && !warnedEventProp) {\n warn(\n false,\n \"'s event prop is deprecated and has been removed in Vue Router 4. Use the v-slot API to remove this warning: https://next.router.vuejs.org/guide/migration/#removal-of-event-and-tag-props-in-router-link.\"\n );\n warnedEventProp = true;\n }\n }\n\n if (this.tag === 'a') {\n data.on = on;\n data.attrs = { href: href, 'aria-current': ariaCurrentValue };\n } else {\n // find the first child and apply listener and href\n var a = findAnchor(this.$slots.default);\n if (a) {\n // in case the is a static node\n a.isStatic = false;\n var aData = (a.data = extend({}, a.data));\n aData.on = aData.on || {};\n // transform existing events in both objects into arrays so we can push later\n for (var event in aData.on) {\n var handler$1 = aData.on[event];\n if (event in on) {\n aData.on[event] = Array.isArray(handler$1) ? handler$1 : [handler$1];\n }\n }\n // append new listeners for router-link\n for (var event$1 in on) {\n if (event$1 in aData.on) {\n // on[event] is always a function\n aData.on[event$1].push(on[event$1]);\n } else {\n aData.on[event$1] = handler;\n }\n }\n\n var aAttrs = (a.data.attrs = extend({}, a.data.attrs));\n aAttrs.href = href;\n aAttrs['aria-current'] = ariaCurrentValue;\n } else {\n // doesn't have child, apply listener to self\n data.on = on;\n }\n }\n\n return h(this.tag, data, this.$slots.default)\n }\n};\n\nfunction guardEvent (e) {\n // don't redirect with control keys\n if (e.metaKey || e.altKey || e.ctrlKey || e.shiftKey) { return }\n // don't redirect when preventDefault called\n if (e.defaultPrevented) { return }\n // don't redirect on right click\n if (e.button !== undefined && e.button !== 0) { return }\n // don't redirect if `target=\"_blank\"`\n if (e.currentTarget && e.currentTarget.getAttribute) {\n var target = e.currentTarget.getAttribute('target');\n if (/\\b_blank\\b/i.test(target)) { return }\n }\n // this may be a Weex event which doesn't have this method\n if (e.preventDefault) {\n e.preventDefault();\n }\n return true\n}\n\nfunction findAnchor (children) {\n if (children) {\n var child;\n for (var i = 0; i < children.length; i++) {\n child = children[i];\n if (child.tag === 'a') {\n return child\n }\n if (child.children && (child = findAnchor(child.children))) {\n return child\n }\n }\n }\n}\n\nvar _Vue;\n\nfunction install (Vue) {\n if (install.installed && _Vue === Vue) { return }\n install.installed = true;\n\n _Vue = Vue;\n\n var isDef = function (v) { return v !== undefined; };\n\n var registerInstance = function (vm, callVal) {\n var i = vm.$options._parentVnode;\n if (isDef(i) && isDef(i = i.data) && isDef(i = i.registerRouteInstance)) {\n i(vm, callVal);\n }\n };\n\n Vue.mixin({\n beforeCreate: function beforeCreate () {\n if (isDef(this.$options.router)) {\n this._routerRoot = this;\n this._router = this.$options.router;\n this._router.init(this);\n Vue.util.defineReactive(this, '_route', this._router.history.current);\n } else {\n this._routerRoot = (this.$parent && this.$parent._routerRoot) || this;\n }\n registerInstance(this, this);\n },\n destroyed: function destroyed () {\n registerInstance(this);\n }\n });\n\n Object.defineProperty(Vue.prototype, '$router', {\n get: function get () { return this._routerRoot._router }\n });\n\n Object.defineProperty(Vue.prototype, '$route', {\n get: function get () { return this._routerRoot._route }\n });\n\n Vue.component('RouterView', View);\n Vue.component('RouterLink', Link);\n\n var strats = Vue.config.optionMergeStrategies;\n // use the same hook merging strategy for route hooks\n strats.beforeRouteEnter = strats.beforeRouteLeave = strats.beforeRouteUpdate = strats.created;\n}\n\n/* */\n\nvar inBrowser = typeof window !== 'undefined';\n\n/* */\n\nfunction createRouteMap (\n routes,\n oldPathList,\n oldPathMap,\n oldNameMap,\n parentRoute\n) {\n // the path list is used to control path matching priority\n var pathList = oldPathList || [];\n // $flow-disable-line\n var pathMap = oldPathMap || Object.create(null);\n // $flow-disable-line\n var nameMap = oldNameMap || Object.create(null);\n\n routes.forEach(function (route) {\n addRouteRecord(pathList, pathMap, nameMap, route, parentRoute);\n });\n\n // ensure wildcard routes are always at the end\n for (var i = 0, l = pathList.length; i < l; i++) {\n if (pathList[i] === '*') {\n pathList.push(pathList.splice(i, 1)[0]);\n l--;\n i--;\n }\n }\n\n if (process.env.NODE_ENV === 'development') {\n // warn if routes do not include leading slashes\n var found = pathList\n // check for missing leading slash\n .filter(function (path) { return path && path.charAt(0) !== '*' && path.charAt(0) !== '/'; });\n\n if (found.length > 0) {\n var pathNames = found.map(function (path) { return (\"- \" + path); }).join('\\n');\n warn(false, (\"Non-nested routes must include a leading slash character. Fix the following routes: \\n\" + pathNames));\n }\n }\n\n return {\n pathList: pathList,\n pathMap: pathMap,\n nameMap: nameMap\n }\n}\n\nfunction addRouteRecord (\n pathList,\n pathMap,\n nameMap,\n route,\n parent,\n matchAs\n) {\n var path = route.path;\n var name = route.name;\n if (process.env.NODE_ENV !== 'production') {\n assert(path != null, \"\\\"path\\\" is required in a route configuration.\");\n assert(\n typeof route.component !== 'string',\n \"route config \\\"component\\\" for path: \" + (String(\n path || name\n )) + \" cannot be a \" + \"string id. Use an actual component instead.\"\n );\n\n warn(\n // eslint-disable-next-line no-control-regex\n !/[^\\u0000-\\u007F]+/.test(path),\n \"Route with path \\\"\" + path + \"\\\" contains unencoded characters, make sure \" +\n \"your path is correctly encoded before passing it to the router. Use \" +\n \"encodeURI to encode static segments of your path.\"\n );\n }\n\n var pathToRegexpOptions =\n route.pathToRegexpOptions || {};\n var normalizedPath = normalizePath(path, parent, pathToRegexpOptions.strict);\n\n if (typeof route.caseSensitive === 'boolean') {\n pathToRegexpOptions.sensitive = route.caseSensitive;\n }\n\n var record = {\n path: normalizedPath,\n regex: compileRouteRegex(normalizedPath, pathToRegexpOptions),\n components: route.components || { default: route.component },\n alias: route.alias\n ? typeof route.alias === 'string'\n ? [route.alias]\n : route.alias\n : [],\n instances: {},\n enteredCbs: {},\n name: name,\n parent: parent,\n matchAs: matchAs,\n redirect: route.redirect,\n beforeEnter: route.beforeEnter,\n meta: route.meta || {},\n props:\n route.props == null\n ? {}\n : route.components\n ? route.props\n : { default: route.props }\n };\n\n if (route.children) {\n // Warn if route is named, does not redirect and has a default child route.\n // If users navigate to this route by name, the default child will\n // not be rendered (GH Issue #629)\n if (process.env.NODE_ENV !== 'production') {\n if (\n route.name &&\n !route.redirect &&\n route.children.some(function (child) { return /^\\/?$/.test(child.path); })\n ) {\n warn(\n false,\n \"Named Route '\" + (route.name) + \"' has a default child route. \" +\n \"When navigating to this named route (:to=\\\"{name: '\" + (route.name) + \"'}\\\"), \" +\n \"the default child route will not be rendered. Remove the name from \" +\n \"this route and use the name of the default child route for named \" +\n \"links instead.\"\n );\n }\n }\n route.children.forEach(function (child) {\n var childMatchAs = matchAs\n ? cleanPath((matchAs + \"/\" + (child.path)))\n : undefined;\n addRouteRecord(pathList, pathMap, nameMap, child, record, childMatchAs);\n });\n }\n\n if (!pathMap[record.path]) {\n pathList.push(record.path);\n pathMap[record.path] = record;\n }\n\n if (route.alias !== undefined) {\n var aliases = Array.isArray(route.alias) ? route.alias : [route.alias];\n for (var i = 0; i < aliases.length; ++i) {\n var alias = aliases[i];\n if (process.env.NODE_ENV !== 'production' && alias === path) {\n warn(\n false,\n (\"Found an alias with the same value as the path: \\\"\" + path + \"\\\". You have to remove that alias. It will be ignored in development.\")\n );\n // skip in dev to make it work\n continue\n }\n\n var aliasRoute = {\n path: alias,\n children: route.children\n };\n addRouteRecord(\n pathList,\n pathMap,\n nameMap,\n aliasRoute,\n parent,\n record.path || '/' // matchAs\n );\n }\n }\n\n if (name) {\n if (!nameMap[name]) {\n nameMap[name] = record;\n } else if (process.env.NODE_ENV !== 'production' && !matchAs) {\n warn(\n false,\n \"Duplicate named routes definition: \" +\n \"{ name: \\\"\" + name + \"\\\", path: \\\"\" + (record.path) + \"\\\" }\"\n );\n }\n }\n}\n\nfunction compileRouteRegex (\n path,\n pathToRegexpOptions\n) {\n var regex = pathToRegexp_1(path, [], pathToRegexpOptions);\n if (process.env.NODE_ENV !== 'production') {\n var keys = Object.create(null);\n regex.keys.forEach(function (key) {\n warn(\n !keys[key.name],\n (\"Duplicate param keys in route with path: \\\"\" + path + \"\\\"\")\n );\n keys[key.name] = true;\n });\n }\n return regex\n}\n\nfunction normalizePath (\n path,\n parent,\n strict\n) {\n if (!strict) { path = path.replace(/\\/$/, ''); }\n if (path[0] === '/') { return path }\n if (parent == null) { return path }\n return cleanPath(((parent.path) + \"/\" + path))\n}\n\n/* */\n\n\n\nfunction createMatcher (\n routes,\n router\n) {\n var ref = createRouteMap(routes);\n var pathList = ref.pathList;\n var pathMap = ref.pathMap;\n var nameMap = ref.nameMap;\n\n function addRoutes (routes) {\n createRouteMap(routes, pathList, pathMap, nameMap);\n }\n\n function addRoute (parentOrRoute, route) {\n var parent = (typeof parentOrRoute !== 'object') ? nameMap[parentOrRoute] : undefined;\n // $flow-disable-line\n createRouteMap([route || parentOrRoute], pathList, pathMap, nameMap, parent);\n\n // add aliases of parent\n if (parent && parent.alias.length) {\n createRouteMap(\n // $flow-disable-line route is defined if parent is\n parent.alias.map(function (alias) { return ({ path: alias, children: [route] }); }),\n pathList,\n pathMap,\n nameMap,\n parent\n );\n }\n }\n\n function getRoutes () {\n return pathList.map(function (path) { return pathMap[path]; })\n }\n\n function match (\n raw,\n currentRoute,\n redirectedFrom\n ) {\n var location = normalizeLocation(raw, currentRoute, false, router);\n var name = location.name;\n\n if (name) {\n var record = nameMap[name];\n if (process.env.NODE_ENV !== 'production') {\n warn(record, (\"Route with name '\" + name + \"' does not exist\"));\n }\n if (!record) { return _createRoute(null, location) }\n var paramNames = record.regex.keys\n .filter(function (key) { return !key.optional; })\n .map(function (key) { return key.name; });\n\n if (typeof location.params !== 'object') {\n location.params = {};\n }\n\n if (currentRoute && typeof currentRoute.params === 'object') {\n for (var key in currentRoute.params) {\n if (!(key in location.params) && paramNames.indexOf(key) > -1) {\n location.params[key] = currentRoute.params[key];\n }\n }\n }\n\n location.path = fillParams(record.path, location.params, (\"named route \\\"\" + name + \"\\\"\"));\n return _createRoute(record, location, redirectedFrom)\n } else if (location.path) {\n location.params = {};\n for (var i = 0; i < pathList.length; i++) {\n var path = pathList[i];\n var record$1 = pathMap[path];\n if (matchRoute(record$1.regex, location.path, location.params)) {\n return _createRoute(record$1, location, redirectedFrom)\n }\n }\n }\n // no match\n return _createRoute(null, location)\n }\n\n function redirect (\n record,\n location\n ) {\n var originalRedirect = record.redirect;\n var redirect = typeof originalRedirect === 'function'\n ? originalRedirect(createRoute(record, location, null, router))\n : originalRedirect;\n\n if (typeof redirect === 'string') {\n redirect = { path: redirect };\n }\n\n if (!redirect || typeof redirect !== 'object') {\n if (process.env.NODE_ENV !== 'production') {\n warn(\n false, (\"invalid redirect option: \" + (JSON.stringify(redirect)))\n );\n }\n return _createRoute(null, location)\n }\n\n var re = redirect;\n var name = re.name;\n var path = re.path;\n var query = location.query;\n var hash = location.hash;\n var params = location.params;\n query = re.hasOwnProperty('query') ? re.query : query;\n hash = re.hasOwnProperty('hash') ? re.hash : hash;\n params = re.hasOwnProperty('params') ? re.params : params;\n\n if (name) {\n // resolved named direct\n var targetRecord = nameMap[name];\n if (process.env.NODE_ENV !== 'production') {\n assert(targetRecord, (\"redirect failed: named route \\\"\" + name + \"\\\" not found.\"));\n }\n return match({\n _normalized: true,\n name: name,\n query: query,\n hash: hash,\n params: params\n }, undefined, location)\n } else if (path) {\n // 1. resolve relative redirect\n var rawPath = resolveRecordPath(path, record);\n // 2. resolve params\n var resolvedPath = fillParams(rawPath, params, (\"redirect route with path \\\"\" + rawPath + \"\\\"\"));\n // 3. rematch with existing query and hash\n return match({\n _normalized: true,\n path: resolvedPath,\n query: query,\n hash: hash\n }, undefined, location)\n } else {\n if (process.env.NODE_ENV !== 'production') {\n warn(false, (\"invalid redirect option: \" + (JSON.stringify(redirect))));\n }\n return _createRoute(null, location)\n }\n }\n\n function alias (\n record,\n location,\n matchAs\n ) {\n var aliasedPath = fillParams(matchAs, location.params, (\"aliased route with path \\\"\" + matchAs + \"\\\"\"));\n var aliasedMatch = match({\n _normalized: true,\n path: aliasedPath\n });\n if (aliasedMatch) {\n var matched = aliasedMatch.matched;\n var aliasedRecord = matched[matched.length - 1];\n location.params = aliasedMatch.params;\n return _createRoute(aliasedRecord, location)\n }\n return _createRoute(null, location)\n }\n\n function _createRoute (\n record,\n location,\n redirectedFrom\n ) {\n if (record && record.redirect) {\n return redirect(record, redirectedFrom || location)\n }\n if (record && record.matchAs) {\n return alias(record, location, record.matchAs)\n }\n return createRoute(record, location, redirectedFrom, router)\n }\n\n return {\n match: match,\n addRoute: addRoute,\n getRoutes: getRoutes,\n addRoutes: addRoutes\n }\n}\n\nfunction matchRoute (\n regex,\n path,\n params\n) {\n var m = path.match(regex);\n\n if (!m) {\n return false\n } else if (!params) {\n return true\n }\n\n for (var i = 1, len = m.length; i < len; ++i) {\n var key = regex.keys[i - 1];\n if (key) {\n // Fix #1994: using * with props: true generates a param named 0\n params[key.name || 'pathMatch'] = typeof m[i] === 'string' ? decode(m[i]) : m[i];\n }\n }\n\n return true\n}\n\nfunction resolveRecordPath (path, record) {\n return resolvePath(path, record.parent ? record.parent.path : '/', true)\n}\n\n/* */\n\n// use User Timing api (if present) for more accurate key precision\nvar Time =\n inBrowser && window.performance && window.performance.now\n ? window.performance\n : Date;\n\nfunction genStateKey () {\n return Time.now().toFixed(3)\n}\n\nvar _key = genStateKey();\n\nfunction getStateKey () {\n return _key\n}\n\nfunction setStateKey (key) {\n return (_key = key)\n}\n\n/* */\n\nvar positionStore = Object.create(null);\n\nfunction setupScroll () {\n // Prevent browser scroll behavior on History popstate\n if ('scrollRestoration' in window.history) {\n window.history.scrollRestoration = 'manual';\n }\n // Fix for #1585 for Firefox\n // Fix for #2195 Add optional third attribute to workaround a bug in safari https://bugs.webkit.org/show_bug.cgi?id=182678\n // Fix for #2774 Support for apps loaded from Windows file shares not mapped to network drives: replaced location.origin with\n // window.location.protocol + '//' + window.location.host\n // location.host contains the port and location.hostname doesn't\n var protocolAndPath = window.location.protocol + '//' + window.location.host;\n var absolutePath = window.location.href.replace(protocolAndPath, '');\n // preserve existing history state as it could be overriden by the user\n var stateCopy = extend({}, window.history.state);\n stateCopy.key = getStateKey();\n window.history.replaceState(stateCopy, '', absolutePath);\n window.addEventListener('popstate', handlePopState);\n return function () {\n window.removeEventListener('popstate', handlePopState);\n }\n}\n\nfunction handleScroll (\n router,\n to,\n from,\n isPop\n) {\n if (!router.app) {\n return\n }\n\n var behavior = router.options.scrollBehavior;\n if (!behavior) {\n return\n }\n\n if (process.env.NODE_ENV !== 'production') {\n assert(typeof behavior === 'function', \"scrollBehavior must be a function\");\n }\n\n // wait until re-render finishes before scrolling\n router.app.$nextTick(function () {\n var position = getScrollPosition();\n var shouldScroll = behavior.call(\n router,\n to,\n from,\n isPop ? position : null\n );\n\n if (!shouldScroll) {\n return\n }\n\n if (typeof shouldScroll.then === 'function') {\n shouldScroll\n .then(function (shouldScroll) {\n scrollToPosition((shouldScroll), position);\n })\n .catch(function (err) {\n if (process.env.NODE_ENV !== 'production') {\n assert(false, err.toString());\n }\n });\n } else {\n scrollToPosition(shouldScroll, position);\n }\n });\n}\n\nfunction saveScrollPosition () {\n var key = getStateKey();\n if (key) {\n positionStore[key] = {\n x: window.pageXOffset,\n y: window.pageYOffset\n };\n }\n}\n\nfunction handlePopState (e) {\n saveScrollPosition();\n if (e.state && e.state.key) {\n setStateKey(e.state.key);\n }\n}\n\nfunction getScrollPosition () {\n var key = getStateKey();\n if (key) {\n return positionStore[key]\n }\n}\n\nfunction getElementPosition (el, offset) {\n var docEl = document.documentElement;\n var docRect = docEl.getBoundingClientRect();\n var elRect = el.getBoundingClientRect();\n return {\n x: elRect.left - docRect.left - offset.x,\n y: elRect.top - docRect.top - offset.y\n }\n}\n\nfunction isValidPosition (obj) {\n return isNumber(obj.x) || isNumber(obj.y)\n}\n\nfunction normalizePosition (obj) {\n return {\n x: isNumber(obj.x) ? obj.x : window.pageXOffset,\n y: isNumber(obj.y) ? obj.y : window.pageYOffset\n }\n}\n\nfunction normalizeOffset (obj) {\n return {\n x: isNumber(obj.x) ? obj.x : 0,\n y: isNumber(obj.y) ? obj.y : 0\n }\n}\n\nfunction isNumber (v) {\n return typeof v === 'number'\n}\n\nvar hashStartsWithNumberRE = /^#\\d/;\n\nfunction scrollToPosition (shouldScroll, position) {\n var isObject = typeof shouldScroll === 'object';\n if (isObject && typeof shouldScroll.selector === 'string') {\n // getElementById would still fail if the selector contains a more complicated query like #main[data-attr]\n // but at the same time, it doesn't make much sense to select an element with an id and an extra selector\n var el = hashStartsWithNumberRE.test(shouldScroll.selector) // $flow-disable-line\n ? document.getElementById(shouldScroll.selector.slice(1)) // $flow-disable-line\n : document.querySelector(shouldScroll.selector);\n\n if (el) {\n var offset =\n shouldScroll.offset && typeof shouldScroll.offset === 'object'\n ? shouldScroll.offset\n : {};\n offset = normalizeOffset(offset);\n position = getElementPosition(el, offset);\n } else if (isValidPosition(shouldScroll)) {\n position = normalizePosition(shouldScroll);\n }\n } else if (isObject && isValidPosition(shouldScroll)) {\n position = normalizePosition(shouldScroll);\n }\n\n if (position) {\n // $flow-disable-line\n if ('scrollBehavior' in document.documentElement.style) {\n window.scrollTo({\n left: position.x,\n top: position.y,\n // $flow-disable-line\n behavior: shouldScroll.behavior\n });\n } else {\n window.scrollTo(position.x, position.y);\n }\n }\n}\n\n/* */\n\nvar supportsPushState =\n inBrowser &&\n (function () {\n var ua = window.navigator.userAgent;\n\n if (\n (ua.indexOf('Android 2.') !== -1 || ua.indexOf('Android 4.0') !== -1) &&\n ua.indexOf('Mobile Safari') !== -1 &&\n ua.indexOf('Chrome') === -1 &&\n ua.indexOf('Windows Phone') === -1\n ) {\n return false\n }\n\n return window.history && typeof window.history.pushState === 'function'\n })();\n\nfunction pushState (url, replace) {\n saveScrollPosition();\n // try...catch the pushState call to get around Safari\n // DOM Exception 18 where it limits to 100 pushState calls\n var history = window.history;\n try {\n if (replace) {\n // preserve existing history state as it could be overriden by the user\n var stateCopy = extend({}, history.state);\n stateCopy.key = getStateKey();\n history.replaceState(stateCopy, '', url);\n } else {\n history.pushState({ key: setStateKey(genStateKey()) }, '', url);\n }\n } catch (e) {\n window.location[replace ? 'replace' : 'assign'](url);\n }\n}\n\nfunction replaceState (url) {\n pushState(url, true);\n}\n\n// When changing thing, also edit router.d.ts\nvar NavigationFailureType = {\n redirected: 2,\n aborted: 4,\n cancelled: 8,\n duplicated: 16\n};\n\nfunction createNavigationRedirectedError (from, to) {\n return createRouterError(\n from,\n to,\n NavigationFailureType.redirected,\n (\"Redirected when going from \\\"\" + (from.fullPath) + \"\\\" to \\\"\" + (stringifyRoute(\n to\n )) + \"\\\" via a navigation guard.\")\n )\n}\n\nfunction createNavigationDuplicatedError (from, to) {\n var error = createRouterError(\n from,\n to,\n NavigationFailureType.duplicated,\n (\"Avoided redundant navigation to current location: \\\"\" + (from.fullPath) + \"\\\".\")\n );\n // backwards compatible with the first introduction of Errors\n error.name = 'NavigationDuplicated';\n return error\n}\n\nfunction createNavigationCancelledError (from, to) {\n return createRouterError(\n from,\n to,\n NavigationFailureType.cancelled,\n (\"Navigation cancelled from \\\"\" + (from.fullPath) + \"\\\" to \\\"\" + (to.fullPath) + \"\\\" with a new navigation.\")\n )\n}\n\nfunction createNavigationAbortedError (from, to) {\n return createRouterError(\n from,\n to,\n NavigationFailureType.aborted,\n (\"Navigation aborted from \\\"\" + (from.fullPath) + \"\\\" to \\\"\" + (to.fullPath) + \"\\\" via a navigation guard.\")\n )\n}\n\nfunction createRouterError (from, to, type, message) {\n var error = new Error(message);\n error._isRouter = true;\n error.from = from;\n error.to = to;\n error.type = type;\n\n return error\n}\n\nvar propertiesToLog = ['params', 'query', 'hash'];\n\nfunction stringifyRoute (to) {\n if (typeof to === 'string') { return to }\n if ('path' in to) { return to.path }\n var location = {};\n propertiesToLog.forEach(function (key) {\n if (key in to) { location[key] = to[key]; }\n });\n return JSON.stringify(location, null, 2)\n}\n\nfunction isError (err) {\n return Object.prototype.toString.call(err).indexOf('Error') > -1\n}\n\nfunction isNavigationFailure (err, errorType) {\n return (\n isError(err) &&\n err._isRouter &&\n (errorType == null || err.type === errorType)\n )\n}\n\n/* */\n\nfunction runQueue (queue, fn, cb) {\n var step = function (index) {\n if (index >= queue.length) {\n cb();\n } else {\n if (queue[index]) {\n fn(queue[index], function () {\n step(index + 1);\n });\n } else {\n step(index + 1);\n }\n }\n };\n step(0);\n}\n\n/* */\n\nfunction resolveAsyncComponents (matched) {\n return function (to, from, next) {\n var hasAsync = false;\n var pending = 0;\n var error = null;\n\n flatMapComponents(matched, function (def, _, match, key) {\n // if it's a function and doesn't have cid attached,\n // assume it's an async component resolve function.\n // we are not using Vue's default async resolving mechanism because\n // we want to halt the navigation until the incoming component has been\n // resolved.\n if (typeof def === 'function' && def.cid === undefined) {\n hasAsync = true;\n pending++;\n\n var resolve = once(function (resolvedDef) {\n if (isESModule(resolvedDef)) {\n resolvedDef = resolvedDef.default;\n }\n // save resolved on async factory in case it's used elsewhere\n def.resolved = typeof resolvedDef === 'function'\n ? resolvedDef\n : _Vue.extend(resolvedDef);\n match.components[key] = resolvedDef;\n pending--;\n if (pending <= 0) {\n next();\n }\n });\n\n var reject = once(function (reason) {\n var msg = \"Failed to resolve async component \" + key + \": \" + reason;\n process.env.NODE_ENV !== 'production' && warn(false, msg);\n if (!error) {\n error = isError(reason)\n ? reason\n : new Error(msg);\n next(error);\n }\n });\n\n var res;\n try {\n res = def(resolve, reject);\n } catch (e) {\n reject(e);\n }\n if (res) {\n if (typeof res.then === 'function') {\n res.then(resolve, reject);\n } else {\n // new syntax in Vue 2.3\n var comp = res.component;\n if (comp && typeof comp.then === 'function') {\n comp.then(resolve, reject);\n }\n }\n }\n }\n });\n\n if (!hasAsync) { next(); }\n }\n}\n\nfunction flatMapComponents (\n matched,\n fn\n) {\n return flatten(matched.map(function (m) {\n return Object.keys(m.components).map(function (key) { return fn(\n m.components[key],\n m.instances[key],\n m, key\n ); })\n }))\n}\n\nfunction flatten (arr) {\n return Array.prototype.concat.apply([], arr)\n}\n\nvar hasSymbol =\n typeof Symbol === 'function' &&\n typeof Symbol.toStringTag === 'symbol';\n\nfunction isESModule (obj) {\n return obj.__esModule || (hasSymbol && obj[Symbol.toStringTag] === 'Module')\n}\n\n// in Webpack 2, require.ensure now also returns a Promise\n// so the resolve/reject functions may get called an extra time\n// if the user uses an arrow function shorthand that happens to\n// return that Promise.\nfunction once (fn) {\n var called = false;\n return function () {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n if (called) { return }\n called = true;\n return fn.apply(this, args)\n }\n}\n\n/* */\n\nvar History = function History (router, base) {\n this.router = router;\n this.base = normalizeBase(base);\n // start with a route object that stands for \"nowhere\"\n this.current = START;\n this.pending = null;\n this.ready = false;\n this.readyCbs = [];\n this.readyErrorCbs = [];\n this.errorCbs = [];\n this.listeners = [];\n};\n\nHistory.prototype.listen = function listen (cb) {\n this.cb = cb;\n};\n\nHistory.prototype.onReady = function onReady (cb, errorCb) {\n if (this.ready) {\n cb();\n } else {\n this.readyCbs.push(cb);\n if (errorCb) {\n this.readyErrorCbs.push(errorCb);\n }\n }\n};\n\nHistory.prototype.onError = function onError (errorCb) {\n this.errorCbs.push(errorCb);\n};\n\nHistory.prototype.transitionTo = function transitionTo (\n location,\n onComplete,\n onAbort\n) {\n var this$1$1 = this;\n\n var route;\n // catch redirect option https://github.com/vuejs/vue-router/issues/3201\n try {\n route = this.router.match(location, this.current);\n } catch (e) {\n this.errorCbs.forEach(function (cb) {\n cb(e);\n });\n // Exception should still be thrown\n throw e\n }\n var prev = this.current;\n this.confirmTransition(\n route,\n function () {\n this$1$1.updateRoute(route);\n onComplete && onComplete(route);\n this$1$1.ensureURL();\n this$1$1.router.afterHooks.forEach(function (hook) {\n hook && hook(route, prev);\n });\n\n // fire ready cbs once\n if (!this$1$1.ready) {\n this$1$1.ready = true;\n this$1$1.readyCbs.forEach(function (cb) {\n cb(route);\n });\n }\n },\n function (err) {\n if (onAbort) {\n onAbort(err);\n }\n if (err && !this$1$1.ready) {\n // Initial redirection should not mark the history as ready yet\n // because it's triggered by the redirection instead\n // https://github.com/vuejs/vue-router/issues/3225\n // https://github.com/vuejs/vue-router/issues/3331\n if (!isNavigationFailure(err, NavigationFailureType.redirected) || prev !== START) {\n this$1$1.ready = true;\n this$1$1.readyErrorCbs.forEach(function (cb) {\n cb(err);\n });\n }\n }\n }\n );\n};\n\nHistory.prototype.confirmTransition = function confirmTransition (route, onComplete, onAbort) {\n var this$1$1 = this;\n\n var current = this.current;\n this.pending = route;\n var abort = function (err) {\n // changed after adding errors with\n // https://github.com/vuejs/vue-router/pull/3047 before that change,\n // redirect and aborted navigation would produce an err == null\n if (!isNavigationFailure(err) && isError(err)) {\n if (this$1$1.errorCbs.length) {\n this$1$1.errorCbs.forEach(function (cb) {\n cb(err);\n });\n } else {\n if (process.env.NODE_ENV !== 'production') {\n warn(false, 'uncaught error during route navigation:');\n }\n console.error(err);\n }\n }\n onAbort && onAbort(err);\n };\n var lastRouteIndex = route.matched.length - 1;\n var lastCurrentIndex = current.matched.length - 1;\n if (\n isSameRoute(route, current) &&\n // in the case the route map has been dynamically appended to\n lastRouteIndex === lastCurrentIndex &&\n route.matched[lastRouteIndex] === current.matched[lastCurrentIndex]\n ) {\n this.ensureURL();\n if (route.hash) {\n handleScroll(this.router, current, route, false);\n }\n return abort(createNavigationDuplicatedError(current, route))\n }\n\n var ref = resolveQueue(\n this.current.matched,\n route.matched\n );\n var updated = ref.updated;\n var deactivated = ref.deactivated;\n var activated = ref.activated;\n\n var queue = [].concat(\n // in-component leave guards\n extractLeaveGuards(deactivated),\n // global before hooks\n this.router.beforeHooks,\n // in-component update hooks\n extractUpdateHooks(updated),\n // in-config enter guards\n activated.map(function (m) { return m.beforeEnter; }),\n // async components\n resolveAsyncComponents(activated)\n );\n\n var iterator = function (hook, next) {\n if (this$1$1.pending !== route) {\n return abort(createNavigationCancelledError(current, route))\n }\n try {\n hook(route, current, function (to) {\n if (to === false) {\n // next(false) -> abort navigation, ensure current URL\n this$1$1.ensureURL(true);\n abort(createNavigationAbortedError(current, route));\n } else if (isError(to)) {\n this$1$1.ensureURL(true);\n abort(to);\n } else if (\n typeof to === 'string' ||\n (typeof to === 'object' &&\n (typeof to.path === 'string' || typeof to.name === 'string'))\n ) {\n // next('/') or next({ path: '/' }) -> redirect\n abort(createNavigationRedirectedError(current, route));\n if (typeof to === 'object' && to.replace) {\n this$1$1.replace(to);\n } else {\n this$1$1.push(to);\n }\n } else {\n // confirm transition and pass on the value\n next(to);\n }\n });\n } catch (e) {\n abort(e);\n }\n };\n\n runQueue(queue, iterator, function () {\n // wait until async components are resolved before\n // extracting in-component enter guards\n var enterGuards = extractEnterGuards(activated);\n var queue = enterGuards.concat(this$1$1.router.resolveHooks);\n runQueue(queue, iterator, function () {\n if (this$1$1.pending !== route) {\n return abort(createNavigationCancelledError(current, route))\n }\n this$1$1.pending = null;\n onComplete(route);\n if (this$1$1.router.app) {\n this$1$1.router.app.$nextTick(function () {\n handleRouteEntered(route);\n });\n }\n });\n });\n};\n\nHistory.prototype.updateRoute = function updateRoute (route) {\n this.current = route;\n this.cb && this.cb(route);\n};\n\nHistory.prototype.setupListeners = function setupListeners () {\n // Default implementation is empty\n};\n\nHistory.prototype.teardown = function teardown () {\n // clean up event listeners\n // https://github.com/vuejs/vue-router/issues/2341\n this.listeners.forEach(function (cleanupListener) {\n cleanupListener();\n });\n this.listeners = [];\n\n // reset current history route\n // https://github.com/vuejs/vue-router/issues/3294\n this.current = START;\n this.pending = null;\n};\n\nfunction normalizeBase (base) {\n if (!base) {\n if (inBrowser) {\n // respect tag\n var baseEl = document.querySelector('base');\n base = (baseEl && baseEl.getAttribute('href')) || '/';\n // strip full URL origin\n base = base.replace(/^https?:\\/\\/[^\\/]+/, '');\n } else {\n base = '/';\n }\n }\n // make sure there's the starting slash\n if (base.charAt(0) !== '/') {\n base = '/' + base;\n }\n // remove trailing slash\n return base.replace(/\\/$/, '')\n}\n\nfunction resolveQueue (\n current,\n next\n) {\n var i;\n var max = Math.max(current.length, next.length);\n for (i = 0; i < max; i++) {\n if (current[i] !== next[i]) {\n break\n }\n }\n return {\n updated: next.slice(0, i),\n activated: next.slice(i),\n deactivated: current.slice(i)\n }\n}\n\nfunction extractGuards (\n records,\n name,\n bind,\n reverse\n) {\n var guards = flatMapComponents(records, function (def, instance, match, key) {\n var guard = extractGuard(def, name);\n if (guard) {\n return Array.isArray(guard)\n ? guard.map(function (guard) { return bind(guard, instance, match, key); })\n : bind(guard, instance, match, key)\n }\n });\n return flatten(reverse ? guards.reverse() : guards)\n}\n\nfunction extractGuard (\n def,\n key\n) {\n if (typeof def !== 'function') {\n // extend now so that global mixins are applied.\n def = _Vue.extend(def);\n }\n return def.options[key]\n}\n\nfunction extractLeaveGuards (deactivated) {\n return extractGuards(deactivated, 'beforeRouteLeave', bindGuard, true)\n}\n\nfunction extractUpdateHooks (updated) {\n return extractGuards(updated, 'beforeRouteUpdate', bindGuard)\n}\n\nfunction bindGuard (guard, instance) {\n if (instance) {\n return function boundRouteGuard () {\n return guard.apply(instance, arguments)\n }\n }\n}\n\nfunction extractEnterGuards (\n activated\n) {\n return extractGuards(\n activated,\n 'beforeRouteEnter',\n function (guard, _, match, key) {\n return bindEnterGuard(guard, match, key)\n }\n )\n}\n\nfunction bindEnterGuard (\n guard,\n match,\n key\n) {\n return function routeEnterGuard (to, from, next) {\n return guard(to, from, function (cb) {\n if (typeof cb === 'function') {\n if (!match.enteredCbs[key]) {\n match.enteredCbs[key] = [];\n }\n match.enteredCbs[key].push(cb);\n }\n next(cb);\n })\n }\n}\n\n/* */\n\nvar HTML5History = /*@__PURE__*/(function (History) {\n function HTML5History (router, base) {\n History.call(this, router, base);\n\n this._startLocation = getLocation(this.base);\n }\n\n if ( History ) HTML5History.__proto__ = History;\n HTML5History.prototype = Object.create( History && History.prototype );\n HTML5History.prototype.constructor = HTML5History;\n\n HTML5History.prototype.setupListeners = function setupListeners () {\n var this$1$1 = this;\n\n if (this.listeners.length > 0) {\n return\n }\n\n var router = this.router;\n var expectScroll = router.options.scrollBehavior;\n var supportsScroll = supportsPushState && expectScroll;\n\n if (supportsScroll) {\n this.listeners.push(setupScroll());\n }\n\n var handleRoutingEvent = function () {\n var current = this$1$1.current;\n\n // Avoiding first `popstate` event dispatched in some browsers but first\n // history route not updated since async guard at the same time.\n var location = getLocation(this$1$1.base);\n if (this$1$1.current === START && location === this$1$1._startLocation) {\n return\n }\n\n this$1$1.transitionTo(location, function (route) {\n if (supportsScroll) {\n handleScroll(router, route, current, true);\n }\n });\n };\n window.addEventListener('popstate', handleRoutingEvent);\n this.listeners.push(function () {\n window.removeEventListener('popstate', handleRoutingEvent);\n });\n };\n\n HTML5History.prototype.go = function go (n) {\n window.history.go(n);\n };\n\n HTML5History.prototype.push = function push (location, onComplete, onAbort) {\n var this$1$1 = this;\n\n var ref = this;\n var fromRoute = ref.current;\n this.transitionTo(location, function (route) {\n pushState(cleanPath(this$1$1.base + route.fullPath));\n handleScroll(this$1$1.router, route, fromRoute, false);\n onComplete && onComplete(route);\n }, onAbort);\n };\n\n HTML5History.prototype.replace = function replace (location, onComplete, onAbort) {\n var this$1$1 = this;\n\n var ref = this;\n var fromRoute = ref.current;\n this.transitionTo(location, function (route) {\n replaceState(cleanPath(this$1$1.base + route.fullPath));\n handleScroll(this$1$1.router, route, fromRoute, false);\n onComplete && onComplete(route);\n }, onAbort);\n };\n\n HTML5History.prototype.ensureURL = function ensureURL (push) {\n if (getLocation(this.base) !== this.current.fullPath) {\n var current = cleanPath(this.base + this.current.fullPath);\n push ? pushState(current) : replaceState(current);\n }\n };\n\n HTML5History.prototype.getCurrentLocation = function getCurrentLocation () {\n return getLocation(this.base)\n };\n\n return HTML5History;\n}(History));\n\nfunction getLocation (base) {\n var path = window.location.pathname;\n var pathLowerCase = path.toLowerCase();\n var baseLowerCase = base.toLowerCase();\n // base=\"/a\" shouldn't turn path=\"/app\" into \"/a/pp\"\n // https://github.com/vuejs/vue-router/issues/3555\n // so we ensure the trailing slash in the base\n if (base && ((pathLowerCase === baseLowerCase) ||\n (pathLowerCase.indexOf(cleanPath(baseLowerCase + '/')) === 0))) {\n path = path.slice(base.length);\n }\n return (path || '/') + window.location.search + window.location.hash\n}\n\n/* */\n\nvar HashHistory = /*@__PURE__*/(function (History) {\n function HashHistory (router, base, fallback) {\n History.call(this, router, base);\n // check history fallback deeplinking\n if (fallback && checkFallback(this.base)) {\n return\n }\n ensureSlash();\n }\n\n if ( History ) HashHistory.__proto__ = History;\n HashHistory.prototype = Object.create( History && History.prototype );\n HashHistory.prototype.constructor = HashHistory;\n\n // this is delayed until the app mounts\n // to avoid the hashchange listener being fired too early\n HashHistory.prototype.setupListeners = function setupListeners () {\n var this$1$1 = this;\n\n if (this.listeners.length > 0) {\n return\n }\n\n var router = this.router;\n var expectScroll = router.options.scrollBehavior;\n var supportsScroll = supportsPushState && expectScroll;\n\n if (supportsScroll) {\n this.listeners.push(setupScroll());\n }\n\n var handleRoutingEvent = function () {\n var current = this$1$1.current;\n if (!ensureSlash()) {\n return\n }\n this$1$1.transitionTo(getHash(), function (route) {\n if (supportsScroll) {\n handleScroll(this$1$1.router, route, current, true);\n }\n if (!supportsPushState) {\n replaceHash(route.fullPath);\n }\n });\n };\n var eventType = supportsPushState ? 'popstate' : 'hashchange';\n window.addEventListener(\n eventType,\n handleRoutingEvent\n );\n this.listeners.push(function () {\n window.removeEventListener(eventType, handleRoutingEvent);\n });\n };\n\n HashHistory.prototype.push = function push (location, onComplete, onAbort) {\n var this$1$1 = this;\n\n var ref = this;\n var fromRoute = ref.current;\n this.transitionTo(\n location,\n function (route) {\n pushHash(route.fullPath);\n handleScroll(this$1$1.router, route, fromRoute, false);\n onComplete && onComplete(route);\n },\n onAbort\n );\n };\n\n HashHistory.prototype.replace = function replace (location, onComplete, onAbort) {\n var this$1$1 = this;\n\n var ref = this;\n var fromRoute = ref.current;\n this.transitionTo(\n location,\n function (route) {\n replaceHash(route.fullPath);\n handleScroll(this$1$1.router, route, fromRoute, false);\n onComplete && onComplete(route);\n },\n onAbort\n );\n };\n\n HashHistory.prototype.go = function go (n) {\n window.history.go(n);\n };\n\n HashHistory.prototype.ensureURL = function ensureURL (push) {\n var current = this.current.fullPath;\n if (getHash() !== current) {\n push ? pushHash(current) : replaceHash(current);\n }\n };\n\n HashHistory.prototype.getCurrentLocation = function getCurrentLocation () {\n return getHash()\n };\n\n return HashHistory;\n}(History));\n\nfunction checkFallback (base) {\n var location = getLocation(base);\n if (!/^\\/#/.test(location)) {\n window.location.replace(cleanPath(base + '/#' + location));\n return true\n }\n}\n\nfunction ensureSlash () {\n var path = getHash();\n if (path.charAt(0) === '/') {\n return true\n }\n replaceHash('/' + path);\n return false\n}\n\nfunction getHash () {\n // We can't use window.location.hash here because it's not\n // consistent across browsers - Firefox will pre-decode it!\n var href = window.location.href;\n var index = href.indexOf('#');\n // empty path\n if (index < 0) { return '' }\n\n href = href.slice(index + 1);\n\n return href\n}\n\nfunction getUrl (path) {\n var href = window.location.href;\n var i = href.indexOf('#');\n var base = i >= 0 ? href.slice(0, i) : href;\n return (base + \"#\" + path)\n}\n\nfunction pushHash (path) {\n if (supportsPushState) {\n pushState(getUrl(path));\n } else {\n window.location.hash = path;\n }\n}\n\nfunction replaceHash (path) {\n if (supportsPushState) {\n replaceState(getUrl(path));\n } else {\n window.location.replace(getUrl(path));\n }\n}\n\n/* */\n\nvar AbstractHistory = /*@__PURE__*/(function (History) {\n function AbstractHistory (router, base) {\n History.call(this, router, base);\n this.stack = [];\n this.index = -1;\n }\n\n if ( History ) AbstractHistory.__proto__ = History;\n AbstractHistory.prototype = Object.create( History && History.prototype );\n AbstractHistory.prototype.constructor = AbstractHistory;\n\n AbstractHistory.prototype.push = function push (location, onComplete, onAbort) {\n var this$1$1 = this;\n\n this.transitionTo(\n location,\n function (route) {\n this$1$1.stack = this$1$1.stack.slice(0, this$1$1.index + 1).concat(route);\n this$1$1.index++;\n onComplete && onComplete(route);\n },\n onAbort\n );\n };\n\n AbstractHistory.prototype.replace = function replace (location, onComplete, onAbort) {\n var this$1$1 = this;\n\n this.transitionTo(\n location,\n function (route) {\n this$1$1.stack = this$1$1.stack.slice(0, this$1$1.index).concat(route);\n onComplete && onComplete(route);\n },\n onAbort\n );\n };\n\n AbstractHistory.prototype.go = function go (n) {\n var this$1$1 = this;\n\n var targetIndex = this.index + n;\n if (targetIndex < 0 || targetIndex >= this.stack.length) {\n return\n }\n var route = this.stack[targetIndex];\n this.confirmTransition(\n route,\n function () {\n var prev = this$1$1.current;\n this$1$1.index = targetIndex;\n this$1$1.updateRoute(route);\n this$1$1.router.afterHooks.forEach(function (hook) {\n hook && hook(route, prev);\n });\n },\n function (err) {\n if (isNavigationFailure(err, NavigationFailureType.duplicated)) {\n this$1$1.index = targetIndex;\n }\n }\n );\n };\n\n AbstractHistory.prototype.getCurrentLocation = function getCurrentLocation () {\n var current = this.stack[this.stack.length - 1];\n return current ? current.fullPath : '/'\n };\n\n AbstractHistory.prototype.ensureURL = function ensureURL () {\n // noop\n };\n\n return AbstractHistory;\n}(History));\n\n/* */\n\n\n\nvar VueRouter = function VueRouter (options) {\n if ( options === void 0 ) options = {};\n\n if (process.env.NODE_ENV !== 'production') {\n warn(this instanceof VueRouter, \"Router must be called with the new operator.\");\n }\n this.app = null;\n this.apps = [];\n this.options = options;\n this.beforeHooks = [];\n this.resolveHooks = [];\n this.afterHooks = [];\n this.matcher = createMatcher(options.routes || [], this);\n\n var mode = options.mode || 'hash';\n this.fallback =\n mode === 'history' && !supportsPushState && options.fallback !== false;\n if (this.fallback) {\n mode = 'hash';\n }\n if (!inBrowser) {\n mode = 'abstract';\n }\n this.mode = mode;\n\n switch (mode) {\n case 'history':\n this.history = new HTML5History(this, options.base);\n break\n case 'hash':\n this.history = new HashHistory(this, options.base, this.fallback);\n break\n case 'abstract':\n this.history = new AbstractHistory(this, options.base);\n break\n default:\n if (process.env.NODE_ENV !== 'production') {\n assert(false, (\"invalid mode: \" + mode));\n }\n }\n};\n\nvar prototypeAccessors = { currentRoute: { configurable: true } };\n\nVueRouter.prototype.match = function match (raw, current, redirectedFrom) {\n return this.matcher.match(raw, current, redirectedFrom)\n};\n\nprototypeAccessors.currentRoute.get = function () {\n return this.history && this.history.current\n};\n\nVueRouter.prototype.init = function init (app /* Vue component instance */) {\n var this$1$1 = this;\n\n process.env.NODE_ENV !== 'production' &&\n assert(\n install.installed,\n \"not installed. Make sure to call `Vue.use(VueRouter)` \" +\n \"before creating root instance.\"\n );\n\n this.apps.push(app);\n\n // set up app destroyed handler\n // https://github.com/vuejs/vue-router/issues/2639\n app.$once('hook:destroyed', function () {\n // clean out app from this.apps array once destroyed\n var index = this$1$1.apps.indexOf(app);\n if (index > -1) { this$1$1.apps.splice(index, 1); }\n // ensure we still have a main app or null if no apps\n // we do not release the router so it can be reused\n if (this$1$1.app === app) { this$1$1.app = this$1$1.apps[0] || null; }\n\n if (!this$1$1.app) { this$1$1.history.teardown(); }\n });\n\n // main app previously initialized\n // return as we don't need to set up new history listener\n if (this.app) {\n return\n }\n\n this.app = app;\n\n var history = this.history;\n\n if (history instanceof HTML5History || history instanceof HashHistory) {\n var handleInitialScroll = function (routeOrError) {\n var from = history.current;\n var expectScroll = this$1$1.options.scrollBehavior;\n var supportsScroll = supportsPushState && expectScroll;\n\n if (supportsScroll && 'fullPath' in routeOrError) {\n handleScroll(this$1$1, routeOrError, from, false);\n }\n };\n var setupListeners = function (routeOrError) {\n history.setupListeners();\n handleInitialScroll(routeOrError);\n };\n history.transitionTo(\n history.getCurrentLocation(),\n setupListeners,\n setupListeners\n );\n }\n\n history.listen(function (route) {\n this$1$1.apps.forEach(function (app) {\n app._route = route;\n });\n });\n};\n\nVueRouter.prototype.beforeEach = function beforeEach (fn) {\n return registerHook(this.beforeHooks, fn)\n};\n\nVueRouter.prototype.beforeResolve = function beforeResolve (fn) {\n return registerHook(this.resolveHooks, fn)\n};\n\nVueRouter.prototype.afterEach = function afterEach (fn) {\n return registerHook(this.afterHooks, fn)\n};\n\nVueRouter.prototype.onReady = function onReady (cb, errorCb) {\n this.history.onReady(cb, errorCb);\n};\n\nVueRouter.prototype.onError = function onError (errorCb) {\n this.history.onError(errorCb);\n};\n\nVueRouter.prototype.push = function push (location, onComplete, onAbort) {\n var this$1$1 = this;\n\n // $flow-disable-line\n if (!onComplete && !onAbort && typeof Promise !== 'undefined') {\n return new Promise(function (resolve, reject) {\n this$1$1.history.push(location, resolve, reject);\n })\n } else {\n this.history.push(location, onComplete, onAbort);\n }\n};\n\nVueRouter.prototype.replace = function replace (location, onComplete, onAbort) {\n var this$1$1 = this;\n\n // $flow-disable-line\n if (!onComplete && !onAbort && typeof Promise !== 'undefined') {\n return new Promise(function (resolve, reject) {\n this$1$1.history.replace(location, resolve, reject);\n })\n } else {\n this.history.replace(location, onComplete, onAbort);\n }\n};\n\nVueRouter.prototype.go = function go (n) {\n this.history.go(n);\n};\n\nVueRouter.prototype.back = function back () {\n this.go(-1);\n};\n\nVueRouter.prototype.forward = function forward () {\n this.go(1);\n};\n\nVueRouter.prototype.getMatchedComponents = function getMatchedComponents (to) {\n var route = to\n ? to.matched\n ? to\n : this.resolve(to).route\n : this.currentRoute;\n if (!route) {\n return []\n }\n return [].concat.apply(\n [],\n route.matched.map(function (m) {\n return Object.keys(m.components).map(function (key) {\n return m.components[key]\n })\n })\n )\n};\n\nVueRouter.prototype.resolve = function resolve (\n to,\n current,\n append\n) {\n current = current || this.history.current;\n var location = normalizeLocation(to, current, append, this);\n var route = this.match(location, current);\n var fullPath = route.redirectedFrom || route.fullPath;\n var base = this.history.base;\n var href = createHref(base, fullPath, this.mode);\n return {\n location: location,\n route: route,\n href: href,\n // for backwards compat\n normalizedTo: location,\n resolved: route\n }\n};\n\nVueRouter.prototype.getRoutes = function getRoutes () {\n return this.matcher.getRoutes()\n};\n\nVueRouter.prototype.addRoute = function addRoute (parentOrRoute, route) {\n this.matcher.addRoute(parentOrRoute, route);\n if (this.history.current !== START) {\n this.history.transitionTo(this.history.getCurrentLocation());\n }\n};\n\nVueRouter.prototype.addRoutes = function addRoutes (routes) {\n if (process.env.NODE_ENV !== 'production') {\n warn(false, 'router.addRoutes() is deprecated and has been removed in Vue Router 4. Use router.addRoute() instead.');\n }\n this.matcher.addRoutes(routes);\n if (this.history.current !== START) {\n this.history.transitionTo(this.history.getCurrentLocation());\n }\n};\n\nObject.defineProperties( VueRouter.prototype, prototypeAccessors );\n\nvar VueRouter$1 = VueRouter;\n\nfunction registerHook (list, fn) {\n list.push(fn);\n return function () {\n var i = list.indexOf(fn);\n if (i > -1) { list.splice(i, 1); }\n }\n}\n\nfunction createHref (base, fullPath, mode) {\n var path = mode === 'hash' ? '#' + fullPath : fullPath;\n return base ? cleanPath(base + '/' + path) : path\n}\n\n// We cannot remove this as it would be a breaking change\nVueRouter.install = install;\nVueRouter.version = '3.6.5';\nVueRouter.isNavigationFailure = isNavigationFailure;\nVueRouter.NavigationFailureType = NavigationFailureType;\nVueRouter.START_LOCATION = START;\n\nif (inBrowser && window.Vue) {\n window.Vue.use(VueRouter);\n}\n\nvar version = '3.6.5';\n\nexport { NavigationFailureType, Link as RouterLink, View as RouterView, START as START_LOCATION, VueRouter$1 as default, isNavigationFailure, version };\n","let urlAlphabet =\n 'useandom-26T198340PX75pxJACKVERYMINDBUSHWOLF_GQZbfghjklqvwyzrict'\nlet customAlphabet = (alphabet, defaultSize = 21) => {\n return (size = defaultSize) => {\n let id = ''\n let i = size\n while (i--) {\n id += alphabet[(Math.random() * alphabet.length) | 0]\n }\n return id\n }\n}\nlet nanoid = (size = 21) => {\n let id = ''\n let i = size\n while (i--) {\n id += urlAlphabet[(Math.random() * 64) | 0]\n }\n return id\n}\nexport { nanoid, customAlphabet }\n","\n/**\n * vue-simple-portal\n * version: 0.1.5,\n * (c) Thorsten Lünborg, 2021 - present\n * LICENCE: Apache-2.0\n * http://github.com/linusborg/vue-simple-portal\n*/\nimport Vue from 'vue';\nimport { nanoid } from 'nanoid/non-secure';\n\nfunction _typeof(obj) {\n \"@babel/helpers - typeof\";\n\n if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") {\n _typeof = function (obj) {\n return typeof obj;\n };\n } else {\n _typeof = function (obj) {\n return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n };\n }\n\n return _typeof(obj);\n}\n\nvar config = {\n selector: \"vue-portal-target-\".concat(nanoid())\n};\nvar setSelector = function setSelector(selector) {\n return config.selector = selector;\n};\nvar isBrowser = typeof window !== 'undefined' && (typeof document === \"undefined\" ? \"undefined\" : _typeof(document)) !== undefined;\n\nvar TargetContainer = Vue.extend({\n // as an abstract component, it doesn't appear in\n // the $parent chain of components.\n // which means the next parent of any component rendered inside of this oen\n // will be the parent from which is was sent\n // @ts-expect-error\n abstract: true,\n name: 'PortalOutlet',\n props: ['nodes', 'tag'],\n data: function data(vm) {\n return {\n updatedNodes: vm.nodes\n };\n },\n render: function render(h) {\n var nodes = this.updatedNodes && this.updatedNodes();\n if (!nodes) return h();\n return nodes.length === 1 && !nodes[0].text ? nodes : h(this.tag || 'DIV', nodes);\n },\n destroyed: function destroyed() {\n var el = this.$el;\n el && el.parentNode.removeChild(el);\n }\n});\n\nvar Portal = Vue.extend({\n name: 'VueSimplePortal',\n props: {\n disabled: {\n type: Boolean\n },\n prepend: {\n type: Boolean\n },\n selector: {\n type: String,\n default: function _default() {\n return \"#\".concat(config.selector);\n }\n },\n tag: {\n type: String,\n default: 'DIV'\n }\n },\n render: function render(h) {\n if (this.disabled) {\n var nodes = this.$scopedSlots && this.$scopedSlots.default();\n if (!nodes) return h();\n return nodes.length < 2 && !nodes[0].text ? nodes : h(this.tag, nodes);\n }\n\n return h();\n },\n created: function created() {\n if (!this.getTargetEl()) {\n this.insertTargetEl();\n }\n },\n updated: function updated() {\n var _this = this;\n\n // We only update the target container component\n // if the scoped slot function is a fresh one\n // The new slot syntax (since Vue 2.6) can cache unchanged slot functions\n // and we want to respect that here.\n this.$nextTick(function () {\n if (!_this.disabled && _this.slotFn !== _this.$scopedSlots.default) {\n _this.container.updatedNodes = _this.$scopedSlots.default;\n }\n\n _this.slotFn = _this.$scopedSlots.default;\n });\n },\n beforeDestroy: function beforeDestroy() {\n this.unmount();\n },\n watch: {\n disabled: {\n immediate: true,\n handler: function handler(disabled) {\n disabled ? this.unmount() : this.$nextTick(this.mount);\n }\n }\n },\n methods: {\n // This returns the element into which the content should be mounted.\n getTargetEl: function getTargetEl() {\n if (!isBrowser) return;\n return document.querySelector(this.selector);\n },\n insertTargetEl: function insertTargetEl() {\n if (!isBrowser) return;\n var parent = document.querySelector('body');\n var child = document.createElement(this.tag);\n child.id = this.selector.substring(1);\n parent.appendChild(child);\n },\n mount: function mount() {\n if (!isBrowser) return;\n var targetEl = this.getTargetEl();\n var el = document.createElement('DIV');\n\n if (this.prepend && targetEl.firstChild) {\n targetEl.insertBefore(el, targetEl.firstChild);\n } else {\n targetEl.appendChild(el);\n }\n\n this.container = new TargetContainer({\n el: el,\n parent: this,\n propsData: {\n tag: this.tag,\n nodes: this.$scopedSlots.default\n }\n });\n },\n unmount: function unmount() {\n if (this.container) {\n this.container.$destroy();\n delete this.container;\n }\n }\n }\n});\n\nfunction install(_Vue) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n _Vue.component(options.name || 'portal', Portal);\n\n if (options.defaultSelector) {\n setSelector(options.defaultSelector);\n }\n}\n\nif (typeof window !== 'undefined' && window.Vue && window.Vue === Vue) {\n // plugin was inlcuded directly in a browser\n Vue.use(install);\n}\n\nexport default install;\nexport { Portal, config, setSelector };\n","import '../assets/NcContent-tZHbeX2L.css';\nimport { emit as r } from \"@nextcloud/event-bus\";\nimport { Portal as h } from \"@linusborg/vue-simple-portal\";\nimport { useIsMobile as o } from \"../Composables/useIsMobile.mjs\";\nimport { r as l, C as a, a as c } from \"./_l10n-BaNxGGXy.mjs\";\nimport s from \"../Components/NcButton.mjs\";\nimport { N as C } from \"./NcIconSvgWrapper-BTdzvQGV.mjs\";\nimport { n as p } from \"./_plugin-vue2_normalizer-Bj5bLKV4.mjs\";\nl(a);\nconst g = '\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n', f = '\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n', d = {\n name: \"NcContent\",\n components: {\n NcButton: s,\n NcIconSvgWrapper: C,\n Teleport: h\n },\n provide() {\n return {\n \"NcContent:setHasAppNavigation\": this.setAppNavigation\n };\n },\n props: {\n appName: {\n type: String,\n required: !0\n }\n },\n setup() {\n return {\n isMobile: o()\n };\n },\n data() {\n return {\n hasAppNavigation: !1,\n currentFocus: \"\"\n // unknown\n };\n },\n computed: {\n currentImage() {\n return this.currentFocus === \"navigation\" ? f : g;\n }\n },\n beforeMount() {\n const e = document.getElementById(\"skip-actions\");\n e && (e.innerHTML = \"\", e.classList.add(\"vue-skip-actions\"));\n },\n methods: {\n t: c,\n openAppNavigation() {\n r(\"toggle-navigation\", { open: !0 }), this.$nextTick(() => {\n window.location.hash = \"app-navigation-vue\", document.getElementById(\"app-navigation-vue\").focus();\n });\n },\n setAppNavigation(e) {\n this.hasAppNavigation = e, this.currentFocus === \"\" && (this.currentFocus = \"navigation\");\n }\n }\n};\nvar x = function() {\n var t = this, i = t._self._c;\n return i(\"div\", { class: [\"content\", \"app-\".concat(t.appName.toLowerCase())], attrs: { id: \"content-vue\" } }, [i(\"Teleport\", { attrs: { selector: \"#skip-actions\" } }, [i(\"div\", { staticClass: \"vue-skip-actions__container\" }, [i(\"div\", { staticClass: \"vue-skip-actions__headline\" }, [t._v(\" \" + t._s(t.t(\"Keyboard navigation help\")) + \" \")]), i(\"div\", { staticClass: \"vue-skip-actions__buttons\" }, [i(\"NcButton\", { directives: [{ name: \"show\", rawName: \"v-show\", value: t.hasAppNavigation, expression: \"hasAppNavigation\" }], attrs: { type: \"tertiary\", href: \"#app-navigation-vue\" }, on: { click: function(n) {\n return n.preventDefault(), t.openAppNavigation.apply(null, arguments);\n }, focusin: function(n) {\n t.currentFocus = \"navigation\";\n }, mouseover: function(n) {\n t.currentFocus = \"navigation\";\n } } }, [t._v(\" \" + t._s(t.t(\"Skip to app navigation\")) + \" \")]), i(\"NcButton\", { attrs: { type: \"tertiary\", href: \"#app-content-vue\" }, on: { focusin: function(n) {\n t.currentFocus = \"content\";\n }, mouseover: function(n) {\n t.currentFocus = \"content\";\n } } }, [t._v(\" \" + t._s(t.t(\"Skip to main content\")) + \" \")])], 1), i(\"NcIconSvgWrapper\", { directives: [{ name: \"show\", rawName: \"v-show\", value: !t.isMobile, expression: \"!isMobile\" }], staticClass: \"vue-skip-actions__image\", attrs: { svg: t.currentImage, size: \"auto\" } })], 1), t._v(\"  \")]), t._t(\"default\")], 2);\n}, v = [], u = /* @__PURE__ */ p(\n d,\n x,\n v,\n !1,\n null,\n \"cfc84a6c\",\n null,\n null\n);\nconst N = u.exports;\nexport {\n N\n};\n","var __defProp = Object.defineProperty;\nvar __defProps = Object.defineProperties;\nvar __getOwnPropDescs = Object.getOwnPropertyDescriptors;\nvar __getOwnPropSymbols = Object.getOwnPropertySymbols;\nvar __hasOwnProp = Object.prototype.hasOwnProperty;\nvar __propIsEnum = Object.prototype.propertyIsEnumerable;\nvar __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;\nvar __spreadValues = (a, b) => {\n for (var prop in b || (b = {}))\n if (__hasOwnProp.call(b, prop))\n __defNormalProp(a, prop, b[prop]);\n if (__getOwnPropSymbols)\n for (var prop of __getOwnPropSymbols(b)) {\n if (__propIsEnum.call(b, prop))\n __defNormalProp(a, prop, b[prop]);\n }\n return a;\n};\nvar __spreadProps = (a, b) => __defProps(a, __getOwnPropDescs(b));\nvar __objRest = (source, exclude) => {\n var target = {};\n for (var prop in source)\n if (__hasOwnProp.call(source, prop) && exclude.indexOf(prop) < 0)\n target[prop] = source[prop];\n if (source != null && __getOwnPropSymbols)\n for (var prop of __getOwnPropSymbols(source)) {\n if (exclude.indexOf(prop) < 0 && __propIsEnum.call(source, prop))\n target[prop] = source[prop];\n }\n return target;\n};\nvar splitpanes_vue_vue_type_style_index_0_lang = \"\";\nfunction normalizeComponent(scriptExports, render2, staticRenderFns2, functionalTemplate, injectStyles, scopeId, moduleIdentifier, shadowMode) {\n var options = typeof scriptExports === \"function\" ? scriptExports.options : scriptExports;\n if (render2) {\n options.render = render2;\n options.staticRenderFns = staticRenderFns2;\n options._compiled = true;\n }\n if (functionalTemplate) {\n options.functional = true;\n }\n if (scopeId) {\n options._scopeId = \"data-v-\" + scopeId;\n }\n var hook;\n if (moduleIdentifier) {\n hook = function(context) {\n context = context || this.$vnode && this.$vnode.ssrContext || this.parent && this.parent.$vnode && this.parent.$vnode.ssrContext;\n if (!context && typeof __VUE_SSR_CONTEXT__ !== \"undefined\") {\n context = __VUE_SSR_CONTEXT__;\n }\n if (injectStyles) {\n injectStyles.call(this, context);\n }\n if (context && context._registeredComponents) {\n context._registeredComponents.add(moduleIdentifier);\n }\n };\n options._ssrRegister = hook;\n } else if (injectStyles) {\n hook = shadowMode ? function() {\n injectStyles.call(this, (options.functional ? this.parent : this).$root.$options.shadowRoot);\n } : injectStyles;\n }\n if (hook) {\n if (options.functional) {\n options._injectStyles = hook;\n var originalRender = options.render;\n options.render = function renderWithStyleInjection(h, context) {\n hook.call(context);\n return originalRender(h, context);\n };\n } else {\n var existing = options.beforeCreate;\n options.beforeCreate = existing ? [].concat(existing, hook) : [hook];\n }\n }\n return {\n exports: scriptExports,\n options\n };\n}\nconst __vue2_script$1 = {\n name: \"splitpanes\",\n props: {\n horizontal: { type: Boolean },\n pushOtherPanes: { type: Boolean, default: true },\n dblClickSplitter: { type: Boolean, default: true },\n rtl: { type: Boolean, default: false },\n firstSplitter: { type: Boolean }\n },\n provide() {\n return {\n requestUpdate: this.requestUpdate,\n onPaneAdd: this.onPaneAdd,\n onPaneRemove: this.onPaneRemove,\n onPaneClick: this.onPaneClick\n };\n },\n data: () => ({\n container: null,\n ready: false,\n panes: [],\n touch: {\n mouseDown: false,\n dragging: false,\n activeSplitter: null\n },\n splitterTaps: {\n splitter: null,\n timeoutId: null\n }\n }),\n computed: {\n panesCount() {\n return this.panes.length;\n },\n indexedPanes() {\n return this.panes.reduce((obj, pane2) => (obj[pane2.id] = pane2) && obj, {});\n }\n },\n methods: {\n updatePaneComponents() {\n this.panes.forEach((pane2) => {\n pane2.update && pane2.update({\n [this.horizontal ? \"height\" : \"width\"]: `${this.indexedPanes[pane2.id].size}%`\n });\n });\n },\n bindEvents() {\n document.addEventListener(\"mousemove\", this.onMouseMove, { passive: false });\n document.addEventListener(\"mouseup\", this.onMouseUp);\n if (\"ontouchstart\" in window) {\n document.addEventListener(\"touchmove\", this.onMouseMove, { passive: false });\n document.addEventListener(\"touchend\", this.onMouseUp);\n }\n },\n unbindEvents() {\n document.removeEventListener(\"mousemove\", this.onMouseMove, { passive: false });\n document.removeEventListener(\"mouseup\", this.onMouseUp);\n if (\"ontouchstart\" in window) {\n document.removeEventListener(\"touchmove\", this.onMouseMove, { passive: false });\n document.removeEventListener(\"touchend\", this.onMouseUp);\n }\n },\n onMouseDown(event, splitterIndex) {\n this.bindEvents();\n this.touch.mouseDown = true;\n this.touch.activeSplitter = splitterIndex;\n },\n onMouseMove(event) {\n if (this.touch.mouseDown) {\n event.preventDefault();\n this.touch.dragging = true;\n this.calculatePanesSize(this.getCurrentMouseDrag(event));\n this.$emit(\"resize\", this.panes.map((pane2) => ({ min: pane2.min, max: pane2.max, size: pane2.size })));\n }\n },\n onMouseUp() {\n if (this.touch.dragging) {\n this.$emit(\"resized\", this.panes.map((pane2) => ({ min: pane2.min, max: pane2.max, size: pane2.size })));\n }\n this.touch.mouseDown = false;\n setTimeout(() => {\n this.touch.dragging = false;\n this.unbindEvents();\n }, 100);\n },\n onSplitterClick(event, splitterIndex) {\n if (\"ontouchstart\" in window) {\n event.preventDefault();\n if (this.dblClickSplitter) {\n if (this.splitterTaps.splitter === splitterIndex) {\n clearTimeout(this.splitterTaps.timeoutId);\n this.splitterTaps.timeoutId = null;\n this.onSplitterDblClick(event, splitterIndex);\n this.splitterTaps.splitter = null;\n } else {\n this.splitterTaps.splitter = splitterIndex;\n this.splitterTaps.timeoutId = setTimeout(() => {\n this.splitterTaps.splitter = null;\n }, 500);\n }\n }\n }\n if (!this.touch.dragging)\n this.$emit(\"splitter-click\", this.panes[splitterIndex]);\n },\n onSplitterDblClick(event, splitterIndex) {\n let totalMinSizes = 0;\n this.panes = this.panes.map((pane2, i) => {\n pane2.size = i === splitterIndex ? pane2.max : pane2.min;\n if (i !== splitterIndex)\n totalMinSizes += pane2.min;\n return pane2;\n });\n this.panes[splitterIndex].size -= totalMinSizes;\n this.$emit(\"pane-maximize\", this.panes[splitterIndex]);\n },\n onPaneClick(event, paneId) {\n this.$emit(\"pane-click\", this.indexedPanes[paneId]);\n },\n getCurrentMouseDrag(event) {\n const rect = this.container.getBoundingClientRect();\n const { clientX, clientY } = \"ontouchstart\" in window && event.touches ? event.touches[0] : event;\n return {\n x: clientX - rect.left,\n y: clientY - rect.top\n };\n },\n getCurrentDragPercentage(drag) {\n drag = drag[this.horizontal ? \"y\" : \"x\"];\n const containerSize = this.container[this.horizontal ? \"clientHeight\" : \"clientWidth\"];\n if (this.rtl && !this.horizontal)\n drag = containerSize - drag;\n return drag * 100 / containerSize;\n },\n calculatePanesSize(drag) {\n const splitterIndex = this.touch.activeSplitter;\n let sums = {\n prevPanesSize: this.sumPrevPanesSize(splitterIndex),\n nextPanesSize: this.sumNextPanesSize(splitterIndex),\n prevReachedMinPanes: 0,\n nextReachedMinPanes: 0\n };\n const minDrag = 0 + (this.pushOtherPanes ? 0 : sums.prevPanesSize);\n const maxDrag = 100 - (this.pushOtherPanes ? 0 : sums.nextPanesSize);\n const dragPercentage = Math.max(Math.min(this.getCurrentDragPercentage(drag), maxDrag), minDrag);\n let panesToResize = [splitterIndex, splitterIndex + 1];\n let paneBefore = this.panes[panesToResize[0]] || null;\n let paneAfter = this.panes[panesToResize[1]] || null;\n const paneBeforeMaxReached = paneBefore.max < 100 && dragPercentage >= paneBefore.max + sums.prevPanesSize;\n const paneAfterMaxReached = paneAfter.max < 100 && dragPercentage <= 100 - (paneAfter.max + this.sumNextPanesSize(splitterIndex + 1));\n if (paneBeforeMaxReached || paneAfterMaxReached) {\n if (paneBeforeMaxReached) {\n paneBefore.size = paneBefore.max;\n paneAfter.size = Math.max(100 - paneBefore.max - sums.prevPanesSize - sums.nextPanesSize, 0);\n } else {\n paneBefore.size = Math.max(100 - paneAfter.max - sums.prevPanesSize - this.sumNextPanesSize(splitterIndex + 1), 0);\n paneAfter.size = paneAfter.max;\n }\n return;\n }\n if (this.pushOtherPanes) {\n const vars = this.doPushOtherPanes(sums, dragPercentage);\n if (!vars)\n return;\n ({ sums, panesToResize } = vars);\n paneBefore = this.panes[panesToResize[0]] || null;\n paneAfter = this.panes[panesToResize[1]] || null;\n }\n if (paneBefore !== null) {\n paneBefore.size = Math.min(Math.max(dragPercentage - sums.prevPanesSize - sums.prevReachedMinPanes, paneBefore.min), paneBefore.max);\n }\n if (paneAfter !== null) {\n paneAfter.size = Math.min(Math.max(100 - dragPercentage - sums.nextPanesSize - sums.nextReachedMinPanes, paneAfter.min), paneAfter.max);\n }\n },\n doPushOtherPanes(sums, dragPercentage) {\n const splitterIndex = this.touch.activeSplitter;\n const panesToResize = [splitterIndex, splitterIndex + 1];\n if (dragPercentage < sums.prevPanesSize + this.panes[panesToResize[0]].min) {\n panesToResize[0] = this.findPrevExpandedPane(splitterIndex).index;\n sums.prevReachedMinPanes = 0;\n if (panesToResize[0] < splitterIndex) {\n this.panes.forEach((pane2, i) => {\n if (i > panesToResize[0] && i <= splitterIndex) {\n pane2.size = pane2.min;\n sums.prevReachedMinPanes += pane2.min;\n }\n });\n }\n sums.prevPanesSize = this.sumPrevPanesSize(panesToResize[0]);\n if (panesToResize[0] === void 0) {\n sums.prevReachedMinPanes = 0;\n this.panes[0].size = this.panes[0].min;\n this.panes.forEach((pane2, i) => {\n if (i > 0 && i <= splitterIndex) {\n pane2.size = pane2.min;\n sums.prevReachedMinPanes += pane2.min;\n }\n });\n this.panes[panesToResize[1]].size = 100 - sums.prevReachedMinPanes - this.panes[0].min - sums.prevPanesSize - sums.nextPanesSize;\n return null;\n }\n }\n if (dragPercentage > 100 - sums.nextPanesSize - this.panes[panesToResize[1]].min) {\n panesToResize[1] = this.findNextExpandedPane(splitterIndex).index;\n sums.nextReachedMinPanes = 0;\n if (panesToResize[1] > splitterIndex + 1) {\n this.panes.forEach((pane2, i) => {\n if (i > splitterIndex && i < panesToResize[1]) {\n pane2.size = pane2.min;\n sums.nextReachedMinPanes += pane2.min;\n }\n });\n }\n sums.nextPanesSize = this.sumNextPanesSize(panesToResize[1] - 1);\n if (panesToResize[1] === void 0) {\n sums.nextReachedMinPanes = 0;\n this.panes[this.panesCount - 1].size = this.panes[this.panesCount - 1].min;\n this.panes.forEach((pane2, i) => {\n if (i < this.panesCount - 1 && i >= splitterIndex + 1) {\n pane2.size = pane2.min;\n sums.nextReachedMinPanes += pane2.min;\n }\n });\n this.panes[panesToResize[0]].size = 100 - sums.prevPanesSize - sums.nextReachedMinPanes - this.panes[this.panesCount - 1].min - sums.nextPanesSize;\n return null;\n }\n }\n return { sums, panesToResize };\n },\n sumPrevPanesSize(splitterIndex) {\n return this.panes.reduce((total, pane2, i) => total + (i < splitterIndex ? pane2.size : 0), 0);\n },\n sumNextPanesSize(splitterIndex) {\n return this.panes.reduce((total, pane2, i) => total + (i > splitterIndex + 1 ? pane2.size : 0), 0);\n },\n findPrevExpandedPane(splitterIndex) {\n const pane2 = [...this.panes].reverse().find((p) => p.index < splitterIndex && p.size > p.min);\n return pane2 || {};\n },\n findNextExpandedPane(splitterIndex) {\n const pane2 = this.panes.find((p) => p.index > splitterIndex + 1 && p.size > p.min);\n return pane2 || {};\n },\n checkSplitpanesNodes() {\n const children = Array.from(this.container.children);\n children.forEach((child) => {\n const isPane = child.classList.contains(\"splitpanes__pane\");\n const isSplitter = child.classList.contains(\"splitpanes__splitter\");\n if (!isPane && !isSplitter) {\n child.parentNode.removeChild(child);\n console.warn(\"Splitpanes: Only elements are allowed at the root of . One of your DOM nodes was removed.\");\n return;\n }\n });\n },\n addSplitter(paneIndex, nextPaneNode, isVeryFirst = false) {\n const splitterIndex = paneIndex - 1;\n const elm = document.createElement(\"div\");\n elm.classList.add(\"splitpanes__splitter\");\n if (!isVeryFirst) {\n elm.onmousedown = (event) => this.onMouseDown(event, splitterIndex);\n if (typeof window !== \"undefined\" && \"ontouchstart\" in window) {\n elm.ontouchstart = (event) => this.onMouseDown(event, splitterIndex);\n }\n elm.onclick = (event) => this.onSplitterClick(event, splitterIndex + 1);\n }\n if (this.dblClickSplitter) {\n elm.ondblclick = (event) => this.onSplitterDblClick(event, splitterIndex + 1);\n }\n nextPaneNode.parentNode.insertBefore(elm, nextPaneNode);\n },\n removeSplitter(node) {\n node.onmousedown = void 0;\n node.onclick = void 0;\n node.ondblclick = void 0;\n node.parentNode.removeChild(node);\n },\n redoSplitters() {\n const children = Array.from(this.container.children);\n children.forEach((el) => {\n if (el.className.includes(\"splitpanes__splitter\"))\n this.removeSplitter(el);\n });\n let paneIndex = 0;\n children.forEach((el) => {\n if (el.className.includes(\"splitpanes__pane\")) {\n if (!paneIndex && this.firstSplitter)\n this.addSplitter(paneIndex, el, true);\n else if (paneIndex)\n this.addSplitter(paneIndex, el);\n paneIndex++;\n }\n });\n },\n requestUpdate(_a) {\n var _b = _a, { target } = _b, args = __objRest(_b, [\"target\"]);\n const pane2 = this.indexedPanes[target._uid];\n Object.entries(args).forEach(([key, value]) => pane2[key] = value);\n },\n onPaneAdd(pane2) {\n let index = -1;\n Array.from(pane2.$el.parentNode.children).some((el) => {\n if (el.className.includes(\"splitpanes__pane\"))\n index++;\n return el === pane2.$el;\n });\n const min = parseFloat(pane2.minSize);\n const max = parseFloat(pane2.maxSize);\n this.panes.splice(index, 0, {\n id: pane2._uid,\n index,\n min: isNaN(min) ? 0 : min,\n max: isNaN(max) ? 100 : max,\n size: pane2.size === null ? null : parseFloat(pane2.size),\n givenSize: pane2.size,\n update: pane2.update\n });\n this.panes.forEach((p, i) => p.index = i);\n if (this.ready) {\n this.$nextTick(() => {\n this.redoSplitters();\n this.resetPaneSizes({ addedPane: this.panes[index] });\n this.$emit(\"pane-add\", { index, panes: this.panes.map((pane3) => ({ min: pane3.min, max: pane3.max, size: pane3.size })) });\n });\n }\n },\n onPaneRemove(pane2) {\n const index = this.panes.findIndex((p) => p.id === pane2._uid);\n const removed = this.panes.splice(index, 1)[0];\n this.panes.forEach((p, i) => p.index = i);\n this.$nextTick(() => {\n this.redoSplitters();\n this.resetPaneSizes({ removedPane: __spreadProps(__spreadValues({}, removed), { index }) });\n this.$emit(\"pane-remove\", { removed, panes: this.panes.map((pane3) => ({ min: pane3.min, max: pane3.max, size: pane3.size })) });\n });\n },\n resetPaneSizes(changedPanes = {}) {\n if (!changedPanes.addedPane && !changedPanes.removedPane)\n this.initialPanesSizing();\n else if (this.panes.some((pane2) => pane2.givenSize !== null || pane2.min || pane2.max < 100))\n this.equalizeAfterAddOrRemove(changedPanes);\n else\n this.equalize();\n if (this.ready)\n this.$emit(\"resized\", this.panes.map((pane2) => ({ min: pane2.min, max: pane2.max, size: pane2.size })));\n },\n equalize() {\n const equalSpace = 100 / this.panesCount;\n let leftToAllocate = 0;\n let ungrowable = [];\n let unshrinkable = [];\n this.panes.forEach((pane2) => {\n pane2.size = Math.max(Math.min(equalSpace, pane2.max), pane2.min);\n leftToAllocate -= pane2.size;\n if (pane2.size >= pane2.max)\n ungrowable.push(pane2.id);\n if (pane2.size <= pane2.min)\n unshrinkable.push(pane2.id);\n });\n if (leftToAllocate > 0.1)\n this.readjustSizes(leftToAllocate, ungrowable, unshrinkable);\n },\n initialPanesSizing() {\n 100 / this.panesCount;\n let leftToAllocate = 100;\n let ungrowable = [];\n let unshrinkable = [];\n let definedSizes = 0;\n this.panes.forEach((pane2) => {\n leftToAllocate -= pane2.size;\n if (pane2.size !== null)\n definedSizes++;\n if (pane2.size >= pane2.max)\n ungrowable.push(pane2.id);\n if (pane2.size <= pane2.min)\n unshrinkable.push(pane2.id);\n });\n let leftToAllocate2 = 100;\n if (leftToAllocate > 0.1) {\n this.panes.forEach((pane2) => {\n if (pane2.size === null) {\n pane2.size = Math.max(Math.min(leftToAllocate / (this.panesCount - definedSizes), pane2.max), pane2.min);\n }\n leftToAllocate2 -= pane2.size;\n });\n if (leftToAllocate2 > 0.1)\n this.readjustSizes(leftToAllocate, ungrowable, unshrinkable);\n }\n },\n equalizeAfterAddOrRemove({ addedPane, removedPane } = {}) {\n let equalSpace = 100 / this.panesCount;\n let leftToAllocate = 0;\n let ungrowable = [];\n let unshrinkable = [];\n if (addedPane && addedPane.givenSize !== null) {\n equalSpace = (100 - addedPane.givenSize) / (this.panesCount - 1);\n }\n this.panes.forEach((pane2) => {\n leftToAllocate -= pane2.size;\n if (pane2.size >= pane2.max)\n ungrowable.push(pane2.id);\n if (pane2.size <= pane2.min)\n unshrinkable.push(pane2.id);\n });\n if (Math.abs(leftToAllocate) < 0.1)\n return;\n this.panes.forEach((pane2) => {\n if (addedPane && addedPane.givenSize !== null && addedPane.id === pane2.id)\n ;\n else\n pane2.size = Math.max(Math.min(equalSpace, pane2.max), pane2.min);\n leftToAllocate -= pane2.size;\n if (pane2.size >= pane2.max)\n ungrowable.push(pane2.id);\n if (pane2.size <= pane2.min)\n unshrinkable.push(pane2.id);\n });\n if (leftToAllocate > 0.1)\n this.readjustSizes(leftToAllocate, ungrowable, unshrinkable);\n },\n readjustSizes(leftToAllocate, ungrowable, unshrinkable) {\n let equalSpaceToAllocate;\n if (leftToAllocate > 0)\n equalSpaceToAllocate = leftToAllocate / (this.panesCount - ungrowable.length);\n else\n equalSpaceToAllocate = leftToAllocate / (this.panesCount - unshrinkable.length);\n this.panes.forEach((pane2, i) => {\n if (leftToAllocate > 0 && !ungrowable.includes(pane2.id)) {\n const newPaneSize = Math.max(Math.min(pane2.size + equalSpaceToAllocate, pane2.max), pane2.min);\n const allocated = newPaneSize - pane2.size;\n leftToAllocate -= allocated;\n pane2.size = newPaneSize;\n } else if (!unshrinkable.includes(pane2.id)) {\n const newPaneSize = Math.max(Math.min(pane2.size + equalSpaceToAllocate, pane2.max), pane2.min);\n const allocated = newPaneSize - pane2.size;\n leftToAllocate -= allocated;\n pane2.size = newPaneSize;\n }\n pane2.update({\n [this.horizontal ? \"height\" : \"width\"]: `${this.indexedPanes[pane2.id].size}%`\n });\n });\n if (Math.abs(leftToAllocate) > 0.1) {\n this.$nextTick(() => {\n if (this.ready) {\n console.warn(\"Splitpanes: Could not resize panes correctly due to their constraints.\");\n }\n });\n }\n }\n },\n watch: {\n panes: {\n deep: true,\n immediate: false,\n handler() {\n this.updatePaneComponents();\n }\n },\n horizontal() {\n this.updatePaneComponents();\n },\n firstSplitter() {\n this.redoSplitters();\n },\n dblClickSplitter(enable) {\n const splitters = [...this.container.querySelectorAll(\".splitpanes__splitter\")];\n splitters.forEach((splitter, i) => {\n splitter.ondblclick = enable ? (event) => this.onSplitterDblClick(event, i) : void 0;\n });\n }\n },\n beforeDestroy() {\n this.ready = false;\n },\n mounted() {\n this.container = this.$refs.container;\n this.checkSplitpanesNodes();\n this.redoSplitters();\n this.resetPaneSizes();\n this.$emit(\"ready\");\n this.ready = true;\n },\n render(h) {\n return h(\"div\", {\n ref: \"container\",\n class: [\n \"splitpanes\",\n `splitpanes--${this.horizontal ? \"horizontal\" : \"vertical\"}`,\n {\n \"splitpanes--dragging\": this.touch.dragging\n }\n ]\n }, this.$slots.default);\n }\n};\nlet __vue2_render, __vue2_staticRenderFns;\nconst __cssModules$1 = {};\nvar __component__$1 = /* @__PURE__ */ normalizeComponent(__vue2_script$1, __vue2_render, __vue2_staticRenderFns, false, __vue2_injectStyles$1, null, null, null);\nfunction __vue2_injectStyles$1(context) {\n for (let o in __cssModules$1) {\n this[o] = __cssModules$1[o];\n }\n}\nvar splitpanes = /* @__PURE__ */ function() {\n return __component__$1.exports;\n}();\nvar render = function() {\n var _vm = this;\n var _h = _vm.$createElement;\n var _c = _vm._self._c || _h;\n return _c(\"div\", { staticClass: \"splitpanes__pane\", style: _vm.style, on: { \"click\": function($event) {\n return _vm.onPaneClick($event, _vm._uid);\n } } }, [_vm._t(\"default\")], 2);\n};\nvar staticRenderFns = [];\nconst __vue2_script = {\n name: \"pane\",\n inject: [\"requestUpdate\", \"onPaneAdd\", \"onPaneRemove\", \"onPaneClick\"],\n props: {\n size: { type: [Number, String], default: null },\n minSize: { type: [Number, String], default: 0 },\n maxSize: { type: [Number, String], default: 100 }\n },\n data: () => ({\n style: {}\n }),\n mounted() {\n this.onPaneAdd(this);\n },\n beforeDestroy() {\n this.onPaneRemove(this);\n },\n methods: {\n update(style) {\n this.style = style;\n }\n },\n computed: {\n sizeNumber() {\n return this.size || this.size === 0 ? parseFloat(this.size) : null;\n },\n minSizeNumber() {\n return parseFloat(this.minSize);\n },\n maxSizeNumber() {\n return parseFloat(this.maxSize);\n }\n },\n watch: {\n sizeNumber(size) {\n this.requestUpdate({ target: this, size });\n },\n minSizeNumber(min) {\n this.requestUpdate({ target: this, min });\n },\n maxSizeNumber(max) {\n this.requestUpdate({ target: this, max });\n }\n }\n};\nconst __cssModules = {};\nvar __component__ = /* @__PURE__ */ normalizeComponent(__vue2_script, render, staticRenderFns, false, __vue2_injectStyles, null, null, null);\nfunction __vue2_injectStyles(context) {\n for (let o in __cssModules) {\n this[o] = __cssModules[o];\n }\n}\nvar pane = /* @__PURE__ */ function() {\n return __component__.exports;\n}();\nexport { pane as Pane, splitpanes as Splitpanes };\n","import '../assets/NcAppContent-aWiDWWeq.css';\nimport p from \"../Components/NcButton.mjs\";\nimport { r, y as c, a as u } from \"./_l10n-BaNxGGXy.mjs\";\nimport \"../Directives/Tooltip.mjs\";\nimport { emit as a } from \"@nextcloud/event-bus\";\nimport { A as h } from \"./ArrowRight-C3BxTDjF.mjs\";\nimport { useIsMobile as l } from \"../Composables/useIsMobile.mjs\";\nimport { n as o } from \"./_plugin-vue2_normalizer-Bj5bLKV4.mjs\";\nimport { VTooltip as f } from \"floating-vue\";\nimport { getBuilder as d } from \"@nextcloud/browser-storage\";\nimport { useSwipe as g } from \"@vueuse/core\";\nimport { Pane as m, Splitpanes as _ } from \"splitpanes\";\nimport \"splitpanes/dist/splitpanes.css\";\nr(c);\nconst z = {\n name: \"NcAppDetailsToggle\",\n directives: {\n tooltip: f\n },\n components: {\n NcButton: p,\n ArrowRight: h\n },\n setup() {\n return {\n isMobile: l()\n };\n },\n computed: {\n title() {\n return u(\"Go back to the list\");\n }\n },\n watch: {\n isMobile: {\n immediate: !0,\n handler() {\n this.toggleAppNavigationButton(this.isMobile);\n }\n }\n },\n beforeDestroy() {\n this.isMobile && this.toggleAppNavigationButton(!1);\n },\n methods: {\n toggleAppNavigationButton(e = !0) {\n const t = document.querySelector(\".app-navigation .app-navigation-toggle\");\n t && (t.style.display = e ? \"none\" : null, e === !0 && a(\"toggle-navigation\", { open: !1 }));\n }\n }\n};\nvar S = function() {\n var t = this, i = t._self._c;\n return i(\"NcButton\", { directives: [{ name: \"tooltip\", rawName: \"v-tooltip\", value: t.title, expression: \"title\" }], staticClass: \"app-details-toggle\", class: { \"app-details-toggle--mobile\": t.isMobile }, attrs: { type: \"tertiary\", \"aria-label\": t.title }, scopedSlots: t._u([{ key: \"icon\", fn: function() {\n return [i(\"ArrowRight\", { attrs: { size: 20 } })];\n }, proxy: !0 }]) });\n}, v = [], w = /* @__PURE__ */ o(\n z,\n S,\n v,\n !1,\n null,\n \"7e250fb8\",\n null,\n null\n);\nconst y = w.exports, n = d(\"nextcloud\").persist().build(), b = {\n name: \"NcAppContent\",\n components: {\n NcAppDetailsToggle: y,\n Pane: m,\n Splitpanes: _\n },\n props: {\n /**\n * Allows to disable the control by swipe of the app navigation open state\n */\n allowSwipeNavigation: {\n type: Boolean,\n default: !0\n },\n /**\n * Allows you to set the default width of the resizable list in % on vertical-split\n * Allows you to set the default height of the resizable list in % on horizontal-split\n * Must be between listMinWidth and listMaxWidth\n */\n listSize: {\n type: Number,\n default: 20\n },\n /**\n * Allows you to set the minimum width of the list column in % on vertical-split\n * Allows you to set the minimum height of the list column in % on horizontal-split\n */\n listMinWidth: {\n type: Number,\n default: 15\n },\n /**\n * Allows you to set the maximum width of the list column in % on vertical-split\n * Allows you to set the maximum height of the list column in % on horizontal-split\n */\n listMaxWidth: {\n type: Number,\n default: 40\n },\n /**\n * Specify the config key for the pane config sizes\n * Default is the global var appName if you use the webpack-vue-config\n */\n paneConfigKey: {\n type: String,\n default: \"\"\n },\n /**\n * When in mobile view, only the list or the details are shown\n * If you provide a list, you need to provide a variable\n * that will be set to true by the user when an element of\n * the list gets selected. The details will then show a back\n * arrow to return to the list that will update this prop to false.\n */\n showDetails: {\n type: Boolean,\n default: !0\n },\n /**\n * Specify the `

` page heading\n */\n pageHeading: {\n type: String,\n default: null\n },\n /**\n * Content layout used when there is a list together with content:\n * - `vertical-split` - a 2-column layout with list and default content separated vertically\n * - `no-split` - a single column layout; List is shown when `showDetails` is `false`, otherwise the default slot content is shown with a back button to return to the list.\n * - 'horizontal-split' - a 2-column layout with list and default content separated horizontally\n * On mobile screen `no-split` layout is forced.\n */\n layout: {\n type: String,\n default: \"vertical-split\",\n validator(e) {\n return [\"no-split\", \"vertical-split\", \"horizontal-split\"].includes(e);\n }\n }\n },\n emits: [\n \"update:showDetails\",\n \"resize:list\"\n ],\n setup() {\n return {\n isMobile: l()\n };\n },\n data() {\n return {\n contentHeight: 0,\n hasList: !1,\n hasContent: !1,\n swiping: {},\n listPaneSize: this.restorePaneConfig()\n };\n },\n computed: {\n paneConfigID() {\n if (this.paneConfigKey !== \"\")\n return \"pane-list-size-\".concat(this.paneConfigKey);\n try {\n return \"pane-list-size-\".concat(appName);\n } catch {\n return console.info(\"[INFO] AppContent:\", \"falling back to global nextcloud pane config\"), \"pane-list-size-nextcloud\";\n }\n },\n detailsPaneSize() {\n return this.listPaneSize ? 100 - this.listPaneSize : this.paneDefaults.details.size;\n },\n paneDefaults() {\n return {\n list: {\n size: this.listSize,\n min: this.listMinWidth,\n max: this.listMaxWidth\n },\n // set the inverse values of the details column\n // based on the provided (or default) values of the list column\n details: {\n size: 100 - this.listSize,\n min: 100 - this.listMaxWidth,\n max: 100 - this.listMinWidth\n }\n };\n }\n },\n updated() {\n this.checkSlots();\n },\n mounted() {\n this.allowSwipeNavigation && (this.swiping = g(this.$el, {\n onSwipeEnd: this.handleSwipe\n })), this.checkSlots(), this.restorePaneConfig();\n },\n methods: {\n /**\n * handle the swipe event\n *\n * @param {TouchEvent} e The touch event\n * @param {import('@vueuse/core').SwipeDirection} direction The swipe direction of the event\n */\n handleSwipe(e, t) {\n Math.abs(this.swiping.lengthX) > 70 && (this.swiping.coordsStart.x < 300 / 2 && t === \"right\" ? a(\"toggle-navigation\", {\n open: !0\n }) : this.swiping.coordsStart.x < 300 * 1.5 && t === \"left\" && a(\"toggle-navigation\", {\n open: !1\n }));\n },\n handlePaneResize(e) {\n const t = parseInt(e[0].size, 10);\n n.setItem(this.paneConfigID, JSON.stringify(t)), this.listPaneSize = t, this.$emit(\"resize:list\", { size: t }), console.debug(\"AppContent pane config\", t);\n },\n // $slots is not reactive, we need to update this manually\n checkSlots() {\n this.hasList = !!this.$scopedSlots.list, this.hasContent = !!this.$scopedSlots.default;\n },\n // browserStorage is not reactive, we need to update this manually\n restorePaneConfig() {\n const e = parseInt(n.getItem(this.paneConfigID), 10);\n if (!isNaN(e) && e !== this.listPaneSize)\n return console.debug(\"AppContent pane config\", e), this.listPaneSize = e, e;\n },\n /**\n * The user clicked the back arrow from the details view\n */\n hideDetails() {\n this.$emit(\"update:showDetails\", !1);\n }\n }\n};\nvar C = function() {\n var t = this, i = t._self._c;\n return i(\"main\", { staticClass: \"app-content no-snapper\", class: { \"app-content--has-list\": t.hasList }, attrs: { id: \"app-content-vue\" } }, [t.pageHeading ? i(\"h1\", { staticClass: \"hidden-visually\" }, [t._v(\" \" + t._s(t.pageHeading) + \" \")]) : t._e(), t.hasList ? [t.isMobile || t.layout === \"no-split\" ? i(\"div\", { staticClass: \"app-content-wrapper app-content-wrapper--no-split\", class: {\n \"app-content-wrapper--show-details\": t.showDetails,\n \"app-content-wrapper--show-list\": !t.showDetails,\n \"app-content-wrapper--mobile\": t.isMobile\n } }, [t.showDetails ? i(\"NcAppDetailsToggle\", { nativeOn: { click: function(s) {\n return s.stopPropagation(), s.preventDefault(), t.hideDetails.apply(null, arguments);\n } } }) : t._e(), t.showDetails ? t._t(\"default\") : t._t(\"list\")], 2) : t.layout === \"vertical-split\" || t.layout === \"horizontal-split\" ? i(\"div\", { staticClass: \"app-content-wrapper\" }, [i(\"Splitpanes\", { staticClass: \"default-theme\", class: {\n \"splitpanes--horizontal\": t.layout === \"horizontal-split\",\n \"splitpanes--vertical\": t.layout === \"vertical-split\"\n }, attrs: { horizontal: t.layout === \"horizontal-split\" }, on: { resized: t.handlePaneResize } }, [i(\"Pane\", { staticClass: \"splitpanes__pane-list\", attrs: { size: t.listPaneSize || t.paneDefaults.list.size, \"min-size\": t.paneDefaults.list.min, \"max-size\": t.paneDefaults.list.max } }, [t._t(\"list\")], 2), i(\"Pane\", { staticClass: \"splitpanes__pane-details\", attrs: { size: t.detailsPaneSize, \"min-size\": t.paneDefaults.details.min, \"max-size\": t.paneDefaults.details.max } }, [t._t(\"default\")], 2)], 1)], 1) : t._e()] : t._e(), t.hasList ? t._e() : t._t(\"default\")], 2);\n}, D = [], N = /* @__PURE__ */ o(\n b,\n C,\n D,\n !1,\n null,\n \"a284c47e\",\n null,\n null\n);\nconst H = N.exports;\nexport {\n H as N\n};\n","var $placeholder = Symbol();\n\nvar $fakeParent = Symbol();\n\nvar $nextSiblingPatched = Symbol();\n\nvar $childNodesPatched = Symbol();\n\nvar isFrag = function isFrag(node) {\n return \"frag\" in node;\n};\n\nvar parentNodeDescriptor = {\n get: function get() {\n return this[$fakeParent] || this.parentElement;\n },\n configurable: true\n};\n\nvar patchParentNode = function patchParentNode(node, fakeParent) {\n if ($fakeParent in node) {\n return;\n }\n node[$fakeParent] = fakeParent;\n Object.defineProperty(node, \"parentNode\", parentNodeDescriptor);\n};\n\nvar nextSiblingDescriptor = {\n get: function get() {\n var childNodes = this.parentNode.childNodes;\n var index = childNodes.indexOf(this);\n if (index > -1) {\n return childNodes[index + 1] || null;\n }\n return null;\n }\n};\n\nvar patchNextSibling = function patchNextSibling(node) {\n if ($nextSiblingPatched in node) {\n return;\n }\n node[$nextSiblingPatched] = true;\n Object.defineProperty(node, \"nextSibling\", nextSiblingDescriptor);\n};\n\nvar getTopFragment = function getTopFragment(node, fromParent) {\n while (node.parentNode !== fromParent) {\n var _node = node, parentNode = _node.parentNode;\n if (parentNode) {\n node = parentNode;\n }\n }\n return node;\n};\n\nvar getChildNodes;\n\nvar getChildNodesWithFragments = function getChildNodesWithFragments(node) {\n if (!getChildNodes) {\n var _childNodesDescriptor = Object.getOwnPropertyDescriptor(Node.prototype, \"childNodes\");\n getChildNodes = _childNodesDescriptor.get;\n }\n var realChildNodes = getChildNodes.apply(node);\n var childNodes = Array.from(realChildNodes).map((function(childNode) {\n return getTopFragment(childNode, node);\n }));\n return childNodes.filter((function(childNode, index) {\n return childNode !== childNodes[index - 1];\n }));\n};\n\nvar childNodesDescriptor = {\n get: function get() {\n return this.frag || getChildNodesWithFragments(this);\n }\n};\n\nvar firstChildDescriptor = {\n get: function get() {\n return this.childNodes[0] || null;\n }\n};\n\nfunction hasChildNodes() {\n return this.childNodes.length > 0;\n}\n\nvar patchChildNodes = function patchChildNodes(node) {\n if ($childNodesPatched in node) {\n return;\n }\n node[$childNodesPatched] = true;\n Object.defineProperties(node, {\n childNodes: childNodesDescriptor,\n firstChild: firstChildDescriptor\n });\n node.hasChildNodes = hasChildNodes;\n};\n\nfunction before() {\n var _this$frag$;\n (_this$frag$ = this.frag[0]).before.apply(_this$frag$, arguments);\n}\n\nfunction remove() {\n var frag = this.frag;\n var removed = frag.splice(0, frag.length);\n removed.forEach((function(node) {\n node.remove();\n }));\n}\n\nvar getFragmentLeafNodes = function getFragmentLeafNodes(children) {\n var _Array$prototype;\n return (_Array$prototype = Array.prototype).concat.apply(_Array$prototype, children.map((function(childNode) {\n return isFrag(childNode) ? getFragmentLeafNodes(childNode.frag) : childNode;\n })));\n};\n\nvar addPlaceholder = function addPlaceholder(node, insertBeforeNode) {\n var placeholder = node[$placeholder];\n insertBeforeNode.before(placeholder);\n patchParentNode(placeholder, node);\n node.frag.unshift(placeholder);\n};\n\nfunction removeChild(node) {\n if (isFrag(this)) {\n var hasChildInFragment = this.frag.indexOf(node);\n if (hasChildInFragment > -1) {\n var _this$frag$splice = this.frag.splice(hasChildInFragment, 1), removedNode = _this$frag$splice[0];\n if (this.frag.length === 0) {\n addPlaceholder(this, removedNode);\n }\n node.remove();\n }\n } else {\n var children = getChildNodesWithFragments(this);\n var hasChild = children.indexOf(node);\n if (hasChild > -1) {\n node.remove();\n }\n }\n return node;\n}\n\nfunction insertBefore(insertNode, insertBeforeNode) {\n var _this = this;\n var insertNodes = insertNode.frag || [ insertNode ];\n if (isFrag(this)) {\n if (insertNode[$fakeParent] === this && insertNode.parentElement) {\n return insertNode;\n }\n var _frag = this.frag;\n if (insertBeforeNode) {\n var index = _frag.indexOf(insertBeforeNode);\n if (index > -1) {\n _frag.splice.apply(_frag, [ index, 0 ].concat(insertNodes));\n insertBeforeNode.before.apply(insertBeforeNode, insertNodes);\n }\n } else {\n var _lastNode = _frag[_frag.length - 1];\n _frag.push.apply(_frag, insertNodes);\n _lastNode.after.apply(_lastNode, insertNodes);\n }\n removePlaceholder(this);\n } else if (insertBeforeNode) {\n if (this.childNodes.includes(insertBeforeNode)) {\n insertBeforeNode.before.apply(insertBeforeNode, insertNodes);\n }\n } else {\n this.append.apply(this, insertNodes);\n }\n insertNodes.forEach((function(node) {\n patchParentNode(node, _this);\n }));\n var lastNode = insertNodes[insertNodes.length - 1];\n patchNextSibling(lastNode);\n return insertNode;\n}\n\nfunction appendChild(node) {\n if (node[$fakeParent] === this && node.parentElement) {\n return node;\n }\n var frag = this.frag;\n var lastChild = frag[frag.length - 1];\n lastChild.after(node);\n patchParentNode(node, this);\n removePlaceholder(this);\n frag.push(node);\n return node;\n}\n\nvar removePlaceholder = function removePlaceholder(node) {\n var placeholder = node[$placeholder];\n if (node.frag[0] === placeholder) {\n node.frag.shift();\n placeholder.remove();\n }\n};\n\nvar innerHTMLDescriptor = {\n set: function set(htmlString) {\n var _this2 = this;\n if (this.frag[0] !== this[$placeholder]) {\n this.frag.slice().forEach((function(child) {\n return _this2.removeChild(child);\n }));\n }\n if (htmlString) {\n var domify = document.createElement(\"div\");\n domify.innerHTML = htmlString;\n Array.from(domify.childNodes).forEach((function(node) {\n _this2.appendChild(node);\n }));\n }\n },\n get: function get() {\n return \"\";\n }\n};\n\nvar frag = {\n inserted: function inserted(element) {\n var parentNode = element.parentNode, nextSibling = element.nextSibling, previousSibling = element.previousSibling;\n var childNodes = Array.from(element.childNodes);\n var placeholder = document.createComment(\"\");\n if (childNodes.length === 0) {\n childNodes.push(placeholder);\n }\n element.frag = childNodes;\n element[$placeholder] = placeholder;\n var fragment = document.createDocumentFragment();\n fragment.append.apply(fragment, getFragmentLeafNodes(childNodes));\n element.replaceWith(fragment);\n childNodes.forEach((function(node) {\n patchParentNode(node, element);\n patchNextSibling(node);\n }));\n patchChildNodes(element);\n Object.assign(element, {\n remove: remove,\n appendChild: appendChild,\n insertBefore: insertBefore,\n removeChild: removeChild,\n before: before\n });\n Object.defineProperty(element, \"innerHTML\", innerHTMLDescriptor);\n if (parentNode) {\n Object.assign(parentNode, {\n removeChild: removeChild,\n insertBefore: insertBefore\n });\n patchParentNode(element, parentNode);\n patchChildNodes(parentNode);\n }\n if (nextSibling) {\n patchNextSibling(element);\n }\n if (previousSibling) {\n patchNextSibling(previousSibling);\n }\n },\n unbind: function unbind(element) {\n element.remove();\n }\n};\n\nvar fragment = {\n name: \"Fragment\",\n directives: {\n frag: frag\n },\n render: function render(h) {\n return h(\"div\", {\n directives: [ {\n name: \"frag\"\n } ]\n }, this.$slots[\"default\"]);\n }\n};\n\nexport { fragment as Fragment, frag as default };\n","\n\n\n\n\n\n\n","export default \"\\n\\n \\n\\n\"","/*!\n * vue-router v3.6.5\n * (c) 2022 Evan You\n * @license MIT\n */\nimport { getCurrentInstance, effectScope, shallowReactive, onUnmounted, computed, unref } from 'vue';\n\n// dev only warn if no current instance\n\nfunction throwNoCurrentInstance (method) {\n if (!getCurrentInstance()) {\n throw new Error(\n (\"[vue-router]: Missing current instance. \" + method + \"() must be called inside \n\n\n","import '../assets/NcAppNavigationToggle-De8wq0JA.css';\nimport r from \"../Components/NcButton.mjs\";\nimport { r as s, x as o, a as l } from \"./_l10n-BaNxGGXy.mjs\";\nimport { n as i } from \"./_plugin-vue2_normalizer-Bj5bLKV4.mjs\";\ns(o);\nconst c = {\n name: \"MenuIcon\",\n emits: [\"click\"],\n props: {\n title: {\n type: String\n },\n fillColor: {\n type: String,\n default: \"currentColor\"\n },\n size: {\n type: Number,\n default: 24\n }\n }\n};\nvar p = function() {\n var t = this, e = t._self._c;\n return e(\"span\", t._b({ staticClass: \"material-design-icon menu-icon\", attrs: { \"aria-hidden\": t.title ? null : !0, \"aria-label\": t.title, role: \"img\" }, on: { click: function(n) {\n return t.$emit(\"click\", n);\n } } }, \"span\", t.$attrs, !1), [e(\"svg\", { staticClass: \"material-design-icon__svg\", attrs: { fill: t.fillColor, width: t.size, height: t.size, viewBox: \"0 0 24 24\" } }, [e(\"path\", { attrs: { d: \"M3,6H21V8H3V6M3,11H21V13H3V11M3,16H21V18H3V16Z\" } }, [t.title ? e(\"title\", [t._v(t._s(t.title))]) : t._e()])])]);\n}, u = [], _ = /* @__PURE__ */ i(\n c,\n p,\n u,\n !1,\n null,\n null,\n null,\n null\n);\nconst m = _.exports, f = {\n name: \"MenuOpenIcon\",\n emits: [\"click\"],\n props: {\n title: {\n type: String\n },\n fillColor: {\n type: String,\n default: \"currentColor\"\n },\n size: {\n type: Number,\n default: 24\n }\n }\n};\nvar g = function() {\n var t = this, e = t._self._c;\n return e(\"span\", t._b({ staticClass: \"material-design-icon menu-open-icon\", attrs: { \"aria-hidden\": t.title ? null : !0, \"aria-label\": t.title, role: \"img\" }, on: { click: function(n) {\n return t.$emit(\"click\", n);\n } } }, \"span\", t.$attrs, !1), [e(\"svg\", { staticClass: \"material-design-icon__svg\", attrs: { fill: t.fillColor, width: t.size, height: t.size, viewBox: \"0 0 24 24\" } }, [e(\"path\", { attrs: { d: \"M21,15.61L19.59,17L14.58,12L19.59,7L21,8.39L17.44,12L21,15.61M3,6H16V8H3V6M3,13V11H13V13H3M3,18V16H16V18H3Z\" } }, [t.title ? e(\"title\", [t._v(t._s(t.title))]) : t._e()])])]);\n}, d = [], v = /* @__PURE__ */ i(\n f,\n g,\n d,\n !1,\n null,\n null,\n null,\n null\n);\nconst h = v.exports, C = {\n name: \"NcAppNavigationToggle\",\n components: {\n NcButton: r,\n MenuIcon: m,\n MenuOpenIcon: h\n },\n props: {\n /**\n * Tracks whether the toggle has been clicked or not.\n * If it has been clicked, switches between the different MenuIcons\n * and emits a boolean indicating its opened status\n */\n open: {\n type: Boolean,\n required: !0\n }\n },\n emits: [\"update:open\"],\n computed: {\n label() {\n return this.open ? l(\"Close navigation\") : l(\"Open navigation\");\n }\n },\n methods: {\n /**\n * Once the toggle has been clicked, emits the toggle status\n * so parent components can gauge the status of the navigation button\n */\n toggleNavigation() {\n this.$emit(\"update:open\", !this.open);\n }\n }\n};\nvar M = function() {\n var t = this, e = t._self._c;\n return e(\"div\", { staticClass: \"app-navigation-toggle-wrapper\" }, [e(\"NcButton\", { staticClass: \"app-navigation-toggle\", attrs: { type: \"tertiary\", \"aria-expanded\": t.open ? \"true\" : \"false\", \"aria-label\": t.label, title: t.label, \"aria-controls\": \"app-navigation-vue\" }, on: { click: t.toggleNavigation }, scopedSlots: t._u([{ key: \"icon\", fn: function() {\n return [t.open ? e(\"MenuOpenIcon\", { attrs: { size: 20 } }) : e(\"MenuIcon\", { attrs: { size: 20 } })];\n }, proxy: !0 }]) })], 1);\n}, $ = [], H = /* @__PURE__ */ i(\n C,\n M,\n $,\n !1,\n null,\n \"e1dc2b3e\",\n null,\n null\n);\nconst N = H.exports;\nexport {\n N\n};\n","import '../assets/NcAppNavigationList-CUnaMQQD.css';\nimport { n as t } from \"../chunks/_plugin-vue2_normalizer-Bj5bLKV4.mjs\";\nconst s = {\n name: \"NcAppNavigationList\"\n};\nvar e = function() {\n var a = this, n = a._self._c;\n return n(\"ul\", { staticClass: \"app-navigation-list\" }, [a._t(\"default\")], 2);\n}, i = [], r = /* @__PURE__ */ t(\n s,\n e,\n i,\n !1,\n null,\n \"ac3baea0\",\n null,\n null\n);\nconst c = r.exports;\nexport {\n c as default\n};\n","import '../assets/NcAppNavigation-wkQJnaLW.css';\nimport { useIsMobile as n } from \"../Composables/useIsMobile.mjs\";\nimport { g as s } from \"./focusTrap-Be9GEB5C.mjs\";\nimport { subscribe as p, emit as o, unsubscribe as r } from \"@nextcloud/event-bus\";\nimport { createFocusTrap as l } from \"focus-trap\";\nimport { N as g } from \"./NcAppNavigationToggle-D0oeWL17.mjs\";\nimport c from \"../Components/NcAppNavigationList.mjs\";\nimport u from \"vue\";\nimport { n as d } from \"./_plugin-vue2_normalizer-Bj5bLKV4.mjs\";\nconst v = {\n name: \"NcAppNavigation\",\n components: {\n NcAppNavigationList: c,\n NcAppNavigationToggle: g\n },\n // Injected from NcContent\n inject: {\n setHasAppNavigation: {\n default: () => () => u.util.warn(\"NcAppNavigation is not mounted inside NcContent, this is probably an error.\"),\n from: \"NcContent:setHasAppNavigation\"\n }\n },\n props: {\n /**\n * The aria label to describe the navigation\n */\n ariaLabel: {\n type: String,\n default: \"\"\n },\n /**\n * aria-labelledby attribute to describe the navigation\n */\n ariaLabelledby: {\n type: String,\n default: \"\"\n }\n },\n setup() {\n return {\n isMobile: n()\n };\n },\n data() {\n return {\n open: !this.isMobile,\n focusTrap: null\n };\n },\n watch: {\n isMobile() {\n this.open = !this.isMobile, this.toggleFocusTrap();\n },\n open() {\n this.toggleFocusTrap();\n }\n },\n mounted() {\n this.setHasAppNavigation(!0), p(\"toggle-navigation\", this.toggleNavigationByEventBus), o(\"navigation-toggled\", {\n open: this.open\n }), this.focusTrap = l(this.$refs.appNavigationContainer, {\n allowOutsideClick: !0,\n fallbackFocus: this.$refs.appNavigationContainer,\n trapStack: s(),\n escapeDeactivates: !1\n }), this.toggleFocusTrap();\n },\n unmounted() {\n this.setHasAppNavigation(!1), r(\"toggle-navigation\", this.toggleNavigationByEventBus), this.focusTrap.deactivate();\n },\n methods: {\n /**\n * Toggle the navigation\n *\n * @param {boolean} [state] set the state instead of inverting the current one\n */\n toggleNavigation(i) {\n if (this.open === i) {\n o(\"navigation-toggled\", {\n open: this.open\n });\n return;\n }\n this.open = typeof i > \"u\" ? !this.open : i;\n const t = getComputedStyle(document.body), a = parseInt(t.getPropertyValue(\"--animation-quick\")) || 100;\n setTimeout(() => {\n o(\"navigation-toggled\", {\n open: this.open\n });\n }, 1.5 * a);\n },\n toggleNavigationByEventBus({ open: i }) {\n this.toggleNavigation(i);\n },\n /**\n * Activate focus trap if it is currently needed, otherwise deactivate\n */\n toggleFocusTrap() {\n this.isMobile && this.open ? this.focusTrap.activate() : this.focusTrap.deactivate();\n },\n handleEsc() {\n this.isMobile && this.toggleNavigation(!1);\n }\n }\n};\nvar f = function() {\n var t = this, a = t._self._c;\n return a(\"div\", { ref: \"appNavigationContainer\", staticClass: \"app-navigation\", class: { \"app-navigation--close\": !t.open } }, [a(\"nav\", { staticClass: \"app-navigation__content\", attrs: { id: \"app-navigation-vue\", \"aria-hidden\": t.open ? \"false\" : \"true\", \"aria-label\": t.ariaLabel || void 0, \"aria-labelledby\": t.ariaLabelledby || void 0, inert: !t.open || void 0 }, on: { keydown: function(e) {\n return !e.type.indexOf(\"key\") && t._k(e.keyCode, \"esc\", 27, e.key, [\"Esc\", \"Escape\"]) ? null : t.handleEsc.apply(null, arguments);\n } } }, [a(\"div\", { staticClass: \"app-navigation__body\", class: { \"app-navigation__body--no-list\": !t.$scopedSlots.list } }, [t._t(\"default\")], 2), t.$scopedSlots.list ? a(\"NcAppNavigationList\", { staticClass: \"app-navigation__list\" }, [t._t(\"list\")], 2) : t._e(), t._t(\"footer\")], 2), a(\"NcAppNavigationToggle\", { attrs: { open: t.open }, on: { \"update:open\": t.toggleNavigation } })], 1);\n}, h = [], m = /* @__PURE__ */ d(\n v,\n f,\n h,\n !1,\n null,\n \"42389274\",\n null,\n null\n);\nconst S = m.exports;\nexport {\n S as N\n};\n","import '../assets/NcActionButton-Cs5kVVAD.css';\nimport { C as s } from \"../chunks/Check-CRLmJNGG.mjs\";\nimport { C as n } from \"../chunks/ChevronRight-DL3e8bjj.mjs\";\nimport { A as a } from \"../chunks/actionText-jLsEBszD.mjs\";\nimport { n as o } from \"../chunks/_plugin-vue2_normalizer-Bj5bLKV4.mjs\";\nconst l = {\n name: \"NcActionButton\",\n components: {\n CheckIcon: s,\n ChevronRightIcon: n\n },\n mixins: [a],\n inject: {\n isInSemanticMenu: {\n from: \"NcActions:isSemanticMenu\",\n default: !1\n }\n },\n props: {\n /**\n * @deprecated To be removed in @nextcloud/vue 9. Migration guide: remove ariaHidden prop from NcAction* components.\n * @todo Add a check in @nextcloud/vue 9 that this prop is not provided,\n * otherwise root element will inherit incorrect aria-hidden.\n */\n ariaHidden: {\n type: Boolean,\n default: null\n },\n /**\n * disabled state of the action button\n */\n disabled: {\n type: Boolean,\n default: !1\n },\n /**\n * If this is a menu, a chevron icon will\n * be added at the end of the line\n */\n isMenu: {\n type: Boolean,\n default: !1\n },\n /**\n * The button's behavior, by default the button acts like a normal button with optional toggle button behavior if `modelValue` is `true` or `false`.\n * But you can also set to checkbox button behavior with tri-state or radio button like behavior.\n * This extends the native HTML button type attribute.\n */\n type: {\n type: String,\n default: \"button\",\n validator: (e) => [\"button\", \"checkbox\", \"radio\", \"reset\", \"submit\"].includes(e)\n },\n /**\n * The buttons state if `type` is 'checkbox' or 'radio' (meaning if it is pressed / selected).\n * For checkbox and toggle button behavior - boolean value.\n * For radio button behavior - could be a boolean checked or a string with the value of the button.\n * Note: Unlike native radio buttons, NcActionButton are not grouped by name, so you need to connect them by bind correct modelValue.\n *\n * **This is not availabe for `type='submit'` or `type='reset'`**\n *\n * If using `type='checkbox'` a `model-value` of `true` means checked, `false` means unchecked and `null` means indeterminate (tri-state)\n * For `type='radio'` `null` is equal to `false`\n */\n modelValue: {\n type: [Boolean, String],\n default: null\n },\n /**\n * The value used for the `modelValue` when this component is used with radio behavior\n * Similar to the `value` attribute of ``\n */\n value: {\n type: String,\n default: null\n }\n },\n computed: {\n /**\n * determines if the action is focusable\n *\n * @return {boolean} is the action focusable ?\n */\n isFocusable() {\n return !this.disabled;\n },\n /**\n * The current \"checked\" or \"pressed\" state for the model behavior\n */\n isChecked() {\n return this.type === \"radio\" && typeof this.modelValue != \"boolean\" ? this.modelValue === this.value : this.modelValue;\n },\n /**\n * The native HTML type to set on the button\n */\n nativeType() {\n return this.type === \"submit\" || this.type === \"reset\" ? this.type : \"button\";\n },\n /**\n * HTML attributes to bind to the