summaryrefslogtreecommitdiffstats
path: root/js/photos-src_mixins_AbortControllerMixin_js-src_views_Faces_vue.js.map
diff options
context:
space:
mode:
authorJohn Molakvoæ <skjnldsv@protonmail.com>2022-09-17 10:49:09 +0200
committerJohn Molakvoæ <skjnldsv@protonmail.com>2022-09-17 14:34:49 +0200
commitaaa815ee2fddc830eb4ef17d1fb72710bf44cf46 (patch)
tree5f627d337574be135ac0bc5f6869d54621af6d33 /js/photos-src_mixins_AbortControllerMixin_js-src_views_Faces_vue.js.map
parent8da4ccebc2cf97a674ec2963f20eaa35309bccb3 (diff)
Use same upload button style as the UploadPicker
Signed-off-by: John Molakvoæ <skjnldsv@protonmail.com>
Diffstat (limited to 'js/photos-src_mixins_AbortControllerMixin_js-src_views_Faces_vue.js.map')
-rw-r--r--js/photos-src_mixins_AbortControllerMixin_js-src_views_Faces_vue.js.map2
1 files changed, 1 insertions, 1 deletions
diff --git a/js/photos-src_mixins_AbortControllerMixin_js-src_views_Faces_vue.js.map b/js/photos-src_mixins_AbortControllerMixin_js-src_views_Faces_vue.js.map
index c8b87404..86e587c0 100644
--- a/js/photos-src_mixins_AbortControllerMixin_js-src_views_Faces_vue.js.map
+++ b/js/photos-src_mixins_AbortControllerMixin_js-src_views_Faces_vue.js.map
@@ -1 +1 @@
-{"version":3,"file":"photos-src_mixins_AbortControllerMixin_js-src_views_Faces_vue.js?v=15779bac8aab235ba549","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;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;;;ACtIA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;AC7FA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;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;;;;;;;;;;;;;;;;;;;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;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AKAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;ACrDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;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/FaceCover.vue?vue&type=script&lang=js&","webpack:///photos/src/views/Faces.vue?vue&type=script&lang=js&","webpack:///photos/src/mixins/AbortControllerMixin.js","webpack:///photos/src/components/FaceCover.vue?vue&type=style&index=0&id=acc68b4c&lang=scss&scoped=true&","webpack:///photos/src/views/Faces.vue?vue&type=style&index=0&id=2a2a1e28&lang=scss&scoped=true&","webpack://photos/./src/components/FaceCover.vue?e980","webpack://photos/./src/views/Faces.vue?f679","webpack:///photos/src/components/FaceCover.vue","webpack:///photos/src/views/Faces.vue","webpack://photos/./src/components/FaceCover.vue?e065","webpack://photos/./src/views/Faces.vue?d1d7","webpack://photos/./src/components/FaceCover.vue?c703","webpack://photos/./src/views/Faces.vue?f0cf","webpack:///photos/src/components/FaceCover.vue?vue&type=template&id=acc68b4c&scoped=true&","webpack:///photos/src/views/Faces.vue?vue&type=template&id=2a2a1e28&scoped=true&","webpack://photos/./src/components/FaceCover.vue?14eb","webpack://photos/./src/views/Faces.vue?c831"],"sourcesContent":["function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } }\n\nfunction _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"next\", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"throw\", err); } _next(undefined); }); }; }\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\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 { mapGetters } from 'vuex';\nimport { generateUrl } from '@nextcloud/router';\nimport FetchFacesMixin from '../mixins/FetchFacesMixin.js';\nimport FaceCoverMixin from '../mixins/FaceCoverMixin.js';\nexport default {\n name: 'FaceCover',\n mixins: [FetchFacesMixin, FaceCoverMixin],\n props: {\n baseName: {\n type: String,\n required: true\n }\n },\n computed: _objectSpread(_objectSpread({}, mapGetters(['files', 'faces', 'facesFiles'])), {}, {\n /**\n * @return {Face}\n */\n face: function face() {\n return this.faces[this.baseName];\n },\n\n /**\n * @return {string}\n */\n coverUrl: function coverUrl() {\n if (!this.cover) {\n return '';\n }\n\n return generateUrl(\"/core/preview?fileId=\".concat(this.cover.fileid, \"&x=\", 512, \"&y=\", 512, \"&forceIcon=0&a=1\"));\n },\n cover: function cover() {\n return this.getFaceCover(this.face.basename);\n },\n coverDimensions: function coverDimensions() {\n if (!this.cover) return {};\n return this.getCoverStyle(this.face.basename);\n }\n }),\n beforeMount: function beforeMount() {\n var _this = this;\n\n return _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee() {\n return regeneratorRuntime.wrap(function _callee$(_context) {\n while (1) {\n switch (_context.prev = _context.next) {\n case 0:\n _context.next = 2;\n return _this.fetchFiles();\n\n case 2:\n case \"end\":\n return _context.stop();\n }\n }\n }, _callee);\n }))();\n },\n methods: {\n fetchFiles: function fetchFiles() {\n var _this2 = this;\n\n return _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee2() {\n return regeneratorRuntime.wrap(function _callee2$(_context2) {\n while (1) {\n switch (_context2.prev = _context2.next) {\n case 0:\n _context2.next = 2;\n return _this2.fetchFaceContent(_this2.face.basename);\n\n case 2:\n case \"end\":\n return _context2.stop();\n }\n }\n }, _callee2);\n }))();\n }\n }\n};","function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\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 AccountBoxMultipleOutline from 'vue-material-design-icons/AccountBoxMultipleOutline';\nimport { NcEmptyContent, NcLoadingIcon } from '@nextcloud/vue';\nimport FetchFacesMixin from '../mixins/FetchFacesMixin.js';\nimport FaceCover from '../components/FaceCover.vue';\nimport { mapGetters } from 'vuex';\nexport default {\n name: 'Faces',\n components: {\n FaceCover: FaceCover,\n NcEmptyContent: NcEmptyContent,\n NcLoadingIcon: NcLoadingIcon,\n AccountBoxMultipleOutline: AccountBoxMultipleOutline\n },\n mixins: [FetchFacesMixin],\n computed: _objectSpread(_objectSpread({}, mapGetters(['facesFiles'])), {}, {\n /**\n * @return {boolean} Whether the list of face is empty or not.\n */\n noFaces: function noFaces() {\n return Object.keys(this.faces).length === 0;\n },\n orderedFaces: function orderedFaces() {\n var _this = this;\n\n return Object.values(this.faces).sort(function (a, b) {\n if (!_this.facesFiles[b.basename] || !_this.facesFiles[a.basename]) {\n return 0;\n }\n\n return _this.facesFiles[b.basename].length - _this.facesFiles[a.basename].length;\n });\n }\n })\n};","/**\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 */\nexport default {\n name: 'AbortControllerMixin',\n data: function data() {\n return {\n abortController: new AbortController()\n };\n },\n beforeDestroy: function beforeDestroy() {\n this.abortController.abort();\n },\n beforeRouteLeave: function beforeRouteLeave(from, to, next) {\n this.abortController.abort();\n next();\n }\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, \".face-cover[data-v-acc68b4c] {\\n display: flex;\\n flex-direction: column;\\n padding: 10px;\\n border-radius: var(--border-radius-large);\\n}\\n.face-cover__crop-container[data-v-acc68b4c] {\\n overflow: hidden;\\n width: 250px;\\n height: 250px;\\n border-radius: 250px;\\n position: relative;\\n background: var(--color-background-darker);\\n --photos-face-width: 250px;\\n}\\n@media only screen and (max-width: 1020px) {\\n.face-cover__crop-container[data-v-acc68b4c] {\\n width: 95px;\\n height: 95px;\\n --photos-face-width: 95px;\\n}\\n}\\n.face-cover[data-v-acc68b4c]:hover, .face-cover[data-v-acc68b4c]:focus {\\n background: var(--color-background-hover);\\n}\\n.face-cover__details[data-v-acc68b4c] {\\n display: flex;\\n flex-direction: column;\\n width: 250px;\\n margin-top: 4px;\\n text-align: center;\\n}\\n@media only screen and (max-width: 1020px) {\\n.face-cover__details[data-v-acc68b4c] {\\n width: 95px;\\n}\\n}\\n.face-cover__details__first-line[data-v-acc68b4c] {\\n display: flex;\\n height: 2em;\\n overflow: hidden;\\n text-overflow: ellipsis;\\n}\\n.face-cover__details__second-line[data-v-acc68b4c] {\\n color: var(--color-text-maxcontrast);\\n}\\n.face-cover__details__name[data-v-acc68b4c] {\\n flex-grow: 1;\\n margin: 0;\\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, \".faces[data-v-2a2a1e28] {\\n display: flex;\\n flex-direction: column;\\n height: calc(100vh - var(--header-height));\\n padding-left: 64px;\\n}\\n@media only screen and (max-width: 1020px) {\\n.faces[data-v-2a2a1e28] {\\n padding: 0;\\n}\\n}\\n.faces__header[data-v-2a2a1e28] {\\n display: flex;\\n min-height: 60px;\\n align-items: center;\\n}\\n.faces__header button[data-v-2a2a1e28] {\\n margin-right: 32px;\\n}\\n.faces__list[data-v-2a2a1e28] {\\n padding-top: 24px;\\n padding-bottom: 32px;\\n flex-grow: 1;\\n display: flex;\\n flex-wrap: wrap;\\n overflow: scroll;\\n gap: 32px;\\n align-content: flex-start;\\n}\\n.faces__empty[data-v-2a2a1e28] {\\n display: flex;\\n flex-direction: column;\\n align-items: center;\\n}\\n.faces__empty__button[data-v-2a2a1e28] {\\n margin-top: 32px;\\n}\\n.empty-content-with-illustration[data-v-2a2a1e28] .empty-content__icon {\\n width: 200px;\\n height: 200px;\\n}\\n.empty-content-with-illustration[data-v-2a2a1e28] .empty-content__icon svg {\\n width: 200px;\\n height: 200px;\\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!./FaceCover.vue?vue&type=style&index=0&id=acc68b4c&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!./FaceCover.vue?vue&type=style&index=0&id=acc68b4c&lang=scss&scoped=true&\";\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!./Faces.vue?vue&type=style&index=0&id=2a2a1e28&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!./Faces.vue?vue&type=style&index=0&id=2a2a1e28&lang=scss&scoped=true&\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./FaceCover.vue?vue&type=template&id=acc68b4c&scoped=true&\"\nimport script from \"./FaceCover.vue?vue&type=script&lang=js&\"\nexport * from \"./FaceCover.vue?vue&type=script&lang=js&\"\nimport style0 from \"./FaceCover.vue?vue&type=style&index=0&id=acc68b4c&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 \"acc68b4c\",\n null\n \n)\n\n/* hot reload */\nif (module.hot) {\n var api = require(\"/home/admin/Docker/apps2/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('acc68b4c')) {\n api.createRecord('acc68b4c', component.options)\n } else {\n api.reload('acc68b4c', component.options)\n }\n module.hot.accept(\"./FaceCover.vue?vue&type=template&id=acc68b4c&scoped=true&\", function () {\n api.rerender('acc68b4c', {\n render: render,\n staticRenderFns: staticRenderFns\n })\n })\n }\n}\ncomponent.options.__file = \"src/components/FaceCover.vue\"\nexport default component.exports","import { render, staticRenderFns } from \"./Faces.vue?vue&type=template&id=2a2a1e28&scoped=true&\"\nimport script from \"./Faces.vue?vue&type=script&lang=js&\"\nexport * from \"./Faces.vue?vue&type=script&lang=js&\"\nimport style0 from \"./Faces.vue?vue&type=style&index=0&id=2a2a1e28&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 \"2a2a1e28\",\n null\n \n)\n\n/* hot reload */\nif (module.hot) {\n var api = require(\"/home/admin/Docker/apps2/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('2a2a1e28')) {\n api.createRecord('2a2a1e28', component.options)\n } else {\n api.reload('2a2a1e28', component.options)\n }\n module.hot.accept(\"./Faces.vue?vue&type=template&id=2a2a1e28&scoped=true&\", function () {\n api.rerender('2a2a1e28', {\n render: render,\n staticRenderFns: staticRenderFns\n })\n })\n }\n}\ncomponent.options.__file = \"src/views/Faces.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!./FaceCover.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!./FaceCover.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!./Faces.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!./Faces.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!./FaceCover.vue?vue&type=style&index=0&id=acc68b4c&lang=scss&scoped=true&\"","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!./Faces.vue?vue&type=style&index=0&id=2a2a1e28&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!./FaceCover.vue?vue&type=template&id=acc68b4c&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!./Faces.vue?vue&type=template&id=2a2a1e28&scoped=true&\"","var render = function () {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n return _c(\n \"router-link\",\n { staticClass: \"face-cover\", attrs: { to: \"/faces/\" + _vm.baseName } },\n [\n _c(\"div\", { staticClass: \"face-cover__crop-container\" }, [\n _c(\"img\", {\n ref: \"image\",\n staticClass: \"face-cover__image\",\n style: _vm.coverDimensions,\n attrs: { src: _vm.coverUrl },\n }),\n ]),\n _vm._v(\" \"),\n _c(\"div\", { staticClass: \"face-cover__details\" }, [\n _c(\"div\", { staticClass: \"face-cover__details__first-line\" }, [\n _c(\n \"h2\",\n {\n class: {\n \"face-cover__details__name\": true,\n \"hidden-visually\": _vm.baseName.match(/^[0-9]+$/),\n },\n },\n [_vm._v(\"\\n\\t\\t\\t\\t\" + _vm._s(_vm.baseName) + \"\\n\\t\\t\\t\")]\n ),\n ]),\n _vm._v(\" \"),\n _vm.facesFiles[_vm.baseName]\n ? _c(\"div\", { staticClass: \"face-cover__details__second-line\" }, [\n _vm._v(\n \"\\n\\t\\t\\t\" +\n _vm._s(\n _vm.n(\n \"photos\",\n \"%n photos\",\n \"%n photos\",\n _vm.facesFiles[_vm.baseName].length\n )\n ) +\n \"\\n\\t\\t\"\n ),\n ])\n : _vm._e(),\n ]),\n ]\n )\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 _vm.errorFetchingFaces\n ? _c(\"NcEmptyContent\", [\n _vm._v(\"\\n\\t\" + _vm._s(_vm.t(\"photos\", \"An error occurred\")) + \"\\n\"),\n ])\n : _c(\n \"div\",\n { staticClass: \"faces\" },\n [\n _vm.loadingFaces ? _c(\"NcLoadingIcon\") : _vm._e(),\n _vm._v(\" \"),\n _vm.noFaces && !_vm.loadingFaces\n ? _c(\n \"div\",\n { staticClass: \"faces__empty\" },\n [\n _c(\n \"NcEmptyContent\",\n {\n staticClass: \"empty-content-with-illustration\",\n scopedSlots: _vm._u(\n [\n {\n key: \"icon\",\n fn: function () {\n return [_c(\"AccountBoxMultipleOutline\")]\n },\n proxy: true,\n },\n {\n key: \"desc\",\n fn: function () {\n return [\n _vm._v(\n \"\\n\\t\\t\\t\\t\" +\n _vm._s(\n _vm.t(\n \"photos\",\n \"This might take some time depending on the size of your photo library.\"\n )\n ) +\n \"\\n\\t\\t\\t\"\n ),\n ]\n },\n proxy: true,\n },\n ],\n null,\n false,\n 3796275108\n ),\n },\n [\n _vm._v(\" \"),\n _vm._v(\n \"\\n\\t\\t\\t\" +\n _vm._s(\n _vm.t(\n \"photos\",\n \"Recognized people will show up here\"\n )\n ) +\n \"\\n\\t\\t\"\n ),\n ]\n ),\n ],\n 1\n )\n : !_vm.noFaces\n ? _c(\n \"div\",\n { staticClass: \"faces__list\" },\n _vm._l(_vm.orderedFaces, function (face) {\n return _c(\"FaceCover\", {\n key: face.basename,\n attrs: { \"base-name\": face.basename },\n })\n }),\n 1\n )\n : _vm._e(),\n ],\n 1\n )\n}\nvar staticRenderFns = []\nrender._withStripped = true\n\nexport { render, staticRenderFns }"],"names":[],"sourceRoot":""} \ No newline at end of file
+{"version":3,"file":"photos-src_mixins_AbortControllerMixin_js-src_views_Faces_vue.js?v=5606ac61448cbb034cd7","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;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;;;ACtIA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;AC7FA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;ACpCA;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;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AKAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;AChDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;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/FaceCover.vue?vue&type=script&lang=js&","webpack:///photos/src/views/Faces.vue?vue&type=script&lang=js&","webpack:///photos/src/mixins/AbortControllerMixin.js","webpack:///photos/src/components/FaceCover.vue?vue&type=style&index=0&id=acc68b4c&lang=scss&scoped=true&","webpack:///photos/src/views/Faces.vue?vue&type=style&index=0&id=2a2a1e28&lang=scss&scoped=true&","webpack://photos/./src/components/FaceCover.vue?e980","webpack://photos/./src/views/Faces.vue?f679","webpack:///photos/src/components/FaceCover.vue","webpack:///photos/src/views/Faces.vue","webpack://photos/./src/components/FaceCover.vue?e065","webpack://photos/./src/views/Faces.vue?d1d7","webpack://photos/./src/components/FaceCover.vue?c703","webpack://photos/./src/views/Faces.vue?f0cf","webpack:///photos/src/components/FaceCover.vue?vue&type=template&id=acc68b4c&scoped=true&","webpack:///photos/src/views/Faces.vue?vue&type=template&id=2a2a1e28&scoped=true&","webpack://photos/./src/components/FaceCover.vue?14eb","webpack://photos/./src/views/Faces.vue?c831"],"sourcesContent":["function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } }\n\nfunction _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"next\", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"throw\", err); } _next(undefined); }); }; }\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\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 { mapGetters } from 'vuex';\nimport { generateUrl } from '@nextcloud/router';\nimport FetchFacesMixin from '../mixins/FetchFacesMixin.js';\nimport FaceCoverMixin from '../mixins/FaceCoverMixin.js';\nexport default {\n name: 'FaceCover',\n mixins: [FetchFacesMixin, FaceCoverMixin],\n props: {\n baseName: {\n type: String,\n required: true\n }\n },\n computed: _objectSpread(_objectSpread({}, mapGetters(['files', 'faces', 'facesFiles'])), {}, {\n /**\n * @return {Face}\n */\n face: function face() {\n return this.faces[this.baseName];\n },\n\n /**\n * @return {string}\n */\n coverUrl: function coverUrl() {\n if (!this.cover) {\n return '';\n }\n\n return generateUrl(\"/apps/photos/api/v1/preview/\".concat(this.cover.fileid, \"?x=\", 512, \"&y=\", 512));\n },\n cover: function cover() {\n return this.getFaceCover(this.face.basename);\n },\n coverDimensions: function coverDimensions() {\n if (!this.cover) return {};\n return this.getCoverStyle(this.face.basename);\n }\n }),\n beforeMount: function beforeMount() {\n var _this = this;\n\n return _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee() {\n return regeneratorRuntime.wrap(function _callee$(_context) {\n while (1) {\n switch (_context.prev = _context.next) {\n case 0:\n _context.next = 2;\n return _this.fetchFiles();\n\n case 2:\n case \"end\":\n return _context.stop();\n }\n }\n }, _callee);\n }))();\n },\n methods: {\n fetchFiles: function fetchFiles() {\n var _this2 = this;\n\n return _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee2() {\n return regeneratorRuntime.wrap(function _callee2$(_context2) {\n while (1) {\n switch (_context2.prev = _context2.next) {\n case 0:\n _context2.next = 2;\n return _this2.fetchFaceContent(_this2.face.basename);\n\n case 2:\n case \"end\":\n return _context2.stop();\n }\n }\n }, _callee2);\n }))();\n }\n }\n};","function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\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 AccountBoxMultipleOutline from 'vue-material-design-icons/AccountBoxMultipleOutline';\nimport { NcEmptyContent, NcLoadingIcon } from '@nextcloud/vue';\nimport FetchFacesMixin from '../mixins/FetchFacesMixin.js';\nimport FaceCover from '../components/FaceCover.vue';\nimport { mapGetters } from 'vuex';\nexport default {\n name: 'Faces',\n components: {\n FaceCover: FaceCover,\n NcEmptyContent: NcEmptyContent,\n NcLoadingIcon: NcLoadingIcon,\n AccountBoxMultipleOutline: AccountBoxMultipleOutline\n },\n mixins: [FetchFacesMixin],\n computed: _objectSpread(_objectSpread({}, mapGetters(['facesFiles'])), {}, {\n /**\n * @return {boolean} Whether the list of face is empty or not.\n */\n noFaces: function noFaces() {\n return Object.keys(this.faces).length === 0;\n },\n orderedFaces: function orderedFaces() {\n var _this = this;\n\n return Object.values(this.faces).sort(function (a, b) {\n if (!_this.facesFiles[b.basename] || !_this.facesFiles[a.basename]) {\n return 0;\n }\n\n return _this.facesFiles[b.basename].length - _this.facesFiles[a.basename].length;\n });\n }\n })\n};","/**\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 */\nexport default {\n name: 'AbortControllerMixin',\n data: function data() {\n return {\n abortController: new AbortController()\n };\n },\n beforeDestroy: function beforeDestroy() {\n this.abortController.abort();\n },\n beforeRouteLeave: function beforeRouteLeave(from, to, next) {\n this.abortController.abort();\n this.abortController = new AbortController();\n next();\n }\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, \".face-cover[data-v-acc68b4c] {\\n display: flex;\\n flex-direction: column;\\n padding: 10px;\\n border-radius: var(--border-radius-large);\\n}\\n.face-cover__crop-container[data-v-acc68b4c] {\\n overflow: hidden;\\n width: 250px;\\n height: 250px;\\n border-radius: 250px;\\n position: relative;\\n background: var(--color-background-darker);\\n --photos-face-width: 250px;\\n}\\n@media only screen and (max-width: 1020px) {\\n.face-cover__crop-container[data-v-acc68b4c] {\\n width: 95px;\\n height: 95px;\\n --photos-face-width: 95px;\\n}\\n}\\n.face-cover[data-v-acc68b4c]:hover, .face-cover[data-v-acc68b4c]:focus {\\n background: var(--color-background-hover);\\n}\\n.face-cover__details[data-v-acc68b4c] {\\n display: flex;\\n flex-direction: column;\\n width: 250px;\\n margin-top: 4px;\\n text-align: center;\\n}\\n@media only screen and (max-width: 1020px) {\\n.face-cover__details[data-v-acc68b4c] {\\n width: 95px;\\n}\\n}\\n.face-cover__details__first-line[data-v-acc68b4c] {\\n display: flex;\\n height: 2em;\\n overflow: hidden;\\n text-overflow: ellipsis;\\n}\\n.face-cover__details__second-line[data-v-acc68b4c] {\\n margin-top: 6px;\\n color: var(--color-text-maxcontrast);\\n}\\n.face-cover__details__name[dat