Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/nextcloud/photos.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJohn Molakvoæ <skjnldsv@protonmail.com>2022-01-22 12:10:07 +0300
committerJohn Molakvoæ <skjnldsv@protonmail.com>2022-01-22 12:10:07 +0300
commitc6db877a41d00bc7ad7c91f0aca8f890d7b55c90 (patch)
treeb093971c51912475005c537723e7f67d2adbb099 /js/photos-src_mixins_GridConfig_js-src_utils_CancelableRequest_js-src_components_EmptyContent_vue-src_c-45f6cf.js.map
parent7a207ae588c5c324a67341dfcccd7b7360a77268 (diff)
Lint fix
Signed-off-by: John Molakvoæ <skjnldsv@protonmail.com>
Diffstat (limited to 'js/photos-src_mixins_GridConfig_js-src_utils_CancelableRequest_js-src_components_EmptyContent_vue-src_c-45f6cf.js.map')
-rw-r--r--js/photos-src_mixins_GridConfig_js-src_utils_CancelableRequest_js-src_components_EmptyContent_vue-src_c-45f6cf.js.map2
1 files changed, 1 insertions, 1 deletions
diff --git a/js/photos-src_mixins_GridConfig_js-src_utils_CancelableRequest_js-src_components_EmptyContent_vue-src_c-45f6cf.js.map b/js/photos-src_mixins_GridConfig_js-src_utils_CancelableRequest_js-src_components_EmptyContent_vue-src_c-45f6cf.js.map
index c16ad3d8..b0181b52 100644
--- a/js/photos-src_mixins_GridConfig_js-src_utils_CancelableRequest_js-src_components_EmptyContent_vue-src_c-45f6cf.js.map
+++ b/js/photos-src_mixins_GridConfig_js-src_utils_CancelableRequest_js-src_components_EmptyContent_vue-src_c-45f6cf.js.map
@@ -1 +1 @@
-{"version":3,"file":"photos-src_mixins_GridConfig_js-src_utils_CancelableRequest_js-src_components_EmptyContent_vue-src_c-45f6cf.js?v=6c5d5759482edbd01e5e","mappings":"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","sources":["webpack:///photos/src/assets/grid-sizes.js","webpack:///photos/src/services/GridConfig.js","webpack:///photos/src/mixins/GridConfig.js","webpack:///photos/src/utils/CancelableRequest.js","webpack:///photos/src/components/EmptyContent.vue?vue&type=style&index=0&lang=scss&","webpack:///photos/src/components/File.vue?vue&type=style&index=0&id=e15fd54e&lang=scss&scoped=true&","webpack:///photos/src/components/Navigation.vue?vue&type=style&index=0&id=56972f4e&lang=scss&scoped=true&","webpack:///photos/src/components/EmptyContent.vue?vue&type=template&id=b4c69d2c&","webpack:///photos/src/components/EmptyContent.vue","webpack:///photos/src/components/EmptyContent.vue?vue&type=script&lang=js&","webpack://photos/./src/components/EmptyContent.vue?7390","webpack://photos/./src/components/EmptyContent.vue?b265","webpack:///photos/src/components/File.vue?vue&type=template&id=e15fd54e&scoped=true&","webpack:///photos/src/components/File.vue","webpack:///photos/src/components/File.vue?vue&type=script&lang=js&","webpack://photos/./src/components/File.vue?e857","webpack://photos/./src/components/File.vue?f552","webpack:///photos/src/components/Navigation.vue?vue&type=template&id=56972f4e&scoped=true&","webpack:///photos/src/components/Navigation.vue","webpack:///photos/src/components/Navigation.vue?vue&type=script&lang=js&","webpack://photos/./src/components/Navigation.vue?7dcc","webpack://photos/./src/components/Navigation.vue?7f19","webpack:///photos/src/assets/Illustrations|lazy|/^\\.\\/.*\\.svg$/|groupOptions: {}|namespace object"],"sourcesContent":["/**\n * @copyright Copyright (c) 2018 John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @author John Molakvoæ <skjnldsv@protonmail.com>\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// for now we want to keep the same gap everywhere\nconst gap = 8\n\n/**\n * Define the max width proportions\n * The number (key) indicate the MAX size\n *\n * needs to be compatible with webpack config\n * so no export default {}\n */\nmodule.exports = {\n\tsizes: {\n\t\t400: {\n\t\t\tmarginTop: 66,\n\t\t\tmarginW: gap,\n\t\t\tcount: 3,\n\t\t\tgap,\n\t\t},\n\t\t700: {\n\t\t\tmarginTop: 66,\n\t\t\tmarginW: gap,\n\t\t\tcount: 4,\n\t\t\tgap,\n\t\t},\n\t\t1024: {\n\t\t\tmarginTop: 66,\n\t\t\tmarginW: 44,\n\t\t\tcount: 5,\n\t\t\tgap,\n\t\t},\n\t\t1280: {\n\t\t\tmarginTop: 66,\n\t\t\tmarginW: 44,\n\t\t\tcount: 4,\n\t\t\tgap,\n\t\t},\n\t\t1440: {\n\t\t\tmarginTop: 88,\n\t\t\tmarginW: 66,\n\t\t\tcount: 5,\n\t\t\tgap,\n\t\t},\n\t\t1600: {\n\t\t\tmarginTop: 88,\n\t\t\tmarginW: 66,\n\t\t\tcount: 6,\n\t\t\tgap,\n\t\t},\n\t\t2048: {\n\t\t\tmarginTop: 88,\n\t\t\tmarginW: 66,\n\t\t\tcount: 7,\n\t\t\tgap,\n\t\t},\n\t\t2560: {\n\t\t\tmarginTop: 88,\n\t\t\tmarginW: 88,\n\t\t\tcount: 8,\n\t\t\tgap,\n\t\t},\n\t\t3440: {\n\t\t\tmarginTop: 88,\n\t\t\tmarginW: 88,\n\t\t\tcount: 9,\n\t\t\tgap,\n\t\t},\n\t\tmax: {\n\t\t\tmarginTop: 88,\n\t\t\tmarginW: 88,\n\t\t\tcount: 10,\n\t\t\tgap,\n\t\t},\n\t},\n}\n","/**\n * @copyright Copyright (c) 2019 John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @author John Molakvoæ <skjnldsv@protonmail.com>\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\nimport Vue from 'vue'\nimport { sizes } from '../assets/grid-sizes'\n\nexport default new Vue({\n\tdata() {\n\t\treturn {\n\t\t\tgridConfig: sizes.max,\n\t\t}\n\t},\n\twatch: {\n\t\tgridConfig(val) {\n\t\t\tthis.$emit('changed', val)\n\t\t},\n\t},\n\tcreated() {\n\t\twindow.addEventListener('resize', this.handleWindowResize)\n\t\tthis.handleWindowResize()\n\t},\n\tbeforeDestroy() {\n\t\twindow.removeEventListener('resize', this.handleWindowResize)\n\t},\n\tmethods: {\n\t\thandleWindowResize() {\n\t\t\t// find the first grid size that fit the current window width\n\t\t\tconst currentSize = Object.keys(sizes).find(size => size > document.documentElement.clientWidth)\n\t\t\tthis.gridConfig = sizes[currentSize] || sizes.max\n\t\t},\n\t},\n})\n","/**\n * @copyright Copyright (c) 2018 John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @author John Molakvoæ <skjnldsv@protonmail.com>\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\nimport getGridConfig from '../services/GridConfig'\n\n/**\n * Get the current used grid config\n */\nexport default {\n\tdata() {\n\t\treturn {\n\t\t\tgridConfig: {},\n\t\t}\n\t},\n\n\tcreated() {\n\t\tgetGridConfig.$on('changed', val => {\n\t\t\tthis.gridConfig = val\n\t\t})\n\t\tconsole.debug(`[${appName}]`, 'Grid config', Object.assign({}, getGridConfig.gridConfig))\n\t\tthis.gridConfig = getGridConfig.gridConfig\n\t},\n\n\tbeforeDestroy() {\n\t\tgetGridConfig.$off('changed', this.gridConfig)\n\t},\n}\n","/**\n * @copyright Copyright (c) 2019 Marco Ambrosini <marcoambrosini@pm.me>\n *\n * @author Marco Ambrosini <marcoambrosini@pm.me>\n *\n * @author John Molakvoæ <skjnldsv@protonmail.com>\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\nimport axios from '@nextcloud/axios'\n/**\n * Create a cancel token\n *\n * @return {CancelTokenSource}\n */\nconst createCancelToken = () => axios.CancelToken.source()\n\n/**\n * Creates a cancelable axios 'request object'.\n *\n * @param {Function} request the axios promise request\n * @return {object}\n */\nconst CancelableRequest = function(request) {\n\t/**\n\t * Generate an axios cancel token\n\t */\n\tconst cancelToken = createCancelToken()\n\n\t/**\n\t * Execute the request\n\t *\n\t * @param {string} url the url to send the request to\n\t * @param {object} [options] optional config for the request\n\t */\n\tconst fetch = async function(url, options) {\n\t\treturn request(\n\t\t\turl,\n\t\t\tObject.assign({ cancelToken: cancelToken.token }, options)\n\t\t)\n\t}\n\n\treturn {\n\t\trequest: fetch,\n\t\tcancel: cancelToken.cancel,\n\t}\n}\n\nexport default CancelableRequest\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, \".emptycontent{grid-column:1/-1;margin-top:20vh}.illustration{min-width:200px;max-width:15%;width:300px;margin:auto;margin-bottom:20px;position:relative}.illustration svg{width:100%;height:100%;max-height:40vh}.illustration [fill*=\\\"6c63ff\\\"]{fill:var(--color-primary-element)}\", \"\",{\"version\":3,\"sources\":[\"webpack://./src/components/EmptyContent.vue\"],\"names\":[],\"mappings\":\"AAmHA,cAEC,gBAAA,CACA,eAAA,CAGD,cACC,eAAA,CACA,aAAA,CACA,WAAA,CACA,WAAA,CACA,kBAAA,CACA,iBAAA,CAEA,kBACC,UAAA,CACA,WAAA,CACA,eAAA,CAID,+BACC,iCAAA\",\"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\\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.emptycontent {\\n\\t// span all the available columns\\n\\tgrid-column: 1/-1;\\n\\tmargin-top: 20vh;\\n}\\n\\n.illustration {\\n\\tmin-width: 200px;\\n\\tmax-width: 15%;\\n\\twidth: 300px;\\n\\tmargin: auto;\\n\\tmargin-bottom: 20px;\\n\\tposition: relative;\\n\\n\\tsvg {\\n\\t\\twidth: 100%;\\n\\t\\theight: 100%;\\n\\t\\tmax-height: 40vh;\\n\\t}\\n\\n\\t// change colour of illustration\\n\\t[fill*='6c63ff'] {\\n\\t\\tfill: var(--color-primary-element);\\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, \".file[data-v-e15fd54e],.folder[data-v-e15fd54e]{position:relative;display:flex;align-items:center;justify-content:center;-webkit-user-select:none;user-select:none;border-radius:var(--border-radius);overflow:hidden}.file .cover[data-v-e15fd54e],.folder .cover[data-v-e15fd54e]{z-index:2;width:100%;padding-bottom:100%;transition:opacity var(--animation-quick) ease-in-out;opacity:0;background-color:var(--color-main-text)}.file.active .cover[data-v-e15fd54e],.file:active .cover[data-v-e15fd54e],.file:hover .cover[data-v-e15fd54e],.file:focus .cover[data-v-e15fd54e],.folder.active .cover[data-v-e15fd54e],.folder:active .cover[data-v-e15fd54e],.folder:hover .cover[data-v-e15fd54e],.folder:focus .cover[data-v-e15fd54e]{opacity:.3}.file--clear.active .cover[data-v-e15fd54e],.file--clear:active .cover[data-v-e15fd54e],.file--clear:hover .cover[data-v-e15fd54e],.file--clear:focus .cover[data-v-e15fd54e],.folder--clear.active .cover[data-v-e15fd54e],.folder--clear:active .cover[data-v-e15fd54e],.folder--clear:hover .cover[data-v-e15fd54e],.folder--clear:focus .cover[data-v-e15fd54e]{opacity:.1}.fade-enter-active[data-v-e15fd54e],.fade-leave-active[data-v-e15fd54e]{transition:opacity var(--animation-quick) ease-in-out}.fade-enter[data-v-e15fd54e],.fade-leave-to[data-v-e15fd54e]{opacity:0}.transition-group[data-v-e15fd54e]{display:contents}.icon-video-white[data-v-e15fd54e]{position:absolute;top:10px;right:10px;z-index:20}img[data-v-e15fd54e]{position:absolute;width:100%;height:100%;z-index:10;color:transparent;object-fit:contain}.file--cropped img[data-v-e15fd54e]{object-fit:cover}svg[data-v-e15fd54e]{position:absolute;width:70%;height:70%}\", \"\",{\"version\":3,\"sources\":[\"webpack://./src/mixins/FileFolder.scss\",\"webpack://./src/components/File.vue\"],\"names\":[],\"mappings\":\"AAsBA,gDAEC,iBAAA,CACA,YAAA,CACA,kBAAA,CACA,sBAAA,CACA,wBAAA,CAAA,gBAAA,CACA,kCAAA,CACA,eAAA,CAEA,8DACC,SAAA,CAMA,UAAA,CACA,mBAAA,CACA,qDAAA,CACA,SAAA,CACA,uCAAA,CAOA,4SACC,UAAA,CAQD,oWACC,UAAA,CAKH,wEACC,qDAAA,CAGD,6DACC,SAAA,CCiED,mCACC,gBAAA,CAGD,mCACC,iBAAA,CACA,QAAA,CACA,UAAA,CACA,UAAA,CAGD,qBACC,iBAAA,CACA,UAAA,CACA,WAAA,CACA,UAAA,CAEA,iBAAA,CAEA,kBAAA,CAEA,oCACC,gBAAA,CAIF,qBACC,iBAAA,CACA,SAAA,CACA,UAAA\",\"sourcesContent\":[\"/**\\n * @copyright Copyright (c) 2019 John Molakvoæ <skjnldsv@protonmail.com>\\n *\\n * @author John Molakvoæ <skjnldsv@protonmail.com>\\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\\n.file,\\n.folder {\\n\\tposition: relative;\\n\\tdisplay: flex;\\n\\talign-items: center;\\n\\tjustify-content: center;\\n\\tuser-select: none;\\n\\tborder-radius: var(--border-radius);\\n\\toverflow: hidden;\\n\\n\\t.cover {\\n\\t\\tz-index: 2;\\n\\t\\t// We want nice squares despite anything that is in it.\\n\\t\\t// The .cover is what makes the exact square size of the grid.\\n\\t\\t// We use padding-bottom because padding with percentage\\n\\t\\t// always refers to the width. And we only want to fit\\n\\t\\t// the css grid's width.\\n\\t\\twidth: 100%;\\n\\t\\tpadding-bottom: 100%;\\n\\t\\ttransition: opacity var(--animation-quick) ease-in-out;\\n\\t\\topacity: 0;\\n\\t\\tbackground-color: var(--color-main-text);\\n\\t}\\n\\n\\t&.active,\\n\\t&:active,\\n\\t&:hover,\\n\\t&:focus {\\n\\t\\t.cover {\\n\\t\\t\\topacity: .3;\\n\\t\\t}\\n\\t}\\n\\n\\t&--clear.active,\\n\\t&--clear:active,\\n\\t&--clear:hover,\\n\\t&--clear:focus {\\n\\t\\t.cover {\\n\\t\\t\\topacity: .1;\\n\\t\\t}\\n\\t}\\n}\\n\\n.fade-enter-active, .fade-leave-active {\\n\\ttransition: opacity var(--animation-quick) ease-in-out;\\n}\\n\\n.fade-enter, .fade-leave-to {\\n\\topacity: 0;\\n}\\n\",\"$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\\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@import '../mixins/FileFolder';\\n\\n.transition-group {\\n\\tdisplay: contents;\\n}\\n\\n.icon-video-white {\\n\\tposition: absolute;\\n\\ttop: 10px;\\n\\tright: 10px;\\n\\tz-index: 20;\\n}\\n\\nimg {\\n\\tposition: absolute;\\n\\twidth: 100%;\\n\\theight: 100%;\\n\\tz-index: 10;\\n\\n\\tcolor: transparent; // should be diplayed on error\\n\\n\\tobject-fit: contain;\\n\\n\\t.file--cropped & {\\n\\t\\tobject-fit: cover;\\n\\t}\\n}\\n\\nsvg {\\n\\tposition: absolute;\\n\\twidth: 70%;\\n\\theight: 70%;\\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, \".icon-confirm[data-v-56972f4e]{-webkit-transform:rotate(180deg);transform:rotate(180deg)}.photos-navigation[data-v-56972f4e]{display:flex;position:block;height:44px;padding:0 40px;align-items:center;max-width:100%}.photos-navigation__title[data-v-56972f4e]{margin:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.photos-navigation__share[data-v-56972f4e]{margin-left:10px}.photos-navigation__back[data-v-56972f4e],.photos-navigation__share[data-v-56972f4e]{flex-grow:0;flex-shrink:0}@media(min-width: 0px)and (max-width: 400px){.photos-navigation[data-v-56972f4e]{margin-top:-7.3333333333px}.photos-navigation--root .photos-navigation__title[data-v-56972f4e]{padding-left:-36px}}@media(min-width: 400px)and (max-width: 700px){.photos-navigation[data-v-56972f4e]{margin-top:-7.3333333333px}.photos-navigation--root .photos-navigation__title[data-v-56972f4e]{padding-left:-36px}}@media(min-width: 700px)and (max-width: 1024px){.photos-navigation[data-v-56972f4e]{margin-top:-7.3333333333px}.photos-navigation__back[data-v-56972f4e]{margin:0 0px}.photos-navigation--root .photos-navigation__title[data-v-56972f4e]{padding-left:0px}}@media(min-width: 1024px)and (max-width: 1280px){.photos-navigation[data-v-56972f4e]{margin-top:-7.3333333333px}.photos-navigation__back[data-v-56972f4e]{margin:0 0px}.photos-navigation--root .photos-navigation__title[data-v-56972f4e]{padding-left:0px}}@media(min-width: 1280px)and (max-width: 1440px){.photos-navigation[data-v-56972f4e]{margin-top:0px}.photos-navigation__back[data-v-56972f4e]{margin:0 11px}.photos-navigation--root .photos-navigation__title[data-v-56972f4e]{padding-left:22px}}@media(min-width: 1440px)and (max-width: 1600px){.photos-navigation[data-v-56972f4e]{margin-top:0px}.photos-navigation__back[data-v-56972f4e]{margin:0 11px}.photos-navigation--root .photos-navigation__title[data-v-56972f4e]{padding-left:22px}}@media(min-width: 1600px)and (max-width: 2048px){.photos-navigation[data-v-56972f4e]{margin-top:0px}.photos-navigation__back[data-v-56972f4e]{margin:0 11px}.photos-navigation--root .photos-navigation__title[data-v-56972f4e]{padding-left:22px}}@media(min-width: 2048px)and (max-width: 2560px){.photos-navigation[data-v-56972f4e]{margin-top:0px}.photos-navigation__back[data-v-56972f4e]{margin:0 22px}.photos-navigation--root .photos-navigation__title[data-v-56972f4e]{padding-left:44px}}@media(min-width: 2560px)and (max-width: 3440px){.photos-navigation[data-v-56972f4e]{margin-top:0px}.photos-navigation__back[data-v-56972f4e]{margin:0 22px}.photos-navigation--root .photos-navigation__title[data-v-56972f4e]{padding-left:44px}}@media(min-width: 3440px){.photos-navigation[data-v-56972f4e]{margin-top:0px}.photos-navigation__back[data-v-56972f4e]{margin:0 22px}.photos-navigation--root .photos-navigation__title[data-v-56972f4e]{padding-left:44px}}\", \"\",{\"version\":3,\"sources\":[\"webpack://./src/components/Navigation.vue\",\"webpack://./src/mixins/GridSizes.scss\"],\"names\":[],\"mappings\":\"AAsJA,+BACC,gCAAA,CAAA,wBAAA,CAGD,oCACC,YAAA,CACA,cAAA,CACA,WAAA,CACA,cAAA,CACA,kBAAA,CACA,cAAA,CACA,2CACC,QAAA,CACA,kBAAA,CACA,eAAA,CACA,sBAAA,CAED,2CACC,gBAAA,CAED,qFAEC,WAAA,CACA,aAAA,CCzIC,6CDsHH,oCAyBE,0BAAA,CAOA,oEACC,kBAAA,CAAA,CCvJA,+CDsHH,oCAyBE,0BAAA,CAOA,oEACC,kBAAA,CAAA,CCvJA,gDDsHH,oCAyBE,0BAAA,CAGC,0CACC,YAAA,CAGF,oEACC,gBAAA,CAAA,CCvJA,iDDsHH,oCAyBE,0BAAA,CAGC,0CACC,YAAA,CAGF,oEACC,gBAAA,CAAA,CCvJA,iDDsHH,oCAyBE,cAAA,CAGC,0CACC,aAAA,CAGF,oEACC,iBAAA,CAAA,CCvJA,iDDsHH,oCAyBE,cAAA,CAGC,0CACC,aAAA,CAGF,oEACC,iBAAA,CAAA,CCvJA,iDDsHH,oCAyBE,cAAA,CAGC,0CACC,aAAA,CAGF,oEACC,iBAAA,CAAA,CCvJA,iDDsHH,oCAyBE,cAAA,CAGC,0CACC,aAAA,CAGF,oEACC,iBAAA,CAAA,CCvJA,iDDsHH,oCAyBE,cAAA,CAGC,0CACC,aAAA,CAGF,oEACC,iBAAA,CAAA,CC3JA,0BD0HH,oCAyBE,cAAA,CAGC,0CACC,aAAA,CAGF,oEACC,iBAAA,CAAA\",\"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\\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\\n\\n\\n\\n\\n\\n@use 'sass:math';\\n@import '../mixins/GridSizes';\\n\\n.icon-confirm {\\n\\ttransform: rotate(180deg)\\n}\\n\\n.photos-navigation {\\n\\tdisplay: flex;\\n\\tposition: block;\\n\\theight: 44px;\\n\\tpadding: 0 40px;\\n\\talign-items: center;\\n\\tmax-width: 100%;\\n\\t&__title {\\n\\t\\tmargin: 0;\\n\\t\\twhite-space: nowrap;\\n\\t\\toverflow: hidden;\\n\\t\\ttext-overflow: ellipsis;\\n\\t}\\n\\t&__share {\\n\\t\\tmargin-left: 10px;\\n\\t}\\n\\t&__back,\\n\\t&__share {\\n\\t\\tflex-grow: 0;\\n\\t\\tflex-shrink: 0;\\n\\t}\\n\\n\\t// Specific grid spacing\\n\\t@include grid-sizes using ($marginTop, $marginW) {\\n\\t\\t// we space this with 2/3 margin top, 1/3 margin bottom\\n\\t\\tmargin-top: math.div($marginTop - 44px * 2, 3);\\n\\n\\t\\t@if $marginW >= 44px {\\n\\t\\t\\t&__back {\\n\\t\\t\\t\\tmargin: 0 math.div($marginW - 44px, 2);\\n\\t\\t\\t}\\n\\t\\t}\\n\\t\\t&--root &__title {\\n\\t\\t\\tpadding-left: #{$marginW - 44}px;\\n\\t\\t}\\n\\t}\\n}\\n\",\"/**\\n * @copyright Copyright (c) 2019 John Molakvoæ <skjnldsv@protonmail.com>\\n *\\n * @author John Molakvoæ <skjnldsv@protonmail.com>\\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@use 'sass:map';\\n\\n@mixin grid-sizes() {\\n\\t$previous: 0;\\n\\n\\t@each $size, $config in $sizes {\\n\\t\\t$count: map.get($config, 'count');\\n\\t\\t$marginTop: map.get($config, 'marginTop');\\n\\t\\t$marginW: map.get($config, 'marginW');\\n\\n\\t\\t@if $size == 'max' {\\n\\t\\t\\t@media (min-width: #{$previous}px) {\\n\\t\\t\\t\\t@content($marginTop, $marginW);\\n\\t\\t\\t}\\n\\t\\t} @else {\\n\\t\\t\\t@media (min-width: #{$previous}px) and (max-width: #{$size}px) {\\n\\t\\t\\t\\t@content($marginTop, $marginW);\\n\\t\\t\\t}\\n\\t\\t}\\n\\t\\t$previous: $size;\\n\\t}\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return (_vm.isReady)?_c('div',{staticClass:\"emptycontent\"},[(_vm.haveIllustration)?_c('div',{staticClass:\"illustration\",domProps:{\"innerHTML\":_vm._s(_vm.illustration)}}):_c('div',{staticClass:\"icon-error\"}),_vm._v(\" \"),_c('h2',[_vm._t(\"default\")],2),_vm._v(\" \"),_c('p',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.$slots.desc),expression:\"$slots.desc\"}]},[_vm._t(\"desc\")],2)]):_vm._e()}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<!--\n - @copyright Copyright (c) 2019 John Molakvoæ <skjnldsv@protonmail.com>\n -\n - @author John Molakvoæ <skjnldsv@protonmail.com>\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\n<template>\n\t<div v-if=\"isReady\" class=\"emptycontent\">\n\t\t<!-- eslint-disable-next-line vue/no-v-html (because it's an SVG file) -->\n\t\t<div v-if=\"haveIllustration\" class=\"illustration\" v-html=\"illustration\" />\n\t\t<div v-else class=\"icon-error\" />\n\t\t<h2><slot /></h2>\n\t\t<p v-show=\"$slots.desc\">\n\t\t\t<slot name=\"desc\" />\n\t\t</p>\n\t</div>\n</template>\n\n<script>\nexport default {\n\tname: 'EmptyContent',\n\tprops: {\n\t\tillustrationName: {\n\t\t\ttype: String,\n\t\t\tdefault: '',\n\t\t},\n\t},\n\tdata() {\n\t\treturn {\n\t\t\tillustration: '',\n\t\t}\n\t},\n\tcomputed: {\n\t\t/**\n\t\t * Does this component have an illustration\n\t\t *\n\t\t * @return {boolean}\n\t\t */\n\t\thaveIllustration() {\n\t\t\treturn this.illustrationName !== ''\n\t\t},\n\n\t\t/**\n\t\t * Is the illustration loaded\n\t\t *\n\t\t * @return {boolean}\n\t\t */\n\t\tisLoaded() {\n\t\t\tif (!this.haveIllustration) {\n\t\t\t\treturn true\n\t\t\t}\n\t\t\treturn this.illustration !== ''\n\t\t},\n\n\t\t/**\n\t\t * The component is ready if the illustration\n\t\t * is done loading or if there is none\n\t\t *\n\t\t * @return {boolean}\n\t\t */\n\t\tisReady() {\n\t\t\treturn !this.haveIllustration || (this.haveIllustration && this.isLoaded)\n\t\t},\n\t},\n\n\t/**\n\t * Fetch the new illustration as soon as it changes\n\t */\n\twatch: {\n\t\tillustrationName() {\n\t\t\tthis.getIllustration()\n\t\t},\n\t},\n\tbeforeMount() {\n\t\tthis.getIllustration()\n\t},\n\n\tmethods: {\n\t\t/**\n\t\t * Fetch the illustration as webpack chunk\n\t\t */\n\t\tasync getIllustration() {\n\t\t\tthis.illustration = ''\n\t\t\tif (this.illustrationName !== '') {\n\t\t\t\ttry {\n\t\t\t\t\tconst illustration = await import(`../assets/Illustrations/${this.illustrationName}.svg`)\n\t\t\t\t\tthis.illustration = illustration.default\n\t\t\t\t} catch (error) {\n\t\t\t\t\tconsole.error('Could not get the error illustration', error)\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t},\n\n}\n</script>\n\n<style lang=\"scss\">\n.emptycontent {\n\t// span all the available columns\n\tgrid-column: 1/-1;\n\tmargin-top: 20vh;\n}\n\n.illustration {\n\tmin-width: 200px;\n\tmax-width: 15%;\n\twidth: 300px;\n\tmargin: auto;\n\tmargin-bottom: 20px;\n\tposition: relative;\n\n\tsvg {\n\t\twidth: 100%;\n\t\theight: 100%;\n\t\tmax-height: 40vh;\n\t}\n\n\t// change colour of illustration\n\t[fill*='6c63ff'] {\n\t\tfill: var(--color-primary-element);\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!./EmptyContent.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!./EmptyContent.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[0].rules[0].use[3]!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./EmptyContent.vue?vue&type=style&index=0&lang=scss&\";\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!./EmptyContent.vue?vue&type=style&index=0&lang=scss&\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./EmptyContent.vue?vue&type=template&id=b4c69d2c&\"\nimport script from \"./EmptyContent.vue?vue&type=script&lang=js&\"\nexport * from \"./EmptyContent.vue?vue&type=script&lang=js&\"\nimport style0 from \"./EmptyContent.vue?vue&type=style&index=0&lang=scss&\"\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\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('a',{staticClass:\"file\",class:{\n\t\t'file--cropped': _vm.croppedLayout,\n\t},attrs:{\"href\":_vm.davPath,\"aria-label\":_vm.ariaLabel},on:{\"click\":function($event){$event.preventDefault();return _vm.openViewer.apply(null, arguments)}}},[(_vm.item.injected.mime.includes('video') && _vm.item.injected.hasPreview)?_c('div',{staticClass:\"icon-video-white\"}):_vm._e(),_vm._v(\" \"),_c('transition-group',{staticClass:\"transition-group\",attrs:{\"name\":\"fade\"}},[(!_vm.error)?_c('img',{key:((_vm.item.injected.basename) + \"-img\"),ref:\"img\",attrs:{\"src\":_vm.src,\"alt\":_vm.item.injected.basename,\"aria-describedby\":_vm.ariaUuid},on:{\"load\":_vm.onLoad,\"error\":_vm.onError}}):_vm._e(),_vm._v(\" \"),(!_vm.loaded || _vm.error)?_c('svg',{key:((_vm.item.injected.basename) + \"-svg\"),attrs:{\"xmlns\":\"http://www.w3.org/2000/svg\",\"viewBox\":\"0 0 32 32\",\"fill\":\"url(#placeholder__gradient)\"}},[(_vm.isImage)?_c('use',{attrs:{\"href\":\"#placeholder--img\"}}):_c('use',{attrs:{\"href\":\"#placeholder--video\"}})]):_vm._e()]),_vm._v(\" \"),_c('p',{staticClass:\"hidden-visually\",attrs:{\"id\":_vm.ariaUuid}},[_vm._v(_vm._s(_vm.item.injected.basename))]),_vm._v(\" \"),_c('div',{staticClass:\"cover\",attrs:{\"role\":\"none\"}})],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<!--\n - @copyright Copyright (c) 2020 Corentin Mors\n -\n - @license AGPL-3.0-or-later\n -\n - @author Corentin Mors <medias@pixelswap.fr>\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\n<template>\n\t<a\n\t\t:class=\"{\n\t\t\t'file--cropped': croppedLayout,\n\t\t}\"\n\t\tclass=\"file\"\n\t\t:href=\"davPath\"\n\t\t:aria-label=\"ariaLabel\"\n\t\t@click.prevent=\"openViewer\">\n\t\t<div v-if=\"item.injected.mime.includes('video') && item.injected.hasPreview\" class=\"icon-video-white\" />\n\t\t<!-- image and loading placeholder -->\n\t\t<transition-group name=\"fade\" class=\"transition-group\">\n\t\t\t<img\n\t\t\t\tv-if=\"!error\"\n\t\t\t\tref=\"img\"\n\t\t\t\t:key=\"`${item.injected.basename}-img`\"\n\t\t\t\t:src=\"src\"\n\t\t\t\t:alt=\"item.injected.basename\"\n\t\t\t\t:aria-describedby=\"ariaUuid\"\n\t\t\t\t@load=\"onLoad\"\n\t\t\t\t@error=\"onError\">\n\n\t\t\t<svg\n\t\t\t\tv-if=\"!loaded || error\"\n\t\t\t\t:key=\"`${item.injected.basename}-svg`\"\n\t\t\t\txmlns=\"http://www.w3.org/2000/svg\"\n\t\t\t\tviewBox=\"0 0 32 32\"\n\t\t\t\tfill=\"url(#placeholder__gradient)\">\n\t\t\t\t<use v-if=\"isImage\" href=\"#placeholder--img\" />\n\t\t\t\t<use v-else href=\"#placeholder--video\" />\n\t\t\t</svg>\n\t\t</transition-group>\n\n\t\t<!-- image name and cover -->\n\t\t<p :id=\"ariaUuid\" class=\"hidden-visually\">{{ item.injected.basename }}</p>\n\t\t<div class=\"cover\" role=\"none\" />\n\t</a>\n</template>\n\n<script>\nimport { generateRemoteUrl, generateUrl } from '@nextcloud/router'\nimport { getCurrentUser } from '@nextcloud/auth'\n\nimport UserConfig from '../mixins/UserConfig'\n\nexport default {\n\tname: 'File',\n\tmixins: [UserConfig],\n\tinheritAttrs: false,\n\tprops: {\n\t\titem: {\n\t\t\ttype: Object,\n\t\t\trequired: true,\n\t\t},\n\t},\n\n\tdata() {\n\t\treturn {\n\t\t\tloaded: false,\n\t\t\terror: false,\n\t\t}\n\t},\n\n\tcomputed: {\n\t\tdavPath() {\n\t\t\treturn generateRemoteUrl(`dav/files/${getCurrentUser().uid}`) + this.item.injected.filename\n\t\t},\n\t\tariaUuid() {\n\t\t\treturn `image-${this.item.injected.fileid}`\n\t\t},\n\t\tariaLabel() {\n\t\t\treturn t('photos', 'Open the full size \"{name}\" image', { name: this.item.injected.basename })\n\t\t},\n\t\tisImage() {\n\t\t\treturn this.item.injected.mime.startsWith('image')\n\t\t},\n\t\tsrc() {\n\t\t\treturn generateUrl(`/core/preview?fileId=${this.item.injected.fileid}&x=${256}&y=${256}&a=${!this.croppedLayout}&v=${this.item.injected.etag}`)\n\t\t},\n\t},\n\n\tbeforeDestroy() {\n\t\t// cancel any pending load\n\t\tthis.$refs.src = ''\n\t},\n\n\tmethods: {\n\t\topenViewer() {\n\t\t\tOCA.Viewer.open({\n\t\t\t\tpath: this.item.injected.filename,\n\t\t\t\tlist: this.item.injected.list,\n\t\t\t\tloadMore: this.item.injected.loadMore ? async () => await this.item.injected.loadMore(true) : () => [],\n\t\t\t\tcanLoop: this.item.injected.canLoop,\n\t\t\t})\n\t\t},\n\n\t\t/** When the image is fully loaded by browser we remove the placeholder */\n\t\tonLoad() {\n\t\t\tthis.loaded = true\n\t\t},\n\n\t\tonError() {\n\t\t\tthis.error = true\n\t\t},\n\t},\n\n}\n</script>\n\n<style lang=\"scss\" scoped>\n@import '../mixins/FileFolder';\n\n.transition-group {\n\tdisplay: contents;\n}\n\n.icon-video-white {\n\tposition: absolute;\n\ttop: 10px;\n\tright: 10px;\n\tz-index: 20;\n}\n\nimg {\n\tposition: absolute;\n\twidth: 100%;\n\theight: 100%;\n\tz-index: 10;\n\n\tcolor: transparent; // should be diplayed on error\n\n\tobject-fit: contain;\n\n\t.file--cropped & {\n\t\tobject-fit: cover;\n\t}\n}\n\nsvg {\n\tposition: absolute;\n\twidth: 70%;\n\theight: 70%;\n}\n</style>\n","import mod from \"-!../../node_modules/babel-loader/lib/index.js!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./File.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!./File.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[0].rules[0].use[3]!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./File.vue?vue&type=style&index=0&id=e15fd54e&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!./File.vue?vue&type=style&index=0&id=e15fd54e&lang=scss&scoped=true&\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./File.vue?vue&type=template&id=e15fd54e&scoped=true&\"\nimport script from \"./File.vue?vue&type=script&lang=js&\"\nexport * from \"./File.vue?vue&type=script&lang=js&\"\nimport style0 from \"./File.vue?vue&type=style&index=0&id=e15fd54e&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 \"e15fd54e\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"photos-navigation\",class:{'photos-navigation--root': _vm.isRoot},attrs:{\"role\":\"toolbar\"}},[(!_vm.isRoot)?_c('Actions',{staticClass:\"photos-navigation__back\"},[_c('ActionButton',{attrs:{\"icon\":\"icon-confirm\"},on:{\"click\":_vm.folderUp}},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.backToText)+\"\\n\\t\\t\")])],1):_vm._e(),_vm._v(\" \"),_c('h2',{staticClass:\"photos-navigation__title\"},[_vm._v(\"\\n\\t\\t\"+_vm._s(_vm.name)+\"\\n\\t\")]),_vm._v(\" \"),(!_vm.isRoot && _vm.showActions)?_c('Actions',{staticClass:\"photos-navigation__share\"},[_c('ActionButton',{attrs:{\"icon\":\"icon-shared\"},on:{\"click\":_vm.showSidebar}},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.t('photos', 'Share this folder'))+\"\\n\\t\\t\")])],1):_vm._e()],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<!--\n - @copyright Copyright (c) 2019 John Molakvoæ <skjnldsv@protonmail.com>\n -\n - @author John Molakvoæ <skjnldsv@protonmail.com>\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\n<template>\n\t<div :class=\"{'photos-navigation--root': isRoot}\" class=\"photos-navigation\" role=\"toolbar\">\n\t\t<Actions v-if=\"!isRoot\" class=\"photos-navigation__back\">\n\t\t\t<ActionButton\n\t\t\t\ticon=\"icon-confirm\"\n\t\t\t\t@click=\"folderUp\">\n\t\t\t\t{{ backToText }}\n\t\t\t</ActionButton>\n\t\t</Actions>\n\t\t<h2 class=\"photos-navigation__title\">\n\t\t\t{{ name }}\n\t\t</h2>\n\t\t<Actions v-if=\"!isRoot && showActions\" class=\"photos-navigation__share\">\n\t\t\t<ActionButton\n\t\t\t\ticon=\"icon-shared\"\n\t\t\t\t@click=\"showSidebar\">\n\t\t\t\t{{ t('photos', 'Share this folder') }}\n\t\t\t</ActionButton>\n\t\t</Actions>\n\t</div>\n</template>\n\n<script>\nimport Actions from '@nextcloud/vue/dist/Components/Actions'\nimport ActionButton from '@nextcloud/vue/dist/Components/ActionButton'\nexport default {\n\tname: 'Navigation',\n\n\tcomponents: {\n\t\tActionButton,\n\t\tActions,\n\t},\n\tinheritAttrs: false,\n\n\tprops: {\n\t\tbasename: {\n\t\t\ttype: String,\n\t\t\trequired: true,\n\t\t},\n\t\tfilename: {\n\t\t\ttype: String,\n\t\t\trequired: true,\n\t\t},\n\t\tshowActions: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: false,\n\t\t},\n\t\trootTitle: {\n\t\t\ttype: String,\n\t\t\tdefault: t('photos', 'Photos'),\n\t\t},\n\t},\n\n\tcomputed: {\n\t\tisRoot() {\n\t\t\treturn this.filename === '/'\n\t\t},\n\t\tname() {\n\t\t\tif (this.isRoot) {\n\t\t\t\treturn this.rootTitle\n\t\t\t}\n\t\t\treturn this.basename\n\t\t},\n\t\tparentPath() {\n\t\t\tconst path = this.filename.split('/')\n\t\t\tpath.pop()\n\t\t\tconst parent = path.join('/')\n\t\t\treturn this.isRoot || parent.trim() === ''\n\t\t\t\t? '/'\n\t\t\t\t: path.join('/')\n\t\t},\n\t\tparentName() {\n\t\t\treturn this.parentPath && this.parentPath.split('/').pop()\n\t\t},\n\t\tbackToText() {\n\t\t\tif (this.parentPath === '/') {\n\t\t\t\treturn t('photos', 'Back to {folder}', { folder: this.rootTitle })\n\t\t\t}\n\t\t\treturn t('photos', 'Back to {folder}', { folder: this.parentName })\n\t\t},\n\n\t\t/**\n\t\t * We do not want encoded slashes when browsing by folder\n\t\t * so we generate a new valid route object, get the final url back\n\t\t * decode it and use it as a direct string, which vue-router\n\t\t * does not encode afterwards\n\t\t *\n\t\t * @return {string|object}\n\t\t */\n\t\tto() {\n\t\t\t// always remove first slash, the router\n\t\t\t// manage it automatically\n\t\t\tconst regex = /^\\/?(.*)/i\n\t\t\tconst path = regex.exec(this.parentPath)[1]\n\n\t\t\t// apply to current route\n\t\t\tconst { name, params } = Object.assign({}, this.$route, {\n\t\t\t\tparams: { path },\n\t\t\t})\n\n\t\t\t// return the full object as we don't care about\n\t\t\t// an empty path if this is route\n\t\t\tif (path === '') {\n\t\t\t\treturn { name }\n\t\t\t}\n\n\t\t\t// returning a string prevent vue-router to encode it again\n\t\t\treturn decodeURIComponent(this.$router.resolve({ name, params }).resolved.path)\n\t\t},\n\t},\n\n\tmethods: {\n\t\tfolderUp() {\n\t\t\tthis.$router.push(this.to)\n\t\t},\n\t\tshowSidebar() {\n\t\t\tOCA.Files.Sidebar.open(this.filename)\n\n\t\t},\n\t},\n}\n</script>\n\n<style lang=\"scss\" scoped>\n@use 'sass:math';\n@import '../mixins/GridSizes';\n\n.icon-confirm {\n\ttransform: rotate(180deg)\n}\n\n.photos-navigation {\n\tdisplay: flex;\n\tposition: block;\n\theight: 44px;\n\tpadding: 0 40px;\n\talign-items: center;\n\tmax-width: 100%;\n\t&__title {\n\t\tmargin: 0;\n\t\twhite-space: nowrap;\n\t\toverflow: hidden;\n\t\ttext-overflow: ellipsis;\n\t}\n\t&__share {\n\t\tmargin-left: 10px;\n\t}\n\t&__back,\n\t&__share {\n\t\tflex-grow: 0;\n\t\tflex-shrink: 0;\n\t}\n\n\t// Specific grid spacing\n\t@include grid-sizes using ($marginTop, $marginW) {\n\t\t// we space this with 2/3 margin top, 1/3 margin bottom\n\t\tmargin-top: math.div($marginTop - 44px * 2, 3);\n\n\t\t@if $marginW >= 44px {\n\t\t\t&__back {\n\t\t\t\tmargin: 0 math.div($marginW - 44px, 2);\n\t\t\t}\n\t\t}\n\t\t&--root &__title {\n\t\t\tpadding-left: #{$marginW - 44}px;\n\t\t}\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!./Navigation.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!./Navigation.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[0].rules[0].use[3]!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Navigation.vue?vue&type=style&index=0&id=56972f4e&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!./Navigation.vue?vue&type=style&index=0&id=56972f4e&lang=scss&scoped=true&\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./Navigation.vue?vue&type=template&id=56972f4e&scoped=true&\"\nimport script from \"./Navigation.vue?vue&type=script&lang=js&\"\nexport * from \"./Navigation.vue?vue&type=script&lang=js&\"\nimport style0 from \"./Navigation.vue?vue&type=style&index=0&id=56972f4e&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 \"56972f4e\",\n null\n \n)\n\nexport default component.exports","var map = {\n\t\"./empty.svg\": [\n\t\t67515,\n\t\t\"src_assets_Illustrations_empty_svg\"\n\t],\n\t\"./folder.svg\": [\n\t\t76434,\n\t\t\"src_assets_Illustrations_folder_svg\"\n\t],\n\t\"./images.svg\": [\n\t\t80031,\n\t\t\"src_assets_Illustrations_images_svg\"\n\t]\n};\nfunction webpackAsyncContext(req) {\n\tif(!__webpack_require__.o(map, req)) {\n\t\treturn Promise.resolve().then(() => {\n\t\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\t\te.code = 'MODULE_NOT_FOUND';\n\t\t\tthrow e;\n\t\t});\n\t}\n\n\tvar ids = map[req], id = ids[0];\n\treturn __webpack_require__.e(ids[1]).then(() => {\n\t\treturn __webpack_require__(id);\n\t});\n}\nwebpackAsyncContext.keys = () => (Object.keys(map));\nwebpackAsyncContext.id = 57767;\nmodule.exports = webpackAsyncContext;"],"names":["module","exports","sizes","400","marginTop","marginW","count","gap","700","1024","1280","1440","1600","2048","2560","3440","max","Vue","data","gridConfig","watch","val","this","$emit","created","window","addEventListener","handleWindowResize","beforeDestroy","removeEventListener","methods","currentSize","Object","keys","find","size","document","documentElement","clientWidth","getGridConfig","console","debug","appName","assign","request","cancelToken","axios","url","options","token","cancel","___CSS_LOADER_EXPORT___","push","id","styleTagTransform","setAttributes","insert","domAPI","insertStyleElement","_vm","_h","$createElement","_c","_self","staticClass","domProps","_s","illustration","_v","_t","directives","name","rawName","value","$slots","expression","_e","class","croppedLayout","attrs","davPath","ariaLabel","on","$event","preventDefault","openViewer","apply","arguments","item","injected","mime","includes","hasPreview","error","key","ref","src","basename","ariaUuid","onLoad","onError","loaded","isRoot","folderUp","backToText","showActions","showSidebar","t","map","webpackAsyncContext","req","__webpack_require__","o","Promise","resolve","then","e","Error","code","ids"],"sourceRoot":""} \ No newline at end of file
+{"version":3,"file":"photos-src_mixins_GridConfig_js-src_utils_CancelableRequest_js-src_components_EmptyContent_vue-src_c-45f6cf.js?v=284afe1e9332e6514a9a","mappings":"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","sources":["webpack:///photos/src/assets/grid-sizes.js","webpack:///photos/src/services/GridConfig.js","webpack:///photos/src/mixins/GridConfig.js","webpack:///photos/src/utils/CancelableRequest.js","webpack:///photos/src/components/EmptyContent.vue?vue&type=style&index=0&lang=scss&","webpack:///photos/src/components/File.vue?vue&type=style&index=0&id=6b49524f&lang=scss&scoped=true&","webpack:///photos/src/components/Navigation.vue?vue&type=style&index=0&id=080cb7fa&lang=scss&scoped=true&","webpack:///photos/src/components/EmptyContent.vue?vue&type=template&id=b4c69d2c&","webpack:///photos/src/components/EmptyContent.vue","webpack:///photos/src/components/EmptyContent.vue?vue&type=script&lang=js&","webpack://photos/./src/components/EmptyContent.vue?7390","webpack://photos/./src/components/EmptyContent.vue?b265","webpack:///photos/src/components/File.vue?vue&type=template&id=6b49524f&scoped=true&","webpack:///photos/src/components/File.vue","webpack:///photos/src/components/File.vue?vue&type=script&lang=js&","webpack://photos/./src/components/File.vue?b114","webpack://photos/./src/components/File.vue?f552","webpack:///photos/src/components/Navigation.vue?vue&type=template&id=080cb7fa&scoped=true&","webpack:///photos/src/components/Navigation.vue","webpack:///photos/src/components/Navigation.vue?vue&type=script&lang=js&","webpack://photos/./src/components/Navigation.vue?d5b1","webpack://photos/./src/components/Navigation.vue?7f19","webpack:///photos/src/assets/Illustrations|lazy|/^\\.\\/.*\\.svg$/|groupOptions: {}|namespace object"],"sourcesContent":["/**\n * @copyright Copyright (c) 2018 John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @author John Molakvoæ <skjnldsv@protonmail.com>\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// for now we want to keep the same gap everywhere\nconst gap = 8\n\n/**\n * Define the max width proportions\n * The number (key) indicate the MAX size\n *\n * needs to be compatible with webpack config\n * so no export default {}\n */\nmodule.exports = {\n\tsizes: {\n\t\t400: {\n\t\t\tmarginTop: 66,\n\t\t\tmarginW: gap,\n\t\t\tcount: 3,\n\t\t\tgap,\n\t\t},\n\t\t700: {\n\t\t\tmarginTop: 66,\n\t\t\tmarginW: gap,\n\t\t\tcount: 4,\n\t\t\tgap,\n\t\t},\n\t\t1024: {\n\t\t\tmarginTop: 66,\n\t\t\tmarginW: 44,\n\t\t\tcount: 5,\n\t\t\tgap,\n\t\t},\n\t\t1280: {\n\t\t\tmarginTop: 66,\n\t\t\tmarginW: 44,\n\t\t\tcount: 4,\n\t\t\tgap,\n\t\t},\n\t\t1440: {\n\t\t\tmarginTop: 88,\n\t\t\tmarginW: 66,\n\t\t\tcount: 5,\n\t\t\tgap,\n\t\t},\n\t\t1600: {\n\t\t\tmarginTop: 88,\n\t\t\tmarginW: 66,\n\t\t\tcount: 6,\n\t\t\tgap,\n\t\t},\n\t\t2048: {\n\t\t\tmarginTop: 88,\n\t\t\tmarginW: 66,\n\t\t\tcount: 7,\n\t\t\tgap,\n\t\t},\n\t\t2560: {\n\t\t\tmarginTop: 88,\n\t\t\tmarginW: 88,\n\t\t\tcount: 8,\n\t\t\tgap,\n\t\t},\n\t\t3440: {\n\t\t\tmarginTop: 88,\n\t\t\tmarginW: 88,\n\t\t\tcount: 9,\n\t\t\tgap,\n\t\t},\n\t\tmax: {\n\t\t\tmarginTop: 88,\n\t\t\tmarginW: 88,\n\t\t\tcount: 10,\n\t\t\tgap,\n\t\t},\n\t},\n}\n","/**\n * @copyright Copyright (c) 2019 John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @author John Molakvoæ <skjnldsv@protonmail.com>\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\nimport Vue from 'vue'\nimport { sizes } from '../assets/grid-sizes'\n\nexport default new Vue({\n\tdata() {\n\t\treturn {\n\t\t\tgridConfig: sizes.max,\n\t\t}\n\t},\n\twatch: {\n\t\tgridConfig(val) {\n\t\t\tthis.$emit('changed', val)\n\t\t},\n\t},\n\tcreated() {\n\t\twindow.addEventListener('resize', this.handleWindowResize)\n\t\tthis.handleWindowResize()\n\t},\n\tbeforeDestroy() {\n\t\twindow.removeEventListener('resize', this.handleWindowResize)\n\t},\n\tmethods: {\n\t\thandleWindowResize() {\n\t\t\t// find the first grid size that fit the current window width\n\t\t\tconst currentSize = Object.keys(sizes).find(size => size > document.documentElement.clientWidth)\n\t\t\tthis.gridConfig = sizes[currentSize] || sizes.max\n\t\t},\n\t},\n})\n","/**\n * @copyright Copyright (c) 2018 John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @author John Molakvoæ <skjnldsv@protonmail.com>\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\nimport getGridConfig from '../services/GridConfig'\n\n/**\n * Get the current used grid config\n */\nexport default {\n\tdata() {\n\t\treturn {\n\t\t\tgridConfig: {},\n\t\t}\n\t},\n\n\tcreated() {\n\t\tgetGridConfig.$on('changed', val => {\n\t\t\tthis.gridConfig = val\n\t\t})\n\t\tconsole.debug(`[${appName}]`, 'Grid config', Object.assign({}, getGridConfig.gridConfig))\n\t\tthis.gridConfig = getGridConfig.gridConfig\n\t},\n\n\tbeforeDestroy() {\n\t\tgetGridConfig.$off('changed', this.gridConfig)\n\t},\n}\n","/**\n * @copyright Copyright (c) 2019 Marco Ambrosini <marcoambrosini@pm.me>\n *\n * @author Marco Ambrosini <marcoambrosini@pm.me>\n *\n * @author John Molakvoæ <skjnldsv@protonmail.com>\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\nimport axios from '@nextcloud/axios'\n/**\n * Create a cancel token\n *\n * @return {CancelTokenSource}\n */\nconst createCancelToken = () => axios.CancelToken.source()\n\n/**\n * Creates a cancelable axios 'request object'.\n *\n * @param {Function} request the axios promise request\n * @return {object}\n */\nconst CancelableRequest = function(request) {\n\t/**\n\t * Generate an axios cancel token\n\t */\n\tconst cancelToken = createCancelToken()\n\n\t/**\n\t * Execute the request\n\t *\n\t * @param {string} url the url to send the request to\n\t * @param {object} [options] optional config for the request\n\t */\n\tconst fetch = async function(url, options) {\n\t\treturn request(\n\t\t\turl,\n\t\t\tObject.assign({ cancelToken: cancelToken.token }, options)\n\t\t)\n\t}\n\n\treturn {\n\t\trequest: fetch,\n\t\tcancel: cancelToken.cancel,\n\t}\n}\n\nexport default CancelableRequest\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, \".emptycontent{grid-column:1/-1;margin-top:20vh}.illustration{min-width:200px;max-width:15%;width:300px;margin:auto;margin-bottom:20px;position:relative}.illustration svg{width:100%;height:100%;max-height:40vh}.illustration [fill*=\\\"6c63ff\\\"]{fill:var(--color-primary-element)}\", \"\",{\"version\":3,\"sources\":[\"webpack://./src/components/EmptyContent.vue\"],\"names\":[],\"mappings\":\"AAmHA,cAEC,gBAAA,CACA,eAAA,CAGD,cACC,eAAA,CACA,aAAA,CACA,WAAA,CACA,WAAA,CACA,kBAAA,CACA,iBAAA,CAEA,kBACC,UAAA,CACA,WAAA,CACA,eAAA,CAID,+BACC,iCAAA\",\"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\\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.emptycontent {\\n\\t// span all the available columns\\n\\tgrid-column: 1/-1;\\n\\tmargin-top: 20vh;\\n}\\n\\n.illustration {\\n\\tmin-width: 200px;\\n\\tmax-width: 15%;\\n\\twidth: 300px;\\n\\tmargin: auto;\\n\\tmargin-bottom: 20px;\\n\\tposition: relative;\\n\\n\\tsvg {\\n\\t\\twidth: 100%;\\n\\t\\theight: 100%;\\n\\t\\tmax-height: 40vh;\\n\\t}\\n\\n\\t// change colour of illustration\\n\\t[fill*='6c63ff'] {\\n\\t\\tfill: var(--color-primary-element);\\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, \".file[data-v-6b49524f],.folder[data-v-6b49524f]{position:relative;display:flex;align-items:center;justify-content:center;-webkit-user-select:none;user-select:none;border-radius:var(--border-radius);overflow:hidden}.file .cover[data-v-6b49524f],.folder .cover[data-v-6b49524f]{z-index:2;width:100%;padding-bottom:100%;transition:opacity var(--animation-quick) ease-in-out;opacity:0;background-color:var(--color-main-text)}.file.active .cover[data-v-6b49524f],.file:active .cover[data-v-6b49524f],.file:hover .cover[data-v-6b49524f],.file:focus .cover[data-v-6b49524f],.folder.active .cover[data-v-6b49524f],.folder:active .cover[data-v-6b49524f],.folder:hover .cover[data-v-6b49524f],.folder:focus .cover[data-v-6b49524f]{opacity:.3}.file--clear.active .cover[data-v-6b49524f],.file--clear:active .cover[data-v-6b49524f],.file--clear:hover .cover[data-v-6b49524f],.file--clear:focus .cover[data-v-6b49524f],.folder--clear.active .cover[data-v-6b49524f],.folder--clear:active .cover[data-v-6b49524f],.folder--clear:hover .cover[data-v-6b49524f],.folder--clear:focus .cover[data-v-6b49524f]{opacity:.1}.fade-enter-active[data-v-6b49524f],.fade-leave-active[data-v-6b49524f]{transition:opacity var(--animation-quick) ease-in-out}.fade-enter[data-v-6b49524f],.fade-leave-to[data-v-6b49524f]{opacity:0}.transition-group[data-v-6b49524f]{display:contents}.icon-video-white[data-v-6b49524f]{position:absolute;top:10px;right:10px;z-index:20}img[data-v-6b49524f]{position:absolute;width:100%;height:100%;z-index:10;color:transparent;object-fit:contain}.file--cropped img[data-v-6b49524f]{object-fit:cover}svg[data-v-6b49524f]{position:absolute;width:70%;height:70%}\", \"\",{\"version\":3,\"sources\":[\"webpack://./src/mixins/FileFolder.scss\",\"webpack://./src/components/File.vue\"],\"names\":[],\"mappings\":\"AAsBA,gDAEC,iBAAA,CACA,YAAA,CACA,kBAAA,CACA,sBAAA,CACA,wBAAA,CAAA,gBAAA,CACA,kCAAA,CACA,eAAA,CAEA,8DACC,SAAA,CAMA,UAAA,CACA,mBAAA,CACA,qDAAA,CACA,SAAA,CACA,uCAAA,CAOA,4SACC,UAAA,CAQD,oWACC,UAAA,CAKH,wEACC,qDAAA,CAGD,6DACC,SAAA,CC8DD,mCACC,gBAAA,CAGD,mCACC,iBAAA,CACA,QAAA,CACA,UAAA,CACA,UAAA,CAGD,qBACC,iBAAA,CACA,UAAA,CACA,WAAA,CACA,UAAA,CAEA,iBAAA,CAEA,kBAAA,CAEA,oCACC,gBAAA,CAIF,qBACC,iBAAA,CACA,SAAA,CACA,UAAA\",\"sourcesContent\":[\"/**\\n * @copyright Copyright (c) 2019 John Molakvoæ <skjnldsv@protonmail.com>\\n *\\n * @author John Molakvoæ <skjnldsv@protonmail.com>\\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\\n.file,\\n.folder {\\n\\tposition: relative;\\n\\tdisplay: flex;\\n\\talign-items: center;\\n\\tjustify-content: center;\\n\\tuser-select: none;\\n\\tborder-radius: var(--border-radius);\\n\\toverflow: hidden;\\n\\n\\t.cover {\\n\\t\\tz-index: 2;\\n\\t\\t// We want nice squares despite anything that is in it.\\n\\t\\t// The .cover is what makes the exact square size of the grid.\\n\\t\\t// We use padding-bottom because padding with percentage\\n\\t\\t// always refers to the width. And we only want to fit\\n\\t\\t// the css grid's width.\\n\\t\\twidth: 100%;\\n\\t\\tpadding-bottom: 100%;\\n\\t\\ttransition: opacity var(--animation-quick) ease-in-out;\\n\\t\\topacity: 0;\\n\\t\\tbackground-color: var(--color-main-text);\\n\\t}\\n\\n\\t&.active,\\n\\t&:active,\\n\\t&:hover,\\n\\t&:focus {\\n\\t\\t.cover {\\n\\t\\t\\topacity: .3;\\n\\t\\t}\\n\\t}\\n\\n\\t&--clear.active,\\n\\t&--clear:active,\\n\\t&--clear:hover,\\n\\t&--clear:focus {\\n\\t\\t.cover {\\n\\t\\t\\topacity: .1;\\n\\t\\t}\\n\\t}\\n}\\n\\n.fade-enter-active, .fade-leave-active {\\n\\ttransition: opacity var(--animation-quick) ease-in-out;\\n}\\n\\n.fade-enter, .fade-leave-to {\\n\\topacity: 0;\\n}\\n\",\"$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\\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@import '../mixins/FileFolder';\\n\\n.transition-group {\\n\\tdisplay: contents;\\n}\\n\\n.icon-video-white {\\n\\tposition: absolute;\\n\\ttop: 10px;\\n\\tright: 10px;\\n\\tz-index: 20;\\n}\\n\\nimg {\\n\\tposition: absolute;\\n\\twidth: 100%;\\n\\theight: 100%;\\n\\tz-index: 10;\\n\\n\\tcolor: transparent; // should be diplayed on error\\n\\n\\tobject-fit: contain;\\n\\n\\t.file--cropped & {\\n\\t\\tobject-fit: cover;\\n\\t}\\n}\\n\\nsvg {\\n\\tposition: absolute;\\n\\twidth: 70%;\\n\\theight: 70%;\\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, \".icon-confirm[data-v-080cb7fa]{-webkit-transform:rotate(180deg);transform:rotate(180deg)}.photos-navigation[data-v-080cb7fa]{display:flex;position:block;height:44px;padding:0 40px;align-items:center;max-width:100%}.photos-navigation__title[data-v-080cb7fa]{margin:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.photos-navigation__share[data-v-080cb7fa]{margin-left:10px}.photos-navigation__back[data-v-080cb7fa],.photos-navigation__share[data-v-080cb7fa]{flex-grow:0;flex-shrink:0}@media(min-width: 0px)and (max-width: 400px){.photos-navigation[data-v-080cb7fa]{margin-top:-7.3333333333px}.photos-navigation--root .photos-navigation__title[data-v-080cb7fa]{padding-left:-36px}}@media(min-width: 400px)and (max-width: 700px){.photos-navigation[data-v-080cb7fa]{margin-top:-7.3333333333px}.photos-navigation--root .photos-navigation__title[data-v-080cb7fa]{padding-left:-36px}}@media(min-width: 700px)and (max-width: 1024px){.photos-navigation[data-v-080cb7fa]{margin-top:-7.3333333333px}.photos-navigation__back[data-v-080cb7fa]{margin:0 0px}.photos-navigation--root .photos-navigation__title[data-v-080cb7fa]{padding-left:0px}}@media(min-width: 1024px)and (max-width: 1280px){.photos-navigation[data-v-080cb7fa]{margin-top:-7.3333333333px}.photos-navigation__back[data-v-080cb7fa]{margin:0 0px}.photos-navigation--root .photos-navigation__title[data-v-080cb7fa]{padding-left:0px}}@media(min-width: 1280px)and (max-width: 1440px){.photos-navigation[data-v-080cb7fa]{margin-top:0px}.photos-navigation__back[data-v-080cb7fa]{margin:0 11px}.photos-navigation--root .photos-navigation__title[data-v-080cb7fa]{padding-left:22px}}@media(min-width: 1440px)and (max-width: 1600px){.photos-navigation[data-v-080cb7fa]{margin-top:0px}.photos-navigation__back[data-v-080cb7fa]{margin:0 11px}.photos-navigation--root .photos-navigation__title[data-v-080cb7fa]{padding-left:22px}}@media(min-width: 1600px)and (max-width: 2048px){.photos-navigation[data-v-080cb7fa]{margin-top:0px}.photos-navigation__back[data-v-080cb7fa]{margin:0 11px}.photos-navigation--root .photos-navigation__title[data-v-080cb7fa]{padding-left:22px}}@media(min-width: 2048px)and (max-width: 2560px){.photos-navigation[data-v-080cb7fa]{margin-top:0px}.photos-navigation__back[data-v-080cb7fa]{margin:0 22px}.photos-navigation--root .photos-navigation__title[data-v-080cb7fa]{padding-left:44px}}@media(min-width: 2560px)and (max-width: 3440px){.photos-navigation[data-v-080cb7fa]{margin-top:0px}.photos-navigation__back[data-v-080cb7fa]{margin:0 22px}.photos-navigation--root .photos-navigation__title[data-v-080cb7fa]{padding-left:44px}}@media(min-width: 3440px){.photos-navigation[data-v-080cb7fa]{margin-top:0px}.photos-navigation__back[data-v-080cb7fa]{margin:0 22px}.photos-navigation--root .photos-navigation__title[data-v-080cb7fa]{padding-left:44px}}\", \"\",{\"version\":3,\"sources\":[\"webpack://./src/components/Navigation.vue\",\"webpack://./src/mixins/GridSizes.scss\"],\"names\":[],\"mappings\":\"AAoJA,+BACC,gCAAA,CAAA,wBAAA,CAGD,oCACC,YAAA,CACA,cAAA,CACA,WAAA,CACA,cAAA,CACA,kBAAA,CACA,cAAA,CACA,2CACC,QAAA,CACA,kBAAA,CACA,eAAA,CACA,sBAAA,CAED,2CACC,gBAAA,CAED,qFAEC,WAAA,CACA,aAAA,CCvIC,6CDoHH,oCAyBE,0BAAA,CAOA,oEACC,kBAAA,CAAA,CCrJA,+CDoHH,oCAyBE,0BAAA,CAOA,oEACC,kBAAA,CAAA,CCrJA,gDDoHH,oCAyBE,0BAAA,CAGC,0CACC,YAAA,CAGF,oEACC,gBAAA,CAAA,CCrJA,iDDoHH,oCAyBE,0BAAA,CAGC,0CACC,YAAA,CAGF,oEACC,gBAAA,CAAA,CCrJA,iDDoHH,oCAyBE,cAAA,CAGC,0CACC,aAAA,CAGF,oEACC,iBAAA,CAAA,CCrJA,iDDoHH,oCAyBE,cAAA,CAGC,0CACC,aAAA,CAGF,oEACC,iBAAA,CAAA,CCrJA,iDDoHH,oCAyBE,cAAA,CAGC,0CACC,aAAA,CAGF,oEACC,iBAAA,CAAA,CCrJA,iDDoHH,oCAyBE,cAAA,CAGC,0CACC,aAAA,CAGF,oEACC,iBAAA,CAAA,CCrJA,iDDoHH,oCAyBE,cAAA,CAGC,0CACC,aAAA,CAGF,oEACC,iBAAA,CAAA,CCzJA,0BDwHH,oCAyBE,cAAA,CAGC,0CACC,aAAA,CAGF,oEACC,iBAAA,CAAA\",\"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\\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\\n\\n\\n\\n@use 'sass:math';\\n@import '../mixins/GridSizes';\\n\\n.icon-confirm {\\n\\ttransform: rotate(180deg)\\n}\\n\\n.photos-navigation {\\n\\tdisplay: flex;\\n\\tposition: block;\\n\\theight: 44px;\\n\\tpadding: 0 40px;\\n\\talign-items: center;\\n\\tmax-width: 100%;\\n\\t&__title {\\n\\t\\tmargin: 0;\\n\\t\\twhite-space: nowrap;\\n\\t\\toverflow: hidden;\\n\\t\\ttext-overflow: ellipsis;\\n\\t}\\n\\t&__share {\\n\\t\\tmargin-left: 10px;\\n\\t}\\n\\t&__back,\\n\\t&__share {\\n\\t\\tflex-grow: 0;\\n\\t\\tflex-shrink: 0;\\n\\t}\\n\\n\\t// Specific grid spacing\\n\\t@include grid-sizes using ($marginTop, $marginW) {\\n\\t\\t// we space this with 2/3 margin top, 1/3 margin bottom\\n\\t\\tmargin-top: math.div($marginTop - 44px * 2, 3);\\n\\n\\t\\t@if $marginW >= 44px {\\n\\t\\t\\t&__back {\\n\\t\\t\\t\\tmargin: 0 math.div($marginW - 44px, 2);\\n\\t\\t\\t}\\n\\t\\t}\\n\\t\\t&--root &__title {\\n\\t\\t\\tpadding-left: #{$marginW - 44}px;\\n\\t\\t}\\n\\t}\\n}\\n\",\"/**\\n * @copyright Copyright (c) 2019 John Molakvoæ <skjnldsv@protonmail.com>\\n *\\n * @author John Molakvoæ <skjnldsv@protonmail.com>\\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@use 'sass:map';\\n\\n@mixin grid-sizes() {\\n\\t$previous: 0;\\n\\n\\t@each $size, $config in $sizes {\\n\\t\\t$count: map.get($config, 'count');\\n\\t\\t$marginTop: map.get($config, 'marginTop');\\n\\t\\t$marginW: map.get($config, 'marginW');\\n\\n\\t\\t@if $size == 'max' {\\n\\t\\t\\t@media (min-width: #{$previous}px) {\\n\\t\\t\\t\\t@content($marginTop, $marginW);\\n\\t\\t\\t}\\n\\t\\t} @else {\\n\\t\\t\\t@media (min-width: #{$previous}px) and (max-width: #{$size}px) {\\n\\t\\t\\t\\t@content($marginTop, $marginW);\\n\\t\\t\\t}\\n\\t\\t}\\n\\t\\t$previous: $size;\\n\\t}\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return (_vm.isReady)?_c('div',{staticClass:\"emptycontent\"},[(_vm.haveIllustration)?_c('div',{staticClass:\"illustration\",domProps:{\"innerHTML\":_vm._s(_vm.illustration)}}):_c('div',{staticClass:\"icon-error\"}),_vm._v(\" \"),_c('h2',[_vm._t(\"default\")],2),_vm._v(\" \"),_c('p',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.$slots.desc),expression:\"$slots.desc\"}]},[_vm._t(\"desc\")],2)]):_vm._e()}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<!--\n - @copyright Copyright (c) 2019 John Molakvoæ <skjnldsv@protonmail.com>\n -\n - @author John Molakvoæ <skjnldsv@protonmail.com>\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\n<template>\n\t<div v-if=\"isReady\" class=\"emptycontent\">\n\t\t<!-- eslint-disable-next-line vue/no-v-html (because it's an SVG file) -->\n\t\t<div v-if=\"haveIllustration\" class=\"illustration\" v-html=\"illustration\" />\n\t\t<div v-else class=\"icon-error\" />\n\t\t<h2><slot /></h2>\n\t\t<p v-show=\"$slots.desc\">\n\t\t\t<slot name=\"desc\" />\n\t\t</p>\n\t</div>\n</template>\n\n<script>\nexport default {\n\tname: 'EmptyContent',\n\tprops: {\n\t\tillustrationName: {\n\t\t\ttype: String,\n\t\t\tdefault: '',\n\t\t},\n\t},\n\tdata() {\n\t\treturn {\n\t\t\tillustration: '',\n\t\t}\n\t},\n\tcomputed: {\n\t\t/**\n\t\t * Does this component have an illustration\n\t\t *\n\t\t * @return {boolean}\n\t\t */\n\t\thaveIllustration() {\n\t\t\treturn this.illustrationName !== ''\n\t\t},\n\n\t\t/**\n\t\t * Is the illustration loaded\n\t\t *\n\t\t * @return {boolean}\n\t\t */\n\t\tisLoaded() {\n\t\t\tif (!this.haveIllustration) {\n\t\t\t\treturn true\n\t\t\t}\n\t\t\treturn this.illustration !== ''\n\t\t},\n\n\t\t/**\n\t\t * The component is ready if the illustration\n\t\t * is done loading or if there is none\n\t\t *\n\t\t * @return {boolean}\n\t\t */\n\t\tisReady() {\n\t\t\treturn !this.haveIllustration || (this.haveIllustration && this.isLoaded)\n\t\t},\n\t},\n\n\t/**\n\t * Fetch the new illustration as soon as it changes\n\t */\n\twatch: {\n\t\tillustrationName() {\n\t\t\tthis.getIllustration()\n\t\t},\n\t},\n\tbeforeMount() {\n\t\tthis.getIllustration()\n\t},\n\n\tmethods: {\n\t\t/**\n\t\t * Fetch the illustration as webpack chunk\n\t\t */\n\t\tasync getIllustration() {\n\t\t\tthis.illustration = ''\n\t\t\tif (this.illustrationName !== '') {\n\t\t\t\ttry {\n\t\t\t\t\tconst illustration = await import(`../assets/Illustrations/${this.illustrationName}.svg`)\n\t\t\t\t\tthis.illustration = illustration.default\n\t\t\t\t} catch (error) {\n\t\t\t\t\tconsole.error('Could not get the error illustration', error)\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t},\n\n}\n</script>\n\n<style lang=\"scss\">\n.emptycontent {\n\t// span all the available columns\n\tgrid-column: 1/-1;\n\tmargin-top: 20vh;\n}\n\n.illustration {\n\tmin-width: 200px;\n\tmax-width: 15%;\n\twidth: 300px;\n\tmargin: auto;\n\tmargin-bottom: 20px;\n\tposition: relative;\n\n\tsvg {\n\t\twidth: 100%;\n\t\theight: 100%;\n\t\tmax-height: 40vh;\n\t}\n\n\t// change colour of illustration\n\t[fill*='6c63ff'] {\n\t\tfill: var(--color-primary-element);\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!./EmptyContent.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!./EmptyContent.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[0].rules[0].use[3]!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./EmptyContent.vue?vue&type=style&index=0&lang=scss&\";\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!./EmptyContent.vue?vue&type=style&index=0&lang=scss&\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./EmptyContent.vue?vue&type=template&id=b4c69d2c&\"\nimport script from \"./EmptyContent.vue?vue&type=script&lang=js&\"\nexport * from \"./EmptyContent.vue?vue&type=script&lang=js&\"\nimport style0 from \"./EmptyContent.vue?vue&type=style&index=0&lang=scss&\"\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\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('a',{staticClass:\"file\",class:{\n\t\t'file--cropped': _vm.croppedLayout,\n\t},attrs:{\"href\":_vm.davPath,\"aria-label\":_vm.ariaLabel},on:{\"click\":function($event){$event.preventDefault();return _vm.openViewer.apply(null, arguments)}}},[(_vm.item.injected.mime.includes('video') && _vm.item.injected.hasPreview)?_c('div',{staticClass:\"icon-video-white\"}):_vm._e(),_vm._v(\" \"),_c('transition-group',{staticClass:\"transition-group\",attrs:{\"name\":\"fade\"}},[(!_vm.error)?_c('img',{key:((_vm.item.injected.basename) + \"-img\"),ref:\"img\",attrs:{\"src\":_vm.src,\"alt\":_vm.item.injected.basename,\"aria-describedby\":_vm.ariaUuid},on:{\"load\":_vm.onLoad,\"error\":_vm.onError}}):_vm._e(),_vm._v(\" \"),(!_vm.loaded || _vm.error)?_c('svg',{key:((_vm.item.injected.basename) + \"-svg\"),attrs:{\"xmlns\":\"http://www.w3.org/2000/svg\",\"viewBox\":\"0 0 32 32\",\"fill\":\"url(#placeholder__gradient)\"}},[(_vm.isImage)?_c('use',{attrs:{\"href\":\"#placeholder--img\"}}):_c('use',{attrs:{\"href\":\"#placeholder--video\"}})]):_vm._e()]),_vm._v(\" \"),_c('p',{staticClass:\"hidden-visually\",attrs:{\"id\":_vm.ariaUuid}},[_vm._v(_vm._s(_vm.item.injected.basename))]),_vm._v(\" \"),_c('div',{staticClass:\"cover\",attrs:{\"role\":\"none\"}})],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<!--\n - @copyright Copyright (c) 2020 Corentin Mors\n -\n - @license AGPL-3.0-or-later\n -\n - @author Corentin Mors <medias@pixelswap.fr>\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\n<template>\n\t<a :class=\"{\n\t\t\t'file--cropped': croppedLayout,\n\t\t}\"\n\t\tclass=\"file\"\n\t\t:href=\"davPath\"\n\t\t:aria-label=\"ariaLabel\"\n\t\t@click.prevent=\"openViewer\">\n\t\t<div v-if=\"item.injected.mime.includes('video') && item.injected.hasPreview\" class=\"icon-video-white\" />\n\t\t<!-- image and loading placeholder -->\n\t\t<transition-group name=\"fade\" class=\"transition-group\">\n\t\t\t<img v-if=\"!error\"\n\t\t\t\tref=\"img\"\n\t\t\t\t:key=\"`${item.injected.basename}-img`\"\n\t\t\t\t:src=\"src\"\n\t\t\t\t:alt=\"item.injected.basename\"\n\t\t\t\t:aria-describedby=\"ariaUuid\"\n\t\t\t\t@load=\"onLoad\"\n\t\t\t\t@error=\"onError\">\n\n\t\t\t<svg v-if=\"!loaded || error\"\n\t\t\t\t:key=\"`${item.injected.basename}-svg`\"\n\t\t\t\txmlns=\"http://www.w3.org/2000/svg\"\n\t\t\t\tviewBox=\"0 0 32 32\"\n\t\t\t\tfill=\"url(#placeholder__gradient)\">\n\t\t\t\t<use v-if=\"isImage\" href=\"#placeholder--img\" />\n\t\t\t\t<use v-else href=\"#placeholder--video\" />\n\t\t\t</svg>\n\t\t</transition-group>\n\n\t\t<!-- image name and cover -->\n\t\t<p :id=\"ariaUuid\" class=\"hidden-visually\">{{ item.injected.basename }}</p>\n\t\t<div class=\"cover\" role=\"none\" />\n\t</a>\n</template>\n\n<script>\nimport { generateRemoteUrl, generateUrl } from '@nextcloud/router'\nimport { getCurrentUser } from '@nextcloud/auth'\n\nimport UserConfig from '../mixins/UserConfig'\n\nexport default {\n\tname: 'File',\n\tmixins: [UserConfig],\n\tinheritAttrs: false,\n\tprops: {\n\t\titem: {\n\t\t\ttype: Object,\n\t\t\trequired: true,\n\t\t},\n\t},\n\n\tdata() {\n\t\treturn {\n\t\t\tloaded: false,\n\t\t\terror: false,\n\t\t}\n\t},\n\n\tcomputed: {\n\t\tdavPath() {\n\t\t\treturn generateRemoteUrl(`dav/files/${getCurrentUser().uid}`) + this.item.injected.filename\n\t\t},\n\t\tariaUuid() {\n\t\t\treturn `image-${this.item.injected.fileid}`\n\t\t},\n\t\tariaLabel() {\n\t\t\treturn t('photos', 'Open the full size \"{name}\" image', { name: this.item.injected.basename })\n\t\t},\n\t\tisImage() {\n\t\t\treturn this.item.injected.mime.startsWith('image')\n\t\t},\n\t\tsrc() {\n\t\t\treturn generateUrl(`/core/preview?fileId=${this.item.injected.fileid}&x=${256}&y=${256}&a=${!this.croppedLayout}&v=${this.item.injected.etag}`)\n\t\t},\n\t},\n\n\tbeforeDestroy() {\n\t\t// cancel any pending load\n\t\tthis.$refs.src = ''\n\t},\n\n\tmethods: {\n\t\topenViewer() {\n\t\t\tOCA.Viewer.open({\n\t\t\t\tpath: this.item.injected.filename,\n\t\t\t\tlist: this.item.injected.list,\n\t\t\t\tloadMore: this.item.injected.loadMore ? async () => await this.item.injected.loadMore(true) : () => [],\n\t\t\t\tcanLoop: this.item.injected.canLoop,\n\t\t\t})\n\t\t},\n\n\t\t/** When the image is fully loaded by browser we remove the placeholder */\n\t\tonLoad() {\n\t\t\tthis.loaded = true\n\t\t},\n\n\t\tonError() {\n\t\t\tthis.error = true\n\t\t},\n\t},\n\n}\n</script>\n\n<style lang=\"scss\" scoped>\n@import '../mixins/FileFolder';\n\n.transition-group {\n\tdisplay: contents;\n}\n\n.icon-video-white {\n\tposition: absolute;\n\ttop: 10px;\n\tright: 10px;\n\tz-index: 20;\n}\n\nimg {\n\tposition: absolute;\n\twidth: 100%;\n\theight: 100%;\n\tz-index: 10;\n\n\tcolor: transparent; // should be diplayed on error\n\n\tobject-fit: contain;\n\n\t.file--cropped & {\n\t\tobject-fit: cover;\n\t}\n}\n\nsvg {\n\tposition: absolute;\n\twidth: 70%;\n\theight: 70%;\n}\n</style>\n","import mod from \"-!../../node_modules/babel-loader/lib/index.js!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./File.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!./File.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[0].rules[0].use[3]!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./File.vue?vue&type=style&index=0&id=6b49524f&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!./File.vue?vue&type=style&index=0&id=6b49524f&lang=scss&scoped=true&\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./File.vue?vue&type=template&id=6b49524f&scoped=true&\"\nimport script from \"./File.vue?vue&type=script&lang=js&\"\nexport * from \"./File.vue?vue&type=script&lang=js&\"\nimport style0 from \"./File.vue?vue&type=style&index=0&id=6b49524f&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 \"6b49524f\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"photos-navigation\",class:{'photos-navigation--root': _vm.isRoot},attrs:{\"role\":\"toolbar\"}},[(!_vm.isRoot)?_c('Actions',{staticClass:\"photos-navigation__back\"},[_c('ActionButton',{attrs:{\"icon\":\"icon-confirm\"},on:{\"click\":_vm.folderUp}},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.backToText)+\"\\n\\t\\t\")])],1):_vm._e(),_vm._v(\" \"),_c('h2',{staticClass:\"photos-navigation__title\"},[_vm._v(\"\\n\\t\\t\"+_vm._s(_vm.name)+\"\\n\\t\")]),_vm._v(\" \"),(!_vm.isRoot && _vm.showActions)?_c('Actions',{staticClass:\"photos-navigation__share\"},[_c('ActionButton',{attrs:{\"icon\":\"icon-shared\"},on:{\"click\":_vm.showSidebar}},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.t('photos', 'Share this folder'))+\"\\n\\t\\t\")])],1):_vm._e()],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<!--\n - @copyright Copyright (c) 2019 John Molakvoæ <skjnldsv@protonmail.com>\n -\n - @author John Molakvoæ <skjnldsv@protonmail.com>\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\n<template>\n\t<div :class=\"{'photos-navigation--root': isRoot}\" class=\"photos-navigation\" role=\"toolbar\">\n\t\t<Actions v-if=\"!isRoot\" class=\"photos-navigation__back\">\n\t\t\t<ActionButton icon=\"icon-confirm\"\n\t\t\t\t@click=\"folderUp\">\n\t\t\t\t{{ backToText }}\n\t\t\t</ActionButton>\n\t\t</Actions>\n\t\t<h2 class=\"photos-navigation__title\">\n\t\t\t{{ name }}\n\t\t</h2>\n\t\t<Actions v-if=\"!isRoot && showActions\" class=\"photos-navigation__share\">\n\t\t\t<ActionButton icon=\"icon-shared\"\n\t\t\t\t@click=\"showSidebar\">\n\t\t\t\t{{ t('photos', 'Share this folder') }}\n\t\t\t</ActionButton>\n\t\t</Actions>\n\t</div>\n</template>\n\n<script>\nimport Actions from '@nextcloud/vue/dist/Components/Actions'\nimport ActionButton from '@nextcloud/vue/dist/Components/ActionButton'\nexport default {\n\tname: 'Navigation',\n\n\tcomponents: {\n\t\tActionButton,\n\t\tActions,\n\t},\n\tinheritAttrs: false,\n\n\tprops: {\n\t\tbasename: {\n\t\t\ttype: String,\n\t\t\trequired: true,\n\t\t},\n\t\tfilename: {\n\t\t\ttype: String,\n\t\t\trequired: true,\n\t\t},\n\t\tshowActions: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: false,\n\t\t},\n\t\trootTitle: {\n\t\t\ttype: String,\n\t\t\tdefault: t('photos', 'Photos'),\n\t\t},\n\t},\n\n\tcomputed: {\n\t\tisRoot() {\n\t\t\treturn this.filename === '/'\n\t\t},\n\t\tname() {\n\t\t\tif (this.isRoot) {\n\t\t\t\treturn this.rootTitle\n\t\t\t}\n\t\t\treturn this.basename\n\t\t},\n\t\tparentPath() {\n\t\t\tconst path = this.filename.split('/')\n\t\t\tpath.pop()\n\t\t\tconst parent = path.join('/')\n\t\t\treturn this.isRoot || parent.trim() === ''\n\t\t\t\t? '/'\n\t\t\t\t: path.join('/')\n\t\t},\n\t\tparentName() {\n\t\t\treturn this.parentPath && this.parentPath.split('/').pop()\n\t\t},\n\t\tbackToText() {\n\t\t\tif (this.parentPath === '/') {\n\t\t\t\treturn t('photos', 'Back to {folder}', { folder: this.rootTitle })\n\t\t\t}\n\t\t\treturn t('photos', 'Back to {folder}', { folder: this.parentName })\n\t\t},\n\n\t\t/**\n\t\t * We do not want encoded slashes when browsing by folder\n\t\t * so we generate a new valid route object, get the final url back\n\t\t * decode it and use it as a direct string, which vue-router\n\t\t * does not encode afterwards\n\t\t *\n\t\t * @return {string|object}\n\t\t */\n\t\tto() {\n\t\t\t// always remove first slash, the router\n\t\t\t// manage it automatically\n\t\t\tconst regex = /^\\/?(.*)/i\n\t\t\tconst path = regex.exec(this.parentPath)[1]\n\n\t\t\t// apply to current route\n\t\t\tconst { name, params } = Object.assign({}, this.$route, {\n\t\t\t\tparams: { path },\n\t\t\t})\n\n\t\t\t// return the full object as we don't care about\n\t\t\t// an empty path if this is route\n\t\t\tif (path === '') {\n\t\t\t\treturn { name }\n\t\t\t}\n\n\t\t\t// returning a string prevent vue-router to encode it again\n\t\t\treturn decodeURIComponent(this.$router.resolve({ name, params }).resolved.path)\n\t\t},\n\t},\n\n\tmethods: {\n\t\tfolderUp() {\n\t\t\tthis.$router.push(this.to)\n\t\t},\n\t\tshowSidebar() {\n\t\t\tOCA.Files.Sidebar.open(this.filename)\n\n\t\t},\n\t},\n}\n</script>\n\n<style lang=\"scss\" scoped>\n@use 'sass:math';\n@import '../mixins/GridSizes';\n\n.icon-confirm {\n\ttransform: rotate(180deg)\n}\n\n.photos-navigation {\n\tdisplay: flex;\n\tposition: block;\n\theight: 44px;\n\tpadding: 0 40px;\n\talign-items: center;\n\tmax-width: 100%;\n\t&__title {\n\t\tmargin: 0;\n\t\twhite-space: nowrap;\n\t\toverflow: hidden;\n\t\ttext-overflow: ellipsis;\n\t}\n\t&__share {\n\t\tmargin-left: 10px;\n\t}\n\t&__back,\n\t&__share {\n\t\tflex-grow: 0;\n\t\tflex-shrink: 0;\n\t}\n\n\t// Specific grid spacing\n\t@include grid-sizes using ($marginTop, $marginW) {\n\t\t// we space this with 2/3 margin top, 1/3 margin bottom\n\t\tmargin-top: math.div($marginTop - 44px * 2, 3);\n\n\t\t@if $marginW >= 44px {\n\t\t\t&__back {\n\t\t\t\tmargin: 0 math.div($marginW - 44px, 2);\n\t\t\t}\n\t\t}\n\t\t&--root &__title {\n\t\t\tpadding-left: #{$marginW - 44}px;\n\t\t}\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!./Navigation.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!./Navigation.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[0].rules[0].use[3]!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Navigation.vue?vue&type=style&index=0&id=080cb7fa&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!./Navigation.vue?vue&type=style&index=0&id=080cb7fa&lang=scss&scoped=true&\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./Navigation.vue?vue&type=template&id=080cb7fa&scoped=true&\"\nimport script from \"./Navigation.vue?vue&type=script&lang=js&\"\nexport * from \"./Navigation.vue?vue&type=script&lang=js&\"\nimport style0 from \"./Navigation.vue?vue&type=style&index=0&id=080cb7fa&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 \"080cb7fa\",\n null\n \n)\n\nexport default component.exports","var map = {\n\t\"./empty.svg\": [\n\t\t67515,\n\t\t\"src_assets_Illustrations_empty_svg\"\n\t],\n\t\"./folder.svg\": [\n\t\t76434,\n\t\t\"src_assets_Illustrations_folder_svg\"\n\t],\n\t\"./images.svg\": [\n\t\t80031,\n\t\t\"src_assets_Illustrations_images_svg\"\n\t]\n};\nfunction webpackAsyncContext(req) {\n\tif(!__webpack_require__.o(map, req)) {\n\t\treturn Promise.resolve().then(() => {\n\t\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\t\te.code = 'MODULE_NOT_FOUND';\n\t\t\tthrow e;\n\t\t});\n\t}\n\n\tvar ids = map[req], id = ids[0];\n\treturn __webpack_require__.e(ids[1]).then(() => {\n\t\treturn __webpack_require__(id);\n\t});\n}\nwebpackAsyncContext.keys = () => (Object.keys(map));\nwebpackAsyncContext.id = 57767;\nmodule.exports = webpackAsyncContext;"],"names":["module","exports","sizes","400","marginTop","marginW","count","gap","700","1024","1280","1440","1600","2048","2560","3440","max","Vue","data","gridConfig","watch","val","this","$emit","created","window","addEventListener","handleWindowResize","beforeDestroy","removeEventListener","methods","currentSize","Object","keys","find","size","document","documentElement","clientWidth","getGridConfig","console","debug","appName","assign","request","cancelToken","axios","url","options","token","cancel","___CSS_LOADER_EXPORT___","push","id","styleTagTransform","setAttributes","insert","domAPI","insertStyleElement","_vm","_h","$createElement","_c","_self","staticClass","domProps","_s","illustration","_v","_t","directives","name","rawName","value","$slots","expression","_e","class","croppedLayout","attrs","davPath","ariaLabel","on","$event","preventDefault","openViewer","apply","arguments","item","injected","mime","includes","hasPreview","error","key","ref","src","basename","ariaUuid","onLoad","onError","loaded","isRoot","folderUp","backToText","showActions","showSidebar","t","map","webpackAsyncContext","req","__webpack_require__","o","Promise","resolve","then","e","Error","code","ids"],"sourceRoot":""} \ No newline at end of file