photos/js/photos-node_modules_blurhas...

1 line
83 KiB
XML

{"version":3,"file":"photos-node_modules_blurhash_dist_esm_index_js-node_modules_vue-material-design-icons_PackageVariant-6bf9ec.js?v=83df6777279ced2a9bc3","mappings":"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","sources":["webpack:///photos/src/mixins/FetchFilesMixin.js","webpack:///photos/src/services/PhotoSearch.js","webpack:///photos/node_modules/blurhash/dist/esm/index.js","webpack:///photos/src/components/Faces/FaceMergeForm.vue?vue&type=style&index=0&id=33326436&prod&scoped=true&lang=scss","webpack:///photos/src/views/UnassignedFaces.vue?vue&type=style&index=0&id=22feae0f&prod&lang=scss&scoped=true","webpack:///photos/node_modules/vue-material-design-icons/AccountSwitch.vue","webpack:///photos/node_modules/vue-material-design-icons/AccountSwitch.vue?vue&type=script&lang=js","webpack://photos/./node_modules/vue-material-design-icons/AccountSwitch.vue?3918","webpack:///photos/node_modules/vue-material-design-icons/AccountSwitch.vue?vue&type=template&id=7ce2a630","webpack:///photos/node_modules/vue-material-design-icons/AlertCircle.vue","webpack:///photos/node_modules/vue-material-design-icons/AlertCircle.vue?vue&type=script&lang=js","webpack://photos/./node_modules/vue-material-design-icons/AlertCircle.vue?489a","webpack:///photos/node_modules/vue-material-design-icons/AlertCircle.vue?vue&type=template&id=2a2453f8","webpack:///photos/node_modules/vue-material-design-icons/ArrowLeft.vue","webpack:///photos/node_modules/vue-material-design-icons/ArrowLeft.vue?vue&type=script&lang=js","webpack://photos/./node_modules/vue-material-design-icons/ArrowLeft.vue?f857","webpack:///photos/node_modules/vue-material-design-icons/ArrowLeft.vue?vue&type=template&id=187c55d7","webpack:///photos/node_modules/vue-material-design-icons/Download.vue","webpack:///photos/node_modules/vue-material-design-icons/Download.vue?vue&type=script&lang=js","webpack://photos/./node_modules/vue-material-design-icons/Download.vue?b226","webpack:///photos/node_modules/vue-material-design-icons/Download.vue?vue&type=template&id=67aea606","webpack:///photos/node_modules/vue-material-design-icons/PackageVariant.vue","webpack:///photos/node_modules/vue-material-design-icons/PackageVariant.vue?vue&type=script&lang=js","webpack://photos/./node_modules/vue-material-design-icons/PackageVariant.vue?692c","webpack:///photos/node_modules/vue-material-design-icons/PackageVariant.vue?vue&type=template&id=9a5ab29c","webpack://photos/./node_modules/vue-material-design-icons/PlayCircle.vue?0c26","webpack:///photos/node_modules/vue-material-design-icons/PlayCircle.vue","webpack:///photos/node_modules/vue-material-design-icons/Star.vue","webpack:///photos/node_modules/vue-material-design-icons/Star.vue?vue&type=script&lang=js","webpack://photos/./node_modules/vue-material-design-icons/Star.vue?35ed","webpack:///photos/node_modules/vue-material-design-icons/Star.vue?vue&type=template&id=22339b94","webpack://photos/./node_modules/vue-material-design-icons/Video.vue?28ad","webpack:///photos/node_modules/vue-material-design-icons/Video.vue","webpack://photos/./src/components/Faces/FaceMergeForm.vue?d2e1","webpack:///photos/src/components/Faces/FaceMergeForm.vue","webpack:///photos/src/components/Faces/FaceMergeForm.vue?vue&type=script&lang=js","webpack://photos/./src/components/Faces/FaceMergeForm.vue?241f","webpack://photos/./src/components/Faces/FaceMergeForm.vue?2513","webpack://photos/./src/views/UnassignedFaces.vue?51bd","webpack:///photos/src/views/UnassignedFaces.vue","webpack:///photos/src/views/UnassignedFaces.vue?vue&type=script&lang=js","webpack://photos/./src/views/UnassignedFaces.vue?0384","webpack://photos/./src/views/UnassignedFaces.vue?2685","webpack:///photos/node_modules/vue-material-design-icons/PlayCircle.vue?vue&type=script&lang=js","webpack:///photos/node_modules/vue-material-design-icons/Video.vue?vue&type=script&lang=js","webpack:///photos/node_modules/vue-material-design-icons/PlayCircle.vue?vue&type=template&id=34d1e782","webpack:///photos/node_modules/vue-material-design-icons/Video.vue?vue&type=template&id=12752490"],"sourcesContent":["/**\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\nimport { davGetClient, davRootPath } from '@nextcloud/files'\nimport { joinPaths } from '@nextcloud/paths'\nimport logger from '../services/logger.js'\nimport getPhotos from '../services/PhotoSearch.js'\nimport SemaphoreWithPriority from '../utils/semaphoreWithPriority.js'\nimport AbortControllerMixin from './AbortControllerMixin.js'\nimport store from '../store/index.js'\n\nexport default {\n\tname: 'FetchFilesMixin',\n\n\tmixins: [\n\t\tAbortControllerMixin,\n\t],\n\n\tdata() {\n\t\treturn {\n\t\t\terrorFetchingFiles: null,\n\t\t\tloadingFiles: false,\n\t\t\tdoneFetchingFiles: false,\n\t\t\tfetchSemaphore: new SemaphoreWithPriority(1),\n\t\t\tfetchedFileIds: [],\n\t\t}\n\t},\n\n\twatch: {\n\t\t'$route.path'() {\n\t\t\tthis.resetFetchFilesState()\n\t\t},\n\t},\n\n\tmethods: {\n\t\t/**\n\t\t * @param {object} options - Options to pass to getPhotos.\n\t\t * @param {string[]} [blacklist=[]] - Array of ids to filter out.\n\t\t * @param {boolean} [force=false] - Force fetching even if doneFetchingFiles is true\n\t\t * @return {Promise<string[]>} - The next batch of data depending on global offset.\n\t\t */\n\t\tasync fetchFiles(options = {}, blacklist = [], force = false) {\n\t\t\tif ((this.doneFetchingFiles && !force) || this.loadingFiles) {\n\t\t\t\treturn []\n\t\t\t}\n\n\t\t\tconst fetchSemaphoreSymbol = await this.fetchSemaphore.acquire()\n\n\t\t\ttry {\n\t\t\t\tthis.errorFetchingFiles = null\n\t\t\t\tthis.loadingFiles = true\n\n\t\t\t\tconst numberOfImagesPerBatch = 200\n\n\t\t\t\t// Load next batch of images\n\t\t\t\tconst fetchedFiles = await getPhotos({\n\t\t\t\t\tfirstResult: this.fetchedFileIds.length,\n\t\t\t\t\tnbResults: numberOfImagesPerBatch,\n\t\t\t\t\t...options,\n\t\t\t\t\tsignal: this.abortController.signal,\n\t\t\t\t})\n\n\t\t\t\t// If we get less files than requested that means we got to the end\n\t\t\t\tif (fetchedFiles.length !== numberOfImagesPerBatch) {\n\t\t\t\t\tthis.doneFetchingFiles = true\n\t\t\t\t}\n\n\t\t\t\tconst fileIds = fetchedFiles\n\t\t\t\t\t.map(file => file.fileid)\n\t\t\t\t\t.filter(fileId => !this.fetchedFileIds.includes(fileId.toString())) // Filter to prevent duplicate fileIds.\n\n\t\t\t\tthis.fetchedFileIds.push(\n\t\t\t\t\t...fileIds\n\t\t\t\t\t\t.map((fileId) => fileId.toString())\n\t\t\t\t\t\t.filter((fileId) => !blacklist.includes(fileId))\n\t\t\t\t)\n\n\t\t\t\tthis.$store.dispatch('appendFiles', fetchedFiles)\n\n\t\t\t\tlogger.debug(`[FetchFilesMixin] Fetched ${fileIds.length} new files: `, fileIds)\n\n\t\t\t\treturn fileIds\n\t\t\t} catch (error) {\n\t\t\t\tif (error.response?.status === 404) {\n\t\t\t\t\tconst sources = store.state.userConfig.photosSourceFolders\n\t\t\t\t\tfor (const source of sources) {\n\t\t\t\t\t\tif (error.response?.data?.match(`File with name /${source} could not be located`) === null) {\n\t\t\t\t\t\t\tcontinue\n\t\t\t\t\t\t}\n\t\t\t\t\t\tlogger.debug(`The ${source} folder does not exist, creating it.`)\n\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\tawait davGetClient().createDirectory(joinPaths(davRootPath, source))\n\t\t\t\t\t\t\tthis.resetFetchFilesState()\n\t\t\t\t\t\t\treturn []\n\t\t\t\t\t\t} catch (error) {\n\t\t\t\t\t\t\tthis.errorFetchingFiles = 404\n\t\t\t\t\t\t\tlogger.error('Fail to create source directory', { error })\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t} else if (error.code === 'ERR_CANCELED') {\n\t\t\t\t\treturn []\n\t\t\t\t} else {\n\t\t\t\t\tthis.errorFetchingFiles = error\n\t\t\t\t}\n\n\t\t\t\t// cancelled request, moving on...\n\t\t\t\tlogger.error('Error fetching files', { error })\n\t\t\t} finally {\n\t\t\t\tthis.loadingFiles = false\n\t\t\t\tthis.fetchSemaphore.release(fetchSemaphoreSymbol)\n\t\t\t}\n\n\t\t\treturn []\n\t\t},\n\n\t\tresetFetchFilesState() {\n\t\t\tthis.doneFetchingFiles = false\n\t\t\tthis.errorFetchingFiles = null\n\t\t\tthis.loadingFiles = false\n\t\t\tthis.fetchedFileIds = []\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\nimport { genFileInfo } from '../utils/fileUtils.js'\nimport { allMimes } from './AllowedMimes.js'\nimport client from './DavClient.js'\nimport { props } from './DavRequest.js'\nimport moment from '@nextcloud/moment'\nimport store from '../store/index.js'\nimport { davRootPath } from '@nextcloud/files'\nimport { joinPaths } from '@nextcloud/paths'\n\n/**\n * List files from a folder and filter out unwanted mimes\n *\n * @param {object} [options] used for the cancellable requests\n * @param {number} [options.firstResult=0] Index of the first result that we want (starts at 0)\n * @param {number} [options.nbResults=200] The number of file to fetch\n * @param {string[]} [options.mimesType=allMimes] Mime type of the files\n * @param {boolean} [options.full=false] get full data of the files\n * @param {boolean} [options.onThisDay=false] get only items from this day of year\n * @param {boolean} [options.onlyFavorites=false] get only favorite items\n * @return {Promise<object[]>} the file list\n */\nexport default async function(options = {}) {\n\t// default function options\n\toptions = {\n\t\tfirstResult: 0,\n\t\tnbResults: 200,\n\t\tmimesType: allMimes,\n\t\tonThisDay: false,\n\t\tonlyFavorites: false,\n\t\t...options,\n\t}\n\n\t// generating the search or condition\n\t// based on the allowed mimetypes\n\tconst orMime = options.mimesType.reduce((str, mime) => `${str}\n\t\t<d:eq>\n\t\t\t<d:prop>\n\t\t\t\t<d:getcontenttype/>\n\t\t\t</d:prop>\n\t\t\t<d:literal>${mime}</d:literal>\n\t\t</d:eq>\n\t`, '')\n\n\tconst eqFavorites = options.onlyFavorites\n\t\t? `<d:eq>\n\t\t\t\t<d:prop>\n\t\t\t\t\t<oc:favorite/>\n\t\t\t\t</d:prop>\n\t\t\t\t<d:literal>1</d:literal>\n\t\t\t</d:eq>`\n\t\t: ''\n\n\tconst onThisDay = options.onThisDay\n\t\t? `<d:or>${Array(20).fill(1)\n\t\t\t.map((_, years) => {\n\t\t\t\tconst start = moment(Date.now()).startOf('day').subtract(3, 'd').subtract(years + 1, 'y')\n\t\t\t\tconst end = moment(Date.now()).endOf('day').add(3, 'd').subtract(years + 1, 'y')\n\t\t\t\treturn `<d:and>\n\t\t\t\t<d:gt>\n\t\t\t\t\t<d:prop>\n\t\t\t\t\t\t<d:getlastmodified />\n\t\t\t\t\t</d:prop>\n\t\t\t\t\t<d:literal>${start.format(moment.defaultFormatUtc)}</d:literal>\n\t\t\t\t</d:gt>\n\t\t\t\t<d:lt>\n\t\t\t\t\t<d:prop>\n\t\t\t\t\t\t<d:getlastmodified />\n\t\t\t\t\t</d:prop>\n\t\t\t\t\t<d:literal>${end.format(moment.defaultFormatUtc)}</d:literal>\n\t\t\t\t</d:lt>\n\t\t\t</d:and>`\n\t\t\t}).join('\\n')}</d:or>`\n\t\t: ''\n\n\tconst sourceFolders = store.state.userConfig.photosSourceFolders\n\t\t.map(folder => `\n\t\t\t<d:scope>\n\t\t\t\t<d:href>${joinPaths(davRootPath, folder)}</d:href>\n\t\t\t\t<d:depth>infinity</d:depth>\n\t\t\t</d:scope>`\n\t\t)\n\t\t.join('\\n')\n\n\toptions = Object.assign({\n\t\tmethod: 'SEARCH',\n\t\theaders: {\n\t\t\t'content-Type': 'text/xml',\n\t\t},\n\t\tdata: `<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n\t\t\t<d:searchrequest xmlns:d=\"DAV:\"\n\t\t\t\txmlns:oc=\"http://owncloud.org/ns\"\n\t\t\t\txmlns:nc=\"http://nextcloud.org/ns\"\n\t\t\t\txmlns:ns=\"https://github.com/icewind1991/SearchDAV/ns\"\n\t\t\t\txmlns:ocs=\"http://open-collaboration-services.org/ns\">\n\t\t\t\t<d:basicsearch>\n\t\t\t\t\t<d:select>\n\t\t\t\t\t\t<d:prop>\n\t\t\t\t\t\t\t${props}\n\t\t\t\t\t\t</d:prop>\n\t\t\t\t\t</d:select>\n\t\t\t\t\t<d:from>\n\t\t\t\t\t\t${sourceFolders}\n\t\t\t\t\t</d:from>\n\t\t\t\t\t<d:where>\n\t\t\t\t\t\t<d:and>\n\t\t\t\t\t\t\t<d:or>\n\t\t\t\t\t\t\t\t${orMime}\n\t\t\t\t\t\t\t</d:or>\n\t\t\t\t\t\t\t${eqFavorites}\n\t\t\t\t\t\t\t${onThisDay}\n\t\t\t\t\t\t</d:and>\n\t\t\t\t\t</d:where>\n\t\t\t\t\t<d:orderby>\n\t\t\t\t\t\t<d:order>\n\t\t\t\t\t\t\t<d:prop><nc:metadata-photos-original_date_time/></d:prop>\n\t\t\t\t\t\t\t<d:descending/>\n\t\t\t\t\t\t</d:order>\n\t\t\t\t\t\t<d:order>\n\t\t\t\t\t\t\t<d:prop><d:getlastmodified/></d:prop>\n\t\t\t\t\t\t\t<d:descending/>\n\t\t\t\t\t\t</d:order>\n\t\t\t\t\t</d:orderby>\n\t\t\t\t\t<d:limit>\n\t\t\t\t\t\t<d:nresults>${options.nbResults}</d:nresults>\n\t\t\t\t\t\t<ns:firstresult>${options.firstResult}</ns:firstresult>\n\t\t\t\t\t</d:limit>\n\t\t\t\t</d:basicsearch>\n\t\t\t</d:searchrequest>`,\n\t\tdeep: true,\n\t\tdetails: true,\n\t}, options)\n\n\tconst response = await client.getDirectoryContents('', options)\n\n\treturn response.data.map(data => genFileInfo(data))\n}\n","var q=[\"0\",\"1\",\"2\",\"3\",\"4\",\"5\",\"6\",\"7\",\"8\",\"9\",\"A\",\"B\",\"C\",\"D\",\"E\",\"F\",\"G\",\"H\",\"I\",\"J\",\"K\",\"L\",\"M\",\"N\",\"O\",\"P\",\"Q\",\"R\",\"S\",\"T\",\"U\",\"V\",\"W\",\"X\",\"Y\",\"Z\",\"a\",\"b\",\"c\",\"d\",\"e\",\"f\",\"g\",\"h\",\"i\",\"j\",\"k\",\"l\",\"m\",\"n\",\"o\",\"p\",\"q\",\"r\",\"s\",\"t\",\"u\",\"v\",\"w\",\"x\",\"y\",\"z\",\"#\",\"$\",\"%\",\"*\",\"+\",\",\",\"-\",\".\",\":\",\";\",\"=\",\"?\",\"@\",\"[\",\"]\",\"^\",\"_\",\"{\",\"|\",\"}\",\"~\"],x=t=>{let e=0;for(let r=0;r<t.length;r++){let n=t[r],l=q.indexOf(n);e=e*83+l}return e},p=(t,e)=>{var r=\"\";for(let n=1;n<=e;n++){let l=Math.floor(t)/Math.pow(83,e-n)%83;r+=q[Math.floor(l)]}return r};var f=t=>{let e=t/255;return e<=.04045?e/12.92:Math.pow((e+.055)/1.055,2.4)},h=t=>{let e=Math.max(0,Math.min(1,t));return e<=.0031308?Math.trunc(e*12.92*255+.5):Math.trunc((1.055*Math.pow(e,.4166666666666667)-.055)*255+.5)},F=t=>t<0?-1:1,M=(t,e)=>F(t)*Math.pow(Math.abs(t),e);var d=class extends Error{constructor(e){super(e),this.name=\"ValidationError\",this.message=e}};var C=t=>{if(!t||t.length<6)throw new d(\"The blurhash string must be at least 6 characters\");let e=x(t[0]),r=Math.floor(e/9)+1,n=e%9+1;if(t.length!==4+2*n*r)throw new d(`blurhash length mismatch: length is ${t.length} but it should be ${4+2*n*r}`)},N=t=>{try{C(t)}catch(e){return{result:!1,errorReason:e.message}}return{result:!0}},z=t=>{let e=t>>16,r=t>>8&255,n=t&255;return[f(e),f(r),f(n)]},L=(t,e)=>{let r=Math.floor(t/361),n=Math.floor(t/19)%19,l=t%19;return[M((r-9)/9,2)*e,M((n-9)/9,2)*e,M((l-9)/9,2)*e]},U=(t,e,r,n)=>{C(t),n=n|1;let l=x(t[0]),m=Math.floor(l/9)+1,b=l%9+1,i=(x(t[1])+1)/166,u=new Array(b*m);for(let o=0;o<u.length;o++)if(o===0){let a=x(t.substring(2,6));u[o]=z(a)}else{let a=x(t.substring(4+o*2,6+o*2));u[o]=L(a,i*n)}let c=e*4,s=new Uint8ClampedArray(c*r);for(let o=0;o<r;o++)for(let a=0;a<e;a++){let y=0,B=0,R=0;for(let w=0;w<m;w++)for(let P=0;P<b;P++){let G=Math.cos(Math.PI*a*P/e)*Math.cos(Math.PI*o*w/r),T=u[P+w*b];y+=T[0]*G,B+=T[1]*G,R+=T[2]*G}let V=h(y),I=h(B),E=h(R);s[4*a+0+o*c]=V,s[4*a+1+o*c]=I,s[4*a+2+o*c]=E,s[4*a+3+o*c]=255}return s},j=U;var A=4,D=(t,e,r,n)=>{let l=0,m=0,b=0,g=e*A;for(let u=0;u<e;u++){let c=A*u;for(let s=0;s<r;s++){let o=c+s*g,a=n(u,s);l+=a*f(t[o]),m+=a*f(t[o+1]),b+=a*f(t[o+2])}}let i=1/(e*r);return[l*i,m*i,b*i]},$=t=>{let e=h(t[0]),r=h(t[1]),n=h(t[2]);return(e<<16)+(r<<8)+n},H=(t,e)=>{let r=Math.floor(Math.max(0,Math.min(18,Math.floor(M(t[0]/e,.5)*9+9.5)))),n=Math.floor(Math.max(0,Math.min(18,Math.floor(M(t[1]/e,.5)*9+9.5)))),l=Math.floor(Math.max(0,Math.min(18,Math.floor(M(t[2]/e,.5)*9+9.5))));return r*19*19+n*19+l},O=(t,e,r,n,l)=>{if(n<1||n>9||l<1||l>9)throw new d(\"BlurHash must have between 1 and 9 components\");if(e*r*4!==t.length)throw new d(\"Width and height must match the pixels array\");let m=[];for(let s=0;s<l;s++)for(let o=0;o<n;o++){let a=o==0&&s==0?1:2,y=D(t,e,r,(B,R)=>a*Math.cos(Math.PI*o*B/e)*Math.cos(Math.PI*s*R/r));m.push(y)}let b=m[0],g=m.slice(1),i=\"\",u=n-1+(l-1)*9;i+=p(u,1);let c;if(g.length>0){let s=Math.max(...g.map(a=>Math.max(...a))),o=Math.floor(Math.max(0,Math.min(82,Math.floor(s*166-.5))));c=(o+1)/166,i+=p(o,1)}else c=1,i+=p(0,1);return i+=p($(b),4),g.forEach(s=>{i+=p(H(s,c),2)}),i},S=O;export{d as ValidationError,j as decode,S as encode,N as isBlurhashValid};\n//# sourceMappingURL=index.js.map","// 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, \".face-list[data-v-33326436]{display:flex;flex-direction:row;height:350px;flex-wrap:wrap;padding:12px}.loader[data-v-33326436]{margin:25% auto}\", \"\",{\"version\":3,\"sources\":[\"webpack://./src/components/Faces/FaceMergeForm.vue\"],\"names\":[],\"mappings\":\"AAEA,4BACC,YAAA,CACA,kBAAA,CACA,YAAA,CACA,cAAA,CACA,YAAA,CAGD,yBACC,eAAA\",\"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.face-list {\\n\\tdisplay: flex;\\n\\tflex-direction: row;\\n\\theight: 350px;\\n\\tflex-wrap: wrap;\\n\\tpadding: 12px;\\n}\\n\\n.loader {\\n\\tmargin: 25% auto;\\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, \".face[data-v-22feae0f]{display:flex;flex-direction:column}.face__empty[data-v-22feae0f]{display:flex;flex-direction:column;align-items:center}.face__empty__button[data-v-22feae0f]{margin-top:32px}.face__header[data-v-22feae0f]{display:flex;min-height:60px;align-items:center;justify-content:space-between;position:-webkit-sticky;position:sticky;z-index:3;background:var(--color-main-background);padding:0 64px}@media only screen and (max-width: 1020px){.face__header[data-v-22feae0f]{padding:0;padding-left:64px}}.face__header__left[data-v-22feae0f]{height:100%;display:flex;align-items:center}.face__header__title[data-v-22feae0f]{margin-left:10px}.face__header__title h2[data-v-22feae0f]{margin-bottom:0}.face__header__loader[data-v-22feae0f]{margin-left:32px}.face__header__actions[data-v-22feae0f]{display:flex;align-items:center}.face__header__actions button[data-v-22feae0f]{margin-left:16px}.face__photos[data-v-22feae0f]{margin-top:16px;height:100%;min-height:0;padding:0 64px}@media only screen and (max-width: 1020px){.face__photos[data-v-22feae0f]{padding:0}}.empty-content-with-illustration[data-v-22feae0f] .empty-content__icon{width:200px;height:200px}.empty-content-with-illustration[data-v-22feae0f] .empty-content__icon svg{width:200px;height:200px}.rename-form[data-v-22feae0f]{display:flex;flex-direction:row;align-items:center;height:70px;padding:16px}.rename-form input[data-v-22feae0f]{width:100%}\", \"\",{\"version\":3,\"sources\":[\"webpack://./src/mixins/FaceContent.scss\"],\"names\":[],\"mappings\":\"AAqBA,uBACC,YAAA,CACA,qBAAA,CAEA,8BACC,YAAA,CACA,qBAAA,CACA,kBAAA,CAEA,sCACC,eAAA,CAKF,+BACC,YAAA,CACA,eAAA,CACA,kBAAA,CACA,6BAAA,CACA,uBAAA,CAAA,eAAA,CACA,SAAA,CACA,uCAAA,CACA,cAAA,CAEA,2CAVD,+BAWE,SAAA,CACA,iBAAA,CAAA,CAGD,qCACC,WAAA,CACA,YAAA,CACA,kBAAA,CAGD,sCACC,gBAAA,CACA,yCACC,eAAA,CAIF,uCACC,gBAAA,CAGD,wCACC,YAAA,CACA,kBAAA,CAEA,+CACC,gBAAA,CAKH,+BACC,eAAA,CACA,WAAA,CACA,YAAA,CACA,cAAA,CAEA,2CAND,+BAOE,SAAA,CAAA,CAKH,uEACC,WAAA,CACA,YAAA,CAEA,2EACC,WAAA,CACA,YAAA,CAIF,8BACC,YAAA,CACA,kBAAA,CACA,kBAAA,CACA,WAAA,CACA,YAAA,CAEA,oCACC,UAAA\",\"sourcesContent\":[\"/**\\n * @copyright Copyright (c) 2023 Marcel Klehr <mklehr@gmx.net>\\n *\\n * @author Marcel Klehr <mklehr@gmx.net>\\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.face {\\n\\tdisplay: flex;\\n\\tflex-direction: column;\\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\\n\\t}\\n\\n\\t&__header {\\n\\t\\tdisplay: flex;\\n\\t\\tmin-height: 60px;\\n\\t\\talign-items: center;\\n\\t\\tjustify-content: space-between;\\n\\t\\tposition: sticky;\\n\\t\\tz-index: 3;\\n\\t\\tbackground: var(--color-main-background);\\n\\t\\tpadding: 0 64px;\\n\\n\\t\\t@media only screen and (max-width: 1020px) {\\n\\t\\t\\tpadding: 0;\\n\\t\\t\\tpadding-left: 64px;\\n\\t\\t}\\n\\n\\t\\t&__left {\\n\\t\\t\\theight: 100%;\\n\\t\\t\\tdisplay: flex;\\n\\t\\t\\talign-items: center;\\n\\t\\t}\\n\\n\\t\\t&__title {\\n\\t\\t\\tmargin-left: 10px;\\n\\t\\t\\th2 {\\n\\t\\t\\t\\tmargin-bottom: 0;\\n\\t\\t\\t}\\n\\t\\t}\\n\\n\\t\\t&__loader {\\n\\t\\t\\tmargin-left: 32px;\\n\\t\\t}\\n\\n\\t\\t&__actions {\\n\\t\\t\\tdisplay: flex;\\n\\t\\t\\talign-items: center;\\n\\n\\t\\t\\tbutton {\\n\\t\\t\\t\\tmargin-left: 16px;\\n\\t\\t\\t}\\n\\t\\t}\\n\\t}\\n\\n\\t&__photos {\\n\\t\\tmargin-top: 16px;\\n\\t\\theight: 100%;\\n\\t\\tmin-height: 0; // Prevent it from overflowing in a flex context.\\n\\t\\tpadding: 0 64px;\\n\\n\\t\\t@media only screen and (max-width: 1020px) {\\n\\t\\t\\tpadding: 0;\\n\\t\\t}\\n\\t}\\n}\\n\\n.empty-content-with-illustration :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\\n.rename-form {\\n\\tdisplay: flex;\\n\\tflex-direction: row;\\n\\talign-items: center;\\n\\theight: 70px;\\n\\tpadding: 16px;\\n\\n\\tinput {\\n\\t\\twidth: 100%;\\n\\t}\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","<template>\n <span v-bind=\"$attrs\"\n :aria-hidden=\"!title\"\n :aria-label=\"title\"\n class=\"material-design-icon account-switch-icon\"\n role=\"img\"\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=\"M16 9C22 9 22 13 22 13V15H16V13C16 13 16 11.31 14.85 9.8C14.68 9.57 14.47 9.35 14.25 9.14C14.77 9.06 15.34 9 16 9M2 13C2 13 2 9 8 9S14 13 14 13V15H2V13M9 17V19H15V17L18 20L15 23V21H9V23L6 20L9 17M8 1C6.34 1 5 2.34 5 4S6.34 7 8 7 11 5.66 11 4 9.66 1 8 1M16 1C14.34 1 13 2.34 13 4S14.34 7 16 7 19 5.66 19 4 17.66 1 16 1Z\">\n <title v-if=\"title\">{{ title }}</title>\n </path>\n </svg>\n </span>\n</template>\n\n<script>\nexport default {\n name: \"AccountSwitchIcon\",\n emits: ['click'],\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!./AccountSwitch.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../vue-loader/lib/index.js??vue-loader-options!./AccountSwitch.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./AccountSwitch.vue?vue&type=template&id=7ce2a630\"\nimport script from \"./AccountSwitch.vue?vue&type=script&lang=js\"\nexport * from \"./AccountSwitch.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 render(){var _vm=this,_c=_vm._self._c;return _c('span',_vm._b({staticClass:\"material-design-icon account-switch-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\":\"M16 9C22 9 22 13 22 13V15H16V13C16 13 16 11.31 14.85 9.8C14.68 9.57 14.47 9.35 14.25 9.14C14.77 9.06 15.34 9 16 9M2 13C2 13 2 9 8 9S14 13 14 13V15H2V13M9 17V19H15V17L18 20L15 23V21H9V23L6 20L9 17M8 1C6.34 1 5 2.34 5 4S6.34 7 8 7 11 5.66 11 4 9.66 1 8 1M16 1C14.34 1 13 2.34 13 4S14.34 7 16 7 19 5.66 19 4 17.66 1 16 1Z\"}},[(_vm.title)?_c('title',[_vm._v(_vm._s(_vm.title))]):_vm._e()])])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<template>\n <span v-bind=\"$attrs\"\n :aria-hidden=\"!title\"\n :aria-label=\"title\"\n class=\"material-design-icon alert-circle-icon\"\n role=\"img\"\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=\"M13,13H11V7H13M13,17H11V15H13M12,2A10,10 0 0,0 2,12A10,10 0 0,0 12,22A10,10 0 0,0 22,12A10,10 0 0,0 12,2Z\">\n <title v-if=\"title\">{{ title }}</title>\n </path>\n </svg>\n </span>\n</template>\n\n<script>\nexport default {\n name: \"AlertCircleIcon\",\n emits: ['click'],\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!./AlertCircle.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../vue-loader/lib/index.js??vue-loader-options!./AlertCircle.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./AlertCircle.vue?vue&type=template&id=2a2453f8\"\nimport script from \"./AlertCircle.vue?vue&type=script&lang=js\"\nexport * from \"./AlertCircle.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 render(){var _vm=this,_c=_vm._self._c;return _c('span',_vm._b({staticClass:\"material-design-icon alert-circle-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\":\"M13,13H11V7H13M13,17H11V15H13M12,2A10,10 0 0,0 2,12A10,10 0 0,0 12,22A10,10 0 0,0 22,12A10,10 0 0,0 12,2Z\"}},[(_vm.title)?_c('title',[_vm._v(_vm._s(_vm.title))]):_vm._e()])])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<template>\n <span v-bind=\"$attrs\"\n :aria-hidden=\"!title\"\n :aria-label=\"title\"\n class=\"material-design-icon arrow-left-icon\"\n role=\"img\"\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=\"M20,11V13H8L13.5,18.5L12.08,19.92L4.16,12L12.08,4.08L13.5,5.5L8,11H20Z\">\n <title v-if=\"title\">{{ title }}</title>\n </path>\n </svg>\n </span>\n</template>\n\n<script>\nexport default {\n name: \"ArrowLeftIcon\",\n emits: ['click'],\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!./ArrowLeft.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../vue-loader/lib/index.js??vue-loader-options!./ArrowLeft.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./ArrowLeft.vue?vue&type=template&id=187c55d7\"\nimport script from \"./ArrowLeft.vue?vue&type=script&lang=js\"\nexport * from \"./ArrowLeft.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 render(){var _vm=this,_c=_vm._self._c;return _c('span',_vm._b({staticClass:\"material-design-icon arrow-left-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\":\"M20,11V13H8L13.5,18.5L12.08,19.92L4.16,12L12.08,4.08L13.5,5.5L8,11H20Z\"}},[(_vm.title)?_c('title',[_vm._v(_vm._s(_vm.title))]):_vm._e()])])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<template>\n <span v-bind=\"$attrs\"\n :aria-hidden=\"!title\"\n :aria-label=\"title\"\n class=\"material-design-icon download-icon\"\n role=\"img\"\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=\"M5,20H19V18H5M19,9H15V3H9V9H5L12,16L19,9Z\">\n <title v-if=\"title\">{{ title }}</title>\n </path>\n </svg>\n </span>\n</template>\n\n<script>\nexport default {\n name: \"DownloadIcon\",\n emits: ['click'],\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!./Download.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../vue-loader/lib/index.js??vue-loader-options!./Download.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./Download.vue?vue&type=template&id=67aea606\"\nimport script from \"./Download.vue?vue&type=script&lang=js\"\nexport * from \"./Download.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 render(){var _vm=this,_c=_vm._self._c;return _c('span',_vm._b({staticClass:\"material-design-icon download-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\":\"M5,20H19V18H5M19,9H15V3H9V9H5L12,16L19,9Z\"}},[(_vm.title)?_c('title',[_vm._v(_vm._s(_vm.title))]):_vm._e()])])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<template>\n <span v-bind=\"$attrs\"\n :aria-hidden=\"!title\"\n :aria-label=\"title\"\n class=\"material-design-icon package-variant-icon\"\n role=\"img\"\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,10.96C1.5,10.68 1.35,10.07 1.63,9.59L3.13,7C3.24,6.8 3.41,6.66 3.6,6.58L11.43,2.18C11.59,2.06 11.79,2 12,2C12.21,2 12.41,2.06 12.57,2.18L20.47,6.62C20.66,6.72 20.82,6.88 20.91,7.08L22.36,9.6C22.64,10.08 22.47,10.69 22,10.96L21,11.54V16.5C21,16.88 20.79,17.21 20.47,17.38L12.57,21.82C12.41,21.94 12.21,22 12,22C11.79,22 11.59,21.94 11.43,21.82L3.53,17.38C3.21,17.21 3,16.88 3,16.5V10.96C2.7,11.13 2.32,11.14 2,10.96M12,4.15V4.15L12,10.85V10.85L17.96,7.5L12,4.15M5,15.91L11,19.29V12.58L5,9.21V15.91M19,15.91V12.69L14,15.59C13.67,15.77 13.3,15.76 13,15.6V19.29L19,15.91M13.85,13.36L20.13,9.73L19.55,8.72L13.27,12.35L13.85,13.36Z\">\n <title v-if=\"title\">{{ title }}</title>\n </path>\n </svg>\n </span>\n</template>\n\n<script>\nexport default {\n name: \"PackageVariantIcon\",\n emits: ['click'],\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!./PackageVariant.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../vue-loader/lib/index.js??vue-loader-options!./PackageVariant.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./PackageVariant.vue?vue&type=template&id=9a5ab29c\"\nimport script from \"./PackageVariant.vue?vue&type=script&lang=js\"\nexport * from \"./PackageVariant.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 render(){var _vm=this,_c=_vm._self._c;return _c('span',_vm._b({staticClass:\"material-design-icon package-variant-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,10.96C1.5,10.68 1.35,10.07 1.63,9.59L3.13,7C3.24,6.8 3.41,6.66 3.6,6.58L11.43,2.18C11.59,2.06 11.79,2 12,2C12.21,2 12.41,2.06 12.57,2.18L20.47,6.62C20.66,6.72 20.82,6.88 20.91,7.08L22.36,9.6C22.64,10.08 22.47,10.69 22,10.96L21,11.54V16.5C21,16.88 20.79,17.21 20.47,17.38L12.57,21.82C12.41,21.94 12.21,22 12,22C11.79,22 11.59,21.94 11.43,21.82L3.53,17.38C3.21,17.21 3,16.88 3,16.5V10.96C2.7,11.13 2.32,11.14 2,10.96M12,4.15V4.15L12,10.85V10.85L17.96,7.5L12,4.15M5,15.91L11,19.29V12.58L5,9.21V15.91M19,15.91V12.69L14,15.59C13.67,15.77 13.3,15.76 13,15.6V19.29L19,15.91M13.85,13.36L20.13,9.73L19.55,8.72L13.27,12.35L13.85,13.36Z\"}},[(_vm.title)?_c('title',[_vm._v(_vm._s(_vm.title))]):_vm._e()])])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import { render, staticRenderFns } from \"./PlayCircle.vue?vue&type=template&id=34d1e782\"\nimport script from \"./PlayCircle.vue?vue&type=script&lang=js\"\nexport * from \"./PlayCircle.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","<template>\n <span v-bind=\"$attrs\"\n :aria-hidden=\"!title\"\n :aria-label=\"title\"\n class=\"material-design-icon play-circle-icon\"\n role=\"img\"\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=\"M10,16.5V7.5L16,12M12,2A10,10 0 0,0 2,12A10,10 0 0,0 12,22A10,10 0 0,0 22,12A10,10 0 0,0 12,2Z\">\n <title v-if=\"title\">{{ title }}</title>\n </path>\n </svg>\n </span>\n</template>\n\n<script>\nexport default {\n name: \"PlayCircleIcon\",\n emits: ['click'],\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>","<template>\n <span v-bind=\"$attrs\"\n :aria-hidden=\"!title\"\n :aria-label=\"title\"\n class=\"material-design-icon star-icon\"\n role=\"img\"\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=\"M12,17.27L18.18,21L16.54,13.97L22,9.24L14.81,8.62L12,2L9.19,8.62L2,9.24L7.45,13.97L5.82,21L12,17.27Z\">\n <title v-if=\"title\">{{ title }}</title>\n </path>\n </svg>\n </span>\n</template>\n\n<script>\nexport default {\n name: \"StarIcon\",\n emits: ['click'],\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!./Star.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../vue-loader/lib/index.js??vue-loader-options!./Star.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./Star.vue?vue&type=template&id=22339b94\"\nimport script from \"./Star.vue?vue&type=script&lang=js\"\nexport * from \"./Star.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 render(){var _vm=this,_c=_vm._self._c;return _c('span',_vm._b({staticClass:\"material-design-icon star-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\":\"M12,17.27L18.18,21L16.54,13.97L22,9.24L14.81,8.62L12,2L9.19,8.62L2,9.24L7.45,13.97L5.82,21L12,17.27Z\"}},[(_vm.title)?_c('title',[_vm._v(_vm._s(_vm.title))]):_vm._e()])])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import { render, staticRenderFns } from \"./Video.vue?vue&type=template&id=12752490\"\nimport script from \"./Video.vue?vue&type=script&lang=js\"\nexport * from \"./Video.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","<template>\n <span v-bind=\"$attrs\"\n :aria-hidden=\"!title\"\n :aria-label=\"title\"\n class=\"material-design-icon video-icon\"\n role=\"img\"\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=\"M17,10.5V7A1,1 0 0,0 16,6H4A1,1 0 0,0 3,7V17A1,1 0 0,0 4,18H16A1,1 0 0,0 17,17V13.5L21,17.5V6.5L17,10.5Z\">\n <title v-if=\"title\">{{ title }}</title>\n </path>\n </svg>\n </span>\n</template>\n\n<script>\nexport default {\n name: \"VideoIcon\",\n emits: ['click'],\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>","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{staticClass:\"merge-form face-list\"},_vm._l((_vm.filteredFaces),function(face){return _c('FaceCover',{key:face.basename,attrs:{\"base-name\":face.basename,\"small\":\"\"},on:{\"click\":function($event){return _vm.handleSelect(face.basename)}}})}),1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<!--\n - @copyright Copyright (c) 2022 Marcel Klehr <mklehr@gmx.net>\n -\n - @author Marcel Klehr <mklehr@gmx.net>\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<div class=\"merge-form face-list\">\n\t\t<FaceCover v-for=\"face in filteredFaces\"\n\t\t\t:key=\"face.basename\"\n\t\t\t:base-name=\"face.basename\"\n\t\t\tsmall\n\t\t\t@click=\"handleSelect(face.basename)\" />\n\t</div>\n</template>\n\n<script>\nimport { mapGetters } from 'vuex'\n\nimport FaceCoverMixin from '../../mixins/FaceCoverMixin.js'\nimport FetchFacesMixin from '../../mixins/FetchFacesMixin.js'\nimport FaceCover from './FaceCover.vue'\n\nexport default {\n\tname: 'FaceMergeForm',\n\tcomponents: { FaceCover },\n\tmixins: [\n\t\tFaceCoverMixin,\n\t\tFetchFacesMixin,\n\t],\n\tprops: {\n\t\tfirstFace: {\n\t\t\ttype: String,\n\t\t\trequired: true,\n\t\t},\n\t},\n\tdata() {\n\t\treturn {\n\t\t\tloading: false,\n\t\t}\n\t},\n\tcomputed: {\n\t\t...mapGetters([\n\t\t\t'files',\n\t\t\t'faces',\n\t\t\t'facesFiles',\n\t\t]),\n\n\t\tfilteredFaces() {\n\t\t\treturn Object.values(this.faces)\n\t\t\t\t.filter(face => face.basename !== this.firstFace)\n\t\t\t\t.sort((a, b) => {\n\t\t\t\t\tif (a.props.nbItems && b.props.nbItems) {\n\t\t\t\t\t\treturn b.props.nbItems - a.props.nbItems\n\t\t\t\t\t}\n\t\t\t\t\tif (!this.facesFiles[b.basename] || !this.facesFiles[a.basename]) {\n\t\t\t\t\t\treturn 0\n\t\t\t\t\t}\n\t\t\t\t\treturn this.facesFiles[b.basename].length - this.facesFiles[a.basename].length\n\t\t\t\t})\n\t\t},\n\t},\n\tmethods: {\n\t\thandleSelect(faceName) {\n\t\t\tthis.$emit('select', faceName)\n\t\t\tthis.loading = true\n\t\t},\n\t},\n}\n</script>\n\n<style scoped lang=\"scss\">\n.face-list {\n\tdisplay: flex;\n\tflex-direction: row;\n\theight: 350px;\n\tflex-wrap: wrap;\n\tpadding: 12px;\n}\n\n.loader {\n\tmargin: 25% auto;\n}\n</style>\n","import mod from \"-!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FaceMergeForm.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!./FaceMergeForm.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.use[3]!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FaceMergeForm.vue?vue&type=style&index=0&id=33326436&prod&scoped=true&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.use[3]!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FaceMergeForm.vue?vue&type=style&index=0&id=33326436&prod&scoped=true&lang=scss\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./FaceMergeForm.vue?vue&type=template&id=33326436&scoped=true\"\nimport script from \"./FaceMergeForm.vue?vue&type=script&lang=js\"\nexport * from \"./FaceMergeForm.vue?vue&type=script&lang=js\"\nimport style0 from \"./FaceMergeForm.vue?vue&type=style&index=0&id=33326436&prod&scoped=true&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 \"33326436\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return (_vm.errorFetchingFiles)?_c('NcEmptyContent',{scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [_c('AlertCircle')]},proxy:true}],null,false,794036927)},[_vm._v(\"\\n\\t\"+_vm._s(_vm.t('photos', 'An error occurred'))+\"\\n\")]):_c('div',{staticClass:\"face\"},[_c('div',{staticClass:\"face__header\"},[_c('div',{staticClass:\"face__header__left\"},[_c('NcActions',[_c('NcActionButton',{on:{\"click\":function($event){return _vm.$router.push('/faces/')}},scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [_c('ArrowLeft')]},proxy:true}])},[_vm._v(_vm._s(_vm.t('photos', 'Back'))+\"\\n\\t\\t\\t\\t\")])],1),_vm._v(\" \"),_c('div',{staticClass:\"face__header__title\"},[_c('h2',{class:{'face-name': true}},[_vm._v(\"\\n\\t\\t\\t\\t\\t\"+_vm._s(_vm.t('photos', 'Unassigned faces'))+\"\\n\\t\\t\\t\\t\")])]),_vm._v(\" \"),(_vm.loadingCount > 0 || _vm.loadingFaces)?_c('NcLoadingIcon'):_vm._e()],1),_vm._v(\" \"),_c('div',{staticClass:\"face__header__actions\"},[_c('NcActions',{attrs:{\"force-menu\":true}},[(_vm.selectedFileIds.length)?[_c('NcActionButton',{attrs:{\"close-after-click\":true,\"aria-label\":_vm.t('photos', 'Download selected files')},on:{\"click\":_vm.downloadSelection}},[_c('Download',{attrs:{\"slot\":\"icon\"},slot:\"icon\"}),_vm._v(\"\\n\\t\\t\\t\\t\\t\\t\"+_vm._s(_vm.t('photos', 'Download selected photos'))+\"\\n\\t\\t\\t\\t\\t\")],1),_vm._v(\" \"),(_vm.shouldFavoriteSelection)?_c('NcActionButton',{attrs:{\"close-after-click\":true,\"aria-label\":_vm.t('photos', 'Mark selection as favorite')},on:{\"click\":_vm.favoriteSelection}},[_c('Star',{attrs:{\"slot\":\"icon\"},slot:\"icon\"}),_vm._v(\"\\n\\t\\t\\t\\t\\t\\t\"+_vm._s(_vm.t('photos', 'Favorite'))+\"\\n\\t\\t\\t\\t\\t\")],1):_c('NcActionButton',{attrs:{\"close-after-click\":true,\"aria-label\":_vm.t('photos', 'Remove selection from favorites')},on:{\"click\":_vm.unFavoriteSelection}},[_c('Star',{attrs:{\"slot\":\"icon\"},slot:\"icon\"}),_vm._v(\"\\n\\t\\t\\t\\t\\t\\t\"+_vm._s(_vm.t('photos', 'Remove from favorites'))+\"\\n\\t\\t\\t\\t\\t\")],1),_vm._v(\" \"),_c('NcActionButton',{attrs:{\"close-after-click\":true},on:{\"click\":function($event){_vm.showMoveModal = true}},scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [_c('AccountSwitch')]},proxy:true}],null,false,2937983280)},[_vm._v(\"\\n\\t\\t\\t\\t\\t\\t\"+_vm._s(_vm.n('photos', 'Move photo to a different person', 'Move photos to a different person', _vm.selectedFileIds.length))+\"\\n\\t\\t\\t\\t\\t\")])]:_vm._e()],2)],1)]),_vm._v(\" \"),_c('FilesListViewer',{staticClass:\"face__photos\",attrs:{\"container-element\":_vm.appContent,\"file-ids\":_vm.faceFileIds,\"loading\":_vm.loadingFiles || _vm.loadingFaces},scopedSlots:_vm._u([{key:\"default\",fn:function({file, distance}){return _c('File',{attrs:{\"file\":_vm.files[file.id],\"allow-selection\":true,\"selected\":_vm.selection[file.id] === true,\"distance\":distance},on:{\"click\":_vm.openViewer,\"select-toggled\":_vm.onFileSelectToggle}})}}])}),_vm._v(\" \"),(_vm.showMoveModal)?_c('NcDialog',{attrs:{\"name\":_vm.t('photos', 'Move to different person'),\"close-on-click-outside\":\"\",\"size\":\"normal\"},on:{\"closing\":function($event){_vm.showMoveModal = false}}},[_c('FaceMergeForm',{attrs:{\"first-face\":'-1'},on:{\"select\":function($event){return _vm.handleMove($event, _vm.selectedFileIds)}}})],1):_vm._e()],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<!--\n - @copyright Copyright (c) 2022 Louis Chemineau <louis@chmn.me>\n - @copyright Copyright (c) 2022 Marcel Klehr <mklehr@gmx.net>\n -\n - @author Louis Chemineau <louis@chmn.me>\n - @author Marcel Klehr <mklehr@gmx.net>\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<NcEmptyContent v-if=\"errorFetchingFiles\">\n\t\t<template #icon>\n\t\t\t<AlertCircle />\n\t\t</template>\n\t\t{{ t('photos', 'An error occurred') }}\n\t</NcEmptyContent>\n\n\t<div v-else class=\"face\">\n\t\t<div class=\"face__header\">\n\t\t\t<div class=\"face__header__left\">\n\t\t\t\t<NcActions>\n\t\t\t\t\t<NcActionButton @click=\"$router.push('/faces/')\">\n\t\t\t\t\t\t<template #icon>\n\t\t\t\t\t\t\t<ArrowLeft />\n\t\t\t\t\t\t</template>{{ t('photos', 'Back') }}\n\t\t\t\t\t</NcActionButton>\n\t\t\t\t</NcActions>\n\t\t\t\t<div class=\"face__header__title\">\n\t\t\t\t\t<h2 :class=\"{'face-name': true}\">\n\t\t\t\t\t\t{{ t('photos', 'Unassigned faces') }}\n\t\t\t\t\t</h2>\n\t\t\t\t</div>\n\n\t\t\t\t<NcLoadingIcon v-if=\"loadingCount > 0 || loadingFaces\" />\n\t\t\t</div>\n\t\t\t<div class=\"face__header__actions\">\n\t\t\t\t<NcActions :force-menu=\"true\">\n\t\t\t\t\t<template v-if=\"selectedFileIds.length\">\n\t\t\t\t\t\t<NcActionButton :close-after-click=\"true\"\n\t\t\t\t\t\t\t:aria-label=\"t('photos', 'Download selected files')\"\n\t\t\t\t\t\t\t@click=\"downloadSelection\">\n\t\t\t\t\t\t\t<Download slot=\"icon\" />\n\t\t\t\t\t\t\t{{ t('photos', 'Download selected photos') }}\n\t\t\t\t\t\t</NcActionButton>\n\t\t\t\t\t\t<NcActionButton v-if=\"shouldFavoriteSelection\"\n\t\t\t\t\t\t\t:close-after-click=\"true\"\n\t\t\t\t\t\t\t:aria-label=\"t('photos', 'Mark selection as favorite')\"\n\t\t\t\t\t\t\t@click=\"favoriteSelection\">\n\t\t\t\t\t\t\t<Star slot=\"icon\" />\n\t\t\t\t\t\t\t{{ t('photos', 'Favorite') }}\n\t\t\t\t\t\t</NcActionButton>\n\t\t\t\t\t\t<NcActionButton v-else\n\t\t\t\t\t\t\t:close-after-click=\"true\"\n\t\t\t\t\t\t\t:aria-label=\"t('photos', 'Remove selection from favorites')\"\n\t\t\t\t\t\t\t@click=\"unFavoriteSelection\">\n\t\t\t\t\t\t\t<Star slot=\"icon\" />\n\t\t\t\t\t\t\t{{ t('photos', 'Remove from favorites') }}\n\t\t\t\t\t\t</NcActionButton>\n\t\t\t\t\t\t<NcActionButton :close-after-click=\"true\"\n\t\t\t\t\t\t\t@click=\"showMoveModal = true\">\n\t\t\t\t\t\t\t<template #icon>\n\t\t\t\t\t\t\t\t<AccountSwitch />\n\t\t\t\t\t\t\t</template>\n\t\t\t\t\t\t\t{{ n('photos', 'Move photo to a different person', 'Move photos to a different person', selectedFileIds.length) }}\n\t\t\t\t\t\t</NcActionButton>\n\t\t\t\t\t</template>\n\t\t\t\t</NcActions>\n\t\t\t</div>\n\t\t</div>\n\n\t\t<FilesListViewer class=\"face__photos\"\n\t\t\t:container-element=\"appContent\"\n\t\t\t:file-ids=\"faceFileIds\"\n\t\t\t:loading=\"loadingFiles || loadingFaces\">\n\t\t\t<File slot-scope=\"{file, distance}\"\n\t\t\t\t:file=\"files[file.id]\"\n\t\t\t\t:allow-selection=\"true\"\n\t\t\t\t:selected=\"selection[file.id] === true\"\n\t\t\t\t:distance=\"distance\"\n\t\t\t\t@click=\"openViewer\"\n\t\t\t\t@select-toggled=\"onFileSelectToggle\" />\n\t\t</FilesListViewer>\n\n\t\t<NcDialog v-if=\"showMoveModal\"\n\t\t\t:name=\"t('photos', 'Move to different person')\"\n\t\t\tclose-on-click-outside\n\t\t\tsize=\"normal\"\n\t\t\t@closing=\"showMoveModal = false\">\n\t\t\t<FaceMergeForm :first-face=\"'-1'\" @select=\"handleMove($event, selectedFileIds)\" />\n\t\t</NcDialog>\n\t</div>\n</template>\n\n<script>\nimport { mapActions, mapGetters } from 'vuex'\nimport AlertCircle from 'vue-material-design-icons/AlertCircle.vue'\nimport Star from 'vue-material-design-icons/Star.vue'\nimport Download from 'vue-material-design-icons/Download.vue'\nimport ArrowLeft from 'vue-material-design-icons/ArrowLeft.vue'\nimport AccountSwitch from 'vue-material-design-icons/AccountSwitch.vue'\n\nimport { NcActions, NcActionButton, NcDialog, NcEmptyContent, NcLoadingIcon } from '@nextcloud/vue'\n\nimport FetchFilesMixin from '../mixins/FetchFilesMixin.js'\nimport FilesSelectionMixin from '../mixins/FilesSelectionMixin.js'\nimport FilesListViewer from '../components/FilesListViewer.vue'\nimport File from '../components/File.vue'\nimport logger from '../services/logger.js'\nimport FetchFacesMixin from '../mixins/FetchFacesMixin.js'\nimport Vue from 'vue'\nimport FaceMergeForm from '../components/Faces/FaceMergeForm.vue'\n\nexport default {\n\tname: 'UnassignedFaces',\n\tcomponents: {\n\t\tStar,\n\t\tDownload,\n\t\tAlertCircle,\n\t\tArrowLeft,\n\t\tFaceMergeForm,\n\t\tFilesListViewer,\n\t\tFile,\n\t\tNcLoadingIcon,\n\t\tNcEmptyContent,\n\t\tNcActions,\n\t\tNcActionButton,\n\t\tNcDialog,\n\t\tAccountSwitch,\n\t},\n\n\tdirectives: {\n\t\tfocus(el) {\n\t\t\tVue.nextTick(() => el.focus())\n\t\t},\n\t},\n\n\tmixins: [\n\t\tFetchFacesMixin,\n\t\tFetchFilesMixin,\n\t\tFilesSelectionMixin,\n\t],\n\n\tdata() {\n\t\treturn {\n\t\t\tshowMoveModal: false,\n\t\t\tloadingCount: 0,\n\t\t\tappContent: document.getElementById('app-content-vue'),\n\t\t}\n\t},\n\n\tcomputed: {\n\t\t...mapGetters([\n\t\t\t'files',\n\t\t\t'unassignedFiles',\n\t\t]),\n\n\t\t/**\n\t\t * @return {string[]} The list of files for the current faceName.\n\t\t */\n\t\tfaceFileIds() {\n\t\t\treturn this.unassignedFiles || []\n\t\t},\n\n\t\t/** @type {boolean} */\n\t\tshouldFavoriteSelection() {\n\t\t\t// Favorite all selection if at least one file is not on the favorites.\n\t\t\treturn this.selectedFileIds.some((fileId) => this.$store.state.files.files[fileId].favorite === 0)\n\t\t},\n\t},\n\n\tmounted() {\n\t\tthis.fetchUnassignedFaces()\n\t},\n\n\tmethods: {\n\t\t...mapActions([\n\t\t\t'appendFiles',\n\t\t\t'deleteFace',\n\t\t\t'renameFace',\n\t\t\t'downloadFiles',\n\t\t\t'toggleFavoriteForFiles',\n\t\t\t'removeFilesFromFace',\n\t\t\t'moveFilesToFace',\n\t\t]),\n\n\t\topenViewer(fileId) {\n\t\t\tconst file = this.files[fileId]\n\t\t\tOCA.Viewer.open({\n\t\t\t\t// remove /username/files/ from the start\n\t\t\t\tpath: '/' + file.filename.split('/').slice(3).join('/'),\n\t\t\t\tlist: this.faceFileIds.map(fileId => ({\n\t\t\t\t\t...this.files[fileId],\n\t\t\t\t\tbasename: this.files[fileId].basename.split('-').slice(1).join('-'),\n\t\t\t\t})).filter(file => !file.sectionHeader),\n\t\t\t\tloadMore: file.loadMore ? async () => await file.loadMore(true) : () => [],\n\t\t\t\tcanLoop: file.canLoop,\n\t\t\t})\n\t\t},\n\n\t\tasync handleMove(faceName, fileIds) {\n\t\t\ttry {\n\t\t\t\tthis.loadingCount++\n\t\t\t\tawait this.moveFilesToFace({ oldFace: null, faceName, fileIdsToMove: fileIds })\n\t\t\t\tthis.showMoveModal = false\n\t\t\t} catch (error) {\n\t\t\t\tlogger.error(error)\n\t\t\t} finally {\n\t\t\t\tthis.loadingCount--\n\t\t\t}\n\t\t},\n\n\t\tasync favoriteSelection() {\n\t\t\ttry {\n\t\t\t\tthis.loadingCount++\n\t\t\t\tawait this.toggleFavoriteForFiles({ fileIds: this.selectedFileIds, favoriteState: true })\n\t\t\t} catch (error) {\n\t\t\t\tlogger.error(error)\n\t\t\t} finally {\n\t\t\t\tthis.loadingCount--\n\t\t\t}\n\t\t},\n\n\t\tasync unFavoriteSelection() {\n\t\t\ttry {\n\t\t\t\tthis.loadingCount++\n\t\t\t\tawait this.toggleFavoriteForFiles({ fileIds: this.selectedFileIds, favoriteState: false })\n\t\t\t} catch (error) {\n\t\t\t\tlogger.error(error)\n\t\t\t} finally {\n\t\t\t\tthis.loadingCount--\n\t\t\t}\n\t\t},\n\n\t\tasync downloadSelection() {\n\t\t\ttry {\n\t\t\t\tthis.loadingCount++\n\t\t\t\tawait this.downloadFiles(this.selectedFileIds)\n\t\t\t} catch (error) {\n\t\t\t\tlogger.error(error)\n\t\t\t} finally {\n\t\t\t\tthis.loadingCount--\n\t\t\t}\n\t\t},\n\t},\n}\n</script>\n<style lang=\"scss\" scoped>\n@import '../mixins/FaceContent';\n</style>\n","import mod from \"-!../../node_modules/babel-loader/lib/index.js!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./UnassignedFaces.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!./UnassignedFaces.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.use[3]!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./UnassignedFaces.vue?vue&type=style&index=0&id=22feae0f&prod&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.use[3]!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./UnassignedFaces.vue?vue&type=style&index=0&id=22feae0f&prod&lang=scss&scoped=true\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./UnassignedFaces.vue?vue&type=template&id=22feae0f&scoped=true\"\nimport script from \"./UnassignedFaces.vue?vue&type=script&lang=js\"\nexport * from \"./UnassignedFaces.vue?vue&type=script&lang=js\"\nimport style0 from \"./UnassignedFaces.vue?vue&type=style&index=0&id=22feae0f&prod&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 \"22feae0f\",\n null\n \n)\n\nexport default component.exports","import mod from \"-!../vue-loader/lib/index.js??vue-loader-options!./PlayCircle.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../vue-loader/lib/index.js??vue-loader-options!./PlayCircle.vue?vue&type=script&lang=js\"","import mod from \"-!../vue-loader/lib/index.js??vue-loader-options!./Video.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../vue-loader/lib/index.js??vue-loader-options!./Video.vue?vue&type=script&lang=js\"","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('span',_vm._b({staticClass:\"material-design-icon play-circle-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\":\"M10,16.5V7.5L16,12M12,2A10,10 0 0,0 2,12A10,10 0 0,0 12,22A10,10 0 0,0 22,12A10,10 0 0,0 12,2Z\"}},[(_vm.title)?_c('title',[_vm._v(_vm._s(_vm.title))]):_vm._e()])])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('span',_vm._b({staticClass:\"material-design-icon video-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\":\"M17,10.5V7A1,1 0 0,0 16,6H4A1,1 0 0,0 3,7V17A1,1 0 0,0 4,18H16A1,1 0 0,0 17,17V13.5L21,17.5V6.5L17,10.5Z\"}},[(_vm.title)?_c('title',[_vm._v(_vm._s(_vm.title))]):_vm._e()])])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }"],"names":["name","mixins","AbortControllerMixin","data","errorFetchingFiles","loadingFiles","doneFetchingFiles","fetchSemaphore","SemaphoreWithPriority","fetchedFileIds","watch","this","resetFetchFilesState","methods","async","options","arguments","length","undefined","blacklist","force","fetchSemaphoreSymbol","acquire","numberOfImagesPerBatch","fetchedFiles","firstResult","nbResults","mimesType","allMimes","onThisDay","onlyFavorites","orMime","reduce","str","mime","concat","eqFavorites","Array","fill","map","_","years","start","moment","Date","now","startOf","subtract","end","endOf","add","format","join","sourceFolders","store","folder","joinPaths","davRootPath","Object","assign","method","headers","props","deep","details","client","genFileInfo","getPhotos","signal","abortController","fileIds","file","fileid","filter","fileId","includes","toString","push","$store","dispatch","logger","error","_error$response","response","status","sources","source","_error$response2","_error$response2$data","match","davGetClient","createDirectory","code","release","q","x","t","e","r","n","indexOf","f","Math","pow","h","max","min","trunc","M","F","abs","d","Error","constructor","super","message","C","floor","z","L","l","j","m","b","i","u","o","a","substring","c","s","Uint8ClampedArray","y","B","R","w","P","G","cos","PI","T","V","I","E","___CSS_LOADER_EXPORT___","module","id","emits","title","type","String","fillColor","default","size","Number","_vm","_c","_self","_b","staticClass","attrs","on","$event","$emit","$attrs","_v","_s","_e","components","FaceCover","FaceCoverMixin","FetchFacesMixin","firstFace","required","loading","computed","mapGetters","filteredFaces","values","faces","face","basename","sort","nbItems","facesFiles","handleSelect","faceName","styleTagTransform","setAttributes","insert","domAPI","insertStyleElement","_l","key","Star","Download","AlertCircle","ArrowLeft","FaceMergeForm","FilesListViewer","File","NcLoadingIcon","NcEmptyContent","NcActions","NcActionButton","NcDialog","AccountSwitch","directives","focus","el","Vue","FetchFilesMixin","FilesSelectionMixin","showMoveModal","loadingCount","appContent","document","getElementById","faceFileIds","unassignedFiles","shouldFavoriteSelection","selectedFileIds","some","state","files","favorite","mounted","fetchUnassignedFaces","mapActions","openViewer","OCA","Viewer","open","path","filename","split","slice","list","sectionHeader","loadMore","canLoop","moveFilesToFace","oldFace","fileIdsToMove","toggleFavoriteForFiles","favoriteState","downloadFiles","scopedSlots","_u","fn","proxy","$router","class","loadingFaces","downloadSelection","slot","favoriteSelection","unFavoriteSelection","_ref","distance","selection","onFileSelectToggle","handleMove","render","staticRenderFns"],"sourceRoot":""}