diff --git a/css/Timeline-_pYxtoYP.chunk.css b/css/Timeline-CxK5YMSH.chunk.css similarity index 66% rename from css/Timeline-_pYxtoYP.chunk.css rename to css/Timeline-CxK5YMSH.chunk.css index 6e498853d..8081d55dd 100644 --- a/css/Timeline-_pYxtoYP.chunk.css +++ b/css/Timeline-CxK5YMSH.chunk.css @@ -1 +1 @@ -.album-picker[data-v-a54712c8]{padding:16px 32px 32px}.album-picker h2[data-v-a54712c8]{display:flex;align-items:center;height:60px}.album-picker h2 .loading-icon[data-v-a54712c8]{margin-left:32px}.album-picker .albums-container[data-v-a54712c8]{min-height:150px;max-height:350px;overflow-x:scroll;padding:2px}.album-picker .albums-container .album[data-v-a54712c8] .list-item{padding:8px 16px;box-sizing:border-box}.album-picker .albums-container .album[data-v-a54712c8]:not(:last-child){margin-bottom:16px}.album-picker .albums-container .album__image[data-v-a54712c8]{width:40px;height:40px;object-fit:none;border-radius:var(--border-radius)}.album-picker .albums-container .album__image--placeholder[data-v-a54712c8]{background:var(--color-primary-element-light)}.album-picker .albums-container .album__image--placeholder[data-v-a54712c8] .material-design-icon{width:100%;height:100%}.album-picker .albums-container .album__image--placeholder[data-v-a54712c8] .material-design-icon .material-design-icon__svg{fill:var(--color-primary-element)}.album-picker .new-album-button[data-v-a54712c8]{margin-top:32px}.places-select[data-v-2119ac98]{margin-bottom:0!important}.timeline-filters[data-v-a9d92629]{display:flex;align-items:center;gap:16px}.timeline[data-v-f7c95e4b]{display:flex;flex-direction:column}.timeline__empty-content[data-v-f7c95e4b],.timeline__empty-content .empty-content[data-v-f7c95e4b]{height:100%}.timeline__empty-content .timeline__update_source_directory[data-v-f7c95e4b]{align-items:center}.timeline__empty-content .timeline__update_source_directory[data-v-f7c95e4b] .folder{min-width:unset}.timeline__header__left[data-v-f7c95e4b]{display:flex;gap:4px}.timeline__filters[data-v-f7c95e4b]{padding:16px 64px}.timeline__heading[data-v-f7c95e4b]{padding:calc(var(--default-grid-baseline) * 4);margin-bottom:0;padding-bottom:0}.timeline__file-list[data-v-f7c95e4b]{padding:0 64px}@media only screen and (max-width: 1200px){.timeline__file-list[data-v-f7c95e4b]{padding:0 4px}}.timeline__file-list[data-v-f7c95e4b] .files-list-viewer__section-header{top:var(--photos-navigation-height)} +.album-picker[data-v-a54712c8]{padding:16px 32px 32px}.album-picker h2[data-v-a54712c8]{display:flex;align-items:center;height:60px}.album-picker h2 .loading-icon[data-v-a54712c8]{margin-left:32px}.album-picker .albums-container[data-v-a54712c8]{min-height:150px;max-height:350px;overflow-x:scroll;padding:2px}.album-picker .albums-container .album[data-v-a54712c8] .list-item{padding:8px 16px;box-sizing:border-box}.album-picker .albums-container .album[data-v-a54712c8]:not(:last-child){margin-bottom:16px}.album-picker .albums-container .album__image[data-v-a54712c8]{width:40px;height:40px;object-fit:none;border-radius:var(--border-radius)}.album-picker .albums-container .album__image--placeholder[data-v-a54712c8]{background:var(--color-primary-element-light)}.album-picker .albums-container .album__image--placeholder[data-v-a54712c8] .material-design-icon{width:100%;height:100%}.album-picker .albums-container .album__image--placeholder[data-v-a54712c8] .material-design-icon .material-design-icon__svg{fill:var(--color-primary-element)}.album-picker .new-album-button[data-v-a54712c8]{margin-top:32px}.places-select[data-v-2119ac98]{margin-bottom:0!important}.timeline-filters[data-v-a9d92629]{display:flex;align-items:center;gap:16px}.timeline[data-v-2fe2b744]{display:flex;flex-direction:column}.timeline__empty-content[data-v-2fe2b744],.timeline__empty-content .empty-content[data-v-2fe2b744]{height:100%}.timeline__empty-content .timeline__update_source_directory[data-v-2fe2b744]{align-items:center}.timeline__empty-content .timeline__update_source_directory[data-v-2fe2b744] .folder{min-width:unset}.timeline__header__left[data-v-2fe2b744]{display:flex;gap:4px}.timeline__filters[data-v-2fe2b744]{padding:16px 64px}.timeline__heading[data-v-2fe2b744]{padding:calc(var(--default-grid-baseline) * 4);margin-bottom:0;padding-bottom:0}.timeline__file-list[data-v-2fe2b744]{padding:0 64px}@media only screen and (max-width: 1200px){.timeline__file-list[data-v-2fe2b744]{padding:0 4px}}.timeline__file-list[data-v-2fe2b744] .files-list-viewer__section-header{top:var(--photos-navigation-height)} diff --git a/js/NcUserBubble-W_wjP2lY-BmhJ14QN.chunk.mjs b/js/NcUserBubble-W_wjP2lY-Cnkl2DNl.chunk.mjs similarity index 95% rename from js/NcUserBubble-W_wjP2lY-BmhJ14QN.chunk.mjs rename to js/NcUserBubble-W_wjP2lY-Cnkl2DNl.chunk.mjs index 148b7c231..0505811c2 100644 --- a/js/NcUserBubble-W_wjP2lY-BmhJ14QN.chunk.mjs +++ b/js/NcUserBubble-W_wjP2lY-Cnkl2DNl.chunk.mjs @@ -1,2 +1,2 @@ -import{n as a,V as r,W as o}from"./index-DySs6xMI.chunk.mjs";import{V as i}from"./vue.runtime.esm-CWuAmtQL.chunk.mjs";import{L as n}from"./index-r_e2HRW6.chunk.mjs";const l={name:"NcUserBubbleDiv"};var u=function(){var t=this,e=t._self._c;return e("div",[t._t("trigger")],2)},p=[],m=a(l,u,p,!1,null,null);const c=m.exports,d={name:"NcUserBubble",components:{NcAvatar:o,NcPopover:r,NcUserBubbleDiv:c},props:{avatarImage:{type:String,default:void 0},user:{type:String,default:void 0},displayName:{type:String,default:void 0},showUserStatus:{type:Boolean,default:!1},url:{type:String,default:void 0,validator:t=>{try{return t=new URL(t,t?.startsWith?.("/")?window.location.href:void 0),!0}catch{return!1}}},to:{type:[String,Object],default:void 0},open:{type:Boolean,default:!1},primary:{type:Boolean,default:!1},size:{type:Number,default:20},margin:{type:Number,default:2}},emits:["click","update:open"],computed:{isPopoverComponent(){return this.popoverEmpty?"NcUserBubbleDiv":"NcPopover"},isAvatarUrl(){if(!this.avatarImage)return!1;try{return!!new URL(this.avatarImage)}catch{return!1}},isCustomAvatar(){return!!this.avatarImage},hasUrl(){return this.url&&this.url.trim()!==""},isLinkComponent(){return this.hasUrl?"a":this.to?n:"div"},popoverEmpty(){return!("default"in this.$slots)},styles(){return{content:{height:this.size+"px",lineHeight:this.size+"px",borderRadius:this.size/2+"px"},avatar:{marginInlineStart:this.margin+"px"}}}},mounted(){!this.displayName&&!this.user&&i.util.warn("[NcUserBubble] At least `displayName` or `user` property should be set.")},methods:{onOpenChange(t){this.$emit("update:open",t)},onClick(t){this.$emit("click",t)}}};var v=function(){var t=this,e=t._self._c;return e(t.isPopoverComponent,{tag:"component",staticClass:"user-bubble__wrapper",attrs:{trigger:"hover focus",shown:t.open},on:{"update:open":t.onOpenChange},scopedSlots:t._u([{key:"trigger",fn:function({attrs:s}){return[e(t.isLinkComponent,t._b({tag:"component",staticClass:"user-bubble__content",class:{"user-bubble__content--primary":t.primary},style:t.styles.content,attrs:{to:t.to,href:t.hasUrl?t.url:null},on:{click:t.onClick}},"component",s,!1),[e("NcAvatar",{staticClass:"user-bubble__avatar",style:t.styles.avatar,attrs:{url:t.isCustomAvatar&&t.isAvatarUrl?t.avatarImage:void 0,"icon-class":t.isCustomAvatar&&!t.isAvatarUrl?t.avatarImage:void 0,user:t.user,"display-name":t.displayName,size:t.size-t.margin*2,"disable-tooltip":!0,"disable-menu":!0,"show-user-status":t.showUserStatus}}),e("span",{staticClass:"user-bubble__name"},[t._v(" "+t._s(t.displayName||t.user)+" ")]),t.$slots.name?e("span",{staticClass:"user-bubble__secondary"},[t._t("name")],2):t._e()],1)]}}],null,!0)},[t._t("default")],2)},h=[],b=a(d,v,h,!1,null,"a62a9496");const _=b.exports;export{_ as N}; -//# sourceMappingURL=NcUserBubble-W_wjP2lY-BmhJ14QN.chunk.mjs.map +import{n as a,V as r,W as o}from"./index-DySs6xMI.chunk.mjs";import{V as i}from"./vue.runtime.esm-CWuAmtQL.chunk.mjs";import{L as n}from"./index-CuVencPr.chunk.mjs";const l={name:"NcUserBubbleDiv"};var u=function(){var t=this,e=t._self._c;return e("div",[t._t("trigger")],2)},p=[],m=a(l,u,p,!1,null,null);const c=m.exports,d={name:"NcUserBubble",components:{NcAvatar:o,NcPopover:r,NcUserBubbleDiv:c},props:{avatarImage:{type:String,default:void 0},user:{type:String,default:void 0},displayName:{type:String,default:void 0},showUserStatus:{type:Boolean,default:!1},url:{type:String,default:void 0,validator:t=>{try{return t=new URL(t,t?.startsWith?.("/")?window.location.href:void 0),!0}catch{return!1}}},to:{type:[String,Object],default:void 0},open:{type:Boolean,default:!1},primary:{type:Boolean,default:!1},size:{type:Number,default:20},margin:{type:Number,default:2}},emits:["click","update:open"],computed:{isPopoverComponent(){return this.popoverEmpty?"NcUserBubbleDiv":"NcPopover"},isAvatarUrl(){if(!this.avatarImage)return!1;try{return!!new URL(this.avatarImage)}catch{return!1}},isCustomAvatar(){return!!this.avatarImage},hasUrl(){return this.url&&this.url.trim()!==""},isLinkComponent(){return this.hasUrl?"a":this.to?n:"div"},popoverEmpty(){return!("default"in this.$slots)},styles(){return{content:{height:this.size+"px",lineHeight:this.size+"px",borderRadius:this.size/2+"px"},avatar:{marginInlineStart:this.margin+"px"}}}},mounted(){!this.displayName&&!this.user&&i.util.warn("[NcUserBubble] At least `displayName` or `user` property should be set.")},methods:{onOpenChange(t){this.$emit("update:open",t)},onClick(t){this.$emit("click",t)}}};var v=function(){var t=this,e=t._self._c;return e(t.isPopoverComponent,{tag:"component",staticClass:"user-bubble__wrapper",attrs:{trigger:"hover focus",shown:t.open},on:{"update:open":t.onOpenChange},scopedSlots:t._u([{key:"trigger",fn:function({attrs:s}){return[e(t.isLinkComponent,t._b({tag:"component",staticClass:"user-bubble__content",class:{"user-bubble__content--primary":t.primary},style:t.styles.content,attrs:{to:t.to,href:t.hasUrl?t.url:null},on:{click:t.onClick}},"component",s,!1),[e("NcAvatar",{staticClass:"user-bubble__avatar",style:t.styles.avatar,attrs:{url:t.isCustomAvatar&&t.isAvatarUrl?t.avatarImage:void 0,"icon-class":t.isCustomAvatar&&!t.isAvatarUrl?t.avatarImage:void 0,user:t.user,"display-name":t.displayName,size:t.size-t.margin*2,"disable-tooltip":!0,"disable-menu":!0,"show-user-status":t.showUserStatus}}),e("span",{staticClass:"user-bubble__name"},[t._v(" "+t._s(t.displayName||t.user)+" ")]),t.$slots.name?e("span",{staticClass:"user-bubble__secondary"},[t._t("name")],2):t._e()],1)]}}],null,!0)},[t._t("default")],2)},h=[],b=a(d,v,h,!1,null,"a62a9496");const _=b.exports;export{_ as N}; +//# sourceMappingURL=NcUserBubble-W_wjP2lY-Cnkl2DNl.chunk.mjs.map diff --git a/js/NcUserBubble-W_wjP2lY-BmhJ14QN.chunk.mjs.license b/js/NcUserBubble-W_wjP2lY-Cnkl2DNl.chunk.mjs.license similarity index 100% rename from js/NcUserBubble-W_wjP2lY-BmhJ14QN.chunk.mjs.license rename to js/NcUserBubble-W_wjP2lY-Cnkl2DNl.chunk.mjs.license diff --git a/js/NcUserBubble-W_wjP2lY-BmhJ14QN.chunk.mjs.map b/js/NcUserBubble-W_wjP2lY-Cnkl2DNl.chunk.mjs.map similarity index 99% rename from js/NcUserBubble-W_wjP2lY-BmhJ14QN.chunk.mjs.map rename to js/NcUserBubble-W_wjP2lY-Cnkl2DNl.chunk.mjs.map index 8b3db4347..1753a29c8 100644 --- a/js/NcUserBubble-W_wjP2lY-BmhJ14QN.chunk.mjs.map +++ b/js/NcUserBubble-W_wjP2lY-Cnkl2DNl.chunk.mjs.map @@ -1 +1 @@ -{"version":3,"file":"NcUserBubble-W_wjP2lY-BmhJ14QN.chunk.mjs","sources":["../node_modules/@nextcloud/vue/dist/chunks/NcUserBubble-W_wjP2lY.mjs"],"sourcesContent":["import '../assets/NcUserBubble-BsTKRhKz.css';\nimport { n as normalizeComponent } from \"./_plugin-vue2_normalizer-DU4iP6Vu.mjs\";\nimport { N as NcAvatar } from \"./NcAvatar-CTzwxkvv.mjs\";\nimport { N as NcPopover } from \"./NcPopover-kYsewfff.mjs\";\nimport Vue from \"vue\";\nimport { RouterLink } from \"vue-router\";\nconst _sfc_main$1 = {\n name: \"NcUserBubbleDiv\"\n};\nvar _sfc_render$1 = function render() {\n var _vm = this, _c = _vm._self._c;\n return _c(\"div\", [_vm._t(\"trigger\")], 2);\n};\nvar _sfc_staticRenderFns$1 = [];\nvar __component__$1 = /* @__PURE__ */ normalizeComponent(\n _sfc_main$1,\n _sfc_render$1,\n _sfc_staticRenderFns$1,\n false,\n null,\n null\n);\nconst NcUserBubbleDiv = __component__$1.exports;\nconst _sfc_main = {\n name: \"NcUserBubble\",\n components: {\n NcAvatar,\n NcPopover,\n NcUserBubbleDiv\n },\n props: {\n /**\n * Override generated avatar, can be an url or an icon class\n */\n avatarImage: {\n type: String,\n default: void 0\n },\n /**\n * Provide the user id if this is a user\n */\n user: {\n type: String,\n default: void 0\n },\n /**\n * Displayed label\n */\n displayName: {\n type: String,\n default: void 0\n },\n /**\n * Whether or not to display the user-status\n */\n showUserStatus: {\n type: Boolean,\n default: false\n },\n /**\n * Define the whole bubble as a link\n */\n url: {\n type: String,\n default: void 0,\n validator: (url) => {\n try {\n url = new URL(url, url?.startsWith?.(\"/\") ? window.location.href : void 0);\n return true;\n } catch (error) {\n return false;\n }\n }\n },\n /**\n * Use bubble as a router-link for in-app navigation\n */\n to: {\n type: [String, Object],\n default: void 0\n },\n /**\n * Default popover state. Requires the UserBubble\n * to have some content to render inside the popover\n */\n open: {\n type: Boolean,\n default: false\n },\n /**\n * Use the primary colour\n */\n primary: {\n type: Boolean,\n default: false\n },\n /**\n * This is the height of the component\n */\n size: {\n type: Number,\n default: 20\n },\n /**\n * This is the margin of the avatar (size - margin = avatar size)\n */\n margin: {\n type: Number,\n default: 2\n }\n },\n emits: [\n \"click\",\n \"update:open\"\n ],\n computed: {\n /**\n * If userbubble is empty, let's NOT\n * use the Popover component\n * We need a component instead of a simple div here,\n * because otherwise the trigger template will not be shown.\n *\n * @return {string} 'Popover' or 'UserBubbleDiv'\n */\n isPopoverComponent() {\n return !this.popoverEmpty ? \"NcPopover\" : \"NcUserBubbleDiv\";\n },\n /**\n * Is the provided avatar url valid or not\n *\n * @return {boolean}\n */\n isAvatarUrl() {\n if (!this.avatarImage) {\n return false;\n }\n try {\n const url = new URL(this.avatarImage);\n return !!url;\n } catch (error) {\n return false;\n }\n },\n /**\n * Do we have a custom avatar or not\n *\n * @return {boolean}\n */\n isCustomAvatar() {\n return !!this.avatarImage;\n },\n hasUrl() {\n return this.url && this.url.trim() !== \"\";\n },\n isLinkComponent() {\n if (this.hasUrl) {\n return \"a\";\n } else if (this.to) {\n return RouterLink;\n } else {\n return \"div\";\n }\n },\n popoverEmpty() {\n if (\"default\" in this.$slots) {\n return false;\n }\n return true;\n },\n styles() {\n return {\n content: {\n height: this.size + \"px\",\n lineHeight: this.size + \"px\",\n borderRadius: this.size / 2 + \"px\"\n },\n avatar: {\n marginInlineStart: this.margin + \"px\"\n }\n };\n }\n },\n mounted() {\n if (!this.displayName && !this.user) {\n Vue.util.warn(\"[NcUserBubble] At least `displayName` or `user` property should be set.\");\n }\n },\n methods: {\n onOpenChange(state) {\n this.$emit(\"update:open\", state);\n },\n /**\n * Catch and forward click event to parent\n *\n * @param {Event} event the click event\n */\n onClick(event) {\n this.$emit(\"click\", event);\n }\n }\n};\nvar _sfc_render = function render2() {\n var _vm = this, _c = _vm._self._c;\n return _c(_vm.isPopoverComponent, { tag: \"component\", staticClass: \"user-bubble__wrapper\", attrs: { \"trigger\": \"hover focus\", \"shown\": _vm.open }, on: { \"update:open\": _vm.onOpenChange }, scopedSlots: _vm._u([{ key: \"trigger\", fn: function({ attrs }) {\n return [_c(_vm.isLinkComponent, _vm._b({ tag: \"component\", staticClass: \"user-bubble__content\", class: { \"user-bubble__content--primary\": _vm.primary }, style: _vm.styles.content, attrs: { \"to\": _vm.to, \"href\": _vm.hasUrl ? _vm.url : null }, on: { \"click\": _vm.onClick } }, \"component\", attrs, false), [_c(\"NcAvatar\", { staticClass: \"user-bubble__avatar\", style: _vm.styles.avatar, attrs: { \"url\": _vm.isCustomAvatar && _vm.isAvatarUrl ? _vm.avatarImage : void 0, \"icon-class\": _vm.isCustomAvatar && !_vm.isAvatarUrl ? _vm.avatarImage : void 0, \"user\": _vm.user, \"display-name\": _vm.displayName, \"size\": _vm.size - _vm.margin * 2, \"disable-tooltip\": true, \"disable-menu\": true, \"show-user-status\": _vm.showUserStatus } }), _c(\"span\", { staticClass: \"user-bubble__name\" }, [_vm._v(\" \" + _vm._s(_vm.displayName || _vm.user) + \" \")]), _vm.$slots.name ? _c(\"span\", { staticClass: \"user-bubble__secondary\" }, [_vm._t(\"name\")], 2) : _vm._e()], 1)];\n } }], null, true) }, [_vm._t(\"default\")], 2);\n};\nvar _sfc_staticRenderFns = [];\nvar __component__ = /* @__PURE__ */ normalizeComponent(\n _sfc_main,\n _sfc_render,\n _sfc_staticRenderFns,\n false,\n null,\n \"a62a9496\"\n);\nconst NcUserBubble = __component__.exports;\nexport {\n NcUserBubble as N\n};\n//# sourceMappingURL=NcUserBubble-W_wjP2lY.mjs.map\n"],"names":["_sfc_main$1","_sfc_render$1","_vm","_c","_sfc_staticRenderFns$1","__component__$1","normalizeComponent","NcUserBubbleDiv","_sfc_main","NcAvatar","NcPopover","url","RouterLink","Vue","state","event","_sfc_render","attrs","_sfc_staticRenderFns","__component__","NcUserBubble"],"mappings":"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","x_google_ignoreList":[0]} \ No newline at end of file +{"version":3,"file":"NcUserBubble-W_wjP2lY-Cnkl2DNl.chunk.mjs","sources":["../node_modules/@nextcloud/vue/dist/chunks/NcUserBubble-W_wjP2lY.mjs"],"sourcesContent":["import '../assets/NcUserBubble-BsTKRhKz.css';\nimport { n as normalizeComponent } from \"./_plugin-vue2_normalizer-DU4iP6Vu.mjs\";\nimport { N as NcAvatar } from \"./NcAvatar-CTzwxkvv.mjs\";\nimport { N as NcPopover } from \"./NcPopover-kYsewfff.mjs\";\nimport Vue from \"vue\";\nimport { RouterLink } from \"vue-router\";\nconst _sfc_main$1 = {\n name: \"NcUserBubbleDiv\"\n};\nvar _sfc_render$1 = function render() {\n var _vm = this, _c = _vm._self._c;\n return _c(\"div\", [_vm._t(\"trigger\")], 2);\n};\nvar _sfc_staticRenderFns$1 = [];\nvar __component__$1 = /* @__PURE__ */ normalizeComponent(\n _sfc_main$1,\n _sfc_render$1,\n _sfc_staticRenderFns$1,\n false,\n null,\n null\n);\nconst NcUserBubbleDiv = __component__$1.exports;\nconst _sfc_main = {\n name: \"NcUserBubble\",\n components: {\n NcAvatar,\n NcPopover,\n NcUserBubbleDiv\n },\n props: {\n /**\n * Override generated avatar, can be an url or an icon class\n */\n avatarImage: {\n type: String,\n default: void 0\n },\n /**\n * Provide the user id if this is a user\n */\n user: {\n type: String,\n default: void 0\n },\n /**\n * Displayed label\n */\n displayName: {\n type: String,\n default: void 0\n },\n /**\n * Whether or not to display the user-status\n */\n showUserStatus: {\n type: Boolean,\n default: false\n },\n /**\n * Define the whole bubble as a link\n */\n url: {\n type: String,\n default: void 0,\n validator: (url) => {\n try {\n url = new URL(url, url?.startsWith?.(\"/\") ? window.location.href : void 0);\n return true;\n } catch (error) {\n return false;\n }\n }\n },\n /**\n * Use bubble as a router-link for in-app navigation\n */\n to: {\n type: [String, Object],\n default: void 0\n },\n /**\n * Default popover state. Requires the UserBubble\n * to have some content to render inside the popover\n */\n open: {\n type: Boolean,\n default: false\n },\n /**\n * Use the primary colour\n */\n primary: {\n type: Boolean,\n default: false\n },\n /**\n * This is the height of the component\n */\n size: {\n type: Number,\n default: 20\n },\n /**\n * This is the margin of the avatar (size - margin = avatar size)\n */\n margin: {\n type: Number,\n default: 2\n }\n },\n emits: [\n \"click\",\n \"update:open\"\n ],\n computed: {\n /**\n * If userbubble is empty, let's NOT\n * use the Popover component\n * We need a component instead of a simple div here,\n * because otherwise the trigger template will not be shown.\n *\n * @return {string} 'Popover' or 'UserBubbleDiv'\n */\n isPopoverComponent() {\n return !this.popoverEmpty ? \"NcPopover\" : \"NcUserBubbleDiv\";\n },\n /**\n * Is the provided avatar url valid or not\n *\n * @return {boolean}\n */\n isAvatarUrl() {\n if (!this.avatarImage) {\n return false;\n }\n try {\n const url = new URL(this.avatarImage);\n return !!url;\n } catch (error) {\n return false;\n }\n },\n /**\n * Do we have a custom avatar or not\n *\n * @return {boolean}\n */\n isCustomAvatar() {\n return !!this.avatarImage;\n },\n hasUrl() {\n return this.url && this.url.trim() !== \"\";\n },\n isLinkComponent() {\n if (this.hasUrl) {\n return \"a\";\n } else if (this.to) {\n return RouterLink;\n } else {\n return \"div\";\n }\n },\n popoverEmpty() {\n if (\"default\" in this.$slots) {\n return false;\n }\n return true;\n },\n styles() {\n return {\n content: {\n height: this.size + \"px\",\n lineHeight: this.size + \"px\",\n borderRadius: this.size / 2 + \"px\"\n },\n avatar: {\n marginInlineStart: this.margin + \"px\"\n }\n };\n }\n },\n mounted() {\n if (!this.displayName && !this.user) {\n Vue.util.warn(\"[NcUserBubble] At least `displayName` or `user` property should be set.\");\n }\n },\n methods: {\n onOpenChange(state) {\n this.$emit(\"update:open\", state);\n },\n /**\n * Catch and forward click event to parent\n *\n * @param {Event} event the click event\n */\n onClick(event) {\n this.$emit(\"click\", event);\n }\n }\n};\nvar _sfc_render = function render2() {\n var _vm = this, _c = _vm._self._c;\n return _c(_vm.isPopoverComponent, { tag: \"component\", staticClass: \"user-bubble__wrapper\", attrs: { \"trigger\": \"hover focus\", \"shown\": _vm.open }, on: { \"update:open\": _vm.onOpenChange }, scopedSlots: _vm._u([{ key: \"trigger\", fn: function({ attrs }) {\n return [_c(_vm.isLinkComponent, _vm._b({ tag: \"component\", staticClass: \"user-bubble__content\", class: { \"user-bubble__content--primary\": _vm.primary }, style: _vm.styles.content, attrs: { \"to\": _vm.to, \"href\": _vm.hasUrl ? _vm.url : null }, on: { \"click\": _vm.onClick } }, \"component\", attrs, false), [_c(\"NcAvatar\", { staticClass: \"user-bubble__avatar\", style: _vm.styles.avatar, attrs: { \"url\": _vm.isCustomAvatar && _vm.isAvatarUrl ? _vm.avatarImage : void 0, \"icon-class\": _vm.isCustomAvatar && !_vm.isAvatarUrl ? _vm.avatarImage : void 0, \"user\": _vm.user, \"display-name\": _vm.displayName, \"size\": _vm.size - _vm.margin * 2, \"disable-tooltip\": true, \"disable-menu\": true, \"show-user-status\": _vm.showUserStatus } }), _c(\"span\", { staticClass: \"user-bubble__name\" }, [_vm._v(\" \" + _vm._s(_vm.displayName || _vm.user) + \" \")]), _vm.$slots.name ? _c(\"span\", { staticClass: \"user-bubble__secondary\" }, [_vm._t(\"name\")], 2) : _vm._e()], 1)];\n } }], null, true) }, [_vm._t(\"default\")], 2);\n};\nvar _sfc_staticRenderFns = [];\nvar __component__ = /* @__PURE__ */ normalizeComponent(\n _sfc_main,\n _sfc_render,\n _sfc_staticRenderFns,\n false,\n null,\n \"a62a9496\"\n);\nconst NcUserBubble = __component__.exports;\nexport {\n NcUserBubble as N\n};\n//# sourceMappingURL=NcUserBubble-W_wjP2lY.mjs.map\n"],"names":["_sfc_main$1","_sfc_render$1","_vm","_c","_sfc_staticRenderFns$1","__component__$1","normalizeComponent","NcUserBubbleDiv","_sfc_main","NcAvatar","NcPopover","url","RouterLink","Vue","state","event","_sfc_render","attrs","_sfc_staticRenderFns","__component__","NcUserBubble"],"mappings":"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","x_google_ignoreList":[0]} \ No newline at end of file diff --git a/js/SharedAlbumContent-dGZlE584.chunk.mjs b/js/SharedAlbumContent-j0yLRanA.chunk.mjs similarity index 96% rename from js/SharedAlbumContent-dGZlE584.chunk.mjs rename to js/SharedAlbumContent-j0yLRanA.chunk.mjs index fdfa31091..74590ee9b 100644 --- a/js/SharedAlbumContent-dGZlE584.chunk.mjs +++ b/js/SharedAlbumContent-j0yLRanA.chunk.mjs @@ -1,2 +1,2 @@ -import{e as s,B as i,A as n}from"./index-DySs6xMI.chunk.mjs";import{N as r}from"./index-DdKmqUaK-D1D-0Ag9.chunk.mjs";import{t as m}from"./vue.runtime.esm-CWuAmtQL.chunk.mjs";import{N as c}from"./NcEmptyContent-BdKXMbxi.chunk.mjs";import{N as u}from"./NcUserBubble-W_wjP2lY-BmhJ14QN.chunk.mjs";import{i as d}from"./isMobile-BnDNCp_S.chunk.mjs";import{S as h}from"./index-x9vhq81Z.chunk.mjs";import{h as b,D as p,i as f,P as N,M as A,n as g}from"./icons-DIHlkdtB.chunk.mjs";import{F as C}from"./FetchFilesMixin-BFVnxMZ5.chunk.mjs";import{F as _}from"./FetchCollectionContentMixin-Bb6WGQlU.chunk.mjs";import{C as F}from"./CollectionContent-BYS0BZ_P.chunk.mjs";import{H as y}from"./HeaderNavigation-FnL8pqA5.chunk.mjs";import{P as v}from"./PhotosPicker-BQ2OgDNA.chunk.mjs";import"./index-C-mleKoq.chunk.mjs";import"./preload-helper-Dh9HmuEY.chunk.mjs";import"./index-B5VUqMFg.chunk.mjs";import"./index-r_e2HRW6.chunk.mjs";import"./PhotoSearch-G2t0kCpr.chunk.mjs";import"./AbortControllerMixin-CQgfjju6.chunk.mjs";import"./collectionFetcher-D_WT7y4k.chunk.mjs";import"./FilesListViewer-fmnbxYl2.chunk.mjs";import"./fileFetcher-DUsQ5B5l.chunk.mjs";import"./File-Bfy7XiO5.chunk.mjs";import"./NcNoteCard-CMkwhe9U.chunk.mjs";import"./FilesByMonthMixin-BuOw3Oo-.chunk.mjs";const k={name:"SharedAlbumContent",components:{MapMarker:A,Plus:N,Close:f,Delete:p,ImagePlus:b,NcEmptyContent:c,NcActions:n,NcActionButton:i,NcActionSeparator:r,NcButton:s,NcUserBubble:u,CollectionContent:F,PhotosPicker:v,HeaderNavigation:y},mixins:[_,C,d],props:{albumName:{type:String,default:"/"}},data(){return{showAddPhotosModal:!1,loadingCount:0,loadingAddFilesToAlbum:!1,collaboratorTypes:h}},computed:{files(){return this.$store.state.files.files},album(){return this.$store.getters.getSharedAlbum(this.albumName)},albumFileIds(){return this.$store.getters.getSharedAlbumFiles(this.albumName)},albumOriginalName(){return this.albumName.replace(new RegExp(`\\(${this.album?.attributes.collaborators[0].id}\\)$`),"")},albumFileName(){return this.$store.getters.getSharedAlbumName(this.albumName)}},async mounted(){this.fetchAlbum(),this.fetchAlbumContent()},methods:{async fetchAlbum(){await this.fetchCollection(this.albumFileName,["","",""])},async fetchAlbumContent(){await this.fetchCollectionFiles(this.albumFileName)},async handleFilesPicked(t){this.showAddPhotosModal=!1,await this.$store.dispatch("addFilesToCollection",{collectionFileName:this.album.root+this.album.path,fileIdsToAdd:t}),await this.fetchAlbumContent()},async handleRemoveFilesFromAlbum(t){this.$refs.collectionContent.onUncheckFiles(t),await this.$store.dispatch("removeFilesFromCollection",{collectionFileName:this.album.root+this.album.path,fileIdsToRemove:t})},async handleDeleteAlbum(){await this.$store.dispatch("deleteCollection",{collectionFileName:this.album.root+this.album.path}),this.$router.push("/sharedalbums")},t:m}};var P=function(){var t=this,o=t._self._c;return o("div",[o("CollectionContent",{ref:"collectionContent",attrs:{collection:t.album,"collection-file-ids":t.albumFileIds,loading:t.loadingCollection||t.loadingCollectionFiles,error:t.errorFetchingCollection||t.errorFetchingCollectionFiles},scopedSlots:t._u([{key:"header",fn:function({selectedFileIds:e,resetSelection:l}){return o("HeaderNavigation",{key:"navigation",attrs:{loading:t.loadingCollectionFiles,params:{albumName:t.albumName},path:"/"+t.albumName,title:t.albumOriginalName},on:{refresh:t.fetchAlbumContent}},[t.album!==void 0&&t.album.attributes.location!==""?o("div",{staticClass:"album__location",attrs:{slot:"subtitle"},slot:"subtitle"},[o("MapMarker"),t._v(t._s(t.album.attributes.location)+" ⸱ "+t._s(t.t("photos","Shared by"))+" "),o("NcUserBubble",{attrs:{"display-name":t.album.attributes.collaborators[0].label,user:t.album.attributes.collaborators[0].id}})],1):t._e(),o("template",{slot:"default"},[e.length>0?o("NcButton",{attrs:{"aria-label":t.t("photos","Unselect all")},on:{click:l},scopedSlots:t._u([{key:"icon",fn:function(){return[o("Close")]},proxy:!0}],null,!0)},[t._v(" "+t._s(t.t("photos","Unselect all"))+" ")]):t._e()],1),t.album!==void 0?o("template",{slot:"right"},[t.album.attributes.nbItems!==0?o("NcButton",{attrs:{type:"secondary","aria-label":t.t("photos","Add photos to this album")},on:{click:function(a){t.showAddPhotosModal=!0}}},[o("Plus",{attrs:{slot:"icon"},slot:"icon"}),t._v(" "+t._s(t.t("photos","Add"))+" ")],1):t._e(),o("NcActions",{attrs:{"force-menu":!0,"aria-label":t.t("photos","Open actions menu")}},[t.album.attributes.collaborators[0].type===t.collaboratorTypes.User?o("NcActionButton",{attrs:{"close-after-click":!0},on:{click:t.handleDeleteAlbum}},[t._v(" "+t._s(t.t("photos","Delete album"))+" "),o("Delete",{attrs:{slot:"icon"},slot:"icon"})],1):t._e(),e.length>0?[o("NcActionSeparator"),o("NcActionButton",{attrs:{"close-after-click":!0},on:{click:function(a){return t.handleRemoveFilesFromAlbum(e)}}},[t._v(" "+t._s(t.t("photos","Remove selection from album"))+" "),o("Close",{attrs:{slot:"icon"},slot:"icon"})],1)]:t._e()],2)],1):t._e()],2)}}],null,!1,3643502999)},[t.album!==void 0&&t.album.attributes.nbItems===0&&!(t.loadingCollectionFiles||t.loadingCollection)?o("NcEmptyContent",{staticClass:"album__empty",attrs:{slot:"empty-content",name:t.t("photos","This album does not have any photos or videos yet!")},slot:"empty-content"},[o("ImagePlus",{attrs:{slot:"icon"},slot:"icon"}),o("NcButton",{staticClass:"album__empty__button",attrs:{slot:"action",type:"primary","aria-label":t.t("photos","Add photos to this album")},on:{click:function(e){t.showAddPhotosModal=!0}},slot:"action"},[o("Plus",{attrs:{slot:"icon"},slot:"icon"}),t._v(" "+t._s(t.t("photos","Add"))+" ")],1)],1):t._e()],1),t.album!==void 0?o("PhotosPicker",{attrs:{open:t.showAddPhotosModal,name:t.t("photos","Add photos to {albumName}",{albumName:t.albumOriginalName}),destination:t.album.basename,"blacklist-ids":t.albumFileIds,loading:t.loadingAddFilesToAlbum},on:{"update:open":function(e){t.showAddPhotosModal=e},"files-picked":t.handleFilesPicked}}):t._e()],1)},w=[],S=g(k,P,w,!1,null,"d8bcd54a");const tt=S.exports;export{tt as default}; -//# sourceMappingURL=SharedAlbumContent-dGZlE584.chunk.mjs.map +import{e as s,B as i,A as n}from"./index-DySs6xMI.chunk.mjs";import{N as r}from"./index-DdKmqUaK-D1D-0Ag9.chunk.mjs";import{t as m}from"./vue.runtime.esm-CWuAmtQL.chunk.mjs";import{N as c}from"./NcEmptyContent-BdKXMbxi.chunk.mjs";import{N as u}from"./NcUserBubble-W_wjP2lY-Cnkl2DNl.chunk.mjs";import{i as d}from"./isMobile-BnDNCp_S.chunk.mjs";import{S as h}from"./index-x9vhq81Z.chunk.mjs";import{h as b,D as p,i as f,P as N,M as A,n as g}from"./icons-DIHlkdtB.chunk.mjs";import{F as C}from"./FetchFilesMixin-BFVnxMZ5.chunk.mjs";import{F as _}from"./FetchCollectionContentMixin-Bb6WGQlU.chunk.mjs";import{C as F}from"./CollectionContent-BYS0BZ_P.chunk.mjs";import{H as y}from"./HeaderNavigation-FnL8pqA5.chunk.mjs";import{P as v}from"./PhotosPicker-BQ2OgDNA.chunk.mjs";import"./index-C-mleKoq.chunk.mjs";import"./preload-helper-Dh9HmuEY.chunk.mjs";import"./index-B5VUqMFg.chunk.mjs";import"./index-CuVencPr.chunk.mjs";import"./PhotoSearch-G2t0kCpr.chunk.mjs";import"./AbortControllerMixin-CQgfjju6.chunk.mjs";import"./collectionFetcher-D_WT7y4k.chunk.mjs";import"./FilesListViewer-fmnbxYl2.chunk.mjs";import"./fileFetcher-DUsQ5B5l.chunk.mjs";import"./File-Bfy7XiO5.chunk.mjs";import"./NcNoteCard-CMkwhe9U.chunk.mjs";import"./FilesByMonthMixin-BuOw3Oo-.chunk.mjs";const k={name:"SharedAlbumContent",components:{MapMarker:A,Plus:N,Close:f,Delete:p,ImagePlus:b,NcEmptyContent:c,NcActions:n,NcActionButton:i,NcActionSeparator:r,NcButton:s,NcUserBubble:u,CollectionContent:F,PhotosPicker:v,HeaderNavigation:y},mixins:[_,C,d],props:{albumName:{type:String,default:"/"}},data(){return{showAddPhotosModal:!1,loadingCount:0,loadingAddFilesToAlbum:!1,collaboratorTypes:h}},computed:{files(){return this.$store.state.files.files},album(){return this.$store.getters.getSharedAlbum(this.albumName)},albumFileIds(){return this.$store.getters.getSharedAlbumFiles(this.albumName)},albumOriginalName(){return this.albumName.replace(new RegExp(`\\(${this.album?.attributes.collaborators[0].id}\\)$`),"")},albumFileName(){return this.$store.getters.getSharedAlbumName(this.albumName)}},async mounted(){this.fetchAlbum(),this.fetchAlbumContent()},methods:{async fetchAlbum(){await this.fetchCollection(this.albumFileName,["","",""])},async fetchAlbumContent(){await this.fetchCollectionFiles(this.albumFileName)},async handleFilesPicked(t){this.showAddPhotosModal=!1,await this.$store.dispatch("addFilesToCollection",{collectionFileName:this.album.root+this.album.path,fileIdsToAdd:t}),await this.fetchAlbumContent()},async handleRemoveFilesFromAlbum(t){this.$refs.collectionContent.onUncheckFiles(t),await this.$store.dispatch("removeFilesFromCollection",{collectionFileName:this.album.root+this.album.path,fileIdsToRemove:t})},async handleDeleteAlbum(){await this.$store.dispatch("deleteCollection",{collectionFileName:this.album.root+this.album.path}),this.$router.push("/sharedalbums")},t:m}};var P=function(){var t=this,o=t._self._c;return o("div",[o("CollectionContent",{ref:"collectionContent",attrs:{collection:t.album,"collection-file-ids":t.albumFileIds,loading:t.loadingCollection||t.loadingCollectionFiles,error:t.errorFetchingCollection||t.errorFetchingCollectionFiles},scopedSlots:t._u([{key:"header",fn:function({selectedFileIds:e,resetSelection:l}){return o("HeaderNavigation",{key:"navigation",attrs:{loading:t.loadingCollectionFiles,params:{albumName:t.albumName},path:"/"+t.albumName,title:t.albumOriginalName},on:{refresh:t.fetchAlbumContent}},[t.album!==void 0&&t.album.attributes.location!==""?o("div",{staticClass:"album__location",attrs:{slot:"subtitle"},slot:"subtitle"},[o("MapMarker"),t._v(t._s(t.album.attributes.location)+" ⸱ "+t._s(t.t("photos","Shared by"))+" "),o("NcUserBubble",{attrs:{"display-name":t.album.attributes.collaborators[0].label,user:t.album.attributes.collaborators[0].id}})],1):t._e(),o("template",{slot:"default"},[e.length>0?o("NcButton",{attrs:{"aria-label":t.t("photos","Unselect all")},on:{click:l},scopedSlots:t._u([{key:"icon",fn:function(){return[o("Close")]},proxy:!0}],null,!0)},[t._v(" "+t._s(t.t("photos","Unselect all"))+" ")]):t._e()],1),t.album!==void 0?o("template",{slot:"right"},[t.album.attributes.nbItems!==0?o("NcButton",{attrs:{type:"secondary","aria-label":t.t("photos","Add photos to this album")},on:{click:function(a){t.showAddPhotosModal=!0}}},[o("Plus",{attrs:{slot:"icon"},slot:"icon"}),t._v(" "+t._s(t.t("photos","Add"))+" ")],1):t._e(),o("NcActions",{attrs:{"force-menu":!0,"aria-label":t.t("photos","Open actions menu")}},[t.album.attributes.collaborators[0].type===t.collaboratorTypes.User?o("NcActionButton",{attrs:{"close-after-click":!0},on:{click:t.handleDeleteAlbum}},[t._v(" "+t._s(t.t("photos","Delete album"))+" "),o("Delete",{attrs:{slot:"icon"},slot:"icon"})],1):t._e(),e.length>0?[o("NcActionSeparator"),o("NcActionButton",{attrs:{"close-after-click":!0},on:{click:function(a){return t.handleRemoveFilesFromAlbum(e)}}},[t._v(" "+t._s(t.t("photos","Remove selection from album"))+" "),o("Close",{attrs:{slot:"icon"},slot:"icon"})],1)]:t._e()],2)],1):t._e()],2)}}],null,!1,3643502999)},[t.album!==void 0&&t.album.attributes.nbItems===0&&!(t.loadingCollectionFiles||t.loadingCollection)?o("NcEmptyContent",{staticClass:"album__empty",attrs:{slot:"empty-content",name:t.t("photos","This album does not have any photos or videos yet!")},slot:"empty-content"},[o("ImagePlus",{attrs:{slot:"icon"},slot:"icon"}),o("NcButton",{staticClass:"album__empty__button",attrs:{slot:"action",type:"primary","aria-label":t.t("photos","Add photos to this album")},on:{click:function(e){t.showAddPhotosModal=!0}},slot:"action"},[o("Plus",{attrs:{slot:"icon"},slot:"icon"}),t._v(" "+t._s(t.t("photos","Add"))+" ")],1)],1):t._e()],1),t.album!==void 0?o("PhotosPicker",{attrs:{open:t.showAddPhotosModal,name:t.t("photos","Add photos to {albumName}",{albumName:t.albumOriginalName}),destination:t.album.basename,"blacklist-ids":t.albumFileIds,loading:t.loadingAddFilesToAlbum},on:{"update:open":function(e){t.showAddPhotosModal=e},"files-picked":t.handleFilesPicked}}):t._e()],1)},w=[],S=g(k,P,w,!1,null,"d8bcd54a");const tt=S.exports;export{tt as default}; +//# sourceMappingURL=SharedAlbumContent-j0yLRanA.chunk.mjs.map diff --git a/js/SharedAlbumContent-dGZlE584.chunk.mjs.license b/js/SharedAlbumContent-j0yLRanA.chunk.mjs.license similarity index 100% rename from js/SharedAlbumContent-dGZlE584.chunk.mjs.license rename to js/SharedAlbumContent-j0yLRanA.chunk.mjs.license diff --git a/js/SharedAlbumContent-dGZlE584.chunk.mjs.map b/js/SharedAlbumContent-j0yLRanA.chunk.mjs.map similarity index 99% rename from js/SharedAlbumContent-dGZlE584.chunk.mjs.map rename to js/SharedAlbumContent-j0yLRanA.chunk.mjs.map index 47677ca68..103dc28fd 100644 --- a/js/SharedAlbumContent-dGZlE584.chunk.mjs.map +++ b/js/SharedAlbumContent-j0yLRanA.chunk.mjs.map @@ -1 +1 @@ -{"version":3,"file":"SharedAlbumContent-dGZlE584.chunk.mjs","sources":["../src/views/SharedAlbumContent.vue"],"sourcesContent":["\n\n\n\n\n"],"names":["_sfc_main","MapMarker","Plus","Close","Delete","ImagePlus","NcEmptyContent","NcActions","NcActionButton","NcActionSeparator","NcButton","NcUserBubble","CollectionContent","PhotosPicker","HeaderNavigation","FetchCollectionContentMixin","FetchFilesMixin","isMobile","ShareType","fileIds","translate"],"mappings":"+uCA+HA,MAAAA,EAAA,CACA,KAAA,qBACA,WAAA,CACA,UAAAC,EACA,KAAAC,EACA,MAAAC,EAGA,OAAAC,EACA,UAAAC,EACA,eAAAC,EACA,UAAAC,EACA,eAAAC,EACA,kBAAAC,EACA,SAAAC,EACA,aAAAC,EACA,kBAAAC,EAEA,aAAAC,EACA,iBAAAC,CACA,EAEA,OAAA,CACAC,EACAC,EACAC,CACA,EAEA,MAAA,CACA,UAAA,CACA,KAAA,OACA,QAAA,GAAA,CAEA,EAEA,MAAA,CACA,MAAA,CACA,mBAAA,GACA,aAAA,EACA,uBAAA,GACA,kBAAAC,CACA,CACA,EAEA,SAAA,CACA,OAAA,CACA,OAAA,KAAA,OAAA,MAAA,MAAA,KACA,EAEA,OAAA,CACA,OAAA,KAAA,OAAA,QAAA,eAAA,KAAA,SAAA,CACA,EAEA,cAAA,CACA,OAAA,KAAA,OAAA,QAAA,oBAAA,KAAA,SAAA,CACA,EAEA,mBAAA,CACA,OAAA,KAAA,UAAA,QAAA,IAAA,OAAA,MAAA,KAAA,OAAA,WAAA,cAAA,CAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CACA,EAEA,eAAA,CACA,OAAA,KAAA,OAAA,QAAA,mBAAA,KAAA,SAAA,CAAA,CAEA,EAEA,MAAA,SAAA,CACA,KAAA,WAAA,EACA,KAAA,kBAAA,CACA,EAEA,QAAA,CACA,MAAA,YAAA,CACA,MAAA,KAAA,gBACA,KAAA,cACA,CAAA,kBAAA,mBAAA,sBAAA,CACA,CACA,EAEA,MAAA,mBAAA,CACA,MAAA,KAAA,qBAAA,KAAA,aAAA,CACA,EAEA,MAAA,kBAAAC,EAAA,CACA,KAAA,mBAAA,GACA,MAAA,KAAA,OAAA,SAAA,uBAAA,CAAA,mBAAA,KAAA,MAAA,KAAA,KAAA,MAAA,KAAA,aAAAA,EAAA,EAEA,MAAA,KAAA,kBAAA,CACA,EAEA,MAAA,2BAAAA,EAAA,CACA,KAAA,MAAA,kBAAA,eAAAA,CAAA,EACA,MAAA,KAAA,OAAA,SAAA,4BAAA,CAAA,mBAAA,KAAA,MAAA,KAAA,KAAA,MAAA,KAAA,gBAAAA,EAAA,CACA,EAEA,MAAA,mBAAA,CACA,MAAA,KAAA,OAAA,SAAA,mBAAA,CAAA,mBAAA,KAAA,MAAA,KAAA,KAAA,MAAA,IAAA,CAAA,EACA,KAAA,QAAA,KAAA,eAAA,CACA,EAEA,EAAAC,CAAA,CAEA"} \ No newline at end of file +{"version":3,"file":"SharedAlbumContent-j0yLRanA.chunk.mjs","sources":["../src/views/SharedAlbumContent.vue"],"sourcesContent":["\n\n\n\n\n"],"names":["_sfc_main","MapMarker","Plus","Close","Delete","ImagePlus","NcEmptyContent","NcActions","NcActionButton","NcActionSeparator","NcButton","NcUserBubble","CollectionContent","PhotosPicker","HeaderNavigation","FetchCollectionContentMixin","FetchFilesMixin","isMobile","ShareType","fileIds","translate"],"mappings":"+uCA+HA,MAAAA,EAAA,CACA,KAAA,qBACA,WAAA,CACA,UAAAC,EACA,KAAAC,EACA,MAAAC,EAGA,OAAAC,EACA,UAAAC,EACA,eAAAC,EACA,UAAAC,EACA,eAAAC,EACA,kBAAAC,EACA,SAAAC,EACA,aAAAC,EACA,kBAAAC,EAEA,aAAAC,EACA,iBAAAC,CACA,EAEA,OAAA,CACAC,EACAC,EACAC,CACA,EAEA,MAAA,CACA,UAAA,CACA,KAAA,OACA,QAAA,GAAA,CAEA,EAEA,MAAA,CACA,MAAA,CACA,mBAAA,GACA,aAAA,EACA,uBAAA,GACA,kBAAAC,CACA,CACA,EAEA,SAAA,CACA,OAAA,CACA,OAAA,KAAA,OAAA,MAAA,MAAA,KACA,EAEA,OAAA,CACA,OAAA,KAAA,OAAA,QAAA,eAAA,KAAA,SAAA,CACA,EAEA,cAAA,CACA,OAAA,KAAA,OAAA,QAAA,oBAAA,KAAA,SAAA,CACA,EAEA,mBAAA,CACA,OAAA,KAAA,UAAA,QAAA,IAAA,OAAA,MAAA,KAAA,OAAA,WAAA,cAAA,CAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CACA,EAEA,eAAA,CACA,OAAA,KAAA,OAAA,QAAA,mBAAA,KAAA,SAAA,CAAA,CAEA,EAEA,MAAA,SAAA,CACA,KAAA,WAAA,EACA,KAAA,kBAAA,CACA,EAEA,QAAA,CACA,MAAA,YAAA,CACA,MAAA,KAAA,gBACA,KAAA,cACA,CAAA,kBAAA,mBAAA,sBAAA,CACA,CACA,EAEA,MAAA,mBAAA,CACA,MAAA,KAAA,qBAAA,KAAA,aAAA,CACA,EAEA,MAAA,kBAAAC,EAAA,CACA,KAAA,mBAAA,GACA,MAAA,KAAA,OAAA,SAAA,uBAAA,CAAA,mBAAA,KAAA,MAAA,KAAA,KAAA,MAAA,KAAA,aAAAA,EAAA,EAEA,MAAA,KAAA,kBAAA,CACA,EAEA,MAAA,2BAAAA,EAAA,CACA,KAAA,MAAA,kBAAA,eAAAA,CAAA,EACA,MAAA,KAAA,OAAA,SAAA,4BAAA,CAAA,mBAAA,KAAA,MAAA,KAAA,KAAA,MAAA,KAAA,gBAAAA,EAAA,CACA,EAEA,MAAA,mBAAA,CACA,MAAA,KAAA,OAAA,SAAA,mBAAA,CAAA,mBAAA,KAAA,MAAA,KAAA,KAAA,MAAA,IAAA,CAAA,EACA,KAAA,QAAA,KAAA,eAAA,CACA,EAEA,EAAAC,CAAA,CAEA"} \ No newline at end of file diff --git a/js/SharedAlbums-Co0Oj8-D.chunk.mjs b/js/SharedAlbums-CnnPnjyL.chunk.mjs similarity index 93% rename from js/SharedAlbums-Co0Oj8-D.chunk.mjs rename to js/SharedAlbums-CnnPnjyL.chunk.mjs index 1a1932fbd..10d67fde8 100644 --- a/js/SharedAlbums-Co0Oj8-D.chunk.mjs +++ b/js/SharedAlbums-CnnPnjyL.chunk.mjs @@ -1,2 +1,2 @@ -import{F as a,n as e}from"./icons-DIHlkdtB.chunk.mjs";import{a as l,t as r,g as i,_ as n}from"./vue.runtime.esm-CWuAmtQL.chunk.mjs";import"./index-DySs6xMI.chunk.mjs";import{N as m}from"./NcEmptyContent-BdKXMbxi.chunk.mjs";import{N as c}from"./NcUserBubble-W_wjP2lY-BmhJ14QN.chunk.mjs";import{C as u,a as b}from"./CollectionCover-CNBcObse.chunk.mjs";import{H as p}from"./HeaderNavigation-FnL8pqA5.chunk.mjs";import{F as d}from"./FetchCollectionsMixin-DxgQdf9l.chunk.mjs";import"./index-C-mleKoq.chunk.mjs";import"./index-r_e2HRW6.chunk.mjs";import"./preload-helper-Dh9HmuEY.chunk.mjs";import"./AbortControllerMixin-CQgfjju6.chunk.mjs";import"./collectionFetcher-D_WT7y4k.chunk.mjs";const h={name:"SharedAlbums",components:{FolderMultipleImage:a,NcEmptyContent:m,CollectionsList:b,CollectionCover:u,HeaderNavigation:p,NcUserBubble:c},filters:{coverUrl(t){return t===-1?"":n(`/apps/photos/api/v1/preview/${t}?x=512&y=512`)},albumOriginalName(t){return t.basename.replace(new RegExp(`\\(${t.attributes.collaborators[0].id}\\)$`),"")}},mixins:[d],computed:{sharedAlbums(){return this.$store.getters.sharedAlbums}},async beforeMount(){this.fetchSharedAlbums()},methods:{fetchSharedAlbums(){this.fetchCollections(`/photos/${i()?.uid}/sharedalbums`,["","",""])},t:r,n:l}};var f=function(){var t=this,s=t._self._c;return s("CollectionsList",{staticClass:"albums-list",attrs:{collections:t.sharedAlbums,loading:t.loadingCollections,error:t.errorFetchingCollections},scopedSlots:t._u([{key:"default",fn:function({collection:o}){return s("CollectionCover",{key:o.basename,attrs:{link:`/sharedalbums/${o.basename}`,"alt-img":t.t("photos","Cover photo for shared album {albumName}",{albumName:o.basename}),"data-test":o.basename,"cover-url":t._f("coverUrl")(o.attributes["last-photo"])}},[s("span",{staticClass:"album__name"},[t._v(" "+t._s(t._f("albumOriginalName")(o))+" ")]),s("div",{staticClass:"album__details",attrs:{slot:"subtitle"},slot:"subtitle"},[t._v(" "+t._s(o.attributes.date)+" ⸱ "+t._s(t.n("photos","%n item","%n photos and videos",o.attributes.nbItems))+" "),s("br"),t._v(" "+t._s(t.t("photos","Shared by"))+" "),s("NcUserBubble",{attrs:{"display-name":o.attributes.collaborators[0].label,user:o.attributes.collaborators[0].id}})],1)])}}])},[s("HeaderNavigation",{key:"navigation",attrs:{slot:"header",loading:t.loadingCollections,title:t.t("photos","Collaborative albums"),"root-title":t.t("photos","Collaborative albums")},on:{refresh:t.fetchSharedAlbums},slot:"header"}),s("NcEmptyContent",{attrs:{slot:"empty-collections-list",name:t.t("photos","There is no album yet!")},slot:"empty-collections-list"},[s("FolderMultipleImage",{attrs:{slot:"icon"},slot:"icon"})],1)],1)},v=[],C=e(h,f,v,!1,null,"1765721a");const I=C.exports;export{I as default}; -//# sourceMappingURL=SharedAlbums-Co0Oj8-D.chunk.mjs.map +import{F as a,n as e}from"./icons-DIHlkdtB.chunk.mjs";import{a as l,t as r,g as i,_ as n}from"./vue.runtime.esm-CWuAmtQL.chunk.mjs";import"./index-DySs6xMI.chunk.mjs";import{N as m}from"./NcEmptyContent-BdKXMbxi.chunk.mjs";import{N as c}from"./NcUserBubble-W_wjP2lY-Cnkl2DNl.chunk.mjs";import{C as u,a as b}from"./CollectionCover-CNBcObse.chunk.mjs";import{H as p}from"./HeaderNavigation-FnL8pqA5.chunk.mjs";import{F as d}from"./FetchCollectionsMixin-DxgQdf9l.chunk.mjs";import"./index-C-mleKoq.chunk.mjs";import"./index-CuVencPr.chunk.mjs";import"./preload-helper-Dh9HmuEY.chunk.mjs";import"./AbortControllerMixin-CQgfjju6.chunk.mjs";import"./collectionFetcher-D_WT7y4k.chunk.mjs";const h={name:"SharedAlbums",components:{FolderMultipleImage:a,NcEmptyContent:m,CollectionsList:b,CollectionCover:u,HeaderNavigation:p,NcUserBubble:c},filters:{coverUrl(t){return t===-1?"":n(`/apps/photos/api/v1/preview/${t}?x=512&y=512`)},albumOriginalName(t){return t.basename.replace(new RegExp(`\\(${t.attributes.collaborators[0].id}\\)$`),"")}},mixins:[d],computed:{sharedAlbums(){return this.$store.getters.sharedAlbums}},async beforeMount(){this.fetchSharedAlbums()},methods:{fetchSharedAlbums(){this.fetchCollections(`/photos/${i()?.uid}/sharedalbums`,["","",""])},t:r,n:l}};var f=function(){var t=this,s=t._self._c;return s("CollectionsList",{staticClass:"albums-list",attrs:{collections:t.sharedAlbums,loading:t.loadingCollections,error:t.errorFetchingCollections},scopedSlots:t._u([{key:"default",fn:function({collection:o}){return s("CollectionCover",{key:o.basename,attrs:{link:`/sharedalbums/${o.basename}`,"alt-img":t.t("photos","Cover photo for shared album {albumName}",{albumName:o.basename}),"data-test":o.basename,"cover-url":t._f("coverUrl")(o.attributes["last-photo"])}},[s("span",{staticClass:"album__name"},[t._v(" "+t._s(t._f("albumOriginalName")(o))+" ")]),s("div",{staticClass:"album__details",attrs:{slot:"subtitle"},slot:"subtitle"},[t._v(" "+t._s(o.attributes.date)+" ⸱ "+t._s(t.n("photos","%n item","%n photos and videos",o.attributes.nbItems))+" "),s("br"),t._v(" "+t._s(t.t("photos","Shared by"))+" "),s("NcUserBubble",{attrs:{"display-name":o.attributes.collaborators[0].label,user:o.attributes.collaborators[0].id}})],1)])}}])},[s("HeaderNavigation",{key:"navigation",attrs:{slot:"header",loading:t.loadingCollections,title:t.t("photos","Collaborative albums"),"root-title":t.t("photos","Collaborative albums")},on:{refresh:t.fetchSharedAlbums},slot:"header"}),s("NcEmptyContent",{attrs:{slot:"empty-collections-list",name:t.t("photos","There is no album yet!")},slot:"empty-collections-list"},[s("FolderMultipleImage",{attrs:{slot:"icon"},slot:"icon"})],1)],1)},v=[],C=e(h,f,v,!1,null,"1765721a");const I=C.exports;export{I as default}; +//# sourceMappingURL=SharedAlbums-CnnPnjyL.chunk.mjs.map diff --git a/js/SharedAlbums-Co0Oj8-D.chunk.mjs.license b/js/SharedAlbums-CnnPnjyL.chunk.mjs.license similarity index 100% rename from js/SharedAlbums-Co0Oj8-D.chunk.mjs.license rename to js/SharedAlbums-CnnPnjyL.chunk.mjs.license diff --git a/js/SharedAlbums-Co0Oj8-D.chunk.mjs.map b/js/SharedAlbums-CnnPnjyL.chunk.mjs.map similarity index 98% rename from js/SharedAlbums-Co0Oj8-D.chunk.mjs.map rename to js/SharedAlbums-CnnPnjyL.chunk.mjs.map index 41e0e074d..40500fcac 100644 --- a/js/SharedAlbums-Co0Oj8-D.chunk.mjs.map +++ b/js/SharedAlbums-CnnPnjyL.chunk.mjs.map @@ -1 +1 @@ -{"version":3,"file":"SharedAlbums-Co0Oj8-D.chunk.mjs","sources":["../src/views/SharedAlbums.vue"],"sourcesContent":["\n\n\n\n\n"],"names":["_sfc_main","FolderMultipleImage","NcEmptyContent","CollectionsList","CollectionCover","HeaderNavigation","NcUserBubble","lastPhoto","generateUrl","album","FetchCollectionsMixin","getCurrentUser","translate","translatePlural"],"mappings":"0qBAqDA,MAAAA,EAAA,CACA,KAAA,eACA,WAAA,CACA,oBAAAC,EACA,eAAAC,EACA,gBAAAC,EACA,gBAAAC,EACA,iBAAAC,EACA,aAAAC,CACA,EAEA,QAAA,CACA,SAAAC,EAAA,CACA,OAAAA,IAAA,GACA,GAGAC,EAAA,+BAAAD,CAAA,cAAA,CACA,EAEA,kBAAAE,EAAA,CACA,OAAAA,EAAA,SAAA,QAAA,IAAA,OAAA,MAAAA,EAAA,WAAA,cAAA,CAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,CAEA,EAEA,OAAA,CACAC,CACA,EAEA,SAAA,CACA,cAAA,CACA,OAAA,KAAA,OAAA,QAAA,YAAA,CAEA,EAEA,MAAA,aAAA,CACA,KAAA,kBAAA,CACA,EAEA,QAAA,CACA,mBAAA,CACA,KAAA,iBACA,WAAAC,KAAA,GAAA,gBACA,CAAA,kBAAA,mBAAA,sBAAA,CACA,CACA,EAEA,EAAAC,EACA,EAAAC,CAAA,CAEA"} \ No newline at end of file +{"version":3,"file":"SharedAlbums-CnnPnjyL.chunk.mjs","sources":["../src/views/SharedAlbums.vue"],"sourcesContent":["\n\n\n\n\n"],"names":["_sfc_main","FolderMultipleImage","NcEmptyContent","CollectionsList","CollectionCover","HeaderNavigation","NcUserBubble","lastPhoto","generateUrl","album","FetchCollectionsMixin","getCurrentUser","translate","translatePlural"],"mappings":"0qBAqDA,MAAAA,EAAA,CACA,KAAA,eACA,WAAA,CACA,oBAAAC,EACA,eAAAC,EACA,gBAAAC,EACA,gBAAAC,EACA,iBAAAC,EACA,aAAAC,CACA,EAEA,QAAA,CACA,SAAAC,EAAA,CACA,OAAAA,IAAA,GACA,GAGAC,EAAA,+BAAAD,CAAA,cAAA,CACA,EAEA,kBAAAE,EAAA,CACA,OAAAA,EAAA,SAAA,QAAA,IAAA,OAAA,MAAAA,EAAA,WAAA,cAAA,CAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,CAEA,EAEA,OAAA,CACAC,CACA,EAEA,SAAA,CACA,cAAA,CACA,OAAA,KAAA,OAAA,QAAA,YAAA,CAEA,EAEA,MAAA,aAAA,CACA,KAAA,kBAAA,CACA,EAEA,QAAA,CACA,mBAAA,CACA,KAAA,iBACA,WAAAC,KAAA,GAAA,gBACA,CAAA,kBAAA,mBAAA,sBAAA,CACA,CACA,EAEA,EAAAC,EACA,EAAAC,CAAA,CAEA"} \ No newline at end of file diff --git a/js/Timeline-B0BPn7cp.chunk.mjs b/js/Timeline-B0BPn7cp.chunk.mjs new file mode 100644 index 000000000..5bd4451c2 --- /dev/null +++ b/js/Timeline-B0BPn7cp.chunk.mjs @@ -0,0 +1,18 @@ +import{l as x,P as y,n as r,o as S,p as O,k as $,q as I,i as B,r as D,s as L,D as M}from"./icons-DIHlkdtB.chunk.mjs";import{n as g,K as T,A,o as P,e as F,L as U,M as H,I as Y,O as V,C as z,q as j,B as E,w as R,J as f,Q as b}from"./index-DySs6xMI.chunk.mjs";import{c as q,d,a as K,t as m,g as _,_ as h,q as c,j as C,w as u,u as Q,s as J}from"./vue.runtime.esm-CWuAmtQL.chunk.mjs";import{N as G}from"./NcEmptyContent-BdKXMbxi.chunk.mjs";import{i as W}from"./isMobile-BnDNCp_S.chunk.mjs";import{m as v}from"./index-C-mleKoq.chunk.mjs";import{F as X}from"./FetchFilesMixin-BFVnxMZ5.chunk.mjs";import{F as Z}from"./FilesByMonthMixin-BuOw3Oo-.chunk.mjs";import{F as ee,a as te}from"./FilesListViewer-fmnbxYl2.chunk.mjs";import{F as se}from"./File-Bfy7XiO5.chunk.mjs";import{A as w}from"./AlbumForm-BXf1NYqI.chunk.mjs";import{N as ie}from"./NcUserBubble-W_wjP2lY-Cnkl2DNl.chunk.mjs";import{F as oe}from"./FetchCollectionsMixin-DxgQdf9l.chunk.mjs";import{A as ae}from"./ActionFavorite-DpzqJw3d.chunk.mjs";import{H as le}from"./HeaderNavigation-FnL8pqA5.chunk.mjs";import{a as ne}from"./PhotosSourceLocationsSettings-CzV450Gt.chunk.mjs";import{f as re}from"./collectionFetcher-D_WT7y4k.chunk.mjs";import"./PhotoSearch-G2t0kCpr.chunk.mjs";import"./AbortControllerMixin-CQgfjju6.chunk.mjs";import"./fileFetcher-DUsQ5B5l.chunk.mjs";import"./index-x9vhq81Z.chunk.mjs";import"./FetchCollectionContentMixin-Bb6WGQlU.chunk.mjs";import"./index-CuVencPr.chunk.mjs";import"./preload-helper-Dh9HmuEY.chunk.mjs";import"./index-B5VUqMFg.chunk.mjs";const ce={name:"NcCounterBubble",props:{type:{type:String,default:"",validator(e){return["highlighted","outlined",""].includes(e)}},active:{type:Boolean,default:!1},count:{type:Number,required:!1,default:void 0},raw:{type:Boolean,required:!1,default:!1}},computed:{counterClassObject(){return{"counter-bubble__counter--highlighted":this.type==="highlighted","counter-bubble__counter--outlined":this.type==="outlined",active:this.active}},humanizedCount(){return this.humanizeCount(this.count)}},methods:{humanizeCount(e){return this.raw?e.toString():new Intl.NumberFormat(q(),{notation:"compact",compactDisplay:"short"}).format(e)},getHumanizedCount(){if(this.count!==void 0)return{humanized:this.humanizedCount,original:this.count.toString()};if(!this.raw&&this.$slots.default?.length===1){const e=this.$slots.default[0].text?.trim();if(e&&/^\d+$/.test(e)){const t=parseInt(e,10);return{humanized:this.humanizeCount(t),original:e}}}}},render(e){const t=this.getHumanizedCount();return e("div",{staticClass:"counter-bubble__counter",class:this.counterClassObject,attrs:{title:t&&t.original!==t.humanized?t.original:void 0}},[t?.humanized??this.$slots.default])}},ue=null,de=null;var me=g(ce,ue,de,!1,null,"f1abaa29");const pe=me.exports,he={name:"NcListItem",components:{NcActions:A,NcCounterBubble:pe,NcVNodes:T},props:{details:{type:String,default:""},name:{type:String,default:void 0},exact:{type:Boolean,default:!1},to:{type:[String,Object],default:null},href:{type:String,default:"#"},target:{type:String,default:""},anchorId:{type:String,default:""},bold:{type:Boolean,default:!1},compact:{type:Boolean,default:!1},active:{type:Boolean,default:!1},linkAriaLabel:{type:String,default:""},actionsAriaLabel:{type:String,default:void 0},counterNumber:{type:[Number,String],default:0},counterType:{type:String,default:"",validator(e){return["highlighted","outlined",""].indexOf(e)!==-1}},forceDisplayActions:{type:Boolean,default:!1},forceMenu:{type:Boolean,default:!1},oneLine:{type:Boolean,default:!1}},emits:["click","update:menuOpen"],setup(){const[e]=window._oc_config?.version.split(".",2)??[];return{isLegacy:e&&Number.parseInt(e)<30}},data(){return{hovered:!1,hasActions:!1,hasSubname:!1,displayActionsOnHoverFocus:!1,menuOpen:!1,hasIndicator:!1,hasDetails:!1}},computed:{showAdditionalElements(){return!this.displayActionsOnHoverFocus||this.forceDisplayActions},showDetails(){return(this.details!==""||this.hasDetails)&&(!this.displayActionsOnHoverFocus||this.forceDisplayActions)}},watch:{menuOpen(e){!e&&!this.hovered&&(this.displayActionsOnHoverFocus=!1)}},mounted(){this.checkSlots()},updated(){this.checkSlots()},methods:{onClick(e,t,s){this.$emit("click",e),!(e.metaKey||e.altKey||e.ctrlKey||e.shiftKey)&&s&&(t?.(e),e.preventDefault())},showActions(){this.hasActions&&(this.displayActionsOnHoverFocus=!0),this.hovered=!1},hideActions(){this.displayActionsOnHoverFocus=!1},handleBlur(e){this.menuOpen||this.$refs["list-item"].contains(e.relatedTarget)||this.hideActions()},handleMouseleave(){this.menuOpen||(this.displayActionsOnHoverFocus=!1),this.hovered=!1},handleMouseover(){this.showActions(),this.hovered=!0},handleActionsUpdateOpen(e){this.menuOpen=e,this.$emit("update:menuOpen",e)},checkSlots(){this.hasActions!==!!this.$slots.actions&&(this.hasActions=!!this.$slots.actions),this.hasSubname!==!!this.$slots.subname&&(this.hasSubname=!!this.$slots.subname),this.hasIndicator!==!!this.$slots.indicator&&(this.hasIndicator=!!this.$slots.indicator),this.hasDetails!==!!this.$slots.details&&(this.hasDetails=!!this.$slots.details)}}};var fe=function(){var e=this,t=e._self._c;return t(e.to?"router-link":"NcVNodes",{tag:"component",attrs:{custom:e.to?!0:null,to:e.to,exact:e.to?e.exact:null},scopedSlots:e._u([{key:"default",fn:function({href:s,navigate:i,isActive:o}){return[t("li",{staticClass:"list-item__wrapper",class:{"list-item__wrapper--active":o||e.active}},[t("div",{ref:"list-item",staticClass:"list-item",class:{"list-item--compact":e.compact,"list-item--legacy":e.isLegacy,"list-item--one-line":e.oneLine},on:{mouseover:e.handleMouseover,mouseleave:e.handleMouseleave}},[t("a",{staticClass:"list-item__anchor",attrs:{id:e.anchorId||void 0,"aria-label":e.linkAriaLabel,href:s||e.href,target:e.target||(e.href==="#"?void 0:"_blank"),rel:e.href==="#"?void 0:"noopener noreferrer"},on:{focus:e.showActions,focusout:e.handleBlur,click:function(a){return e.onClick(a,i,s)},keydown:function(a){return!a.type.indexOf("key")&&e._k(a.keyCode,"esc",27,a.key,["Esc","Escape"])?null:e.hideActions.apply(null,arguments)}}},[e._t("icon"),t("div",{staticClass:"list-item-content"},[t("div",{staticClass:"list-item-content__main"},[t("div",{staticClass:"list-item-content__name"},[e._t("name",function(){return[e._v(e._s(e.name))]})],2),e.hasSubname?t("div",{staticClass:"list-item-content__subname",class:{"list-item-content__subname--bold":e.bold}},[e._t("subname")],2):e._e()]),t("div",{staticClass:"list-item-content__details"},[e.showDetails?t("div",{staticClass:"list-item-details__details"},[e._t("details",function(){return[e._v(e._s(e.details))]})],2):e._e(),e.counterNumber||e.hasIndicator?t("div",{directives:[{name:"show",rawName:"v-show",value:e.showAdditionalElements,expression:"showAdditionalElements"}],staticClass:"list-item-details__extra"},[e.counterNumber?t("NcCounterBubble",{staticClass:"list-item-details__counter",attrs:{active:o||e.active,type:e.counterType}},[e._v(" "+e._s(e.counterNumber)+" ")]):e._e(),e.hasIndicator?t("span",{staticClass:"list-item-details__indicator"},[e._t("indicator")],2):e._e()],1):e._e()])])],2),e.$slots["extra-actions"]?t("div",{staticClass:"list-item-content__extra-actions"},[e._t("extra-actions")],2):e._e(),t("div",{directives:[{name:"show",rawName:"v-show",value:e.forceDisplayActions||e.displayActionsOnHoverFocus,expression:"forceDisplayActions || displayActionsOnHoverFocus"}],staticClass:"list-item-content__actions",on:{focusout:e.handleBlur}},[t("NcActions",{ref:"actions",attrs:{primary:o||e.active,"force-menu":e.forceMenu,"aria-label":e.actionsAriaLabel},on:{"update:open":e.handleActionsUpdateOpen},scopedSlots:e._u([e.$slots["actions-icon"]?{key:"icon",fn:function(){return[e._t("actions-icon")]},proxy:!0}:null],null,!0)},[e._t("actions")],2)],1),e.$slots.extra?t("div",{staticClass:"list-item__extra"},[e._t("extra")],2):e._e()])])]}}],null,!0)})},be=[],_e=g(he,fe,be,!1,null,"40599719");const ve=_e.exports,ye=d({name:"AlbumPicker",components:{Plus:y,ImageMultiple:x,NcButton:F,NcListItem:ve,NcLoadingIcon:P,NcUserBubble:ie,AlbumForm:w},filters:{toCoverUrl(e){return h(`/apps/photos/api/v1/preview/${e}?x=64&y=64`)}},mixins:[oe],data(){return{showAlbumCreationForm:!1}},computed:{albums(){return this.$store.getters.albums},sharedAlbums(){return this.$store.getters.sharedAlbums},allAlbums(){return[...Object.values(this.albums),...Object.values(this.sharedAlbums)]}},mounted(){this.fetchAlbumList()},methods:{async fetchAlbumList(){await this.fetchCollections(`/photos/${_()?.uid}/albums`,["","",""]),await this.fetchCollections(`/photos/${_()?.uid}/sharedalbums`,["","",""])},albumCreatedHandler(){this.showAlbumCreationForm=!1,this.fetchAlbumList()},pickAlbum(e){this.$emit("album-picked",e)},isSharedAlbum(e){return e.path.match(/^\/photos\/.+\/sharedalbums\//)!==null},originalName(e){return this.isSharedAlbum(e)?e.basename.replace(new RegExp(`\\(${e.attributes.collaborators[0].id}\\)$`),""):e.basename},t:m,n:K}});var ge=function(){var e=this,t=e._self._c;return e._self._setupProxy,e.showAlbumCreationForm?t("AlbumForm",{attrs:{"display-back-button":!0,title:e.t("photos","New album")},on:{back:function(s){e.showAlbumCreationForm=!1},done:e.albumCreatedHandler}}):t("div",{staticClass:"album-picker"},[t("h2",[e._v(" "+e._s(e.t("photos","Add to Album"))+" "),e.loadingCollections?t("NcLoadingIcon",{staticClass:"loading-icon"}):e._e()],1),t("ul",{staticClass:"albums-container"},e._l(e.allAlbums,function(s){return t("NcListItem",{key:s.attributes.filename,staticClass:"album",attrs:{name:e.originalName(s),"aria-label":e.t("photos","Add selection to album {albumName}",{albumName:s.basename})},on:{click:function(i){return e.pickAlbum(s)}},scopedSlots:e._u([{key:"subname",fn:function(){return[e._v(" "+e._s(e.n("photos","%n item","%n photos and videos",s.attributes.nbItems))+" "),e.isSharedAlbum(s)?[e._v(" ⸱ "+e._s(e.t("photos","Shared by"))+" "),t("NcUserBubble",{attrs:{"display-name":s.attributes.collaborators[0].label,user:s.attributes.collaborators[0].id}})]:e._e()]},proxy:!0}],null,!0)},[t("template",{slot:"icon"},[s.attributes["last-photo"]!==-1?t("img",{staticClass:"album__image",attrs:{src:e._f("toCoverUrl")(s.attributes["last-photo"])}}):t("div",{staticClass:"album__image album__image--placeholder"},[t("ImageMultiple",{attrs:{size:32}})],1)])],2)}),1),t("NcButton",{staticClass:"new-album-button",attrs:{"aria-label":e.t("photos","Create a new album."),type:"tertiary"},on:{click:function(s){e.showAlbumCreationForm=!0}},scopedSlots:e._u([{key:"icon",fn:function(){return[t("Plus")]},proxy:!0}],null,!1,1489515321)},[e._v(" "+e._s(e.t("photos","Create new album"))+" ")])],1)},Ae=[],Fe=r(ye,ge,Ae,!1,null,"a54712c8");const Ce=Fe.exports,we={name:"ActionDownload",components:{NcActionLink:U},props:{title:{type:String,required:!0},selectedFileIds:{type:Array,required:!0}},computed:{files(){return this.$store.state.files.files},downloadUrl(){const e=new URLSearchParams;return e.append("files",JSON.stringify(this.paths)),h(`/apps/files/ajax/download.php?${e}`)},paths(){return this.selectedFileIds.map(e=>this.files[e].path)}}};var ke=function(){var e=this,t=e._self._c;return t("NcActionLink",{attrs:{"close-after-click":!0,href:e.downloadUrl,download:e.downloadUrl,"aria-label":e.title}},[e._v(" "+e._s(e.title)+" "),e._t("icon",null,{slot:"icon"})],2)},Ne=[],xe=r(we,ke,Ne,!1,null,null);const Se=xe.exports,Oe=d({__name:"DateRangeFilter",props:{value:null},emits:["input"],setup(e,{emit:t}){const s=e,i=c([null,null]),o=C(()=>{if(!(i.value[0]===null||i.value[1]===null))return{start:i.value[0].getTime(),end:i.value[1].getTime()}});return u(()=>s.value,a=>{a===void 0?i.value=[null,null]:a!==o.value&&(i.value=[new Date(a.start),new Date(a.end)])}),u(o,a=>t("input",a)),{__sfc:!0,props:s,emit:t,dateRange:i,selectedDateRange:o,t:m,NcDateTimePicker:H}}});var $e=function(){var e=this,t=e._self._c,s=e._self._setupProxy;return t(s.NcDateTimePicker,{attrs:{clearable:!0,type:"date-range",placeholder:s.t("photos","Select a date range")},scopedSlots:e._u([{key:"default",fn:function(){return[e._v(" "+e._s(s.t("photos","Date range"))+" ")]},proxy:!0}]),model:{value:s.dateRange,callback:function(i){s.dateRange=i},expression:"dateRange"}})},Ie=[],Be=r(Oe,$e,Ie,!1,null,null);const De=Be.exports,Le="date-range",Me={id:Le,component:De,getQuery(e){return e===void 0?"":` + + + + ${e.start/1e3} + + + + ${e.end/1e3+24*60*60} + + `}},Te=d({__name:"PlacesFilter",props:{value:null},emits:["input"],setup(e,{emit:t}){const s=e,i=c(!0),o=c([]),a=c([]);re(Y).then(l=>{o.value=l.map(n=>({label:n.basename,previewUrl:h(`/apps/photos/api/v1/preview/${n.attributes["last-photo"]}?x=64&y=64`)})),i.value=!1}),u(()=>s.value,l=>{l===void 0?a.value=[]:l!==p.value&&(a.value=l.map(n=>o.value.find(N=>N.label===n)).filter(n=>n!==void 0))});const p=C(()=>a.value.map(l=>l.label));return u(p,l=>t("input",l)),{__sfc:!0,props:s,emit:t,loading:i,availableOptions:o,selectedOptions:a,selectedPlaces:p,NcSelect:z,NcListItemIcon:V,t:m}}});var Pe=function(){var e=this,t=e._self._c,s=e._self._setupProxy;return t(s.NcSelect,{staticClass:"places-select",attrs:{options:s.availableOptions,"aria-label-combobox":s.t("photos","Select places"),placeholder:s.t("photos","Select places"),loading:s.loading,multiple:!0},scopedSlots:e._u([{key:"option",fn:function(i){return[t(s.NcListItemIcon,{attrs:{name:i.label,"is-no-user":!0,url:i.previewUrl}})]}}]),model:{value:s.selectedOptions,callback:function(i){s.selectedOptions=i},expression:"selectedOptions"}})},Ue=[],He=r(Te,Pe,Ue,!1,null,"2119ac98");const Ye=He.exports,Ve="places",ze={id:Ve,component:Ye,getQuery(e){return e===void 0?"":`${e.map(t=>` + + + ${t} + + `).join("")}`}},k=[Me,ze],je=d({__name:"TimelineFilters",props:{value:null},emits:["input"],setup(e,{emit:t}){const s=e,i=c({});return u(()=>s.value,o=>{i.value=o},{deep:!0,immediate:!0}),{__sfc:!0,props:s,emit:t,innerValue:i,filters:k}}});var Ee=function(){var e=this,t=e._self._c,s=e._self._setupProxy;return t("div",{staticClass:"timeline-filters"},e._l(s.filters,function(i){return t(i.component,{key:i.id,tag:"component",attrs:{"data-cy-timeline-filters":i.id},on:{input:function(o){return s.emit("input",s.innerValue)}},model:{value:s.innerValue[i.id],callback:function(o){e.$set(s.innerValue,i.id,o)},expression:"innerValue[filter.id]"}})}),1)},Re=[],qe=r(je,Ee,Re,!1,null,"a9d92629");const Ke=qe.exports,Qe={name:"Timeline",components:{Delete:M,PlusBoxMultiple:L,Download:D,Close:B,Plus:y,FolderAlertOutline:I,NcEmptyContent:G,NcModal:R,NcActions:A,NcActionButton:E,NcButton:F,AlbumForm:w,AlbumPicker:Ce,FilesListViewer:te,File:se,ActionFavorite:ae,ActionDownload:Se,HeaderNavigation:le,PhotosSourceLocationsSettings:ne,AlertCircle:$,TimelineFilters:Ke,FilterIcon:O,FilterOff:S},filters:{dateMonth(e){return v(e,"YYYYMM").format("MMMM")},dateYear(e){return v(e,"YYYYMM").format("YYYY")}},mixins:[X,ee,Z,W],beforeRouteLeave(e,t,s){window.scrollTo(0,0),s()},props:{onlyFavorites:{type:Boolean,default:!1},mimesType:{type:Array,default:()=>j},onThisDay:{type:Boolean,default:!1},rootTitle:{type:String,required:!0}},data(){return{loadingCount:0,showAlbumCreationForm:!1,showAlbumPicker:!1,appContent:document.getElementById("app-content-vue"),showFilters:!1,extraFilters:{}}},computed:{files(){return this.$store.state.files.files}},watch:{"$route.path"(){this.extraFilters={}}},mounted(){J(b,this.handleUserConfigChange)},destroyed(){Q(b,this.handleUserConfigChange)},methods:{getContent(){this.fetchFiles({mimesType:this.mimesType,onThisDay:this.onThisDay,onlyFavorites:this.onlyFavorites,extraFilters:Object.entries(this.extraFilters).map(([e,t])=>k.find(s=>s.id===e)?.getQuery(t)).join(` +`)})},openViewer(e){window.OCA.Viewer.open({fileInfo:f(this.files[e]),list:Object.values(this.fileIdsByMonth).flat().map(t=>f(this.files[t]))})},openUploader(){},async addSelectionToAlbum(e){this.showAlbumPicker=!1,await this.$store.dispatch("addFilesToCollection",{collectionFileName:e.root+e.path,fileIdsToAdd:this.selectedFileIds})},async deleteSelection(){const e=this.selectedFileIds;this.onUncheckFiles(e),this.fetchedFileIds=this.fetchedFileIds.filter(t=>!e.includes(t)),await this.$store.dispatch("deleteFiles",e)},handleUserConfigChange({key:e}){e==="photosSourceFolders"&&this.resetFetchFilesState()},toggleFilters(){this.showFilters=!this.showFilters,this.showFilters||(this.extraFilters={},this.resetFetchFilesState())},handleFiltersChange(){this.resetFetchFilesState(),this.getContent()},t:m}};var Je=function(){var e=this,t=e._self._c;return e.errorFetchingFiles?t("div",{staticClass:"timeline__empty-content"},[e.errorFetchingFiles===404?t("NcEmptyContent",{attrs:{name:e.t("photos","One of the source folders does not exist")}},[t("FolderAlertOutline",{attrs:{slot:"icon"},slot:"icon"}),t("PhotosSourceLocationsSettings",{staticClass:"timeline__update_source_directory",attrs:{slot:"action"},slot:"action"})],1):t("NcEmptyContent",{attrs:{name:e.t("photos","An error occurred")}},[t("AlertCircle",{attrs:{slot:"icon"},slot:"icon"})],1)],1):t("div",{staticClass:"timeline"},[t("HeaderNavigation",{key:"navigation",attrs:{loading:e.loadingCount>0,path:"/",title:e.rootTitle,"root-title":e.rootTitle},on:{refresh:e.resetFetchFilesState}},[t("div",{staticClass:"timeline__header__left"},[e.selectedFileIds.length===0?t("NcButton",{ref:"newAlbumButton",attrs:{"aria-label":e.t("photos","Create new album")},on:{click:function(s){e.showAlbumCreationForm=!0}},scopedSlots:e._u([{key:"icon",fn:function(){return[t("PlusBoxMultiple")]},proxy:!0}],null,!1,2640725948)},[e._v(" "+e._s(e.t("photos","Create new album"))+" ")]):[t("NcButton",{attrs:{"close-after-click":!0,type:"primary","aria-label":e.t("photos","Add to album")},on:{click:function(s){e.showAlbumPicker=!0}},scopedSlots:e._u([{key:"icon",fn:function(){return[t("Plus")]},proxy:!0},e.isMobile?null:{key:"default",fn:function(){return[e._v(" "+e._s(e.t("photos","Add to album"))+" ")]},proxy:!0}],null,!0)}),e.selectedFileIds.length>0?t("NcButton",{attrs:{"aria-label":e.t("photos","Unselect all")},on:{click:e.resetSelection},scopedSlots:e._u([{key:"icon",fn:function(){return[t("Close")]},proxy:!0},e.isMobile?null:{key:"default",fn:function(){return[e._v(" "+e._s(e.t("photos","Unselect all"))+" ")]},proxy:!0}],null,!0)}):e._e(),t("NcActions",{attrs:{"aria-label":e.t("photos","Open actions menu")}},[t("ActionDownload",{attrs:{"selected-file-ids":e.selectedFileIds,title:e.t("photos","Download selected files")}},[t("Download",{attrs:{slot:"icon"},slot:"icon"})],1),t("ActionFavorite",{attrs:{"selected-file-ids":e.selectedFileIds}}),t("NcActionButton",{attrs:{"close-after-click":!0,"aria-label":e.t("photos","Delete selection")},on:{click:e.deleteSelection},scopedSlots:e._u([{key:"icon",fn:function(){return[t("Delete")]},proxy:!0}])},[e._v(" "+e._s(e.t("photos","Delete selection"))+" ")])],1)],t("NcButton",{attrs:{title:e.t("photos","Toggle filter"),"aria-label":e.t("photos","Toggle filter"),"data-cy-timeline-action":"toggle-filters",type:"tertiary"},on:{click:e.toggleFilters},scopedSlots:e._u([{key:"icon",fn:function(){return[e.showFilters?t("FilterOff"):t("FilterIcon")]},proxy:!0}])})],2)]),e.showFilters?t("TimelineFilters",{staticClass:"timeline__filters",on:{input:e.handleFiltersChange},model:{value:e.extraFilters,callback:function(s){e.extraFilters=s},expression:"extraFilters"}}):e._e(),t("FilesListViewer",{ref:"filesListViewer",staticClass:"timeline__file-list",attrs:{"container-element":e.appContent,"file-ids-by-section":e.fileIdsByMonth,sections:e.monthsList,loading:e.loadingFiles,"base-height":e.isMobile?120:200,"empty-message":e.t("photos","No photos or videos in here")},on:{"need-content":e.getContent},scopedSlots:e._u([{key:"default",fn:function({file:s,isHeader:i,distance:o}){return[i?t("h2",{staticClass:"section-header",attrs:{id:`file-picker-section-header-${s.id}`}},[t("b",[e._v(e._s(e._f("dateMonth")(s.id)))]),e._v(" "+e._s(e._f("dateYear")(s.id))+" ")]):t("File",{attrs:{file:e.files[s.id],"allow-selection":!0,selected:e.selection[s.id]===!0,distance:o},on:{click:e.openViewer,"select-toggled":e.onFileSelectToggle}})]}}])}),e.showAlbumCreationForm?t("NcModal",{key:"albumCreationForm",attrs:{"label-id":"new-album-form","set-return-focus":e.$refs.newAlbumButton?.$el},on:{close:function(s){e.showAlbumCreationForm=!1}}},[t("h2",{staticClass:"timeline__heading"},[e._v(" "+e._s(e.t("photos","New album"))+" ")]),t("AlbumForm",{on:{done:function(s){e.showAlbumCreationForm=!1}}})],1):e._e(),e.showAlbumPicker?t("NcModal",{key:"albumPicker",attrs:{"label-id":"album-picker"},on:{close:function(s){e.showAlbumPicker=!1}}},[t("AlbumPicker",{on:{"album-picked":e.addSelectionToAlbum}})],1):e._e()],1)},Ge=[],We=r(Qe,Je,Ge,!1,null,"2fe2b744");const Ct=We.exports;export{Ct as default}; +//# sourceMappingURL=Timeline-B0BPn7cp.chunk.mjs.map diff --git a/js/Timeline-kxCboYpY.chunk.mjs.license b/js/Timeline-B0BPn7cp.chunk.mjs.license similarity index 100% rename from js/Timeline-kxCboYpY.chunk.mjs.license rename to js/Timeline-B0BPn7cp.chunk.mjs.license diff --git a/js/Timeline-kxCboYpY.chunk.mjs.map b/js/Timeline-B0BPn7cp.chunk.mjs.map similarity index 62% rename from js/Timeline-kxCboYpY.chunk.mjs.map rename to js/Timeline-B0BPn7cp.chunk.mjs.map index a6164097a..6332603ce 100644 --- a/js/Timeline-kxCboYpY.chunk.mjs.map +++ b/js/Timeline-B0BPn7cp.chunk.mjs.map @@ -1 +1 @@ -{"version":3,"file":"Timeline-kxCboYpY.chunk.mjs","sources":["../node_modules/@nextcloud/vue/dist/chunks/NcCounterBubble-CDfRYl8B.mjs","../node_modules/@nextcloud/vue/dist/chunks/NcListItem-CM-2Sxu0.mjs","../src/components/Albums/AlbumPicker.vue","../src/components/Actions/ActionDownload.vue","../src/components/TimelineFilters/DateRangeFilter.vue","../src/services/TimelineFilters/dateRangeFilter.ts","../src/components/TimelineFilters/PlacesFilter.vue","../src/services/TimelineFilters/placesFilter.ts","../src/services/TimelineFilters/index.ts","../src/components/TimelineFilters/TimelineFilters.vue","../src/views/Timeline.vue"],"sourcesContent":["import '../assets/NcCounterBubble-CI-DxLjL.css';\nimport { getCanonicalLocale } from \"@nextcloud/l10n\";\nimport { n as normalizeComponent } from \"./_plugin-vue2_normalizer-DU4iP6Vu.mjs\";\nconst _sfc_main = {\n name: \"NcCounterBubble\",\n props: {\n type: {\n type: String,\n default: \"\",\n validator(value) {\n return [\"highlighted\", \"outlined\", \"\"].includes(value);\n }\n },\n /**\n * Specifies whether the component is used within a component that is\n * active and therefore has a primary background. Inverts the color of\n * this component when that is the case.\n */\n active: {\n type: Boolean,\n default: false\n },\n /**\n * The count to display in the counter bubble.\n * Alternatively, you can pass any value to the default slot.\n */\n count: {\n type: Number,\n required: false,\n default: void 0\n },\n /**\n * Disables humanization to display count or content as it is\n */\n raw: {\n type: Boolean,\n required: false,\n default: false\n }\n },\n computed: {\n counterClassObject() {\n return {\n \"counter-bubble__counter--highlighted\": this.type === \"highlighted\",\n \"counter-bubble__counter--outlined\": this.type === \"outlined\",\n active: this.active\n };\n },\n humanizedCount() {\n return this.humanizeCount(this.count);\n }\n },\n methods: {\n humanizeCount(count) {\n if (this.raw) {\n return count.toString();\n }\n const formatter = new Intl.NumberFormat(getCanonicalLocale(), {\n notation: \"compact\",\n compactDisplay: \"short\"\n });\n return formatter.format(count);\n },\n /**\n * Get the humanized count from `count` prop\n * @return {{ humanized: string, original: string} | undefined}\n */\n getHumanizedCount() {\n if (this.count !== void 0) {\n return {\n humanized: this.humanizedCount,\n original: this.count.toString()\n };\n }\n if (this.raw) {\n return void 0;\n }\n if (this.$slots.default?.length === 1) {\n const slotContent = this.$slots.default[0].text?.trim();\n if (slotContent && /^\\d+$/.test(slotContent)) {\n const count = parseInt(slotContent, 10);\n return {\n humanized: this.humanizeCount(count),\n original: slotContent\n };\n }\n }\n }\n },\n render(h) {\n const count = this.getHumanizedCount();\n return h(\"div\", {\n staticClass: \"counter-bubble__counter\",\n class: this.counterClassObject,\n attrs: {\n // Show original count in title if humanized\n title: count && count.original !== count.humanized ? count.original : void 0\n }\n }, [count?.humanized ?? this.$slots.default]);\n }\n};\nconst _sfc_render = null;\nconst _sfc_staticRenderFns = null;\nvar __component__ = /* @__PURE__ */ normalizeComponent(\n _sfc_main,\n _sfc_render,\n _sfc_staticRenderFns,\n false,\n null,\n \"f1abaa29\"\n);\nconst NcCounterBubble = __component__.exports;\nexport {\n NcCounterBubble as N\n};\n//# sourceMappingURL=NcCounterBubble-CDfRYl8B.mjs.map\n","import '../assets/NcListItem-DfaWGP5A.css';\nimport { N as NcActions } from \"./NcActions-DEZO46mP.mjs\";\nimport { N as NcCounterBubble } from \"./NcCounterBubble-CDfRYl8B.mjs\";\nimport NcVNodes from \"../Components/NcVNodes.mjs\";\nimport { n as normalizeComponent } from \"./_plugin-vue2_normalizer-DU4iP6Vu.mjs\";\nconst _sfc_main = {\n name: \"NcListItem\",\n components: {\n NcActions,\n NcCounterBubble,\n NcVNodes\n },\n props: {\n /**\n * The details text displayed in the upper right part of the component\n */\n details: {\n type: String,\n default: \"\"\n },\n /**\n * Name (first line of text)\n */\n name: {\n type: String,\n default: void 0\n },\n /**\n * Pass in `true` if you want the matching behavior to\n * be non-inclusive: https://router.vuejs.org/api/#exact\n */\n exact: {\n type: Boolean,\n default: false\n },\n /**\n * The route for the router link.\n */\n to: {\n type: [String, Object],\n default: null\n },\n /**\n * The value for the external link\n */\n href: {\n type: String,\n default: \"#\"\n },\n target: {\n type: String,\n default: \"\"\n },\n /**\n * Id for the `` element\n */\n anchorId: {\n type: String,\n default: \"\"\n },\n /**\n * Make subname bold\n */\n bold: {\n type: Boolean,\n default: false\n },\n /**\n * Show the NcListItem in compact design\n */\n compact: {\n type: Boolean,\n default: false\n },\n /**\n * Toggle the active state of the component\n */\n active: {\n type: Boolean,\n default: false\n },\n /**\n * Aria label for the wrapper element\n */\n linkAriaLabel: {\n type: String,\n default: \"\"\n },\n /**\n * Aria label for the actions toggle\n */\n actionsAriaLabel: {\n type: String,\n default: void 0\n },\n /**\n * If different from 0 this component will display the\n * NcCounterBubble component\n */\n counterNumber: {\n type: [Number, String],\n default: 0\n },\n /**\n * Outlined or highlighted state of the counter\n */\n counterType: {\n type: String,\n default: \"\",\n validator(value) {\n return [\"highlighted\", \"outlined\", \"\"].indexOf(value) !== -1;\n }\n },\n /**\n * To be used only when the elements in the actions menu are very important\n */\n forceDisplayActions: {\n type: Boolean,\n default: false\n },\n /**\n * Force the actions to display in a three dot menu\n */\n forceMenu: {\n type: Boolean,\n default: false\n },\n /**\n * Show the list component layout\n */\n oneLine: {\n type: Boolean,\n default: false\n }\n },\n emits: [\n \"click\",\n \"update:menuOpen\"\n ],\n setup() {\n const [major] = window._oc_config?.version.split(\".\", 2) ?? [];\n const isLegacy = major && Number.parseInt(major) < 30;\n return {\n isLegacy\n };\n },\n data() {\n return {\n hovered: false,\n hasActions: false,\n hasSubname: false,\n displayActionsOnHoverFocus: false,\n menuOpen: false,\n hasIndicator: false,\n hasDetails: false\n };\n },\n computed: {\n showAdditionalElements() {\n return !this.displayActionsOnHoverFocus || this.forceDisplayActions;\n },\n showDetails() {\n return (this.details !== \"\" || this.hasDetails) && (!this.displayActionsOnHoverFocus || this.forceDisplayActions);\n }\n },\n watch: {\n menuOpen(newValue) {\n if (!newValue && !this.hovered) {\n this.displayActionsOnHoverFocus = false;\n }\n }\n },\n mounted() {\n this.checkSlots();\n },\n updated() {\n this.checkSlots();\n },\n methods: {\n /**\n * Handle link click\n *\n * @param {MouseEvent|KeyboardEvent} event - Native click or keydown event\n * @param {Function} [navigate] - VueRouter link's navigate if any\n * @param {string} [routerLinkHref] - VueRouter link's href\n */\n onClick(event, navigate, routerLinkHref) {\n this.$emit(\"click\", event);\n if (event.metaKey || event.altKey || event.ctrlKey || event.shiftKey) {\n return;\n }\n if (routerLinkHref) {\n navigate?.(event);\n event.preventDefault();\n }\n },\n showActions() {\n if (this.hasActions) {\n this.displayActionsOnHoverFocus = true;\n }\n this.hovered = false;\n },\n hideActions() {\n this.displayActionsOnHoverFocus = false;\n },\n /**\n * @param {FocusEvent} event UI event\n */\n handleBlur(event) {\n if (this.menuOpen) {\n return;\n }\n if (this.$refs[\"list-item\"].contains(event.relatedTarget)) {\n return;\n }\n this.hideActions();\n },\n /**\n * Hide the actions on mouseleave unless the menu is open\n */\n handleMouseleave() {\n if (!this.menuOpen) {\n this.displayActionsOnHoverFocus = false;\n }\n this.hovered = false;\n },\n handleMouseover() {\n this.showActions();\n this.hovered = true;\n },\n handleActionsUpdateOpen(e) {\n this.menuOpen = e;\n this.$emit(\"update:menuOpen\", e);\n },\n // Check if subname and actions slots are populated\n checkSlots() {\n if (this.hasActions !== !!this.$slots.actions) {\n this.hasActions = !!this.$slots.actions;\n }\n if (this.hasSubname !== !!this.$slots.subname) {\n this.hasSubname = !!this.$slots.subname;\n }\n if (this.hasIndicator !== !!this.$slots.indicator) {\n this.hasIndicator = !!this.$slots.indicator;\n }\n if (this.hasDetails !== !!this.$slots.details) {\n this.hasDetails = !!this.$slots.details;\n }\n }\n }\n};\nvar _sfc_render = function render() {\n var _vm = this, _c = _vm._self._c;\n return _c(_vm.to ? \"router-link\" : \"NcVNodes\", { tag: \"component\", attrs: { \"custom\": _vm.to ? true : null, \"to\": _vm.to, \"exact\": _vm.to ? _vm.exact : null }, scopedSlots: _vm._u([{ key: \"default\", fn: function({ href: routerLinkHref, navigate, isActive }) {\n return [_c(\"li\", { staticClass: \"list-item__wrapper\", class: { \"list-item__wrapper--active\": isActive || _vm.active } }, [_c(\"div\", { ref: \"list-item\", staticClass: \"list-item\", class: {\n \"list-item--compact\": _vm.compact,\n \"list-item--legacy\": _vm.isLegacy,\n \"list-item--one-line\": _vm.oneLine\n }, on: { \"mouseover\": _vm.handleMouseover, \"mouseleave\": _vm.handleMouseleave } }, [_c(\"a\", { staticClass: \"list-item__anchor\", attrs: { \"id\": _vm.anchorId || void 0, \"aria-label\": _vm.linkAriaLabel, \"href\": routerLinkHref || _vm.href, \"target\": _vm.target || (_vm.href === \"#\" ? void 0 : \"_blank\"), \"rel\": _vm.href === \"#\" ? void 0 : \"noopener noreferrer\" }, on: { \"focus\": _vm.showActions, \"focusout\": _vm.handleBlur, \"click\": function($event) {\n return _vm.onClick($event, navigate, routerLinkHref);\n }, \"keydown\": function($event) {\n if (!$event.type.indexOf(\"key\") && _vm._k($event.keyCode, \"esc\", 27, $event.key, [\"Esc\", \"Escape\"])) return null;\n return _vm.hideActions.apply(null, arguments);\n } } }, [_vm._t(\"icon\"), _c(\"div\", { staticClass: \"list-item-content\" }, [_c(\"div\", { staticClass: \"list-item-content__main\" }, [_c(\"div\", { staticClass: \"list-item-content__name\" }, [_vm._t(\"name\", function() {\n return [_vm._v(_vm._s(_vm.name))];\n })], 2), _vm.hasSubname ? _c(\"div\", { staticClass: \"list-item-content__subname\", class: { \"list-item-content__subname--bold\": _vm.bold } }, [_vm._t(\"subname\")], 2) : _vm._e()]), _c(\"div\", { staticClass: \"list-item-content__details\" }, [_vm.showDetails ? _c(\"div\", { staticClass: \"list-item-details__details\" }, [_vm._t(\"details\", function() {\n return [_vm._v(_vm._s(_vm.details))];\n })], 2) : _vm._e(), _vm.counterNumber || _vm.hasIndicator ? _c(\"div\", { directives: [{ name: \"show\", rawName: \"v-show\", value: _vm.showAdditionalElements, expression: \"showAdditionalElements\" }], staticClass: \"list-item-details__extra\" }, [_vm.counterNumber ? _c(\"NcCounterBubble\", { staticClass: \"list-item-details__counter\", attrs: { \"active\": isActive || _vm.active, \"type\": _vm.counterType } }, [_vm._v(\" \" + _vm._s(_vm.counterNumber) + \" \")]) : _vm._e(), _vm.hasIndicator ? _c(\"span\", { staticClass: \"list-item-details__indicator\" }, [_vm._t(\"indicator\")], 2) : _vm._e()], 1) : _vm._e()])])], 2), _vm.$slots[\"extra-actions\"] ? _c(\"div\", { staticClass: \"list-item-content__extra-actions\" }, [_vm._t(\"extra-actions\")], 2) : _vm._e(), _c(\"div\", { directives: [{ name: \"show\", rawName: \"v-show\", value: _vm.forceDisplayActions || _vm.displayActionsOnHoverFocus, expression: \"forceDisplayActions || displayActionsOnHoverFocus\" }], staticClass: \"list-item-content__actions\", on: { \"focusout\": _vm.handleBlur } }, [_c(\"NcActions\", { ref: \"actions\", attrs: { \"primary\": isActive || _vm.active, \"force-menu\": _vm.forceMenu, \"aria-label\": _vm.actionsAriaLabel }, on: { \"update:open\": _vm.handleActionsUpdateOpen }, scopedSlots: _vm._u([_vm.$slots[\"actions-icon\"] ? { key: \"icon\", fn: function() {\n return [_vm._t(\"actions-icon\")];\n }, proxy: true } : null], null, true) }, [_vm._t(\"actions\")], 2)], 1), _vm.$slots.extra ? _c(\"div\", { staticClass: \"list-item__extra\" }, [_vm._t(\"extra\")], 2) : _vm._e()])])];\n } }], null, true) });\n};\nvar _sfc_staticRenderFns = [];\nvar __component__ = /* @__PURE__ */ normalizeComponent(\n _sfc_main,\n _sfc_render,\n _sfc_staticRenderFns,\n false,\n null,\n \"40599719\"\n);\nconst NcListItem = __component__.exports;\nexport {\n NcListItem as N\n};\n//# sourceMappingURL=NcListItem-CM-2Sxu0.mjs.map\n","\n\n\n\n\n\n","\n\n\n\n","\n\n\n","/*!\n * SPDX-FileCopyrightText: 2025 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport type { TimelineFilter } from './TimelineFilter.ts'\nimport DateRangeFilter from '../../components/TimelineFilters/DateRangeFilter.vue'\n\nexport type DateRangeValueType = { start: number; end: number }|undefined\n\nexport const dateRangeFilterId = 'date-range'\n\nexport const dateRangeFilter: TimelineFilter = {\n\tid: dateRangeFilterId,\n\tcomponent: DateRangeFilter,\n\tgetQuery(dateRange: DateRangeValueType): string {\n\t\tif (dateRange === undefined) {\n\t\t\treturn ''\n\t\t}\n\n\t\t// Add one day to the end date to include the whole day.\n\t\treturn `\n\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t${dateRange.start / 1000}\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t${dateRange.end / 1000 + 24 * 60 * 60}\n\t\t\t\t\n\t\t\t`\n\t},\n}\n","\n\n\n\n","/*!\n * SPDX-FileCopyrightText: 2025 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport type { TimelineFilter } from './TimelineFilter.ts'\nimport PlacesFilter from '../../components/TimelineFilters/PlacesFilter.vue'\n\nexport type PlacesValueType = string[]|undefined\n\nexport const placesFilterId = 'places'\n\nexport const placesFilter: TimelineFilter = {\n\tid: placesFilterId,\n\tcomponent: PlacesFilter,\n\tgetQuery(places: PlacesValueType): string {\n\t\tif (places === undefined) {\n\t\t\treturn ''\n\t\t}\n\n\t\tconst dav = places.map(place => `\n\t\t\t\n\t\t\t\t\n\t\t\t\t${place}\n\t\t\t\n\t\t`)\n\n\t\treturn `${dav.join('')}`\n\t},\n}\n","/*!\n * SPDX-FileCopyrightText: 2025 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport { dateRangeFilter } from './dateRangeFilter.ts'\nimport { placesFilter } from './placesFilter.ts'\n\nexport default [\n\tdateRangeFilter,\n\tplacesFilter,\n]\n","\n\n\n\n","\n\n\n\n\n\n"],"names":["_sfc_main","value","count","getCanonicalLocale","slotContent","h","_sfc_render","_sfc_staticRenderFns","__component__","normalizeComponent","NcCounterBubble","NcActions","NcVNodes","major","newValue","event","navigate","routerLinkHref","e","_vm","_c","isActive","$event","NcListItem","_sfc_main$5","defineComponent","Plus","ImageMultiple","NcButton","NcLoadingIcon","NcUserBubble","AlbumForm","fileId","generateUrl","FetchCollectionsMixin","getCurrentUser","album","translate","translatePlural","_sfc_main$4","NcActionLink","params","dateRange","ref","selectedDateRange","computed","watch","props","emit","dateRangeFilterId","dateRangeFilter","DateRangeFilter","loading","availableOptions","selectedOptions","fetchCollections","placesPrefix","places","place","selectedPlaces","option","placesFilterId","placesFilter","PlacesFilter","timelineFilters","innerValue","Delete","PlusBoxMultiple","Download","Close","FolderAlertOutline","NcEmptyContent","NcModal","NcActionButton","AlbumPicker","FilesListViewer","File","ActionFavorite","ActionDownload","HeaderNavigation","PhotosSourceLocationsSettings","AlertCircle","TimelineFilters","Filter","FilterOff","date","moment","FetchFilesMixin","FilesSelectionMixin","FilesByMonthMixin","isMobile","to","from","next","allMimes","subscribe","configChangedEvent","unsubscribe","key","filter","toViewerFileInfo","fileIds","fileid"],"mappings":"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","x_google_ignoreList":[0,1]} \ No newline at end of file +{"version":3,"file":"Timeline-B0BPn7cp.chunk.mjs","sources":["../node_modules/@nextcloud/vue/dist/chunks/NcCounterBubble-CDfRYl8B.mjs","../node_modules/@nextcloud/vue/dist/chunks/NcListItem-CM-2Sxu0.mjs","../src/components/Albums/AlbumPicker.vue","../src/components/Actions/ActionDownload.vue","../src/components/TimelineFilters/DateRangeFilter.vue","../src/services/TimelineFilters/dateRangeFilter.ts","../src/components/TimelineFilters/PlacesFilter.vue","../src/services/TimelineFilters/placesFilter.ts","../src/services/TimelineFilters/index.ts","../src/components/TimelineFilters/TimelineFilters.vue","../src/views/Timeline.vue"],"sourcesContent":["import '../assets/NcCounterBubble-CI-DxLjL.css';\nimport { getCanonicalLocale } from \"@nextcloud/l10n\";\nimport { n as normalizeComponent } from \"./_plugin-vue2_normalizer-DU4iP6Vu.mjs\";\nconst _sfc_main = {\n name: \"NcCounterBubble\",\n props: {\n type: {\n type: String,\n default: \"\",\n validator(value) {\n return [\"highlighted\", \"outlined\", \"\"].includes(value);\n }\n },\n /**\n * Specifies whether the component is used within a component that is\n * active and therefore has a primary background. Inverts the color of\n * this component when that is the case.\n */\n active: {\n type: Boolean,\n default: false\n },\n /**\n * The count to display in the counter bubble.\n * Alternatively, you can pass any value to the default slot.\n */\n count: {\n type: Number,\n required: false,\n default: void 0\n },\n /**\n * Disables humanization to display count or content as it is\n */\n raw: {\n type: Boolean,\n required: false,\n default: false\n }\n },\n computed: {\n counterClassObject() {\n return {\n \"counter-bubble__counter--highlighted\": this.type === \"highlighted\",\n \"counter-bubble__counter--outlined\": this.type === \"outlined\",\n active: this.active\n };\n },\n humanizedCount() {\n return this.humanizeCount(this.count);\n }\n },\n methods: {\n humanizeCount(count) {\n if (this.raw) {\n return count.toString();\n }\n const formatter = new Intl.NumberFormat(getCanonicalLocale(), {\n notation: \"compact\",\n compactDisplay: \"short\"\n });\n return formatter.format(count);\n },\n /**\n * Get the humanized count from `count` prop\n * @return {{ humanized: string, original: string} | undefined}\n */\n getHumanizedCount() {\n if (this.count !== void 0) {\n return {\n humanized: this.humanizedCount,\n original: this.count.toString()\n };\n }\n if (this.raw) {\n return void 0;\n }\n if (this.$slots.default?.length === 1) {\n const slotContent = this.$slots.default[0].text?.trim();\n if (slotContent && /^\\d+$/.test(slotContent)) {\n const count = parseInt(slotContent, 10);\n return {\n humanized: this.humanizeCount(count),\n original: slotContent\n };\n }\n }\n }\n },\n render(h) {\n const count = this.getHumanizedCount();\n return h(\"div\", {\n staticClass: \"counter-bubble__counter\",\n class: this.counterClassObject,\n attrs: {\n // Show original count in title if humanized\n title: count && count.original !== count.humanized ? count.original : void 0\n }\n }, [count?.humanized ?? this.$slots.default]);\n }\n};\nconst _sfc_render = null;\nconst _sfc_staticRenderFns = null;\nvar __component__ = /* @__PURE__ */ normalizeComponent(\n _sfc_main,\n _sfc_render,\n _sfc_staticRenderFns,\n false,\n null,\n \"f1abaa29\"\n);\nconst NcCounterBubble = __component__.exports;\nexport {\n NcCounterBubble as N\n};\n//# sourceMappingURL=NcCounterBubble-CDfRYl8B.mjs.map\n","import '../assets/NcListItem-DfaWGP5A.css';\nimport { N as NcActions } from \"./NcActions-DEZO46mP.mjs\";\nimport { N as NcCounterBubble } from \"./NcCounterBubble-CDfRYl8B.mjs\";\nimport NcVNodes from \"../Components/NcVNodes.mjs\";\nimport { n as normalizeComponent } from \"./_plugin-vue2_normalizer-DU4iP6Vu.mjs\";\nconst _sfc_main = {\n name: \"NcListItem\",\n components: {\n NcActions,\n NcCounterBubble,\n NcVNodes\n },\n props: {\n /**\n * The details text displayed in the upper right part of the component\n */\n details: {\n type: String,\n default: \"\"\n },\n /**\n * Name (first line of text)\n */\n name: {\n type: String,\n default: void 0\n },\n /**\n * Pass in `true` if you want the matching behavior to\n * be non-inclusive: https://router.vuejs.org/api/#exact\n */\n exact: {\n type: Boolean,\n default: false\n },\n /**\n * The route for the router link.\n */\n to: {\n type: [String, Object],\n default: null\n },\n /**\n * The value for the external link\n */\n href: {\n type: String,\n default: \"#\"\n },\n target: {\n type: String,\n default: \"\"\n },\n /**\n * Id for the `` element\n */\n anchorId: {\n type: String,\n default: \"\"\n },\n /**\n * Make subname bold\n */\n bold: {\n type: Boolean,\n default: false\n },\n /**\n * Show the NcListItem in compact design\n */\n compact: {\n type: Boolean,\n default: false\n },\n /**\n * Toggle the active state of the component\n */\n active: {\n type: Boolean,\n default: false\n },\n /**\n * Aria label for the wrapper element\n */\n linkAriaLabel: {\n type: String,\n default: \"\"\n },\n /**\n * Aria label for the actions toggle\n */\n actionsAriaLabel: {\n type: String,\n default: void 0\n },\n /**\n * If different from 0 this component will display the\n * NcCounterBubble component\n */\n counterNumber: {\n type: [Number, String],\n default: 0\n },\n /**\n * Outlined or highlighted state of the counter\n */\n counterType: {\n type: String,\n default: \"\",\n validator(value) {\n return [\"highlighted\", \"outlined\", \"\"].indexOf(value) !== -1;\n }\n },\n /**\n * To be used only when the elements in the actions menu are very important\n */\n forceDisplayActions: {\n type: Boolean,\n default: false\n },\n /**\n * Force the actions to display in a three dot menu\n */\n forceMenu: {\n type: Boolean,\n default: false\n },\n /**\n * Show the list component layout\n */\n oneLine: {\n type: Boolean,\n default: false\n }\n },\n emits: [\n \"click\",\n \"update:menuOpen\"\n ],\n setup() {\n const [major] = window._oc_config?.version.split(\".\", 2) ?? [];\n const isLegacy = major && Number.parseInt(major) < 30;\n return {\n isLegacy\n };\n },\n data() {\n return {\n hovered: false,\n hasActions: false,\n hasSubname: false,\n displayActionsOnHoverFocus: false,\n menuOpen: false,\n hasIndicator: false,\n hasDetails: false\n };\n },\n computed: {\n showAdditionalElements() {\n return !this.displayActionsOnHoverFocus || this.forceDisplayActions;\n },\n showDetails() {\n return (this.details !== \"\" || this.hasDetails) && (!this.displayActionsOnHoverFocus || this.forceDisplayActions);\n }\n },\n watch: {\n menuOpen(newValue) {\n if (!newValue && !this.hovered) {\n this.displayActionsOnHoverFocus = false;\n }\n }\n },\n mounted() {\n this.checkSlots();\n },\n updated() {\n this.checkSlots();\n },\n methods: {\n /**\n * Handle link click\n *\n * @param {MouseEvent|KeyboardEvent} event - Native click or keydown event\n * @param {Function} [navigate] - VueRouter link's navigate if any\n * @param {string} [routerLinkHref] - VueRouter link's href\n */\n onClick(event, navigate, routerLinkHref) {\n this.$emit(\"click\", event);\n if (event.metaKey || event.altKey || event.ctrlKey || event.shiftKey) {\n return;\n }\n if (routerLinkHref) {\n navigate?.(event);\n event.preventDefault();\n }\n },\n showActions() {\n if (this.hasActions) {\n this.displayActionsOnHoverFocus = true;\n }\n this.hovered = false;\n },\n hideActions() {\n this.displayActionsOnHoverFocus = false;\n },\n /**\n * @param {FocusEvent} event UI event\n */\n handleBlur(event) {\n if (this.menuOpen) {\n return;\n }\n if (this.$refs[\"list-item\"].contains(event.relatedTarget)) {\n return;\n }\n this.hideActions();\n },\n /**\n * Hide the actions on mouseleave unless the menu is open\n */\n handleMouseleave() {\n if (!this.menuOpen) {\n this.displayActionsOnHoverFocus = false;\n }\n this.hovered = false;\n },\n handleMouseover() {\n this.showActions();\n this.hovered = true;\n },\n handleActionsUpdateOpen(e) {\n this.menuOpen = e;\n this.$emit(\"update:menuOpen\", e);\n },\n // Check if subname and actions slots are populated\n checkSlots() {\n if (this.hasActions !== !!this.$slots.actions) {\n this.hasActions = !!this.$slots.actions;\n }\n if (this.hasSubname !== !!this.$slots.subname) {\n this.hasSubname = !!this.$slots.subname;\n }\n if (this.hasIndicator !== !!this.$slots.indicator) {\n this.hasIndicator = !!this.$slots.indicator;\n }\n if (this.hasDetails !== !!this.$slots.details) {\n this.hasDetails = !!this.$slots.details;\n }\n }\n }\n};\nvar _sfc_render = function render() {\n var _vm = this, _c = _vm._self._c;\n return _c(_vm.to ? \"router-link\" : \"NcVNodes\", { tag: \"component\", attrs: { \"custom\": _vm.to ? true : null, \"to\": _vm.to, \"exact\": _vm.to ? _vm.exact : null }, scopedSlots: _vm._u([{ key: \"default\", fn: function({ href: routerLinkHref, navigate, isActive }) {\n return [_c(\"li\", { staticClass: \"list-item__wrapper\", class: { \"list-item__wrapper--active\": isActive || _vm.active } }, [_c(\"div\", { ref: \"list-item\", staticClass: \"list-item\", class: {\n \"list-item--compact\": _vm.compact,\n \"list-item--legacy\": _vm.isLegacy,\n \"list-item--one-line\": _vm.oneLine\n }, on: { \"mouseover\": _vm.handleMouseover, \"mouseleave\": _vm.handleMouseleave } }, [_c(\"a\", { staticClass: \"list-item__anchor\", attrs: { \"id\": _vm.anchorId || void 0, \"aria-label\": _vm.linkAriaLabel, \"href\": routerLinkHref || _vm.href, \"target\": _vm.target || (_vm.href === \"#\" ? void 0 : \"_blank\"), \"rel\": _vm.href === \"#\" ? void 0 : \"noopener noreferrer\" }, on: { \"focus\": _vm.showActions, \"focusout\": _vm.handleBlur, \"click\": function($event) {\n return _vm.onClick($event, navigate, routerLinkHref);\n }, \"keydown\": function($event) {\n if (!$event.type.indexOf(\"key\") && _vm._k($event.keyCode, \"esc\", 27, $event.key, [\"Esc\", \"Escape\"])) return null;\n return _vm.hideActions.apply(null, arguments);\n } } }, [_vm._t(\"icon\"), _c(\"div\", { staticClass: \"list-item-content\" }, [_c(\"div\", { staticClass: \"list-item-content__main\" }, [_c(\"div\", { staticClass: \"list-item-content__name\" }, [_vm._t(\"name\", function() {\n return [_vm._v(_vm._s(_vm.name))];\n })], 2), _vm.hasSubname ? _c(\"div\", { staticClass: \"list-item-content__subname\", class: { \"list-item-content__subname--bold\": _vm.bold } }, [_vm._t(\"subname\")], 2) : _vm._e()]), _c(\"div\", { staticClass: \"list-item-content__details\" }, [_vm.showDetails ? _c(\"div\", { staticClass: \"list-item-details__details\" }, [_vm._t(\"details\", function() {\n return [_vm._v(_vm._s(_vm.details))];\n })], 2) : _vm._e(), _vm.counterNumber || _vm.hasIndicator ? _c(\"div\", { directives: [{ name: \"show\", rawName: \"v-show\", value: _vm.showAdditionalElements, expression: \"showAdditionalElements\" }], staticClass: \"list-item-details__extra\" }, [_vm.counterNumber ? _c(\"NcCounterBubble\", { staticClass: \"list-item-details__counter\", attrs: { \"active\": isActive || _vm.active, \"type\": _vm.counterType } }, [_vm._v(\" \" + _vm._s(_vm.counterNumber) + \" \")]) : _vm._e(), _vm.hasIndicator ? _c(\"span\", { staticClass: \"list-item-details__indicator\" }, [_vm._t(\"indicator\")], 2) : _vm._e()], 1) : _vm._e()])])], 2), _vm.$slots[\"extra-actions\"] ? _c(\"div\", { staticClass: \"list-item-content__extra-actions\" }, [_vm._t(\"extra-actions\")], 2) : _vm._e(), _c(\"div\", { directives: [{ name: \"show\", rawName: \"v-show\", value: _vm.forceDisplayActions || _vm.displayActionsOnHoverFocus, expression: \"forceDisplayActions || displayActionsOnHoverFocus\" }], staticClass: \"list-item-content__actions\", on: { \"focusout\": _vm.handleBlur } }, [_c(\"NcActions\", { ref: \"actions\", attrs: { \"primary\": isActive || _vm.active, \"force-menu\": _vm.forceMenu, \"aria-label\": _vm.actionsAriaLabel }, on: { \"update:open\": _vm.handleActionsUpdateOpen }, scopedSlots: _vm._u([_vm.$slots[\"actions-icon\"] ? { key: \"icon\", fn: function() {\n return [_vm._t(\"actions-icon\")];\n }, proxy: true } : null], null, true) }, [_vm._t(\"actions\")], 2)], 1), _vm.$slots.extra ? _c(\"div\", { staticClass: \"list-item__extra\" }, [_vm._t(\"extra\")], 2) : _vm._e()])])];\n } }], null, true) });\n};\nvar _sfc_staticRenderFns = [];\nvar __component__ = /* @__PURE__ */ normalizeComponent(\n _sfc_main,\n _sfc_render,\n _sfc_staticRenderFns,\n false,\n null,\n \"40599719\"\n);\nconst NcListItem = __component__.exports;\nexport {\n NcListItem as N\n};\n//# sourceMappingURL=NcListItem-CM-2Sxu0.mjs.map\n","\n\n\n\n\n\n","\n\n\n\n","\n\n\n","/*!\n * SPDX-FileCopyrightText: 2025 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport type { TimelineFilter } from './TimelineFilter.ts'\nimport DateRangeFilter from '../../components/TimelineFilters/DateRangeFilter.vue'\n\nexport type DateRangeValueType = { start: number; end: number }|undefined\n\nexport const dateRangeFilterId = 'date-range'\n\nexport const dateRangeFilter: TimelineFilter = {\n\tid: dateRangeFilterId,\n\tcomponent: DateRangeFilter,\n\tgetQuery(dateRange: DateRangeValueType): string {\n\t\tif (dateRange === undefined) {\n\t\t\treturn ''\n\t\t}\n\n\t\t// Add one day to the end date to include the whole day.\n\t\treturn `\n\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t${dateRange.start / 1000}\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t${dateRange.end / 1000 + 24 * 60 * 60}\n\t\t\t\t\n\t\t\t`\n\t},\n}\n","\n\n\n\n","/*!\n * SPDX-FileCopyrightText: 2025 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport type { TimelineFilter } from './TimelineFilter.ts'\nimport PlacesFilter from '../../components/TimelineFilters/PlacesFilter.vue'\n\nexport type PlacesValueType = string[]|undefined\n\nexport const placesFilterId = 'places'\n\nexport const placesFilter: TimelineFilter = {\n\tid: placesFilterId,\n\tcomponent: PlacesFilter,\n\tgetQuery(places: PlacesValueType): string {\n\t\tif (places === undefined) {\n\t\t\treturn ''\n\t\t}\n\n\t\tconst dav = places.map(place => `\n\t\t\t\n\t\t\t\t\n\t\t\t\t${place}\n\t\t\t\n\t\t`)\n\n\t\treturn `${dav.join('')}`\n\t},\n}\n","/*!\n * SPDX-FileCopyrightText: 2025 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport { dateRangeFilter } from './dateRangeFilter.ts'\nimport { placesFilter } from './placesFilter.ts'\n\nexport default [\n\tdateRangeFilter,\n\tplacesFilter,\n]\n","\n\n\n\n","\n\n\n\n\n\n"],"names":["_sfc_main","value","count","getCanonicalLocale","slotContent","h","_sfc_render","_sfc_staticRenderFns","__component__","normalizeComponent","NcCounterBubble","NcActions","NcVNodes","major","newValue","event","navigate","routerLinkHref","e","_vm","_c","isActive","$event","NcListItem","_sfc_main$5","defineComponent","Plus","ImageMultiple","NcButton","NcLoadingIcon","NcUserBubble","AlbumForm","fileId","generateUrl","FetchCollectionsMixin","getCurrentUser","album","translate","translatePlural","_sfc_main$4","NcActionLink","params","dateRange","ref","selectedDateRange","computed","watch","props","emit","dateRangeFilterId","dateRangeFilter","DateRangeFilter","loading","availableOptions","selectedOptions","fetchCollections","placesPrefix","places","place","selectedPlaces","option","placesFilterId","placesFilter","PlacesFilter","timelineFilters","innerValue","Delete","PlusBoxMultiple","Download","Close","FolderAlertOutline","NcEmptyContent","NcModal","NcActionButton","AlbumPicker","FilesListViewer","File","ActionFavorite","ActionDownload","HeaderNavigation","PhotosSourceLocationsSettings","AlertCircle","TimelineFilters","Filter","FilterOff","date","moment","FetchFilesMixin","FilesSelectionMixin","FilesByMonthMixin","isMobile","to","from","next","allMimes","subscribe","configChangedEvent","unsubscribe","key","filter","toViewerFileInfo","fileIds","fileid"],"mappings":"s/CAGA,MAAMA,GAAY,CAChB,KAAM,kBACN,MAAO,CACL,KAAM,CACJ,KAAM,OACN,QAAS,GACT,UAAUC,EAAO,CACf,MAAO,CAAC,cAAe,WAAY,EAAE,EAAE,SAASA,CAAK,CAC7D,CACK,EAMD,OAAQ,CACN,KAAM,QACN,QAAS,EACV,EAKD,MAAO,CACL,KAAM,OACN,SAAU,GACV,QAAS,MACV,EAID,IAAK,CACH,KAAM,QACN,SAAU,GACV,QAAS,EACf,CACG,EACD,SAAU,CACR,oBAAqB,CACnB,MAAO,CACL,uCAAwC,KAAK,OAAS,cACtD,oCAAqC,KAAK,OAAS,WACnD,OAAQ,KAAK,MACd,CACF,EACD,gBAAiB,CACf,OAAO,KAAK,cAAc,KAAK,KAAK,CAC1C,CACG,EACD,QAAS,CACP,cAAcC,EAAO,CACnB,OAAI,KAAK,IACAA,EAAM,SAAU,EAEP,IAAI,KAAK,aAAaC,EAAkB,EAAI,CAC5D,SAAU,UACV,eAAgB,OACxB,CAAO,EACgB,OAAOD,CAAK,CAC9B,EAKD,mBAAoB,CAClB,GAAI,KAAK,QAAU,OACjB,MAAO,CACL,UAAW,KAAK,eAChB,SAAU,KAAK,MAAM,SAAQ,CAC9B,EAEH,GAAI,CAAK,KAAA,KAGL,KAAK,OAAO,SAAS,SAAW,EAAG,CACrC,MAAME,EAAc,KAAK,OAAO,QAAQ,CAAC,EAAE,MAAM,KAAM,EACvD,GAAIA,GAAe,QAAQ,KAAKA,CAAW,EAAG,CAC5C,MAAMF,EAAQ,SAASE,EAAa,EAAE,EACtC,MAAO,CACL,UAAW,KAAK,cAAcF,CAAK,EACnC,SAAUE,CACX,CACX,CACA,CACA,CACG,EACD,OAAOC,EAAG,CACR,MAAMH,EAAQ,KAAK,kBAAmB,EACtC,OAAOG,EAAE,MAAO,CACd,YAAa,0BACb,MAAO,KAAK,mBACZ,MAAO,CAEL,MAAOH,GAASA,EAAM,WAAaA,EAAM,UAAYA,EAAM,SAAW,MAC9E,CACA,EAAO,CAACA,GAAO,WAAa,KAAK,OAAO,OAAO,CAAC,CAChD,CACA,EACMI,GAAc,KACdC,GAAuB,KAC7B,IAAIC,GAAgCC,EAClCT,GACAM,GACAC,GACA,GACA,KACA,UACF,EACA,MAAMG,GAAkBF,GAAc,QC1GhCR,GAAY,CAChB,KAAM,aACN,WAAY,CACV,UAAAW,EACA,gBAAAD,GACA,SAAAE,CACD,EACD,MAAO,CAIL,QAAS,CACP,KAAM,OACN,QAAS,EACV,EAID,KAAM,CACJ,KAAM,OACN,QAAS,MACV,EAKD,MAAO,CACL,KAAM,QACN,QAAS,EACV,EAID,GAAI,CACF,KAAM,CAAC,OAAQ,MAAM,EACrB,QAAS,IACV,EAID,KAAM,CACJ,KAAM,OACN,QAAS,GACV,EACD,OAAQ,CACN,KAAM,OACN,QAAS,EACV,EAID,SAAU,CACR,KAAM,OACN,QAAS,EACV,EAID,KAAM,CACJ,KAAM,QACN,QAAS,EACV,EAID,QAAS,CACP,KAAM,QACN,QAAS,EACV,EAID,OAAQ,CACN,KAAM,QACN,QAAS,EACV,EAID,cAAe,CACb,KAAM,OACN,QAAS,EACV,EAID,iBAAkB,CAChB,KAAM,OACN,QAAS,MACV,EAKD,cAAe,CACb,KAAM,CAAC,OAAQ,MAAM,EACrB,QAAS,CACV,EAID,YAAa,CACX,KAAM,OACN,QAAS,GACT,UAAUX,EAAO,CACf,MAAO,CAAC,cAAe,WAAY,EAAE,EAAE,QAAQA,CAAK,IAAM,EAClE,CACK,EAID,oBAAqB,CACnB,KAAM,QACN,QAAS,EACV,EAID,UAAW,CACT,KAAM,QACN,QAAS,EACV,EAID,QAAS,CACP,KAAM,QACN,QAAS,EACf,CACG,EACD,MAAO,CACL,QACA,iBACD,EACD,OAAQ,CACN,KAAM,CAACY,CAAK,EAAI,OAAO,YAAY,QAAQ,MAAM,IAAK,CAAC,GAAK,CAAE,EAE9D,MAAO,CACL,SAFeA,GAAS,OAAO,SAASA,CAAK,EAAI,EAGlD,CACF,EACD,MAAO,CACL,MAAO,CACL,QAAS,GACT,WAAY,GACZ,WAAY,GACZ,2BAA4B,GAC5B,SAAU,GACV,aAAc,GACd,WAAY,EACb,CACF,EACD,SAAU,CACR,wBAAyB,CACvB,MAAO,CAAC,KAAK,4BAA8B,KAAK,mBACjD,EACD,aAAc,CACZ,OAAQ,KAAK,UAAY,IAAM,KAAK,cAAgB,CAAC,KAAK,4BAA8B,KAAK,oBACnG,CACG,EACD,MAAO,CACL,SAASC,EAAU,CACb,CAACA,GAAY,CAAC,KAAK,UACrB,KAAK,2BAA6B,GAE1C,CACG,EACD,SAAU,CACR,KAAK,WAAY,CAClB,EACD,SAAU,CACR,KAAK,WAAY,CAClB,EACD,QAAS,CAQP,QAAQC,EAAOC,EAAUC,EAAgB,CACvC,KAAK,MAAM,QAASF,CAAK,EACrB,EAAAA,EAAM,SAAWA,EAAM,QAAUA,EAAM,SAAWA,EAAM,WAGxDE,IACFD,IAAWD,CAAK,EAChBA,EAAM,eAAgB,EAEzB,EACD,aAAc,CACR,KAAK,aACP,KAAK,2BAA6B,IAEpC,KAAK,QAAU,EAChB,EACD,aAAc,CACZ,KAAK,2BAA6B,EACnC,EAID,WAAWA,EAAO,CACZ,KAAK,UAGL,KAAK,MAAM,WAAW,EAAE,SAASA,EAAM,aAAa,GAGxD,KAAK,YAAa,CACnB,EAID,kBAAmB,CACZ,KAAK,WACR,KAAK,2BAA6B,IAEpC,KAAK,QAAU,EAChB,EACD,iBAAkB,CAChB,KAAK,YAAa,EAClB,KAAK,QAAU,EAChB,EACD,wBAAwBG,EAAG,CACzB,KAAK,SAAWA,EAChB,KAAK,MAAM,kBAAmBA,CAAC,CAChC,EAED,YAAa,CACP,KAAK,aAAe,CAAC,CAAC,KAAK,OAAO,UACpC,KAAK,WAAa,CAAC,CAAC,KAAK,OAAO,SAE9B,KAAK,aAAe,CAAC,CAAC,KAAK,OAAO,UACpC,KAAK,WAAa,CAAC,CAAC,KAAK,OAAO,SAE9B,KAAK,eAAiB,CAAC,CAAC,KAAK,OAAO,YACtC,KAAK,aAAe,CAAC,CAAC,KAAK,OAAO,WAEhC,KAAK,aAAe,CAAC,CAAC,KAAK,OAAO,UACpC,KAAK,WAAa,CAAC,CAAC,KAAK,OAAO,QAExC,CACA,CACA,EACA,IAAIZ,GAAc,UAAkB,CAClC,IAAIa,EAAM,KAAMC,EAAKD,EAAI,MAAM,GAC/B,OAAOC,EAAGD,EAAI,GAAK,cAAgB,WAAY,CAAE,IAAK,YAAa,MAAO,CAAE,OAAUA,EAAI,GAAK,GAAO,KAAM,GAAMA,EAAI,GAAI,MAASA,EAAI,GAAKA,EAAI,MAAQ,IAAI,EAAI,YAAaA,EAAI,GAAG,CAAC,CAAE,IAAK,UAAW,GAAI,SAAS,CAAE,KAAMF,EAAgB,SAAAD,EAAU,SAAAK,GAAY,CAChQ,MAAO,CAACD,EAAG,KAAM,CAAE,YAAa,qBAAsB,MAAO,CAAE,6BAA8BC,GAAYF,EAAI,OAAU,EAAE,CAACC,EAAG,MAAO,CAAE,IAAK,YAAa,YAAa,YAAa,MAAO,CACvL,qBAAsBD,EAAI,QAC1B,oBAAqBA,EAAI,SACzB,sBAAuBA,EAAI,OAC5B,EAAE,GAAI,CAAE,UAAaA,EAAI,gBAAiB,WAAcA,EAAI,gBAAkB,CAAA,EAAI,CAACC,EAAG,IAAK,CAAE,YAAa,oBAAqB,MAAO,CAAE,GAAMD,EAAI,UAAY,OAAQ,aAAcA,EAAI,cAAe,KAAQF,GAAkBE,EAAI,KAAM,OAAUA,EAAI,SAAWA,EAAI,OAAS,IAAM,OAAS,UAAW,IAAOA,EAAI,OAAS,IAAM,OAAS,qBAAuB,EAAE,GAAI,CAAE,MAASA,EAAI,YAAa,SAAYA,EAAI,WAAY,MAAS,SAASG,EAAQ,CAC5b,OAAOH,EAAI,QAAQG,EAAQN,EAAUC,CAAc,CACzD,EAAO,QAAW,SAASK,EAAQ,CAC7B,MAAI,CAACA,EAAO,KAAK,QAAQ,KAAK,GAAKH,EAAI,GAAGG,EAAO,QAAS,MAAO,GAAIA,EAAO,IAAK,CAAC,MAAO,QAAQ,CAAC,EAAU,KACrGH,EAAI,YAAY,MAAM,KAAM,SAAS,CAC7C,CAAA,GAAM,CAACA,EAAI,GAAG,MAAM,EAAGC,EAAG,MAAO,CAAE,YAAa,mBAAqB,EAAE,CAACA,EAAG,MAAO,CAAE,YAAa,yBAAyB,EAAI,CAACA,EAAG,MAAO,CAAE,YAAa,yBAA2B,EAAE,CAACD,EAAI,GAAG,OAAQ,UAAW,CAC/M,MAAO,CAACA,EAAI,GAAGA,EAAI,GAAGA,EAAI,IAAI,CAAC,CAAC,CACtC,CAAK,CAAC,EAAG,CAAC,EAAGA,EAAI,WAAaC,EAAG,MAAO,CAAE,YAAa,6BAA8B,MAAO,CAAE,mCAAoCD,EAAI,IAAM,CAAA,EAAI,CAACA,EAAI,GAAG,SAAS,CAAC,EAAG,CAAC,EAAIA,EAAI,GAAI,CAAA,CAAC,EAAGC,EAAG,MAAO,CAAE,YAAa,4BAA4B,EAAI,CAACD,EAAI,YAAcC,EAAG,MAAO,CAAE,YAAa,4BAA8B,EAAE,CAACD,EAAI,GAAG,UAAW,UAAW,CACnV,MAAO,CAACA,EAAI,GAAGA,EAAI,GAAGA,EAAI,OAAO,CAAC,CAAC,CACzC,CAAK,CAAC,EAAG,CAAC,EAAIA,EAAI,KAAMA,EAAI,eAAiBA,EAAI,aAAeC,EAAG,MAAO,CAAE,WAAY,CAAC,CAAE,KAAM,OAAQ,QAAS,SAAU,MAAOD,EAAI,uBAAwB,WAAY,wBAA0B,CAAA,EAAG,YAAa,0BAA0B,EAAI,CAACA,EAAI,cAAgBC,EAAG,kBAAmB,CAAE,YAAa,6BAA8B,MAAO,CAAE,OAAUC,GAAYF,EAAI,OAAQ,KAAQA,EAAI,WAAW,CAAI,EAAE,CAACA,EAAI,GAAG,IAAMA,EAAI,GAAGA,EAAI,aAAa,EAAI,GAAG,CAAC,CAAC,EAAIA,EAAI,GAAE,EAAIA,EAAI,aAAeC,EAAG,OAAQ,CAAE,YAAa,8BAA8B,EAAI,CAACD,EAAI,GAAG,WAAW,CAAC,EAAG,CAAC,EAAIA,EAAI,GAAI,CAAA,EAAG,CAAC,EAAIA,EAAI,IAAI,CAAC,CAAC,CAAC,CAAC,EAAG,CAAC,EAAGA,EAAI,OAAO,eAAe,EAAIC,EAAG,MAAO,CAAE,YAAa,kCAAoC,EAAE,CAACD,EAAI,GAAG,eAAe,CAAC,EAAG,CAAC,EAAIA,EAAI,GAAI,EAAEC,EAAG,MAAO,CAAE,WAAY,CAAC,CAAE,KAAM,OAAQ,QAAS,SAAU,MAAOD,EAAI,qBAAuBA,EAAI,2BAA4B,WAAY,mDAAqD,CAAA,EAAG,YAAa,6BAA8B,GAAI,CAAE,SAAYA,EAAI,UAAU,CAAI,EAAE,CAACC,EAAG,YAAa,CAAE,IAAK,UAAW,MAAO,CAAE,QAAWC,GAAYF,EAAI,OAAQ,aAAcA,EAAI,UAAW,aAAcA,EAAI,gBAAkB,EAAE,GAAI,CAAE,cAAeA,EAAI,uBAAyB,EAAE,YAAaA,EAAI,GAAG,CAACA,EAAI,OAAO,cAAc,EAAI,CAAE,IAAK,OAAQ,GAAI,UAAW,CACxwC,MAAO,CAACA,EAAI,GAAG,cAAc,CAAC,CACpC,EAAO,MAAO,EAAM,EAAG,IAAI,EAAG,KAAM,EAAI,CAAG,EAAE,CAACA,EAAI,GAAG,SAAS,CAAC,EAAG,CAAC,CAAC,EAAG,CAAC,EAAGA,EAAI,OAAO,MAAQC,EAAG,MAAO,CAAE,YAAa,kBAAkB,EAAI,CAACD,EAAI,GAAG,OAAO,CAAC,EAAG,CAAC,EAAIA,EAAI,GAAI,CAAA,CAAC,CAAC,CAAC,CAAC,CAC9K,CAAA,CAAE,EAAG,KAAM,EAAI,EAAG,CACrB,EACIZ,GAAuB,CAAE,EACzBC,GAAgCC,EAClCT,GACAM,GACAC,GACA,GACA,KACA,UACF,EACA,MAAMgB,GAAaf,GAAc,QCvNjCgB,GAAAC,EAAA,CACA,KAAA,cAEA,WAAA,CACA,KAAAC,EACA,cAAAC,EACA,SAAAC,EACA,WAAAL,GACA,cAAAM,EACA,aAAAC,GACA,UAAAC,CACA,EAEA,QAAA,CACA,WAAAC,EAAA,CACA,OAAAC,EAAA,+BAAAD,CAAA,YAAA,CAAA,CAEA,EAEA,OAAA,CACAE,EACA,EAEA,MAAA,CACA,MAAA,CACA,sBAAA,EACA,CACA,EAEA,SAAA,CACA,QAAA,CACA,OAAA,KAAA,OAAA,QAAA,MACA,EAEA,cAAA,CACA,OAAA,KAAA,OAAA,QAAA,YACA,EAEA,WAAA,CACA,MAAA,CAAA,GAAA,OAAA,OAAA,KAAA,MAAA,EAAA,GAAA,OAAA,OAAA,KAAA,YAAA,CAAA,CAAA,CAEA,EAEA,SAAA,CACA,KAAA,eAAA,CACA,EAEA,QAAA,CACA,MAAA,gBAAA,CACA,MAAA,KAAA,iBAAA,WAAAC,EAAA,GAAA,GAAA,UAAA,CAAA,kBAAA,mBAAA,sBAAA,CAAA,EACA,MAAA,KAAA,iBAAA,WAAAA,EAAA,GAAA,GAAA,gBAAA,CAAA,kBAAA,mBAAA,sBAAA,CAAA,CACA,EAEA,qBAAA,CACA,KAAA,sBAAA,GACA,KAAA,eAAA,CACA,EAEA,UAAAC,EAAA,CACA,KAAA,MAAA,eAAAA,CAAA,CACA,EAEA,cAAAA,EAAA,CACA,OAAAA,EAAA,KAAA,MAAA,+BAAA,IAAA,IACA,EAEA,aAAAA,EAAA,CACA,OAAA,KAAA,cAAAA,CAAA,EACAA,EAAA,SAAA,QAAA,IAAA,OAAA,MAAAA,EAAA,WAAA,cAAA,CAAA,EAAA,EAAA,MAAA,EAAA,EAAA,EAEAA,EAAA,QAEA,EAEA,EAAAC,EACA,EAAAC,CAAA,CAEA,CAAA,otDC3HAC,GAAA,CACA,KAAA,iBAEA,WAAA,CACA,aAAAC,CACA,EAEA,MAAA,CACA,MAAA,CACA,KAAA,OACA,SAAA,EACA,EAEA,gBAAA,CACA,KAAA,MACA,SAAA,EAAA,CAEA,EAEA,SAAA,CACA,OAAA,CACA,OAAA,KAAA,OAAA,MAAA,MAAA,KACA,EAEA,aAAA,CACA,MAAAC,EAAA,IAAA,gBACA,OAAAA,EAAA,OAAA,QAAA,KAAA,UAAA,KAAA,KAAA,CAAA,EAGAR,EAAA,iCAAAQ,CAAA,EAAA,CACA,EAEA,OAAA,CACA,OAAA,KAAA,gBAAA,IAAAT,GAAA,KAAA,MAAAA,CAAA,EAAA,IAAA,CAAA,CACA,CAEA,0XC1BMU,EAAYC,EAA+B,CAAC,KAAM,IAAI,CAAC,EACvDC,EAAoBC,EAAS,IAAM,CACpC,GAAA,EAAAH,EAAU,MAAM,CAAC,IAAM,MAAQA,EAAU,MAAM,CAAC,IAAM,MAGlD,MAAA,CACN,MAAOA,EAAU,MAAM,CAAC,EAAE,QAAQ,EAClC,IAAKA,EAAU,MAAM,CAAC,EAAE,QAAQ,CACjC,CACD,CACA,EAED,OAAAI,EACC,IAAMC,EAAM,MACXjC,GAAa,CACTA,IAAa,OACN4B,EAAA,MAAQ,CAAC,KAAM,IAAI,EACnB5B,IAAa8B,EAAkB,QACzCF,EAAU,MAAQ,CACjB,IAAI,KAAK5B,EAAS,KAAK,EACvB,IAAI,KAAKA,EAAS,GAAG,CACtB,EACD,CAEF,EAEAgC,EAAMF,EAAoB9B,GAAakC,EAAK,QAASlC,CAAQ,CAAC,2gBC9CjDmC,GAAoB,aAEpBC,GAAkC,CAC9C,GAAID,GACJ,UAAWE,GACX,SAAST,EAAuC,CAC/C,OAAIA,IAAc,OACV,GAID;AAAA;AAAA;AAAA;AAAA,kBAISA,EAAU,MAAQ,GAAI;AAAA;AAAA;AAAA;AAAA,kBAItBA,EAAU,IAAM,IAAO,GAAK,GAAK,EAAE;AAAA;AAAA,YAAA,CAIrD,6FCWMU,EAAUT,EAAI,EAAI,EAClBU,EAAmBV,EAA2B,EAAE,EAChDW,EAAkBX,EAA2B,EAAE,EAEpCY,GAAAC,CAAY,EAC3B,KAAeC,GAAA,CACEJ,EAAA,MAAQI,EAAO,IAAcC,IAAA,CAC7C,MAAOA,EAAM,SACb,WAAYzB,EAAY,+BAA+ByB,EAAM,WAAW,YAAY,CAAC,YAAkB,CAAA,EACtG,EACFN,EAAQ,MAAQ,EAAA,CAChB,EAEFN,EACC,IAAMC,EAAM,MACXjC,GAA8B,CAC1BA,IAAa,OAChBwC,EAAgB,MAAQ,CAAC,EACfxC,IAAa6C,EAAe,QACtCL,EAAgB,MAAQxC,EACtB,IAAa4C,GAAAL,EAAiB,MAAM,KAAKO,GAAUA,EAAO,QAAUF,CAAK,CAAC,EAC1E,OAAOA,GAASA,IAAU,MAAS,EACtC,CAEF,EAEM,MAAAC,EAAiBd,EAAS,IAAMS,EAAgB,MAAM,IAAII,GAASA,EAAM,KAAK,CAAC,EACrF,OAAAZ,EAAMa,EAAiB7C,GAAakC,EAAK,QAASlC,CAAQ,CAAC,4rBC7D9C+C,GAAiB,SAEjBC,GAA+B,CAC3C,GAAID,GACJ,UAAWE,GACX,SAASN,EAAiC,CACzC,OAAIA,IAAW,OACP,GAUD,SAPKA,EAAO,IAAaC,GAAA;AAAA;AAAA;AAAA,iBAGjBA,CAAK;AAAA;AAAA,GAEnB,EAEmB,KAAK,EAAE,CAAC,SAAA,CAE9B,ECrBeM,EAAA,CACdd,GACAY,EACD,gGCgBMG,EAAatB,EAA6B,EAAE,EAElD,OAAAG,EACC,IAAMC,EAAM,MACXjC,GAAa,CAAEmD,EAAW,MAAQnD,CAAS,EAC5C,CAAE,KAAM,GAAM,UAAW,EAAK,CAC/B,8gBCgJAd,GAAA,CACA,KAAA,WACA,WAAA,CACA,OAAAkE,EACA,gBAAAC,EACA,SAAAC,EACA,MAAAC,EACA,KAAA3C,EACA,mBAAA4C,EACA,eAAAC,EACA,QAAAC,EACA,UAAA7D,EACA,eAAA8D,EACA,SAAA7C,EACA,UAAAG,EACA,YAAA2C,GACA,gBAAAC,GACA,KAAAC,GACA,eAAAC,GACA,eAAAC,GACA,iBAAAC,GACA,8BAAAC,GACA,YAAAC,EACA,gBAAAC,GACA,WAAAC,EACA,UAAAC,CACA,EAEA,QAAA,CACA,UAAAC,EAAA,CACA,OAAAC,EAAAD,EAAA,QAAA,EAAA,OAAA,MAAA,CACA,EACA,SAAAA,EAAA,CACA,OAAAC,EAAAD,EAAA,QAAA,EAAA,OAAA,MAAA,CAAA,CAEA,EAEA,OAAA,CACAE,EACAC,GACAC,EACAC,CACA,EAEA,iBAAAC,EAAAC,EAAAC,EAAA,CACA,OAAA,SAAA,EAAA,CAAA,EACAA,EAAA,CACA,EAEA,MAAA,CACA,cAAA,CACA,KAAA,QACA,QAAA,EACA,EACA,UAAA,CACA,KAAA,MACA,QAAA,IAAAC,CACA,EACA,UAAA,CACA,KAAA,QACA,QAAA,EACA,EACA,UAAA,CACA,KAAA,OACA,SAAA,EAAA,CAEA,EAEA,MAAA,CACA,MAAA,CACA,aAAA,EACA,sBAAA,GACA,gBAAA,GACA,WAAA,SAAA,eAAA,iBAAA,EACA,YAAA,GACA,aAAA,CAAA,CACA,CACA,EAEA,SAAA,CACA,OAAA,CACA,OAAA,KAAA,OAAA,MAAA,MAAA,KAAA,CAEA,EAEA,MAAA,CACA,eAAA,CACA,KAAA,aAAA,CAAA,CAAA,CAEA,EAEA,SAAA,CACAC,EAAAC,EAAA,KAAA,sBAAA,CACA,EAEA,WAAA,CACAC,EAAAD,EAAA,KAAA,sBAAA,CACA,EAEA,QAAA,CACA,YAAA,CACA,KAAA,WAAA,CACA,UAAA,KAAA,UACA,UAAA,KAAA,UACA,cAAA,KAAA,cACA,aAAA,OAAA,QAAA,KAAA,YAAA,EACA,IAAA,CAAA,CAAAE,EAAAjG,CAAA,IAAA+D,EAAA,KAAAmC,GAAAA,EAAA,KAAAD,CAAA,GAAA,SAAAjG,CAAA,CAAA,EACA,KAAA;AAAA,CAAA,CAAA,CACA,CACA,EAEA,WAAA+B,EAAA,CACA,OAAA,IAAA,OAAA,KAAA,CACA,SAAAoE,EAAA,KAAA,MAAApE,CAAA,CAAA,EACA,KAAA,OAAA,OAAA,KAAA,cAAA,EAAA,KAAA,EAAA,IAAAA,GAAAoE,EAAA,KAAA,MAAApE,CAAA,CAAA,CAAA,CAAA,CACA,CACA,EAEA,cAAA,CAEA,EAEA,MAAA,oBAAAI,EAAA,CACA,KAAA,gBAAA,GACA,MAAA,KAAA,OAAA,SAAA,uBAAA,CAAA,mBAAAA,EAAA,KAAAA,EAAA,KAAA,aAAA,KAAA,gBAAA,CACA,EAEA,MAAA,iBAAA,CAEA,MAAAiE,EAAA,KAAA,gBACA,KAAA,eAAAA,CAAA,EACA,KAAA,eAAA,KAAA,eAAA,UAAA,CAAAA,EAAA,SAAAC,CAAA,CAAA,EACA,MAAA,KAAA,OAAA,SAAA,cAAAD,CAAA,CACA,EAEA,uBAAA,CAAA,IAAAH,GAAA,CACAA,IAAA,uBACA,KAAA,qBAAA,CAEA,EAEA,eAAA,CACA,KAAA,YAAA,CAAA,KAAA,YACA,KAAA,cACA,KAAA,aAAA,CAAA,EACA,KAAA,qBAAA,EAEA,EAEA,qBAAA,CACA,KAAA,qBAAA,EACA,KAAA,WAAA,CACA,EAEA,EAAA7D,CAAA,CAEA","x_google_ignoreList":[0,1]} \ No newline at end of file diff --git a/js/Timeline-kxCboYpY.chunk.mjs b/js/Timeline-kxCboYpY.chunk.mjs deleted file mode 100644 index 2fd0c8037..000000000 --- a/js/Timeline-kxCboYpY.chunk.mjs +++ /dev/null @@ -1,18 +0,0 @@ -import{l as x,P as y,n as r,o as S,p as O,k as $,q as I,i as B,r as D,s as L,D as M}from"./icons-DIHlkdtB.chunk.mjs";import{n as g,K as T,A,o as P,e as F,L as U,M as H,I as Y,O as V,C as z,q as j,B as E,w as R,J as f,Q as b}from"./index-DySs6xMI.chunk.mjs";import{c as q,d,a as K,t as m,g as _,_ as h,q as c,j as C,w as u,u as Q,s as J}from"./vue.runtime.esm-CWuAmtQL.chunk.mjs";import{N as G}from"./NcEmptyContent-BdKXMbxi.chunk.mjs";import{i as W}from"./isMobile-BnDNCp_S.chunk.mjs";import{m as v}from"./index-C-mleKoq.chunk.mjs";import{F as X}from"./FetchFilesMixin-BFVnxMZ5.chunk.mjs";import{F as Z}from"./FilesByMonthMixin-BuOw3Oo-.chunk.mjs";import{F as tt,a as et}from"./FilesListViewer-fmnbxYl2.chunk.mjs";import{F as st}from"./File-Bfy7XiO5.chunk.mjs";import{A as w}from"./AlbumForm-BXf1NYqI.chunk.mjs";import{N as it}from"./NcUserBubble-W_wjP2lY-BmhJ14QN.chunk.mjs";import{F as ot}from"./FetchCollectionsMixin-DxgQdf9l.chunk.mjs";import{A as at}from"./ActionFavorite-DpzqJw3d.chunk.mjs";import{H as lt}from"./HeaderNavigation-FnL8pqA5.chunk.mjs";import{a as nt}from"./PhotosSourceLocationsSettings-CzV450Gt.chunk.mjs";import{f as rt}from"./collectionFetcher-D_WT7y4k.chunk.mjs";import"./PhotoSearch-G2t0kCpr.chunk.mjs";import"./AbortControllerMixin-CQgfjju6.chunk.mjs";import"./fileFetcher-DUsQ5B5l.chunk.mjs";import"./index-x9vhq81Z.chunk.mjs";import"./FetchCollectionContentMixin-Bb6WGQlU.chunk.mjs";import"./index-r_e2HRW6.chunk.mjs";import"./preload-helper-Dh9HmuEY.chunk.mjs";import"./index-B5VUqMFg.chunk.mjs";const ct={name:"NcCounterBubble",props:{type:{type:String,default:"",validator(t){return["highlighted","outlined",""].includes(t)}},active:{type:Boolean,default:!1},count:{type:Number,required:!1,default:void 0},raw:{type:Boolean,required:!1,default:!1}},computed:{counterClassObject(){return{"counter-bubble__counter--highlighted":this.type==="highlighted","counter-bubble__counter--outlined":this.type==="outlined",active:this.active}},humanizedCount(){return this.humanizeCount(this.count)}},methods:{humanizeCount(t){return this.raw?t.toString():new Intl.NumberFormat(q(),{notation:"compact",compactDisplay:"short"}).format(t)},getHumanizedCount(){if(this.count!==void 0)return{humanized:this.humanizedCount,original:this.count.toString()};if(!this.raw&&this.$slots.default?.length===1){const t=this.$slots.default[0].text?.trim();if(t&&/^\d+$/.test(t)){const e=parseInt(t,10);return{humanized:this.humanizeCount(e),original:t}}}}},render(t){const e=this.getHumanizedCount();return t("div",{staticClass:"counter-bubble__counter",class:this.counterClassObject,attrs:{title:e&&e.original!==e.humanized?e.original:void 0}},[e?.humanized??this.$slots.default])}},ut=null,dt=null;var mt=g(ct,ut,dt,!1,null,"f1abaa29");const pt=mt.exports,ht={name:"NcListItem",components:{NcActions:A,NcCounterBubble:pt,NcVNodes:T},props:{details:{type:String,default:""},name:{type:String,default:void 0},exact:{type:Boolean,default:!1},to:{type:[String,Object],default:null},href:{type:String,default:"#"},target:{type:String,default:""},anchorId:{type:String,default:""},bold:{type:Boolean,default:!1},compact:{type:Boolean,default:!1},active:{type:Boolean,default:!1},linkAriaLabel:{type:String,default:""},actionsAriaLabel:{type:String,default:void 0},counterNumber:{type:[Number,String],default:0},counterType:{type:String,default:"",validator(t){return["highlighted","outlined",""].indexOf(t)!==-1}},forceDisplayActions:{type:Boolean,default:!1},forceMenu:{type:Boolean,default:!1},oneLine:{type:Boolean,default:!1}},emits:["click","update:menuOpen"],setup(){const[t]=window._oc_config?.version.split(".",2)??[];return{isLegacy:t&&Number.parseInt(t)<30}},data(){return{hovered:!1,hasActions:!1,hasSubname:!1,displayActionsOnHoverFocus:!1,menuOpen:!1,hasIndicator:!1,hasDetails:!1}},computed:{showAdditionalElements(){return!this.displayActionsOnHoverFocus||this.forceDisplayActions},showDetails(){return(this.details!==""||this.hasDetails)&&(!this.displayActionsOnHoverFocus||this.forceDisplayActions)}},watch:{menuOpen(t){!t&&!this.hovered&&(this.displayActionsOnHoverFocus=!1)}},mounted(){this.checkSlots()},updated(){this.checkSlots()},methods:{onClick(t,e,s){this.$emit("click",t),!(t.metaKey||t.altKey||t.ctrlKey||t.shiftKey)&&s&&(e?.(t),t.preventDefault())},showActions(){this.hasActions&&(this.displayActionsOnHoverFocus=!0),this.hovered=!1},hideActions(){this.displayActionsOnHoverFocus=!1},handleBlur(t){this.menuOpen||this.$refs["list-item"].contains(t.relatedTarget)||this.hideActions()},handleMouseleave(){this.menuOpen||(this.displayActionsOnHoverFocus=!1),this.hovered=!1},handleMouseover(){this.showActions(),this.hovered=!0},handleActionsUpdateOpen(t){this.menuOpen=t,this.$emit("update:menuOpen",t)},checkSlots(){this.hasActions!==!!this.$slots.actions&&(this.hasActions=!!this.$slots.actions),this.hasSubname!==!!this.$slots.subname&&(this.hasSubname=!!this.$slots.subname),this.hasIndicator!==!!this.$slots.indicator&&(this.hasIndicator=!!this.$slots.indicator),this.hasDetails!==!!this.$slots.details&&(this.hasDetails=!!this.$slots.details)}}};var ft=function(){var t=this,e=t._self._c;return e(t.to?"router-link":"NcVNodes",{tag:"component",attrs:{custom:t.to?!0:null,to:t.to,exact:t.to?t.exact:null},scopedSlots:t._u([{key:"default",fn:function({href:s,navigate:i,isActive:o}){return[e("li",{staticClass:"list-item__wrapper",class:{"list-item__wrapper--active":o||t.active}},[e("div",{ref:"list-item",staticClass:"list-item",class:{"list-item--compact":t.compact,"list-item--legacy":t.isLegacy,"list-item--one-line":t.oneLine},on:{mouseover:t.handleMouseover,mouseleave:t.handleMouseleave}},[e("a",{staticClass:"list-item__anchor",attrs:{id:t.anchorId||void 0,"aria-label":t.linkAriaLabel,href:s||t.href,target:t.target||(t.href==="#"?void 0:"_blank"),rel:t.href==="#"?void 0:"noopener noreferrer"},on:{focus:t.showActions,focusout:t.handleBlur,click:function(a){return t.onClick(a,i,s)},keydown:function(a){return!a.type.indexOf("key")&&t._k(a.keyCode,"esc",27,a.key,["Esc","Escape"])?null:t.hideActions.apply(null,arguments)}}},[t._t("icon"),e("div",{staticClass:"list-item-content"},[e("div",{staticClass:"list-item-content__main"},[e("div",{staticClass:"list-item-content__name"},[t._t("name",function(){return[t._v(t._s(t.name))]})],2),t.hasSubname?e("div",{staticClass:"list-item-content__subname",class:{"list-item-content__subname--bold":t.bold}},[t._t("subname")],2):t._e()]),e("div",{staticClass:"list-item-content__details"},[t.showDetails?e("div",{staticClass:"list-item-details__details"},[t._t("details",function(){return[t._v(t._s(t.details))]})],2):t._e(),t.counterNumber||t.hasIndicator?e("div",{directives:[{name:"show",rawName:"v-show",value:t.showAdditionalElements,expression:"showAdditionalElements"}],staticClass:"list-item-details__extra"},[t.counterNumber?e("NcCounterBubble",{staticClass:"list-item-details__counter",attrs:{active:o||t.active,type:t.counterType}},[t._v(" "+t._s(t.counterNumber)+" ")]):t._e(),t.hasIndicator?e("span",{staticClass:"list-item-details__indicator"},[t._t("indicator")],2):t._e()],1):t._e()])])],2),t.$slots["extra-actions"]?e("div",{staticClass:"list-item-content__extra-actions"},[t._t("extra-actions")],2):t._e(),e("div",{directives:[{name:"show",rawName:"v-show",value:t.forceDisplayActions||t.displayActionsOnHoverFocus,expression:"forceDisplayActions || displayActionsOnHoverFocus"}],staticClass:"list-item-content__actions",on:{focusout:t.handleBlur}},[e("NcActions",{ref:"actions",attrs:{primary:o||t.active,"force-menu":t.forceMenu,"aria-label":t.actionsAriaLabel},on:{"update:open":t.handleActionsUpdateOpen},scopedSlots:t._u([t.$slots["actions-icon"]?{key:"icon",fn:function(){return[t._t("actions-icon")]},proxy:!0}:null],null,!0)},[t._t("actions")],2)],1),t.$slots.extra?e("div",{staticClass:"list-item__extra"},[t._t("extra")],2):t._e()])])]}}],null,!0)})},bt=[],_t=g(ht,ft,bt,!1,null,"40599719");const vt=_t.exports,yt=d({name:"AlbumPicker",components:{Plus:y,ImageMultiple:x,NcButton:F,NcListItem:vt,NcLoadingIcon:P,NcUserBubble:it,AlbumForm:w},filters:{toCoverUrl(t){return h(`/apps/photos/api/v1/preview/${t}?x=64&y=64`)}},mixins:[ot],data(){return{showAlbumCreationForm:!1}},computed:{albums(){return this.$store.getters.albums},sharedAlbums(){return this.$store.getters.sharedAlbums},allAlbums(){return[...Object.values(this.albums),...Object.values(this.sharedAlbums)]}},mounted(){this.fetchAlbumList()},methods:{async fetchAlbumList(){await this.fetchCollections(`/photos/${_()?.uid}/albums`,["","",""]),await this.fetchCollections(`/photos/${_()?.uid}/sharedalbums`,["","",""])},albumCreatedHandler(){this.showAlbumCreationForm=!1,this.fetchAlbumList()},pickAlbum(t){this.$emit("album-picked",t)},isSharedAlbum(t){return t.path.match(/^\/photos\/.+\/sharedalbums\//)!==null},originalName(t){return this.isSharedAlbum(t)?t.basename.replace(new RegExp(`\\(${t.attributes.collaborators[0].id}\\)$`),""):t.basename},t:m,n:K}});var gt=function(){var t=this,e=t._self._c;return t._self._setupProxy,t.showAlbumCreationForm?e("AlbumForm",{attrs:{"display-back-button":!0,title:t.t("photos","New album")},on:{back:function(s){t.showAlbumCreationForm=!1},done:t.albumCreatedHandler}}):e("div",{staticClass:"album-picker"},[e("h2",[t._v(" "+t._s(t.t("photos","Add to Album"))+" "),t.loadingCollections?e("NcLoadingIcon",{staticClass:"loading-icon"}):t._e()],1),e("ul",{staticClass:"albums-container"},t._l(t.allAlbums,function(s){return e("NcListItem",{key:s.attributes.filename,staticClass:"album",attrs:{name:t.originalName(s),"aria-label":t.t("photos","Add selection to album {albumName}",{albumName:s.basename})},on:{click:function(i){return t.pickAlbum(s)}},scopedSlots:t._u([{key:"subname",fn:function(){return[t._v(" "+t._s(t.n("photos","%n item","%n photos and videos",s.attributes.nbItems))+" "),t.isSharedAlbum(s)?[t._v(" ⸱ "+t._s(t.t("photos","Shared by"))+" "),e("NcUserBubble",{attrs:{"display-name":s.attributes.collaborators[0].label,user:s.attributes.collaborators[0].id}})]:t._e()]},proxy:!0}],null,!0)},[e("template",{slot:"icon"},[s.attributes["last-photo"]!==-1?e("img",{staticClass:"album__image",attrs:{src:t._f("toCoverUrl")(s.attributes["last-photo"])}}):e("div",{staticClass:"album__image album__image--placeholder"},[e("ImageMultiple",{attrs:{size:32}})],1)])],2)}),1),e("NcButton",{staticClass:"new-album-button",attrs:{"aria-label":t.t("photos","Create a new album."),type:"tertiary"},on:{click:function(s){t.showAlbumCreationForm=!0}},scopedSlots:t._u([{key:"icon",fn:function(){return[e("Plus")]},proxy:!0}],null,!1,1489515321)},[t._v(" "+t._s(t.t("photos","Create new album"))+" ")])],1)},At=[],Ft=r(yt,gt,At,!1,null,"a54712c8");const Ct=Ft.exports,wt={name:"ActionDownload",components:{NcActionLink:U},props:{title:{type:String,required:!0},selectedFileIds:{type:Array,required:!0}},computed:{files(){return this.$store.state.files.files},downloadUrl(){const t=new URLSearchParams;return t.append("files",JSON.stringify(this.paths)),h(`/apps/files/ajax/download.php?${t}`)},paths(){return this.selectedFileIds.map(t=>this.files[t].path)}}};var kt=function(){var t=this,e=t._self._c;return e("NcActionLink",{attrs:{"close-after-click":!0,href:t.downloadUrl,download:t.downloadUrl,"aria-label":t.title}},[t._v(" "+t._s(t.title)+" "),t._t("icon",null,{slot:"icon"})],2)},Nt=[],xt=r(wt,kt,Nt,!1,null,null);const St=xt.exports,Ot=d({__name:"DateRangeFilter",props:{value:null},emits:["input"],setup(t,{emit:e}){const s=t,i=c([null,null]),o=C(()=>{if(!(i.value[0]===null||i.value[1]===null))return{start:i.value[0].getTime(),end:i.value[1].getTime()}});return u(()=>s.value,a=>{a===void 0?i.value=[null,null]:a!==o.value&&(i.value=[new Date(a.start),new Date(a.end)])}),u(o,a=>e("input",a)),{__sfc:!0,props:s,emit:e,dateRange:i,selectedDateRange:o,t:m,NcDateTimePicker:H}}});var $t=function(){var t=this,e=t._self._c,s=t._self._setupProxy;return e(s.NcDateTimePicker,{attrs:{clearable:!0,type:"date-range",placeholder:s.t("photos","Select a date range")},scopedSlots:t._u([{key:"default",fn:function(){return[t._v(" "+t._s(s.t("photos","Date range"))+" ")]},proxy:!0}]),model:{value:s.dateRange,callback:function(i){s.dateRange=i},expression:"dateRange"}})},It=[],Bt=r(Ot,$t,It,!1,null,null);const Dt=Bt.exports,Lt="date-range",Mt={id:Lt,component:Dt,getQuery(t){return t===void 0?"":` - - - - ${t.start/1e3} - - - - ${t.end/1e3+24*60*60} - - `}},Tt=d({__name:"PlacesFilter",props:{value:null},emits:["input"],setup(t,{emit:e}){const s=t,i=c(!0),o=c([]),a=c([]);rt(Y).then(l=>{o.value=l.map(n=>({label:n.basename,previewUrl:h(`/apps/photos/api/v1/preview/${n.attributes["last-photo"]}?x=64&y=64`)})),i.value=!1}),u(()=>s.value,l=>{l===void 0?a.value=[]:l!==p.value&&(a.value=l.map(n=>o.value.find(N=>N.label===n)).filter(n=>n!==void 0))});const p=C(()=>a.value.map(l=>l.label));return u(p,l=>e("input",l)),{__sfc:!0,props:s,emit:e,loading:i,availableOptions:o,selectedOptions:a,selectedPlaces:p,NcSelect:z,NcListItemIcon:V,t:m}}});var Pt=function(){var t=this,e=t._self._c,s=t._self._setupProxy;return e(s.NcSelect,{staticClass:"places-select",attrs:{options:s.availableOptions,"aria-label-combobox":s.t("photos","Select places"),placeholder:s.t("photos","Select places"),loading:s.loading,multiple:!0},scopedSlots:t._u([{key:"option",fn:function(i){return[e(s.NcListItemIcon,{attrs:{name:i.label,"is-no-user":!0,url:i.previewUrl}})]}}]),model:{value:s.selectedOptions,callback:function(i){s.selectedOptions=i},expression:"selectedOptions"}})},Ut=[],Ht=r(Tt,Pt,Ut,!1,null,"2119ac98");const Yt=Ht.exports,Vt="places",zt={id:Vt,component:Yt,getQuery(t){return t===void 0?"":`${t.map(e=>` - - - ${e} - - `).join("")}`}},k=[Mt,zt],jt=d({__name:"TimelineFilters",props:{value:null},emits:["input"],setup(t,{emit:e}){const s=t,i=c({});return u(()=>s.value,o=>{i.value=o},{deep:!0,immediate:!0}),{__sfc:!0,props:s,emit:e,innerValue:i,filters:k}}});var Et=function(){var t=this,e=t._self._c,s=t._self._setupProxy;return e("div",{staticClass:"timeline-filters"},t._l(s.filters,function(i){return e(i.component,{key:i.id,tag:"component",attrs:{"data-cy-timeline-filters":i.id},on:{input:function(o){return s.emit("input",s.innerValue)}},model:{value:s.innerValue[i.id],callback:function(o){t.$set(s.innerValue,i.id,o)},expression:"innerValue[filter.id]"}})}),1)},Rt=[],qt=r(jt,Et,Rt,!1,null,"a9d92629");const Kt=qt.exports,Qt={name:"Timeline",components:{Delete:M,PlusBoxMultiple:L,Download:D,Close:B,Plus:y,FolderAlertOutline:I,NcEmptyContent:G,NcModal:R,NcActions:A,NcActionButton:E,NcButton:F,AlbumForm:w,AlbumPicker:Ct,FilesListViewer:et,File:st,ActionFavorite:at,ActionDownload:St,HeaderNavigation:lt,PhotosSourceLocationsSettings:nt,AlertCircle:$,TimelineFilters:Kt,FilterIcon:O,FilterOff:S},filters:{dateMonth(t){return v(t,"YYYYMM").format("MMMM")},dateYear(t){return v(t,"YYYYMM").format("YYYY")}},mixins:[X,tt,Z,W],beforeRouteLeave(t,e,s){window.scrollTo(0,0),s()},props:{onlyFavorites:{type:Boolean,default:!1},mimesType:{type:Array,default:()=>j},onThisDay:{type:Boolean,default:!1},rootTitle:{type:String,required:!0}},data(){return{loadingCount:0,showAlbumCreationForm:!1,showAlbumPicker:!1,appContent:document.getElementById("app-content-vue"),showFilters:!1,extraFilters:{}}},computed:{files(){return this.$store.state.files.files}},watch:{"$route.path"(){this.extraFilters={}}},mounted(){J(b,this.handleUserConfigChange)},destroyed(){Q(b,this.handleUserConfigChange)},methods:{getContent(){this.fetchFiles({mimesType:this.mimesType,onThisDay:this.onThisDay,onlyFavorites:this.onlyFavorites,extraFilters:Object.entries(this.extraFilters).map(([t,e])=>k.find(s=>s.id===t)?.getQuery(e)).join(` -`)})},openViewer(t){window.OCA.Viewer.open({fileInfo:f(this.files[t]),list:Object.values(this.fileIdsByMonth).flat().map(e=>f(this.files[e]))})},openUploader(){},async addSelectionToAlbum(t){this.showAlbumPicker=!1,await this.$store.dispatch("addFilesToCollection",{collectionFileName:t.root+t.path,fileIdsToAdd:this.selectedFileIds})},async deleteSelection(){const t=this.selectedFileIds;this.onUncheckFiles(t),this.fetchedFileIds=this.fetchedFileIds.filter(e=>!t.includes(e)),await this.$store.dispatch("deleteFiles",t)},handleUserConfigChange({key:t}){t==="photosSourceFolders"&&this.resetFetchFilesState()},toggleFilters(){this.showFilters=!this.showFilters,this.showFilters||(this.extraFilters={},this.resetFetchFilesState())},handleFiltersChange(){this.resetFetchFilesState(),this.getContent()},t:m}};var Jt=function(){var t=this,e=t._self._c;return t.errorFetchingFiles?e("div",{staticClass:"timeline__empty-content"},[t.errorFetchingFiles===404?e("NcEmptyContent",{attrs:{name:t.t("photos","One of the source folders does not exist")}},[e("FolderAlertOutline",{attrs:{slot:"icon"},slot:"icon"}),e("PhotosSourceLocationsSettings",{staticClass:"timeline__update_source_directory",attrs:{slot:"action"},slot:"action"})],1):e("NcEmptyContent",{attrs:{name:t.t("photos","An error occurred")}},[e("AlertCircle",{attrs:{slot:"icon"},slot:"icon"})],1)],1):e("div",{staticClass:"timeline"},[e("HeaderNavigation",{key:"navigation",attrs:{loading:t.loadingCount>0,path:"/",title:t.rootTitle,"root-title":t.rootTitle},on:{refresh:t.resetFetchFilesState}},[e("div",{staticClass:"timeline__header__left"},[t.selectedFileIds.length===0?e("NcButton",{ref:"newAlbumButton",attrs:{"aria-label":t.t("photos","Create new album")},on:{click:function(s){t.showAlbumCreationForm=!0}},scopedSlots:t._u([{key:"icon",fn:function(){return[e("PlusBoxMultiple")]},proxy:!0}],null,!1,2640725948)},[t._v(" "+t._s(t.t("photos","Create new album"))+" ")]):[e("NcButton",{attrs:{"close-after-click":!0,type:"primary","aria-label":t.t("photos","Add to album")},on:{click:function(s){t.showAlbumPicker=!0}},scopedSlots:t._u([{key:"icon",fn:function(){return[e("Plus")]},proxy:!0},t.isMobile?null:{key:"default",fn:function(){return[t._v(" "+t._s(t.t("photos","Add to album"))+" ")]},proxy:!0}],null,!0)}),t.selectedFileIds.length>0?e("NcButton",{attrs:{"aria-label":t.t("photos","Unselect all")},on:{click:t.resetSelection},scopedSlots:t._u([{key:"icon",fn:function(){return[e("Close")]},proxy:!0},t.isMobile?null:{key:"default",fn:function(){return[t._v(" "+t._s(t.t("photos","Unselect all"))+" ")]},proxy:!0}],null,!0)}):t._e(),e("NcActions",{attrs:{"aria-label":t.t("photos","Open actions menu")}},[e("ActionDownload",{attrs:{"selected-file-ids":t.selectedFileIds,title:t.t("photos","Download selected files")}},[e("Download",{attrs:{slot:"icon"},slot:"icon"})],1),e("ActionFavorite",{attrs:{"selected-file-ids":t.selectedFileIds}}),e("NcActionButton",{attrs:{"close-after-click":!0,"aria-label":t.t("photos","Delete selection")},on:{click:t.deleteSelection},scopedSlots:t._u([{key:"icon",fn:function(){return[e("Delete")]},proxy:!0}])},[t._v(" "+t._s(t.t("photos","Delete selection"))+" ")])],1)],e("NcButton",{attrs:{title:t.t("photos","Toggle filter"),"aria-label":t.t("photos","Toggle filter"),"data-cy-timeline-action":"toggle-filters",type:"tertiary"},on:{click:t.toggleFilters},scopedSlots:t._u([{key:"icon",fn:function(){return[t.showFilters?e("FilterOff"):e("FilterIcon")]},proxy:!0}])})],2)]),t.showFilters?e("TimelineFilters",{staticClass:"timeline__filters",on:{input:t.handleFiltersChange},model:{value:t.extraFilters,callback:function(s){t.extraFilters=s},expression:"extraFilters"}}):t._e(),e("FilesListViewer",{ref:"filesListViewer",staticClass:"timeline__file-list",attrs:{"container-element":t.appContent,"file-ids-by-section":t.fileIdsByMonth,sections:t.monthsList,loading:t.loadingFiles,"base-height":t.isMobile?120:200,"empty-message":t.t("photos","No photos or videos in here")},on:{"need-content":t.getContent},scopedSlots:t._u([{key:"default",fn:function({file:s,isHeader:i,distance:o}){return[i?e("h2",{staticClass:"section-header",attrs:{id:`file-picker-section-header-${s.id}`}},[e("b",[t._v(t._s(t._f("dateMonth")(s.id)))]),t._v(" "+t._s(t._f("dateYear")(s.id))+" ")]):e("File",{attrs:{file:t.files[s.id],"allow-selection":!0,selected:t.selection[s.id]===!0,distance:o},on:{click:t.openViewer,"select-toggled":t.onFileSelectToggle}})]}}])}),t.showAlbumCreationForm?e("NcModal",{key:"albumCreationForm",attrs:{"label-id":"new-album-form","set-return-focus":t.$refs.newAlbumButton?.$el},on:{close:function(s){t.showAlbumCreationForm=!1}}},[e("h2",{staticClass:"timeline__heading"},[t._v(" "+t._s(t.t("photos","New album"))+" ")]),e("AlbumForm",{on:{done:function(s){t.showAlbumCreationForm=!1}}})],1):t._e(),t.showAlbumPicker?e("NcModal",{key:"albumPicker",attrs:{"label-id":t.t("photos","album-picker")},on:{close:function(s){t.showAlbumPicker=!1}}},[e("AlbumPicker",{on:{"album-picked":t.addSelectionToAlbum}})],1):t._e()],1)},Gt=[],Wt=r(Qt,Jt,Gt,!1,null,"f7c95e4b");const Ce=Wt.exports;export{Ce as default}; -//# sourceMappingURL=Timeline-kxCboYpY.chunk.mjs.map diff --git a/js/index-r_e2HRW6.chunk.mjs b/js/index-CuVencPr.chunk.mjs similarity index 98% rename from js/index-r_e2HRW6.chunk.mjs rename to js/index-CuVencPr.chunk.mjs index 5edd97466..2477d4031 100644 --- a/js/index-r_e2HRW6.chunk.mjs +++ b/js/index-CuVencPr.chunk.mjs @@ -1,3 +1,3 @@ -const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=[window.OC.filePath('photos', '', 'js/Folders-BGY3OYyd.chunk.mjs'),window.OC.filePath('photos', '', 'js/icons-DIHlkdtB.chunk.mjs'),window.OC.filePath('photos', '', 'js/vue.runtime.esm-CWuAmtQL.chunk.mjs'),window.OC.filePath('photos', '', 'js/index-DySs6xMI.chunk.mjs'),window.OC.filePath('photos', '', 'js/index-C-mleKoq.chunk.mjs'),window.OC.filePath('photos', '', 'css/index-7Pwf5Eyk.chunk.css'),window.OC.filePath('photos', '', 'js/NcEmptyContent-BdKXMbxi.chunk.mjs'),window.OC.filePath('photos', '', 'js/index-DdKmqUaK-D1D-0Ag9.chunk.mjs'),window.OC.filePath('photos', '', 'js/preload-helper-Dh9HmuEY.chunk.mjs'),window.OC.filePath('photos', '', 'js/index-B5VUqMFg.chunk.mjs'),window.OC.filePath('photos', '', 'css/index-DdKmqUaK-Dbzl6yZq.chunk.css'),window.OC.filePath('photos', '', 'js/AbortControllerMixin-CQgfjju6.chunk.mjs'),window.OC.filePath('photos', '', 'js/HeaderNavigation-FnL8pqA5.chunk.mjs'),window.OC.filePath('photos', '', 'css/HeaderNavigation-DhlkEyxe.chunk.css'),window.OC.filePath('photos', '', 'js/fileFetcher-DUsQ5B5l.chunk.mjs'),window.OC.filePath('photos', '', 'css/Folders-DgYq2Jfv.chunk.css'),window.OC.filePath('photos', '', 'js/Albums-BR39dwZm.chunk.mjs'),window.OC.filePath('photos', '', 'js/CollectionCover-CNBcObse.chunk.mjs'),window.OC.filePath('photos', '', 'css/CollectionCover-B5FNrHoX.chunk.css'),window.OC.filePath('photos', '', 'js/AlbumForm-BXf1NYqI.chunk.mjs'),window.OC.filePath('photos', '', 'js/index-x9vhq81Z.chunk.mjs'),window.OC.filePath('photos', '', 'js/FetchCollectionContentMixin-Bb6WGQlU.chunk.mjs'),window.OC.filePath('photos', '', 'js/collectionFetcher-D_WT7y4k.chunk.mjs'),window.OC.filePath('photos', '', 'css/AlbumForm-DcLgc8Kq.chunk.css'),window.OC.filePath('photos', '', 'js/FetchCollectionsMixin-DxgQdf9l.chunk.mjs'),window.OC.filePath('photos', '', 'css/Albums-QyRARKSs.chunk.css'),window.OC.filePath('photos', '', 'js/AlbumContent-CUMHUfop.chunk.mjs'),window.OC.filePath('photos', '', 'js/isMobile-BnDNCp_S.chunk.mjs'),window.OC.filePath('photos', '', 'js/FetchFilesMixin-BFVnxMZ5.chunk.mjs'),window.OC.filePath('photos', '', 'js/PhotoSearch-G2t0kCpr.chunk.mjs'),window.OC.filePath('photos', '', 'js/ActionFavorite-DpzqJw3d.chunk.mjs'),window.OC.filePath('photos', '', 'js/CollectionContent-BYS0BZ_P.chunk.mjs'),window.OC.filePath('photos', '', 'js/FilesListViewer-fmnbxYl2.chunk.mjs'),window.OC.filePath('photos', '', 'css/FilesListViewer-CM6TXqIB.chunk.css'),window.OC.filePath('photos', '', 'js/File-Bfy7XiO5.chunk.mjs'),window.OC.filePath('photos', '', 'css/File-_kq3Y4AP.chunk.css'),window.OC.filePath('photos', '', 'css/CollectionContent-BABg_mlD.chunk.css'),window.OC.filePath('photos', '', 'js/PhotosPicker-BQ2OgDNA.chunk.mjs'),window.OC.filePath('photos', '', 'js/NcNoteCard-CMkwhe9U.chunk.mjs'),window.OC.filePath('photos', '', 'js/FilesByMonthMixin-BuOw3Oo-.chunk.mjs'),window.OC.filePath('photos', '', 'css/PhotosPicker-HWQNkidr.chunk.css'),window.OC.filePath('photos', '', 'css/AlbumContent-lH5pXOBy.chunk.css'),window.OC.filePath('photos', '', 'js/SharedAlbums-Co0Oj8-D.chunk.mjs'),window.OC.filePath('photos', '', 'js/NcUserBubble-W_wjP2lY-BmhJ14QN.chunk.mjs'),window.OC.filePath('photos', '', 'css/SharedAlbums-CLaQgBWT.chunk.css'),window.OC.filePath('photos', '', 'js/SharedAlbumContent-dGZlE584.chunk.mjs'),window.OC.filePath('photos', '', 'css/SharedAlbumContent-cyu-ntoD.chunk.css'),window.OC.filePath('photos', '', 'js/PublicAlbumContent-Xi2rXQ9v.chunk.mjs'),window.OC.filePath('photos', '', 'css/PublicAlbumContent-BG-QVtLp.chunk.css'),window.OC.filePath('photos', '', 'js/Places-BM8F5hF1.chunk.mjs'),window.OC.filePath('photos', '', 'css/Places-DtVgwi2x.chunk.css'),window.OC.filePath('photos', '', 'js/PlaceContent-Bu3OK_5W.chunk.mjs'),window.OC.filePath('photos', '', 'css/PlaceContent-Bea6MiIT.chunk.css'),window.OC.filePath('photos', '', 'js/Tags-BdtQZ2ye.chunk.mjs'),window.OC.filePath('photos', '', 'css/Tags-C8nWRi3F.chunk.css'),window.OC.filePath('photos', '', 'js/TagContent-DAJLwSKT.chunk.mjs'),window.OC.filePath('photos', '', 'css/TagContent-CORsz7hy.chunk.css'),window.OC.filePath('photos', '', 'js/Timeline-kxCboYpY.chunk.mjs'),window.OC.filePath('photos', '', 'js/PhotosSourceLocationsSettings-CzV450Gt.chunk.mjs'),window.OC.filePath('photos', '', 'css/PhotosSourceLocationsSettings-CubTTClc.chunk.css'),window.OC.filePath('photos', '', 'css/Timeline-_pYxtoYP.chunk.css'),window.OC.filePath('photos', '', 'js/Faces-D3dHzst0.chunk.mjs'),window.OC.filePath('photos', '', 'js/FaceCover-DVlV_jP9.chunk.mjs'),window.OC.filePath('photos', '', 'css/FaceCover-ASe6h2Km.chunk.css'),window.OC.filePath('photos', '', 'css/Faces-Ztqe-BBb.chunk.css'),window.OC.filePath('photos', '', 'js/FaceContent-DhqO53Aq.chunk.mjs'),window.OC.filePath('photos', '', 'js/FaceMergeForm-DhMwvvCj.chunk.mjs'),window.OC.filePath('photos', '', 'css/FaceMergeForm-D5bb4TMA.chunk.css'),window.OC.filePath('photos', '', 'css/FaceContent-B9ignn9g.chunk.css'),window.OC.filePath('photos', '', 'js/UnassignedFaces-DWqN_dVX.chunk.mjs'),window.OC.filePath('photos', '', 'css/UnassignedFaces-BxqjWRjB.chunk.css')])))=>i.map(i=>d[i]); -import{_ as T}from"./preload-helper-Dh9HmuEY.chunk.mjs";import{l as ft,V as se,_ as K,t as w}from"./vue.runtime.esm-CWuAmtQL.chunk.mjs";import{m as ce,v as ue}from"./index-DySs6xMI.chunk.mjs";var at={},wt;function pe(){if(wt)return at;wt=1,at.sync=function(e,r,n){var o=(n||{}).moduleName||"route";e.registerModule(o,{namespaced:!0,state:t(r.currentRoute),mutations:{ROUTE_CHANGED:function(p,m){e.state[o]=t(m.to,m.from)}}});var a=!1,i,s=e.watch(function(p){return p[o]},function(p){var m=p.fullPath;m!==i&&(i!=null&&(a=!0,r.push(p)),i=m)},{sync:!0}),c=r.afterEach(function(p,m){if(a){a=!1;return}i=p.fullPath,e.commit(o+"/ROUTE_CHANGED",{to:p,from:m})});return function(){c?.(),s?.(),e.unregisterModule(o)}};function t(e,r){var n={name:e.name,path:e.path,hash:e.hash,query:e.query,params:e.params,fullPath:e.fullPath,meta:e.meta};return r&&(n.from=t(r)),Object.freeze(n)}return at}var Pr=pe();function k(t,e){for(var r in e)t[r]=e[r];return t}var he=/[!'()*]/g,le=function(t){return"%"+t.charCodeAt(0).toString(16)},fe=/%2C/g,V=function(t){return encodeURIComponent(t).replace(he,le).replace(fe,",")};function st(t){try{return decodeURIComponent(t)}catch{}return t}function me(t,e,r){e===void 0&&(e={});var n=r||de,o;try{o=n(t||"")}catch{o={}}for(var a in e){var i=e[a];o[a]=Array.isArray(i)?i.map(_t):_t(i)}return o}var _t=function(t){return t==null||typeof t=="object"?t:String(t)};function de(t){var e={};return t=t.trim().replace(/^(\?|#|&)/,""),t&&t.split("&").forEach(function(r){var n=r.replace(/\+/g," ").split("="),o=st(n.shift()),a=n.length>0?st(n.join("=")):null;e[o]===void 0?e[o]=a:Array.isArray(e[o])?e[o].push(a):e[o]=[e[o],a]}),e}function ve(t){var e=t?Object.keys(t).map(function(r){var n=t[r];if(n===void 0)return"";if(n===null)return V(r);if(Array.isArray(n)){var o=[];return n.forEach(function(a){a!==void 0&&(a===null?o.push(V(r)):o.push(V(r)+"="+V(a)))}),o.join("&")}return V(r)+"="+V(n)}).filter(function(r){return r.length>0}).join("&"):null;return e?"?"+e:""}var J=/\/?$/;function Q(t,e,r,n){var o=n&&n.options.stringifyQuery,a=e.query||{};try{a=ct(a)}catch{}var i={name:e.name||t&&t.name,meta:t&&t.meta||{},path:e.path||"/",hash:e.hash||"",query:a,params:e.params||{},fullPath:Et(e,o),matched:t?ye(t):[]};return r&&(i.redirectedFrom=Et(r,o)),Object.freeze(i)}function ct(t){if(Array.isArray(t))return t.map(ct);if(t&&typeof t=="object"){var e={};for(var r in t)e[r]=ct(t[r]);return e}else return t}var S=Q(null,{path:"/"});function ye(t){for(var e=[];t;)e.unshift(t),t=t.parent;return e}function Et(t,e){var r=t.path,n=t.query;n===void 0&&(n={});var o=t.hash;o===void 0&&(o="");var a=e||ve;return(r||"/")+a(n)+o}function Mt(t,e,r){return e===S?t===e:e?t.path&&e.path?t.path.replace(J,"")===e.path.replace(J,"")&&(r||t.hash===e.hash&&H(t.query,e.query)):t.name&&e.name?t.name===e.name&&(r||t.hash===e.hash&&H(t.query,e.query)&&H(t.params,e.params)):!1:!1}function H(t,e){if(t===void 0&&(t={}),e===void 0&&(e={}),!t||!e)return t===e;var r=Object.keys(t).sort(),n=Object.keys(e).sort();return r.length!==n.length?!1:r.every(function(o,a){var i=t[o],s=n[a];if(s!==o)return!1;var c=e[o];return i==null||c==null?i===c:typeof i=="object"&&typeof c=="object"?H(i,c):String(i)===String(c)})}function ge(t,e){return t.path.replace(J,"/").indexOf(e.path.replace(J,"/"))===0&&(!e.hash||t.hash===e.hash)&&be(t.query,e.query)}function be(t,e){for(var r in e)if(!(r in t))return!1;return!0}function Bt(t){for(var e=0;e=0&&(e=t.slice(n),t=t.slice(0,n));var o=t.indexOf("?");return o>=0&&(r=t.slice(o+1),t=t.slice(0,o)),{path:t,query:r,hash:e}}function P(t){return t.replace(/\/(?:\s*\/)+/g,"/")}var X=Array.isArray||function(t){return Object.prototype.toString.call(t)=="[object Array]"},N=Zt,xe=mt,Re=Oe,Te=Ft,Ae=zt,ke=new RegExp(["(\\\\.)","([\\/.])?(?:(?:\\:(\\w+)(?:\\(((?:\\\\.|[^\\\\()])+)\\))?|\\(((?:\\\\.|[^\\\\()])+)\\))([+*?])?|(\\*))"].join("|"),"g");function mt(t,e){for(var r=[],n=0,o=0,a="",i=e&&e.delimiter||"/",s;(s=ke.exec(t))!=null;){var c=s[0],p=s[1],m=s.index;if(a+=t.slice(o,m),o=m+c.length,p){a+=p[1];continue}var d=t[o],v=s[2],f=s[3],u=s[4],l=s[5],h=s[6],g=s[7];a&&(r.push(a),a="");var y=v!=null&&d!=null&&d!==v,E=h==="+"||h==="*",_=h==="?"||h==="*",x=s[2]||i,R=u||l;r.push({name:f||n++,prefix:v||"",delimiter:x,optional:_,repeat:E,partial:y,asterisk:!!g,pattern:R?Le(R):g?".*":"[^"+F(x)+"]+?"})}return o1||!_.length)return _.length===0?t():t("span",{},_)}if(this.tag==="a")E.on=y,E.attrs={href:s,"aria-current":h};else{var x=Gt(this.$slots.default);if(x){x.isStatic=!1;var R=x.data=k({},x.data);R.on=R.on||{};for(var C in R.on){var O=R.on[C];C in y&&(R.on[C]=Array.isArray(O)?O:[O])}for(var M in y)M in R.on?R.on[M].push(y[M]):R.on[M]=g;var bt=x.data.attrs=k({},x.data.attrs);bt.href=s,bt["aria-current"]=h}else E.on=y}return t(this.tag,E,this.$slots.default)}};function At(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 Gt(t){if(t){for(var e,r=0;r-1&&(h.params[_]=u.params[_]);return h.path=z(y.path,h.params),v(y,h,l)}else if(h.path){h.params={};for(var x=0;x-1}function et(t,e){return tt(t)&&t._isRouter&&(e==null||t.type===e)}function jt(t,e,r){var n=function(o){o>=t.length?r():t[o]?e(t[o],function(){n(o+1)}):n(o+1)};n(0)}function We(t){return function(e,r,n){var o=!1,a=0,i=null;te(t,function(s,c,p,m){if(typeof s=="function"&&s.cid===void 0){o=!0,a++;var d=St(function(l){er(l)&&(l=l.default),s.resolved=typeof l=="function"?l:Y.extend(l),p.components[m]=l,a--,a<=0&&n()}),v=St(function(l){var h="Failed to resolve async component "+m+": "+l;i||(i=tt(l)?l:new Error(h),n(i))}),f;try{f=s(d,v)}catch(l){v(l)}if(f)if(typeof f.then=="function")f.then(d,v);else{var u=f.component;u&&typeof u.then=="function"&&u.then(d,v)}}}),o||n()}}function te(t,e){return ee(t.map(function(r){return Object.keys(r.components).map(function(n){return e(r.components[n],r.instances[n],r,n)})}))}function ee(t){return Array.prototype.concat.apply([],t)}var tr=typeof Symbol=="function"&&typeof Symbol.toStringTag=="symbol";function er(t){return t.__esModule||tr&&t[Symbol.toStringTag]==="Module"}function St(t){var e=!1;return function(){for(var r=[],n=arguments.length;n--;)r[n]=arguments[n];if(!e)return e=!0,t.apply(this,r)}}var A=function(t,e){this.router=t,this.base=rr(e),this.current=S,this.pending=null,this.ready=!1,this.readyCbs=[],this.readyErrorCbs=[],this.errorCbs=[],this.listeners=[]};A.prototype.listen=function(t){this.cb=t},A.prototype.onReady=function(t,e){this.ready?t():(this.readyCbs.push(t),e&&this.readyErrorCbs.push(e))},A.prototype.onError=function(t){this.errorCbs.push(t)},A.prototype.transitionTo=function(t,e,r){var n=this,o;try{o=this.router.match(t,this.current)}catch(i){throw this.errorCbs.forEach(function(s){s(i)}),i}var a=this.current;this.confirmTransition(o,function(){n.updateRoute(o),e&&e(o),n.ensureURL(),n.router.afterHooks.forEach(function(i){i&&i(o,a)}),n.ready||(n.ready=!0,n.readyCbs.forEach(function(i){i(o)}))},function(i){r&&r(i),i&&!n.ready&&(!et(i,$.redirected)||a!==S)&&(n.ready=!0,n.readyErrorCbs.forEach(function(s){s(i)}))})},A.prototype.confirmTransition=function(t,e,r){var n=this,o=this.current;this.pending=t;var a=function(u){!et(u)&&tt(u)&&(n.errorCbs.length?n.errorCbs.forEach(function(l){l(u)}):console.error(u)),r&&r(u)},i=t.matched.length-1,s=o.matched.length-1;if(Mt(t,o)&&i===s&&t.matched[i]===o.matched[s])return this.ensureURL(),t.hash&&L(this.router,o,t,!1),a(Je(o,t));var c=nr(this.current.matched,t.matched),p=c.updated,m=c.deactivated,d=c.activated,v=[].concat(ar(m),this.router.beforeHooks,ir(p),d.map(function(u){return u.beforeEnter}),We(d)),f=function(u,l){if(n.pending!==t)return a(Lt(o,t));try{u(t,o,function(h){h===!1?(n.ensureURL(!0),a(Qe(o,t))):tt(h)?(n.ensureURL(!0),a(h)):typeof h=="string"||typeof h=="object"&&(typeof h.path=="string"||typeof h.name=="string")?(a(Ke(o,t)),typeof h=="object"&&h.replace?n.replace(h):n.push(h)):l(h)})}catch(h){a(h)}};jt(v,f,function(){var u=sr(d),l=u.concat(n.router.resolveHooks);jt(l,f,function(){if(n.pending!==t)return a(Lt(o,t));n.pending=null,e(t),n.router.app&&n.router.app.$nextTick(function(){Bt(t)})})})},A.prototype.updateRoute=function(t){this.current=t,this.cb&&this.cb(t)},A.prototype.setupListeners=function(){},A.prototype.teardown=function(){this.listeners.forEach(function(t){t()}),this.listeners=[],this.current=S,this.pending=null};function rr(t){if(!t)if(U){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 nr(t,e){var r,n=Math.max(t.length,e.length);for(r=0;r0)){var n=this.router,o=n.options.scrollBehavior,a=j&&o;a&&this.listeners.push(Yt());var i=function(){var s=r.current,c=D(r.base);r.current===S&&c===r._startLocation||r.transitionTo(c,function(p){a&&L(n,p,s,!0)})};window.addEventListener("popstate",i),this.listeners.push(function(){window.removeEventListener("popstate",i)})}},e.prototype.go=function(r){window.history.go(r)},e.prototype.push=function(r,n,o){var a=this,i=this,s=i.current;this.transitionTo(r,function(c){W(P(a.base+c.fullPath)),L(a.router,c,s,!1),n&&n(c)},o)},e.prototype.replace=function(r,n,o){var a=this,i=this,s=i.current;this.transitionTo(r,function(c){ht(P(a.base+c.fullPath)),L(a.router,c,s,!1),n&&n(c)},o)},e.prototype.ensureURL=function(r){if(D(this.base)!==this.current.fullPath){var n=P(this.base+this.current.fullPath);r?W(n):ht(n)}},e.prototype.getCurrentLocation=function(){return D(this.base)},e}(A);function D(t){var e=window.location.pathname,r=e.toLowerCase(),n=t.toLowerCase();return t&&(r===n||r.indexOf(P(n+"/"))===0)&&(e=e.slice(t.length)),(e||"/")+window.location.search+window.location.hash}var oe=function(t){function e(r,n,o){t.call(this,r,n),!(o&&ur(this.base))&&$t()}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype.setupListeners=function(){var r=this;if(!(this.listeners.length>0)){var n=this.router,o=n.options.scrollBehavior,a=j&&o;a&&this.listeners.push(Yt());var i=function(){var c=r.current;$t()&&r.transitionTo(Z(),function(p){a&&L(r.router,p,c,!0),j||G(p.fullPath)})},s=j?"popstate":"hashchange";window.addEventListener(s,i),this.listeners.push(function(){window.removeEventListener(s,i)})}},e.prototype.push=function(r,n,o){var a=this,i=this,s=i.current;this.transitionTo(r,function(c){Vt(c.fullPath),L(a.router,c,s,!1),n&&n(c)},o)},e.prototype.replace=function(r,n,o){var a=this,i=this,s=i.current;this.transitionTo(r,function(c){G(c.fullPath),L(a.router,c,s,!1),n&&n(c)},o)},e.prototype.go=function(r){window.history.go(r)},e.prototype.ensureURL=function(r){var n=this.current.fullPath;Z()!==n&&(r?Vt(n):G(n))},e.prototype.getCurrentLocation=function(){return Z()},e}(A);function ur(t){var e=D(t);if(!/^\/#/.test(e))return window.location.replace(P(t+"/#"+e)),!0}function $t(){var t=Z();return t.charAt(0)==="/"?!0:(G("/"+t),!1)}function Z(){var t=window.location.href,e=t.indexOf("#");return e<0?"":(t=t.slice(e+1),t)}function lt(t){var e=window.location.href,r=e.indexOf("#"),n=r>=0?e.slice(0,r):e;return n+"#"+t}function Vt(t){j?W(lt(t)):window.location.hash=t}function G(t){j?ht(lt(t)):window.location.replace(lt(t))}var pr=function(t){function e(r,n){t.call(this,r,n),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(r,n,o){var a=this;this.transitionTo(r,function(i){a.stack=a.stack.slice(0,a.index+1).concat(i),a.index++,n&&n(i)},o)},e.prototype.replace=function(r,n,o){var a=this;this.transitionTo(r,function(i){a.stack=a.stack.slice(0,a.index).concat(i),n&&n(i)},o)},e.prototype.go=function(r){var n=this,o=this.index+r;if(!(o<0||o>=this.stack.length)){var a=this.stack[o];this.confirmTransition(a,function(){var i=n.current;n.index=o,n.updateRoute(a),n.router.afterHooks.forEach(function(s){s&&s(a,i)})},function(i){et(i,$.duplicated)&&(n.index=o)})}},e.prototype.getCurrentLocation=function(){var r=this.stack[this.stack.length-1];return r?r.fullPath:"/"},e.prototype.ensureURL=function(){},e}(A),b=function(t){t===void 0&&(t={}),this.app=null,this.apps=[],this.options=t,this.beforeHooks=[],this.resolveHooks=[],this.afterHooks=[],this.matcher=Ue(t.routes||[],this);var e=t.mode||"hash";switch(this.fallback=e==="history"&&!j&&t.fallback!==!1,this.fallback&&(e="hash"),U||(e="abstract"),this.mode=e,e){case"history":this.history=new ne(this,t.base);break;case"hash":this.history=new oe(this,t.base,this.fallback);break;case"abstract":this.history=new pr(this,t.base);break}},Nt={currentRoute:{configurable:!0}};b.prototype.match=function(t,e,r){return this.matcher.match(t,e,r)},Nt.currentRoute.get=function(){return this.history&&this.history.current},b.prototype.init=function(t){var e=this;if(this.apps.push(t),t.$once("hook:destroyed",function(){var a=e.apps.indexOf(t);a>-1&&e.apps.splice(a,1),e.app===t&&(e.app=e.apps[0]||null),e.app||e.history.teardown()}),!this.app){this.app=t;var r=this.history;if(r instanceof ne||r instanceof oe){var n=function(a){var i=r.current,s=e.options.scrollBehavior,c=j&&s;c&&"fullPath"in a&&L(e,a,i,!1)},o=function(a){r.setupListeners(),n(a)};r.transitionTo(r.getCurrentLocation(),o,o)}r.listen(function(a){e.apps.forEach(function(i){i._route=a})})}},b.prototype.beforeEach=function(t){return it(this.beforeHooks,t)},b.prototype.beforeResolve=function(t){return it(this.resolveHooks,t)},b.prototype.afterEach=function(t){return it(this.afterHooks,t)},b.prototype.onReady=function(t,e){this.history.onReady(t,e)},b.prototype.onError=function(t){this.history.onError(t)},b.prototype.push=function(t,e,r){var n=this;if(!e&&!r&&typeof Promise<"u")return new Promise(function(o,a){n.history.push(t,o,a)});this.history.push(t,e,r)},b.prototype.replace=function(t,e,r){var n=this;if(!e&&!r&&typeof Promise<"u")return new Promise(function(o,a){n.history.replace(t,o,a)});this.history.replace(t,e,r)},b.prototype.go=function(t){this.history.go(t)},b.prototype.back=function(){this.go(-1)},b.prototype.forward=function(){this.go(1)},b.prototype.getMatchedComponents=function(t){var e=t?t.matched?t:this.resolve(t).route:this.currentRoute;return e?[].concat.apply([],e.matched.map(function(r){return Object.keys(r.components).map(function(n){return r.components[n]})})):[]},b.prototype.resolve=function(t,e,r){e=e||this.history.current;var n=yt(t,e,r,this),o=this.match(n,e),a=o.redirectedFrom||o.fullPath,i=this.history.base,s=hr(i,a,this.mode);return{location:n,route:o,href:s,normalizedTo:n,resolved:o}},b.prototype.getRoutes=function(){return this.matcher.getRoutes()},b.prototype.addRoute=function(t,e){this.matcher.addRoute(t,e),this.history.current!==S&&this.history.transitionTo(this.history.getCurrentLocation())},b.prototype.addRoutes=function(t){this.matcher.addRoutes(t),this.history.current!==S&&this.history.transitionTo(this.history.getCurrentLocation())},Object.defineProperties(b.prototype,Nt);var ae=b;function it(t,e){return t.push(e),function(){var r=t.indexOf(e);r>-1&&t.splice(r,1)}}function hr(t,e,r){var n=r==="hash"?"#"+e:e;return t?P(t+"/"+n):n}b.install=ut,b.version="3.6.5",b.isNavigationFailure=et,b.NavigationFailureType=$,b.START_LOCATION=S,U&&window.Vue&&window.Vue.use(b);const Lr="data:image/svg+xml,%3csvg%20xmlns='http://www.w3.org/2000/svg'%20viewBox='0%200%2050%2050'%3e%3cdefs%3e%3clinearGradient%20id='placeholder__gradient'%3e%3cstop%20offset='0%25'%20stop-color='%23ededed'%3e%3canimate%20attributeName='stop-color'%20values='%23ededed;%20%23ededed;%20%23cccccc;%20%23cccccc;%20%23ededed'%20dur='2s'%20repeatCount='indefinite'/%3e%3c/stop%3e%3cstop%20offset='100%25'%20stop-color='%23cccccc'%3e%3canimate%20attributeName='stop-color'%20values='%23cccccc;%20%23ededed;%20%23ededed;%20%23cccccc;%20%23cccccc'%20dur='2s'%20repeatCount='indefinite'/%3e%3c/stop%3e%3c/linearGradient%3e%3c/defs%3e%3c/svg%3e",jr="data:image/svg+xml,%3csvg%20width='32'%20height='32'%20xmlns='http://www.w3.org/2000/svg'%20xml:space='preserve'%20style='fill-rule:evenodd;clip-rule:evenodd;stroke-linejoin:round;stroke-miterlimit:2'%3e%3cpath%20d='M5%2021c-.55%200-1.021-.196-1.412-.587A1.927%201.927%200%200%201%203%2019V5c0-.55.196-1.021.588-1.413A1.926%201.926%200%200%201%205%203h14c.55%200%201.021.196%201.413.587.391.392.587.863.587%201.413v14a1.93%201.93%200%200%201-.587%201.413A1.93%201.93%200%200%201%2019%2021H5Zm0-2h14V5H5v14Zm1-2h12l-3.75-5-3%204L9%2013l-3%204Zm-1%202V5v14Zm3.5-9a1.45%201.45%200%200%200%201.063-.437A1.45%201.45%200%200%200%2010%208.5c0-.417-.146-.771-.437-1.062A1.447%201.447%200%200%200%208.5%207c-.417%200-.771.146-1.062.438A1.443%201.443%200%200%200%207%208.5c0%20.417.146.771.438%201.063.291.291.645.437%201.062.437Z'%20style='fill-rule:nonzero'%20transform='translate(-2.665%20-2.665)%20scale(1.55497)'/%3e%3c/svg%3e",Sr="data:image/svg+xml,%3csvg%20width='32'%20height='32'%20xmlns='http://www.w3.org/2000/svg'%20xml:space='preserve'%20style='fill-rule:evenodd;clip-rule:evenodd;stroke-linejoin:round;stroke-miterlimit:2'%3e%3cpath%20d='m4%204%202%204h3L7%204h2l2%204h3l-2-4h2l2%204h3l-2-4h3c.55%200%201.021.196%201.413.587.391.392.587.863.587%201.413v12a1.93%201.93%200%200%201-.587%201.413A1.93%201.93%200%200%201%2020%2020H4c-.55%200-1.021-.196-1.412-.587A1.927%201.927%200%200%201%202%2018V6c0-.55.196-1.021.588-1.413A1.926%201.926%200%200%201%204%204Z'%20style='fill-rule:nonzero'%20transform='translate(-.804%20-.607)%20scale(1.40177)'/%3e%3c/svg%3e",It=ft("photos","systemtags",!1),lr=ft("photos","maps",!1),fr=ft("photos","recognize",!1),qt=()=>T(()=>import("./Folders-BGY3OYyd.chunk.mjs"),__vite__mapDeps([0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15]),import.meta.url),mr=()=>T(()=>import("./Albums-BR39dwZm.chunk.mjs"),__vite__mapDeps([16,1,2,3,4,5,6,17,18,12,13,19,20,21,11,22,23,24,25]),import.meta.url),dr=()=>T(()=>import("./AlbumContent-CUMHUfop.chunk.mjs"),__vite__mapDeps([26,3,2,4,5,7,8,9,10,6,27,1,28,29,11,21,22,30,19,20,23,31,32,14,33,34,35,36,37,38,39,40,12,13,41]),import.meta.url),vr=()=>T(()=>import("./SharedAlbums-Co0Oj8-D.chunk.mjs"),__vite__mapDeps([42,1,2,3,4,5,6,43,17,18,12,13,24,11,22,8,44]),import.meta.url),yr=()=>T(()=>import("./SharedAlbumContent-dGZlE584.chunk.mjs"),__vite__mapDeps([45,3,2,4,5,7,8,9,10,6,43,27,20,1,28,29,11,21,22,31,32,14,33,34,35,36,12,13,37,38,39,40,46]),import.meta.url),gr=()=>T(()=>import("./PublicAlbumContent-Xi2rXQ9v.chunk.mjs"),__vite__mapDeps([47,1,3,2,4,5,6,27,31,32,14,33,34,35,36,12,13,21,11,22,48]),import.meta.url),br=()=>T(()=>import("./Places-BM8F5hF1.chunk.mjs"),__vite__mapDeps([49,1,2,3,4,5,6,24,11,22,17,18,12,13,50]),import.meta.url),wr=()=>T(()=>import("./PlaceContent-Bu3OK_5W.chunk.mjs"),__vite__mapDeps([51,1,3,2,4,5,6,27,21,11,22,31,32,14,33,34,35,36,12,13,52]),import.meta.url),_r=()=>T(()=>import("./Tags-BdtQZ2ye.chunk.mjs"),__vite__mapDeps([53,2,3,4,5,6,1,11,54]),import.meta.url),Er=()=>T(()=>import("./TagContent-DAJLwSKT.chunk.mjs"),__vite__mapDeps([55,1,3,2,4,5,6,34,35,32,14,33,11,56]),import.meta.url),q=()=>T(()=>import("./Timeline-kxCboYpY.chunk.mjs"),__vite__mapDeps([57,1,3,2,4,5,6,27,28,29,11,39,32,14,33,34,35,19,20,21,22,23,43,24,30,12,13,58,9,8,59,60]),import.meta.url),xr=()=>T(()=>import("./Faces-D3dHzst0.chunk.mjs"),__vite__mapDeps([61,1,3,2,4,5,6,62,11,63,64]),import.meta.url),Rr=()=>T(()=>import("./FaceContent-DhqO53Aq.chunk.mjs"),__vite__mapDeps([65,1,3,2,4,5,6,28,29,11,32,14,33,34,35,62,63,66,67,68]),import.meta.url),Tr=()=>T(()=>import("./UnassignedFaces-DWqN_dVX.chunk.mjs"),__vite__mapDeps([69,1,3,2,4,5,6,28,29,11,32,14,33,34,35,62,63,66,67,70]),import.meta.url),Dt=document.title;se.use(ae);let ie=K("/apps/maps");lr||(ie=K("/settings/apps/integration/maps"));const Ut=t=>`/${Array.isArray(t)?t.join("/"):t||""}`,Ar=new ae({mode:"history",base:K("/apps/photos"),linkActiveClass:"active",routes:[{path:"/",component:q,name:"all_media",props:()=>({rootTitle:w("photos","All your media")}),meta:{rootTitle:()=>w("photos","All your media")}},{path:"/photos",component:q,name:"photos",props:()=>({rootTitle:w("photos","Photos"),mimesType:ce}),meta:{rootTitle:()=>w("photos","Photos")}},{path:"/videos",component:q,name:"videos",props:()=>({rootTitle:w("photos","Videos"),mimesType:ue}),meta:{rootTitle:()=>w("photos","Videos")}},{path:"/albums",component:mr,name:"albums",meta:{rootTitle:()=>w("photos","Albums")}},{path:"/albums/:albumName*",component:dr,name:"albumsContent",props:t=>({albumName:t.params.albumName}),meta:{rootTitle:t=>w("photos","Album {title}",{title:t.params.albumName})}},{path:"/sharedalbums",component:vr,name:"sharedAlbums",meta:{rootTitle:()=>w("photos","Shared Albums")}},{path:"/sharedalbums/:albumName*",component:yr,name:"sharedAlbumsContent",props:t=>({albumName:t.params.albumName}),meta:{rootTitle:t=>w("photos","Shared album {title}",{title:t.params.albumName})}},{path:"/public/:token",component:gr,name:"publicAlbums",props:t=>({token:t.params.token}),meta:{rootTitle:t=>w("photos","Public album {title}",{title:t.params.token})}},{path:"/places",component:br,name:"places"},{path:"/places/:placeName*",component:wr,name:"placesContent",props:t=>({placeName:t.params.placeName})},{path:"/folders/:path*",component:qt,name:"folders",props:t=>({path:Ut(t.params.path),isRoot:!t.params.path,rootTitle:w("photos","Folders")}),meta:{rootTitle:()=>w("photos","Folders")}},{path:"/shared/:path*",component:qt,name:"shared",props:t=>({path:Ut(t.params.path),isRoot:!t.params.path,rootTitle:w("photos","Shared with you"),showShared:!0}),meta:{rootTitle:()=>w("photos","Shared with you")}},{path:"/favorites",component:q,name:"favorites",props:()=>({rootTitle:w("photos","Favorites"),onlyFavorites:!0}),meta:{rootTitle:()=>w("photos","Favorites")}},{path:"/tags/",component:_r,name:"tags",redirect:It?void 0:{name:"timeline"},props:t=>({path:"",isRoot:!t.params.path,rootTitle:w("photos","Tagged photos")}),meta:{rootTitle:()=>w("photos","Tagged photos")}},{path:"/tags/:path",component:Er,name:"tagcontent",redirect:It?void 0:{name:"timeline"},props:t=>({path:`${t.params.path?t.params.path:""}`}),meta:{rootTitle:t=>w("photos","Tagged photo {title}",{title:t.params.path})}},{path:"/maps",name:"maps",beforeEnter(){window.open(ie,"_blank")}},{path:"/thisday",name:"thisday",component:q,props:()=>({rootTitle:w("photos","On this day"),onThisDay:!0}),meta:{rootTitle:()=>w("photos","On this day")}},{path:"/faces",name:"faces",component:xr,...!fr&&{beforeEnter(){const t=K("/settings/apps/installed/recognize");window.open(t,"_blank")}}},{path:"/faces/unassigned",name:"unassignedfaces",component:Tr,meta:{rootTitle:()=>w("photos","Unassigned faces")}},{path:"/faces/:faceName",name:"facecontent",component:Rr,props:t=>({rootTitle:t.params.faceName,faceName:t.params.faceName}),meta:{rootTitle:t=>w("photos","{title}'s face",{title:t.params.faceName})}}]});Ar.afterEach(t=>{const e=t.meta?.rootTitle?.(t);e?document.title=`${e} - ${Dt}`:document.title=Dt});export{Ie as L,Lr as a,Pr as b,Ar as c,jr as i,lr as m,fr as r,It as s,Sr as v}; -//# sourceMappingURL=index-r_e2HRW6.chunk.mjs.map +const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=[window.OC.filePath('photos', '', 'js/Folders-BGY3OYyd.chunk.mjs'),window.OC.filePath('photos', '', 'js/icons-DIHlkdtB.chunk.mjs'),window.OC.filePath('photos', '', 'js/vue.runtime.esm-CWuAmtQL.chunk.mjs'),window.OC.filePath('photos', '', 'js/index-DySs6xMI.chunk.mjs'),window.OC.filePath('photos', '', 'js/index-C-mleKoq.chunk.mjs'),window.OC.filePath('photos', '', 'css/index-7Pwf5Eyk.chunk.css'),window.OC.filePath('photos', '', 'js/NcEmptyContent-BdKXMbxi.chunk.mjs'),window.OC.filePath('photos', '', 'js/index-DdKmqUaK-D1D-0Ag9.chunk.mjs'),window.OC.filePath('photos', '', 'js/preload-helper-Dh9HmuEY.chunk.mjs'),window.OC.filePath('photos', '', 'js/index-B5VUqMFg.chunk.mjs'),window.OC.filePath('photos', '', 'css/index-DdKmqUaK-Dbzl6yZq.chunk.css'),window.OC.filePath('photos', '', 'js/AbortControllerMixin-CQgfjju6.chunk.mjs'),window.OC.filePath('photos', '', 'js/HeaderNavigation-FnL8pqA5.chunk.mjs'),window.OC.filePath('photos', '', 'css/HeaderNavigation-DhlkEyxe.chunk.css'),window.OC.filePath('photos', '', 'js/fileFetcher-DUsQ5B5l.chunk.mjs'),window.OC.filePath('photos', '', 'css/Folders-DgYq2Jfv.chunk.css'),window.OC.filePath('photos', '', 'js/Albums-BR39dwZm.chunk.mjs'),window.OC.filePath('photos', '', 'js/CollectionCover-CNBcObse.chunk.mjs'),window.OC.filePath('photos', '', 'css/CollectionCover-B5FNrHoX.chunk.css'),window.OC.filePath('photos', '', 'js/AlbumForm-BXf1NYqI.chunk.mjs'),window.OC.filePath('photos', '', 'js/index-x9vhq81Z.chunk.mjs'),window.OC.filePath('photos', '', 'js/FetchCollectionContentMixin-Bb6WGQlU.chunk.mjs'),window.OC.filePath('photos', '', 'js/collectionFetcher-D_WT7y4k.chunk.mjs'),window.OC.filePath('photos', '', 'css/AlbumForm-DcLgc8Kq.chunk.css'),window.OC.filePath('photos', '', 'js/FetchCollectionsMixin-DxgQdf9l.chunk.mjs'),window.OC.filePath('photos', '', 'css/Albums-QyRARKSs.chunk.css'),window.OC.filePath('photos', '', 'js/AlbumContent-CUMHUfop.chunk.mjs'),window.OC.filePath('photos', '', 'js/isMobile-BnDNCp_S.chunk.mjs'),window.OC.filePath('photos', '', 'js/FetchFilesMixin-BFVnxMZ5.chunk.mjs'),window.OC.filePath('photos', '', 'js/PhotoSearch-G2t0kCpr.chunk.mjs'),window.OC.filePath('photos', '', 'js/ActionFavorite-DpzqJw3d.chunk.mjs'),window.OC.filePath('photos', '', 'js/CollectionContent-BYS0BZ_P.chunk.mjs'),window.OC.filePath('photos', '', 'js/FilesListViewer-fmnbxYl2.chunk.mjs'),window.OC.filePath('photos', '', 'css/FilesListViewer-CM6TXqIB.chunk.css'),window.OC.filePath('photos', '', 'js/File-Bfy7XiO5.chunk.mjs'),window.OC.filePath('photos', '', 'css/File-_kq3Y4AP.chunk.css'),window.OC.filePath('photos', '', 'css/CollectionContent-BABg_mlD.chunk.css'),window.OC.filePath('photos', '', 'js/PhotosPicker-BQ2OgDNA.chunk.mjs'),window.OC.filePath('photos', '', 'js/NcNoteCard-CMkwhe9U.chunk.mjs'),window.OC.filePath('photos', '', 'js/FilesByMonthMixin-BuOw3Oo-.chunk.mjs'),window.OC.filePath('photos', '', 'css/PhotosPicker-HWQNkidr.chunk.css'),window.OC.filePath('photos', '', 'css/AlbumContent-lH5pXOBy.chunk.css'),window.OC.filePath('photos', '', 'js/SharedAlbums-CnnPnjyL.chunk.mjs'),window.OC.filePath('photos', '', 'js/NcUserBubble-W_wjP2lY-Cnkl2DNl.chunk.mjs'),window.OC.filePath('photos', '', 'css/SharedAlbums-CLaQgBWT.chunk.css'),window.OC.filePath('photos', '', 'js/SharedAlbumContent-j0yLRanA.chunk.mjs'),window.OC.filePath('photos', '', 'css/SharedAlbumContent-cyu-ntoD.chunk.css'),window.OC.filePath('photos', '', 'js/PublicAlbumContent-Xi2rXQ9v.chunk.mjs'),window.OC.filePath('photos', '', 'css/PublicAlbumContent-BG-QVtLp.chunk.css'),window.OC.filePath('photos', '', 'js/Places-BM8F5hF1.chunk.mjs'),window.OC.filePath('photos', '', 'css/Places-DtVgwi2x.chunk.css'),window.OC.filePath('photos', '', 'js/PlaceContent-Bu3OK_5W.chunk.mjs'),window.OC.filePath('photos', '', 'css/PlaceContent-Bea6MiIT.chunk.css'),window.OC.filePath('photos', '', 'js/Tags-BdtQZ2ye.chunk.mjs'),window.OC.filePath('photos', '', 'css/Tags-C8nWRi3F.chunk.css'),window.OC.filePath('photos', '', 'js/TagContent-DAJLwSKT.chunk.mjs'),window.OC.filePath('photos', '', 'css/TagContent-CORsz7hy.chunk.css'),window.OC.filePath('photos', '', 'js/Timeline-B0BPn7cp.chunk.mjs'),window.OC.filePath('photos', '', 'js/PhotosSourceLocationsSettings-CzV450Gt.chunk.mjs'),window.OC.filePath('photos', '', 'css/PhotosSourceLocationsSettings-CubTTClc.chunk.css'),window.OC.filePath('photos', '', 'css/Timeline-CxK5YMSH.chunk.css'),window.OC.filePath('photos', '', 'js/Faces-D3dHzst0.chunk.mjs'),window.OC.filePath('photos', '', 'js/FaceCover-DVlV_jP9.chunk.mjs'),window.OC.filePath('photos', '', 'css/FaceCover-ASe6h2Km.chunk.css'),window.OC.filePath('photos', '', 'css/Faces-Ztqe-BBb.chunk.css'),window.OC.filePath('photos', '', 'js/FaceContent-DhqO53Aq.chunk.mjs'),window.OC.filePath('photos', '', 'js/FaceMergeForm-DhMwvvCj.chunk.mjs'),window.OC.filePath('photos', '', 'css/FaceMergeForm-D5bb4TMA.chunk.css'),window.OC.filePath('photos', '', 'css/FaceContent-B9ignn9g.chunk.css'),window.OC.filePath('photos', '', 'js/UnassignedFaces-DWqN_dVX.chunk.mjs'),window.OC.filePath('photos', '', 'css/UnassignedFaces-BxqjWRjB.chunk.css')])))=>i.map(i=>d[i]); +import{_ as T}from"./preload-helper-Dh9HmuEY.chunk.mjs";import{l as ft,V as se,_ as K,t as w}from"./vue.runtime.esm-CWuAmtQL.chunk.mjs";import{m as ce,v as ue}from"./index-DySs6xMI.chunk.mjs";var at={},wt;function pe(){if(wt)return at;wt=1,at.sync=function(e,r,n){var o=(n||{}).moduleName||"route";e.registerModule(o,{namespaced:!0,state:t(r.currentRoute),mutations:{ROUTE_CHANGED:function(p,m){e.state[o]=t(m.to,m.from)}}});var a=!1,i,s=e.watch(function(p){return p[o]},function(p){var m=p.fullPath;m!==i&&(i!=null&&(a=!0,r.push(p)),i=m)},{sync:!0}),c=r.afterEach(function(p,m){if(a){a=!1;return}i=p.fullPath,e.commit(o+"/ROUTE_CHANGED",{to:p,from:m})});return function(){c?.(),s?.(),e.unregisterModule(o)}};function t(e,r){var n={name:e.name,path:e.path,hash:e.hash,query:e.query,params:e.params,fullPath:e.fullPath,meta:e.meta};return r&&(n.from=t(r)),Object.freeze(n)}return at}var Pr=pe();function k(t,e){for(var r in e)t[r]=e[r];return t}var he=/[!'()*]/g,le=function(t){return"%"+t.charCodeAt(0).toString(16)},fe=/%2C/g,V=function(t){return encodeURIComponent(t).replace(he,le).replace(fe,",")};function st(t){try{return decodeURIComponent(t)}catch{}return t}function me(t,e,r){e===void 0&&(e={});var n=r||de,o;try{o=n(t||"")}catch{o={}}for(var a in e){var i=e[a];o[a]=Array.isArray(i)?i.map(_t):_t(i)}return o}var _t=function(t){return t==null||typeof t=="object"?t:String(t)};function de(t){var e={};return t=t.trim().replace(/^(\?|#|&)/,""),t&&t.split("&").forEach(function(r){var n=r.replace(/\+/g," ").split("="),o=st(n.shift()),a=n.length>0?st(n.join("=")):null;e[o]===void 0?e[o]=a:Array.isArray(e[o])?e[o].push(a):e[o]=[e[o],a]}),e}function ve(t){var e=t?Object.keys(t).map(function(r){var n=t[r];if(n===void 0)return"";if(n===null)return V(r);if(Array.isArray(n)){var o=[];return n.forEach(function(a){a!==void 0&&(a===null?o.push(V(r)):o.push(V(r)+"="+V(a)))}),o.join("&")}return V(r)+"="+V(n)}).filter(function(r){return r.length>0}).join("&"):null;return e?"?"+e:""}var J=/\/?$/;function Q(t,e,r,n){var o=n&&n.options.stringifyQuery,a=e.query||{};try{a=ct(a)}catch{}var i={name:e.name||t&&t.name,meta:t&&t.meta||{},path:e.path||"/",hash:e.hash||"",query:a,params:e.params||{},fullPath:Et(e,o),matched:t?ye(t):[]};return r&&(i.redirectedFrom=Et(r,o)),Object.freeze(i)}function ct(t){if(Array.isArray(t))return t.map(ct);if(t&&typeof t=="object"){var e={};for(var r in t)e[r]=ct(t[r]);return e}else return t}var S=Q(null,{path:"/"});function ye(t){for(var e=[];t;)e.unshift(t),t=t.parent;return e}function Et(t,e){var r=t.path,n=t.query;n===void 0&&(n={});var o=t.hash;o===void 0&&(o="");var a=e||ve;return(r||"/")+a(n)+o}function Mt(t,e,r){return e===S?t===e:e?t.path&&e.path?t.path.replace(J,"")===e.path.replace(J,"")&&(r||t.hash===e.hash&&H(t.query,e.query)):t.name&&e.name?t.name===e.name&&(r||t.hash===e.hash&&H(t.query,e.query)&&H(t.params,e.params)):!1:!1}function H(t,e){if(t===void 0&&(t={}),e===void 0&&(e={}),!t||!e)return t===e;var r=Object.keys(t).sort(),n=Object.keys(e).sort();return r.length!==n.length?!1:r.every(function(o,a){var i=t[o],s=n[a];if(s!==o)return!1;var c=e[o];return i==null||c==null?i===c:typeof i=="object"&&typeof c=="object"?H(i,c):String(i)===String(c)})}function ge(t,e){return t.path.replace(J,"/").indexOf(e.path.replace(J,"/"))===0&&(!e.hash||t.hash===e.hash)&&be(t.query,e.query)}function be(t,e){for(var r in e)if(!(r in t))return!1;return!0}function Bt(t){for(var e=0;e=0&&(e=t.slice(n),t=t.slice(0,n));var o=t.indexOf("?");return o>=0&&(r=t.slice(o+1),t=t.slice(0,o)),{path:t,query:r,hash:e}}function P(t){return t.replace(/\/(?:\s*\/)+/g,"/")}var X=Array.isArray||function(t){return Object.prototype.toString.call(t)=="[object Array]"},N=Zt,xe=mt,Re=Oe,Te=Ft,Ae=zt,ke=new RegExp(["(\\\\.)","([\\/.])?(?:(?:\\:(\\w+)(?:\\(((?:\\\\.|[^\\\\()])+)\\))?|\\(((?:\\\\.|[^\\\\()])+)\\))([+*?])?|(\\*))"].join("|"),"g");function mt(t,e){for(var r=[],n=0,o=0,a="",i=e&&e.delimiter||"/",s;(s=ke.exec(t))!=null;){var c=s[0],p=s[1],m=s.index;if(a+=t.slice(o,m),o=m+c.length,p){a+=p[1];continue}var d=t[o],v=s[2],f=s[3],u=s[4],l=s[5],h=s[6],g=s[7];a&&(r.push(a),a="");var y=v!=null&&d!=null&&d!==v,E=h==="+"||h==="*",_=h==="?"||h==="*",x=s[2]||i,R=u||l;r.push({name:f||n++,prefix:v||"",delimiter:x,optional:_,repeat:E,partial:y,asterisk:!!g,pattern:R?Le(R):g?".*":"[^"+F(x)+"]+?"})}return o1||!_.length)return _.length===0?t():t("span",{},_)}if(this.tag==="a")E.on=y,E.attrs={href:s,"aria-current":h};else{var x=Gt(this.$slots.default);if(x){x.isStatic=!1;var R=x.data=k({},x.data);R.on=R.on||{};for(var C in R.on){var O=R.on[C];C in y&&(R.on[C]=Array.isArray(O)?O:[O])}for(var M in y)M in R.on?R.on[M].push(y[M]):R.on[M]=g;var bt=x.data.attrs=k({},x.data.attrs);bt.href=s,bt["aria-current"]=h}else E.on=y}return t(this.tag,E,this.$slots.default)}};function At(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 Gt(t){if(t){for(var e,r=0;r-1&&(h.params[_]=u.params[_]);return h.path=z(y.path,h.params),v(y,h,l)}else if(h.path){h.params={};for(var x=0;x-1}function et(t,e){return tt(t)&&t._isRouter&&(e==null||t.type===e)}function jt(t,e,r){var n=function(o){o>=t.length?r():t[o]?e(t[o],function(){n(o+1)}):n(o+1)};n(0)}function We(t){return function(e,r,n){var o=!1,a=0,i=null;te(t,function(s,c,p,m){if(typeof s=="function"&&s.cid===void 0){o=!0,a++;var d=St(function(l){er(l)&&(l=l.default),s.resolved=typeof l=="function"?l:Y.extend(l),p.components[m]=l,a--,a<=0&&n()}),v=St(function(l){var h="Failed to resolve async component "+m+": "+l;i||(i=tt(l)?l:new Error(h),n(i))}),f;try{f=s(d,v)}catch(l){v(l)}if(f)if(typeof f.then=="function")f.then(d,v);else{var u=f.component;u&&typeof u.then=="function"&&u.then(d,v)}}}),o||n()}}function te(t,e){return ee(t.map(function(r){return Object.keys(r.components).map(function(n){return e(r.components[n],r.instances[n],r,n)})}))}function ee(t){return Array.prototype.concat.apply([],t)}var tr=typeof Symbol=="function"&&typeof Symbol.toStringTag=="symbol";function er(t){return t.__esModule||tr&&t[Symbol.toStringTag]==="Module"}function St(t){var e=!1;return function(){for(var r=[],n=arguments.length;n--;)r[n]=arguments[n];if(!e)return e=!0,t.apply(this,r)}}var A=function(t,e){this.router=t,this.base=rr(e),this.current=S,this.pending=null,this.ready=!1,this.readyCbs=[],this.readyErrorCbs=[],this.errorCbs=[],this.listeners=[]};A.prototype.listen=function(t){this.cb=t},A.prototype.onReady=function(t,e){this.ready?t():(this.readyCbs.push(t),e&&this.readyErrorCbs.push(e))},A.prototype.onError=function(t){this.errorCbs.push(t)},A.prototype.transitionTo=function(t,e,r){var n=this,o;try{o=this.router.match(t,this.current)}catch(i){throw this.errorCbs.forEach(function(s){s(i)}),i}var a=this.current;this.confirmTransition(o,function(){n.updateRoute(o),e&&e(o),n.ensureURL(),n.router.afterHooks.forEach(function(i){i&&i(o,a)}),n.ready||(n.ready=!0,n.readyCbs.forEach(function(i){i(o)}))},function(i){r&&r(i),i&&!n.ready&&(!et(i,$.redirected)||a!==S)&&(n.ready=!0,n.readyErrorCbs.forEach(function(s){s(i)}))})},A.prototype.confirmTransition=function(t,e,r){var n=this,o=this.current;this.pending=t;var a=function(u){!et(u)&&tt(u)&&(n.errorCbs.length?n.errorCbs.forEach(function(l){l(u)}):console.error(u)),r&&r(u)},i=t.matched.length-1,s=o.matched.length-1;if(Mt(t,o)&&i===s&&t.matched[i]===o.matched[s])return this.ensureURL(),t.hash&&L(this.router,o,t,!1),a(Je(o,t));var c=nr(this.current.matched,t.matched),p=c.updated,m=c.deactivated,d=c.activated,v=[].concat(ar(m),this.router.beforeHooks,ir(p),d.map(function(u){return u.beforeEnter}),We(d)),f=function(u,l){if(n.pending!==t)return a(Lt(o,t));try{u(t,o,function(h){h===!1?(n.ensureURL(!0),a(Qe(o,t))):tt(h)?(n.ensureURL(!0),a(h)):typeof h=="string"||typeof h=="object"&&(typeof h.path=="string"||typeof h.name=="string")?(a(Ke(o,t)),typeof h=="object"&&h.replace?n.replace(h):n.push(h)):l(h)})}catch(h){a(h)}};jt(v,f,function(){var u=sr(d),l=u.concat(n.router.resolveHooks);jt(l,f,function(){if(n.pending!==t)return a(Lt(o,t));n.pending=null,e(t),n.router.app&&n.router.app.$nextTick(function(){Bt(t)})})})},A.prototype.updateRoute=function(t){this.current=t,this.cb&&this.cb(t)},A.prototype.setupListeners=function(){},A.prototype.teardown=function(){this.listeners.forEach(function(t){t()}),this.listeners=[],this.current=S,this.pending=null};function rr(t){if(!t)if(U){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 nr(t,e){var r,n=Math.max(t.length,e.length);for(r=0;r0)){var n=this.router,o=n.options.scrollBehavior,a=j&&o;a&&this.listeners.push(Yt());var i=function(){var s=r.current,c=D(r.base);r.current===S&&c===r._startLocation||r.transitionTo(c,function(p){a&&L(n,p,s,!0)})};window.addEventListener("popstate",i),this.listeners.push(function(){window.removeEventListener("popstate",i)})}},e.prototype.go=function(r){window.history.go(r)},e.prototype.push=function(r,n,o){var a=this,i=this,s=i.current;this.transitionTo(r,function(c){W(P(a.base+c.fullPath)),L(a.router,c,s,!1),n&&n(c)},o)},e.prototype.replace=function(r,n,o){var a=this,i=this,s=i.current;this.transitionTo(r,function(c){ht(P(a.base+c.fullPath)),L(a.router,c,s,!1),n&&n(c)},o)},e.prototype.ensureURL=function(r){if(D(this.base)!==this.current.fullPath){var n=P(this.base+this.current.fullPath);r?W(n):ht(n)}},e.prototype.getCurrentLocation=function(){return D(this.base)},e}(A);function D(t){var e=window.location.pathname,r=e.toLowerCase(),n=t.toLowerCase();return t&&(r===n||r.indexOf(P(n+"/"))===0)&&(e=e.slice(t.length)),(e||"/")+window.location.search+window.location.hash}var oe=function(t){function e(r,n,o){t.call(this,r,n),!(o&&ur(this.base))&&$t()}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype.setupListeners=function(){var r=this;if(!(this.listeners.length>0)){var n=this.router,o=n.options.scrollBehavior,a=j&&o;a&&this.listeners.push(Yt());var i=function(){var c=r.current;$t()&&r.transitionTo(Z(),function(p){a&&L(r.router,p,c,!0),j||G(p.fullPath)})},s=j?"popstate":"hashchange";window.addEventListener(s,i),this.listeners.push(function(){window.removeEventListener(s,i)})}},e.prototype.push=function(r,n,o){var a=this,i=this,s=i.current;this.transitionTo(r,function(c){Vt(c.fullPath),L(a.router,c,s,!1),n&&n(c)},o)},e.prototype.replace=function(r,n,o){var a=this,i=this,s=i.current;this.transitionTo(r,function(c){G(c.fullPath),L(a.router,c,s,!1),n&&n(c)},o)},e.prototype.go=function(r){window.history.go(r)},e.prototype.ensureURL=function(r){var n=this.current.fullPath;Z()!==n&&(r?Vt(n):G(n))},e.prototype.getCurrentLocation=function(){return Z()},e}(A);function ur(t){var e=D(t);if(!/^\/#/.test(e))return window.location.replace(P(t+"/#"+e)),!0}function $t(){var t=Z();return t.charAt(0)==="/"?!0:(G("/"+t),!1)}function Z(){var t=window.location.href,e=t.indexOf("#");return e<0?"":(t=t.slice(e+1),t)}function lt(t){var e=window.location.href,r=e.indexOf("#"),n=r>=0?e.slice(0,r):e;return n+"#"+t}function Vt(t){j?W(lt(t)):window.location.hash=t}function G(t){j?ht(lt(t)):window.location.replace(lt(t))}var pr=function(t){function e(r,n){t.call(this,r,n),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(r,n,o){var a=this;this.transitionTo(r,function(i){a.stack=a.stack.slice(0,a.index+1).concat(i),a.index++,n&&n(i)},o)},e.prototype.replace=function(r,n,o){var a=this;this.transitionTo(r,function(i){a.stack=a.stack.slice(0,a.index).concat(i),n&&n(i)},o)},e.prototype.go=function(r){var n=this,o=this.index+r;if(!(o<0||o>=this.stack.length)){var a=this.stack[o];this.confirmTransition(a,function(){var i=n.current;n.index=o,n.updateRoute(a),n.router.afterHooks.forEach(function(s){s&&s(a,i)})},function(i){et(i,$.duplicated)&&(n.index=o)})}},e.prototype.getCurrentLocation=function(){var r=this.stack[this.stack.length-1];return r?r.fullPath:"/"},e.prototype.ensureURL=function(){},e}(A),b=function(t){t===void 0&&(t={}),this.app=null,this.apps=[],this.options=t,this.beforeHooks=[],this.resolveHooks=[],this.afterHooks=[],this.matcher=Ue(t.routes||[],this);var e=t.mode||"hash";switch(this.fallback=e==="history"&&!j&&t.fallback!==!1,this.fallback&&(e="hash"),U||(e="abstract"),this.mode=e,e){case"history":this.history=new ne(this,t.base);break;case"hash":this.history=new oe(this,t.base,this.fallback);break;case"abstract":this.history=new pr(this,t.base);break}},Nt={currentRoute:{configurable:!0}};b.prototype.match=function(t,e,r){return this.matcher.match(t,e,r)},Nt.currentRoute.get=function(){return this.history&&this.history.current},b.prototype.init=function(t){var e=this;if(this.apps.push(t),t.$once("hook:destroyed",function(){var a=e.apps.indexOf(t);a>-1&&e.apps.splice(a,1),e.app===t&&(e.app=e.apps[0]||null),e.app||e.history.teardown()}),!this.app){this.app=t;var r=this.history;if(r instanceof ne||r instanceof oe){var n=function(a){var i=r.current,s=e.options.scrollBehavior,c=j&&s;c&&"fullPath"in a&&L(e,a,i,!1)},o=function(a){r.setupListeners(),n(a)};r.transitionTo(r.getCurrentLocation(),o,o)}r.listen(function(a){e.apps.forEach(function(i){i._route=a})})}},b.prototype.beforeEach=function(t){return it(this.beforeHooks,t)},b.prototype.beforeResolve=function(t){return it(this.resolveHooks,t)},b.prototype.afterEach=function(t){return it(this.afterHooks,t)},b.prototype.onReady=function(t,e){this.history.onReady(t,e)},b.prototype.onError=function(t){this.history.onError(t)},b.prototype.push=function(t,e,r){var n=this;if(!e&&!r&&typeof Promise<"u")return new Promise(function(o,a){n.history.push(t,o,a)});this.history.push(t,e,r)},b.prototype.replace=function(t,e,r){var n=this;if(!e&&!r&&typeof Promise<"u")return new Promise(function(o,a){n.history.replace(t,o,a)});this.history.replace(t,e,r)},b.prototype.go=function(t){this.history.go(t)},b.prototype.back=function(){this.go(-1)},b.prototype.forward=function(){this.go(1)},b.prototype.getMatchedComponents=function(t){var e=t?t.matched?t:this.resolve(t).route:this.currentRoute;return e?[].concat.apply([],e.matched.map(function(r){return Object.keys(r.components).map(function(n){return r.components[n]})})):[]},b.prototype.resolve=function(t,e,r){e=e||this.history.current;var n=yt(t,e,r,this),o=this.match(n,e),a=o.redirectedFrom||o.fullPath,i=this.history.base,s=hr(i,a,this.mode);return{location:n,route:o,href:s,normalizedTo:n,resolved:o}},b.prototype.getRoutes=function(){return this.matcher.getRoutes()},b.prototype.addRoute=function(t,e){this.matcher.addRoute(t,e),this.history.current!==S&&this.history.transitionTo(this.history.getCurrentLocation())},b.prototype.addRoutes=function(t){this.matcher.addRoutes(t),this.history.current!==S&&this.history.transitionTo(this.history.getCurrentLocation())},Object.defineProperties(b.prototype,Nt);var ae=b;function it(t,e){return t.push(e),function(){var r=t.indexOf(e);r>-1&&t.splice(r,1)}}function hr(t,e,r){var n=r==="hash"?"#"+e:e;return t?P(t+"/"+n):n}b.install=ut,b.version="3.6.5",b.isNavigationFailure=et,b.NavigationFailureType=$,b.START_LOCATION=S,U&&window.Vue&&window.Vue.use(b);const Lr="data:image/svg+xml,%3csvg%20xmlns='http://www.w3.org/2000/svg'%20viewBox='0%200%2050%2050'%3e%3cdefs%3e%3clinearGradient%20id='placeholder__gradient'%3e%3cstop%20offset='0%25'%20stop-color='%23ededed'%3e%3canimate%20attributeName='stop-color'%20values='%23ededed;%20%23ededed;%20%23cccccc;%20%23cccccc;%20%23ededed'%20dur='2s'%20repeatCount='indefinite'/%3e%3c/stop%3e%3cstop%20offset='100%25'%20stop-color='%23cccccc'%3e%3canimate%20attributeName='stop-color'%20values='%23cccccc;%20%23ededed;%20%23ededed;%20%23cccccc;%20%23cccccc'%20dur='2s'%20repeatCount='indefinite'/%3e%3c/stop%3e%3c/linearGradient%3e%3c/defs%3e%3c/svg%3e",jr="data:image/svg+xml,%3csvg%20width='32'%20height='32'%20xmlns='http://www.w3.org/2000/svg'%20xml:space='preserve'%20style='fill-rule:evenodd;clip-rule:evenodd;stroke-linejoin:round;stroke-miterlimit:2'%3e%3cpath%20d='M5%2021c-.55%200-1.021-.196-1.412-.587A1.927%201.927%200%200%201%203%2019V5c0-.55.196-1.021.588-1.413A1.926%201.926%200%200%201%205%203h14c.55%200%201.021.196%201.413.587.391.392.587.863.587%201.413v14a1.93%201.93%200%200%201-.587%201.413A1.93%201.93%200%200%201%2019%2021H5Zm0-2h14V5H5v14Zm1-2h12l-3.75-5-3%204L9%2013l-3%204Zm-1%202V5v14Zm3.5-9a1.45%201.45%200%200%200%201.063-.437A1.45%201.45%200%200%200%2010%208.5c0-.417-.146-.771-.437-1.062A1.447%201.447%200%200%200%208.5%207c-.417%200-.771.146-1.062.438A1.443%201.443%200%200%200%207%208.5c0%20.417.146.771.438%201.063.291.291.645.437%201.062.437Z'%20style='fill-rule:nonzero'%20transform='translate(-2.665%20-2.665)%20scale(1.55497)'/%3e%3c/svg%3e",Sr="data:image/svg+xml,%3csvg%20width='32'%20height='32'%20xmlns='http://www.w3.org/2000/svg'%20xml:space='preserve'%20style='fill-rule:evenodd;clip-rule:evenodd;stroke-linejoin:round;stroke-miterlimit:2'%3e%3cpath%20d='m4%204%202%204h3L7%204h2l2%204h3l-2-4h2l2%204h3l-2-4h3c.55%200%201.021.196%201.413.587.391.392.587.863.587%201.413v12a1.93%201.93%200%200%201-.587%201.413A1.93%201.93%200%200%201%2020%2020H4c-.55%200-1.021-.196-1.412-.587A1.927%201.927%200%200%201%202%2018V6c0-.55.196-1.021.588-1.413A1.926%201.926%200%200%201%204%204Z'%20style='fill-rule:nonzero'%20transform='translate(-.804%20-.607)%20scale(1.40177)'/%3e%3c/svg%3e",It=ft("photos","systemtags",!1),lr=ft("photos","maps",!1),fr=ft("photos","recognize",!1),qt=()=>T(()=>import("./Folders-BGY3OYyd.chunk.mjs"),__vite__mapDeps([0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15]),import.meta.url),mr=()=>T(()=>import("./Albums-BR39dwZm.chunk.mjs"),__vite__mapDeps([16,1,2,3,4,5,6,17,18,12,13,19,20,21,11,22,23,24,25]),import.meta.url),dr=()=>T(()=>import("./AlbumContent-CUMHUfop.chunk.mjs"),__vite__mapDeps([26,3,2,4,5,7,8,9,10,6,27,1,28,29,11,21,22,30,19,20,23,31,32,14,33,34,35,36,37,38,39,40,12,13,41]),import.meta.url),vr=()=>T(()=>import("./SharedAlbums-CnnPnjyL.chunk.mjs"),__vite__mapDeps([42,1,2,3,4,5,6,43,17,18,12,13,24,11,22,8,44]),import.meta.url),yr=()=>T(()=>import("./SharedAlbumContent-j0yLRanA.chunk.mjs"),__vite__mapDeps([45,3,2,4,5,7,8,9,10,6,43,27,20,1,28,29,11,21,22,31,32,14,33,34,35,36,12,13,37,38,39,40,46]),import.meta.url),gr=()=>T(()=>import("./PublicAlbumContent-Xi2rXQ9v.chunk.mjs"),__vite__mapDeps([47,1,3,2,4,5,6,27,31,32,14,33,34,35,36,12,13,21,11,22,48]),import.meta.url),br=()=>T(()=>import("./Places-BM8F5hF1.chunk.mjs"),__vite__mapDeps([49,1,2,3,4,5,6,24,11,22,17,18,12,13,50]),import.meta.url),wr=()=>T(()=>import("./PlaceContent-Bu3OK_5W.chunk.mjs"),__vite__mapDeps([51,1,3,2,4,5,6,27,21,11,22,31,32,14,33,34,35,36,12,13,52]),import.meta.url),_r=()=>T(()=>import("./Tags-BdtQZ2ye.chunk.mjs"),__vite__mapDeps([53,2,3,4,5,6,1,11,54]),import.meta.url),Er=()=>T(()=>import("./TagContent-DAJLwSKT.chunk.mjs"),__vite__mapDeps([55,1,3,2,4,5,6,34,35,32,14,33,11,56]),import.meta.url),q=()=>T(()=>import("./Timeline-B0BPn7cp.chunk.mjs"),__vite__mapDeps([57,1,3,2,4,5,6,27,28,29,11,39,32,14,33,34,35,19,20,21,22,23,43,24,30,12,13,58,9,8,59,60]),import.meta.url),xr=()=>T(()=>import("./Faces-D3dHzst0.chunk.mjs"),__vite__mapDeps([61,1,3,2,4,5,6,62,11,63,64]),import.meta.url),Rr=()=>T(()=>import("./FaceContent-DhqO53Aq.chunk.mjs"),__vite__mapDeps([65,1,3,2,4,5,6,28,29,11,32,14,33,34,35,62,63,66,67,68]),import.meta.url),Tr=()=>T(()=>import("./UnassignedFaces-DWqN_dVX.chunk.mjs"),__vite__mapDeps([69,1,3,2,4,5,6,28,29,11,32,14,33,34,35,62,63,66,67,70]),import.meta.url),Dt=document.title;se.use(ae);let ie=K("/apps/maps");lr||(ie=K("/settings/apps/integration/maps"));const Ut=t=>`/${Array.isArray(t)?t.join("/"):t||""}`,Ar=new ae({mode:"history",base:K("/apps/photos"),linkActiveClass:"active",routes:[{path:"/",component:q,name:"all_media",props:()=>({rootTitle:w("photos","All your media")}),meta:{rootTitle:()=>w("photos","All your media")}},{path:"/photos",component:q,name:"photos",props:()=>({rootTitle:w("photos","Photos"),mimesType:ce}),meta:{rootTitle:()=>w("photos","Photos")}},{path:"/videos",component:q,name:"videos",props:()=>({rootTitle:w("photos","Videos"),mimesType:ue}),meta:{rootTitle:()=>w("photos","Videos")}},{path:"/albums",component:mr,name:"albums",meta:{rootTitle:()=>w("photos","Albums")}},{path:"/albums/:albumName*",component:dr,name:"albumsContent",props:t=>({albumName:t.params.albumName}),meta:{rootTitle:t=>w("photos","Album {title}",{title:t.params.albumName})}},{path:"/sharedalbums",component:vr,name:"sharedAlbums",meta:{rootTitle:()=>w("photos","Shared Albums")}},{path:"/sharedalbums/:albumName*",component:yr,name:"sharedAlbumsContent",props:t=>({albumName:t.params.albumName}),meta:{rootTitle:t=>w("photos","Shared album {title}",{title:t.params.albumName})}},{path:"/public/:token",component:gr,name:"publicAlbums",props:t=>({token:t.params.token}),meta:{rootTitle:t=>w("photos","Public album {title}",{title:t.params.token})}},{path:"/places",component:br,name:"places"},{path:"/places/:placeName*",component:wr,name:"placesContent",props:t=>({placeName:t.params.placeName})},{path:"/folders/:path*",component:qt,name:"folders",props:t=>({path:Ut(t.params.path),isRoot:!t.params.path,rootTitle:w("photos","Folders")}),meta:{rootTitle:()=>w("photos","Folders")}},{path:"/shared/:path*",component:qt,name:"shared",props:t=>({path:Ut(t.params.path),isRoot:!t.params.path,rootTitle:w("photos","Shared with you"),showShared:!0}),meta:{rootTitle:()=>w("photos","Shared with you")}},{path:"/favorites",component:q,name:"favorites",props:()=>({rootTitle:w("photos","Favorites"),onlyFavorites:!0}),meta:{rootTitle:()=>w("photos","Favorites")}},{path:"/tags/",component:_r,name:"tags",redirect:It?void 0:{name:"timeline"},props:t=>({path:"",isRoot:!t.params.path,rootTitle:w("photos","Tagged photos")}),meta:{rootTitle:()=>w("photos","Tagged photos")}},{path:"/tags/:path",component:Er,name:"tagcontent",redirect:It?void 0:{name:"timeline"},props:t=>({path:`${t.params.path?t.params.path:""}`}),meta:{rootTitle:t=>w("photos","Tagged photo {title}",{title:t.params.path})}},{path:"/maps",name:"maps",beforeEnter(){window.open(ie,"_blank")}},{path:"/thisday",name:"thisday",component:q,props:()=>({rootTitle:w("photos","On this day"),onThisDay:!0}),meta:{rootTitle:()=>w("photos","On this day")}},{path:"/faces",name:"faces",component:xr,...!fr&&{beforeEnter(){const t=K("/settings/apps/installed/recognize");window.open(t,"_blank")}}},{path:"/faces/unassigned",name:"unassignedfaces",component:Tr,meta:{rootTitle:()=>w("photos","Unassigned faces")}},{path:"/faces/:faceName",name:"facecontent",component:Rr,props:t=>({rootTitle:t.params.faceName,faceName:t.params.faceName}),meta:{rootTitle:t=>w("photos","{title}'s face",{title:t.params.faceName})}}]});Ar.afterEach(t=>{const e=t.meta?.rootTitle?.(t);e?document.title=`${e} - ${Dt}`:document.title=Dt});export{Ie as L,Lr as a,Pr as b,Ar as c,jr as i,lr as m,fr as r,It as s,Sr as v}; +//# sourceMappingURL=index-CuVencPr.chunk.mjs.map diff --git a/js/index-r_e2HRW6.chunk.mjs.license b/js/index-CuVencPr.chunk.mjs.license similarity index 100% rename from js/index-r_e2HRW6.chunk.mjs.license rename to js/index-CuVencPr.chunk.mjs.license diff --git a/js/index-r_e2HRW6.chunk.mjs.map b/js/index-CuVencPr.chunk.mjs.map similarity index 99% rename from js/index-r_e2HRW6.chunk.mjs.map rename to js/index-CuVencPr.chunk.mjs.map index bc741fdaa..86718122a 100644 --- a/js/index-r_e2HRW6.chunk.mjs.map +++ b/js/index-CuVencPr.chunk.mjs.map @@ -1 +1 @@ -{"version":3,"mappings":"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","names":["vuexRouterSync","store","router","options","moduleName","cloneRoute","state","transition","isTimeTraveling","currentPath","storeUnwatch","route","fullPath","afterEachUnHook","to","from","clone","extend","a","b","key","encodeReserveRE","encodeReserveReplacer","c","commaRE","encode","str","decode","resolveQuery","query","extraQuery","_parseQuery","parse","parseQuery","parsedQuery","value","castQueryParamValue","res","param","parts","val","stringifyQuery","obj","result","val2","x","trailingSlashRE","createRoute","record","location","redirectedFrom","getFullPath","formatMatch","START","ref","_stringifyQuery","path","hash","stringify","isSameRoute","onlyPath","isObjectEqual","aKeys","bKeys","i","aVal","bKey","bVal","isIncludedRoute","current","target","queryIncludes","handleRouteEntered","name","instance","cbs","i$1","View","_","props","children","parent","data","h","cache","depth","inactive","vnodeData","cachedData","cachedComponent","fillPropsinData","matched","component","vm","vnode","configProps","propsToPass","resolveProps","attrs","config","resolvePath","relative","base","append","firstChar","stack","segments","segment","parsePath","hashIndex","queryIndex","cleanPath","isarray","arr","pathToRegexp_1","pathToRegexp","parse_1","compile_1","compile","tokensToFunction_1","tokensToFunction","tokensToRegExp_1","tokensToRegExp","PATH_REGEXP","tokens","index","defaultDelimiter","m","escaped","offset","next","prefix","capture","group","modifier","asterisk","partial","repeat","optional","delimiter","pattern","escapeGroup","escapeString","encodeURIComponentPretty","encodeAsterisk","matches","flags","opts","token","j","attachKeys","re","keys","regexpToRegexp","groups","arrayToRegexp","regexp","stringToRegexp","strict","end","endsWithDelimiter","regexpCompileCache","fillParams","params","routeMsg","filler","normalizeLocation","raw","params$1","rawPath","parsedPath","basePath","toTypes","eventTypes","noop","Link","this$1$1","href","classes","globalActiveClass","globalExactActiveClass","activeClassFallback","exactActiveClassFallback","activeClass","exactActiveClass","compareTarget","ariaCurrentValue","handler","e","guardEvent","on","scopedSlot","findAnchor","aData","event","handler$1","event$1","aAttrs","child","_Vue","install","Vue","isDef","v","registerInstance","callVal","strats","inBrowser","createRouteMap","routes","oldPathList","oldPathMap","oldNameMap","parentRoute","pathList","pathMap","nameMap","addRouteRecord","l","matchAs","pathToRegexpOptions","normalizedPath","normalizePath","compileRouteRegex","childMatchAs","aliases","alias","aliasRoute","regex","createMatcher","addRoutes","addRoute","parentOrRoute","getRoutes","match","currentRoute","_createRoute","paramNames","record$1","matchRoute","redirect","originalRedirect","resolveRecordPath","resolvedPath","aliasedPath","aliasedMatch","aliasedRecord","len","Time","genStateKey","_key","getStateKey","setStateKey","positionStore","setupScroll","protocolAndPath","absolutePath","stateCopy","handlePopState","handleScroll","isPop","behavior","position","getScrollPosition","shouldScroll","scrollToPosition","err","saveScrollPosition","getElementPosition","el","docEl","docRect","elRect","isValidPosition","isNumber","normalizePosition","normalizeOffset","hashStartsWithNumberRE","isObject","supportsPushState","ua","pushState","url","replace","history","replaceState","NavigationFailureType","createNavigationRedirectedError","createRouterError","stringifyRoute","createNavigationDuplicatedError","error","createNavigationCancelledError","createNavigationAbortedError","type","message","propertiesToLog","isError","isNavigationFailure","errorType","runQueue","queue","fn","cb","step","resolveAsyncComponents","hasAsync","pending","flatMapComponents","def","resolve","once","resolvedDef","isESModule","reject","reason","msg","comp","flatten","hasSymbol","called","args","History","normalizeBase","errorCb","onComplete","onAbort","prev","hook","abort","lastRouteIndex","lastCurrentIndex","resolveQueue","updated","deactivated","activated","extractLeaveGuards","extractUpdateHooks","iterator","enterGuards","extractEnterGuards","cleanupListener","baseEl","max","extractGuards","records","bind","reverse","guards","guard","extractGuard","bindGuard","bindEnterGuard","HTML5History","getLocation","expectScroll","supportsScroll","handleRoutingEvent","n","fromRoute","push","pathLowerCase","baseLowerCase","HashHistory","fallback","checkFallback","ensureSlash","getHash","replaceHash","eventType","pushHash","getUrl","AbstractHistory","targetIndex","VueRouter","mode","prototypeAccessors","app","handleInitialScroll","routeOrError","setupListeners","registerHook","createHref","VueRouter$1","list","svgplaceholder","imgplaceholder","videoplaceholder","systemtags","loadState","maps","recognize","Folders","__vitePreload","Albums","AlbumContent","SharedAlbums","SharedAlbumContent","PublicAlbumContent","Places","PlaceContent","Tags","TagContent","Timeline","Faces","FaceContent","UnassignedFaces","baseTitle","Router","mapsPath","generateUrl","isMapsInstalled","parsePathParams","t","imageMimes","videoMimes","areTagsInstalled","isRecognizeInstalled","recognizeInstallLink","rootTitle"],"ignoreList":[0,1],"sources":["../node_modules/vuex-router-sync/index.js","../node_modules/vue-router/dist/vue-router.esm.js","../src/assets/file-placeholder.svg","../src/assets/image.svg","../src/assets/video.svg","../src/services/AreTagsInstalled.ts","../src/services/IsMapsInstalled.ts","../src/services/IsRecognizeInstalled.ts","../src/router/index.ts"],"sourcesContent":["exports.sync = function (store, router, options) {\n var moduleName = (options || {}).moduleName || 'route'\n\n store.registerModule(moduleName, {\n namespaced: true,\n state: cloneRoute(router.currentRoute),\n mutations: {\n 'ROUTE_CHANGED': function ROUTE_CHANGED (state, transition) {\n store.state[moduleName] = cloneRoute(transition.to, transition.from)\n }\n }\n })\n\n var isTimeTraveling = false\n var currentPath\n\n // sync router on store change\n var storeUnwatch = store.watch(\n function (state) { return state[moduleName]; },\n function (route) {\n var fullPath = route.fullPath;\n if (fullPath === currentPath) {\n return\n }\n if (currentPath != null) {\n isTimeTraveling = true\n router.push(route)\n }\n currentPath = fullPath\n },\n { sync: true }\n )\n\n // sync store on router navigation\n var afterEachUnHook = router.afterEach(function (to, from) {\n if (isTimeTraveling) {\n isTimeTraveling = false\n return\n }\n currentPath = to.fullPath\n store.commit(moduleName + '/ROUTE_CHANGED', { to: to, from: from })\n })\n\n return function unsync () {\n // On unsync, remove router hook\n if (afterEachUnHook != null) {\n afterEachUnHook()\n }\n\n // On unsync, remove store watch\n if (storeUnwatch != null) {\n storeUnwatch()\n }\n\n // On unsync, unregister Module with store\n store.unregisterModule(moduleName)\n }\n}\n\nfunction cloneRoute (to, from) {\n var clone = {\n name: to.name,\n path: to.path,\n hash: to.hash,\n query: to.query,\n params: to.params,\n fullPath: to.fullPath,\n meta: to.meta\n }\n if (from) {\n clone.from = cloneRoute(from)\n }\n return Object.freeze(clone)\n}\n\n","/*!\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","export default \"data:image/svg+xml,%3csvg%20xmlns='http://www.w3.org/2000/svg'%20viewBox='0%200%2050%2050'%3e%3cdefs%3e%3clinearGradient%20id='placeholder__gradient'%3e%3cstop%20offset='0%25'%20stop-color='%23ededed'%3e%3canimate%20attributeName='stop-color'%20values='%23ededed;%20%23ededed;%20%23cccccc;%20%23cccccc;%20%23ededed'%20dur='2s'%20repeatCount='indefinite'/%3e%3c/stop%3e%3cstop%20offset='100%25'%20stop-color='%23cccccc'%3e%3canimate%20attributeName='stop-color'%20values='%23cccccc;%20%23ededed;%20%23ededed;%20%23cccccc;%20%23cccccc'%20dur='2s'%20repeatCount='indefinite'/%3e%3c/stop%3e%3c/linearGradient%3e%3c/defs%3e%3c/svg%3e\"","export default \"data:image/svg+xml,%3csvg%20width='32'%20height='32'%20xmlns='http://www.w3.org/2000/svg'%20xml:space='preserve'%20style='fill-rule:evenodd;clip-rule:evenodd;stroke-linejoin:round;stroke-miterlimit:2'%3e%3cpath%20d='M5%2021c-.55%200-1.021-.196-1.412-.587A1.927%201.927%200%200%201%203%2019V5c0-.55.196-1.021.588-1.413A1.926%201.926%200%200%201%205%203h14c.55%200%201.021.196%201.413.587.391.392.587.863.587%201.413v14a1.93%201.93%200%200%201-.587%201.413A1.93%201.93%200%200%201%2019%2021H5Zm0-2h14V5H5v14Zm1-2h12l-3.75-5-3%204L9%2013l-3%204Zm-1%202V5v14Zm3.5-9a1.45%201.45%200%200%200%201.063-.437A1.45%201.45%200%200%200%2010%208.5c0-.417-.146-.771-.437-1.062A1.447%201.447%200%200%200%208.5%207c-.417%200-.771.146-1.062.438A1.443%201.443%200%200%200%207%208.5c0%20.417.146.771.438%201.063.291.291.645.437%201.062.437Z'%20style='fill-rule:nonzero'%20transform='translate(-2.665%20-2.665)%20scale(1.55497)'/%3e%3c/svg%3e\"","export default \"data:image/svg+xml,%3csvg%20width='32'%20height='32'%20xmlns='http://www.w3.org/2000/svg'%20xml:space='preserve'%20style='fill-rule:evenodd;clip-rule:evenodd;stroke-linejoin:round;stroke-miterlimit:2'%3e%3cpath%20d='m4%204%202%204h3L7%204h2l2%204h3l-2-4h2l2%204h3l-2-4h3c.55%200%201.021.196%201.413.587.391.392.587.863.587%201.413v12a1.93%201.93%200%200%201-.587%201.413A1.93%201.93%200%200%201%2020%2020H4c-.55%200-1.021-.196-1.412-.587A1.927%201.927%200%200%201%202%2018V6c0-.55.196-1.021.588-1.413A1.926%201.926%200%200%201%204%204Z'%20style='fill-rule:nonzero'%20transform='translate(-.804%20-.607)%20scale(1.40177)'/%3e%3c/svg%3e\"","/**\n * SPDX-FileCopyrightText: 2020 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport { loadState } from '@nextcloud/initial-state'\n\nconst systemtags = loadState('photos', 'systemtags', false) as boolean\nexport default systemtags\n","/**\n * SPDX-FileCopyrightText: 2018 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport { loadState } from '@nextcloud/initial-state'\n\nconst maps = loadState('photos', 'maps', false) as boolean\nexport default maps\n","/**\n * SPDX-FileCopyrightText: 2018 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport { loadState } from '@nextcloud/initial-state'\n\nconst recognize = loadState('photos', 'recognize', false) as boolean\nexport default recognize\n","/**\n * SPDX-FileCopyrightText: 2018 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport { generateUrl } from '@nextcloud/router'\nimport Router from 'vue-router'\nimport Vue from 'vue'\n\nimport { t } from '@nextcloud/l10n'\n\nimport isMapsInstalled from '../services/IsMapsInstalled.js'\nimport areTagsInstalled from '../services/AreTagsInstalled.js'\nimport { imageMimes, videoMimes } from '../services/AllowedMimes.js'\n\nimport isRecognizeInstalled from '../services/IsRecognizeInstalled.js'\n\nconst Folders = () => import('../views/Folders.vue')\nconst Albums = () => import('../views/Albums.vue')\nconst AlbumContent = () => import('../views/AlbumContent.vue')\nconst SharedAlbums = () => import('../views/SharedAlbums.vue')\nconst SharedAlbumContent = () => import('../views/SharedAlbumContent.vue')\nconst PublicAlbumContent = () => import('../views/PublicAlbumContent.vue')\nconst Places = () => import('../views/Places.vue')\nconst PlaceContent = () => import('../views/PlaceContent.vue')\nconst Tags = () => import('../views/Tags.vue')\nconst TagContent = () => import('../views/TagContent.vue')\nconst Timeline = () => import('../views/Timeline.vue')\nconst Faces = () => import('../views/Faces.vue')\nconst FaceContent = () => import('../views/FaceContent.vue')\n\nconst UnassignedFaces = () => import('../views/UnassignedFaces.vue')\n\nconst baseTitle = document.title\n\nVue.use(Router)\n\nlet mapsPath = generateUrl('/apps/maps')\nif (!isMapsInstalled) {\n\tmapsPath = generateUrl('/settings/apps/integration/maps')\n}\n\n/**\n * Parse the path of a route : join the elements of the array and return a single string with slashes\n * + always lead current path with a slash\n */\nconst parsePathParams = (path: string|string[]): string => {\n\treturn `/${Array.isArray(path) ? path.join('/') : path || ''}`\n}\n\nconst router = new Router({\n\tmode: 'history',\n\t// if index.php is in the url AND we got this far, then it's working:\n\t// let's keep using index.php in the url\n\tbase: generateUrl('/apps/photos'),\n\tlinkActiveClass: 'active',\n\troutes: [\n\t\t{\n\t\t\tpath: '/',\n\t\t\tcomponent: Timeline,\n\t\t\tname: 'all_media',\n\t\t\tprops: () => ({\n\t\t\t\trootTitle: t('photos', 'All your media'),\n\t\t\t}),\n\t\t\tmeta: {\n\t\t\t\trootTitle: () => {\n\t\t\t\t\treturn t('photos', 'All your media')\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tpath: '/photos',\n\t\t\tcomponent: Timeline,\n\t\t\tname: 'photos',\n\t\t\tprops: () => ({\n\t\t\t\trootTitle: t('photos', 'Photos'),\n\t\t\t\tmimesType: imageMimes,\n\t\t\t}),\n\t\t\tmeta: {\n\t\t\t\trootTitle: () => {\n\t\t\t\t\treturn t('photos', 'Photos')\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tpath: '/videos',\n\t\t\tcomponent: Timeline,\n\t\t\tname: 'videos',\n\t\t\tprops: () => ({\n\t\t\t\trootTitle: t('photos', 'Videos'),\n\t\t\t\tmimesType: videoMimes,\n\t\t\t}),\n\t\t\tmeta: {\n\t\t\t\trootTitle: () => {\n\t\t\t\t\treturn t('photos', 'Videos')\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tpath: '/albums',\n\t\t\tcomponent: Albums,\n\t\t\tname: 'albums',\n\t\t\tmeta: {\n\t\t\t\trootTitle: () => {\n\t\t\t\t\treturn t('photos', 'Albums')\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tpath: '/albums/:albumName*',\n\t\t\tcomponent: AlbumContent,\n\t\t\tname: 'albumsContent',\n\t\t\tprops: route => ({\n\t\t\t\talbumName: route.params.albumName,\n\t\t\t}),\n\t\t\tmeta: {\n\t\t\t\trootTitle: (to) => {\n\t\t\t\t\treturn t('photos', 'Album {title}', { title: to.params.albumName })\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tpath: '/sharedalbums',\n\t\t\tcomponent: SharedAlbums,\n\t\t\tname: 'sharedAlbums',\n\t\t\tmeta: {\n\t\t\t\trootTitle: () => {\n\t\t\t\t\treturn t('photos', 'Shared Albums')\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tpath: '/sharedalbums/:albumName*',\n\t\t\tcomponent: SharedAlbumContent,\n\t\t\tname: 'sharedAlbumsContent',\n\t\t\tprops: route => ({\n\t\t\t\talbumName: route.params.albumName,\n\t\t\t}),\n\t\t\tmeta: {\n\t\t\t\trootTitle: (to) => {\n\t\t\t\t\treturn t('photos', 'Shared album {title}', { title: to.params.albumName })\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tpath: '/public/:token',\n\t\t\tcomponent: PublicAlbumContent,\n\t\t\tname: 'publicAlbums',\n\t\t\tprops: route => ({\n\t\t\t\ttoken: route.params.token,\n\t\t\t}),\n\t\t\tmeta: {\n\t\t\t\trootTitle: (to) => {\n\t\t\t\t\treturn t('photos', 'Public album {title}', { title: to.params.token })\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tpath: '/places',\n\t\t\tcomponent: Places,\n\t\t\tname: 'places',\n\t\t},\n\t\t{\n\t\t\tpath: '/places/:placeName*',\n\t\t\tcomponent: PlaceContent,\n\t\t\tname: 'placesContent',\n\t\t\tprops: route => ({\n\t\t\t\tplaceName: route.params.placeName,\n\t\t\t}),\n\t\t},\n\t\t{\n\t\t\tpath: '/folders/:path*',\n\t\t\tcomponent: Folders,\n\t\t\tname: 'folders',\n\t\t\tprops: route => ({\n\t\t\t\tpath: parsePathParams(route.params.path),\n\t\t\t\t// if path is empty\n\t\t\t\tisRoot: !route.params.path,\n\t\t\t\trootTitle: t('photos', 'Folders'),\n\t\t\t}),\n\t\t\tmeta: {\n\t\t\t\trootTitle: () => {\n\t\t\t\t\treturn t('photos', 'Folders')\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tpath: '/shared/:path*',\n\t\t\tcomponent: Folders,\n\t\t\tname: 'shared',\n\t\t\tprops: route => ({\n\t\t\t\tpath: parsePathParams(route.params.path),\n\t\t\t\t// if path is empty\n\t\t\t\tisRoot: !route.params.path,\n\t\t\t\trootTitle: t('photos', 'Shared with you'),\n\t\t\t\tshowShared: true,\n\t\t\t}),\n\t\t\tmeta: {\n\t\t\t\trootTitle: () => {\n\t\t\t\t\treturn t('photos', 'Shared with you')\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tpath: '/favorites',\n\t\t\tcomponent: Timeline,\n\t\t\tname: 'favorites',\n\t\t\tprops: () => ({\n\t\t\t\trootTitle: t('photos', 'Favorites'),\n\t\t\t\tonlyFavorites: true,\n\t\t\t}),\n\t\t\tmeta: {\n\t\t\t\trootTitle: () => {\n\t\t\t\t\treturn t('photos', 'Favorites')\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tpath: '/tags/',\n\t\t\tcomponent: Tags,\n\t\t\tname: 'tags',\n\t\t\tredirect: !areTagsInstalled ? { name: 'timeline' } : undefined,\n\t\t\tprops: route => ({\n\t\t\t\tpath: '',\n\t\t\t\tisRoot: !route.params.path,\n\t\t\t\trootTitle: t('photos', 'Tagged photos'),\n\t\t\t}),\n\t\t\tmeta: {\n\t\t\t\trootTitle: () => {\n\t\t\t\t\treturn t('photos', 'Tagged photos')\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tpath: '/tags/:path',\n\t\t\tcomponent: TagContent,\n\t\t\tname: 'tagcontent',\n\t\t\tredirect: !areTagsInstalled ? { name: 'timeline' } : undefined,\n\t\t\tprops: route => ({\n\t\t\t\tpath: `${route.params.path ? route.params.path : ''}`,\n\t\t\t}),\n\t\t\tmeta: {\n\t\t\t\trootTitle: (to) => {\n\t\t\t\t\treturn t('photos', 'Tagged photo {title}', { title: to.params.path })\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tpath: '/maps',\n\t\t\tname: 'maps',\n\t\t\t// router-link doesn't support external url, let's force the redirect\n\t\t\tbeforeEnter() {\n\t\t\t\twindow.open(mapsPath, '_blank')\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tpath: '/thisday',\n\t\t\tname: 'thisday',\n\t\t\tcomponent: Timeline,\n\t\t\tprops: () => ({\n\t\t\t\trootTitle: t('photos', 'On this day'),\n\t\t\t\tonThisDay: true,\n\t\t\t}),\n\t\t\tmeta: {\n\t\t\t\trootTitle: () => {\n\t\t\t\t\treturn t('photos', 'On this day')\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tpath: '/faces',\n\t\t\tname: 'faces',\n\t\t\tcomponent: Faces,\n\t\t\t...((!isRecognizeInstalled) && {\n\t\t\t\tbeforeEnter() {\n\t\t\t\t\tconst recognizeInstallLink = generateUrl('/settings/apps/installed/recognize')\n\t\t\t\t\twindow.open(recognizeInstallLink, '_blank')\n\t\t\t\t},\n\t\t\t}),\n\t\t},\n\t\t{\n\t\t\tpath: '/faces/unassigned',\n\t\t\tname: 'unassignedfaces',\n\t\t\tcomponent: UnassignedFaces,\n\t\t\tmeta: {\n\t\t\t\trootTitle: () => {\n\t\t\t\t\treturn t('photos', 'Unassigned faces')\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tpath: '/faces/:faceName',\n\t\t\tname: 'facecontent',\n\t\t\tcomponent: FaceContent,\n\t\t\tprops: route => ({\n\t\t\t\trootTitle: route.params.faceName,\n\t\t\t\tfaceName: route.params.faceName,\n\t\t\t}),\n\t\t\tmeta: {\n\t\t\t\trootTitle: (to) => {\n\t\t\t\t\treturn t('photos', \"{title}'s face\", { title: to.params.faceName })\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t],\n})\n\nrouter.afterEach((to) => {\n\tconst rootTitle = to.meta?.rootTitle?.(to)\n\tif (rootTitle) {\n\t\tdocument.title = `${rootTitle} - ${baseTitle}`\n\t} else {\n\t\tdocument.title = baseTitle\n\t}\n})\n\nexport default router\n"],"file":"js/index-r_e2HRW6.chunk.mjs"} \ No newline at end of file +{"version":3,"mappings":"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","names":["vuexRouterSync","store","router","options","moduleName","cloneRoute","state","transition","isTimeTraveling","currentPath","storeUnwatch","route","fullPath","afterEachUnHook","to","from","clone","extend","a","b","key","encodeReserveRE","encodeReserveReplacer","c","commaRE","encode","str","decode","resolveQuery","query","extraQuery","_parseQuery","parse","parseQuery","parsedQuery","value","castQueryParamValue","res","param","parts","val","stringifyQuery","obj","result","val2","x","trailingSlashRE","createRoute","record","location","redirectedFrom","getFullPath","formatMatch","START","ref","_stringifyQuery","path","hash","stringify","isSameRoute","onlyPath","isObjectEqual","aKeys","bKeys","i","aVal","bKey","bVal","isIncludedRoute","current","target","queryIncludes","handleRouteEntered","name","instance","cbs","i$1","View","_","props","children","parent","data","h","cache","depth","inactive","vnodeData","cachedData","cachedComponent","fillPropsinData","matched","component","vm","vnode","configProps","propsToPass","resolveProps","attrs","config","resolvePath","relative","base","append","firstChar","stack","segments","segment","parsePath","hashIndex","queryIndex","cleanPath","isarray","arr","pathToRegexp_1","pathToRegexp","parse_1","compile_1","compile","tokensToFunction_1","tokensToFunction","tokensToRegExp_1","tokensToRegExp","PATH_REGEXP","tokens","index","defaultDelimiter","m","escaped","offset","next","prefix","capture","group","modifier","asterisk","partial","repeat","optional","delimiter","pattern","escapeGroup","escapeString","encodeURIComponentPretty","encodeAsterisk","matches","flags","opts","token","j","attachKeys","re","keys","regexpToRegexp","groups","arrayToRegexp","regexp","stringToRegexp","strict","end","endsWithDelimiter","regexpCompileCache","fillParams","params","routeMsg","filler","normalizeLocation","raw","params$1","rawPath","parsedPath","basePath","toTypes","eventTypes","noop","Link","this$1$1","href","classes","globalActiveClass","globalExactActiveClass","activeClassFallback","exactActiveClassFallback","activeClass","exactActiveClass","compareTarget","ariaCurrentValue","handler","e","guardEvent","on","scopedSlot","findAnchor","aData","event","handler$1","event$1","aAttrs","child","_Vue","install","Vue","isDef","v","registerInstance","callVal","strats","inBrowser","createRouteMap","routes","oldPathList","oldPathMap","oldNameMap","parentRoute","pathList","pathMap","nameMap","addRouteRecord","l","matchAs","pathToRegexpOptions","normalizedPath","normalizePath","compileRouteRegex","childMatchAs","aliases","alias","aliasRoute","regex","createMatcher","addRoutes","addRoute","parentOrRoute","getRoutes","match","currentRoute","_createRoute","paramNames","record$1","matchRoute","redirect","originalRedirect","resolveRecordPath","resolvedPath","aliasedPath","aliasedMatch","aliasedRecord","len","Time","genStateKey","_key","getStateKey","setStateKey","positionStore","setupScroll","protocolAndPath","absolutePath","stateCopy","handlePopState","handleScroll","isPop","behavior","position","getScrollPosition","shouldScroll","scrollToPosition","err","saveScrollPosition","getElementPosition","el","docEl","docRect","elRect","isValidPosition","isNumber","normalizePosition","normalizeOffset","hashStartsWithNumberRE","isObject","supportsPushState","ua","pushState","url","replace","history","replaceState","NavigationFailureType","createNavigationRedirectedError","createRouterError","stringifyRoute","createNavigationDuplicatedError","error","createNavigationCancelledError","createNavigationAbortedError","type","message","propertiesToLog","isError","isNavigationFailure","errorType","runQueue","queue","fn","cb","step","resolveAsyncComponents","hasAsync","pending","flatMapComponents","def","resolve","once","resolvedDef","isESModule","reject","reason","msg","comp","flatten","hasSymbol","called","args","History","normalizeBase","errorCb","onComplete","onAbort","prev","hook","abort","lastRouteIndex","lastCurrentIndex","resolveQueue","updated","deactivated","activated","extractLeaveGuards","extractUpdateHooks","iterator","enterGuards","extractEnterGuards","cleanupListener","baseEl","max","extractGuards","records","bind","reverse","guards","guard","extractGuard","bindGuard","bindEnterGuard","HTML5History","getLocation","expectScroll","supportsScroll","handleRoutingEvent","n","fromRoute","push","pathLowerCase","baseLowerCase","HashHistory","fallback","checkFallback","ensureSlash","getHash","replaceHash","eventType","pushHash","getUrl","AbstractHistory","targetIndex","VueRouter","mode","prototypeAccessors","app","handleInitialScroll","routeOrError","setupListeners","registerHook","createHref","VueRouter$1","list","svgplaceholder","imgplaceholder","videoplaceholder","systemtags","loadState","maps","recognize","Folders","__vitePreload","Albums","AlbumContent","SharedAlbums","SharedAlbumContent","PublicAlbumContent","Places","PlaceContent","Tags","TagContent","Timeline","Faces","FaceContent","UnassignedFaces","baseTitle","Router","mapsPath","generateUrl","isMapsInstalled","parsePathParams","t","imageMimes","videoMimes","areTagsInstalled","isRecognizeInstalled","recognizeInstallLink","rootTitle"],"ignoreList":[0,1],"sources":["../node_modules/vuex-router-sync/index.js","../node_modules/vue-router/dist/vue-router.esm.js","../src/assets/file-placeholder.svg","../src/assets/image.svg","../src/assets/video.svg","../src/services/AreTagsInstalled.ts","../src/services/IsMapsInstalled.ts","../src/services/IsRecognizeInstalled.ts","../src/router/index.ts"],"sourcesContent":["exports.sync = function (store, router, options) {\n var moduleName = (options || {}).moduleName || 'route'\n\n store.registerModule(moduleName, {\n namespaced: true,\n state: cloneRoute(router.currentRoute),\n mutations: {\n 'ROUTE_CHANGED': function ROUTE_CHANGED (state, transition) {\n store.state[moduleName] = cloneRoute(transition.to, transition.from)\n }\n }\n })\n\n var isTimeTraveling = false\n var currentPath\n\n // sync router on store change\n var storeUnwatch = store.watch(\n function (state) { return state[moduleName]; },\n function (route) {\n var fullPath = route.fullPath;\n if (fullPath === currentPath) {\n return\n }\n if (currentPath != null) {\n isTimeTraveling = true\n router.push(route)\n }\n currentPath = fullPath\n },\n { sync: true }\n )\n\n // sync store on router navigation\n var afterEachUnHook = router.afterEach(function (to, from) {\n if (isTimeTraveling) {\n isTimeTraveling = false\n return\n }\n currentPath = to.fullPath\n store.commit(moduleName + '/ROUTE_CHANGED', { to: to, from: from })\n })\n\n return function unsync () {\n // On unsync, remove router hook\n if (afterEachUnHook != null) {\n afterEachUnHook()\n }\n\n // On unsync, remove store watch\n if (storeUnwatch != null) {\n storeUnwatch()\n }\n\n // On unsync, unregister Module with store\n store.unregisterModule(moduleName)\n }\n}\n\nfunction cloneRoute (to, from) {\n var clone = {\n name: to.name,\n path: to.path,\n hash: to.hash,\n query: to.query,\n params: to.params,\n fullPath: to.fullPath,\n meta: to.meta\n }\n if (from) {\n clone.from = cloneRoute(from)\n }\n return Object.freeze(clone)\n}\n\n","/*!\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","export default \"data:image/svg+xml,%3csvg%20xmlns='http://www.w3.org/2000/svg'%20viewBox='0%200%2050%2050'%3e%3cdefs%3e%3clinearGradient%20id='placeholder__gradient'%3e%3cstop%20offset='0%25'%20stop-color='%23ededed'%3e%3canimate%20attributeName='stop-color'%20values='%23ededed;%20%23ededed;%20%23cccccc;%20%23cccccc;%20%23ededed'%20dur='2s'%20repeatCount='indefinite'/%3e%3c/stop%3e%3cstop%20offset='100%25'%20stop-color='%23cccccc'%3e%3canimate%20attributeName='stop-color'%20values='%23cccccc;%20%23ededed;%20%23ededed;%20%23cccccc;%20%23cccccc'%20dur='2s'%20repeatCount='indefinite'/%3e%3c/stop%3e%3c/linearGradient%3e%3c/defs%3e%3c/svg%3e\"","export default \"data:image/svg+xml,%3csvg%20width='32'%20height='32'%20xmlns='http://www.w3.org/2000/svg'%20xml:space='preserve'%20style='fill-rule:evenodd;clip-rule:evenodd;stroke-linejoin:round;stroke-miterlimit:2'%3e%3cpath%20d='M5%2021c-.55%200-1.021-.196-1.412-.587A1.927%201.927%200%200%201%203%2019V5c0-.55.196-1.021.588-1.413A1.926%201.926%200%200%201%205%203h14c.55%200%201.021.196%201.413.587.391.392.587.863.587%201.413v14a1.93%201.93%200%200%201-.587%201.413A1.93%201.93%200%200%201%2019%2021H5Zm0-2h14V5H5v14Zm1-2h12l-3.75-5-3%204L9%2013l-3%204Zm-1%202V5v14Zm3.5-9a1.45%201.45%200%200%200%201.063-.437A1.45%201.45%200%200%200%2010%208.5c0-.417-.146-.771-.437-1.062A1.447%201.447%200%200%200%208.5%207c-.417%200-.771.146-1.062.438A1.443%201.443%200%200%200%207%208.5c0%20.417.146.771.438%201.063.291.291.645.437%201.062.437Z'%20style='fill-rule:nonzero'%20transform='translate(-2.665%20-2.665)%20scale(1.55497)'/%3e%3c/svg%3e\"","export default \"data:image/svg+xml,%3csvg%20width='32'%20height='32'%20xmlns='http://www.w3.org/2000/svg'%20xml:space='preserve'%20style='fill-rule:evenodd;clip-rule:evenodd;stroke-linejoin:round;stroke-miterlimit:2'%3e%3cpath%20d='m4%204%202%204h3L7%204h2l2%204h3l-2-4h2l2%204h3l-2-4h3c.55%200%201.021.196%201.413.587.391.392.587.863.587%201.413v12a1.93%201.93%200%200%201-.587%201.413A1.93%201.93%200%200%201%2020%2020H4c-.55%200-1.021-.196-1.412-.587A1.927%201.927%200%200%201%202%2018V6c0-.55.196-1.021.588-1.413A1.926%201.926%200%200%201%204%204Z'%20style='fill-rule:nonzero'%20transform='translate(-.804%20-.607)%20scale(1.40177)'/%3e%3c/svg%3e\"","/**\n * SPDX-FileCopyrightText: 2020 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport { loadState } from '@nextcloud/initial-state'\n\nconst systemtags = loadState('photos', 'systemtags', false) as boolean\nexport default systemtags\n","/**\n * SPDX-FileCopyrightText: 2018 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport { loadState } from '@nextcloud/initial-state'\n\nconst maps = loadState('photos', 'maps', false) as boolean\nexport default maps\n","/**\n * SPDX-FileCopyrightText: 2018 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport { loadState } from '@nextcloud/initial-state'\n\nconst recognize = loadState('photos', 'recognize', false) as boolean\nexport default recognize\n","/**\n * SPDX-FileCopyrightText: 2018 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport { generateUrl } from '@nextcloud/router'\nimport Router from 'vue-router'\nimport Vue from 'vue'\n\nimport { t } from '@nextcloud/l10n'\n\nimport isMapsInstalled from '../services/IsMapsInstalled.js'\nimport areTagsInstalled from '../services/AreTagsInstalled.js'\nimport { imageMimes, videoMimes } from '../services/AllowedMimes.js'\n\nimport isRecognizeInstalled from '../services/IsRecognizeInstalled.js'\n\nconst Folders = () => import('../views/Folders.vue')\nconst Albums = () => import('../views/Albums.vue')\nconst AlbumContent = () => import('../views/AlbumContent.vue')\nconst SharedAlbums = () => import('../views/SharedAlbums.vue')\nconst SharedAlbumContent = () => import('../views/SharedAlbumContent.vue')\nconst PublicAlbumContent = () => import('../views/PublicAlbumContent.vue')\nconst Places = () => import('../views/Places.vue')\nconst PlaceContent = () => import('../views/PlaceContent.vue')\nconst Tags = () => import('../views/Tags.vue')\nconst TagContent = () => import('../views/TagContent.vue')\nconst Timeline = () => import('../views/Timeline.vue')\nconst Faces = () => import('../views/Faces.vue')\nconst FaceContent = () => import('../views/FaceContent.vue')\n\nconst UnassignedFaces = () => import('../views/UnassignedFaces.vue')\n\nconst baseTitle = document.title\n\nVue.use(Router)\n\nlet mapsPath = generateUrl('/apps/maps')\nif (!isMapsInstalled) {\n\tmapsPath = generateUrl('/settings/apps/integration/maps')\n}\n\n/**\n * Parse the path of a route : join the elements of the array and return a single string with slashes\n * + always lead current path with a slash\n */\nconst parsePathParams = (path: string|string[]): string => {\n\treturn `/${Array.isArray(path) ? path.join('/') : path || ''}`\n}\n\nconst router = new Router({\n\tmode: 'history',\n\t// if index.php is in the url AND we got this far, then it's working:\n\t// let's keep using index.php in the url\n\tbase: generateUrl('/apps/photos'),\n\tlinkActiveClass: 'active',\n\troutes: [\n\t\t{\n\t\t\tpath: '/',\n\t\t\tcomponent: Timeline,\n\t\t\tname: 'all_media',\n\t\t\tprops: () => ({\n\t\t\t\trootTitle: t('photos', 'All your media'),\n\t\t\t}),\n\t\t\tmeta: {\n\t\t\t\trootTitle: () => {\n\t\t\t\t\treturn t('photos', 'All your media')\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tpath: '/photos',\n\t\t\tcomponent: Timeline,\n\t\t\tname: 'photos',\n\t\t\tprops: () => ({\n\t\t\t\trootTitle: t('photos', 'Photos'),\n\t\t\t\tmimesType: imageMimes,\n\t\t\t}),\n\t\t\tmeta: {\n\t\t\t\trootTitle: () => {\n\t\t\t\t\treturn t('photos', 'Photos')\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tpath: '/videos',\n\t\t\tcomponent: Timeline,\n\t\t\tname: 'videos',\n\t\t\tprops: () => ({\n\t\t\t\trootTitle: t('photos', 'Videos'),\n\t\t\t\tmimesType: videoMimes,\n\t\t\t}),\n\t\t\tmeta: {\n\t\t\t\trootTitle: () => {\n\t\t\t\t\treturn t('photos', 'Videos')\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tpath: '/albums',\n\t\t\tcomponent: Albums,\n\t\t\tname: 'albums',\n\t\t\tmeta: {\n\t\t\t\trootTitle: () => {\n\t\t\t\t\treturn t('photos', 'Albums')\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tpath: '/albums/:albumName*',\n\t\t\tcomponent: AlbumContent,\n\t\t\tname: 'albumsContent',\n\t\t\tprops: route => ({\n\t\t\t\talbumName: route.params.albumName,\n\t\t\t}),\n\t\t\tmeta: {\n\t\t\t\trootTitle: (to) => {\n\t\t\t\t\treturn t('photos', 'Album {title}', { title: to.params.albumName })\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tpath: '/sharedalbums',\n\t\t\tcomponent: SharedAlbums,\n\t\t\tname: 'sharedAlbums',\n\t\t\tmeta: {\n\t\t\t\trootTitle: () => {\n\t\t\t\t\treturn t('photos', 'Shared Albums')\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tpath: '/sharedalbums/:albumName*',\n\t\t\tcomponent: SharedAlbumContent,\n\t\t\tname: 'sharedAlbumsContent',\n\t\t\tprops: route => ({\n\t\t\t\talbumName: route.params.albumName,\n\t\t\t}),\n\t\t\tmeta: {\n\t\t\t\trootTitle: (to) => {\n\t\t\t\t\treturn t('photos', 'Shared album {title}', { title: to.params.albumName })\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tpath: '/public/:token',\n\t\t\tcomponent: PublicAlbumContent,\n\t\t\tname: 'publicAlbums',\n\t\t\tprops: route => ({\n\t\t\t\ttoken: route.params.token,\n\t\t\t}),\n\t\t\tmeta: {\n\t\t\t\trootTitle: (to) => {\n\t\t\t\t\treturn t('photos', 'Public album {title}', { title: to.params.token })\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tpath: '/places',\n\t\t\tcomponent: Places,\n\t\t\tname: 'places',\n\t\t},\n\t\t{\n\t\t\tpath: '/places/:placeName*',\n\t\t\tcomponent: PlaceContent,\n\t\t\tname: 'placesContent',\n\t\t\tprops: route => ({\n\t\t\t\tplaceName: route.params.placeName,\n\t\t\t}),\n\t\t},\n\t\t{\n\t\t\tpath: '/folders/:path*',\n\t\t\tcomponent: Folders,\n\t\t\tname: 'folders',\n\t\t\tprops: route => ({\n\t\t\t\tpath: parsePathParams(route.params.path),\n\t\t\t\t// if path is empty\n\t\t\t\tisRoot: !route.params.path,\n\t\t\t\trootTitle: t('photos', 'Folders'),\n\t\t\t}),\n\t\t\tmeta: {\n\t\t\t\trootTitle: () => {\n\t\t\t\t\treturn t('photos', 'Folders')\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tpath: '/shared/:path*',\n\t\t\tcomponent: Folders,\n\t\t\tname: 'shared',\n\t\t\tprops: route => ({\n\t\t\t\tpath: parsePathParams(route.params.path),\n\t\t\t\t// if path is empty\n\t\t\t\tisRoot: !route.params.path,\n\t\t\t\trootTitle: t('photos', 'Shared with you'),\n\t\t\t\tshowShared: true,\n\t\t\t}),\n\t\t\tmeta: {\n\t\t\t\trootTitle: () => {\n\t\t\t\t\treturn t('photos', 'Shared with you')\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tpath: '/favorites',\n\t\t\tcomponent: Timeline,\n\t\t\tname: 'favorites',\n\t\t\tprops: () => ({\n\t\t\t\trootTitle: t('photos', 'Favorites'),\n\t\t\t\tonlyFavorites: true,\n\t\t\t}),\n\t\t\tmeta: {\n\t\t\t\trootTitle: () => {\n\t\t\t\t\treturn t('photos', 'Favorites')\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tpath: '/tags/',\n\t\t\tcomponent: Tags,\n\t\t\tname: 'tags',\n\t\t\tredirect: !areTagsInstalled ? { name: 'timeline' } : undefined,\n\t\t\tprops: route => ({\n\t\t\t\tpath: '',\n\t\t\t\tisRoot: !route.params.path,\n\t\t\t\trootTitle: t('photos', 'Tagged photos'),\n\t\t\t}),\n\t\t\tmeta: {\n\t\t\t\trootTitle: () => {\n\t\t\t\t\treturn t('photos', 'Tagged photos')\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tpath: '/tags/:path',\n\t\t\tcomponent: TagContent,\n\t\t\tname: 'tagcontent',\n\t\t\tredirect: !areTagsInstalled ? { name: 'timeline' } : undefined,\n\t\t\tprops: route => ({\n\t\t\t\tpath: `${route.params.path ? route.params.path : ''}`,\n\t\t\t}),\n\t\t\tmeta: {\n\t\t\t\trootTitle: (to) => {\n\t\t\t\t\treturn t('photos', 'Tagged photo {title}', { title: to.params.path })\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tpath: '/maps',\n\t\t\tname: 'maps',\n\t\t\t// router-link doesn't support external url, let's force the redirect\n\t\t\tbeforeEnter() {\n\t\t\t\twindow.open(mapsPath, '_blank')\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tpath: '/thisday',\n\t\t\tname: 'thisday',\n\t\t\tcomponent: Timeline,\n\t\t\tprops: () => ({\n\t\t\t\trootTitle: t('photos', 'On this day'),\n\t\t\t\tonThisDay: true,\n\t\t\t}),\n\t\t\tmeta: {\n\t\t\t\trootTitle: () => {\n\t\t\t\t\treturn t('photos', 'On this day')\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tpath: '/faces',\n\t\t\tname: 'faces',\n\t\t\tcomponent: Faces,\n\t\t\t...((!isRecognizeInstalled) && {\n\t\t\t\tbeforeEnter() {\n\t\t\t\t\tconst recognizeInstallLink = generateUrl('/settings/apps/installed/recognize')\n\t\t\t\t\twindow.open(recognizeInstallLink, '_blank')\n\t\t\t\t},\n\t\t\t}),\n\t\t},\n\t\t{\n\t\t\tpath: '/faces/unassigned',\n\t\t\tname: 'unassignedfaces',\n\t\t\tcomponent: UnassignedFaces,\n\t\t\tmeta: {\n\t\t\t\trootTitle: () => {\n\t\t\t\t\treturn t('photos', 'Unassigned faces')\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tpath: '/faces/:faceName',\n\t\t\tname: 'facecontent',\n\t\t\tcomponent: FaceContent,\n\t\t\tprops: route => ({\n\t\t\t\trootTitle: route.params.faceName,\n\t\t\t\tfaceName: route.params.faceName,\n\t\t\t}),\n\t\t\tmeta: {\n\t\t\t\trootTitle: (to) => {\n\t\t\t\t\treturn t('photos', \"{title}'s face\", { title: to.params.faceName })\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t],\n})\n\nrouter.afterEach((to) => {\n\tconst rootTitle = to.meta?.rootTitle?.(to)\n\tif (rootTitle) {\n\t\tdocument.title = `${rootTitle} - ${baseTitle}`\n\t} else {\n\t\tdocument.title = baseTitle\n\t}\n})\n\nexport default router\n"],"file":"js/index-CuVencPr.chunk.mjs"} \ No newline at end of file diff --git a/js/photos-main.mjs b/js/photos-main.mjs index b628199ad..ce7cbd448 100644 --- a/js/photos-main.mjs +++ b/js/photos-main.mjs @@ -1,2 +1,2 @@ -import{V as r,e as l,u as f,s as N,d as y,t as a,l as d,_ as c,g as i,a as _,r as n}from"./vue.runtime.esm-CWuAmtQL.chunk.mjs";import{r as S,m as b,s as C,v as A,i as w,a as k,b as P,c as g}from"./index-r_e2HRW6.chunk.mjs";import{n as p,H as L,M as F,a as I,V as M,T,S as E,b as x,I as $,F as z,c as B,A as D,C as O,d as H,e as V,f as W}from"./icons-DIHlkdtB.chunk.mjs";import{n as h,N as R,t as j,l as U,c as q,g as K,u as G,a as J,b as Q,d as X,e as v,f as s,h as Y,i as Z,j as tt,k as ot,p as u}from"./index-DySs6xMI.chunk.mjs";import{P as et,a as at}from"./PhotosSourceLocationsSettings-CzV450Gt.chunk.mjs";import{g as st}from"./index-B5VUqMFg.chunk.mjs";import"./preload-helper-Dh9HmuEY.chunk.mjs";import"./index-C-mleKoq.chunk.mjs";const it={name:"NcAppNavigationList"};var nt=function(){var t=this,o=t._self._c;return o("ul",{staticClass:"app-navigation-list"},[t._t("default")],2)},rt=[],pt=h(it,nt,rt,!1,null,"058e6060");const lt=pt.exports,ct={name:"NcAppNavigation",components:{NcAppNavigationList:lt,NcAppNavigationToggle:R},inject:{setHasAppNavigation:{default:()=>()=>r.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:J()}},data(){return{open:!this.isMobile,focusTrap:null}},watch:{isMobile(){this.open=!this.isMobile,this.toggleFocusTrap()},open(){this.toggleFocusTrap()}},mounted(){this.setHasAppNavigation(!0),N("toggle-navigation",this.toggleNavigationByEventBus),l("navigation-toggled",{open:this.open}),this.focusTrap=q(this.$refs.appNavigationContainer,{allowOutsideClick:!0,fallbackFocus:this.$refs.appNavigationContainer,trapStack:K(),escapeDeactivates:!1}),this.toggleFocusTrap(),G("n",this.onKeyDown,{prevent:!0,stop:!0})},unmounted(){this.setHasAppNavigation(!1),f("toggle-navigation",this.toggleNavigationByEventBus),this.focusTrap.deactivate()},methods:{async toggleNavigation(t){if(this.open===t){l("navigation-toggled",{open:this.open});return}this.open=typeof t>"u"?!this.open:t;const o=getComputedStyle(document.body),e=parseInt(o.getPropertyValue("--animation-quick"))||100;this.open&&(await this.$nextTick(),this.focusFirstElement()),setTimeout(()=>{l("navigation-toggled",{open:this.open})},1.5*e)},toggleNavigationByEventBus({open:t}){this.toggleNavigation(t)},toggleFocusTrap(){this.isMobile&&this.open?this.focusTrap.activate():this.focusTrap.deactivate()},handleEsc(){this.isMobile&&this.open&&this.toggleNavigation(!1)},focusFirstElement(){const t=j(this.$refs.appNavigationContainer)[0];t&&(t.focus(),U.debug("Focusing first element in the navigation",{element:t}))},onKeyDown(t){if(t.key==="n"){if(!this.open){this.toggleNavigation(!0);return}this.isFocusWithinNavigation()&&this.toggleNavigation(!1)}},isFocusWithinNavigation(){const t=document.activeElement;return this.$refs.appNavigationContainer?.contains(t)}}};var dt=function(){var t=this,o=t._self._c;return o("div",{ref:"appNavigationContainer",staticClass:"app-navigation",class:{"app-navigation--close":!t.open}},[o("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){return!e.type.indexOf("key")&&t._k(e.keyCode,"esc",27,e.key,["Esc","Escape"])?null:t.handleEsc.apply(null,arguments)}}},[o("div",{staticClass:"app-navigation__search"},[t._t("search")],2),o("div",{staticClass:"app-navigation__body",class:{"app-navigation__body--no-list":!t.$scopedSlots.list}},[t._t("default")],2),t.$scopedSlots.list?o("NcAppNavigationList",{staticClass:"app-navigation__list"},[t._t("list")],2):t._e(),t._t("footer")],2),o("NcAppNavigationToggle",{attrs:{open:t.open},on:{"update:open":t.toggleNavigation}})],1)},ht=[],gt=h(ct,dt,ht,!1,null,"e8d5a9e1");const ut=gt.exports,mt={name:"NcAppSettingsSection",inject:["registerSection","unregisterSection"],props:{name:{type:String,required:!0},id:{type:String,required:!0,validator(t){return/^[a-z0-9\-_]+$/.test(t)}}},computed:{htmlId(){return"settings-section_"+this.id}},watch:{id(t,o){this.unregisterSection(o),this.registerSection(t,this.name,this.$slots?.icon)},name(t){this.unregisterSection(this.id),this.registerSection(this.id,t,this.$slots?.icon)}},mounted(){this.registerSection(this.id,this.name,this.$slots?.icon)},beforeDestroy(){this.unregisterSection(this.id)}};var vt=function(){var t=this,o=t._self._c;return o("section",{staticClass:"app-settings-section",attrs:{id:t.htmlId,"aria-labelledby":`${t.htmlId}--label`}},[o("h3",{staticClass:"app-settings-section__name",attrs:{id:`${t.htmlId}--label`}},[t._v(" "+t._s(t.name)+" ")]),t._t("default"),t._e()],2)},ft=[],Nt=h(mt,vt,ft,!1,null,"e970c9f7");const yt=Nt.exports,_t={name:"CroppedLayoutSettings",components:{NcCheckboxRadioSwitch:Q},computed:{croppedLayout(){return this.$store.state.userConfig.croppedLayout}},methods:{updateSetting(t){this.$store.dispatch("updateUserConfig",{key:"croppedLayout",value:t})}}};var St=function(){var t=this,o=t._self._c;return o("NcCheckboxRadioSwitch",{attrs:{checked:t.croppedLayout,type:"switch"},on:{"update:checked":t.updateSetting}},[t._v(" "+t._s(t.t("photos","Enable squared photos view"))+" ")])},bt=[],Ct=p(_t,St,bt,!1,null,null);const At=Ct.exports,wt=y({name:"PhotosUploadLocationSettings",components:{NcButton:v,PhotosFolder:et},data(){return{Home:L}},computed:{photosLocation(){return this.$store.state.userConfig.photosLocation}},methods:{debounceSelectPhotosFolder:X(function(){this.selectPhotosFolder()}),async selectPhotosFolder(){const t=await this.openFilePicker(a("photos","Select the default upload location for your media"));this.updatePhotosFolder(t)},async openFilePicker(t){return st(t).setMultiSelect(!1).addMimeTypeFilter("httpd/unix-directory").allowDirectories().startAt(this.photosLocation).addButton({label:a("photos","Pick folder"),callback:o=>s.debug("Picked",{nodes:o})}).build().pick()},updatePhotosFolder(t){this.$store.dispatch("updateUserConfig",{key:"photosLocation",value:t})},t:a}});var kt=function(){var t=this,o=t._self._c;return t._self._setupProxy,o("div",{staticClass:"photos-location"},[o("PhotosFolder",{attrs:{path:t.photosLocation,"root-folder-label":t.t("photos","Home"),"root-folder-icon":t.Home}}),o("NcButton",{attrs:{"aria-label":t.t("photos","Choose default Photos upload and Albums location")},on:{click:t.debounceSelectPhotosFolder}},[t._v(" "+t._s(t.t("photos","Choose a different folder"))+" ")])],1)},Pt=[],Lt=p(wt,kt,Pt,!1,null,"68dfad67");const Ft=Lt.exports,It={name:"SettingsDialog",components:{NcAppSettingsDialog:Y,NcAppSettingsSection:yt,CroppedLayoutSettings:At,PhotosSourceLocationsSettings:at,PhotosUploadLocationSettings:Ft},props:{open:{type:Boolean,default:!1}},methods:{onClose(){this.$emit("update:open",!1)},t:a}};var Mt=function(){var t=this,o=t._self._c;return o("NcAppSettingsDialog",{attrs:{open:t.open,"show-navigation":!0,name:t.t("photos","Photos settings")},on:{"update:open":t.onClose}},[o("NcAppSettingsSection",{attrs:{id:"layout-settings",name:t.t("photos","View")}},[o("CroppedLayoutSettings")],1),o("NcAppSettingsSection",{attrs:{id:"source-directories-settings",name:t.t("photos","Media folders")}},[o("div",{staticClass:"setting-section-subline"},[t._v(" "+t._s(t.t("photos","Choose the folders from where photos and videos are shown."))+" ")]),o("PhotosSourceLocationsSettings")],1),o("NcAppSettingsSection",{attrs:{id:"upload-directory-settings",name:t.t("photos","Upload folder")}},[o("div",{staticClass:"setting-section-subline"},[t._v(" "+t._s(t.t("photos","Choose the folder where photos and albums are uploaded to."))+" ")]),o("PhotosUploadLocationSettings")],1)],1)},Tt=[],Et=p(It,Mt,Tt,!1,null,null);const xt=Et.exports,m=d("photos","appStoreEnabled",!1),$t={name:"Photos",components:{AccountBoxMultipleOutline:W,Cog:V,CalendarToday:H,Camera:O,AccountGroup:D,Folder:B,FolderMultipleImage:z,ImageIcon:$,ShareVariant:x,Star:E,Tag:T,VideoIcon:M,MapIcon:I,MapMarker:F,NcAppContent:ot,NcAppNavigation:ut,NcAppNavigationItem:tt,NcButton:v,NcContent:Z,SettingsDialog:xt},data(){return{svgplaceholder:k,imgplaceholder:w,videoplaceholder:A,areTagsInstalled:C,showLocationMenuEntry:i()===null?!1:i().isAdmin&&m||b,showPeopleMenuEntry:i()===null?!1:i().isAdmin&&d("photos","showPeopleMenuEntry",!0)&&m||S,openedSettings:!1}},async beforeMount(){const t=d("photos","nomedia-paths",[]);this.$store.dispatch("setNomediaPaths",t),s.debug("Known .nomedia and .noimage paths",{files:t}),"serviceWorker"in navigator?window.addEventListener("load",()=>{navigator.serviceWorker.register(c("/apps/photos/service-worker.js",{},{noRewrite:!0}),{scope:c("/apps/photos")}).then(o=>{s.debug("SW registered: ",{registration:o})}).catch(o=>{s.error("SW registration failed: ",{registrationError:o})})}):s.debug("Service Worker is not enabled on this browser.")},beforeDestroy(){window.removeEventListener("load",()=>{navigator.serviceWorker.register(c("/apps/photos/service-worker.js",{},{noRewrite:!0}))})},methods:{showSettings(){this.openedSettings=!0},t:a}};var zt=function(){var t=this,o=t._self._c;return o("NcContent",{attrs:{"app-name":"photos"}},[o("NcAppNavigation",{attrs:{"aria-label":t.t("photos","Photos")},scopedSlots:t._u([{key:"list",fn:function(){return[o("NcAppNavigationItem",{staticClass:"app-navigation__all_media",attrs:{to:{name:"all_media"},name:t.t("photos","All media"),"data-id-app-nav-item":"all-media",exact:""}},[o("ImageIcon",{attrs:{slot:"icon",size:20},slot:"icon"})],1),o("NcAppNavigationItem",{attrs:{to:"/photos",name:t.t("photos","Photos"),"data-id-app-nav-item":"photos"}},[o("Camera",{attrs:{slot:"icon",size:20},slot:"icon"})],1),o("NcAppNavigationItem",{attrs:{to:"/videos",name:t.t("photos","Videos"),"data-id-app-nav-item":"videos"}},[o("VideoIcon",{attrs:{slot:"icon",size:20},slot:"icon"})],1),o("NcAppNavigationItem",{attrs:{to:{name:"albums"},name:t.t("photos","Albums"),"data-id-app-nav-item":"albums"}},[o("FolderMultipleImage",{attrs:{slot:"icon",size:20},slot:"icon"})],1),o("NcAppNavigationItem",{attrs:{to:{name:"sharedAlbums"},name:t.t("photos","Collaborative albums"),"data-id-app-nav-item":"sharedalbums"}},[o("AccountGroup",{attrs:{slot:"icon",size:20},slot:"icon"})],1),t.showPeopleMenuEntry?o("NcAppNavigationItem",{attrs:{to:{name:"faces"},name:t.t("photos","People"),"data-id-app-nav-item":"faces"},scopedSlots:t._u([{key:"icon",fn:function(){return[o("AccountBoxMultipleOutline",{attrs:{size:20}})]},proxy:!0}],null,!1,1224485484)}):t._e(),o("NcAppNavigationItem",{attrs:{to:{name:"folders"},name:t.t("photos","Folders"),"data-id-app-nav-item":"folders"}},[o("Folder",{attrs:{slot:"icon",size:20},slot:"icon"})],1),o("NcAppNavigationItem",{attrs:{to:"/favorites",name:t.t("photos","Favorites"),"data-id-app-nav-item":"favorites"}},[o("Star",{attrs:{slot:"icon",size:20},slot:"icon"})],1),o("NcAppNavigationItem",{attrs:{to:{name:"thisday"},name:t.t("photos","On this day"),"data-id-app-nav-item":"this-day"}},[o("CalendarToday",{attrs:{slot:"icon",size:20},slot:"icon"})],1),o("NcAppNavigationItem",{attrs:{to:{name:"shared"},name:t.t("photos","Shared with you"),"data-id-app-nav-item":"shared"}},[o("ShareVariant",{attrs:{slot:"icon",size:20},slot:"icon"})],1),t.areTagsInstalled?o("NcAppNavigationItem",{attrs:{to:{name:"tags"},name:t.t("photos","Tags"),"data-id-app-nav-item":"tags"}},[o("Tag",{attrs:{slot:"icon",size:20},slot:"icon"})],1):t._e(),o("NcAppNavigationItem",{attrs:{to:{name:"places"},name:t.t("photos","Places"),"data-id-app-nav-item":"places"}},[o("MapMarker",{attrs:{slot:"icon",size:20},slot:"icon"})],1),t.showLocationMenuEntry?o("NcAppNavigationItem",{attrs:{to:{name:"maps"},name:t.t("photos","Map"),"data-id-app-nav-item":"maps"}},[o("MapIcon",{attrs:{slot:"icon",size:20},slot:"icon"})],1):t._e()]},proxy:!0},{key:"footer",fn:function(){return[o("div",{staticClass:"app-navigation__footer"},[o("NcButton",{attrs:{type:"tertiary",alignment:"start",wide:""},on:{click:t.showSettings},scopedSlots:t._u([{key:"icon",fn:function(){return[o("Cog",{attrs:{slot:"icon",size:20},slot:"icon"})]},proxy:!0}])},[t._v(" "+t._s(t.t("photos","Photos settings"))+" ")])],1)]},proxy:!0}])}),o("NcAppContent",[o("RouterView"),o("span",{staticClass:"hidden-visually",attrs:{role:"none"},domProps:{innerHTML:t._s(t.svgplaceholder)}}),o("span",{staticClass:"hidden-visually",attrs:{role:"none"},domProps:{innerHTML:t._s(t.imgplaceholder)}}),o("span",{staticClass:"hidden-visually",attrs:{role:"none"},domProps:{innerHTML:t._s(t.videoplaceholder)}})],1),o("SettingsDialog",{attrs:{open:t.openedSettings},on:{"update:open":function(e){t.openedSettings=e}}})],1)},Bt=[],Dt=p($t,zt,Bt,!1,null,null);const Ot=Dt.exports;P.sync(u,g),r.prototype.t=a,r.prototype.n=_,n("nc:metadata-photos-size"),n("nc:metadata-files-live-photo"),n("nc:metadata-blurhash"),n("nc:metadata-photos-original_date_time"),window.addEventListener("DOMContentLoaded",()=>{window.OCA.Files||(window.OCA.Files={}),Object.assign(window.OCA.Files,{App:{fileList:{filesClient:OC.Files.getClient()}}},window.OCA.Files)}),new r({el:"#content",name:"PhotosRoot",router:g,store:u,render:t=>t(Ot)}); +import{V as r,e as l,u as f,s as N,d as y,t as a,l as d,_ as c,g as i,a as _,r as n}from"./vue.runtime.esm-CWuAmtQL.chunk.mjs";import{r as S,m as b,s as C,v as A,i as w,a as k,b as P,c as g}from"./index-CuVencPr.chunk.mjs";import{n as p,H as L,M as F,a as I,V as M,T,S as E,b as x,I as $,F as z,c as B,A as D,C as O,d as H,e as V,f as W}from"./icons-DIHlkdtB.chunk.mjs";import{n as h,N as R,t as j,l as U,c as q,g as K,u as G,a as J,b as Q,d as X,e as v,f as s,h as Y,i as Z,j as tt,k as ot,p as u}from"./index-DySs6xMI.chunk.mjs";import{P as et,a as at}from"./PhotosSourceLocationsSettings-CzV450Gt.chunk.mjs";import{g as st}from"./index-B5VUqMFg.chunk.mjs";import"./preload-helper-Dh9HmuEY.chunk.mjs";import"./index-C-mleKoq.chunk.mjs";const it={name:"NcAppNavigationList"};var nt=function(){var t=this,o=t._self._c;return o("ul",{staticClass:"app-navigation-list"},[t._t("default")],2)},rt=[],pt=h(it,nt,rt,!1,null,"058e6060");const lt=pt.exports,ct={name:"NcAppNavigation",components:{NcAppNavigationList:lt,NcAppNavigationToggle:R},inject:{setHasAppNavigation:{default:()=>()=>r.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:J()}},data(){return{open:!this.isMobile,focusTrap:null}},watch:{isMobile(){this.open=!this.isMobile,this.toggleFocusTrap()},open(){this.toggleFocusTrap()}},mounted(){this.setHasAppNavigation(!0),N("toggle-navigation",this.toggleNavigationByEventBus),l("navigation-toggled",{open:this.open}),this.focusTrap=q(this.$refs.appNavigationContainer,{allowOutsideClick:!0,fallbackFocus:this.$refs.appNavigationContainer,trapStack:K(),escapeDeactivates:!1}),this.toggleFocusTrap(),G("n",this.onKeyDown,{prevent:!0,stop:!0})},unmounted(){this.setHasAppNavigation(!1),f("toggle-navigation",this.toggleNavigationByEventBus),this.focusTrap.deactivate()},methods:{async toggleNavigation(t){if(this.open===t){l("navigation-toggled",{open:this.open});return}this.open=typeof t>"u"?!this.open:t;const o=getComputedStyle(document.body),e=parseInt(o.getPropertyValue("--animation-quick"))||100;this.open&&(await this.$nextTick(),this.focusFirstElement()),setTimeout(()=>{l("navigation-toggled",{open:this.open})},1.5*e)},toggleNavigationByEventBus({open:t}){this.toggleNavigation(t)},toggleFocusTrap(){this.isMobile&&this.open?this.focusTrap.activate():this.focusTrap.deactivate()},handleEsc(){this.isMobile&&this.open&&this.toggleNavigation(!1)},focusFirstElement(){const t=j(this.$refs.appNavigationContainer)[0];t&&(t.focus(),U.debug("Focusing first element in the navigation",{element:t}))},onKeyDown(t){if(t.key==="n"){if(!this.open){this.toggleNavigation(!0);return}this.isFocusWithinNavigation()&&this.toggleNavigation(!1)}},isFocusWithinNavigation(){const t=document.activeElement;return this.$refs.appNavigationContainer?.contains(t)}}};var dt=function(){var t=this,o=t._self._c;return o("div",{ref:"appNavigationContainer",staticClass:"app-navigation",class:{"app-navigation--close":!t.open}},[o("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){return!e.type.indexOf("key")&&t._k(e.keyCode,"esc",27,e.key,["Esc","Escape"])?null:t.handleEsc.apply(null,arguments)}}},[o("div",{staticClass:"app-navigation__search"},[t._t("search")],2),o("div",{staticClass:"app-navigation__body",class:{"app-navigation__body--no-list":!t.$scopedSlots.list}},[t._t("default")],2),t.$scopedSlots.list?o("NcAppNavigationList",{staticClass:"app-navigation__list"},[t._t("list")],2):t._e(),t._t("footer")],2),o("NcAppNavigationToggle",{attrs:{open:t.open},on:{"update:open":t.toggleNavigation}})],1)},ht=[],gt=h(ct,dt,ht,!1,null,"e8d5a9e1");const ut=gt.exports,mt={name:"NcAppSettingsSection",inject:["registerSection","unregisterSection"],props:{name:{type:String,required:!0},id:{type:String,required:!0,validator(t){return/^[a-z0-9\-_]+$/.test(t)}}},computed:{htmlId(){return"settings-section_"+this.id}},watch:{id(t,o){this.unregisterSection(o),this.registerSection(t,this.name,this.$slots?.icon)},name(t){this.unregisterSection(this.id),this.registerSection(this.id,t,this.$slots?.icon)}},mounted(){this.registerSection(this.id,this.name,this.$slots?.icon)},beforeDestroy(){this.unregisterSection(this.id)}};var vt=function(){var t=this,o=t._self._c;return o("section",{staticClass:"app-settings-section",attrs:{id:t.htmlId,"aria-labelledby":`${t.htmlId}--label`}},[o("h3",{staticClass:"app-settings-section__name",attrs:{id:`${t.htmlId}--label`}},[t._v(" "+t._s(t.name)+" ")]),t._t("default"),t._e()],2)},ft=[],Nt=h(mt,vt,ft,!1,null,"e970c9f7");const yt=Nt.exports,_t={name:"CroppedLayoutSettings",components:{NcCheckboxRadioSwitch:Q},computed:{croppedLayout(){return this.$store.state.userConfig.croppedLayout}},methods:{updateSetting(t){this.$store.dispatch("updateUserConfig",{key:"croppedLayout",value:t})}}};var St=function(){var t=this,o=t._self._c;return o("NcCheckboxRadioSwitch",{attrs:{checked:t.croppedLayout,type:"switch"},on:{"update:checked":t.updateSetting}},[t._v(" "+t._s(t.t("photos","Enable squared photos view"))+" ")])},bt=[],Ct=p(_t,St,bt,!1,null,null);const At=Ct.exports,wt=y({name:"PhotosUploadLocationSettings",components:{NcButton:v,PhotosFolder:et},data(){return{Home:L}},computed:{photosLocation(){return this.$store.state.userConfig.photosLocation}},methods:{debounceSelectPhotosFolder:X(function(){this.selectPhotosFolder()}),async selectPhotosFolder(){const t=await this.openFilePicker(a("photos","Select the default upload location for your media"));this.updatePhotosFolder(t)},async openFilePicker(t){return st(t).setMultiSelect(!1).addMimeTypeFilter("httpd/unix-directory").allowDirectories().startAt(this.photosLocation).addButton({label:a("photos","Pick folder"),callback:o=>s.debug("Picked",{nodes:o})}).build().pick()},updatePhotosFolder(t){this.$store.dispatch("updateUserConfig",{key:"photosLocation",value:t})},t:a}});var kt=function(){var t=this,o=t._self._c;return t._self._setupProxy,o("div",{staticClass:"photos-location"},[o("PhotosFolder",{attrs:{path:t.photosLocation,"root-folder-label":t.t("photos","Home"),"root-folder-icon":t.Home}}),o("NcButton",{attrs:{"aria-label":t.t("photos","Choose default Photos upload and Albums location")},on:{click:t.debounceSelectPhotosFolder}},[t._v(" "+t._s(t.t("photos","Choose a different folder"))+" ")])],1)},Pt=[],Lt=p(wt,kt,Pt,!1,null,"68dfad67");const Ft=Lt.exports,It={name:"SettingsDialog",components:{NcAppSettingsDialog:Y,NcAppSettingsSection:yt,CroppedLayoutSettings:At,PhotosSourceLocationsSettings:at,PhotosUploadLocationSettings:Ft},props:{open:{type:Boolean,default:!1}},methods:{onClose(){this.$emit("update:open",!1)},t:a}};var Mt=function(){var t=this,o=t._self._c;return o("NcAppSettingsDialog",{attrs:{open:t.open,"show-navigation":!0,name:t.t("photos","Photos settings")},on:{"update:open":t.onClose}},[o("NcAppSettingsSection",{attrs:{id:"layout-settings",name:t.t("photos","View")}},[o("CroppedLayoutSettings")],1),o("NcAppSettingsSection",{attrs:{id:"source-directories-settings",name:t.t("photos","Media folders")}},[o("div",{staticClass:"setting-section-subline"},[t._v(" "+t._s(t.t("photos","Choose the folders from where photos and videos are shown."))+" ")]),o("PhotosSourceLocationsSettings")],1),o("NcAppSettingsSection",{attrs:{id:"upload-directory-settings",name:t.t("photos","Upload folder")}},[o("div",{staticClass:"setting-section-subline"},[t._v(" "+t._s(t.t("photos","Choose the folder where photos and albums are uploaded to."))+" ")]),o("PhotosUploadLocationSettings")],1)],1)},Tt=[],Et=p(It,Mt,Tt,!1,null,null);const xt=Et.exports,m=d("photos","appStoreEnabled",!1),$t={name:"Photos",components:{AccountBoxMultipleOutline:W,Cog:V,CalendarToday:H,Camera:O,AccountGroup:D,Folder:B,FolderMultipleImage:z,ImageIcon:$,ShareVariant:x,Star:E,Tag:T,VideoIcon:M,MapIcon:I,MapMarker:F,NcAppContent:ot,NcAppNavigation:ut,NcAppNavigationItem:tt,NcButton:v,NcContent:Z,SettingsDialog:xt},data(){return{svgplaceholder:k,imgplaceholder:w,videoplaceholder:A,areTagsInstalled:C,showLocationMenuEntry:i()===null?!1:i().isAdmin&&m||b,showPeopleMenuEntry:i()===null?!1:i().isAdmin&&d("photos","showPeopleMenuEntry",!0)&&m||S,openedSettings:!1}},async beforeMount(){const t=d("photos","nomedia-paths",[]);this.$store.dispatch("setNomediaPaths",t),s.debug("Known .nomedia and .noimage paths",{files:t}),"serviceWorker"in navigator?window.addEventListener("load",()=>{navigator.serviceWorker.register(c("/apps/photos/service-worker.js",{},{noRewrite:!0}),{scope:c("/apps/photos")}).then(o=>{s.debug("SW registered: ",{registration:o})}).catch(o=>{s.error("SW registration failed: ",{registrationError:o})})}):s.debug("Service Worker is not enabled on this browser.")},beforeDestroy(){window.removeEventListener("load",()=>{navigator.serviceWorker.register(c("/apps/photos/service-worker.js",{},{noRewrite:!0}))})},methods:{showSettings(){this.openedSettings=!0},t:a}};var zt=function(){var t=this,o=t._self._c;return o("NcContent",{attrs:{"app-name":"photos"}},[o("NcAppNavigation",{attrs:{"aria-label":t.t("photos","Photos")},scopedSlots:t._u([{key:"list",fn:function(){return[o("NcAppNavigationItem",{staticClass:"app-navigation__all_media",attrs:{to:{name:"all_media"},name:t.t("photos","All media"),"data-id-app-nav-item":"all-media",exact:""}},[o("ImageIcon",{attrs:{slot:"icon",size:20},slot:"icon"})],1),o("NcAppNavigationItem",{attrs:{to:"/photos",name:t.t("photos","Photos"),"data-id-app-nav-item":"photos"}},[o("Camera",{attrs:{slot:"icon",size:20},slot:"icon"})],1),o("NcAppNavigationItem",{attrs:{to:"/videos",name:t.t("photos","Videos"),"data-id-app-nav-item":"videos"}},[o("VideoIcon",{attrs:{slot:"icon",size:20},slot:"icon"})],1),o("NcAppNavigationItem",{attrs:{to:{name:"albums"},name:t.t("photos","Albums"),"data-id-app-nav-item":"albums"}},[o("FolderMultipleImage",{attrs:{slot:"icon",size:20},slot:"icon"})],1),o("NcAppNavigationItem",{attrs:{to:{name:"sharedAlbums"},name:t.t("photos","Collaborative albums"),"data-id-app-nav-item":"sharedalbums"}},[o("AccountGroup",{attrs:{slot:"icon",size:20},slot:"icon"})],1),t.showPeopleMenuEntry?o("NcAppNavigationItem",{attrs:{to:{name:"faces"},name:t.t("photos","People"),"data-id-app-nav-item":"faces"},scopedSlots:t._u([{key:"icon",fn:function(){return[o("AccountBoxMultipleOutline",{attrs:{size:20}})]},proxy:!0}],null,!1,1224485484)}):t._e(),o("NcAppNavigationItem",{attrs:{to:{name:"folders"},name:t.t("photos","Folders"),"data-id-app-nav-item":"folders"}},[o("Folder",{attrs:{slot:"icon",size:20},slot:"icon"})],1),o("NcAppNavigationItem",{attrs:{to:"/favorites",name:t.t("photos","Favorites"),"data-id-app-nav-item":"favorites"}},[o("Star",{attrs:{slot:"icon",size:20},slot:"icon"})],1),o("NcAppNavigationItem",{attrs:{to:{name:"thisday"},name:t.t("photos","On this day"),"data-id-app-nav-item":"this-day"}},[o("CalendarToday",{attrs:{slot:"icon",size:20},slot:"icon"})],1),o("NcAppNavigationItem",{attrs:{to:{name:"shared"},name:t.t("photos","Shared with you"),"data-id-app-nav-item":"shared"}},[o("ShareVariant",{attrs:{slot:"icon",size:20},slot:"icon"})],1),t.areTagsInstalled?o("NcAppNavigationItem",{attrs:{to:{name:"tags"},name:t.t("photos","Tags"),"data-id-app-nav-item":"tags"}},[o("Tag",{attrs:{slot:"icon",size:20},slot:"icon"})],1):t._e(),o("NcAppNavigationItem",{attrs:{to:{name:"places"},name:t.t("photos","Places"),"data-id-app-nav-item":"places"}},[o("MapMarker",{attrs:{slot:"icon",size:20},slot:"icon"})],1),t.showLocationMenuEntry?o("NcAppNavigationItem",{attrs:{to:{name:"maps"},name:t.t("photos","Map"),"data-id-app-nav-item":"maps"}},[o("MapIcon",{attrs:{slot:"icon",size:20},slot:"icon"})],1):t._e()]},proxy:!0},{key:"footer",fn:function(){return[o("div",{staticClass:"app-navigation__footer"},[o("NcButton",{attrs:{type:"tertiary",alignment:"start",wide:""},on:{click:t.showSettings},scopedSlots:t._u([{key:"icon",fn:function(){return[o("Cog",{attrs:{slot:"icon",size:20},slot:"icon"})]},proxy:!0}])},[t._v(" "+t._s(t.t("photos","Photos settings"))+" ")])],1)]},proxy:!0}])}),o("NcAppContent",[o("RouterView"),o("span",{staticClass:"hidden-visually",attrs:{role:"none"},domProps:{innerHTML:t._s(t.svgplaceholder)}}),o("span",{staticClass:"hidden-visually",attrs:{role:"none"},domProps:{innerHTML:t._s(t.imgplaceholder)}}),o("span",{staticClass:"hidden-visually",attrs:{role:"none"},domProps:{innerHTML:t._s(t.videoplaceholder)}})],1),o("SettingsDialog",{attrs:{open:t.openedSettings},on:{"update:open":function(e){t.openedSettings=e}}})],1)},Bt=[],Dt=p($t,zt,Bt,!1,null,null);const Ot=Dt.exports;P.sync(u,g),r.prototype.t=a,r.prototype.n=_,n("nc:metadata-photos-size"),n("nc:metadata-files-live-photo"),n("nc:metadata-blurhash"),n("nc:metadata-photos-original_date_time"),window.addEventListener("DOMContentLoaded",()=>{window.OCA.Files||(window.OCA.Files={}),Object.assign(window.OCA.Files,{App:{fileList:{filesClient:OC.Files.getClient()}}},window.OCA.Files)}),new r({el:"#content",name:"PhotosRoot",router:g,store:u,render:t=>t(Ot)}); //# sourceMappingURL=photos-main.mjs.map diff --git a/js/photos-public.mjs b/js/photos-public.mjs index 43a8e3dea..3d6d88756 100644 --- a/js/photos-public.mjs +++ b/js/photos-public.mjs @@ -1,2 +1,2 @@ -import{v as a,i as l,a as p,b as d,c as n}from"./index-r_e2HRW6.chunk.mjs";import{_ as r,t as c,V as s,a as v}from"./vue.runtime.esm-CWuAmtQL.chunk.mjs";import{i as w,k as m,f as t,p as i}from"./index-DySs6xMI.chunk.mjs";import{n as h}from"./icons-DIHlkdtB.chunk.mjs";import"./preload-helper-Dh9HmuEY.chunk.mjs";import"./index-C-mleKoq.chunk.mjs";const u={name:"PhotosPublic",components:{NcAppContent:m,NcContent:w},data(){return{svgplaceholder:p,imgplaceholder:l,videoplaceholder:a}},async beforeMount(){"serviceWorker"in navigator?window.addEventListener("load",async()=>{try{const e=r("/apps/photos/service-worker.js",{},{noRewrite:!0}),o=await navigator.serviceWorker.register(e,{scope:r("/apps/photos")});t.debug("SW registered: ",{registration:o})}catch(e){t.error("SW registration failed: ",{error:e})}}):t.debug("Service Worker is not enabled on this browser.")},beforeDestroy(){window.removeEventListener("load",()=>{navigator.serviceWorker.register(r("/apps/photos/service-worker.js",{},{noRewrite:!0}))})}};var g=function(){var e=this,o=e._self._c;return o("NcContent",{attrs:{"app-name":"photos"}},[o("input",{attrs:{id:"isPublic",type:"hidden",name:"isPublic",value:"1"}}),o("NcAppContent",[o("router-view"),o("span",{staticClass:"hidden-visually",attrs:{role:"none"},domProps:{innerHTML:e._s(e.svgplaceholder)}}),o("span",{staticClass:"hidden-visually",attrs:{role:"none"},domProps:{innerHTML:e._s(e.imgplaceholder)}}),o("span",{staticClass:"hidden-visually",attrs:{role:"none"},domProps:{innerHTML:e._s(e.videoplaceholder)}})],1)],1)},C=[],f=h(u,g,C,!1,null,null);const b=f.exports;d.sync(i,n),s.prototype.t=c,s.prototype.n=v,window.addEventListener("DOMContentLoaded",()=>{window.OCA.Files||(window.OCA.Files={}),Object.assign(window.OCA.Files,{App:{fileList:{filesClient:OC.Files.getClient()}}},window.OCA.Files)}),new s({el:"#content",name:"PhotosRoot",router:n,store:i,render:e=>e(b)}); +import{v as a,i as l,a as p,b as d,c as n}from"./index-CuVencPr.chunk.mjs";import{_ as r,t as c,V as s,a as v}from"./vue.runtime.esm-CWuAmtQL.chunk.mjs";import{i as w,k as m,f as t,p as i}from"./index-DySs6xMI.chunk.mjs";import{n as h}from"./icons-DIHlkdtB.chunk.mjs";import"./preload-helper-Dh9HmuEY.chunk.mjs";import"./index-C-mleKoq.chunk.mjs";const u={name:"PhotosPublic",components:{NcAppContent:m,NcContent:w},data(){return{svgplaceholder:p,imgplaceholder:l,videoplaceholder:a}},async beforeMount(){"serviceWorker"in navigator?window.addEventListener("load",async()=>{try{const e=r("/apps/photos/service-worker.js",{},{noRewrite:!0}),o=await navigator.serviceWorker.register(e,{scope:r("/apps/photos")});t.debug("SW registered: ",{registration:o})}catch(e){t.error("SW registration failed: ",{error:e})}}):t.debug("Service Worker is not enabled on this browser.")},beforeDestroy(){window.removeEventListener("load",()=>{navigator.serviceWorker.register(r("/apps/photos/service-worker.js",{},{noRewrite:!0}))})}};var g=function(){var e=this,o=e._self._c;return o("NcContent",{attrs:{"app-name":"photos"}},[o("input",{attrs:{id:"isPublic",type:"hidden",name:"isPublic",value:"1"}}),o("NcAppContent",[o("router-view"),o("span",{staticClass:"hidden-visually",attrs:{role:"none"},domProps:{innerHTML:e._s(e.svgplaceholder)}}),o("span",{staticClass:"hidden-visually",attrs:{role:"none"},domProps:{innerHTML:e._s(e.imgplaceholder)}}),o("span",{staticClass:"hidden-visually",attrs:{role:"none"},domProps:{innerHTML:e._s(e.videoplaceholder)}})],1)],1)},C=[],f=h(u,g,C,!1,null,null);const b=f.exports;d.sync(i,n),s.prototype.t=c,s.prototype.n=v,window.addEventListener("DOMContentLoaded",()=>{window.OCA.Files||(window.OCA.Files={}),Object.assign(window.OCA.Files,{App:{fileList:{filesClient:OC.Files.getClient()}}},window.OCA.Files)}),new s({el:"#content",name:"PhotosRoot",router:n,store:i,render:e=>e(b)}); //# sourceMappingURL=photos-public.mjs.map diff --git a/src/views/Timeline.vue b/src/views/Timeline.vue index 293f32cc2..c8432b911 100644 --- a/src/views/Timeline.vue +++ b/src/views/Timeline.vue @@ -134,7 +134,7 @@