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

photos-src_services_DavRequest_js-src_utils_CancelableRequest_js-src_components_EmptyContent_vue-src-7d38eb.js.map « js - github.com/nextcloud/photos.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
blob: b12adc320e9cea6d609230cd187a05dbd28c7dfe (plain)
1
{"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":""}