photos/js/photos-src_services_DavRequ...

1 line
32 KiB
XML

{"version":3,"file":"photos-src_services_DavRequest_js-src_utils_CancelableRequest_js-src_components_EmptyContent_vue-src-7d38eb.js?v=fdbe9370476cc2a05e24","mappings":";;;;;;;;;;;;;;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;;;;ACpHA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;AC5OA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;ACxCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;;AC/DA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;;;ACPA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACPA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AC1BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;;;AC1BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAkBA;AACA;;;;;;;;;;;;;;;;;;;ACvCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAkBA;AACA;;;;;;;;;;;;;;;;ACvCA;;;;;;;;;;;;;;;;ACAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AGAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;ACnCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;AC1GA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA","sources":["webpack:///photos/src/components/EmptyContent.vue?vue&type=script&lang=js&","webpack:///photos/src/components/File.vue?vue&type=script&lang=js&","webpack:///photos/src/services/DavRequest.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=ab80f8a8&lang=scss&scoped=true&","webpack://photos/./src/components/EmptyContent.vue?7390","webpack://photos/./src/components/File.vue?737e","webpack:///photos/src/components/EmptyContent.vue","webpack:///photos/src/components/File.vue","webpack://photos/./src/components/EmptyContent.vue?2b0c","webpack://photos/./src/components/File.vue?5012","webpack://photos/./src/components/File.vue?147a","webpack:///photos/src/components/File.vue?vue&type=template&id=ab80f8a8&scoped=true&","webpack://photos/./src/components/EmptyContent.vue?7f6f","webpack://photos/./src/components/File.vue?87a8","webpack:///photos/src/assets/Illustrations|lazy|/^\\.\\/.*\\.svg$/|groupOptions: {}|namespace object"],"sourcesContent":["//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\nexport default {\n name: 'EmptyContent',\n props: {\n illustrationName: {\n type: String,\n default: ''\n }\n },\n\n data() {\n return {\n illustration: ''\n };\n },\n\n computed: {\n /**\n * Does this component have an illustration\n *\n * @return {boolean}\n */\n haveIllustration() {\n return this.illustrationName !== '';\n },\n\n /**\n * Is the illustration loaded\n *\n * @return {boolean}\n */\n isLoaded() {\n if (!this.haveIllustration) {\n return true;\n }\n\n return this.illustration !== '';\n },\n\n /**\n * The component is ready if the illustration\n * is done loading or if there is none\n *\n * @return {boolean}\n */\n isReady() {\n return !this.haveIllustration || this.haveIllustration && this.isLoaded;\n }\n\n },\n\n /**\n * Fetch the new illustration as soon as it changes\n */\n watch: {\n illustrationName() {\n this.getIllustration();\n }\n\n },\n\n beforeMount() {\n this.getIllustration();\n },\n\n methods: {\n /**\n * Fetch the illustration as webpack chunk\n */\n async getIllustration() {\n this.illustration = '';\n\n if (this.illustrationName !== '') {\n try {\n const illustration = await import(`../assets/Illustrations/${this.illustrationName}.svg`);\n this.illustration = illustration.default;\n } catch (error) {\n console.error('Could not get the error illustration', error);\n }\n }\n }\n\n }\n};","//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\nimport { generateRemoteUrl, generateUrl } from '@nextcloud/router';\nimport { getCurrentUser } from '@nextcloud/auth';\nimport { CheckboxRadioSwitch } from '@nextcloud/vue';\nimport UserConfig from '../mixins/UserConfig.js';\nimport Semaphore from '../utils/semaphoreWithPriority.js';\nexport default {\n name: 'File',\n components: {\n CheckboxRadioSwitch\n },\n mixins: [UserConfig],\n inheritAttrs: false,\n props: {\n item: {\n type: Object,\n required: true\n },\n selected: {\n type: Boolean,\n required: true\n },\n allowSelection: {\n type: Boolean,\n default: true\n },\n visibility: {\n type: String,\n required: true\n },\n semaphore: {\n type: Semaphore,\n required: true\n }\n },\n\n data() {\n return {\n loaded: false,\n error: false,\n canLoad: false,\n semaphoreSymbol: null,\n isDestroyed: false\n };\n },\n\n computed: {\n /** @return {string} */\n davPath() {\n return generateRemoteUrl(`dav/files/${getCurrentUser().uid}`) + this.item.filename;\n },\n\n /** @return {string} */\n ariaDescription() {\n return `image-description-${this.item.fileid}`;\n },\n\n /** @return {string} */\n ariaLabel() {\n return t('photos', 'Open the full size \"{name}\" image', {\n name: this.item.basename\n });\n },\n\n /** @return {boolean} */\n isImage() {\n return this.item.mime.startsWith('image');\n },\n\n /** @return {string} */\n decodedEtag() {\n return this.item.etag.replace('&quot;', '').replace('&quot;', '');\n },\n\n /** @return {string} */\n srcVisible() {\n return this.getItemURL(512);\n },\n\n /** @return {string} */\n srcNear() {\n return this.getItemURL(64);\n }\n\n },\n\n async mounted() {\n // Don't render the component right away as it is useless if the user is only scrolling\n await new Promise(resolve => {\n setTimeout(async () => {\n resolve();\n }, 250);\n });\n this.semaphoreSymbol = await this.semaphore.acquire(() => {\n switch (this.visibility) {\n case 'visible':\n return 1;\n\n case 'near':\n return 2;\n\n default:\n return 3;\n }\n }, this.item.fileid);\n this.canLoad = true;\n\n if (this.visibility === 'none' || this.isDestroyed) {\n this.releaseSemaphore();\n }\n },\n\n beforeDestroy() {\n this.isDestroyed = true;\n this.releaseSemaphore(); // cancel any pending load\n\n if (this.$refs.imgNear !== undefined) {\n this.$refs.imgNear.src = '';\n }\n\n if (this.$refs.srcVisible !== undefined) {\n this.$refs.srcVisible.src = '';\n }\n },\n\n methods: {\n emitClick() {\n this.$emit('on-click', this.item.fileid);\n },\n\n /** When the image is fully loaded by browser we remove the placeholder */\n onLoad() {\n this.loaded = true;\n this.releaseSemaphore();\n },\n\n onError() {\n this.error = true;\n this.releaseSemaphore();\n },\n\n onToggle(value) {\n this.$emit('select-toggled', {\n id: this.item.fileid,\n value\n });\n },\n\n getItemURL(size) {\n return generateUrl(`/core/preview?fileId=${this.item.fileid}&c=${this.decodedEtag}&x=${size}&y=${size}&forceIcon=0&a=1`);\n },\n\n releaseSemaphore() {\n if (this.semaphoreSymbol === null) {\n return;\n }\n\n this.semaphore.release(this.semaphoreSymbol);\n this.semaphoreSymbol = null;\n }\n\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 */\nconst props = `\n\t<oc:fileid />\n\t<d:getlastmodified />\n\t<d:getetag />\n\t<d:getcontenttype />\n\t<d:getcontentlength />\n\t<nc:has-preview />\n\t<nc:file-metadata-size />\n\t<oc:favorite />\n\t<d:resourcetype />`;\nexport { props };\nexport default `<?xml version=\"1.0\"?>\n\t\t\t<d:propfind xmlns:d=\"DAV:\"\n\t\t\t\txmlns:oc=\"http://owncloud.org/ns\"\n\t\t\t\txmlns:nc=\"http://nextcloud.org/ns\"\n\t\t\t\txmlns:ocs=\"http://open-collaboration-services.org/ns\">\n\t\t\t\t<d:prop>\n\t\t\t\t\t${props}\n\t\t\t\t</d:prop>\n\t\t\t</d:propfind>`;","/**\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 */\n\nconst createCancelToken = () => axios.CancelToken.source();\n/**\n * Creates a cancelable axios 'request object'.\n *\n * @param {Function} request the axios promise request\n * @return {object}\n */\n\n\nconst CancelableRequest = function (request) {\n /**\n * Generate an axios cancel token\n */\n const cancelToken = createCancelToken();\n /**\n * Execute the request\n *\n * @param {string} url the url to send the request to\n * @param {object} [options] optional config for the request\n */\n\n const fetch = async function (url, options) {\n return request(url, Object.assign({\n cancelToken: cancelToken.token\n }, options));\n };\n\n return {\n request: fetch,\n cancel: cancelToken.cancel\n };\n};\n\nexport default CancelableRequest;","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../node_modules/css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".emptycontent {\\n grid-column: 1/-1;\\n margin-top: 20vh;\\n}\\n.illustration {\\n min-width: 200px;\\n max-width: 15%;\\n width: 300px;\\n margin: auto;\\n margin-bottom: 20px;\\n position: relative;\\n}\\n.illustration svg {\\n width: 100%;\\n height: 100%;\\n max-height: 40vh;\\n}\\n.illustration [fill*=\\\"6c63ff\\\"] {\\n fill: var(--color-primary-element);\\n}\", \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../node_modules/css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \"@charset \\\"UTF-8\\\";\\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.file[data-v-ab80f8a8],\\n.folder[data-v-ab80f8a8] {\\n position: relative;\\n display: flex;\\n align-items: center;\\n justify-content: center;\\n -webkit-user-select: none;\\n user-select: none;\\n border-radius: var(--border-radius);\\n overflow: hidden;\\n}\\n.file .cover[data-v-ab80f8a8],\\n.folder .cover[data-v-ab80f8a8] {\\n z-index: 2;\\n width: 100%;\\n padding-bottom: 100%;\\n transition: opacity var(--animation-quick) ease-in-out;\\n opacity: 0;\\n background-color: var(--color-main-text);\\n}\\n.file.active .cover[data-v-ab80f8a8], .file:active .cover[data-v-ab80f8a8], .file:hover .cover[data-v-ab80f8a8], .file:focus .cover[data-v-ab80f8a8],\\n.folder.active .cover[data-v-ab80f8a8],\\n.folder:active .cover[data-v-ab80f8a8],\\n.folder:hover .cover[data-v-ab80f8a8],\\n.folder:focus .cover[data-v-ab80f8a8] {\\n opacity: 0.3;\\n}\\n.file--clear.active .cover[data-v-ab80f8a8], .file--clear:active .cover[data-v-ab80f8a8], .file--clear:hover .cover[data-v-ab80f8a8], .file--clear:focus .cover[data-v-ab80f8a8],\\n.folder--clear.active .cover[data-v-ab80f8a8],\\n.folder--clear:active .cover[data-v-ab80f8a8],\\n.folder--clear:hover .cover[data-v-ab80f8a8],\\n.folder--clear:focus .cover[data-v-ab80f8a8] {\\n opacity: 0.1;\\n}\\n.fade-enter-active[data-v-ab80f8a8], .fade-leave-active[data-v-ab80f8a8] {\\n transition: opacity var(--animation-quick) ease-in-out;\\n}\\n.fade-enter[data-v-ab80f8a8], .fade-leave-to[data-v-ab80f8a8] {\\n opacity: 0;\\n}\\n.file-container[data-v-ab80f8a8] {\\n background: lightgray;\\n position: relative;\\n border: 2px solid var(--color-main-background);\\n}\\n.file-container.selected[data-v-ab80f8a8]::after {\\n position: absolute;\\n top: 0;\\n left: 0;\\n z-index: 2;\\n width: 100%;\\n height: 100%;\\n content: \\\"\\\";\\n outline: var(--color-primary) solid 4px;\\n outline-offset: -4px;\\n pointer-events: none;\\n}\\n.file-container:hover .selection-checkbox[data-v-ab80f8a8], .file-container.selected .selection-checkbox[data-v-ab80f8a8] {\\n display: flex;\\n}\\n.file-container .selection-checkbox[data-v-ab80f8a8] {\\n display: none;\\n position: absolute;\\n top: 8px;\\n right: min(22px, 50% - 7px);\\n z-index: 1;\\n width: fit-content;\\n}\\n.file-container .selection-checkbox[data-v-ab80f8a8] .checkbox-radio-switch__label {\\n padding: 10px;\\n}\\n.file-container .selection-checkbox[data-v-ab80f8a8] .checkbox-radio-switch__label::after {\\n content: \\\"\\\";\\n background: var(--color-primary-light);\\n width: 16px;\\n height: 16px;\\n position: absolute;\\n left: 1px;\\n z-index: -1;\\n}\\n.file-container .selection-checkbox[data-v-ab80f8a8] .checkbox-radio-switch__label .checkbox-radio-switch__icon {\\n margin: 0;\\n}\\n.file-container a[data-v-ab80f8a8] {\\n width: 100%;\\n height: 100%;\\n box-sizing: border-box;\\n border-radius: 0;\\n}\\n.file-container a .images-container[data-v-ab80f8a8] {\\n display: contents;\\n}\\n.file-container a .images-container .icon-video-white[data-v-ab80f8a8] {\\n position: absolute;\\n top: 10px;\\n right: 10px;\\n z-index: 20;\\n}\\n.file-container a .images-container img[data-v-ab80f8a8] {\\n width: 100%;\\n height: 100%;\\n object-fit: cover;\\n position: absolute;\\n}\\n.file-container a .images-container .loading-overlay[data-v-ab80f8a8] {\\n position: absolute;\\n height: 100%;\\n width: 100%;\\n display: flex;\\n align-content: center;\\n align-items: center;\\n justify-content: center;\\n}\\n.file-container a .images-container .loading-overlay svg[data-v-ab80f8a8] {\\n width: 70%;\\n height: 70%;\\n}\", \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","\n import API from \"!../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../node_modules/css-loader/dist/cjs.js!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/dist/cjs.js!../../node_modules/sass-loader/dist/cjs.js??clonedRuleSet-2[0].rules[0].use[3]!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./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","\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=ab80f8a8&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=ab80f8a8&lang=scss&scoped=true&\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./EmptyContent.vue?vue&type=template&id=6c3ea49c&\"\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\n/* hot reload */\nif (module.hot) {\n var api = require(\"/home/louis/workspace/nextcloud/apps/photos/node_modules/vue-hot-reload-api/dist/index.js\")\n api.install(require('vue'))\n if (api.compatible) {\n module.hot.accept()\n if (!api.isRecorded('6c3ea49c')) {\n api.createRecord('6c3ea49c', component.options)\n } else {\n api.reload('6c3ea49c', component.options)\n }\n module.hot.accept(\"./EmptyContent.vue?vue&type=template&id=6c3ea49c&\", function () {\n api.rerender('6c3ea49c', {\n render: render,\n staticRenderFns: staticRenderFns\n })\n })\n }\n}\ncomponent.options.__file = \"src/components/EmptyContent.vue\"\nexport default component.exports","import { render, staticRenderFns } from \"./File.vue?vue&type=template&id=ab80f8a8&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=ab80f8a8&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 \"ab80f8a8\",\n null\n \n)\n\n/* hot reload */\nif (module.hot) {\n var api = require(\"/home/louis/workspace/nextcloud/apps/photos/node_modules/vue-hot-reload-api/dist/index.js\")\n api.install(require('vue'))\n if (api.compatible) {\n module.hot.accept()\n if (!api.isRecorded('ab80f8a8')) {\n api.createRecord('ab80f8a8', component.options)\n } else {\n api.reload('ab80f8a8', component.options)\n }\n module.hot.accept(\"./File.vue?vue&type=template&id=ab80f8a8&scoped=true&\", function () {\n api.rerender('ab80f8a8', {\n render: render,\n staticRenderFns: staticRenderFns\n })\n })\n }\n}\ncomponent.options.__file = \"src/components/File.vue\"\nexport default component.exports","import mod from \"-!../../node_modules/babel-loader/lib/index.js!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./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&\"","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&\"","export * from \"-!../../node_modules/style-loader/dist/cjs.js!../../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=ab80f8a8&lang=scss&scoped=true&\"","export * from \"-!../../node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./File.vue?vue&type=template&id=ab80f8a8&scoped=true&\"","var render = function () {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n return _vm.isReady\n ? _c(\"div\", { staticClass: \"emptycontent\" }, [\n _vm.haveIllustration\n ? _c(\"div\", {\n staticClass: \"illustration\",\n domProps: { innerHTML: _vm._s(_vm.illustration) },\n })\n : _c(\"div\", { staticClass: \"icon-error\" }),\n _vm._v(\" \"),\n _c(\"h2\", [_vm._t(\"default\")], 2),\n _vm._v(\" \"),\n _c(\n \"p\",\n {\n directives: [\n {\n name: \"show\",\n rawName: \"v-show\",\n value: _vm.$slots.desc,\n expression: \"$slots.desc\",\n },\n ],\n },\n [_vm._t(\"desc\")],\n 2\n ),\n ])\n : _vm._e()\n}\nvar staticRenderFns = []\nrender._withStripped = true\n\nexport { render, staticRenderFns }","var render = function () {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n return _c(\n \"div\",\n { staticClass: \"file-container\", class: { selected: _vm.selected } },\n [\n _vm.allowSelection\n ? _c(\"CheckboxRadioSwitch\", {\n staticClass: \"selection-checkbox\",\n attrs: { checked: _vm.selected },\n on: { \"update:checked\": _vm.onToggle },\n })\n : _vm._e(),\n _vm._v(\" \"),\n _c(\n \"a\",\n {\n staticClass: \"file\",\n attrs: { href: _vm.davPath, \"aria-label\": _vm.ariaLabel },\n on: {\n click: function ($event) {\n $event.preventDefault()\n return _vm.emitClick.apply(null, arguments)\n },\n },\n },\n [\n _vm.item.mime.includes(\"video\") && _vm.item.hasPreview\n ? _c(\"div\", { staticClass: \"icon-video-white\" })\n : _vm._e(),\n _vm._v(\" \"),\n _c(\"div\", { staticClass: \"images-container\" }, [\n _vm.visibility !== \"none\" && _vm.canLoad && !_vm.error\n ? _c(\"img\", {\n key: _vm.item.basename + \"-near\",\n ref: \"imgNear\",\n attrs: {\n src: _vm.srcNear,\n alt: _vm.item.basename,\n \"aria-describedby\": _vm.ariaDescription,\n },\n on: { load: _vm.onLoad, error: _vm.onError },\n })\n : _vm._e(),\n _vm._v(\" \"),\n _vm.visibility === \"visible\" && _vm.canLoad && !_vm.error\n ? _c(\"img\", {\n key: _vm.item.basename + \"-visible\",\n ref: \"imgVisible\",\n attrs: {\n src: _vm.srcVisible,\n alt: _vm.item.basename,\n \"aria-describedby\": _vm.ariaDescription,\n },\n on: { load: _vm.onLoad, error: _vm.onError },\n })\n : _vm._e(),\n _vm._v(\" \"),\n _vm.visibility === \"none\" || !_vm.loaded || _vm.error\n ? _c(\n \"div\",\n {\n key: _vm.item.basename + \"-placeholder\",\n staticClass: \"loading-overlay\",\n },\n [\n _c(\n \"svg\",\n {\n attrs: {\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 32 32\",\n fill: \"url(#placeholder__gradient)\",\n },\n },\n [\n _vm.isImage\n ? _c(\"use\", { attrs: { href: \"#placeholder--img\" } })\n : _c(\"use\", {\n attrs: { href: \"#placeholder--video\" },\n }),\n ]\n ),\n ]\n )\n : _vm._e(),\n ]),\n _vm._v(\" \"),\n _c(\n \"p\",\n {\n staticClass: \"hidden-visually\",\n attrs: { id: _vm.ariaDescription },\n },\n [_vm._v(_vm._s(_vm.item.basename))]\n ),\n ]\n ),\n ],\n 1\n )\n}\nvar staticRenderFns = []\nrender._withStripped = true\n\nexport { render, staticRenderFns }","var map = {\n\t\"./empty.svg\": [\n\t\t\"./src/assets/Illustrations/empty.svg\",\n\t\t\"src_assets_Illustrations_empty_svg\"\n\t],\n\t\"./folder.svg\": [\n\t\t\"./src/assets/Illustrations/folder.svg\",\n\t\t\"src_assets_Illustrations_folder_svg\"\n\t],\n\t\"./images.svg\": [\n\t\t\"./src/assets/Illustrations/images.svg\",\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__.t(id, 1 | 16);\n\t});\n}\nwebpackAsyncContext.keys = () => (Object.keys(map));\nwebpackAsyncContext.id = \"./src/assets/Illustrations lazy recursive ^\\\\.\\\\/.*\\\\.svg$\";\nmodule.exports = webpackAsyncContext;"],"names":[],"sourceRoot":""}