f7cloud_client/apps/photos/js/FacesView-BhXE6KL0.chunk.mjs.map
root 8b6a0139db f7cloud_client
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-02-17 22:59:26 +00:00

1 line
6.6 KiB
Plaintext

{"version":3,"file":"FacesView-BhXE6KL0.chunk.mjs","sources":["../src/components/Faces/UnassignedFacesCover.vue","../src/views/FacesView.vue"],"sourcesContent":["<!--\n - SPDX-FileCopyrightText: 2022 Nextcloud GmbH and Nextcloud contributors\n - SPDX-License-Identifier: AGPL-3.0-or-later\n-->\n\n<template>\n\t<div :class=\"['face-cover', small && 'face-cover--small']\" @click=\"$emit('click')\">\n\t\t<div class=\"face-cover__crop-container\">\n\t\t\t<AccountOffOutlineIcon :size=\"128\" :fill-color=\"colorMainBackground\" />\n\t\t</div>\n\t\t<div class=\"face-cover__details\">\n\t\t\t<div v-if=\"!small\" class=\"face-cover__details__second-line\">\n\t\t\t\t{{ n('photos', '%n unassigned photo', '%n unassigned photos', unassignedFilesCount) }}\n\t\t\t</div>\n\t\t</div>\n\t</div>\n</template>\n\n<script lang='ts'>\nimport { translatePlural as n } from '@nextcloud/l10n'\nimport AccountOffOutlineIcon from 'vue-material-design-icons/AccountOffOutline.vue'\nimport FaceCoverMixin from '../../mixins/FaceCoverMixin.js'\nimport FetchFacesMixin from '../../mixins/FetchFacesMixin.js'\n\nexport default {\n\tname: 'UnassignedFacesCover',\n\n\tcomponents: { AccountOffOutlineIcon },\n\n\tmixins: [\n\t\tFetchFacesMixin,\n\t\tFaceCoverMixin,\n\t],\n\n\tprops: {\n\t\tsmall: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: false,\n\t\t},\n\t},\n\n\tcomputed: {\n\t\tunassignedFilesCount() {\n\t\t\treturn this.$store.state.faces.unassignedFilesCount\n\t\t},\n\n\t\tcolorMainBackground() {\n\t\t\treturn getComputedStyle(document.documentElement).getPropertyValue('--color-main-background')\n\t\t},\n\t},\n\n\tasync mounted() {\n\t\tawait this.fetchUnassignedFacesCount()\n\t},\n\n\tmethods: {\n\t\tn,\n\t},\n}\n</script>\n\n<style lang=\"scss\" scoped>\n@use '../../mixins/FaceCover';\n</style>\n","<!--\n - SPDX-FileCopyrightText: 2022 Nextcloud GmbH and Nextcloud contributors\n - SPDX-License-Identifier: AGPL-3.0-or-later\n-->\n<template>\n\t<!-- Errors handlers-->\n\t<NcEmptyContent v-if=\"errorFetchingFaces\">\n\t\t{{ t('photos', 'An error occurred') }}\n\t</NcEmptyContent>\n\n\t<!-- Face list -->\n\t<div v-else class=\"faces\">\n\t\t<NcLoadingIcon v-if=\"loadingFaces\" />\n\n\t\t<!-- No faces -->\n\t\t<div v-if=\"noFaces && !loadingFaces\" class=\"faces__empty\">\n\t\t\t<NcEmptyContent class=\"empty-content-with-illustration\">\n\t\t\t\t<template #icon>\n\t\t\t\t\t<AccountBoxMultipleOutline />\n\t\t\t\t</template>\n\t\t\t\t<template #desc>\n\t\t\t\t\t{{ t('photos', 'This might take some time depending on the size of your photo library.') }}\n\t\t\t\t</template>\n\t\t\t\t{{ t('photos', 'Recognized people will show up here') }}\n\t\t\t</NcEmptyContent>\n\t\t</div>\n\n\t\t<div v-else-if=\"!noFaces\" class=\"faces__list\">\n\t\t\t<RouterLink\n\t\t\t\tv-for=\"face in orderedFaces\"\n\t\t\t\t:key=\"face.basename\"\n\t\t\t\t:to=\"`/faces/${encodeURIComponent(face.basename)}`\">\n\t\t\t\t<FaceCover :base-name=\"face.basename\" />\n\t\t\t</RouterLink>\n\t\t\t<RouterLink\n\t\t\t\tkey=\"unassigned\"\n\t\t\t\t:to=\"`/faces/unassigned`\">\n\t\t\t\t<UnassignedFacesCover />\n\t\t\t</RouterLink>\n\t\t</div>\n\t</div>\n</template>\n\n<script lang='ts'>\nimport type { Collection } from '../services/collectionFetcher.js'\n\nimport { t } from '@nextcloud/l10n'\nimport { RouterLink } from 'vue-router'\nimport NcEmptyContent from '@nextcloud/vue/components/NcEmptyContent'\nimport NcLoadingIcon from '@nextcloud/vue/components/NcLoadingIcon'\nimport AccountBoxMultipleOutline from 'vue-material-design-icons/AccountBoxMultipleOutline.vue'\nimport FaceCover from '../components/Faces/FaceCover.vue'\nimport UnassignedFacesCover from '../components/Faces/UnassignedFacesCover.vue'\nimport FetchFacesMixin from '../mixins/FetchFacesMixin.js'\n\nexport default {\n\tname: 'FacesView',\n\tcomponents: {\n\t\tUnassignedFacesCover,\n\t\tFaceCover,\n\t\tNcEmptyContent,\n\t\tNcLoadingIcon,\n\t\tRouterLink,\n\t\tAccountBoxMultipleOutline,\n\t},\n\n\tmixins: [FetchFacesMixin],\n\n\tcomputed: {\n\t\tfacesFiles() {\n\t\t\treturn this.$store.state.faces.facesFiles\n\t\t},\n\n\t\tunassignedFilesCount() {\n\t\t\treturn this.$store.state.faces.unassignedFilesCount\n\t\t},\n\n\t\tnoFaces(): boolean {\n\t\t\treturn Object.keys(this.faces).length === 0\n\t\t},\n\n\t\torderedFaces() {\n\t\t\treturn Object.values(this.faces as Collection[]).sort((a, b) => {\n\t\t\t\tif (a.attributes.nbItems && b.attributes.nbItems) {\n\t\t\t\t\treturn b.attributes.nbItems - a.attributes.nbItems\n\t\t\t\t}\n\t\t\t\tif (!this.facesFiles[b.basename] || !this.facesFiles[a.basename]) {\n\t\t\t\t\treturn 0\n\t\t\t\t}\n\t\t\t\treturn this.facesFiles[b.basename].length - this.facesFiles[a.basename].length\n\t\t\t})\n\t\t},\n\t},\n\n\tmethods: {\n\t\tt,\n\t},\n}\n</script>\n\n<style lang=\"scss\" scoped>\n.faces {\n\tdisplay: flex;\n\tflex-direction: column;\n\theight: calc(100vh - var(--header-height));\n\tpadding-inline-start: 64px;\n\n\t@media only screen and (max-width: 1020px) {\n\t\tpadding: 0;\n\t}\n\n\t&__header {\n\t\tdisplay: flex;\n\t\tmin-height: 60px;\n\t\talign-items: center;\n\n\t\tbutton {\n\t\t\tmargin-inline-end: 32px;\n\t\t}\n\t}\n\n\t&__list {\n\t\tpadding-top: 24px;\n\t\tpadding-bottom: 32px;\n\t\tflex-grow: 1;\n\t\tdisplay: flex;\n\t\tflex-wrap: wrap;\n\t\tgap: 32px;\n\t\talign-content: flex-start;\n\t}\n\n\t&__empty {\n\t\tdisplay: flex;\n\t\tflex-direction: column;\n\t\talign-items: center;\n\n\t\t&__button {\n\t\t\tmargin-top: 32px;\n\t\t}\n\t}\n}\n\n.empty-content-with-illustration :deep(.empty-content__icon) {\n\twidth: 200px;\n\theight: 200px;\n\n\tsvg {\n\t\twidth: 200px;\n\t\theight: 200px;\n\t}\n}\n</style>\n"],"names":["_sfc_main$1","AccountOffOutlineIcon","FetchFacesMixin","FaceCoverMixin","n","_sfc_main","UnassignedFacesCover","FaceCover","NcEmptyContent","NcLoadingIcon","RouterLink","AccountBoxMultipleOutline","a","b","t"],"mappings":"2cAwBA,MAAAA,EAAA,CACA,KAAA,uBAEA,WAAA,CAAA,sBAAAC,CAAA,EAEA,OAAA,CACAC,EACAC,CACA,EAEA,MAAA,CACA,MAAA,CACA,KAAA,QACA,QAAA,EAAA,CAEA,EAEA,SAAA,CACA,sBAAA,CACA,OAAA,KAAA,OAAA,MAAA,MAAA,oBACA,EAEA,qBAAA,CACA,OAAA,iBAAA,SAAA,eAAA,EAAA,iBAAA,yBAAA,CAAA,CAEA,EAEA,MAAA,SAAA,CACA,MAAA,KAAA,0BAAA,CACA,EAEA,QAAA,CACAC,EAAAA,CAAA,CAEA,gkBCHAC,EAAA,CACA,KAAA,YACA,WAAA,CACA,qBAAAC,EACA,UAAAC,EACA,eAAAC,EACA,cAAAC,EAAA,WACAC,EACA,0BAAAC,CACA,EAEA,OAAA,CAAAT,CAAA,EAEA,SAAA,CACA,YAAA,CACA,OAAA,KAAA,OAAA,MAAA,MAAA,UACA,EAEA,sBAAA,CACA,OAAA,KAAA,OAAA,MAAA,MAAA,oBACA,EAEA,SAAA,CACA,OAAA,OAAA,KAAA,KAAA,KAAA,EAAA,SAAA,CACA,EAEA,cAAA,CACA,OAAA,OAAA,OAAA,KAAA,KAAA,EAAA,KAAA,CAAAU,EAAAC,IACAD,EAAA,WAAA,SAAAC,EAAA,WAAA,QACAA,EAAA,WAAA,QAAAD,EAAA,WAAA,QAEA,CAAA,KAAA,WAAAC,EAAA,QAAA,GAAA,CAAA,KAAA,WAAAD,EAAA,QAAA,EACA,EAEA,KAAA,WAAAC,EAAA,QAAA,EAAA,OAAA,KAAA,WAAAD,EAAA,QAAA,EAAA,MACA,CAAA,CAEA,EAEA,QAAA,CACAE,EAAAA,CAAA,CAEA"}