photos/js/photos-src_utils_Cancelable...

1 line
56 KiB
Plaintext

{"version":3,"file":"photos-src_utils_CancelableRequest_js-src_components_EmptyContent_vue-src_components_File_vue-src_co-9f2063.js?v=7b16b825e5150474f9e4","mappings":"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","sources":["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=2c78bfa0&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=2c78bfa0&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?8d04","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) 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 */\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-container[data-v-2c78bfa0]{background:#d3d3d3;position:relative;border:2px solid #fff;height:100%;width:100%}.file-container.selected[data-v-2c78bfa0]::after,.file-container[data-v-2c78bfa0]:focus-within::after{position:absolute;top:0;left:0;z-index:2;width:100%;height:100%;content:\\\"\\\";outline:var(--color-primary) solid 4px;outline-offset:-4px;pointer-events:none}.file-container:hover .selection-checkbox[data-v-2c78bfa0],.file-container.selected .selection-checkbox[data-v-2c78bfa0],.file-container:focus-within .selection-checkbox[data-v-2c78bfa0]{display:flex}.file-container .selection-checkbox[data-v-2c78bfa0]{display:none;position:absolute;top:8px;right:min(22px,50% - 7px);z-index:1;width:-webkit-fit-content;width:-moz-fit-content;width:fit-content}.file-container .selection-checkbox[data-v-2c78bfa0] .checkbox-radio-switch__label{padding:10px}.file-container .selection-checkbox[data-v-2c78bfa0] .checkbox-radio-switch__label::after{content:\\\"\\\";background:var(--color-primary-light);width:16px;height:16px;position:absolute;left:1px;z-index:-1}.file-container .selection-checkbox[data-v-2c78bfa0] .checkbox-radio-switch__label .checkbox-radio-switch__icon{margin:0}.file-container .selection-checkbox .input-label[data-v-2c78bfa0]{position:fixed;z-index:-1;top:-5000px;left:-5000px}.file-container .file[data-v-2c78bfa0]{width:100%;height:100%;box-sizing:border-box}.file-container .file .images-container[data-v-2c78bfa0]{display:contents}.file-container .file .images-container .icon-video-white[data-v-2c78bfa0]{position:absolute;top:10px;right:10px;z-index:20}.file-container .file .images-container img[data-v-2c78bfa0]{width:100%;height:100%;object-fit:cover;position:absolute}.file-container .file .images-container .loading-overlay[data-v-2c78bfa0]{position:absolute;height:100%;width:100%;display:flex;align-content:center;align-items:center;justify-content:center}.file-container .file .images-container .loading-overlay svg[data-v-2c78bfa0]{width:70%;height:70%}\", \"\",{\"version\":3,\"sources\":[\"webpack://./src/components/File.vue\"],\"names\":[],\"mappings\":\"AAuOA,iCACC,kBAAA,CACA,iBAAA,CACA,qBAAA,CACA,WAAA,CACA,UAAA,CAIC,sGACC,iBAAA,CACA,KAAA,CACA,MAAA,CACA,SAAA,CACA,UAAA,CACA,WAAA,CACA,UAAA,CACA,sCAAA,CACA,mBAAA,CACA,mBAAA,CAMD,2LACC,YAAA,CAIF,qDACC,YAAA,CACA,iBAAA,CACA,OAAA,CAEA,yBAAA,CACA,SAAA,CACA,yBAAA,CAAA,sBAAA,CAAA,iBAAA,CAGA,oFACC,YAAA,CAEA,2FACC,UAAA,CACA,qCAAA,CACA,UAAA,CACA,WAAA,CACA,iBAAA,CACA,QAAA,CACA,UAAA,CAGD,iHACC,QAAA,CAIF,kEACC,cAAA,CACA,UAAA,CACA,WAAA,CACA,YAAA,CAIF,uCACC,UAAA,CACA,WAAA,CACA,qBAAA,CAEA,yDACC,gBAAA,CAEA,2EACC,iBAAA,CACA,QAAA,CACA,UAAA,CACA,UAAA,CAGD,6DACC,UAAA,CACA,WAAA,CACA,gBAAA,CACA,iBAAA,CAGD,0EACC,iBAAA,CACA,WAAA,CACA,UAAA,CACA,YAAA,CACA,oBAAA,CACA,kBAAA,CACA,sBAAA,CAEA,8EACC,SAAA,CACA,UAAA\",\"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\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n.file-container {\\n\\tbackground: lightgray;\\n\\tposition: relative;\\n\\tborder: 2px solid white; // Use border so create a separation between images.\\n\\theight: 100%;\\n\\twidth: 100%;\\n\\n\\t// Selection border.\\n\\t&.selected, &:focus-within {\\n\\t\\t&::after {\\n\\t\\t\\tposition: absolute;\\n\\t\\t\\ttop: 0;\\n\\t\\t\\tleft: 0;\\n\\t\\t\\tz-index: 2;\\n\\t\\t\\twidth: 100%;\\n\\t\\t\\theight: 100%;\\n\\t\\t\\tcontent: '';\\n\\t\\t\\toutline: var(--color-primary) solid 4px;\\n\\t\\t\\toutline-offset: -4px;\\n\\t\\t\\tpointer-events: none;\\n\\t\\t}\\n\\t}\\n\\n\\t// Reveal checkbox on hover.\\n\\t&:hover, &.selected, &:focus-within {\\n\\t\\t.selection-checkbox {\\n\\t\\t\\tdisplay: flex;\\n\\t\\t}\\n\\t}\\n\\n\\t.selection-checkbox {\\n\\t\\tdisplay: none;\\n\\t\\tposition: absolute;\\n\\t\\ttop: 8px;\\n\\t\\t// Fancy calculation to render the checkbox in the middle of narrow images.\\n\\t\\tright: min(22px, calc(50% - 7px));\\n\\t\\tz-index: 1;\\n\\t\\twidth: fit-content;\\n\\n\\t\\t// Make the checkbox background round on hover.\\n\\t\\t::v-deep .checkbox-radio-switch__label {\\n\\t\\t\\tpadding: 10px;\\n\\n\\t\\t\\t&::after {\\n\\t\\t\\t\\tcontent: '';\\n\\t\\t\\t\\tbackground: var(--color-primary-light);\\n\\t\\t\\t\\twidth: 16px;\\n\\t\\t\\t\\theight: 16px;\\n\\t\\t\\t\\tposition: absolute;\\n\\t\\t\\t\\tleft: 1px;\\n\\t\\t\\t\\tz-index: -1;\\n\\t\\t\\t}\\n\\n\\t\\t\\t.checkbox-radio-switch__icon {\\n\\t\\t\\t\\tmargin: 0;\\n\\t\\t\\t}\\n\\t\\t}\\n\\n\\t\\t.input-label {\\n\\t\\t\\tposition: fixed;\\n\\t\\t\\tz-index: -1;\\n\\t\\t\\ttop: -5000px;\\n\\t\\t\\tleft: -5000px;\\n\\t\\t}\\n\\t}\\n\\n\\t.file {\\n\\t\\twidth: 100%;\\n\\t\\theight: 100%;\\n\\t\\tbox-sizing: border-box;\\n\\n\\t\\t.images-container {\\n\\t\\t\\tdisplay: contents;\\n\\n\\t\\t\\t.icon-video-white {\\n\\t\\t\\t\\tposition: absolute;\\n\\t\\t\\t\\ttop: 10px;\\n\\t\\t\\t\\tright: 10px;\\n\\t\\t\\t\\tz-index: 20;\\n\\t\\t\\t}\\n\\n\\t\\t\\timg {\\n\\t\\t\\t\\twidth: 100%;\\n\\t\\t\\t\\theight: 100%;\\n\\t\\t\\t\\tobject-fit: cover;\\n\\t\\t\\t\\tposition: absolute;\\n\\t\\t\\t}\\n\\n\\t\\t\\t.loading-overlay {\\n\\t\\t\\t\\tposition: absolute;\\n\\t\\t\\t\\theight: 100%;\\n\\t\\t\\t\\twidth: 100%;\\n\\t\\t\\t\\tdisplay: flex;\\n\\t\\t\\t\\talign-content: center;\\n\\t\\t\\t\\talign-items: center;\\n\\t\\t\\t\\tjustify-content: center;\\n\\n\\t\\t\\t\\tsvg {\\n\\t\\t\\t\\t\\twidth: 70%;\\n\\t\\t\\t\\t\\theight: 70%;\\n\\t\\t\\t\\t}\\n\\t\\t\\t}\\n\\t\\t}\\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, \".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('div',{staticClass:\"file-container\",class:{selected: _vm.selected}},[_c('a',{staticClass:\"file\",attrs:{\"href\":_vm.davPath,\"aria-label\":_vm.ariaLabel},on:{\"click\":function($event){$event.preventDefault();return _vm.emitClick.apply(null, arguments)}}},[(_vm.item.mime.includes('video') && _vm.item.hasPreview)?_c('div',{staticClass:\"icon-video-white\"}):_vm._e(),_vm._v(\" \"),_c('div',{staticClass:\"images-container\"},[(_vm.visibility !== 'none' && _vm.canLoad && !_vm.error)?_c('img',{key:((_vm.item.basename) + \"-near\"),ref:\"imgNear\",attrs:{\"src\":_vm.srcNear,\"alt\":_vm.item.basename,\"aria-describedby\":_vm.ariaDescription},on:{\"load\":_vm.onLoad,\"error\":_vm.onError}}):_vm._e(),_vm._v(\" \"),(_vm.visibility === 'visible' && _vm.canLoad && !_vm.error)?_c('img',{key:((_vm.item.basename) + \"-visible\"),ref:\"imgVisible\",attrs:{\"src\":_vm.srcVisible,\"alt\":_vm.item.basename,\"aria-describedby\":_vm.ariaDescription},on:{\"load\":_vm.onLoad,\"error\":_vm.onError}}):_vm._e(),_vm._v(\" \"),(_vm.visibility === 'none' || !_vm.loaded || _vm.error)?_c('div',{key:((_vm.item.basename) + \"-placeholder\"),staticClass:\"loading-overlay\"},[_c('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.ariaDescription}},[_vm._v(_vm._s(_vm.item.basename))])]),_vm._v(\" \"),(_vm.allowSelection)?_c('CheckboxRadioSwitch',{staticClass:\"selection-checkbox\",attrs:{\"checked\":_vm.selected},on:{\"update:checked\":_vm.onToggle}},[_c('span',{staticClass:\"input-label\"},[_vm._v(_vm._s(_vm.t('photos', 'Select image {imageName}', {imageName: _vm.item.basename})))])]):_vm._e()],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<div class=\"file-container\"\n\t\t:class=\"{selected}\">\n\t\t<a class=\"file\"\n\t\t\t:href=\"davPath\"\n\t\t\t:aria-label=\"ariaLabel\"\n\t\t\t@click.prevent=\"emitClick\">\n\n\t\t\t<div v-if=\"item.mime.includes('video') && item.hasPreview\" class=\"icon-video-white\" />\n\n\t\t\t<!-- image and loading placeholder -->\n\t\t\t<div class=\"images-container\">\n\t\t\t\t<img v-if=\"visibility !== 'none' && canLoad && !error\"\n\t\t\t\t\tref=\"imgNear\"\n\t\t\t\t\t:key=\"`${item.basename}-near`\"\n\t\t\t\t\t:src=\"srcNear\"\n\t\t\t\t\t:alt=\"item.basename\"\n\t\t\t\t\t:aria-describedby=\"ariaDescription\"\n\t\t\t\t\t@load=\"onLoad\"\n\t\t\t\t\t@error=\"onError\">\n\n\t\t\t\t<img v-if=\"visibility === 'visible' && canLoad && !error\"\n\t\t\t\t\tref=\"imgVisible\"\n\t\t\t\t\t:key=\"`${item.basename}-visible`\"\n\t\t\t\t\t:src=\"srcVisible\"\n\t\t\t\t\t:alt=\"item.basename\"\n\t\t\t\t\t:aria-describedby=\"ariaDescription\"\n\t\t\t\t\t@load=\"onLoad\"\n\t\t\t\t\t@error=\"onError\">\n\n\t\t\t\t<div v-if=\"visibility === 'none' || !loaded || error\"\n\t\t\t\t\t:key=\"`${item.basename}-placeholder`\"\n\t\t\t\t\tclass=\"loading-overlay\">\n\t\t\t\t\t<svg xmlns=\"http://www.w3.org/2000/svg\"\n\t\t\t\t\t\tviewBox=\"0 0 32 32\"\n\t\t\t\t\t\tfill=\"url(#placeholder__gradient)\">\n\t\t\t\t\t\t<use v-if=\"isImage\" href=\"#placeholder--img\" />\n\t\t\t\t\t\t<use v-else href=\"#placeholder--video\" />\n\t\t\t\t\t</svg>\n\t\t\t\t</div>\n\t\t\t</div>\n\n\t\t\t<!-- image name -->\n\t\t\t<p :id=\"ariaDescription\" class=\"hidden-visually\">{{ item.basename }}</p>\n\t\t</a>\n\n\t\t<CheckboxRadioSwitch v-if=\"allowSelection\"\n\t\t\tclass=\"selection-checkbox\"\n\t\t\t:checked=\"selected\"\n\t\t\t@update:checked=\"onToggle\">\n\t\t\t<span class=\"input-label\">{{ t('photos', 'Select image {imageName}', {imageName: item.basename}) }}</span>\n\t\t</CheckboxRadioSwitch>\n\t</div>\n</template>\n\n<script>\nimport { generateRemoteUrl, generateUrl } from '@nextcloud/router'\nimport { getCurrentUser } from '@nextcloud/auth'\nimport { CheckboxRadioSwitch } from '@nextcloud/vue'\n\nimport UserConfig from '../mixins/UserConfig.js'\nimport SemaphoreWithPriority from '../utils/semaphoreWithPriority.js'\n\nexport default {\n\tname: 'File',\n\tcomponents: {\n\t\tCheckboxRadioSwitch,\n\t},\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\tselected: {\n\t\t\ttype: Boolean,\n\t\t\trequired: true,\n\t\t},\n\t\tallowSelection: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: true,\n\t\t},\n\t\tvisibility: {\n\t\t\ttype: String,\n\t\t\trequired: true,\n\t\t},\n\t\tsemaphore: {\n\t\t\ttype: SemaphoreWithPriority,\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\tcanLoad: false,\n\t\t\tsemaphoreSymbol: null,\n\t\t\tisDestroyed: false,\n\t\t}\n\t},\n\n\tcomputed: {\n\t\t/** @return {string} */\n\t\tdavPath() {\n\t\t\treturn generateRemoteUrl(`dav/files/${getCurrentUser().uid}`) + this.item.filename\n\t\t},\n\t\t/** @return {string} */\n\t\tariaDescription() {\n\t\t\treturn `image-description-${this.item.fileid}`\n\t\t},\n\t\t/** @return {string} */\n\t\tariaLabel() {\n\t\t\treturn t('photos', 'Open the full size \"{name}\" image', { name: this.item.basename })\n\t\t},\n\t\t/** @return {boolean} */\n\t\tisImage() {\n\t\t\treturn this.item.mime.startsWith('image')\n\t\t},\n\t\t/** @return {string} */\n\t\tdecodedEtag() {\n\t\t\treturn this.item.etag.replace('&quot;', '').replace('&quot;', '')\n\t\t},\n\t\t/** @return {string} */\n\t\tsrcVisible() {\n\t\t\treturn this.getItemURL(512)\n\t\t},\n\t\t/** @return {string} */\n\t\tsrcNear() {\n\t\t\treturn this.getItemURL(64)\n\t\t},\n\t},\n\n\tasync mounted() {\n\t\t// Don't render the component right away as it is useless if the user is only scrolling\n\t\tawait new Promise((resolve) => {\n\t\t\tsetTimeout(async () => { resolve() }, 250)\n\t\t})\n\n\t\tthis.semaphoreSymbol = await this.semaphore.acquire(() => {\n\t\t\tswitch (this.visibility) {\n\t\t\tcase 'visible':\n\t\t\t\treturn 1\n\t\t\tcase 'near':\n\t\t\t\treturn 2\n\t\t\tdefault:\n\t\t\t\treturn 3\n\t\t\t}\n\t\t}, this.item.fileid)\n\n\t\tthis.canLoad = true\n\t\tif (this.visibility === 'none' || this.isDestroyed) {\n\t\t\tthis.releaseSemaphore()\n\t\t}\n\t},\n\n\tbeforeDestroy() {\n\t\tthis.isDestroyed = true\n\t\tthis.releaseSemaphore()\n\n\t\t// cancel any pending load\n\t\tif (this.$refs.imgNear !== undefined) {\n\t\t\tthis.$refs.imgNear.src = ''\n\t\t}\n\t\tif (this.$refs.srcVisible !== undefined) {\n\t\t\tthis.$refs.srcVisible.src = ''\n\t\t}\n\t},\n\n\tmethods: {\n\t\temitClick() {\n\t\t\tthis.$emit('click', this.item.fileid)\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\tthis.releaseSemaphore()\n\t\t},\n\n\t\tonError() {\n\t\t\tthis.error = true\n\t\t\tthis.releaseSemaphore()\n\t\t},\n\n\t\tonToggle(value) {\n\t\t\tthis.$emit('select-toggled', { id: this.item.fileid, value })\n\t\t},\n\n\t\tgetItemURL(size) {\n\t\t\treturn generateUrl(`/core/preview?fileId=${this.item.fileid}&c=${this.decodedEtag}&x=${size}&y=${size}&forceIcon=0&a=1`)\n\n\t\t},\n\n\t\treleaseSemaphore() {\n\t\t\tif (this.semaphoreSymbol === null) {\n\t\t\t\treturn\n\t\t\t}\n\t\t\tthis.semaphore.release(this.semaphoreSymbol)\n\t\t\tthis.semaphoreSymbol = null\n\t\t},\n\t},\n\n}\n</script>\n\n<style lang=\"scss\" scoped>\n.file-container {\n\tbackground: lightgray;\n\tposition: relative;\n\tborder: 2px solid white; // Use border so create a separation between images.\n\theight: 100%;\n\twidth: 100%;\n\n\t// Selection border.\n\t&.selected, &:focus-within {\n\t\t&::after {\n\t\t\tposition: absolute;\n\t\t\ttop: 0;\n\t\t\tleft: 0;\n\t\t\tz-index: 2;\n\t\t\twidth: 100%;\n\t\t\theight: 100%;\n\t\t\tcontent: '';\n\t\t\toutline: var(--color-primary) solid 4px;\n\t\t\toutline-offset: -4px;\n\t\t\tpointer-events: none;\n\t\t}\n\t}\n\n\t// Reveal checkbox on hover.\n\t&:hover, &.selected, &:focus-within {\n\t\t.selection-checkbox {\n\t\t\tdisplay: flex;\n\t\t}\n\t}\n\n\t.selection-checkbox {\n\t\tdisplay: none;\n\t\tposition: absolute;\n\t\ttop: 8px;\n\t\t// Fancy calculation to render the checkbox in the middle of narrow images.\n\t\tright: min(22px, calc(50% - 7px));\n\t\tz-index: 1;\n\t\twidth: fit-content;\n\n\t\t// Make the checkbox background round on hover.\n\t\t::v-deep .checkbox-radio-switch__label {\n\t\t\tpadding: 10px;\n\n\t\t\t&::after {\n\t\t\t\tcontent: '';\n\t\t\t\tbackground: var(--color-primary-light);\n\t\t\t\twidth: 16px;\n\t\t\t\theight: 16px;\n\t\t\t\tposition: absolute;\n\t\t\t\tleft: 1px;\n\t\t\t\tz-index: -1;\n\t\t\t}\n\n\t\t\t.checkbox-radio-switch__icon {\n\t\t\t\tmargin: 0;\n\t\t\t}\n\t\t}\n\n\t\t.input-label {\n\t\t\tposition: fixed;\n\t\t\tz-index: -1;\n\t\t\ttop: -5000px;\n\t\t\tleft: -5000px;\n\t\t}\n\t}\n\n\t.file {\n\t\twidth: 100%;\n\t\theight: 100%;\n\t\tbox-sizing: border-box;\n\n\t\t.images-container {\n\t\t\tdisplay: contents;\n\n\t\t\t.icon-video-white {\n\t\t\t\tposition: absolute;\n\t\t\t\ttop: 10px;\n\t\t\t\tright: 10px;\n\t\t\t\tz-index: 20;\n\t\t\t}\n\n\t\t\timg {\n\t\t\t\twidth: 100%;\n\t\t\t\theight: 100%;\n\t\t\t\tobject-fit: cover;\n\t\t\t\tposition: absolute;\n\t\t\t}\n\n\t\t\t.loading-overlay {\n\t\t\t\tposition: absolute;\n\t\t\t\theight: 100%;\n\t\t\t\twidth: 100%;\n\t\t\t\tdisplay: flex;\n\t\t\t\talign-content: center;\n\t\t\t\talign-items: center;\n\t\t\t\tjustify-content: center;\n\n\t\t\t\tsvg {\n\t\t\t\t\twidth: 70%;\n\t\t\t\t\theight: 70%;\n\t\t\t\t}\n\t\t\t}\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!./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=2c78bfa0&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=2c78bfa0&lang=scss&scoped=true&\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./File.vue?vue&type=template&id=2c78bfa0&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=2c78bfa0&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 \"2c78bfa0\",\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":["request","cancelToken","axios","url","options","Object","assign","token","cancel","___CSS_LOADER_EXPORT___","push","module","id","styleTagTransform","setAttributes","insert","domAPI","insertStyleElement","_vm","this","_h","$createElement","_c","_self","staticClass","domProps","_s","illustration","_v","_t","directives","name","rawName","value","$slots","expression","_e","class","selected","attrs","davPath","ariaLabel","on","$event","preventDefault","emitClick","apply","arguments","item","mime","includes","hasPreview","visibility","canLoad","error","key","ref","srcNear","basename","ariaDescription","onLoad","onError","srcVisible","loaded","onToggle","t","imageName","isRoot","folderUp","backToText","showActions","showSidebar","map","webpackAsyncContext","req","__webpack_require__","o","Promise","resolve","then","e","Error","code","ids","keys","exports"],"sourceRoot":""}