photos/js/photos-src_utils_Cancelable...

1 line
46 KiB
Plaintext

{"version":3,"file":"photos-src_utils_CancelableRequest_js-node_modules_vue-material-design-icons_Send_vue-src_views_Albums_vue.js?v=e3f0683ce158bc442f65","mappings":"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","sources":["webpack:///photos/src/utils/CancelableRequest.js","webpack:///photos/src/components/AlbumCover.vue?vue&type=style&index=0&id=9a9e277a&lang=scss&scoped=true&","webpack:///photos/src/components/Loader.vue?vue&type=style&index=0&lang=scss&","webpack:///photos/src/views/Albums.vue?vue&type=style&index=0&id=6146de25&lang=scss&scoped=true&","webpack:///photos/node_modules/vue-material-design-icons/ImageMultiple.vue","webpack:///photos/node_modules/vue-material-design-icons/ImageMultiple.vue?vue&type=script&lang=js&","webpack://photos/./node_modules/vue-material-design-icons/ImageMultiple.vue?126d","webpack:///photos/node_modules/vue-material-design-icons/ImageMultiple.vue?vue&type=template&id=2a6b9fca&","webpack:///photos/node_modules/vue-material-design-icons/Send.vue","webpack:///photos/node_modules/vue-material-design-icons/Send.vue?vue&type=script&lang=js&","webpack://photos/./node_modules/vue-material-design-icons/Send.vue?0295","webpack:///photos/node_modules/vue-material-design-icons/Send.vue?vue&type=template&id=2971c53a&","webpack:///photos/src/components/Loader.vue","webpack:///photos/src/components/Loader.vue?vue&type=script&lang=js&","webpack://photos/./src/components/Loader.vue?eb1b","webpack://photos/./src/components/Loader.vue?5508","webpack:///photos/src/components/Loader.vue?vue&type=template&id=7bbb2dd6&","webpack:///photos/src/views/Albums.vue?vue&type=template&id=6146de25&scoped=true&","webpack:///photos/src/components/AlbumCover.vue","webpack:///photos/src/components/AlbumCover.vue?vue&type=script&lang=js&","webpack://photos/./src/components/AlbumCover.vue?1fc3","webpack://photos/./src/components/AlbumCover.vue?71ef","webpack:///photos/src/components/AlbumCover.vue?vue&type=template&id=9a9e277a&scoped=true&","webpack:///photos/src/views/Albums.vue","webpack:///photos/src/views/Albums.vue?vue&type=script&lang=js&","webpack://photos/./src/views/Albums.vue?9da2","webpack://photos/./src/views/Albums.vue?2029"],"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, \".album-cover[data-v-9a9e277a]{display:flex;flex-direction:column;padding:16px;border-radius:12px}.album-cover[data-v-9a9e277a]:hover,.album-cover[data-v-9a9e277a]:focus{background:var(--color-background-dark)}.album-cover__image[data-v-9a9e277a]{width:350px;height:350px;object-fit:none;border-radius:12px}@media only screen and (max-width: 1200px){.album-cover__image[data-v-9a9e277a]{width:250px;height:250px}}.album-cover__image--placeholder[data-v-9a9e277a]{background:var(--color-primary-light)}.album-cover__image--placeholder[data-v-9a9e277a] .material-design-icon{width:100%;height:100%}.album-cover__image--placeholder[data-v-9a9e277a] .material-design-icon .material-design-icon__svg{fill:var(--color-primary)}.album-cover__details[data-v-9a9e277a]{display:flex;flex-direction:column;margin-top:16px;width:350px}@media only screen and (max-width: 1200px){.album-cover__details[data-v-9a9e277a]{width:250px}}.album-cover__details__first-line[data-v-9a9e277a]{display:flex}.album-cover__details__second-line[data-v-9a9e277a]{display:flex;color:var(--color-text-lighter)}.album-cover__details__name[data-v-9a9e277a]{flex-grow:1;margin:0;font-weight:normal;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}\", \"\",{\"version\":3,\"sources\":[\"webpack://./src/components/AlbumCover.vue\"],\"names\":[],\"mappings\":\"AA+FA,8BACC,YAAA,CACA,qBAAA,CACA,YAAA,CACA,kBAAA,CAEA,wEACC,uCAAA,CAGD,qCACC,WAAA,CACA,YAAA,CACA,eAAA,CACA,kBAAA,CAEA,2CAND,qCAOE,WAAA,CACA,YAAA,CAAA,CAGD,kDACC,qCAAA,CAEA,yEACC,UAAA,CACA,WAAA,CAEA,oGACC,yBAAA,CAMJ,uCACC,YAAA,CACA,qBAAA,CACA,eAAA,CACA,WAAA,CAEA,2CAND,uCAOE,WAAA,CAAA,CAGD,mDACC,YAAA,CAGD,oDACC,YAAA,CACA,+BAAA,CAGD,6CACC,WAAA,CACA,QAAA,CACA,kBAAA,CACA,eAAA,CACA,kBAAA,CACA,sBAAA\",\"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.album-cover {\\n\\tdisplay: flex;\\n\\tflex-direction: column;\\n\\tpadding: 16px;\\n\\tborder-radius: 12px;\\n\\n\\t&:hover, &:focus {\\n\\t\\tbackground: var(--color-background-dark);\\n\\t}\\n\\n\\t&__image {\\n\\t\\twidth: 350px;\\n\\t\\theight: 350px;\\n\\t\\tobject-fit: none;\\n\\t\\tborder-radius: 12px;\\n\\n\\t\\t@media only screen and (max-width: 1200px) {\\n\\t\\t\\twidth: 250px;\\n\\t\\t\\theight: 250px;\\n\\t\\t}\\n\\n\\t\\t&--placeholder {\\n\\t\\t\\tbackground: var(--color-primary-light);\\n\\n\\t\\t\\t::v-deep .material-design-icon {\\n\\t\\t\\t\\twidth: 100%;\\n\\t\\t\\t\\theight: 100%;\\n\\n\\t\\t\\t\\t.material-design-icon__svg {\\n\\t\\t\\t\\t\\tfill: var(--color-primary);\\n\\t\\t\\t\\t}\\n\\t\\t\\t}\\n\\t\\t}\\n\\t}\\n\\n\\t&__details {\\n\\t\\tdisplay: flex;\\n\\t\\tflex-direction: column;\\n\\t\\tmargin-top: 16px;\\n\\t\\twidth: 350px;\\n\\n\\t\\t@media only screen and (max-width: 1200px) {\\n\\t\\t\\twidth: 250px;\\n\\t\\t}\\n\\n\\t\\t&__first-line {\\n\\t\\t\\tdisplay: flex;\\n\\t\\t}\\n\\n\\t\\t&__second-line {\\n\\t\\t\\tdisplay: flex;\\n\\t\\t\\tcolor: var(--color-text-lighter);\\n\\t\\t}\\n\\n\\t\\t&__name {\\n\\t\\t\\tflex-grow: 1;\\n\\t\\t\\tmargin: 0;\\n\\t\\t\\tfont-weight: normal;\\n\\t\\t\\toverflow: hidden;\\n\\t\\t\\twhite-space: nowrap;\\n\\t\\t\\ttext-overflow: ellipsis;\\n\\n\\t\\t}\\n\\t}\\n\\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, \".loader{display:grid;height:60px}\", \"\",{\"version\":3,\"sources\":[\"webpack://./src/components/Loader.vue\"],\"names\":[],\"mappings\":\"AAsCA,QACC,YAAA,CACA,WAAA\",\"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.loader {\\n\\tdisplay: grid;\\n\\theight: 60px;\\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, \".albums[data-v-6146de25]{display:flex;flex-direction:column}.albums__header[data-v-6146de25]{display:flex;min-height:60px;align-items:center;padding:8px 64px 32px 64px;position:-webkit-sticky;position:sticky;top:var(--header-height);width:100%;z-index:3;background:var(--color-main-background)}@media only screen and (max-width: 1200px){.albums__header[data-v-6146de25]{padding:8px 48px 32px 48px}}.albums__header button[data-v-6146de25]{margin-right:32px}.albums__list[data-v-6146de25]{padding:0px 48px 32px 48px;flex-grow:1;display:flex;flex-wrap:wrap;gap:16px;align-items:flex-start}@media only screen and (max-width: 1200px){.albums__list[data-v-6146de25]{padding:0px 12px 32px 12px;justify-content:center}}.albums__empty[data-v-6146de25]{display:flex;flex-direction:column;align-items:center}.albums__empty__button[data-v-6146de25]{margin-top:32px}.empty-content-with-illustration[data-v-6146de25] .empty-content__icon{width:200px;height:200px}.empty-content-with-illustration[data-v-6146de25] .empty-content__icon svg{width:200px;height:200px}\", \"\",{\"version\":3,\"sources\":[\"webpack://./src/views/Albums.vue\"],\"names\":[],\"mappings\":\"AAoIA,yBACC,YAAA,CACA,qBAAA,CAEA,iCACC,YAAA,CACA,eAAA,CACA,kBAAA,CACA,0BAAA,CACA,uBAAA,CAAA,eAAA,CACA,wBAAA,CACA,UAAA,CACA,SAAA,CACA,uCAAA,CAEA,2CAXD,iCAYE,0BAAA,CAAA,CAGD,wCACC,iBAAA,CAIF,+BACC,0BAAA,CACA,WAAA,CACA,YAAA,CACA,cAAA,CACA,QAAA,CACA,sBAAA,CAEA,2CARD,+BASE,0BAAA,CACA,sBAAA,CAAA,CAKF,gCACC,YAAA,CACA,qBAAA,CACA,kBAAA,CAEA,wCACC,eAAA,CAKH,wEACC,WAAA,CACA,YAAA,CAEA,4EACC,WAAA,CACA,YAAA\",\"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.albums {\\n\\tdisplay: flex;\\n\\tflex-direction: column;\\n\\n\\t&__header {\\n\\t\\tdisplay: flex;\\n\\t\\tmin-height: 60px;\\n\\t\\talign-items: center;\\n\\t\\tpadding: 8px 64px 32px 64px;\\n\\t\\tposition: sticky;\\n\\t\\ttop: var(--header-height);\\n\\t\\twidth: 100%;\\n\\t\\tz-index: 3;\\n\\t\\tbackground: var(--color-main-background);\\n\\n\\t\\t@media only screen and (max-width: 1200px) {\\n\\t\\t\\tpadding: 8px 48px 32px 48px;\\n\\t\\t}\\n\\n\\t\\tbutton {\\n\\t\\t\\tmargin-right: 32px;\\n\\t\\t}\\n\\t}\\n\\n\\t&__list {\\n\\t\\tpadding: 0px 48px 32px 48px;\\n\\t\\tflex-grow: 1;\\n\\t\\tdisplay: flex;\\n\\t\\tflex-wrap: wrap;\\n\\t\\tgap: 16px;\\n\\t\\talign-items: flex-start;\\n\\n\\t\\t@media only screen and (max-width: 1200px) {\\n\\t\\t\\tpadding: 0px 12px 32px 12px;\\n\\t\\t\\tjustify-content: center;\\n\\t\\t}\\n\\n\\t}\\n\\n\\t&__empty {\\n\\t\\tdisplay: flex;\\n\\t\\tflex-direction: column;\\n\\t\\talign-items: center;\\n\\n\\t\\t&__button {\\n\\t\\t\\tmargin-top: 32px;\\n\\t\\t}\\n\\t}\\n}\\n\\n.empty-content-with-illustration ::v-deep .empty-content__icon {\\n\\twidth: 200px;\\n\\theight: 200px;\\n\\n\\tsvg {\\n\\t\\twidth: 200px;\\n\\t\\theight: 200px;\\n\\t}\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","<template>\n <span :aria-hidden=\"!title\"\n :aria-label=\"title\"\n class=\"material-design-icon image-multiple-icon\"\n role=\"img\"\n v-bind=\"$attrs\"\n @click=\"$emit('click', $event)\">\n <svg :fill=\"fillColor\"\n class=\"material-design-icon__svg\"\n :width=\"size\"\n :height=\"size\"\n viewBox=\"0 0 24 24\">\n <path d=\"M22,16V4A2,2 0 0,0 20,2H8A2,2 0 0,0 6,4V16A2,2 0 0,0 8,18H20A2,2 0 0,0 22,16M11,12L13.03,14.71L16,11L20,16H8M2,6V20A2,2 0 0,0 4,22H18V20H4V6\">\n <title v-if=\"title\">{{ title }}</title>\n </path>\n </svg>\n </span>\n</template>\n\n<script>\nexport default {\n name: \"ImageMultipleIcon\",\n props: {\n title: {\n type: String,\n },\n fillColor: {\n type: String,\n default: \"currentColor\"\n },\n size: {\n type: Number,\n default: 24\n }\n }\n}\n</script>","import mod from \"-!../vue-loader/lib/index.js??vue-loader-options!./ImageMultiple.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../vue-loader/lib/index.js??vue-loader-options!./ImageMultiple.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./ImageMultiple.vue?vue&type=template&id=2a6b9fca&\"\nimport script from \"./ImageMultiple.vue?vue&type=script&lang=js&\"\nexport * from \"./ImageMultiple.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../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('span',_vm._b({staticClass:\"material-design-icon image-multiple-icon\",attrs:{\"aria-hidden\":!_vm.title,\"aria-label\":_vm.title,\"role\":\"img\"},on:{\"click\":function($event){return _vm.$emit('click', $event)}}},'span',_vm.$attrs,false),[_c('svg',{staticClass:\"material-design-icon__svg\",attrs:{\"fill\":_vm.fillColor,\"width\":_vm.size,\"height\":_vm.size,\"viewBox\":\"0 0 24 24\"}},[_c('path',{attrs:{\"d\":\"M22,16V4A2,2 0 0,0 20,2H8A2,2 0 0,0 6,4V16A2,2 0 0,0 8,18H20A2,2 0 0,0 22,16M11,12L13.03,14.71L16,11L20,16H8M2,6V20A2,2 0 0,0 4,22H18V20H4V6\"}},[(_vm.title)?_c('title',[_vm._v(_vm._s(_vm.title))]):_vm._e()])])])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<template>\n <span :aria-hidden=\"!title\"\n :aria-label=\"title\"\n class=\"material-design-icon send-icon\"\n role=\"img\"\n v-bind=\"$attrs\"\n @click=\"$emit('click', $event)\">\n <svg :fill=\"fillColor\"\n class=\"material-design-icon__svg\"\n :width=\"size\"\n :height=\"size\"\n viewBox=\"0 0 24 24\">\n <path d=\"M2,21L23,12L2,3V10L17,12L2,14V21Z\">\n <title v-if=\"title\">{{ title }}</title>\n </path>\n </svg>\n </span>\n</template>\n\n<script>\nexport default {\n name: \"SendIcon\",\n props: {\n title: {\n type: String,\n },\n fillColor: {\n type: String,\n default: \"currentColor\"\n },\n size: {\n type: Number,\n default: 24\n }\n }\n}\n</script>","import mod from \"-!../vue-loader/lib/index.js??vue-loader-options!./Send.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../vue-loader/lib/index.js??vue-loader-options!./Send.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./Send.vue?vue&type=template&id=2971c53a&\"\nimport script from \"./Send.vue?vue&type=script&lang=js&\"\nexport * from \"./Send.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../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('span',_vm._b({staticClass:\"material-design-icon send-icon\",attrs:{\"aria-hidden\":!_vm.title,\"aria-label\":_vm.title,\"role\":\"img\"},on:{\"click\":function($event){return _vm.$emit('click', $event)}}},'span',_vm.$attrs,false),[_c('svg',{staticClass:\"material-design-icon__svg\",attrs:{\"fill\":_vm.fillColor,\"width\":_vm.size,\"height\":_vm.size,\"viewBox\":\"0 0 24 24\"}},[_c('path',{attrs:{\"d\":\"M2,21L23,12L2,3V10L17,12L2,14V21Z\"}},[(_vm.title)?_c('title',[_vm._v(_vm._s(_vm.title))]):_vm._e()])])])}\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=\"loader\">\n\t\t<slot name=\"icon\">\n\t\t\t<span class=\"icon-loading\" />\n\t\t</slot>\n\t</div>\n</template>\n\n<script>\nexport default {\n\tname: 'Loader',\n}\n</script>\n\n<style lang=\"scss\">\n.loader {\n\tdisplay: grid;\n\theight: 60px;\n}\n</style>\n","import mod from \"-!../../node_modules/babel-loader/lib/index.js!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Loader.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!./Loader.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!./Loader.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!./Loader.vue?vue&type=style&index=0&lang=scss&\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./Loader.vue?vue&type=template&id=7bbb2dd6&\"\nimport script from \"./Loader.vue?vue&type=script&lang=js&\"\nexport * from \"./Loader.vue?vue&type=script&lang=js&\"\nimport style0 from \"./Loader.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:\"loader\"},[_vm._t(\"icon\",function(){return [_c('span',{staticClass:\"icon-loading\"})]})],2)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return (_vm.errorFetchingAlbums)?_c('EmptyContent',[_vm._v(\"\\n\\t\"+_vm._s(_vm.t('photos', 'An error occurred'))+\"\\n\")]):_c('div',{staticClass:\"albums\"},[_c('div',{staticClass:\"albums__header\"},[_c('Button',{attrs:{\"type\":\"primary\",\"aria-label\":_vm.t('photos', 'Create a new album.')},on:{\"click\":function($event){_vm.showAlbumCreationForm = true}},scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [_c('Plus')]},proxy:true}])},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.t('photos', 'New album'))+\"\\n\\t\\t\")]),_vm._v(\" \"),(_vm.loadingAlbums)?_c('Loader'):_vm._e()],1),_vm._v(\" \"),(_vm.noAlbums && !_vm.loadingAlbums)?_c('div',{staticClass:\"albums__empty\"},[_c('EmptyContent',{scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [_c('FolderMultipleImage')]},proxy:true},{key:\"desc\",fn:function(){return [_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_vm.t('photos', \"There is no album yet!\"))+\"\\n\\t\\t\\t\")]},proxy:true}],null,false,3685789295)}),_vm._v(\" \"),_c('Button',{staticClass:\"albums__empty__button\",attrs:{\"type\":\"primary\",\"aria-label\":_vm.t('photos', 'Create a new album')},on:{\"click\":function($event){_vm.showAlbumCreationForm = true}},scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [_c('Plus')]},proxy:true}],null,false,1489515321)},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.t('photos', \"Add\"))+\"\\n\\t\\t\")])],1):(!_vm.noAlbums)?_c('div',{staticClass:\"albums__list\"},_vm._l((_vm.albums),function(album){return _c('AlbumCover',{key:album.basename,staticClass:\"album\",attrs:{\"base-name\":album.basename}})}),1):_vm._e(),_vm._v(\" \"),(_vm.showAlbumCreationForm)?_c('Modal',{attrs:{\"title\":_vm.t('photos', 'New album')},on:{\"close\":function($event){_vm.showAlbumCreationForm = false}}},[_c('AlbumForm',{on:{\"done\":_vm.handleAlbumCreated}})],1):_vm._e()],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<!--\n - @copyright Copyright (c) 2022 Louis Chemineau <louis@chmn.me>\n -\n - @author Louis Chemineau <louis@chmn.me>\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<router-link class=\"album-cover\" :to=\"`/albums/${baseName}`\">\n\t\t<img v-if=\"album.lastPhoto !== 0\" class=\"album-cover__image\" :src=\"coverUrl\">\n\t\t<div v-else class=\"album-cover__image album-cover__image--placeholder\">\n\t\t\t<ImageMultiple :size=\"128\" />\n\t\t</div>\n\t\t<div class=\"album-cover__details\">\n\t\t\t<div class=\"album-cover__details__first-line\">\n\t\t\t\t<h2 class=\"album-cover__details__name\">\n\t\t\t\t\t{{ baseName }}\n\t\t\t\t</h2>\n\t\t\t\t<!-- <div class=\"album-cover__details__state\">\n\t\t\t\t\t<ShareVariant v-if=\"album.isShared\" />\n\t\t\t\t\t<AccountMultiple v-if=\"album.isCollaborative\" />\n\t\t\t\t</div> -->\n\t\t\t</div>\n\t\t\t<div class=\"album-cover__details__second-line\">\n\t\t\t\t{{ album.date }} ⸱ {{ n('photos', '%n item', '%n photos and videos', album.nbItems,) }}\n\t\t\t</div>\n\t\t</div>\n\t</router-link>\n</template>\n\n<script>\n\nimport { mapGetters } from 'vuex'\n// import ShareVariant from 'vue-material-design-icons/ShareVariant'\n// import AccountMultiple from 'vue-material-design-icons/AccountMultiple'\nimport ImageMultiple from 'vue-material-design-icons/ImageMultiple'\n\nimport { generateUrl } from '@nextcloud/router'\n\nexport default {\n\tname: 'AlbumCover',\n\n\tcomponents: {\n\t\t// ShareVariant,\n\t\t// AccountMultiple,\n\t\tImageMultiple,\n\t},\n\n\tprops: {\n\t\tbaseName: {\n\t\t\ttype: String,\n\t\t\trequired: true,\n\t\t},\n\t},\n\n\tcomputed: {\n\t\t...mapGetters([\n\t\t\t'files',\n\t\t\t'albums',\n\t\t]),\n\n\t\t/**\n\t\t * @return {Album}\n\t\t */\n\t\talbum() {\n\t\t\treturn this.albums[this.baseName]\n\t\t},\n\n\t\t/**\n\t\t * @return {string}\n\t\t */\n\t\tcoverUrl() {\n\t\t\treturn generateUrl(`/core/preview?fileId=${this.album.lastPhoto}&x=${512}&y=${512}&forceIcon=0&a=1`)\n\t\t},\n\t},\n}\n</script>\n\n<style lang=\"scss\" scoped>\n.album-cover {\n\tdisplay: flex;\n\tflex-direction: column;\n\tpadding: 16px;\n\tborder-radius: 12px;\n\n\t&:hover, &:focus {\n\t\tbackground: var(--color-background-dark);\n\t}\n\n\t&__image {\n\t\twidth: 350px;\n\t\theight: 350px;\n\t\tobject-fit: none;\n\t\tborder-radius: 12px;\n\n\t\t@media only screen and (max-width: 1200px) {\n\t\t\twidth: 250px;\n\t\t\theight: 250px;\n\t\t}\n\n\t\t&--placeholder {\n\t\t\tbackground: var(--color-primary-light);\n\n\t\t\t::v-deep .material-design-icon {\n\t\t\t\twidth: 100%;\n\t\t\t\theight: 100%;\n\n\t\t\t\t.material-design-icon__svg {\n\t\t\t\t\tfill: var(--color-primary);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t&__details {\n\t\tdisplay: flex;\n\t\tflex-direction: column;\n\t\tmargin-top: 16px;\n\t\twidth: 350px;\n\n\t\t@media only screen and (max-width: 1200px) {\n\t\t\twidth: 250px;\n\t\t}\n\n\t\t&__first-line {\n\t\t\tdisplay: flex;\n\t\t}\n\n\t\t&__second-line {\n\t\t\tdisplay: flex;\n\t\t\tcolor: var(--color-text-lighter);\n\t\t}\n\n\t\t&__name {\n\t\t\tflex-grow: 1;\n\t\t\tmargin: 0;\n\t\t\tfont-weight: normal;\n\t\t\toverflow: hidden;\n\t\t\twhite-space: nowrap;\n\t\t\ttext-overflow: ellipsis;\n\n\t\t}\n\t}\n\n}\n</style>\n","import mod from \"-!../../node_modules/babel-loader/lib/index.js!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AlbumCover.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!./AlbumCover.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!./AlbumCover.vue?vue&type=style&index=0&id=9a9e277a&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!./AlbumCover.vue?vue&type=style&index=0&id=9a9e277a&lang=scss&scoped=true&\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./AlbumCover.vue?vue&type=template&id=9a9e277a&scoped=true&\"\nimport script from \"./AlbumCover.vue?vue&type=script&lang=js&\"\nexport * from \"./AlbumCover.vue?vue&type=script&lang=js&\"\nimport style0 from \"./AlbumCover.vue?vue&type=style&index=0&id=9a9e277a&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 \"9a9e277a\",\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('router-link',{staticClass:\"album-cover\",attrs:{\"to\":(\"/albums/\" + _vm.baseName)}},[(_vm.album.lastPhoto !== 0)?_c('img',{staticClass:\"album-cover__image\",attrs:{\"src\":_vm.coverUrl}}):_c('div',{staticClass:\"album-cover__image album-cover__image--placeholder\"},[_c('ImageMultiple',{attrs:{\"size\":128}})],1),_vm._v(\" \"),_c('div',{staticClass:\"album-cover__details\"},[_c('div',{staticClass:\"album-cover__details__first-line\"},[_c('h2',{staticClass:\"album-cover__details__name\"},[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_vm.baseName)+\"\\n\\t\\t\\t\")])]),_vm._v(\" \"),_c('div',{staticClass:\"album-cover__details__second-line\"},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.album.date)+\" ⸱ \"+_vm._s(_vm.n('photos', '%n item', '%n photos and videos', _vm.album.nbItems))+\"\\n\\t\\t\")])])])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<!--\n - @copyright Copyright (c) 2022 Louis Chemineau <louis@chmn.me>\n -\n - @author Louis Chemineau <louis@chmn.me>\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<template>\n\t<!-- Errors handlers-->\n\t<EmptyContent v-if=\"errorFetchingAlbums\">\n\t\t{{ t('photos', 'An error occurred') }}\n\t</EmptyContent>\n\n\t<!-- Album list -->\n\t<div v-else class=\"albums\">\n\t\t<div class=\"albums__header\">\n\t\t\t<Button type=\"primary\"\n\t\t\t\t:aria-label=\"t('photos', 'Create a new album.')\"\n\t\t\t\t@click=\"showAlbumCreationForm = true\">\n\t\t\t\t<template #icon>\n\t\t\t\t\t<Plus />\n\t\t\t\t</template>\n\t\t\t\t{{ t('photos', 'New album') }}\n\t\t\t</Button>\n\n\t\t\t<Loader v-if=\"loadingAlbums\" />\n\t\t</div>\n\n\t\t<!-- No albums -->\n\t\t<div v-if=\"noAlbums && !loadingAlbums\" class=\"albums__empty\">\n\t\t\t<EmptyContent>\n\t\t\t\t<template #icon>\n\t\t\t\t\t<FolderMultipleImage />\n\t\t\t\t</template>\n\t\t\t\t<template #desc>\n\t\t\t\t\t{{ t('photos', \"There is no album yet!\") }}\n\t\t\t\t</template>\n\t\t\t</EmptyContent>\n\n\t\t\t<Button class=\"albums__empty__button\"\n\t\t\t\ttype=\"primary\"\n\t\t\t\t:aria-label=\"t('photos', 'Create a new album')\"\n\t\t\t\t@click=\"showAlbumCreationForm = true\">\n\t\t\t\t<template #icon>\n\t\t\t\t\t<Plus />\n\t\t\t\t</template>\n\t\t\t\t{{ t('photos', \"Add\") }}\n\t\t\t</Button>\n\t\t</div>\n\n\t\t<div v-else-if=\"!noAlbums\" class=\"albums__list\">\n\t\t\t<AlbumCover v-for=\"album in albums\"\n\t\t\t\t:key=\"album.basename\"\n\t\t\t\tclass=\"album\"\n\t\t\t\t:base-name=\"album.basename\" />\n\t\t</div>\n\n\t\t<Modal v-if=\"showAlbumCreationForm\"\n\t\t\t:title=\"t('photos', 'New album')\"\n\t\t\t@close=\"showAlbumCreationForm = false\">\n\t\t\t<AlbumForm @done=\"handleAlbumCreated\" />\n\t\t</Modal>\n\t</div>\n</template>\n\n<script>\nimport Plus from 'vue-material-design-icons/Plus'\nimport FolderMultipleImage from 'vue-material-design-icons/FolderMultipleImage'\n\nimport { Button, Modal, EmptyContent } from '@nextcloud/vue'\n\nimport FetchAlbumsMixin from '../mixins/FetchAlbumsMixin.js'\nimport AlbumCover from '../components/AlbumCover.vue'\nimport AlbumForm from '../components/AlbumForm.vue'\nimport Loader from '../components/Loader.vue'\n\nexport default {\n\tname: 'Albums',\n\tcomponents: {\n\t\tAlbumCover,\n\t\tEmptyContent,\n\t\tAlbumForm,\n\t\tLoader,\n\t\tModal,\n\t\tButton,\n\t\tPlus,\n\t\tFolderMultipleImage,\n\t},\n\n\tmixins: [\n\t\tFetchAlbumsMixin,\n\t],\n\n\tdata() {\n\t\treturn {\n\t\t\tshowAlbumCreationForm: false,\n\t\t}\n\t},\n\n\tcomputed: {\n\t\t/**\n\t\t * @return {boolean} Whether the list of album is empty or not.\n\t\t */\n\t\tnoAlbums() {\n\t\t\treturn Object.keys(this.albums).length === 0\n\t\t},\n\t},\n\n\tmethods: {\n\t\thandleAlbumCreated({ album }) {\n\t\t\tthis.showAlbumCreationForm = false\n\t\t\tthis.$router.push(`/albums/${album.basename}`)\n\t\t},\n\t},\n}\n</script>\n<style lang=\"scss\" scoped>\n.albums {\n\tdisplay: flex;\n\tflex-direction: column;\n\n\t&__header {\n\t\tdisplay: flex;\n\t\tmin-height: 60px;\n\t\talign-items: center;\n\t\tpadding: 8px 64px 32px 64px;\n\t\tposition: sticky;\n\t\ttop: var(--header-height);\n\t\twidth: 100%;\n\t\tz-index: 3;\n\t\tbackground: var(--color-main-background);\n\n\t\t@media only screen and (max-width: 1200px) {\n\t\t\tpadding: 8px 48px 32px 48px;\n\t\t}\n\n\t\tbutton {\n\t\t\tmargin-right: 32px;\n\t\t}\n\t}\n\n\t&__list {\n\t\tpadding: 0px 48px 32px 48px;\n\t\tflex-grow: 1;\n\t\tdisplay: flex;\n\t\tflex-wrap: wrap;\n\t\tgap: 16px;\n\t\talign-items: flex-start;\n\n\t\t@media only screen and (max-width: 1200px) {\n\t\t\tpadding: 0px 12px 32px 12px;\n\t\t\tjustify-content: center;\n\t\t}\n\n\t}\n\n\t&__empty {\n\t\tdisplay: flex;\n\t\tflex-direction: column;\n\t\talign-items: center;\n\n\t\t&__button {\n\t\t\tmargin-top: 32px;\n\t\t}\n\t}\n}\n\n.empty-content-with-illustration ::v-deep .empty-content__icon {\n\twidth: 200px;\n\theight: 200px;\n\n\tsvg {\n\t\twidth: 200px;\n\t\theight: 200px;\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!./Albums.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!./Albums.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!./Albums.vue?vue&type=style&index=0&id=6146de25&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!./Albums.vue?vue&type=style&index=0&id=6146de25&lang=scss&scoped=true&\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./Albums.vue?vue&type=template&id=6146de25&scoped=true&\"\nimport script from \"./Albums.vue?vue&type=script&lang=js&\"\nexport * from \"./Albums.vue?vue&type=script&lang=js&\"\nimport style0 from \"./Albums.vue?vue&type=style&index=0&id=6146de25&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 \"6146de25\",\n null\n \n)\n\nexport default component.exports"],"names":["request","cancelToken","axios","url","options","Object","assign","token","cancel","___CSS_LOADER_EXPORT___","push","module","id","name","props","title","type","String","fillColor","default","size","Number","_vm","this","_h","$createElement","_c","_self","_b","staticClass","attrs","on","$event","$emit","$attrs","_v","_s","_e","styleTagTransform","setAttributes","insert","domAPI","insertStyleElement","_t","baseName","album","lastPhoto","coverUrl","date","n","nbItems","t","showAlbumCreationForm","scopedSlots","_u","key","fn","proxy","noAlbums","loadingAlbums","_l","basename","handleAlbumCreated"],"sourceRoot":""}