diff options
author | Louis Chemineau <louis@chmn.me> | 2022-07-27 11:47:27 +0200 |
---|---|---|
committer | Louis Chemineau <louis@chmn.me> | 2022-08-22 20:04:58 +0200 |
commit | c8bf3a52d6affb175b17ed3380a6f39746e1c28a (patch) | |
tree | db04fc10248c33dc05f42c760880c008b31ddb0d /js/photos-src_views_AlbumContent_vue.js.map | |
parent | 0f2bcdaab726739e16930e73e9e00b6079374e78 (diff) |
Add Albums view
Signed-off-by: Louis Chemineau <louis@chmn.me>
Diffstat (limited to 'js/photos-src_views_AlbumContent_vue.js.map')
-rw-r--r-- | js/photos-src_views_AlbumContent_vue.js.map | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/js/photos-src_views_AlbumContent_vue.js.map b/js/photos-src_views_AlbumContent_vue.js.map index d1b1915f..59eb3713 100644 --- a/js/photos-src_views_AlbumContent_vue.js.map +++ b/js/photos-src_views_AlbumContent_vue.js.map @@ -1 +1 @@ -{"version":3,"file":"photos-src_views_AlbumContent_vue.js?v=975647e77b910d24236f","mappings":";;;;;;;;;;;;;;;;;;;;;;;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;AClKA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACNA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;ACpQA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;;ACPA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACPA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;;;;;;;;;;;AC1BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;;AC1BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAkBA;AACA;;;;;;;;;;;;;;;;;ACvCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAkBA;AACA;;;;;;;;;;;;;;;;;;ACtCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAkBA;AACA;;;;;;;;;;;;;;;ACvCA;;;;;;;;;;;;;;;ACAA;;;;;;;;;;;;;;;ACAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;ACxJA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;ACRA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA","sources":["webpack:///photos/src/components/FilesPicker.vue?vue&type=script&lang=js&","webpack:///photos/src/components/ShareAlbumForm.vue?vue&type=script&lang=js&","webpack:///photos/src/views/AlbumContent.vue?vue&type=script&lang=js&","webpack:///photos/src/components/FilesPicker.vue?vue&type=style&index=0&id=10d87d65&lang=scss&scoped=true&","webpack:///photos/src/views/AlbumContent.vue?vue&type=style&index=0&id=36505f44&lang=scss&scoped=true&","webpack://photos/./src/components/FilesPicker.vue?7e53","webpack://photos/./src/views/AlbumContent.vue?ca7c","webpack:///photos/src/components/FilesPicker.vue","webpack:///photos/src/components/ShareAlbumForm.vue","webpack:///photos/src/views/AlbumContent.vue","webpack://photos/./src/components/FilesPicker.vue?dba4","webpack://photos/./src/components/ShareAlbumForm.vue?bc3f","webpack://photos/./src/views/AlbumContent.vue?fe3a","webpack:///photos/src/components/FilesPicker.vue?vue&type=template&id=10d87d65&scoped=true&","webpack:///photos/src/components/ShareAlbumForm.vue?vue&type=template&id=6adf0238&","webpack:///photos/src/views/AlbumContent.vue?vue&type=template&id=36505f44&scoped=true&"],"sourcesContent":["//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\nimport ImagePlus from 'vue-material-design-icons/ImagePlus';\nimport Upload from 'vue-material-design-icons/Upload';\nimport moment from '@nextcloud/moment';\nimport { Button } from '@nextcloud/vue';\nimport FetchFilesMixin from '../mixins/FetchFilesMixin.js';\nimport FilesSelectionMixin from '../mixins/FilesSelectionMixin.js';\nimport FilesListViewer from './FilesListViewer.vue';\nimport File from './File.vue';\nexport default {\n name: 'FilesPicker',\n components: {\n ImagePlus,\n Upload,\n Button,\n FilesListViewer,\n File\n },\n filters: {\n /**\n * @param {string} date - In the following format: YYYYMM\n */\n dateMonthAndYear(date) {\n return moment(date, 'YYYYMM').format('MMMM YYYY');\n }\n\n },\n mixins: [FetchFilesMixin, FilesSelectionMixin],\n // TODO: add filter out ids\n props: {},\n\n data() {\n return {\n targetMonth: null\n };\n },\n\n computed: {\n /**\n * @return {string[]}\n */\n filesListByMonth() {\n const filesByMonth = {};\n\n for (const fileId of Object.keys(this.files)) {\n const file = this.files[fileId];\n filesByMonth[file.month] = filesByMonth[file.month] ?? [];\n filesByMonth[file.month].push(file.fileid);\n } // Sort files in sections.\n\n\n Object.keys(filesByMonth).forEach(month => filesByMonth[month].sort(this.sortFilesByTimestamp));\n return filesByMonth;\n },\n\n /**\n * @return {string[]}\n */\n monthsList() {\n return Object.keys(this.filesListByMonth).sort((month1, month2) => month1 > month2 ? -1 : 1);\n }\n\n },\n watch: {\n monthsList(value) {\n if (this.targetMonth === null) {\n this.targetMonth = value[0];\n }\n }\n\n },\n methods: {\n /**\n * @param {string} fileId1 The first file ID\n * @param {string} fileId2 The second file ID\n * @return {-1 | 1}\n */\n sortFilesByTimestamp(fileId1, fileId2) {\n return this.files[fileId1].timestamp > this.files[fileId2].timestamp ? -1 : 1;\n },\n\n emitPickedEvent() {\n this.$emit('files-picked', this.selectedFileIds);\n }\n\n }\n};","//\n//\n//\n//\nexport default {\n name: 'ShareAlbumForm'\n};","//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\nimport { mapGetters } from 'vuex';\nimport MapMarker from 'vue-material-design-icons/MapMarker';\nimport ShareVariant from 'vue-material-design-icons/ShareVariant';\nimport Plus from 'vue-material-design-icons/Plus';\nimport TrashCan from 'vue-material-design-icons/TrashCan';\nimport ImagePlus from 'vue-material-design-icons/ImagePlus';\nimport AlertCircle from 'vue-material-design-icons/AlertCircle';\nimport { Actions, ActionButton, Button, Modal, EmptyContent } from '@nextcloud/vue';\nimport FetchAlbumsMixin from '../mixins/FetchAlbumsMixin.js';\nimport FetchFilesMixin from '../mixins/FetchFilesMixin.js';\nimport FilesSelectionMixin from '../mixins/FilesSelectionMixin.js';\nimport FilesListViewer from '../components/FilesListViewer.vue';\nimport File from '../components/File.vue';\nimport Loader from '../components/Loader.vue';\nimport FilesPicker from '../components/FilesPicker.vue';\nimport ShareAlbumForm from '../components/ShareAlbumForm.vue';\nimport FolderIllustration from '../assets/Illustrations/folder.svg';\nexport default {\n name: 'AlbumContent',\n components: {\n MapMarker,\n ShareVariant,\n Plus,\n TrashCan,\n ImagePlus,\n AlertCircle,\n FilesListViewer,\n File,\n EmptyContent,\n Loader,\n Actions,\n ActionButton,\n Button,\n Modal,\n FilesPicker,\n ShareAlbumForm\n },\n mixins: [FetchAlbumsMixin, FetchFilesMixin, FilesSelectionMixin],\n props: {\n albumId: {\n type: String,\n default: '/'\n }\n },\n\n data() {\n return {\n showAddPhotosModal: false,\n showShareModal: false,\n FolderIllustration\n };\n },\n\n computed: { ...mapGetters(['files', 'albumsFiles']),\n\n /**\n * @return {string[]} The album information for the current albumId.\n */\n album() {\n return this.albums[this.albumId];\n },\n\n /**\n * @return {string[]} The list of files for the current albumId.\n */\n albumFiles() {\n return this.albumsFiles[this.albumId] || [];\n }\n\n },\n watch: {\n album() {\n this.fetchAlbumContent();\n }\n\n },\n methods: {\n async fetchAlbumContent() {\n const files = await this.fetchFiles(this.album.name);\n\n if (files.length > 0) {\n this.$store.commit('addFilesToAlbum', {\n albumId: this.albumId,\n fileIdsToAdd: files.map(file => file.fileid)\n });\n }\n },\n\n openViewer(fileId) {\n const file = this.files[fileId];\n OCA.Viewer.open({\n path: file.filename,\n list: this.albumFiles.map(fileId => this.files[fileId]).filter(file => !file.sectionHeader),\n loadMore: file.loadMore ? async () => await file.loadMore(true) : () => [],\n canLoop: file.canLoop\n });\n },\n\n addFilesToAlbum(fileIds) {\n this.$store.dispatch('addFilesToAlbum', {\n albumId: this.albumId,\n fileIdsToAdd: fileIds\n });\n this.showAddPhotosModal = false;\n },\n\n removeFilesFromAlbum(fileIds) {\n this.$store.dispatch('removeFilesFromAlbum', {\n albumId: this.albumId,\n fileIdsToAdd: fileIds\n });\n },\n\n // TODO: Check delete album.\n deleteAlbum() {\n this.$store.dispatch('deleteAlbum', {\n albumId: this.albumId\n });\n }\n\n }\n};","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../node_modules/css-loader/dist/runtime/noSourceMaps.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_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".file-picker[data-v-10d87d65] {\\n display: flex;\\n flex-direction: column;\\n padding: 12px;\\n}\\n.file-picker__content[data-v-10d87d65] {\\n display: flex;\\n flex-grow: 1;\\n height: 500px;\\n}\\n.file-picker__navigation[data-v-10d87d65] {\\n flex-basis: 200px;\\n overflow: scroll;\\n margin-right: 8px;\\n padding-right: 8px;\\n}\\n.file-picker__navigation__month[data-v-10d87d65] {\\n font-weight: bold;\\n font-size: 16px;\\n border-radius: 48px;\\n padding: 8px 16px;\\n margin: 4px 0;\\n cursor: pointer;\\n}\\n.file-picker__navigation__month[data-v-10d87d65]:hover {\\n background: var(--color-background-dark);\\n}\\n.file-picker__navigation__month.selected[data-v-10d87d65] {\\n background: var(--color-primary-element-lighter);\\n}\\n.file-picker__file-list[data-v-10d87d65] {\\n flex-grow: 1;\\n min-width: 0;\\n}\\n.file-picker__file-list .section-header[data-v-10d87d65] {\\n font-weight: bold;\\n font-size: 20px;\\n padding: 8px 0 4px 0;\\n}\\n.file-picker__actions[data-v-10d87d65] {\\n display: flex;\\n justify-content: space-between;\\n justify-items: center;\\n padding-top: 16px;\\n}\", \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../node_modules/css-loader/dist/runtime/noSourceMaps.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_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".album-container[data-v-36505f44] {\\n height: calc(100vh - var(--header-height));\\n display: flex;\\n flex-direction: column;\\n padding: 8px 64px;\\n}\\n.album-container .empty-album[data-v-36505f44] {\\n display: flex;\\n flex-direction: column;\\n align-items: center;\\n}\\n.album-container .empty-album__button[data-v-36505f44] {\\n margin-top: 32px;\\n}\\n.album-container .album-header[data-v-36505f44] {\\n display: flex;\\n min-height: 60px;\\n align-items: center;\\n justify-content: space-between;\\n}\\n.album-container .album-header .album-title[data-v-36505f44] {\\n min-width: 300px;\\n}\\n.album-container .album-header .album-title .album-location[data-v-36505f44] {\\n margin-left: -4px;\\n display: flex;\\n color: var(--color-text-lighter);\\n}\\n.album-container .album-header .album-actions[data-v-36505f44] {\\n display: flex;\\n align-items: baseline;\\n}\\n.album-container .album-header .album-actions button[data-v-36505f44] {\\n margin-left: 16px;\\n}\\n.album-container .album-photos[data-v-36505f44] {\\n margin-top: 16px;\\n height: 100%;\\n min-height: 0;\\n}\\n.empty-content-with-illustration[data-v-36505f44] .empty-content__icon {\\n width: 200px;\\n height: 200px;\\n}\\n.empty-content-with-illustration[data-v-36505f44] .empty-content__icon svg {\\n width: 200px;\\n height: 200px;\\n}\", \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","\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[0].rules[0].use[3]!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FilesPicker.vue?vue&type=style&index=0&id=10d87d65&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[0].rules[0].use[3]!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FilesPicker.vue?vue&type=style&index=0&id=10d87d65&lang=scss&scoped=true&\";\n export default content && content.locals ? content.locals : undefined;\n","\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[0].rules[0].use[3]!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AlbumContent.vue?vue&type=style&index=0&id=36505f44&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[0].rules[0].use[3]!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AlbumContent.vue?vue&type=style&index=0&id=36505f44&lang=scss&scoped=true&\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./FilesPicker.vue?vue&type=template&id=10d87d65&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=10d87d65&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 \"10d87d65\",\n null\n \n)\n\n/* hot reload */\nif (module.hot) {\n var api = require(\"/home/louis/workspace/nextcloud/apps/photos/node_modules/vue-hot-reload-api/dist/index.js\")\n api.install(require('vue'))\n if (api.compatible) {\n module.hot.accept()\n if (!api.isRecorded('10d87d65')) {\n api.createRecord('10d87d65', component.options)\n } else {\n api.reload('10d87d65', component.options)\n }\n module.hot.accept(\"./FilesPicker.vue?vue&type=template&id=10d87d65&scoped=true&\", function () {\n api.rerender('10d87d65', {\n render: render,\n staticRenderFns: staticRenderFns\n })\n })\n }\n}\ncomponent.options.__file = \"src/components/FilesPicker.vue\"\nexport default component.exports","import { render, staticRenderFns } from \"./ShareAlbumForm.vue?vue&type=template&id=6adf0238&\"\nimport script from \"./ShareAlbumForm.vue?vue&type=script&lang=js&\"\nexport * from \"./ShareAlbumForm.vue?vue&type=script&lang=js&\"\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 null,\n null\n \n)\n\n/* hot reload */\nif (module.hot) {\n var api = require(\"/home/louis/workspace/nextcloud/apps/photos/node_modules/vue-hot-reload-api/dist/index.js\")\n api.install(require('vue'))\n if (api.compatible) {\n module.hot.accept()\n if (!api.isRecorded('6adf0238')) {\n api.createRecord('6adf0238', component.options)\n } else {\n api.reload('6adf0238', component.options)\n }\n module.hot.accept(\"./ShareAlbumForm.vue?vue&type=template&id=6adf0238&\", function () {\n api.rerender('6adf0238', {\n render: render,\n staticRenderFns: staticRenderFns\n })\n })\n }\n}\ncomponent.options.__file = \"src/components/ShareAlbumForm.vue\"\nexport default component.exports","import { render, staticRenderFns } from \"./AlbumContent.vue?vue&type=template&id=36505f44&scoped=true&\"\nimport script from \"./AlbumContent.vue?vue&type=script&lang=js&\"\nexport * from \"./AlbumContent.vue?vue&type=script&lang=js&\"\nimport style0 from \"./AlbumContent.vue?vue&type=style&index=0&id=36505f44&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 \"36505f44\",\n null\n \n)\n\n/* hot reload */\nif (module.hot) {\n var api = require(\"/home/louis/workspace/nextcloud/apps/photos/node_modules/vue-hot-reload-api/dist/index.js\")\n api.install(require('vue'))\n if (api.compatible) {\n module.hot.accept()\n if (!api.isRecorded('36505f44')) {\n api.createRecord('36505f44', component.options)\n } else {\n api.reload('36505f44', component.options)\n }\n module.hot.accept(\"./AlbumContent.vue?vue&type=template&id=36505f44&scoped=true&\", function () {\n api.rerender('36505f44', {\n render: render,\n staticRenderFns: staticRenderFns\n })\n })\n }\n}\ncomponent.options.__file = \"src/views/AlbumContent.vue\"\nexport default component.exports","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&\"","import mod from \"-!../../node_modules/babel-loader/lib/index.js!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ShareAlbumForm.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!./ShareAlbumForm.vue?vue&type=script&lang=js&\"","import mod from \"-!../../node_modules/babel-loader/lib/index.js!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AlbumContent.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!./AlbumContent.vue?vue&type=script&lang=js&\"","var render = function () {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n return _c(\"div\", { staticClass: \"file-picker\" }, [\n _c(\n \"div\",\n { staticClass: \"file-picker__content\" },\n [\n _c(\n \"div\",\n { staticClass: \"file-picker__navigation\" },\n _vm._l(_vm.monthsList, function (month) {\n return _c(\n \"div\",\n {\n key: month,\n staticClass: \"file-picker__navigation__month\",\n class: { selected: _vm.targetMonth === month },\n on: {\n click: function ($event) {\n return _vm.scrollTo(month)\n },\n },\n },\n [\n _vm._v(\n \"\\n\\t\\t\\t\\t\" +\n _vm._s(_vm._f(\"dateMonthAndYear\")(month)) +\n \"\\n\\t\\t\\t\"\n ),\n ]\n )\n }),\n 0\n ),\n _vm._v(\" \"),\n _c(\"FilesListViewer\", {\n staticClass: \"file-picker__file-list\",\n attrs: {\n \"file-ids-by-section\": _vm.filesListByMonth,\n sections: _vm.monthsList,\n loading: _vm.loadingFiles && _vm.nbFetchedFiles !== 0,\n \"base-height\": 100,\n \"section-header-height\": 50,\n \"scroll-to-section\": _vm.targetMonth,\n },\n on: { \"need-content\": _vm.fetchFiles },\n scopedSlots: _vm._u([\n {\n key: \"default\",\n fn: function (ref) {\n var file = ref.file\n var height = ref.height\n var visibility = ref.visibility\n return [\n file.sectionHeader\n ? _c(\n \"h3\",\n {\n staticClass: \"section-header\",\n style: { height: height + \"px\" },\n attrs: {\n id: \"file-picker-section-header-\" + file.id,\n },\n },\n [\n _vm._v(\n \"\\n\\t\\t\\t\\t\\t\" +\n _vm._s(_vm._f(\"dateMonthAndYear\")(file.id)) +\n \"\\n\\t\\t\\t\\t\"\n ),\n ]\n )\n : _c(\"File\", {\n style: {\n width: height * file.ratio + \"px\",\n height: height + \"px\",\n },\n attrs: {\n item: _vm.files[file.id],\n \"allow-selection\": true,\n selected: _vm.selection[file.id] === true,\n visibility: visibility,\n semaphore: _vm.semaphore,\n },\n on: { \"select-toggled\": _vm.onFileSelectToggle },\n }),\n ]\n },\n },\n ]),\n }),\n ],\n 1\n ),\n _vm._v(\" \"),\n _c(\n \"div\",\n { staticClass: \"file-picker__actions\" },\n [\n _c(\n \"Button\",\n {\n attrs: { type: \"tertiary\" },\n scopedSlots: _vm._u([\n {\n key: \"icon\",\n fn: function () {\n return [_c(\"Upload\")]\n },\n proxy: true,\n },\n ]),\n },\n [\n _vm._v(\n \"\\n\\t\\t\\t\" +\n _vm._s(_vm.t(\"photos\", \"Upload from computer\")) +\n \"\\n\\t\\t\"\n ),\n ]\n ),\n _vm._v(\" \"),\n _c(\n \"Button\",\n {\n attrs: { type: \"primary\" },\n on: { click: _vm.emitPickedEvent },\n scopedSlots: _vm._u([\n {\n key: \"icon\",\n fn: function () {\n return [_c(\"ImagePlus\")]\n },\n proxy: true,\n },\n ]),\n },\n [\n _vm._v(\n \"\\n\\t\\t\\t\" + _vm._s(_vm.t(\"photos\", \"Add photos\")) + \"\\n\\t\\t\"\n ),\n ]\n ),\n ],\n 1\n ),\n ])\n}\nvar staticRenderFns = []\nrender._withStripped = true\n\nexport { render, staticRenderFns }","var render = function () {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n return _c(\"div\", [_vm._v(\"ShareAlbumForm\")])\n}\nvar staticRenderFns = []\nrender._withStripped = true\n\nexport { render, staticRenderFns }","var render = function () {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n return _vm.errorFetchingFiles === 404\n ? _c(\n \"EmptyContent\",\n {\n staticClass: \"empty-content-with-illustration\",\n scopedSlots: _vm._u(\n [\n {\n key: \"icon\",\n fn: function () {\n return [\n _c(\"span\", {\n staticClass: \"empty-content-illustration\",\n domProps: { innerHTML: _vm._s(_vm.FolderIllustration) },\n }),\n ]\n },\n proxy: true,\n },\n ],\n null,\n false,\n 3945105199\n ),\n },\n [\n _vm._v(\n \"\\n\\t\" + _vm._s(_vm.t(\"photos\", \"This album does not exist\")) + \"\\n\"\n ),\n ]\n )\n : _vm.errorFetchingFiles || _vm.errorFetchingAlbums\n ? _c(\n \"EmptyContent\",\n {\n scopedSlots: _vm._u([\n {\n key: \"icon\",\n fn: function () {\n return [_c(\"AlertCircle\")]\n },\n proxy: true,\n },\n ]),\n },\n [_vm._v(\"\\n\\t\" + _vm._s(_vm.t(\"photos\", \"An error occurred\")) + \"\\n\")]\n )\n : _c(\n \"div\",\n { staticClass: \"album-container\" },\n [\n _c(\"div\", { staticClass: \"album-header\" }, [\n _c(\n \"div\",\n { staticClass: \"album-header-left\" },\n [\n _c(\"div\", { staticClass: \"album-title\" }, [\n _vm.album !== undefined\n ? _c(\"b\", { staticClass: \"album-name\" }, [\n _vm._v(\n \"\\n\\t\\t\\t\\t\\t\" +\n _vm._s(_vm.album.name || \"All\") +\n \"\\n\\n\\t\\t\\t\\t\"\n ),\n ])\n : _vm._e(),\n _vm._v(\" \"),\n _vm.album !== undefined\n ? _c(\n \"div\",\n { staticClass: \"album-location\" },\n [\n _c(\"MapMarker\"),\n _vm._v(_vm._s(_vm.album.location) + \"\\n\\t\\t\\t\\t\"),\n ],\n 1\n )\n : _vm._e(),\n ]),\n _vm._v(\" \"),\n (_vm.loadingAlbums || _vm.loadingFiles) &&\n _vm.nbFetchedFiles !== 0\n ? _c(\"Loader\")\n : _vm._e(),\n ],\n 1\n ),\n _vm._v(\" \"),\n _vm.album !== undefined\n ? _c(\n \"div\",\n { staticClass: \"album-actions\" },\n [\n _vm.album.itemCount !== 0\n ? _c(\"Button\", {\n attrs: {\n type: \"tertiary\",\n \"aria-label\": _vm.t(\n \"photos\",\n \"Add photos to this album\"\n ),\n },\n on: {\n click: function ($event) {\n _vm.showAddPhotosModal = true\n },\n },\n scopedSlots: _vm._u(\n [\n {\n key: \"icon\",\n fn: function () {\n return [_c(\"Plus\")]\n },\n proxy: true,\n },\n ],\n null,\n false,\n 1489515321\n ),\n })\n : _vm._e(),\n _vm._v(\" \"),\n _c(\"Button\", {\n attrs: {\n type: \"tertiary\",\n \"aria-label\": _vm.t(\"photos\", \"Share this album\"),\n },\n on: {\n click: function ($event) {\n _vm.showShareModal = true\n },\n },\n scopedSlots: _vm._u(\n [\n {\n key: \"icon\",\n fn: function () {\n return [_c(\"ShareVariant\")]\n },\n proxy: true,\n },\n ],\n null,\n false,\n 372598617\n ),\n }),\n _vm._v(\" \"),\n _c(\n \"Actions\",\n { attrs: { \"force-menu\": true } },\n [\n _c(\"ActionButton\", {\n attrs: {\n \"close-after-click\": true,\n title: _vm.t(\"photos\", \"Delete album\"),\n },\n on: { click: _vm.deleteAlbum },\n scopedSlots: _vm._u(\n [\n {\n key: \"icon\",\n fn: function () {\n return [_c(\"TrashCan\")]\n },\n proxy: true,\n },\n ],\n null,\n false,\n 2019846067\n ),\n }),\n _vm._v(\" \"),\n _vm.selection.length === 0\n ? _c(\"ActionButton\", {\n attrs: {\n \"close-after-click\": true,\n title: _vm.n(\n \"photos\",\n \"Remove file from album\",\n \"Remove files from album\",\n _vm.selection.length\n ),\n },\n on: {\n click: function ($event) {\n return _vm.removeFilesFromAlbum(\n _vm.selectedFileIds\n )\n },\n },\n scopedSlots: _vm._u(\n [\n {\n key: \"icon\",\n fn: function () {\n return [_c(\"TrashCan\")]\n },\n proxy: true,\n },\n ],\n null,\n false,\n 2019846067\n ),\n })\n : _vm._e(),\n ],\n 1\n ),\n ],\n 1\n )\n : _vm._e(),\n ]),\n _vm._v(\" \"),\n _vm.album !== undefined &&\n _vm.album.itemCount === 0 &&\n !(_vm.loadingFiles || _vm.loadingAlbums)\n ? _c(\n \"div\",\n { staticClass: \"empty-album\" },\n [\n _c(\"EmptyContent\", {\n scopedSlots: _vm._u(\n [\n {\n key: \"icon\",\n fn: function () {\n return [_c(\"ImagePlus\")]\n },\n proxy: true,\n },\n {\n key: \"desc\",\n fn: function () {\n return [\n _vm._v(\n \"\\n\\t\\t\\t\\t\" +\n _vm._s(\n _vm.t(\n \"photos\",\n \"This album doesn't have any photos or videos yet!\"\n )\n ) +\n \"\\n\\t\\t\\t\"\n ),\n ]\n },\n proxy: true,\n },\n ],\n null,\n false,\n 589841004\n ),\n }),\n _vm._v(\" \"),\n _c(\n \"Button\",\n {\n staticClass: \"empty-album__button\",\n attrs: {\n type: \"primary\",\n \"aria-label\": _vm.t(\n \"photos\",\n \"Add photos to this album\"\n ),\n },\n on: {\n click: function ($event) {\n _vm.showAddPhotosModal = true\n },\n },\n scopedSlots: _vm._u(\n [\n {\n key: \"icon\",\n fn: function () {\n return [_c(\"Plus\")]\n },\n proxy: true,\n },\n ],\n null,\n false,\n 1489515321\n ),\n },\n [\n _vm._v(\n \"\\n\\t\\t\\t\" + _vm._s(_vm.t(\"photos\", \"Add\")) + \"\\n\\t\\t\"\n ),\n ]\n ),\n ],\n 1\n )\n : _vm._e(),\n _vm._v(\" \"),\n _vm.album !== undefined\n ? _c(\"FilesListViewer\", {\n staticClass: \"album-photos\",\n attrs: {\n \"files-ids\": _vm.albumFiles,\n loading:\n (_vm.loadingFiles || _vm.loadingAlbums) &&\n _vm.nbFetchedFiles !== 0,\n },\n on: { \"need-content\": _vm.fetchAlbumContent },\n scopedSlots: _vm._u(\n [\n {\n key: \"default\",\n fn: function (ref) {\n var file = ref.file\n var height = ref.height\n var visibility = ref.visibility\n return _c(\"File\", {\n style: {\n width: height * file.ratio + \"px\",\n height: height + \"px\",\n },\n attrs: {\n item: _vm.files[file.id],\n \"allow-selection\": true,\n |