{"version":3,"file":"photos-3.js?v=2e2a4fd9ac568d460930","sources":["webpack:///./src/components/FolderTagPreview.vue?d185","webpack:///./src/components/FolderTagPreview.vue?a7f7","webpack:///./src/components/FolderTagPreview.vue?f29f","webpack:///./src/components/FolderTagPreview.vue?92ad","webpack:///./src/components/FolderTagPreview.vue","webpack:///./src/components/FolderTagPreview.vue?c186","webpack:///./src/components/FolderTagPreview.vue?2dcd","webpack:///./src/components/FolderTagPreview.vue?809e"],"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//\nimport { generateUrl } from '@nextcloud/router';\nexport default {\n name: 'FolderTagPreview',\n props: {\n icon: {\n type: String,\n default: 'icon-folder'\n },\n id: {\n type: Number,\n required: true\n },\n name: {\n type: String,\n required: true\n },\n path: {\n type: String,\n required: true\n },\n fileList: {\n type: Array,\n default: function _default() {\n return [];\n }\n }\n },\n data: function data() {\n return {\n loaded: false,\n failed: []\n };\n },\n computed: {\n // folder is empty\n isEmpty: function isEmpty() {\n return this.previewList.length === 0;\n },\n ariaUuid: function ariaUuid() {\n return \"folder-\".concat(this.id);\n },\n ariaLabel: function ariaLabel() {\n return t('photos', 'Open the \"{name}\" sub-directory', {\n name: this.name\n });\n },\n\n /**\n * Previews list without the failed ones\n * @returns {Object[]} the previews fileinfo\n */\n previewList: function previewList() {\n var _this = this;\n\n return this.fileList.filter(function (file) {\n return _this.failed.indexOf(file.fileid) === -1;\n });\n },\n\n /**\n * We do not want encoded slashes when browsing by folder\n * so we generate a new valid route object based on the\n * current named route, get the final url back, decode it\n * and use it as a direct string.\n * Which vue-router does not encode afterwards!\n * @returns {string}\n */\n to: function to() {\n // always remove first slash, the router\n // manage it automatically\n var regex = /^\\/?(.+)/i;\n var path = regex.exec(this.path)[1]; // apply to current route\n\n return Object.assign({}, this.$route, {\n params: {\n path: path\n }\n });\n }\n },\n methods: {\n generateImgSrc: function generateImgSrc(_ref) {\n var fileid = _ref.fileid,\n etag = _ref.etag;\n // use etag to force cache reload if file changed\n return generateUrl(\"/core/preview?fileId=\".concat(fileid, \"&x=\", 256, \"&y=\", 256, \"&a=true&v=\").concat(etag));\n },\n onPreviewFail: function onPreviewFail(_ref2) {\n var fileid = _ref2.fileid;\n this.failed.push(fileid);\n }\n }\n};","// Imports\nvar ___CSS_LOADER_API_IMPORT___ = require(\"../../node_modules/css-loader/dist/runtime/api.js\");\nexports = ___CSS_LOADER_API_IMPORT___(false);\n// Module\nexports.push([module.id, \"@charset \\\"UTF-8\\\";\\n/**\\n * @copyright Copyright (c) 2019 John Molakvoæ \\n *\\n * @author John Molakvoæ \\n *\\n * @license GNU AGPL version 3 or any later version\\n *\\n * This program is free software: you can redistribute it and/or modify\\n * it under the terms of the GNU Affero General Public License as\\n * published by the Free Software Foundation, either version 3 of the\\n * License, or (at your option) any later version.\\n *\\n * This program is distributed in the hope that it will be useful,\\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\\n * GNU Affero General Public License for more details.\\n *\\n * You should have received a copy of the GNU Affero General Public License\\n * along with this program. If not, see .\\n *\\n */\\n.file[data-v-77915c0c],\\n.folder[data-v-77915c0c] {\\n position: relative;\\n display: flex;\\n align-items: center;\\n justify-content: center;\\n -webkit-user-select: none;\\n -moz-user-select: none;\\n -ms-user-select: none;\\n user-select: none;\\n border-radius: var(--border-radius);\\n overflow: hidden;\\n}\\n.file .cover[data-v-77915c0c],\\n .folder .cover[data-v-77915c0c] {\\n z-index: 2;\\n width: 100%;\\n padding-bottom: 100%;\\n transition: opacity var(--animation-quick) ease-in-out;\\n opacity: 0;\\n background-color: var(--color-main-text);\\n}\\n.file.active .cover[data-v-77915c0c], .file:active .cover[data-v-77915c0c], .file:hover .cover[data-v-77915c0c], .file:focus .cover[data-v-77915c0c],\\n .folder.active .cover[data-v-77915c0c],\\n .folder:active .cover[data-v-77915c0c],\\n .folder:hover .cover[data-v-77915c0c],\\n .folder:focus .cover[data-v-77915c0c] {\\n opacity: .3;\\n}\\n.file--clear.active .cover[data-v-77915c0c], .file--clear:active .cover[data-v-77915c0c], .file--clear:hover .cover[data-v-77915c0c], .file--clear:focus .cover[data-v-77915c0c],\\n .folder--clear.active .cover[data-v-77915c0c],\\n .folder--clear:active .cover[data-v-77915c0c],\\n .folder--clear:hover .cover[data-v-77915c0c],\\n .folder--clear:focus .cover[data-v-77915c0c] {\\n opacity: .1;\\n}\\n.fade-enter-active[data-v-77915c0c], .fade-leave-active[data-v-77915c0c] {\\n transition: opacity var(--animation-quick) ease-in-out;\\n}\\n.fade-enter[data-v-77915c0c], .fade-leave-to[data-v-77915c0c] {\\n opacity: 0;\\n}\\n.folder-content[data-v-77915c0c] {\\n position: absolute;\\n display: grid;\\n width: 100%;\\n height: 100%;\\n}\\n.folder-content--grid-1[data-v-77915c0c] {\\n grid-template-columns: 1fr;\\n grid-template-rows: 1fr;\\n}\\n.folder-content--grid-2[data-v-77915c0c] {\\n grid-template-columns: 1fr;\\n grid-template-rows: 1fr 1fr;\\n}\\n.folder-content--grid-3[data-v-77915c0c] {\\n grid-template-columns: 1fr 1fr;\\n grid-template-rows: 1fr 1fr;\\n}\\n.folder-content--grid-3 img[data-v-77915c0c]:first-child {\\n grid-column: span 2;\\n}\\n.folder-content--grid-4[data-v-77915c0c] {\\n grid-template-columns: 1fr 1fr;\\n grid-template-rows: 1fr 1fr;\\n}\\n.folder-content img[data-v-77915c0c] {\\n width: 100%;\\n height: 100%;\\n -o-object-fit: cover;\\n object-fit: cover;\\n}\\n.folder-name[data-v-77915c0c] {\\n position: absolute;\\n z-index: 3;\\n display: flex;\\n overflow: hidden;\\n flex-direction: column;\\n width: 100%;\\n height: 100%;\\n transition: opacity var(--animation-quick) ease-in-out;\\n opacity: 1;\\n}\\n.folder-name__icon[data-v-77915c0c] {\\n height: 40%;\\n margin-top: calc(30% - 1rem / 2);\\n background-size: 40%;\\n}\\n.folder-name__name[data-v-77915c0c] {\\n overflow: hidden;\\n height: 1rem;\\n padding: 0 10px;\\n text-align: center;\\n white-space: nowrap;\\n text-overflow: ellipsis;\\n color: var(--color-main-background);\\n text-shadow: 0 0 8px var(--color-main-text);\\n font-size: 1rem;\\n line-height: 1rem;\\n}\\n.folder--clear .folder-name__icon[data-v-77915c0c] {\\n opacity: .3;\\n}\\n.folder--clear .folder-name__name[data-v-77915c0c] {\\n color: var(--color-main-text);\\n text-shadow: 0 0 8px var(--color-main-background);\\n}\\n.folder:not(.folder--clear) .cover[data-v-77915c0c] {\\n opacity: .3;\\n}\\n.folder:not(.folder--clear):active .folder-name[data-v-77915c0c],\\n.folder:not(.folder--clear):active .cover[data-v-77915c0c], .folder:not(.folder--clear):hover .folder-name[data-v-77915c0c],\\n.folder:not(.folder--clear):hover .cover[data-v-77915c0c], .folder:not(.folder--clear):focus .folder-name[data-v-77915c0c],\\n.folder:not(.folder--clear):focus .cover[data-v-77915c0c] {\\n opacity: 0;\\n}\\n\", \"\"]);\n// Exports\nmodule.exports = exports;\n","var render = function() {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n return _c(\n \"router-link\",\n {\n staticClass: \"folder\",\n class: { \"folder--clear\": _vm.isEmpty },\n attrs: { to: _vm.to, \"aria-label\": _vm.ariaLabel }\n },\n [\n _c(\"transition\", { attrs: { name: \"fade\" } }, [\n _c(\n \"div\",\n {\n directives: [\n {\n name: \"show\",\n rawName: \"v-show\",\n value: _vm.loaded,\n expression: \"loaded\"\n }\n ],\n staticClass: \"folder-content\",\n class: \"folder-content--grid-\" + _vm.previewList.length,\n attrs: { role: \"none\" }\n },\n _vm._l(_vm.previewList, function(file) {\n return _c(\"img\", {\n key: file.fileid,\n attrs: { src: _vm.generateImgSrc(file), alt: \"\" },\n on: {\n load: function($event) {\n _vm.loaded = true\n },\n error: function($event) {\n return _vm.onPreviewFail(file)\n }\n }\n })\n }),\n 0\n )\n ]),\n _vm._v(\" \"),\n _c(\"div\", { staticClass: \"folder-name\" }, [\n _c(\"span\", {\n staticClass: \"folder-name__icon\",\n class: [!_vm.isEmpty ? \"icon-white\" : \"icon-dark\", _vm.icon],\n attrs: { role: \"img\" }\n }),\n _vm._v(\" \"),\n _c(\n \"p\",\n { staticClass: \"folder-name__name\", attrs: { id: _vm.ariaUuid } },\n [_vm._v(\"\\n\\t\\t\\t\" + _vm._s(_vm.name) + \"\\n\\t\\t\")]\n )\n ]),\n _vm._v(\" \"),\n _c(\"div\", { staticClass: \"cover\", attrs: { role: \"none\" } })\n ],\n 1\n )\n}\nvar staticRenderFns = []\nrender._withStripped = true\n\nexport { render, staticRenderFns }","// style-loader: Adds some css to the DOM by adding a