photos/js/photos-node_modules_vue-mat...

1 line
81 KiB
Plaintext
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

{"version":3,"file":"photos-node_modules_vue-material-design-icons_AlertCircle_vue-node_modules_vue-material-design-icons-ea65fb.js?v=7ee43ecfff4656e98b86","mappings":"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","sources":["webpack:///photos/src/mixins/FetchSharedAlbumsMixin.js","webpack:///photos/src/mixins/FilesByMonthMixin.js","webpack:///photos/src/components/FilesPicker.vue?vue&type=style&index=0&id=47d60cb6&prod&lang=scss&scoped=true","webpack:///photos/src/views/SharedAlbumContent.vue?vue&type=style&index=0&id=04f323df&prod&lang=scss&scoped=true","webpack:///photos/node_modules/vue-material-design-icons/AlertCircle.vue","webpack:///photos/node_modules/vue-material-design-icons/AlertCircle.vue?vue&type=script&lang=js","webpack://photos/./node_modules/vue-material-design-icons/AlertCircle.vue?489a","webpack:///photos/node_modules/vue-material-design-icons/AlertCircle.vue?vue&type=template&id=2a2453f8","webpack:///photos/node_modules/vue-material-design-icons/Delete.vue","webpack:///photos/node_modules/vue-material-design-icons/Delete.vue?vue&type=script&lang=js","webpack://photos/./node_modules/vue-material-design-icons/Delete.vue?92e1","webpack:///photos/node_modules/vue-material-design-icons/Delete.vue?vue&type=template&id=458c7ecb","webpack:///photos/node_modules/vue-material-design-icons/FolderMultipleImage.vue","webpack:///photos/node_modules/vue-material-design-icons/FolderMultipleImage.vue?vue&type=script&lang=js","webpack://photos/./node_modules/vue-material-design-icons/FolderMultipleImage.vue?f9dd","webpack:///photos/node_modules/vue-material-design-icons/FolderMultipleImage.vue?vue&type=template&id=497205fa","webpack:///photos/node_modules/vue-material-design-icons/ImagePlus.vue","webpack:///photos/node_modules/vue-material-design-icons/ImagePlus.vue?vue&type=script&lang=js","webpack://photos/./node_modules/vue-material-design-icons/ImagePlus.vue?8b12","webpack:///photos/node_modules/vue-material-design-icons/ImagePlus.vue?vue&type=template&id=6b6ee9f3","webpack:///photos/node_modules/vue-material-design-icons/MapMarker.vue","webpack:///photos/node_modules/vue-material-design-icons/MapMarker.vue?vue&type=script&lang=js","webpack://photos/./node_modules/vue-material-design-icons/MapMarker.vue?eeb6","webpack:///photos/node_modules/vue-material-design-icons/MapMarker.vue?vue&type=template&id=325b1348","webpack:///photos/node_modules/vue-material-design-icons/PackageVariant.vue","webpack:///photos/node_modules/vue-material-design-icons/PackageVariant.vue?vue&type=script&lang=js","webpack://photos/./node_modules/vue-material-design-icons/PackageVariant.vue?692c","webpack:///photos/node_modules/vue-material-design-icons/PackageVariant.vue?vue&type=template&id=9a5ab29c","webpack:///photos/node_modules/vue-material-design-icons/Plus.vue","webpack:///photos/node_modules/vue-material-design-icons/Plus.vue?vue&type=script&lang=js","webpack://photos/./node_modules/vue-material-design-icons/Plus.vue?80b4","webpack:///photos/node_modules/vue-material-design-icons/Plus.vue?vue&type=template&id=968bec46","webpack:///photos/node_modules/vue-material-design-icons/Video.vue","webpack:///photos/node_modules/vue-material-design-icons/Video.vue?vue&type=script&lang=js","webpack://photos/./node_modules/vue-material-design-icons/Video.vue?28ad","webpack:///photos/node_modules/vue-material-design-icons/Video.vue?vue&type=template&id=12752490","webpack://photos/./src/components/FilesPicker.vue?5a39","webpack:///photos/src/components/FilesPicker.vue","webpack:///photos/src/components/FilesPicker.vue?vue&type=script&lang=js","webpack://photos/./src/components/FilesPicker.vue?5118","webpack://photos/./src/components/FilesPicker.vue?2782","webpack://photos/./src/views/SharedAlbumContent.vue?2ff2","webpack:///photos/src/views/SharedAlbumContent.vue","webpack:///photos/src/views/SharedAlbumContent.vue?vue&type=script&lang=js","webpack://photos/./src/views/SharedAlbumContent.vue?846d","webpack://photos/./src/views/SharedAlbumContent.vue?a937"],"sourcesContent":["/**\n * @copyright Copyright (c) 2022 Louis Chemineau <louis@chmn.me>\n *\n * @author Louis Chemineau <louis@chmn.me>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nimport { mapGetters, mapActions } from 'vuex'\n\nimport { getCurrentUser } from '@nextcloud/auth'\n\nimport AbortControllerMixin from './AbortControllerMixin.js'\nimport { fetchAlbums } from '../services/Albums.js'\n\nexport default {\n\tname: 'FetchSharedAlbumsMixin',\n\n\tdata() {\n\t\treturn {\n\t\t\terrorFetchingAlbums: null,\n\t\t\tloadingAlbums: false,\n\t\t}\n\t},\n\n\tmixins: [\n\t\tAbortControllerMixin,\n\t],\n\n\tasync beforeMount() {\n\t\tthis.fetchAlbums()\n\t},\n\n\tcomputed: {\n\t\t...mapGetters([\n\t\t\t'sharedAlbums',\n\t\t]),\n\t},\n\n\tmethods: {\n\t\t...mapActions([\n\t\t\t'addSharedAlbums',\n\t\t]),\n\n\t\tasync fetchAlbums() {\n\t\t\tif (this.loadingAlbums) {\n\t\t\t\treturn\n\t\t\t}\n\n\t\t\ttry {\n\t\t\t\tthis.loadingAlbums = true\n\t\t\t\tthis.errorFetchingAlbums = null\n\n\t\t\t\tconst albums = await fetchAlbums(`/photos/${getCurrentUser()?.uid}/sharedalbums`, this.abortController.signal)\n\n\t\t\t\tthis.addSharedAlbums({ albums })\n\t\t\t} catch (error) {\n\t\t\t\tif (error.response?.status === 404) {\n\t\t\t\t\tthis.errorFetchingAlbums = 404\n\t\t\t\t} else {\n\t\t\t\t\tthis.errorFetchingAlbums = error\n\t\t\t\t}\n\t\t\t} finally {\n\t\t\t\tthis.loadingAlbums = false\n\t\t\t}\n\t\t},\n\t},\n}\n","/**\n * @copyright Copyright (c) 2022 Louis Chemineau <louis@chmn.me>\n *\n * @author Louis Chemineau <louis@chmn.me>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nexport default {\n\tname: 'FilesByMonthMixin',\n\n\tcomputed: {\n\t\t/**\n\t\t * @return {object<String, []>}\n\t\t */\n\t\tfileIdsByMonth() {\n\t\t\tconst filesByMonth = {}\n\t\t\tfor (const fileId of this.fetchedFileIds) {\n\t\t\t\tconst file = this.files[fileId]\n\t\t\t\tif (file) {\n\t\t\t\t\tfilesByMonth[file.month] = filesByMonth[file.month] ?? []\n\t\t\t\t\tfilesByMonth[file.month].push(file.fileid)\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Sort files in sections.\n\t\t\tObject.keys(filesByMonth)\n\t\t\t\t.forEach(month => filesByMonth[month].sort(this.sortFilesByTimestamp))\n\n\t\t\treturn filesByMonth\n\t\t},\n\n\t\t/**\n\t\t * @return {string[]}\n\t\t */\n\t\tmonthsList() {\n\t\t\treturn Object\n\t\t\t\t.keys(this.fileIdsByMonth)\n\t\t\t\t.sort((month1, month2) => month1 > month2 ? -1 : 1)\n\t\t},\n\t},\n\n\tmethods: {\n\t\t/**\n\t\t * @param {string} fileId1 The first file ID\n\t\t * @param {string} fileId2 The second file ID\n\t\t * @return {-1 | 1}\n\t\t */\n\t\tsortFilesByTimestamp(fileId1, fileId2) {\n\t\t\treturn this.files[fileId1].timestamp > this.files[fileId2].timestamp ? -1 : 1\n\t\t},\n\t},\n}\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".file-picker[data-v-47d60cb6]{display:flex;flex-direction:column;padding:12px}.file-picker__content[data-v-47d60cb6]{display:flex;align-items:flex-start;flex-grow:1;height:500px}.file-picker__navigation[data-v-47d60cb6]{flex-basis:200px;overflow:scroll;margin-right:8px;padding-right:8px;height:100%}@media only screen and (max-width: 1200px){.file-picker__navigation[data-v-47d60cb6]{flex-basis:100px}}.file-picker__navigation--placeholder[data-v-47d60cb6]{background:var(--color-primary-light);border-radius:var(--border-radius-large)}.file-picker__navigation__month[data-v-47d60cb6]{font-weight:bold;font-size:16px;border-radius:var(--border-radius-pill);padding:8px 16px;margin:4px 0;cursor:pointer}@media only screen and (max-width: 1200px){.file-picker__navigation__month[data-v-47d60cb6]{text-align:center}}.file-picker__navigation__month[data-v-47d60cb6]:hover{background:var(--color-background-dark)}.file-picker__navigation__month.selected[data-v-47d60cb6]{background:var(--color-primary-element-lighter)}.file-picker__file-list[data-v-47d60cb6]{flex-grow:1;min-width:0;height:100%}.file-picker__file-list--placeholder[data-v-47d60cb6]{background:var(--color-primary-light);border-radius:var(--border-radius-large)}.file-picker__file-list .section-header[data-v-47d60cb6]{font-weight:bold;font-size:20px;padding:8px 0 4px 0}.file-picker__file-list[data-v-47d60cb6] .empty-content{position:absolute;width:100%;margin-top:0;height:100%;display:flex;flex-direction:column;justify-content:center}.file-picker__actions[data-v-47d60cb6]{display:flex;justify-content:space-between;justify-items:center;padding-top:16px}\", \"\",{\"version\":3,\"sources\":[\"webpack://./src/components/FilesPicker.vue\"],\"names\":[],\"mappings\":\"AAEA,8BACC,YAAA,CACA,qBAAA,CACA,YAAA,CAEA,uCACC,YAAA,CACA,sBAAA,CACA,WAAA,CACA,YAAA,CAGD,0CACC,gBAAA,CACA,eAAA,CACA,gBAAA,CACA,iBAAA,CACA,WAAA,CAEA,2CAPD,0CAQE,gBAAA,CAAA,CAGD,uDACC,qCAAA,CACA,wCAAA,CAGD,iDACC,gBAAA,CACA,cAAA,CACA,uCAAA,CACA,gBAAA,CACA,YAAA,CACA,cAAA,CAEA,2CARD,iDASE,iBAAA,CAAA,CAGD,uDACC,uCAAA,CAGD,0DACC,+CAAA,CAKH,yCACC,WAAA,CACA,WAAA,CACA,WAAA,CAEA,sDACC,qCAAA,CACA,wCAAA,CAGD,yDACC,gBAAA,CACA,cAAA,CACA,mBAAA,CAGD,wDACC,iBAAA,CACA,UAAA,CACA,YAAA,CACA,WAAA,CACA,YAAA,CACA,qBAAA,CACA,sBAAA,CAIF,uCACC,YAAA,CACA,6BAAA,CACA,oBAAA,CACA,gBAAA\",\"sourcesContent\":[\"$sizes: (\\\"400\\\": (\\\"count\\\": 3, \\\"marginTop\\\": 66, \\\"marginW\\\": 8), \\\"700\\\": (\\\"count\\\": 4, \\\"marginTop\\\": 66, \\\"marginW\\\": 8), \\\"1024\\\": (\\\"count\\\": 5, \\\"marginTop\\\": 66, \\\"marginW\\\": 44), \\\"1280\\\": (\\\"count\\\": 4, \\\"marginTop\\\": 66, \\\"marginW\\\": 44), \\\"1440\\\": (\\\"count\\\": 5, \\\"marginTop\\\": 88, \\\"marginW\\\": 66), \\\"1600\\\": (\\\"count\\\": 6, \\\"marginTop\\\": 88, \\\"marginW\\\": 66), \\\"2048\\\": (\\\"count\\\": 7, \\\"marginTop\\\": 88, \\\"marginW\\\": 66), \\\"2560\\\": (\\\"count\\\": 8, \\\"marginTop\\\": 88, \\\"marginW\\\": 88), \\\"3440\\\": (\\\"count\\\": 9, \\\"marginTop\\\": 88, \\\"marginW\\\": 88), \\\"max\\\": (\\\"count\\\": 10, \\\"marginTop\\\": 88, \\\"marginW\\\": 88));\\n\\n.file-picker {\\n\\tdisplay: flex;\\n\\tflex-direction: column;\\n\\tpadding: 12px;\\n\\n\\t&__content {\\n\\t\\tdisplay: flex;\\n\\t\\talign-items: flex-start;\\n\\t\\tflex-grow: 1;\\n\\t\\theight: 500px;\\n\\t}\\n\\n\\t&__navigation {\\n\\t\\tflex-basis: 200px;\\n\\t\\toverflow: scroll;\\n\\t\\tmargin-right: 8px;\\n\\t\\tpadding-right: 8px;\\n\\t\\theight: 100%;\\n\\n\\t\\t@media only screen and (max-width: 1200px) {\\n\\t\\t\\tflex-basis: 100px;\\n\\t\\t}\\n\\n\\t\\t&--placeholder {\\n\\t\\t\\tbackground: var(--color-primary-light);\\n\\t\\t\\tborder-radius: var(--border-radius-large);\\n\\t\\t}\\n\\n\\t\\t&__month {\\n\\t\\t\\tfont-weight: bold;\\n\\t\\t\\tfont-size: 16px;\\n\\t\\t\\tborder-radius: var(--border-radius-pill);\\n\\t\\t\\tpadding: 8px 16px;\\n\\t\\t\\tmargin: 4px 0;\\n\\t\\t\\tcursor: pointer;\\n\\n\\t\\t\\t@media only screen and (max-width: 1200px) {\\n\\t\\t\\t\\ttext-align: center;\\n\\t\\t\\t}\\n\\n\\t\\t\\t&:hover {\\n\\t\\t\\t\\tbackground: var(--color-background-dark);\\n\\t\\t\\t}\\n\\n\\t\\t\\t&.selected {\\n\\t\\t\\t\\tbackground: var(--color-primary-element-lighter);\\n\\t\\t\\t}\\n\\t\\t}\\n\\t}\\n\\n\\t&__file-list {\\n\\t\\tflex-grow: 1;\\n\\t\\tmin-width: 0;\\n\\t\\theight: 100%;\\n\\n\\t\\t&--placeholder {\\n\\t\\t\\tbackground: var(--color-primary-light);\\n\\t\\t\\tborder-radius: var(--border-radius-large);\\n\\t\\t}\\n\\n\\t\\t.section-header {\\n\\t\\t\\tfont-weight: bold;\\n\\t\\t\\tfont-size: 20px;\\n\\t\\t\\tpadding: 8px 0 4px 0;\\n\\t\\t}\\n\\n\\t\\t:deep(.empty-content) {\\n\\t\\t\\tposition: absolute;\\n\\t\\t\\twidth: 100%;\\n\\t\\t\\tmargin-top: 0;\\n\\t\\t\\theight: 100%;\\n\\t\\t\\tdisplay: flex;\\n\\t\\t\\tflex-direction: column;\\n\\t\\t\\tjustify-content: center;\\n\\t\\t}\\n\\t}\\n\\n\\t&__actions {\\n\\t\\tdisplay: flex;\\n\\t\\tjustify-content: space-between;\\n\\t\\tjustify-items: center;\\n\\t\\tpadding-top: 16px;\\n\\t}\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".album[data-v-04f323df]{display:flex;flex-direction:column}.album__title[data-v-04f323df]{width:100%}.album__name[data-v-04f323df]{overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.album__location[data-v-04f323df]{margin-left:-4px;display:flex;color:var(--color-text-lighter)}\", \"\",{\"version\":3,\"sources\":[\"webpack://./src/views/SharedAlbumContent.vue\"],\"names\":[],\"mappings\":\"AAEA,wBACC,YAAA,CACA,qBAAA,CAEA,+BACC,UAAA,CAGD,8BACC,eAAA,CACA,kBAAA,CACA,sBAAA,CAGD,kCACC,gBAAA,CACA,YAAA,CACA,+BAAA\",\"sourcesContent\":[\"$sizes: (\\\"400\\\": (\\\"count\\\": 3, \\\"marginTop\\\": 66, \\\"marginW\\\": 8), \\\"700\\\": (\\\"count\\\": 4, \\\"marginTop\\\": 66, \\\"marginW\\\": 8), \\\"1024\\\": (\\\"count\\\": 5, \\\"marginTop\\\": 66, \\\"marginW\\\": 44), \\\"1280\\\": (\\\"count\\\": 4, \\\"marginTop\\\": 66, \\\"marginW\\\": 44), \\\"1440\\\": (\\\"count\\\": 5, \\\"marginTop\\\": 88, \\\"marginW\\\": 66), \\\"1600\\\": (\\\"count\\\": 6, \\\"marginTop\\\": 88, \\\"marginW\\\": 66), \\\"2048\\\": (\\\"count\\\": 7, \\\"marginTop\\\": 88, \\\"marginW\\\": 66), \\\"2560\\\": (\\\"count\\\": 8, \\\"marginTop\\\": 88, \\\"marginW\\\": 88), \\\"3440\\\": (\\\"count\\\": 9, \\\"marginTop\\\": 88, \\\"marginW\\\": 88), \\\"max\\\": (\\\"count\\\": 10, \\\"marginTop\\\": 88, \\\"marginW\\\": 88));\\n\\n.album {\\n\\tdisplay: flex;\\n\\tflex-direction: column;\\n\\n\\t&__title {\\n\\t\\twidth: 100%;\\n\\t}\\n\\n\\t&__name {\\n\\t\\toverflow: hidden;\\n\\t\\twhite-space: nowrap;\\n\\t\\ttext-overflow: ellipsis;\\n\\t}\\n\\n\\t&__location {\\n\\t\\tmargin-left: -4px;\\n\\t\\tdisplay: flex;\\n\\t\\tcolor: var(--color-text-lighter);\\n\\t}\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","<template>\n <span v-bind=\"$attrs\"\n :aria-hidden=\"!title\"\n :aria-label=\"title\"\n class=\"material-design-icon alert-circle-icon\"\n role=\"img\"\n @click=\"$emit('click', $event)\">\n <svg :fill=\"fillColor\"\n class=\"material-design-icon__svg\"\n :width=\"size\"\n :height=\"size\"\n viewBox=\"0 0 24 24\">\n <path d=\"M13,13H11V7H13M13,17H11V15H13M12,2A10,10 0 0,0 2,12A10,10 0 0,0 12,22A10,10 0 0,0 22,12A10,10 0 0,0 12,2Z\">\n <title v-if=\"title\">{{ title }}</title>\n </path>\n </svg>\n </span>\n</template>\n\n<script>\nexport default {\n name: \"AlertCircleIcon\",\n emits: ['click'],\n props: {\n title: {\n type: String,\n },\n fillColor: {\n type: String,\n default: \"currentColor\"\n },\n size: {\n type: Number,\n default: 24\n }\n }\n}\n</script>","import mod from \"-!../vue-loader/lib/index.js??vue-loader-options!./AlertCircle.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../vue-loader/lib/index.js??vue-loader-options!./AlertCircle.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./AlertCircle.vue?vue&type=template&id=2a2453f8\"\nimport script from \"./AlertCircle.vue?vue&type=script&lang=js\"\nexport * from \"./AlertCircle.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('span',_vm._b({staticClass:\"material-design-icon alert-circle-icon\",attrs:{\"aria-hidden\":!_vm.title,\"aria-label\":_vm.title,\"role\":\"img\"},on:{\"click\":function($event){return _vm.$emit('click', $event)}}},'span',_vm.$attrs,false),[_c('svg',{staticClass:\"material-design-icon__svg\",attrs:{\"fill\":_vm.fillColor,\"width\":_vm.size,\"height\":_vm.size,\"viewBox\":\"0 0 24 24\"}},[_c('path',{attrs:{\"d\":\"M13,13H11V7H13M13,17H11V15H13M12,2A10,10 0 0,0 2,12A10,10 0 0,0 12,22A10,10 0 0,0 22,12A10,10 0 0,0 12,2Z\"}},[(_vm.title)?_c('title',[_vm._v(_vm._s(_vm.title))]):_vm._e()])])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<template>\n <span v-bind=\"$attrs\"\n :aria-hidden=\"!title\"\n :aria-label=\"title\"\n class=\"material-design-icon delete-icon\"\n role=\"img\"\n @click=\"$emit('click', $event)\">\n <svg :fill=\"fillColor\"\n class=\"material-design-icon__svg\"\n :width=\"size\"\n :height=\"size\"\n viewBox=\"0 0 24 24\">\n <path d=\"M19,4H15.5L14.5,3H9.5L8.5,4H5V6H19M6,19A2,2 0 0,0 8,21H16A2,2 0 0,0 18,19V7H6V19Z\">\n <title v-if=\"title\">{{ title }}</title>\n </path>\n </svg>\n </span>\n</template>\n\n<script>\nexport default {\n name: \"DeleteIcon\",\n emits: ['click'],\n props: {\n title: {\n type: String,\n },\n fillColor: {\n type: String,\n default: \"currentColor\"\n },\n size: {\n type: Number,\n default: 24\n }\n }\n}\n</script>","import mod from \"-!../vue-loader/lib/index.js??vue-loader-options!./Delete.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../vue-loader/lib/index.js??vue-loader-options!./Delete.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./Delete.vue?vue&type=template&id=458c7ecb\"\nimport script from \"./Delete.vue?vue&type=script&lang=js\"\nexport * from \"./Delete.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('span',_vm._b({staticClass:\"material-design-icon delete-icon\",attrs:{\"aria-hidden\":!_vm.title,\"aria-label\":_vm.title,\"role\":\"img\"},on:{\"click\":function($event){return _vm.$emit('click', $event)}}},'span',_vm.$attrs,false),[_c('svg',{staticClass:\"material-design-icon__svg\",attrs:{\"fill\":_vm.fillColor,\"width\":_vm.size,\"height\":_vm.size,\"viewBox\":\"0 0 24 24\"}},[_c('path',{attrs:{\"d\":\"M19,4H15.5L14.5,3H9.5L8.5,4H5V6H19M6,19A2,2 0 0,0 8,21H16A2,2 0 0,0 18,19V7H6V19Z\"}},[(_vm.title)?_c('title',[_vm._v(_vm._s(_vm.title))]):_vm._e()])])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<template>\n <span v-bind=\"$attrs\"\n :aria-hidden=\"!title\"\n :aria-label=\"title\"\n class=\"material-design-icon folder-multiple-image-icon\"\n role=\"img\"\n @click=\"$emit('click', $event)\">\n <svg :fill=\"fillColor\"\n class=\"material-design-icon__svg\"\n :width=\"size\"\n :height=\"size\"\n viewBox=\"0 0 24 24\">\n <path d=\"M7,15L11.5,9L15,13.5L17.5,10.5L21,15M22,4H14L12,2H6A2,2 0 0,0 4,4V16A2,2 0 0,0 6,18H22A2,2 0 0,0 24,16V6A2,2 0 0,0 22,4M2,6H0V11H0V20A2,2 0 0,0 2,22H20V20H2V6Z\">\n <title v-if=\"title\">{{ title }}</title>\n </path>\n </svg>\n </span>\n</template>\n\n<script>\nexport default {\n name: \"FolderMultipleImageIcon\",\n emits: ['click'],\n props: {\n title: {\n type: String,\n },\n fillColor: {\n type: String,\n default: \"currentColor\"\n },\n size: {\n type: Number,\n default: 24\n }\n }\n}\n</script>","import mod from \"-!../vue-loader/lib/index.js??vue-loader-options!./FolderMultipleImage.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../vue-loader/lib/index.js??vue-loader-options!./FolderMultipleImage.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./FolderMultipleImage.vue?vue&type=template&id=497205fa\"\nimport script from \"./FolderMultipleImage.vue?vue&type=script&lang=js\"\nexport * from \"./FolderMultipleImage.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('span',_vm._b({staticClass:\"material-design-icon folder-multiple-image-icon\",attrs:{\"aria-hidden\":!_vm.title,\"aria-label\":_vm.title,\"role\":\"img\"},on:{\"click\":function($event){return _vm.$emit('click', $event)}}},'span',_vm.$attrs,false),[_c('svg',{staticClass:\"material-design-icon__svg\",attrs:{\"fill\":_vm.fillColor,\"width\":_vm.size,\"height\":_vm.size,\"viewBox\":\"0 0 24 24\"}},[_c('path',{attrs:{\"d\":\"M7,15L11.5,9L15,13.5L17.5,10.5L21,15M22,4H14L12,2H6A2,2 0 0,0 4,4V16A2,2 0 0,0 6,18H22A2,2 0 0,0 24,16V6A2,2 0 0,0 22,4M2,6H0V11H0V20A2,2 0 0,0 2,22H20V20H2V6Z\"}},[(_vm.title)?_c('title',[_vm._v(_vm._s(_vm.title))]):_vm._e()])])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<template>\n <span v-bind=\"$attrs\"\n :aria-hidden=\"!title\"\n :aria-label=\"title\"\n class=\"material-design-icon image-plus-icon\"\n role=\"img\"\n @click=\"$emit('click', $event)\">\n <svg :fill=\"fillColor\"\n class=\"material-design-icon__svg\"\n :width=\"size\"\n :height=\"size\"\n viewBox=\"0 0 24 24\">\n <path d=\"M18 15V18H15V20H18V23H20V20H23V18H20V15H18M13.3 21H5C3.9 21 3 20.1 3 19V5C3 3.9 3.9 3 5 3H19C20.1 3 21 3.9 21 5V13.3C20.4 13.1 19.7 13 19 13C17.9 13 16.8 13.3 15.9 13.9L14.5 12L11 16.5L8.5 13.5L5 18H13.1C13 18.3 13 18.7 13 19C13 19.7 13.1 20.4 13.3 21Z\">\n <title v-if=\"title\">{{ title }}</title>\n </path>\n </svg>\n </span>\n</template>\n\n<script>\nexport default {\n name: \"ImagePlusIcon\",\n emits: ['click'],\n props: {\n title: {\n type: String,\n },\n fillColor: {\n type: String,\n default: \"currentColor\"\n },\n size: {\n type: Number,\n default: 24\n }\n }\n}\n</script>","import mod from \"-!../vue-loader/lib/index.js??vue-loader-options!./ImagePlus.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../vue-loader/lib/index.js??vue-loader-options!./ImagePlus.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./ImagePlus.vue?vue&type=template&id=6b6ee9f3\"\nimport script from \"./ImagePlus.vue?vue&type=script&lang=js\"\nexport * from \"./ImagePlus.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('span',_vm._b({staticClass:\"material-design-icon image-plus-icon\",attrs:{\"aria-hidden\":!_vm.title,\"aria-label\":_vm.title,\"role\":\"img\"},on:{\"click\":function($event){return _vm.$emit('click', $event)}}},'span',_vm.$attrs,false),[_c('svg',{staticClass:\"material-design-icon__svg\",attrs:{\"fill\":_vm.fillColor,\"width\":_vm.size,\"height\":_vm.size,\"viewBox\":\"0 0 24 24\"}},[_c('path',{attrs:{\"d\":\"M18 15V18H15V20H18V23H20V20H23V18H20V15H18M13.3 21H5C3.9 21 3 20.1 3 19V5C3 3.9 3.9 3 5 3H19C20.1 3 21 3.9 21 5V13.3C20.4 13.1 19.7 13 19 13C17.9 13 16.8 13.3 15.9 13.9L14.5 12L11 16.5L8.5 13.5L5 18H13.1C13 18.3 13 18.7 13 19C13 19.7 13.1 20.4 13.3 21Z\"}},[(_vm.title)?_c('title',[_vm._v(_vm._s(_vm.title))]):_vm._e()])])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<template>\n <span v-bind=\"$attrs\"\n :aria-hidden=\"!title\"\n :aria-label=\"title\"\n class=\"material-design-icon map-marker-icon\"\n role=\"img\"\n @click=\"$emit('click', $event)\">\n <svg :fill=\"fillColor\"\n class=\"material-design-icon__svg\"\n :width=\"size\"\n :height=\"size\"\n viewBox=\"0 0 24 24\">\n <path d=\"M12,11.5A2.5,2.5 0 0,1 9.5,9A2.5,2.5 0 0,1 12,6.5A2.5,2.5 0 0,1 14.5,9A2.5,2.5 0 0,1 12,11.5M12,2A7,7 0 0,0 5,9C5,14.25 12,22 12,22C12,22 19,14.25 19,9A7,7 0 0,0 12,2Z\">\n <title v-if=\"title\">{{ title }}</title>\n </path>\n </svg>\n </span>\n</template>\n\n<script>\nexport default {\n name: \"MapMarkerIcon\",\n emits: ['click'],\n props: {\n title: {\n type: String,\n },\n fillColor: {\n type: String,\n default: \"currentColor\"\n },\n size: {\n type: Number,\n default: 24\n }\n }\n}\n</script>","import mod from \"-!../vue-loader/lib/index.js??vue-loader-options!./MapMarker.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../vue-loader/lib/index.js??vue-loader-options!./MapMarker.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./MapMarker.vue?vue&type=template&id=325b1348\"\nimport script from \"./MapMarker.vue?vue&type=script&lang=js\"\nexport * from \"./MapMarker.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('span',_vm._b({staticClass:\"material-design-icon map-marker-icon\",attrs:{\"aria-hidden\":!_vm.title,\"aria-label\":_vm.title,\"role\":\"img\"},on:{\"click\":function($event){return _vm.$emit('click', $event)}}},'span',_vm.$attrs,false),[_c('svg',{staticClass:\"material-design-icon__svg\",attrs:{\"fill\":_vm.fillColor,\"width\":_vm.size,\"height\":_vm.size,\"viewBox\":\"0 0 24 24\"}},[_c('path',{attrs:{\"d\":\"M12,11.5A2.5,2.5 0 0,1 9.5,9A2.5,2.5 0 0,1 12,6.5A2.5,2.5 0 0,1 14.5,9A2.5,2.5 0 0,1 12,11.5M12,2A7,7 0 0,0 5,9C5,14.25 12,22 12,22C12,22 19,14.25 19,9A7,7 0 0,0 12,2Z\"}},[(_vm.title)?_c('title',[_vm._v(_vm._s(_vm.title))]):_vm._e()])])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<template>\n <span v-bind=\"$attrs\"\n :aria-hidden=\"!title\"\n :aria-label=\"title\"\n class=\"material-design-icon package-variant-icon\"\n role=\"img\"\n @click=\"$emit('click', $event)\">\n <svg :fill=\"fillColor\"\n class=\"material-design-icon__svg\"\n :width=\"size\"\n :height=\"size\"\n viewBox=\"0 0 24 24\">\n <path d=\"M2,10.96C1.5,10.68 1.35,10.07 1.63,9.59L3.13,7C3.24,6.8 3.41,6.66 3.6,6.58L11.43,2.18C11.59,2.06 11.79,2 12,2C12.21,2 12.41,2.06 12.57,2.18L20.47,6.62C20.66,6.72 20.82,6.88 20.91,7.08L22.36,9.6C22.64,10.08 22.47,10.69 22,10.96L21,11.54V16.5C21,16.88 20.79,17.21 20.47,17.38L12.57,21.82C12.41,21.94 12.21,22 12,22C11.79,22 11.59,21.94 11.43,21.82L3.53,17.38C3.21,17.21 3,16.88 3,16.5V10.96C2.7,11.13 2.32,11.14 2,10.96M12,4.15V4.15L12,10.85V10.85L17.96,7.5L12,4.15M5,15.91L11,19.29V12.58L5,9.21V15.91M19,15.91V12.69L14,15.59C13.67,15.77 13.3,15.76 13,15.6V19.29L19,15.91M13.85,13.36L20.13,9.73L19.55,8.72L13.27,12.35L13.85,13.36Z\">\n <title v-if=\"title\">{{ title }}</title>\n </path>\n </svg>\n </span>\n</template>\n\n<script>\nexport default {\n name: \"PackageVariantIcon\",\n emits: ['click'],\n props: {\n title: {\n type: String,\n },\n fillColor: {\n type: String,\n default: \"currentColor\"\n },\n size: {\n type: Number,\n default: 24\n }\n }\n}\n</script>","import mod from \"-!../vue-loader/lib/index.js??vue-loader-options!./PackageVariant.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../vue-loader/lib/index.js??vue-loader-options!./PackageVariant.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./PackageVariant.vue?vue&type=template&id=9a5ab29c\"\nimport script from \"./PackageVariant.vue?vue&type=script&lang=js\"\nexport * from \"./PackageVariant.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('span',_vm._b({staticClass:\"material-design-icon package-variant-icon\",attrs:{\"aria-hidden\":!_vm.title,\"aria-label\":_vm.title,\"role\":\"img\"},on:{\"click\":function($event){return _vm.$emit('click', $event)}}},'span',_vm.$attrs,false),[_c('svg',{staticClass:\"material-design-icon__svg\",attrs:{\"fill\":_vm.fillColor,\"width\":_vm.size,\"height\":_vm.size,\"viewBox\":\"0 0 24 24\"}},[_c('path',{attrs:{\"d\":\"M2,10.96C1.5,10.68 1.35,10.07 1.63,9.59L3.13,7C3.24,6.8 3.41,6.66 3.6,6.58L11.43,2.18C11.59,2.06 11.79,2 12,2C12.21,2 12.41,2.06 12.57,2.18L20.47,6.62C20.66,6.72 20.82,6.88 20.91,7.08L22.36,9.6C22.64,10.08 22.47,10.69 22,10.96L21,11.54V16.5C21,16.88 20.79,17.21 20.47,17.38L12.57,21.82C12.41,21.94 12.21,22 12,22C11.79,22 11.59,21.94 11.43,21.82L3.53,17.38C3.21,17.21 3,16.88 3,16.5V10.96C2.7,11.13 2.32,11.14 2,10.96M12,4.15V4.15L12,10.85V10.85L17.96,7.5L12,4.15M5,15.91L11,19.29V12.58L5,9.21V15.91M19,15.91V12.69L14,15.59C13.67,15.77 13.3,15.76 13,15.6V19.29L19,15.91M13.85,13.36L20.13,9.73L19.55,8.72L13.27,12.35L13.85,13.36Z\"}},[(_vm.title)?_c('title',[_vm._v(_vm._s(_vm.title))]):_vm._e()])])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<template>\n <span v-bind=\"$attrs\"\n :aria-hidden=\"!title\"\n :aria-label=\"title\"\n class=\"material-design-icon plus-icon\"\n role=\"img\"\n @click=\"$emit('click', $event)\">\n <svg :fill=\"fillColor\"\n class=\"material-design-icon__svg\"\n :width=\"size\"\n :height=\"size\"\n viewBox=\"0 0 24 24\">\n <path d=\"M19,13H13V19H11V13H5V11H11V5H13V11H19V13Z\">\n <title v-if=\"title\">{{ title }}</title>\n </path>\n </svg>\n </span>\n</template>\n\n<script>\nexport default {\n name: \"PlusIcon\",\n emits: ['click'],\n props: {\n title: {\n type: String,\n },\n fillColor: {\n type: String,\n default: \"currentColor\"\n },\n size: {\n type: Number,\n default: 24\n }\n }\n}\n</script>","import mod from \"-!../vue-loader/lib/index.js??vue-loader-options!./Plus.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../vue-loader/lib/index.js??vue-loader-options!./Plus.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./Plus.vue?vue&type=template&id=968bec46\"\nimport script from \"./Plus.vue?vue&type=script&lang=js\"\nexport * from \"./Plus.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('span',_vm._b({staticClass:\"material-design-icon plus-icon\",attrs:{\"aria-hidden\":!_vm.title,\"aria-label\":_vm.title,\"role\":\"img\"},on:{\"click\":function($event){return _vm.$emit('click', $event)}}},'span',_vm.$attrs,false),[_c('svg',{staticClass:\"material-design-icon__svg\",attrs:{\"fill\":_vm.fillColor,\"width\":_vm.size,\"height\":_vm.size,\"viewBox\":\"0 0 24 24\"}},[_c('path',{attrs:{\"d\":\"M19,13H13V19H11V13H5V11H11V5H13V11H19V13Z\"}},[(_vm.title)?_c('title',[_vm._v(_vm._s(_vm.title))]):_vm._e()])])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<template>\n <span v-bind=\"$attrs\"\n :aria-hidden=\"!title\"\n :aria-label=\"title\"\n class=\"material-design-icon video-icon\"\n role=\"img\"\n @click=\"$emit('click', $event)\">\n <svg :fill=\"fillColor\"\n class=\"material-design-icon__svg\"\n :width=\"size\"\n :height=\"size\"\n viewBox=\"0 0 24 24\">\n <path d=\"M17,10.5V7A1,1 0 0,0 16,6H4A1,1 0 0,0 3,7V17A1,1 0 0,0 4,18H16A1,1 0 0,0 17,17V13.5L21,17.5V6.5L17,10.5Z\">\n <title v-if=\"title\">{{ title }}</title>\n </path>\n </svg>\n </span>\n</template>\n\n<script>\nexport default {\n name: \"VideoIcon\",\n emits: ['click'],\n props: {\n title: {\n type: String,\n },\n fillColor: {\n type: String,\n default: \"currentColor\"\n },\n size: {\n type: Number,\n default: 24\n }\n }\n}\n</script>","import mod from \"-!../vue-loader/lib/index.js??vue-loader-options!./Video.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../vue-loader/lib/index.js??vue-loader-options!./Video.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./Video.vue?vue&type=template&id=12752490\"\nimport script from \"./Video.vue?vue&type=script&lang=js\"\nexport * from \"./Video.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('span',_vm._b({staticClass:\"material-design-icon video-icon\",attrs:{\"aria-hidden\":!_vm.title,\"aria-label\":_vm.title,\"role\":\"img\"},on:{\"click\":function($event){return _vm.$emit('click', $event)}}},'span',_vm.$attrs,false),[_c('svg',{staticClass:\"material-design-icon__svg\",attrs:{\"fill\":_vm.fillColor,\"width\":_vm.size,\"height\":_vm.size,\"viewBox\":\"0 0 24 24\"}},[_c('path',{attrs:{\"d\":\"M17,10.5V7A1,1 0 0,0 16,6H4A1,1 0 0,0 3,7V17A1,1 0 0,0 4,18H16A1,1 0 0,0 17,17V13.5L21,17.5V6.5L17,10.5Z\"}},[(_vm.title)?_c('title',[_vm._v(_vm._s(_vm.title))]):_vm._e()])])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{staticClass:\"file-picker\"},[_c('div',{staticClass:\"file-picker__content\"},[_c('div',{staticClass:\"file-picker__navigation\",class:{'file-picker__navigation--placeholder': _vm.monthsList.length === 0}},_vm._l((_vm.monthsList),function(month){return _c('div',{key:month,staticClass:\"file-picker__navigation__month\",class:{selected: _vm.targetMonth === month},on:{\"click\":function($event){_vm.targetMonth = month}}},[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_vm._f(\"dateMonthAndYear\")(month))+\"\\n\\t\\t\\t\")])}),0),_vm._v(\" \"),_c('FilesListViewer',{staticClass:\"file-picker__file-list\",class:{'file-picker__file-list--placeholder': _vm.monthsList.length === 0},attrs:{\"file-ids-by-section\":_vm.fileIdsByMonth,\"empty-message\":_vm.t('photos', 'There are no photos or videos yet!'),\"sections\":_vm.monthsList,\"loading\":_vm.loadingFiles,\"base-height\":100,\"section-header-height\":50,\"scroll-to-section\":_vm.targetMonth},on:{\"need-content\":_vm.getFiles},scopedSlots:_vm._u([{key:\"default\",fn:function({file, height, visibility}){return [(file.sectionHeader)?_c('h3',{staticClass:\"section-header\",style:({ height: `${height}px`}),attrs:{\"id\":`file-picker-section-header-${file.id}`}},[_vm._v(\"\\n\\t\\t\\t\\t\\t\"+_vm._s(_vm._f(\"dateMonthAndYear\")(file.id))+\"\\n\\t\\t\\t\\t\")]):_c('File',{attrs:{\"file\":_vm.files[file.id],\"allow-selection\":true,\"selected\":_vm.selection[file.id] === true,\"visibility\":visibility,\"semaphore\":_vm.semaphore},on:{\"select-toggled\":_vm.onFileSelectToggle}})]}}])})],1),_vm._v(\" \"),_c('div',{staticClass:\"file-picker__actions\"},[_c('UploadPicker',{attrs:{\"accept\":_vm.allowedMimes,\"context\":_vm.uploadContext,\"destination\":_vm.photosLocation,\"multiple\":true},on:{\"uploaded\":_vm.refreshFiles}}),_vm._v(\" \"),_c('NcButton',{attrs:{\"type\":\"primary\",\"disabled\":_vm.loading || _vm.selectedFileIds.length === 0},on:{\"click\":_vm.emitPickedEvent},scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [(!_vm.loading)?_c('ImagePlus'):_vm._e(),_vm._v(\" \"),(_vm.loading)?_c('NcLoadingIcon'):_vm._e()]},proxy:true}])},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.t('photos', 'Add to {destination}', { destination: _vm.destination }))+\"\\n\\t\\t\")])],1)])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<!--\n - @copyright Copyright (c) 2022 Louis Chemineau <louis@chmn.me>\n -\n - @author Louis Chemineau <louis@chmn.me>\n -\n - @license AGPL-3.0-or-later\n -\n - This program is free software: you can redistribute it and/or modify\n - it under the terms of the GNU Affero General Public License as\n - published by the Free Software Foundation, either version 3 of the\n - License, or (at your option) any later version.\n -\n - This program is distributed in the hope that it will be useful,\n - but WITHOUT ANY WARRANTY; without even the implied warranty of\n - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n - GNU Affero General Public License for more details.\n -\n - You should have received a copy of the GNU Affero General Public License\n - along with this program. If not, see <http://www.gnu.org/licenses/>.\n -\n -->\n<template>\n\t<div class=\"file-picker\">\n\t\t<div class=\"file-picker__content\">\n\t\t\t<div class=\"file-picker__navigation\"\n\t\t\t\t:class=\"{'file-picker__navigation--placeholder': monthsList.length === 0}\">\n\t\t\t\t<div v-for=\"month in monthsList\"\n\t\t\t\t\t:key=\"month\"\n\t\t\t\t\tclass=\"file-picker__navigation__month\"\n\t\t\t\t\t:class=\"{selected: targetMonth === month}\"\n\t\t\t\t\t@click=\"targetMonth = month\">\n\t\t\t\t\t{{ month | dateMonthAndYear }}\n\t\t\t\t</div>\n\t\t\t</div>\n\n\t\t\t<FilesListViewer class=\"file-picker__file-list\"\n\t\t\t\t:class=\"{'file-picker__file-list--placeholder': monthsList.length === 0}\"\n\t\t\t\t:file-ids-by-section=\"fileIdsByMonth\"\n\t\t\t\t:empty-message=\"t('photos', 'There are no photos or videos yet!')\"\n\t\t\t\t:sections=\"monthsList\"\n\t\t\t\t:loading=\"loadingFiles\"\n\t\t\t\t:base-height=\"100\"\n\t\t\t\t:section-header-height=\"50\"\n\t\t\t\t:scroll-to-section=\"targetMonth\"\n\t\t\t\t@need-content=\"getFiles\">\n\t\t\t\t<template slot-scope=\"{file, height, visibility}\">\n\t\t\t\t\t<h3 v-if=\"file.sectionHeader\"\n\t\t\t\t\t\t:id=\"`file-picker-section-header-${file.id}`\"\n\t\t\t\t\t\t:style=\"{ height: `${height}px`}\"\n\t\t\t\t\t\tclass=\"section-header\">\n\t\t\t\t\t\t{{ file.id | dateMonthAndYear }}\n\t\t\t\t\t</h3>\n\n\t\t\t\t\t<File v-else\n\t\t\t\t\t\t:file=\"files[file.id]\"\n\t\t\t\t\t\t:allow-selection=\"true\"\n\t\t\t\t\t\t:selected=\"selection[file.id] === true\"\n\t\t\t\t\t\t:visibility=\"visibility\"\n\t\t\t\t\t\t:semaphore=\"semaphore\"\n\t\t\t\t\t\t@select-toggled=\"onFileSelectToggle\" />\n\t\t\t\t</template>\n\t\t\t</FilesListViewer>\n\t\t</div>\n\n\t\t<div class=\"file-picker__actions\">\n\t\t\t<UploadPicker :accept=\"allowedMimes\"\n\t\t\t\t:context=\"uploadContext\"\n\t\t\t\t:destination=\"photosLocation\"\n\t\t\t\t:multiple=\"true\"\n\t\t\t\t@uploaded=\"refreshFiles\" />\n\t\t\t<NcButton type=\"primary\" :disabled=\"loading || selectedFileIds.length === 0\" @click=\"emitPickedEvent\">\n\t\t\t\t<template #icon>\n\t\t\t\t\t<ImagePlus v-if=\"!loading\" />\n\t\t\t\t\t<NcLoadingIcon v-if=\"loading\" />\n\t\t\t\t</template>\n\t\t\t\t{{ t('photos', 'Add to {destination}', { destination }) }}\n\t\t\t</NcButton>\n\t\t</div>\n\t</div>\n</template>\n\n<script>\nimport { mapGetters } from 'vuex'\nimport { NcButton, NcLoadingIcon } from '@nextcloud/vue'\nimport { UploadPicker } from '@nextcloud/upload'\nimport moment from '@nextcloud/moment'\n\nimport ImagePlus from 'vue-material-design-icons/ImagePlus.vue'\n\nimport FilesListViewer from './FilesListViewer.vue'\nimport File from './File.vue'\n\nimport FetchFilesMixin from '../mixins/FetchFilesMixin.js'\nimport FilesSelectionMixin from '../mixins/FilesSelectionMixin.js'\nimport FilesByMonthMixin from '../mixins/FilesByMonthMixin.js'\nimport UserConfig from '../mixins/UserConfig.js'\nimport allowedMimes from '../services/AllowedMimes.js'\n\nexport default {\n\tname: 'FilesPicker',\n\n\tcomponents: {\n\t\tFile,\n\t\tFilesListViewer,\n\t\tImagePlus,\n\t\tNcButton,\n\t\tNcLoadingIcon,\n\t\tUploadPicker,\n\t},\n\n\tfilters: {\n\t\t/**\n\t\t * @param {string} date - In the following format: YYYYMM\n\t\t */\n\t\tdateMonthAndYear(date) {\n\t\t\treturn moment(date, 'YYYYMM').format('MMMM YYYY')\n\t\t},\n\t},\n\tmixins: [\n\t\tFetchFilesMixin,\n\t\tFilesByMonthMixin,\n\t\tFilesSelectionMixin,\n\t\tUserConfig,\n\t],\n\n\tprops: {\n\t\t// Label to show in the submit button.\n\t\tdestination: {\n\t\t\ttype: String,\n\t\t\trequired: true,\n\t\t},\n\n\t\t// List of file ids to not show.\n\t\tblacklistIds: {\n\t\t\ttype: Array,\n\t\t\tdefault: () => [],\n\t\t},\n\n\t\t// Whether we should disable the submit button and show a spinner.\n\t\tloading: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: false,\n\t\t},\n\t},\n\n\tdata() {\n\t\treturn {\n\t\t\tallowedMimes,\n\t\t\ttargetMonth: null,\n\t\t\tuploadContext: {\n\t\t\t\troute: 'albumpicker',\n\t\t\t},\n\t\t}\n\t},\n\n\tcomputed: {\n\t\t...mapGetters([\n\t\t\t'files',\n\t\t]),\n\t},\n\n\twatch: {\n\t\tmonthsList(value) {\n\t\t\tif (this.targetMonth === null) {\n\t\t\t\tthis.targetMonth = value[0]\n\t\t\t}\n\t\t},\n\t},\n\n\tmethods: {\n\t\tgetFiles() {\n\t\t\tthis.fetchFiles('', {}, this.blacklistIds)\n\t\t},\n\n\t\trefreshFiles() {\n\t\t\tthis.fetchFiles('', { firstResult: 0 }, [...this.blacklistIds, ...this.fetchedFileIds], true)\n\t\t},\n\n\t\temitPickedEvent() {\n\t\t\tthis.$emit('files-picked', this.selectedFileIds)\n\t\t},\n\t},\n}\n</script>\n\n<style lang=\"scss\" scoped>\n.file-picker {\n\tdisplay: flex;\n\tflex-direction: column;\n\tpadding: 12px;\n\n\t&__content {\n\t\tdisplay: flex;\n\t\talign-items: flex-start;\n\t\tflex-grow: 1;\n\t\theight: 500px;\n\t}\n\n\t&__navigation {\n\t\tflex-basis: 200px;\n\t\toverflow: scroll;\n\t\tmargin-right: 8px;\n\t\tpadding-right: 8px;\n\t\theight: 100%;\n\n\t\t@media only screen and (max-width: 1200px) {\n\t\t\tflex-basis: 100px;\n\t\t}\n\n\t\t&--placeholder {\n\t\t\tbackground: var(--color-primary-light);\n\t\t\tborder-radius: var(--border-radius-large);\n\t\t}\n\n\t\t&__month {\n\t\t\tfont-weight: bold;\n\t\t\tfont-size: 16px;\n\t\t\tborder-radius: var(--border-radius-pill);\n\t\t\tpadding: 8px 16px;\n\t\t\tmargin: 4px 0;\n\t\t\tcursor: pointer;\n\n\t\t\t@media only screen and (max-width: 1200px) {\n\t\t\t\ttext-align: center;\n\t\t\t}\n\n\t\t\t&:hover {\n\t\t\t\tbackground: var(--color-background-dark);\n\t\t\t}\n\n\t\t\t&.selected {\n\t\t\t\tbackground: var(--color-primary-element-lighter);\n\t\t\t}\n\t\t}\n\t}\n\n\t&__file-list {\n\t\tflex-grow: 1;\n\t\tmin-width: 0;\n\t\theight: 100%;\n\n\t\t&--placeholder {\n\t\t\tbackground: var(--color-primary-light);\n\t\t\tborder-radius: var(--border-radius-large);\n\t\t}\n\n\t\t.section-header {\n\t\t\tfont-weight: bold;\n\t\t\tfont-size: 20px;\n\t\t\tpadding: 8px 0 4px 0;\n\t\t}\n\n\t\t:deep(.empty-content) {\n\t\t\tposition: absolute;\n\t\t\twidth: 100%;\n\t\t\tmargin-top: 0;\n\t\t\theight: 100%;\n\t\t\tdisplay: flex;\n\t\t\tflex-direction: column;\n\t\t\tjustify-content: center;\n\t\t}\n\t}\n\n\t&__actions {\n\t\tdisplay: flex;\n\t\tjustify-content: space-between;\n\t\tjustify-items: center;\n\t\tpadding-top: 16px;\n\t}\n}\n</style>\n","import mod from \"-!../../node_modules/babel-loader/lib/index.js!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FilesPicker.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../node_modules/babel-loader/lib/index.js!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FilesPicker.vue?vue&type=script&lang=js\"","\n import API from \"!../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../node_modules/css-loader/dist/cjs.js!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/dist/cjs.js!../../node_modules/sass-loader/dist/cjs.js??clonedRuleSet-2.use[3]!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FilesPicker.vue?vue&type=style&index=0&id=47d60cb6&prod&lang=scss&scoped=true\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../node_modules/css-loader/dist/cjs.js!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/dist/cjs.js!../../node_modules/sass-loader/dist/cjs.js??clonedRuleSet-2.use[3]!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FilesPicker.vue?vue&type=style&index=0&id=47d60cb6&prod&lang=scss&scoped=true\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./FilesPicker.vue?vue&type=template&id=47d60cb6&scoped=true\"\nimport script from \"./FilesPicker.vue?vue&type=script&lang=js\"\nexport * from \"./FilesPicker.vue?vue&type=script&lang=js\"\nimport style0 from \"./FilesPicker.vue?vue&type=style&index=0&id=47d60cb6&prod&lang=scss&scoped=true\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"47d60cb6\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',[(true)?_c('CollectionContent',{ref:\"collectionContent\",attrs:{\"collection\":_vm.album,\"collection-file-ids\":_vm.albumFileIds,\"semaphore\":_vm.semaphore,\"loading\":_vm.loadingAlbums || _vm.loadingFiles,\"error\":_vm.errorFetchingAlbums || _vm.errorFetchingFiles},scopedSlots:_vm._u([{key:\"header\",fn:function({selectedFileIds, resetSelection}){return _c('HeaderNavigation',{key:\"navigation\",attrs:{\"loading\":_vm.loadingFiles,\"params\":{ albumName: _vm.albumName },\"path\":'/' + _vm.albumName,\"title\":_vm.albumOriginalName},on:{\"refresh\":_vm.fetchAlbumContent}},[(_vm.album.location !== '')?_c('div',{staticClass:\"album__location\",attrs:{\"slot\":\"subtitle\"},slot:\"subtitle\"},[_c('MapMarker'),_vm._v(_vm._s(_vm.album.location)+\" ⸱ \"+_vm._s(_vm.t('photos', 'Shared by'))+\" \"),_c('NcUserBubble',{attrs:{\"display-name\":_vm.album.collaborators[0].label,\"user\":_vm.album.collaborators[0].id}})],1):_vm._e(),_vm._v(\" \"),_c('template',{slot:\"default\"},[(selectedFileIds.length > 0)?_c('NcButton',{attrs:{\"aria-label\":_vm.t('photos', 'Unselect all')},on:{\"click\":resetSelection},scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [_c('Close')]},proxy:true}],null,true)},[_vm._v(\"\\n\\t\\t\\t\\t\\t\"+_vm._s(_vm.t('photos', 'Unselect all'))+\"\\n\\t\\t\\t\\t\")]):_vm._e()],1),_vm._v(\" \"),(_vm.album !== undefined)?_c('template',{slot:\"right\"},[(_vm.album.nbItems !== 0)?_c('NcButton',{attrs:{\"type\":\"tertiary\",\"aria-label\":_vm.t('photos', 'Add photos to this album')},on:{\"click\":function($event){_vm.showAddPhotosModal = true}}},[_c('Plus',{attrs:{\"slot\":\"icon\"},slot:\"icon\"})],1):_vm._e(),_vm._v(\" \"),_c('NcActions',{attrs:{\"force-menu\":true,\"aria-label\":_vm.t('photos', 'Open actions menu')}},[_c('NcActionButton',{attrs:{\"close-after-click\":true},on:{\"click\":_vm.handleDeleteAlbum}},[_vm._v(\"\\n\\t\\t\\t\\t\\t\\t\"+_vm._s(_vm.t('photos', 'Delete album'))+\"\\n\\t\\t\\t\\t\\t\\t\"),_c('Delete',{attrs:{\"slot\":\"icon\"},slot:\"icon\"})],1),_vm._v(\" \"),(selectedFileIds.length > 0)?[_c('NcActionSeparator'),_vm._v(\" \"),_c('NcActionButton',{attrs:{\"close-after-click\":true},on:{\"click\":function($event){return _vm.handleRemoveFilesFromAlbum(selectedFileIds)}}},[_vm._v(\"\\n\\t\\t\\t\\t\\t\\t\\t\"+_vm._s(_vm.t('photos', 'Remove selection from album'))+\"\\n\\t\\t\\t\\t\\t\\t\\t\"),_c('Close',{attrs:{\"slot\":\"icon\"},slot:\"icon\"})],1)]:_vm._e()],2)],1):_vm._e()],2)}}],null,false,1297611229)},[_vm._v(\" \"),_c('NcEmptyContent',{staticClass:\"album__empty\",attrs:{\"slot\":\"empty-content\",\"title\":_vm.t('photos', 'This album does not have any photos or videos yet!')},slot:\"empty-content\"},[_c('ImagePlus',{attrs:{\"slot\":\"icon\"},slot:\"icon\"}),_vm._v(\" \"),_c('NcButton',{attrs:{\"slot\":\"action\",\"type\":\"primary\",\"aria-label\":_vm.t('photos', 'Add photos to this album')},on:{\"click\":function($event){_vm.showAddPhotosModal = true}},slot:\"action\"},[_c('Plus',{attrs:{\"slot\":\"icon\"},slot:\"icon\"}),_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_vm.t('photos', \"Add\"))+\"\\n\\t\\t\\t\")],1)],1)],1):_vm._e(),_vm._v(\" \"),(_vm.showAddPhotosModal)?_c('NcModal',{attrs:{\"size\":\"large\",\"title\":_vm.t('photos', 'Add photos to the album')},on:{\"close\":function($event){_vm.showAddPhotosModal = false}}},[_c('FilesPicker',{attrs:{\"destination\":_vm.album.basename,\"blacklist-ids\":_vm.albumFileIds,\"loading\":_vm.loadingAddFilesToAlbum},on:{\"files-picked\":_vm.handleFilesPicked}})],1):_vm._e()],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<!--\n - @copyright Copyright (c) 2022 Louis Chemineau <louis@chmn.me>\n -\n - @author Louis Chemineau <louis@chmn.me>\n -\n - @license AGPL-3.0-or-later\n -\n - This program is free software: you can redistribute it and/or modify\n - it under the terms of the GNU Affero General Public License as\n - published by the Free Software Foundation, either version 3 of the\n - License, or (at your option) any later version.\n -\n - This program is distributed in the hope that it will be useful,\n - but WITHOUT ANY WARRANTY; without even the implied warranty of\n - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n - GNU Affero General Public License for more details.\n -\n - You should have received a copy of the GNU Affero General Public License\n - along with this program. If not, see <http://www.gnu.org/licenses/>.\n -\n -->\n<template>\n\t<div>\n\t\t<CollectionContent v-if=\"true\"\n\t\t\tref=\"collectionContent\"\n\t\t\t:collection=\"album\"\n\t\t\t:collection-file-ids=\"albumFileIds\"\n\t\t\t:semaphore=\"semaphore\"\n\t\t\t:loading=\"loadingAlbums || loadingFiles\"\n\t\t\t:error=\"errorFetchingAlbums || errorFetchingFiles\">\n\t\t\t<!-- Header -->\n\t\t\t<HeaderNavigation key=\"navigation\"\n\t\t\t\tslot=\"header\"\n\t\t\t\tslot-scope=\"{selectedFileIds, resetSelection}\"\n\t\t\t\t:loading=\"loadingFiles\"\n\t\t\t\t:params=\"{ albumName }\"\n\t\t\t\t:path=\"'/' + albumName\"\n\t\t\t\t:title=\"albumOriginalName\"\n\t\t\t\t@refresh=\"fetchAlbumContent\">\n\t\t\t\t<!-- <UploadPicker :accept=\"allowedMimes\"\n\t\t\t\t:destination=\"folder.filename\"\n\t\t\t\t:multiple=\"true\"\n\t\t\t\t@uploaded=\"onUpload\" /> -->\n\n\t\t\t\t<div v-if=\"album.location !== ''\" slot=\"subtitle\" class=\"album__location\">\n\t\t\t\t\t<MapMarker />{{ album.location }} ⸱ {{ t('photos', 'Shared by') }}&nbsp;<NcUserBubble :display-name=\"album.collaborators[0].label\" :user=\"album.collaborators[0].id\" />\n\t\t\t\t</div>\n\n\t\t\t\t<template slot=\"default\">\n\t\t\t\t\t<NcButton v-if=\"selectedFileIds.length > 0\"\n\t\t\t\t\t\t:aria-label=\"t('photos', 'Unselect all')\"\n\t\t\t\t\t\t@click=\"resetSelection\">\n\t\t\t\t\t\t<template #icon>\n\t\t\t\t\t\t\t<Close />\n\t\t\t\t\t\t</template>\n\t\t\t\t\t\t{{ t('photos', 'Unselect all') }}\n\t\t\t\t\t</NcButton>\n\t\t\t\t</template>\n\n\t\t\t\t<template v-if=\"album !== undefined\" slot=\"right\">\n\t\t\t\t\t<NcButton v-if=\"album.nbItems !== 0\"\n\t\t\t\t\t\ttype=\"tertiary\"\n\t\t\t\t\t\t:aria-label=\"t('photos', 'Add photos to this album')\"\n\t\t\t\t\t\t@click=\"showAddPhotosModal = true\">\n\t\t\t\t\t\t<Plus slot=\"icon\" />\n\t\t\t\t\t</NcButton>\n\n\t\t\t\t\t<NcActions :force-menu=\"true\" :aria-label=\"t('photos', 'Open actions menu')\">\n\t\t\t\t\t\t<!-- TODO: enable download on shared albums -->\n\t\t\t\t\t\t<!-- <ActionDownload v-if=\"albumFileIds.length > 0\"\n\t\t\t\t\t\t\t:selected-file-ids=\"albumFileIds\"\n\t\t\t\t\t\t\t:title=\"t('photos', 'Download all files in album')\">\n\t\t\t\t\t\t\t<DownloadMultiple slot=\"icon\" />\n\t\t\t\t\t\t</ActionDownload> -->\n\n\t\t\t\t\t\t<NcActionButton :close-after-click=\"true\"\n\t\t\t\t\t\t\t@click=\"handleDeleteAlbum\">\n\t\t\t\t\t\t\t{{ t('photos', 'Delete album') }}\n\t\t\t\t\t\t\t<Delete slot=\"icon\" />\n\t\t\t\t\t\t</NcActionButton>\n\n\t\t\t\t\t\t<template v-if=\"selectedFileIds.length > 0\">\n\t\t\t\t\t\t\t<NcActionSeparator />\n\n\t\t\t\t\t\t\t<!-- TODO: enable download on shared albums -->\n\t\t\t\t\t\t\t<!-- <ActionDownload :selected-file-ids=\"selectedFileIds\" :title=\"t('photos', 'Download selected files')\">\n\t\t\t\t\t\t\t\t<Download slot=\"icon\" />\n\t\t\t\t\t\t\t</ActionDownload> -->\n\n\t\t\t\t\t\t\t<NcActionButton :close-after-click=\"true\"\n\t\t\t\t\t\t\t\t@click=\"handleRemoveFilesFromAlbum(selectedFileIds)\">\n\t\t\t\t\t\t\t\t{{ t('photos', 'Remove selection from album') }}\n\t\t\t\t\t\t\t\t<Close slot=\"icon\" />\n\t\t\t\t\t\t\t</NcActionButton>\n\t\t\t\t\t\t</template>\n\t\t\t\t\t</NcActions>\n\t\t\t\t</template>\n\t\t\t</HeaderNavigation>\n\n\t\t\t<!-- No content -->\n\t\t\t<NcEmptyContent slot=\"empty-content\"\n\t\t\t\t:title=\"t('photos', 'This album does not have any photos or videos yet!')\"\n\t\t\t\tclass=\"album__empty\">\n\t\t\t\t<ImagePlus slot=\"icon\" />\n\n\t\t\t\t<NcButton slot=\"action\"\n\t\t\t\t\ttype=\"primary\"\n\t\t\t\t\t:aria-label=\"t('photos', 'Add photos to this album')\"\n\t\t\t\t\t@click=\"showAddPhotosModal = true\">\n\t\t\t\t\t<Plus slot=\"icon\" />\n\t\t\t\t\t{{ t('photos', \"Add\") }}\n\t\t\t\t</NcButton>\n\t\t\t</NcEmptyContent>\n\t\t</CollectionContent>\n\n\t\t<!-- Modals -->\n\t\t<NcModal v-if=\"showAddPhotosModal\"\n\t\t\tsize=\"large\"\n\t\t\t:title=\"t('photos', 'Add photos to the album')\"\n\t\t\t@close=\"showAddPhotosModal = false\">\n\t\t\t<FilesPicker :destination=\"album.basename\"\n\t\t\t\t:blacklist-ids=\"albumFileIds\"\n\t\t\t\t:loading=\"loadingAddFilesToAlbum\"\n\t\t\t\t@files-picked=\"handleFilesPicked\" />\n\t\t</NcModal>\n\t</div>\n</template>\n\n<script>\nimport { mapActions, mapGetters } from 'vuex'\nimport MapMarker from 'vue-material-design-icons/MapMarker.vue'\nimport Plus from 'vue-material-design-icons/Plus.vue'\nimport Delete from 'vue-material-design-icons/Delete.vue'\nimport ImagePlus from 'vue-material-design-icons/ImagePlus.vue'\nimport Close from 'vue-material-design-icons/Close.vue'\n// import Download from 'vue-material-design-icons/Download.vue'\n// import DownloadMultiple from 'vue-material-design-icons/DownloadMultiple.vue'\n\nimport { NcActions, NcActionButton, NcButton, NcModal, NcEmptyContent, NcActionSeparator, NcUserBubble, isMobile } from '@nextcloud/vue'\nimport { getCurrentUser } from '@nextcloud/auth'\n\nimport FetchSharedAlbumsMixin from '../mixins/FetchSharedAlbumsMixin.js'\nimport FetchFilesMixin from '../mixins/FetchFilesMixin.js'\nimport AbortControllerMixin from '../mixins/AbortControllerMixin.js'\nimport CollectionContent from '../components/Collection/CollectionContent.vue'\nimport HeaderNavigation from '../components/HeaderNavigation.vue'\n// import ActionDownload from '../components/Actions/ActionDownload.vue'\nimport FilesPicker from '../components/FilesPicker.vue'\nimport logger from '../services/logger.js'\nimport client from '../services/DavClient.js'\nimport DavRequest from '../services/DavRequest.js'\nimport { genFileInfo } from '../utils/fileUtils.js'\nimport { translate } from '@nextcloud/l10n'\n\nexport default {\n\tname: 'SharedAlbumContent',\n\tcomponents: {\n\t\tMapMarker,\n\t\tPlus,\n\t\tClose,\n\t\t// Download,\n\t\t// DownloadMultiple,\n\t\tDelete,\n\t\tImagePlus,\n\t\tNcEmptyContent,\n\t\tNcActions,\n\t\tNcActionButton,\n\t\tNcActionSeparator,\n\t\tNcButton,\n\t\tNcModal,\n\t\tNcUserBubble,\n\t\tCollectionContent,\n\t\t// ActionDownload,\n\t\tFilesPicker,\n\t\tHeaderNavigation,\n\t},\n\n\tmixins: [\n\t\tFetchSharedAlbumsMixin,\n\t\tFetchFilesMixin,\n\t\tAbortControllerMixin,\n\t\tisMobile,\n\t],\n\n\tprops: {\n\t\talbumName: {\n\t\t\ttype: String,\n\t\t\tdefault: '/',\n\t\t},\n\t},\n\n\tdata() {\n\t\treturn {\n\t\t\tshowAddPhotosModal: false,\n\t\t\tloadingCount: 0,\n\t\t\tloadingAddFilesToAlbum: false,\n\t\t}\n\t},\n\n\tcomputed: {\n\t\t...mapGetters([\n\t\t\t'files',\n\t\t\t'sharedAlbumsFiles',\n\t\t]),\n\n\t\t/**\n\t\t * @return {object} The album information for the current albumName.\n\t\t */\n\t\talbum() {\n\t\t\treturn this.sharedAlbums[this.albumName] || {}\n\t\t},\n\n\t\t/**\n\t\t * @return {string[]} The list of files for the current albumName.\n\t\t */\n\t\talbumFileIds() {\n\t\t\treturn this.sharedAlbumsFiles[this.albumName] || []\n\t\t},\n\n\t\t/**\n\t\t * @return {string} The album name without the userId between parentheses.\n\t\t */\n\t\talbumOriginalName() {\n\t\t\treturn this.albumName.replace(new RegExp(`\\\\(${this.album.collaborators[0].id}\\\\)$`), '')\n\t\t},\n\t},\n\n\twatch: {\n\t\talbum() {\n\t\t\tthis.fetchAlbumContent()\n\t\t},\n\t},\n\n\tmethods: {\n\t\t...mapActions([\n\t\t\t'appendFiles',\n\t\t\t'deleteSharedAlbum',\n\t\t\t'addFilesToSharedAlbum',\n\t\t\t'removeFilesFromSharedAlbum',\n\t\t]),\n\n\t\tasync fetchAlbumContent() {\n\t\t\tif (this.loadingFiles || this.showEditAlbumForm) {\n\t\t\t\treturn []\n\t\t\t}\n\n\t\t\tconst semaphoreSymbol = await this.semaphore.acquire(() => 0, 'fetchFiles')\n\t\t\tconst fetchSemaphoreSymbol = await this.fetchSemaphore.acquire()\n\n\t\t\ttry {\n\t\t\t\tthis.errorFetchingFiles = null\n\t\t\t\tthis.loadingFiles = true\n\t\t\t\tthis.semaphoreSymbol = semaphoreSymbol\n\n\t\t\t\tconst response = await client.getDirectoryContents(\n\t\t\t\t\t`/photos/${getCurrentUser()?.uid}/sharedalbums/${this.albumName}`,\n\t\t\t\t\t{\n\t\t\t\t\t\tdata: DavRequest,\n\t\t\t\t\t\tdetails: true,\n\t\t\t\t\t\tsignal: this.abortController.signal,\n\t\t\t\t\t}\n\t\t\t\t)\n\n\t\t\t\tconst fetchedFiles = response.data\n\t\t\t\t\t.map(file => genFileInfo(file))\n\n\t\t\t\tconst fileIds = fetchedFiles\n\t\t\t\t\t.map(file => file.fileid)\n\t\t\t\t\t.map((fileId) => fileId.toString())\n\n\t\t\t\tthis.appendFiles(fetchedFiles)\n\n\t\t\t\tif (fetchedFiles.length > 0) {\n\t\t\t\t\tawait this.$store.commit('addFilesToSharedAlbum', { albumName: this.albumName, fileIdsToAdd: fileIds })\n\t\t\t\t}\n\n\t\t\t\tlogger.debug(`[SharedAlbumContent] Fetched ${fileIds.length} new files: `, fileIds)\n\t\t\t} catch (error) {\n\t\t\t\tif (error.response?.status === 404) {\n\t\t\t\t\tthis.errorFetchingFiles = 404\n\t\t\t\t} else if (error.code === 'ERR_CANCELED') {\n\t\t\t\t\treturn\n\t\t\t\t} else {\n\t\t\t\t\tthis.errorFetchingFiles = error\n\t\t\t\t}\n\n\t\t\t\t// cancelled request, moving on...\n\t\t\t\tlogger.error('[SharedAlbumContent] Error fetching album files', { error })\n\t\t\t} finally {\n\t\t\t\tthis.loadingFiles = false\n\t\t\t\tthis.semaphore.release(semaphoreSymbol)\n\t\t\t\tthis.fetchSemaphore.release(fetchSemaphoreSymbol)\n\t\t\t}\n\n\t\t\treturn []\n\t\t},\n\n\t\tasync handleFilesPicked(fileIds) {\n\t\t\tthis.showAddPhotosModal = false\n\t\t\tawait this.addFilesToSharedAlbum({ albumName: this.albumName, fileIdsToAdd: fileIds })\n\t\t\t// Re-fetch album content to have the proper filenames.\n\t\t\tawait this.fetchAlbumContent()\n\t\t},\n\n\t\tasync handleRemoveFilesFromAlbum(fileIds) {\n\t\t\tthis.$refs.collectionContent.onUncheckFiles(fileIds)\n\t\t\tawait this.removeFilesFromSharedAlbum({ albumName: this.albumName, fileIdsToRemove: fileIds })\n\t\t},\n\n\t\tasync handleDeleteAlbum() {\n\t\t\tawait this.deleteSharedAlbum({ albumName: this.albumName })\n\t\t\tthis.$router.push('/sharedalbums')\n\t\t},\n\n\t\tt: translate,\n\t},\n}\n</script>\n<style lang=\"scss\" scoped>\n.album {\n\tdisplay: flex;\n\tflex-direction: column;\n\n\t&__title {\n\t\twidth: 100%;\n\t}\n\n\t&__name {\n\t\toverflow: hidden;\n\t\twhite-space: nowrap;\n\t\ttext-overflow: ellipsis;\n\t}\n\n\t&__location {\n\t\tmargin-left: -4px;\n\t\tdisplay: flex;\n\t\tcolor: var(--color-text-lighter);\n\t}\n}\n</style>\n","import mod from \"-!../../node_modules/babel-loader/lib/index.js!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SharedAlbumContent.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../node_modules/babel-loader/lib/index.js!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SharedAlbumContent.vue?vue&type=script&lang=js\"","\n import API from \"!../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../node_modules/css-loader/dist/cjs.js!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/dist/cjs.js!../../node_modules/sass-loader/dist/cjs.js??clonedRuleSet-2.use[3]!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SharedAlbumContent.vue?vue&type=style&index=0&id=04f323df&prod&lang=scss&scoped=true\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../node_modules/css-loader/dist/cjs.js!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/dist/cjs.js!../../node_modules/sass-loader/dist/cjs.js??clonedRuleSet-2.use[3]!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SharedAlbumContent.vue?vue&type=style&index=0&id=04f323df&prod&lang=scss&scoped=true\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./SharedAlbumContent.vue?vue&type=template&id=04f323df&scoped=true\"\nimport script from \"./SharedAlbumContent.vue?vue&type=script&lang=js\"\nexport * from \"./SharedAlbumContent.vue?vue&type=script&lang=js\"\nimport style0 from \"./SharedAlbumContent.vue?vue&type=style&index=0&id=04f323df&prod&lang=scss&scoped=true\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"04f323df\",\n null\n \n)\n\nexport default component.exports"],"names":["name","data","errorFetchingAlbums","loadingAlbums","mixins","AbortControllerMixin","async","this","fetchAlbums","computed","mapGetters","methods","mapActions","_getCurrentUser","albums","concat","getCurrentUser","uid","abortController","signal","addSharedAlbums","error","_error$response","response","status","fileIdsByMonth","filesByMonth","fileId","fetchedFileIds","file","files","_filesByMonth$file$mo","month","push","fileid","Object","keys","forEach","sort","sortFilesByTimestamp","monthsList","month1","month2","fileId1","fileId2","timestamp","___CSS_LOADER_EXPORT___","module","id","emits","props","title","type","String","fillColor","default","size","Number","_vm","_c","_self","_b","staticClass","attrs","on","$event","$emit","$attrs","_v","_s","_e","components","File","FilesListViewer","ImagePlus","NcButton","NcLoadingIcon","UploadPicker","filters","dateMonthAndYear","date","moment","format","FetchFilesMixin","FilesByMonthMixin","FilesSelectionMixin","UserConfig","destination","required","blacklistIds","Array","loading","Boolean","allowedMimes","targetMonth","uploadContext","route","watch","value","getFiles","fetchFiles","refreshFiles","firstResult","emitPickedEvent","selectedFileIds","options","styleTagTransform","setAttributes","insert","domAPI","insertStyleElement","class","length","_l","key","selected","_f","t","loadingFiles","scopedSlots","_u","fn","_ref","height","visibility","sectionHeader","style","selection","semaphore","onFileSelectToggle","photosLocation","proxy","MapMarker","Plus","Close","Delete","NcEmptyContent","NcActions","NcActionButton","NcActionSeparator","NcModal","NcUserBubble","CollectionContent","FilesPicker","HeaderNavigation","FetchSharedAlbumsMixin","isMobile","albumName","showAddPhotosModal","loadingCount","loadingAddFilesToAlbum","album","sharedAlbums","albumFileIds","sharedAlbumsFiles","albumOriginalName","replace","RegExp","collaborators","fetchAlbumContent","showEditAlbumForm","semaphoreSymbol","acquire","fetchSemaphoreSymbol","fetchSemaphore","errorFetchingFiles","fetchedFiles","client","DavRequest","details","map","genFileInfo","fileIds","toString","appendFiles","$store","commit","fileIdsToAdd","logger","code","release","addFilesToSharedAlbum","$refs","collectionContent","onUncheckFiles","removeFilesFromSharedAlbum","fileIdsToRemove","deleteSharedAlbum","$router","translate","ref","resetSelection","location","slot","label","undefined","nbItems","handleDeleteAlbum","handleRemoveFilesFromAlbum","basename","handleFilesPicked"],"sourceRoot":""}