photos/js/photos-src_mixins_FetchAlbu...

1 line
75 KiB
XML

{"version":3,"file":"photos-src_mixins_FetchAlbumsMixin_js-node_modules_vue-material-design-icons_Plus_vue-src_components-4c933a.js?v=573555613b96f2192c91","mappings":"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","sources":["webpack:///photos/src/mixins/FetchAlbumsMixin.js","webpack:///photos/src/components/AlbumForm.vue?vue&type=style&index=0&id=33f82244&lang=scss&scoped=true&","webpack:///photos/src/components/CollaboratorsSelectionForm.vue?vue&type=style&index=0&id=995bfdfc&lang=scss&scoped=true&","webpack:///photos/node_modules/vue-material-design-icons/Plus.vue","webpack:///photos/node_modules/vue-material-design-icons/Plus.vue?vue&type=script&lang=js&","webpack://photos/./node_modules/vue-material-design-icons/Plus.vue?80b4","webpack:///photos/node_modules/vue-material-design-icons/Plus.vue?vue&type=template&id=968bec46&","webpack:///photos/node_modules/vue-material-design-icons/Send.vue","webpack:///photos/node_modules/vue-material-design-icons/Send.vue?vue&type=script&lang=js&","webpack://photos/./node_modules/vue-material-design-icons/Send.vue?0295","webpack:///photos/node_modules/vue-material-design-icons/Send.vue?vue&type=template&id=46f29e66&","webpack:///photos/src/components/AlbumForm.vue?vue&type=template&id=33f82244&scoped=true&","webpack:///photos/node_modules/vue-material-design-icons/AccountMultiplePlus.vue","webpack:///photos/node_modules/vue-material-design-icons/AccountMultiplePlus.vue?vue&type=script&lang=js&","webpack://photos/./node_modules/vue-material-design-icons/AccountMultiplePlus.vue?e9b5","webpack:///photos/node_modules/vue-material-design-icons/AccountMultiplePlus.vue?vue&type=template&id=7e4925e6&","webpack:///photos/src/components/AlbumForm.vue","webpack:///photos/src/components/AlbumForm.vue?vue&type=script&lang=js&","webpack://photos/./src/components/AlbumForm.vue?1eac","webpack://photos/./src/components/AlbumForm.vue?b1d3","webpack:///photos/node_modules/vue-material-design-icons/Magnify.vue","webpack:///photos/node_modules/vue-material-design-icons/Magnify.vue?vue&type=script&lang=js&","webpack://photos/./node_modules/vue-material-design-icons/Magnify.vue?0775","webpack:///photos/node_modules/vue-material-design-icons/Magnify.vue?vue&type=template&id=d480a606&","webpack:///photos/node_modules/vue-material-design-icons/ContentCopy.vue","webpack:///photos/node_modules/vue-material-design-icons/ContentCopy.vue?vue&type=script&lang=js&","webpack://photos/./node_modules/vue-material-design-icons/ContentCopy.vue?c47c","webpack:///photos/node_modules/vue-material-design-icons/ContentCopy.vue?vue&type=template&id=00bbfaf7&","webpack:///photos/src/components/CollaboratorsSelectionForm.vue","webpack:///photos/src/components/CollaboratorsSelectionForm.vue?vue&type=script&lang=js&","webpack://photos/./src/components/CollaboratorsSelectionForm.vue?f5d2","webpack://photos/./src/components/CollaboratorsSelectionForm.vue?507a","webpack:///photos/src/components/CollaboratorsSelectionForm.vue?vue&type=template&id=995bfdfc&scoped=true&"],"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 { mapGetters } from 'vuex'\n\nimport moment from '@nextcloud/moment'\nimport { showError } from '@nextcloud/dialogs'\nimport { getCurrentUser } from '@nextcloud/auth'\n\nimport client from '../services/DavClient.js'\nimport logger from '../services/logger.js'\nimport { genFileInfo } from '../utils/fileUtils.js'\nimport AbortControllerMixin from './AbortControllerMixin.js'\n\nexport default {\n\tname: 'FetchAlbumsMixin',\n\n\tdata() {\n\t\treturn {\n\t\t\terrorFetchingAlbums: null,\n\t\t\tloadingAlbums: false,\n\t\t}\n\t},\n\n\tmixins: [\n\t\tAbortControllerMixin,\n\t],\n\n\tasync beforeMount() {\n\t\tthis.fetchAlbums()\n\t},\n\n\tcomputed: {\n\t\t...mapGetters([\n\t\t\t'albums',\n\t\t]),\n\t},\n\n\tmethods: {\n\t\tasync fetchAlbums() {\n\t\t\tif (this.loadingAlbums) {\n\t\t\t\treturn\n\t\t\t}\n\n\t\t\ttry {\n\t\t\t\tthis.loadingAlbums = true\n\t\t\t\tthis.errorFetchingAlbums = null\n\n\t\t\t\tconst response = await client.getDirectoryContents(`/photos/${getCurrentUser()?.uid}/albums`, {\n\t\t\t\t\tdata: `<?xml version=\"1.0\"?>\n\t\t\t\t\t\t\t<d:propfind xmlns:d=\"DAV:\"\n\t\t\t\t\t\t\t\txmlns:oc=\"http://owncloud.org/ns\"\n\t\t\t\t\t\t\t\txmlns:nc=\"http://nextcloud.org/ns\"\n\t\t\t\t\t\t\t\txmlns:ocs=\"http://open-collaboration-services.org/ns\">\n\t\t\t\t\t\t\t\t<d:prop>\n\t\t\t\t\t\t\t\t\t<nc:last-photo />\n\t\t\t\t\t\t\t\t\t<nc:nbItems />\n\t\t\t\t\t\t\t\t\t<nc:location />\n\t\t\t\t\t\t\t\t\t<nc:dateRange />\n\t\t\t\t\t\t\t\t\t<nc:collaborators />\n\t\t\t\t\t\t\t\t\t<nc:publicLink />\n\t\t\t\t\t\t\t\t</d:prop>\n\t\t\t\t\t\t\t</d:propfind>`,\n\t\t\t\t\tdetails: true,\n\t\t\t\t\tsignal: this.abortController.signal,\n\t\t\t\t})\n\n\t\t\t\tconst albums = response.data\n\t\t\t\t\t.filter(album => album.filename !== `/photos/${getCurrentUser()?.uid}/albums`)\n\t\t\t\t\t// Ensure that we have a proper collaborators array.\n\t\t\t\t\t.map(album => {\n\t\t\t\t\t\tif (album.props.collaborators === '') {\n\t\t\t\t\t\t\talbum.props.collaborators = []\n\t\t\t\t\t\t} else if (typeof album.props.collaborators.collaborator === 'object') {\n\t\t\t\t\t\t\tif (Array.isArray(album.props.collaborators.collaborator)) {\n\t\t\t\t\t\t\t\talbum.props.collaborators = album.props.collaborators.collaborator\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\talbum.props.collaborators = [album.props.collaborators.collaborator]\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\treturn album\n\t\t\t\t\t})\n\t\t\t\t\t.map(album => genFileInfo(album))\n\t\t\t\t\t.map(album => {\n\t\t\t\t\t\tconst dateRange = JSON.parse(album.dateRange?.replace(/&quot;/g, '\"') ?? '{}')\n\n\t\t\t\t\t\tif (dateRange.start === null) {\n\t\t\t\t\t\t\tdateRange.start = moment().unix()\n\t\t\t\t\t\t\tdateRange.end = moment().unix()\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tconst dateRangeFormated = {\n\t\t\t\t\t\t\tstartDate: moment.unix(dateRange.start).format('MMMM YYYY'),\n\t\t\t\t\t\t\tendDate: moment.unix(dateRange.end).format('MMMM YYYY'),\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif (dateRangeFormated.startDate === dateRangeFormated.endDate) {\n\t\t\t\t\t\t\treturn { ...album, date: dateRangeFormated.startDate }\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\treturn { ...album, date: this.t('photos', '{startDate} to {endDate}', dateRangeFormated) }\n\t\t\t\t\t\t}\n\t\t\t\t\t})\n\n\t\t\t\tthis.$store.dispatch('addAlbums', { albums })\n\t\t\t\tlogger.debug(`[FetchAlbumsMixin] Fetched ${albums.length} new files: `, albums)\n\t\t\t} catch (error) {\n\t\t\t\tif (error.response?.status === 404) {\n\t\t\t\t\tthis.errorFetchingAlbums = 404\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.errorFetchingAlbums = error\n\t\t\t\t}\n\t\t\t\tlogger.error(t('photos', 'Failed to fetch albums list.'), error)\n\t\t\t\tshowError(t('photos', 'Failed to fetch albums list.'))\n\t\t\t} finally {\n\t\t\t\tthis.loadingAlbums = false\n\t\t\t}\n\t\t},\n\t},\n}\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".album-form[data-v-33f82244]{display:flex;flex-direction:column;height:350px;padding:16px}.album-form .form-title[data-v-33f82244]{font-weight:bold}.album-form .form-subtitle[data-v-33f82244]{color:var(--color-text-lighter)}.album-form .form-inputs[data-v-33f82244]{flex-grow:1;justify-items:flex-end}.album-form .form-inputs input[data-v-33f82244]{width:100%}.album-form .form-inputs label[data-v-33f82244]{display:flex;margin-top:16px}.album-form .form-inputs label[data-v-33f82244] svg{margin-right:12px}.album-form .form-buttons[data-v-33f82244]{display:flex;justify-content:space-between}.album-form .form-buttons .left-buttons[data-v-33f82244],.album-form .form-buttons .right-buttons[data-v-33f82244]{display:flex}.album-form .form-buttons .right-buttons[data-v-33f82244]{justify-content:flex-end}.album-form .form-buttons button[data-v-33f82244]{margin-right:16px}.left-buttons[data-v-33f82244]{flex-grow:1}\", \"\",{\"version\":3,\"sources\":[\"webpack://./src/components/AlbumForm.vue\"],\"names\":[],\"mappings\":\"AAwOA,6BACC,YAAA,CACA,qBAAA,CACA,YAAA,CACA,YAAA,CAEA,yCACC,gBAAA,CAGD,4CACC,+BAAA,CAGD,0CACC,WAAA,CACA,sBAAA,CAEA,gDACC,UAAA,CAGD,gDACC,YAAA,CACA,eAAA,CAEA,qDACC,iBAAA,CAKH,2CACC,YAAA,CACA,6BAAA,CAEA,mHACC,YAAA,CAGD,0DACC,wBAAA,CAGD,kDACC,iBAAA,CAKH,+BACC,WAAA\",\"sourcesContent\":[\"$sizes: (\\\"400\\\": (\\\"count\\\": 3, \\\"marginTop\\\": 66, \\\"marginW\\\": 8), \\\"700\\\": (\\\"count\\\": 4, \\\"marginTop\\\": 66, \\\"marginW\\\": 8), \\\"1024\\\": (\\\"count\\\": 5, \\\"marginTop\\\": 66, \\\"marginW\\\": 44), \\\"1280\\\": (\\\"count\\\": 4, \\\"marginTop\\\": 66, \\\"marginW\\\": 44), \\\"1440\\\": (\\\"count\\\": 5, \\\"marginTop\\\": 88, \\\"marginW\\\": 66), \\\"1600\\\": (\\\"count\\\": 6, \\\"marginTop\\\": 88, \\\"marginW\\\": 66), \\\"2048\\\": (\\\"count\\\": 7, \\\"marginTop\\\": 88, \\\"marginW\\\": 66), \\\"2560\\\": (\\\"count\\\": 8, \\\"marginTop\\\": 88, \\\"marginW\\\": 88), \\\"3440\\\": (\\\"count\\\": 9, \\\"marginTop\\\": 88, \\\"marginW\\\": 88), \\\"max\\\": (\\\"count\\\": 10, \\\"marginTop\\\": 88, \\\"marginW\\\": 88));\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n.album-form {\\n\\tdisplay: flex;\\n\\tflex-direction: column;\\n\\theight: 350px;\\n\\tpadding: 16px;\\n\\n\\t.form-title {\\n\\t\\tfont-weight: bold;\\n\\t}\\n\\n\\t.form-subtitle {\\n\\t\\tcolor: var(--color-text-lighter);\\n\\t}\\n\\n\\t.form-inputs {\\n\\t\\tflex-grow: 1;\\n\\t\\tjustify-items: flex-end;\\n\\n\\t\\tinput {\\n\\t\\t\\twidth: 100%;\\n\\t\\t}\\n\\n\\t\\tlabel {\\n\\t\\t\\tdisplay: flex;\\n\\t\\t\\tmargin-top: 16px;\\n\\n\\t\\t\\t::v-deep svg {\\n\\t\\t\\t\\tmargin-right: 12px;\\n\\t\\t\\t}\\n\\t\\t}\\n\\t}\\n\\n\\t.form-buttons {\\n\\t\\tdisplay: flex;\\n\\t\\tjustify-content: space-between;\\n\\n\\t\\t.left-buttons, .right-buttons {\\n\\t\\t\\tdisplay: flex;\\n\\t\\t}\\n\\n\\t\\t.right-buttons {\\n\\t\\t\\tjustify-content: flex-end;\\n\\t\\t}\\n\\n\\t\\tbutton {\\n\\t\\t\\tmargin-right: 16px;\\n\\t\\t}\\n\\t}\\n}\\n\\n.left-buttons {\\n\\tflex-grow: 1;\\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, \".manage-collaborators[data-v-995bfdfc]{display:flex;flex-direction:column;padding:20px}.manage-collaborators__title[data-v-995bfdfc]{font-weight:bold}.manage-collaborators__subtitle[data-v-995bfdfc]{color:var(--color-text-lighter)}.manage-collaborators__public-link-button[data-v-995bfdfc]{margin:4px 0}.manage-collaborators__form[data-v-995bfdfc]{margin-top:4px 0;display:flex;flex-direction:column;height:500px}.manage-collaborators__form__input[data-v-995bfdfc]{flex-grow:1;justify-items:flex-end;position:relative}.manage-collaborators__form__input .magnify-icon[data-v-995bfdfc]{position:absolute;top:10px;left:8px;width:-webkit-fit-content;width:-moz-fit-content;width:fit-content}.manage-collaborators__form__input input[data-v-995bfdfc]{width:100%;padding-left:34px}.manage-collaborators__form__input .loader[data-v-995bfdfc]{position:absolute;top:-4px;right:4px;width:-webkit-fit-content;width:-moz-fit-content;width:fit-content}.manage-collaborators__form__input .loader[data-v-995bfdfc] .icon-loading::after{height:16px;width:16px}.manage-collaborators__form__selection[data-v-995bfdfc]{min-height:25px;padding:8px}.manage-collaborators__form__selection li[data-v-995bfdfc]{margin-right:4px;display:inline-block}.manage-collaborators__form__selection li .close-icon[data-v-995bfdfc]{cursor:pointer}.manage-collaborators__form__list__result[data-v-995bfdfc]{padding:8px;border-radius:100px;box-sizing:border-box}.manage-collaborators__form__list__result[data-v-995bfdfc],.manage-collaborators__form__list__result *[data-v-995bfdfc]{cursor:pointer}.manage-collaborators__form__list__result[data-v-995bfdfc]:hover,.manage-collaborators__form__list__result--selected[data-v-995bfdfc]{background:var(--color-background-dark)}.manage-collaborators .slot-buttons[data-v-995bfdfc]{display:flex;justify-content:flex-end}\", \"\",{\"version\":3,\"sources\":[\"webpack://./src/components/CollaboratorsSelectionForm.vue\"],\"names\":[],\"mappings\":\"AAiRA,uCACC,YAAA,CACA,qBAAA,CACA,YAAA,CAEA,8CACC,gBAAA,CAGD,iDACC,+BAAA,CAGD,2DACC,YAAA,CAGD,6CACC,gBAAA,CACA,YAAA,CACA,qBAAA,CACA,YAAA,CAEA,oDACC,WAAA,CACA,sBAAA,CACA,iBAAA,CAEA,kEACC,iBAAA,CACA,QAAA,CACA,QAAA,CACA,yBAAA,CAAA,sBAAA,CAAA,iBAAA,CAGD,0DACC,UAAA,CACA,iBAAA,CAGD,4DACC,iBAAA,CACA,QAAA,CACA,SAAA,CACA,yBAAA,CAAA,sBAAA,CAAA,iBAAA,CAEA,kFACC,WAAA,CACA,UAAA,CAKH,wDACC,eAAA,CACA,WAAA,CAEA,2DACC,gBAAA,CACA,oBAAA,CAEA,uEACC,cAAA,CAMF,2DACC,WAAA,CACA,mBAAA,CACA,qBAAA,CAEA,wHACC,cAAA,CAGD,sIACC,uCAAA,CAMJ,qDACC,YAAA,CACA,wBAAA\",\"sourcesContent\":[\"$sizes: (\\\"400\\\": (\\\"count\\\": 3, \\\"marginTop\\\": 66, \\\"marginW\\\": 8), \\\"700\\\": (\\\"count\\\": 4, \\\"marginTop\\\": 66, \\\"marginW\\\": 8), \\\"1024\\\": (\\\"count\\\": 5, \\\"marginTop\\\": 66, \\\"marginW\\\": 44), \\\"1280\\\": (\\\"count\\\": 4, \\\"marginTop\\\": 66, \\\"marginW\\\": 44), \\\"1440\\\": (\\\"count\\\": 5, \\\"marginTop\\\": 88, \\\"marginW\\\": 66), \\\"1600\\\": (\\\"count\\\": 6, \\\"marginTop\\\": 88, \\\"marginW\\\": 66), \\\"2048\\\": (\\\"count\\\": 7, \\\"marginTop\\\": 88, \\\"marginW\\\": 66), \\\"2560\\\": (\\\"count\\\": 8, \\\"marginTop\\\": 88, \\\"marginW\\\": 88), \\\"3440\\\": (\\\"count\\\": 9, \\\"marginTop\\\": 88, \\\"marginW\\\": 88), \\\"max\\\": (\\\"count\\\": 10, \\\"marginTop\\\": 88, \\\"marginW\\\": 88));\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n.manage-collaborators {\\n\\tdisplay: flex;\\n\\tflex-direction: column;\\n\\tpadding: 20px;\\n\\n\\t&__title {\\n\\t\\tfont-weight: bold;\\n\\t}\\n\\n\\t&__subtitle {\\n\\t\\tcolor: var(--color-text-lighter);\\n\\t}\\n\\n\\t&__public-link-button {\\n\\t\\tmargin: 4px 0;\\n\\t}\\n\\n\\t&__form {\\n\\t\\tmargin-top: 4px 0;\\n\\t\\tdisplay: flex;\\n\\t\\tflex-direction: column;\\n\\t\\theight: 500px;\\n\\n\\t\\t&__input {\\n\\t\\t\\tflex-grow: 1;\\n\\t\\t\\tjustify-items: flex-end;\\n\\t\\t\\tposition: relative;\\n\\n\\t\\t\\t.magnify-icon {\\n\\t\\t\\t\\tposition: absolute;\\n\\t\\t\\t\\ttop: 10px;\\n\\t\\t\\t\\tleft: 8px;\\n\\t\\t\\t\\twidth: fit-content;\\n\\t\\t\\t}\\n\\n\\t\\t\\tinput {\\n\\t\\t\\t\\twidth: 100%;\\n\\t\\t\\t\\tpadding-left: 34px;\\n\\t\\t\\t}\\n\\n\\t\\t\\t.loader {\\n\\t\\t\\t\\tposition: absolute;\\n\\t\\t\\t\\ttop: -4px;\\n\\t\\t\\t\\tright: 4px;\\n\\t\\t\\t\\twidth: fit-content;\\n\\n\\t\\t\\t\\t::v-deep .icon-loading::after {\\n\\t\\t\\t\\t\\theight: 16px;\\n\\t\\t\\t\\t\\twidth: 16px;\\n\\t\\t\\t\\t}\\n\\t\\t\\t}\\n\\t\\t}\\n\\n\\t\\t&__selection {\\n\\t\\t\\tmin-height: 25px;\\n\\t\\t\\tpadding: 8px;\\n\\n\\t\\t\\tli {\\n\\t\\t\\t\\tmargin-right: 4px;\\n\\t\\t\\t\\tdisplay: inline-block;\\n\\n\\t\\t\\t\\t.close-icon {\\n\\t\\t\\t\\t\\tcursor: pointer;\\n\\t\\t\\t\\t}\\n\\t\\t\\t}\\n\\t\\t}\\n\\n\\t\\t&__list {\\n\\t\\t\\t&__result {\\n\\t\\t\\t\\tpadding: 8px;\\n\\t\\t\\t\\tborder-radius: 100px;\\n\\t\\t\\t\\tbox-sizing: border-box;\\n\\n\\t\\t\\t\\t&, & * {\\n\\t\\t\\t\\t\\tcursor: pointer;\\n\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\t&:hover, &--selected {\\n\\t\\t\\t\\t\\tbackground: var(--color-background-dark);\\n\\t\\t\\t\\t}\\n\\t\\t\\t}\\n\\t\\t}\\n\\t}\\n\\n\\t.slot-buttons {\\n\\t\\tdisplay: flex;\\n\\t\\tjustify-content: flex-end;\\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 plus-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=\"M19,13H13V19H11V13H5V11H11V5H13V11H19V13Z\">\n <title v-if=\"title\">{{ title }}</title>\n </path>\n </svg>\n </span>\n</template>\n\n<script>\nexport default {\n name: \"PlusIcon\",\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!./Plus.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../vue-loader/lib/index.js??vue-loader-options!./Plus.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./Plus.vue?vue&type=template&id=968bec46&\"\nimport script from \"./Plus.vue?vue&type=script&lang=js&\"\nexport * from \"./Plus.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('span',_vm._b({staticClass:\"material-design-icon plus-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\":\"M19,13H13V19H11V13H5V11H11V5H13V11H19V13Z\"}},[(_vm.title)?_c('title',[_vm._v(_vm._s(_vm.title))]):_vm._e()])])])}\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 send-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,21L23,12L2,3V10L17,12L2,14V21Z\">\n <title v-if=\"title\">{{ title }}</title>\n </path>\n </svg>\n </span>\n</template>\n\n<script>\nexport default {\n name: \"SendIcon\",\n 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!./Send.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../vue-loader/lib/index.js??vue-loader-options!./Send.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./Send.vue?vue&type=template&id=46f29e66&\"\nimport script from \"./Send.vue?vue&type=script&lang=js&\"\nexport * from \"./Send.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('span',_vm._b({staticClass:\"material-design-icon send-icon\",attrs:{\"aria-hidden\":!_vm.title,\"aria-label\":_vm.title,\"role\":\"img\"},on:{\"click\":function($event){return _vm.$emit('click', $event)}}},'span',_vm.$attrs,false),[_c('svg',{staticClass:\"material-design-icon__svg\",attrs:{\"fill\":_vm.fillColor,\"width\":_vm.size,\"height\":_vm.size,\"viewBox\":\"0 0 24 24\"}},[_c('path',{attrs:{\"d\":\"M2,21L23,12L2,3V10L17,12L2,14V21Z\"}},[(_vm.title)?_c('title',[_vm._v(_vm._s(_vm.title))]):_vm._e()])])])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return (!_vm.showCollaboratorView)?_c('form',{staticClass:\"album-form\",on:{\"submit\":function($event){$event.preventDefault();return _vm.submit.apply(null, arguments)}}},[_c('div',{staticClass:\"form-inputs\"},[_c('NcTextField',{ref:\"nameInput\",attrs:{\"value\":_vm.albumName,\"type\":\"text\",\"name\":\"name\",\"required\":true,\"autofocus\":\"true\",\"placeholder\":_vm.t('photos', 'Name of the album')},on:{\"update:value\":function($event){_vm.albumName=$event}}}),_vm._v(\" \"),_c('label',[_c('MapMarker'),_c('NcTextField',{attrs:{\"value\":_vm.albumLocation,\"name\":\"location\",\"type\":\"text\",\"placeholder\":_vm.t('photos', 'Location of the album')},on:{\"update:value\":function($event){_vm.albumLocation=$event}}})],1)],1),_vm._v(\" \"),_c('div',{staticClass:\"form-buttons\"},[_c('span',{staticClass:\"left-buttons\"},[(_vm.displayBackButton)?_c('NcButton',{attrs:{\"aria-label\":_vm.t('photos', 'Go back to the previous view.'),\"type\":\"tertiary\"},on:{\"click\":_vm.back}},[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_vm.t('photos', 'Back'))+\"\\n\\t\\t\\t\")]):_vm._e()],1),_vm._v(\" \"),_c('span',{staticClass:\"right-buttons\"},[(!_vm.editMode)?_c('NcButton',{attrs:{\"aria-label\":_vm.t('photos', 'Go to the add collaborators view.'),\"type\":\"secondary\",\"disabled\":_vm.albumName.trim() === '' || _vm.loading},on:{\"click\":function($event){_vm.showCollaboratorView = true}},scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [_c('AccountMultiplePlus')]},proxy:true}],null,false,1531126728)},[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_vm.t('photos', 'Add collaborators'))+\"\\n\\t\\t\\t\")]):_vm._e(),_vm._v(\" \"),_c('NcButton',{attrs:{\"aria-label\":_vm.editMode ? _vm.t('photos', 'Save.') : _vm.t('photos', 'Create the album.'),\"type\":\"primary\",\"disabled\":_vm.albumName === '' || _vm.loading},on:{\"click\":function($event){return _vm.submit()}},scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [(_vm.loading)?_c('NcLoadingIcon'):_c('Send')]},proxy:true}],null,false,3914512768)},[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_vm.editMode ? _vm.t('photos', 'Save') : _vm.t('photos', 'Create album'))+\"\\n\\t\\t\\t\")])],1)])]):_c('CollaboratorsSelectionForm',{attrs:{\"album-name\":_vm.albumName,\"allow-public-link\":false},scopedSlots:_vm._u([{key:\"default\",fn:function(ref){\nvar collaborators = ref.collaborators;\nreturn [_c('span',{staticClass:\"left-buttons\"},[_c('NcButton',{attrs:{\"aria-label\":_vm.t('photos', 'Back to the new album form.'),\"type\":\"tertiary\"},on:{\"click\":function($event){_vm.showCollaboratorView = false}}},[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_vm.t('photos', 'Back'))+\"\\n\\t\\t\\t\")])],1),_vm._v(\" \"),_c('span',{staticClass:\"right-buttons\"},[_c('NcButton',{attrs:{\"aria-label\":_vm.editMode ? _vm.t('photos', 'Save.') : _vm.t('photos', 'Create the album.'),\"type\":\"primary\",\"disabled\":_vm.albumName.trim() === '' || _vm.loading},on:{\"click\":function($event){return _vm.submit(collaborators)}},scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [(_vm.loading)?_c('NcLoadingIcon'):_c('Send')]},proxy:true}],null,true)},[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_vm.editMode ? _vm.t('photos', 'Save') : _vm.t('photos', 'Create album'))+\"\\n\\t\\t\\t\")])],1)]}}])})}\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 account-multiple-plus-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=\"M19 17V19H7V17S7 13 13 13 19 17 19 17M16 8A3 3 0 1 0 13 11A3 3 0 0 0 16 8M19.2 13.06A5.6 5.6 0 0 1 21 17V19H24V17S24 13.55 19.2 13.06M18 5A2.91 2.91 0 0 0 17.11 5.14A5 5 0 0 1 17.11 10.86A2.91 2.91 0 0 0 18 11A3 3 0 0 0 18 5M8 10H5V7H3V10H0V12H3V15H5V12H8Z\">\n <title v-if=\"title\">{{ title }}</title>\n </path>\n </svg>\n </span>\n</template>\n\n<script>\nexport default {\n name: \"AccountMultiplePlusIcon\",\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!./AccountMultiplePlus.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../vue-loader/lib/index.js??vue-loader-options!./AccountMultiplePlus.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./AccountMultiplePlus.vue?vue&type=template&id=7e4925e6&\"\nimport script from \"./AccountMultiplePlus.vue?vue&type=script&lang=js&\"\nexport * from \"./AccountMultiplePlus.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('span',_vm._b({staticClass:\"material-design-icon account-multiple-plus-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\":\"M19 17V19H7V17S7 13 13 13 19 17 19 17M16 8A3 3 0 1 0 13 11A3 3 0 0 0 16 8M19.2 13.06A5.6 5.6 0 0 1 21 17V19H24V17S24 13.55 19.2 13.06M18 5A2.91 2.91 0 0 0 17.11 5.14A5 5 0 0 1 17.11 10.86A2.91 2.91 0 0 0 18 11A3 3 0 0 0 18 5M8 10H5V7H3V10H0V12H3V15H5V12H8Z\"}},[(_vm.title)?_c('title',[_vm._v(_vm._s(_vm.title))]):_vm._e()])])])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<!--\n - @copyright Copyright (c) 2022 Louis Chemineau <louis@chmn.me>\n -\n - @author Louis Chemineau <louis@chmn.me>\n -\n - @license AGPL-3.0-or-later\n -\n - This program is free software: you can redistribute it and/or modify\n - it under the terms of the GNU Affero General Public License as\n - published by the Free Software Foundation, either version 3 of the\n - License, or (at your option) any later version.\n -\n - This program is distributed in the hope that it will be useful,\n - but WITHOUT ANY WARRANTY; without even the implied warranty of\n - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n - GNU Affero General Public License for more details.\n -\n - You should have received a copy of the GNU Affero General Public License\n - along with this program. If not, see <http://www.gnu.org/licenses/>.\n -\n -->\n<template>\n\t<form v-if=\"!showCollaboratorView\" class=\"album-form\" @submit.prevent=\"submit\">\n\t\t<div class=\"form-inputs\">\n\t\t\t<NcTextField ref=\"nameInput\"\n\t\t\t\t:value.sync=\"albumName\"\n\t\t\t\ttype=\"text\"\n\t\t\t\tname=\"name\"\n\t\t\t\t:required=\"true\"\n\t\t\t\tautofocus=\"true\"\n\t\t\t\t:placeholder=\"t('photos', 'Name of the album')\" />\n\t\t\t<label>\n\t\t\t\t<MapMarker /><NcTextField :value.sync=\"albumLocation\"\n\t\t\t\t\tname=\"location\"\n\t\t\t\t\ttype=\"text\"\n\t\t\t\t\t:placeholder=\"t('photos', 'Location of the album')\" />\n\t\t\t</label>\n\t\t</div>\n\t\t<div class=\"form-buttons\">\n\t\t\t<span class=\"left-buttons\">\n\t\t\t\t<NcButton v-if=\"displayBackButton\"\n\t\t\t\t\t:aria-label=\"t('photos', 'Go back to the previous view.')\"\n\t\t\t\t\ttype=\"tertiary\"\n\t\t\t\t\t@click=\"back\">\n\t\t\t\t\t{{ t('photos', 'Back') }}\n\t\t\t\t</NcButton>\n\t\t\t</span>\n\t\t\t<span class=\"right-buttons\">\n\t\t\t\t<NcButton v-if=\"!editMode\"\n\t\t\t\t\t:aria-label=\"t('photos', 'Go to the add collaborators view.')\"\n\t\t\t\t\ttype=\"secondary\"\n\t\t\t\t\t:disabled=\"albumName.trim() === '' || loading\"\n\t\t\t\t\t@click=\"showCollaboratorView = true\">\n\t\t\t\t\t<template #icon>\n\t\t\t\t\t\t<AccountMultiplePlus />\n\t\t\t\t\t</template>\n\t\t\t\t\t{{ t('photos', 'Add collaborators') }}\n\t\t\t\t</NcButton>\n\t\t\t\t<NcButton :aria-label=\"editMode ? t('photos', 'Save.') : t('photos', 'Create the album.')\"\n\t\t\t\t\ttype=\"primary\"\n\t\t\t\t\t:disabled=\"albumName === '' || loading\"\n\t\t\t\t\t@click=\"submit()\">\n\t\t\t\t\t<template #icon>\n\t\t\t\t\t\t<NcLoadingIcon v-if=\"loading\" />\n\t\t\t\t\t\t<Send v-else />\n\t\t\t\t\t</template>\n\t\t\t\t\t{{ editMode ? t('photos', 'Save') : t('photos', 'Create album') }}\n\t\t\t\t</NcButton>\n\t\t\t</span>\n\t\t</div>\n\t</form>\n\t<CollaboratorsSelectionForm v-else\n\t\t:album-name=\"albumName\"\n\t\t:allow-public-link=\"false\">\n\t\t<template slot-scope=\"{collaborators}\">\n\t\t\t<span class=\"left-buttons\">\n\t\t\t\t<NcButton :aria-label=\"t('photos', 'Back to the new album form.')\"\n\t\t\t\t\ttype=\"tertiary\"\n\t\t\t\t\t@click=\"showCollaboratorView = false\">\n\t\t\t\t\t{{ t('photos', 'Back') }}\n\t\t\t\t</NcButton>\n\t\t\t</span>\n\t\t\t<span class=\"right-buttons\">\n\t\t\t\t<NcButton :aria-label=\"editMode ? t('photos', 'Save.') : t('photos', 'Create the album.')\"\n\t\t\t\t\ttype=\"primary\"\n\t\t\t\t\t:disabled=\"albumName.trim() === '' || loading\"\n\t\t\t\t\t@click=\"submit(collaborators)\">\n\t\t\t\t\t<template #icon>\n\t\t\t\t\t\t<NcLoadingIcon v-if=\"loading\" />\n\t\t\t\t\t\t<Send v-else />\n\t\t\t\t\t</template>\n\t\t\t\t\t{{ editMode ? t('photos', 'Save') : t('photos', 'Create album') }}\n\t\t\t\t</NcButton>\n\t\t\t</span>\n\t\t</template>\n\t</CollaboratorsSelectionForm>\n</template>\n<script>\nimport { mapActions } from 'vuex'\nimport MapMarker from 'vue-material-design-icons/MapMarker'\nimport AccountMultiplePlus from 'vue-material-design-icons/AccountMultiplePlus'\nimport Send from 'vue-material-design-icons/Send'\n\nimport { NcButton, NcLoadingIcon, NcTextField } from '@nextcloud/vue'\nimport moment from '@nextcloud/moment'\n\nimport CollaboratorsSelectionForm from './CollaboratorsSelectionForm.vue'\n\nexport default {\n\tname: 'AlbumForm',\n\n\tcomponents: {\n\t\tMapMarker,\n\t\tAccountMultiplePlus,\n\t\tSend,\n\t\tNcButton,\n\t\tNcLoadingIcon,\n\t\tNcTextField,\n\t\tCollaboratorsSelectionForm,\n\t},\n\n\tprops: {\n\t\talbum: {\n\t\t\ttype: Object,\n\t\t\tdefault: null,\n\t\t},\n\t\tdisplayBackButton: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: false,\n\t\t},\n\t},\n\n\tdata() {\n\t\treturn {\n\t\t\tshowCollaboratorView: false,\n\t\t\talbumName: '',\n\t\t\talbumLocation: '',\n\t\t\tloading: false,\n\t\t}\n\t},\n\n\tcomputed: {\n\t\teditMode() {\n\t\t\treturn this.album !== null\n\t\t},\n\t},\n\n\tmounted() {\n\t\tif (this.editMode) {\n\t\t\tthis.albumName = this.album.basename\n\t\t\tthis.albumLocation = this.album.location\n\t\t}\n\n\t\tthis.$nextTick(() => {\n\t\t\tthis.$refs.nameInput.$el.getElementsByTagName('input')[0].focus()\n\t\t})\n\t},\n\n\tmethods: {\n\t\t...mapActions(['createAlbum', 'renameAlbum', 'updateAlbum']),\n\n\t\tsubmit(collaborators = []) {\n\t\t\tif (this.albumName === '' || this.loading) {\n\t\t\t\treturn\n\t\t\t}\n\n\t\t\tif (this.editMode) {\n\t\t\t\tthis.handleUpdateAlbum()\n\t\t\t} else {\n\t\t\t\tthis.handleCreateAlbum(collaborators)\n\t\t\t}\n\t\t},\n\n\t\tasync handleCreateAlbum(collaborators = []) {\n\t\t\ttry {\n\t\t\t\tthis.loading = true\n\t\t\t\tlet album = await this.createAlbum({\n\t\t\t\t\talbum: {\n\t\t\t\t\t\tbasename: this.albumName,\n\t\t\t\t\t\tnbItems: 0,\n\t\t\t\t\t\tlocation: this.albumLocation,\n\t\t\t\t\t\tlastPhoto: -1,\n\t\t\t\t\t\tdate: moment().format('MMMM YYYY'),\n\t\t\t\t\t\tcollaborators,\n\t\t\t\t\t},\n\t\t\t\t})\n\n\t\t\t\tif (this.albumLocation !== '' || collaborators.length !== 0) {\n\t\t\t\t\talbum = await this.updateAlbum(\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\talbumName: this.albumName,\n\t\t\t\t\t\t\tproperties: {\n\t\t\t\t\t\t\t\tlocation: this.albumLocation,\n\t\t\t\t\t\t\t\tcollaborators,\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t})\n\t\t\t\t}\n\n\t\t\t\tthis.$emit('done', { album })\n\t\t\t} finally {\n\t\t\t\tthis.loading = false\n\t\t\t}\n\t\t},\n\n\t\tasync handleUpdateAlbum() {\n\t\t\ttry {\n\t\t\t\tthis.loading = true\n\n\t\t\t\tlet album = { ...this.album }\n\n\t\t\t\tif (this.album.basename !== this.albumName) {\n\t\t\t\t\talbum = await this.renameAlbum({ currentAlbumName: this.album.basename, newAlbumName: this.albumName })\n\t\t\t\t}\n\n\t\t\t\tif (this.album.location !== this.albumLocation) {\n\t\t\t\t\talbum.location = await this.updateAlbum({ albumName: this.albumName, properties: { location: this.albumLocation } })\n\t\t\t\t}\n\n\t\t\t\tthis.$emit('done', { album })\n\t\t\t} finally {\n\t\t\t\tthis.loading = false\n\t\t\t}\n\t\t},\n\n\t\tback() {\n\t\t\tthis.$emit('back')\n\t\t},\n\t},\n}\n</script>\n<style lang=\"scss\" scoped>\n.album-form {\n\tdisplay: flex;\n\tflex-direction: column;\n\theight: 350px;\n\tpadding: 16px;\n\n\t.form-title {\n\t\tfont-weight: bold;\n\t}\n\n\t.form-subtitle {\n\t\tcolor: var(--color-text-lighter);\n\t}\n\n\t.form-inputs {\n\t\tflex-grow: 1;\n\t\tjustify-items: flex-end;\n\n\t\tinput {\n\t\t\twidth: 100%;\n\t\t}\n\n\t\tlabel {\n\t\t\tdisplay: flex;\n\t\t\tmargin-top: 16px;\n\n\t\t\t::v-deep svg {\n\t\t\t\tmargin-right: 12px;\n\t\t\t}\n\t\t}\n\t}\n\n\t.form-buttons {\n\t\tdisplay: flex;\n\t\tjustify-content: space-between;\n\n\t\t.left-buttons, .right-buttons {\n\t\t\tdisplay: flex;\n\t\t}\n\n\t\t.right-buttons {\n\t\t\tjustify-content: flex-end;\n\t\t}\n\n\t\tbutton {\n\t\t\tmargin-right: 16px;\n\t\t}\n\t}\n}\n\n.left-buttons {\n\tflex-grow: 1;\n}\n</style>\n","import mod from \"-!../../node_modules/babel-loader/lib/index.js!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AlbumForm.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!./AlbumForm.vue?vue&type=script&lang=js&\"","\n import API from \"!../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../node_modules/css-loader/dist/cjs.js!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/dist/cjs.js!../../node_modules/sass-loader/dist/cjs.js??clonedRuleSet-2[0].rules[0].use[3]!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AlbumForm.vue?vue&type=style&index=0&id=33f82244&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!./AlbumForm.vue?vue&type=style&index=0&id=33f82244&lang=scss&scoped=true&\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./AlbumForm.vue?vue&type=template&id=33f82244&scoped=true&\"\nimport script from \"./AlbumForm.vue?vue&type=script&lang=js&\"\nexport * from \"./AlbumForm.vue?vue&type=script&lang=js&\"\nimport style0 from \"./AlbumForm.vue?vue&type=style&index=0&id=33f82244&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 \"33f82244\",\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 magnify-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=\"M9.5,3A6.5,6.5 0 0,1 16,9.5C16,11.11 15.41,12.59 14.44,13.73L14.71,14H15.5L20.5,19L19,20.5L14,15.5V14.71L13.73,14.44C12.59,15.41 11.11,16 9.5,16A6.5,6.5 0 0,1 3,9.5A6.5,6.5 0 0,1 9.5,3M9.5,5C7,5 5,7 5,9.5C5,12 7,14 9.5,14C12,14 14,12 14,9.5C14,7 12,5 9.5,5Z\">\n <title v-if=\"title\">{{ title }}</title>\n </path>\n </svg>\n </span>\n</template>\n\n<script>\nexport default {\n name: \"MagnifyIcon\",\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!./Magnify.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../vue-loader/lib/index.js??vue-loader-options!./Magnify.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./Magnify.vue?vue&type=template&id=d480a606&\"\nimport script from \"./Magnify.vue?vue&type=script&lang=js&\"\nexport * from \"./Magnify.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('span',_vm._b({staticClass:\"material-design-icon magnify-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\":\"M9.5,3A6.5,6.5 0 0,1 16,9.5C16,11.11 15.41,12.59 14.44,13.73L14.71,14H15.5L20.5,19L19,20.5L14,15.5V14.71L13.73,14.44C12.59,15.41 11.11,16 9.5,16A6.5,6.5 0 0,1 3,9.5A6.5,6.5 0 0,1 9.5,3M9.5,5C7,5 5,7 5,9.5C5,12 7,14 9.5,14C12,14 14,12 14,9.5C14,7 12,5 9.5,5Z\"}},[(_vm.title)?_c('title',[_vm._v(_vm._s(_vm.title))]):_vm._e()])])])}\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 content-copy-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=\"M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z\">\n <title v-if=\"title\">{{ title }}</title>\n </path>\n </svg>\n </span>\n</template>\n\n<script>\nexport default {\n name: \"ContentCopyIcon\",\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!./ContentCopy.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../vue-loader/lib/index.js??vue-loader-options!./ContentCopy.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./ContentCopy.vue?vue&type=template&id=00bbfaf7&\"\nimport script from \"./ContentCopy.vue?vue&type=script&lang=js&\"\nexport * from \"./ContentCopy.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('span',_vm._b({staticClass:\"material-design-icon content-copy-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\":\"M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z\"}},[(_vm.title)?_c('title',[_vm._v(_vm._s(_vm.title))]):_vm._e()])])])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<!--\n - @copyright Copyright (c) 2022 Louis Chemineau <louis@chmn.me>\n -\n - @author Louis Chemineau <louis@chmn.me>\n -\n - @license AGPL-3.0-or-later\n -\n - This program is free software: you can redistribute it and/or modify\n - it under the terms of the GNU Affero General Public License as\n - published by the Free Software Foundation, either version 3 of the\n - License, or (at your option) any later version.\n -\n - This program is distributed in the hope that it will be useful,\n - but WITHOUT ANY WARRANTY; without even the implied warranty of\n - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n - GNU Affero General Public License for more details.\n -\n - You should have received a copy of the GNU Affero General Public License\n - along with this program. If not, see <http://www.gnu.org/licenses/>.\n -\n -->\n<template>\n\t<div class=\"manage-collaborators\">\n\t\t<h2 class=\"manage-collaborators__title\">\n\t\t\t{{ t('photos', 'Add collaborators') }}\n\t\t</h2>\n\t\t<div class=\"manage-collaborators__subtitle\">\n\t\t\t{{ t('photos', 'Add users or group who can edit your album') }}\n\t\t</div>\n\n\t\t<template v-if=\"allowPublicLink\">\n\t\t\t<NcButton v-if=\"publicLink\"\n\t\t\t\tclass=\"manage-collaborators__public-link-button\"\n\t\t\t\ttype=\"tertiary-no-background\"\n\t\t\t\t@click=\"copyPublicLink\">\n\t\t\t\t<template v-if=\"publicLinkCopied\">\n\t\t\t\t\t{{ t('photos', 'Public link copied!') }}\n\t\t\t\t</template>\n\t\t\t\t<template v-else>\n\t\t\t\t\t{{ t('photos', 'Copy public link') }}\n\t\t\t\t</template>\n\t\t\t\t<template #icon>\n\t\t\t\t\t<Check v-if=\"publicLinkCopied\" />\n\t\t\t\t\t<ContentCopy v-else />\n\t\t\t\t</template>\n\t\t\t</NcButton>\n\t\t\t<NcButton v-else\n\t\t\t\tclass=\"manage-collaborators__public-link-button\"\n\t\t\t\ttype=\"tertiary-no-background\"\n\t\t\t\t@click=\"createPublicLinkForAlbum\">\n\t\t\t\t{{ t('photos', 'Share this album via link') }}\n\t\t\t</NcButton>\n\t\t</template>\n\n\t\t<form class=\"manage-collaborators__form\" @submit.prevent>\n\t\t\t<label class=\"manage-collaborators__form__input\">\n\t\t\t\t<Magnify :size=\"20\" />\n\t\t\t\t<input v-model=\"searchText\"\n\t\t\t\t\ttype=\"search\"\n\t\t\t\t\tname=\"search\"\n\t\t\t\t\t:aria-label=\"t('photos', 'Search for collaborators')\"\n\t\t\t\t\taria-autocomplete=\"list\"\n\t\t\t\t\t:aria-controls=\"`manage-collaborators__form__selection-${randomId} manage-collaborators__form__list-${randomId}`\"\n\t\t\t\t\t:placeholder=\"t('photos', 'Search users or groups')\"\n\t\t\t\t\t@input=\"searchCollaborators\">\n\t\t\t\t<NcLoadingIcon v-if=\"loadingCollaborators\" />\n\t\t\t</label>\n\n\t\t\t<ul class=\"manage-collaborators__form__selection\">\n\t\t\t\t<li v-for=\"collaboratorKey in selectedCollaboratorsKey\" :key=\"collaboratorKey\">\n\t\t\t\t\t<NcUserBubble :user=\"availableCollaborators[collaboratorKey].source === 'users' ? availableCollaborators[collaboratorKey].id : undefined\"\n\t\t\t\t\t\t:display-name=\"availableCollaborators[collaboratorKey].label\">\n\t\t\t\t\t\t<template slot=\"title\">\n\t\t\t\t\t\t\t<Close :size=\"20\"\n\t\t\t\t\t\t\t\trole=\"button\"\n\t\t\t\t\t\t\t\t:aria-label=\"t('photos', 'Remove {collaboratorLabel} from the collaborators list', {collaboratorLabel: availableCollaborators[collaboratorKey].label})\"\n\t\t\t\t\t\t\t\t@click=\"unselectEntity(collaboratorKey)\" />\n\t\t\t\t\t\t</template>\n\t\t\t\t\t</NcUserBubble>\n\t\t\t\t</li>\n\t\t\t</ul>\n\n\t\t\t<VirtualScrolling class=\"manage-collaborators__form__list\"\n\t\t\t\t:rows=\"vsItems\">\n\t\t\t\t<ul :id=\"`manage-collaborators__form__list-${randomId}`\" slot-scope=\"{renderedRows}\">\n\t\t\t\t\t<li v-for=\"collaborator of renderedRows\"\n\t\t\t\t\t\t:key=\"collaborator.key\"\n\t\t\t\t\t\t:style=\"{height: `${collaborator.height}px`}\">\n\t\t\t\t\t\t<NcListItemIcon :id=\"availableCollaborators[collaborator.key].id\"\n\t\t\t\t\t\t\tclass=\"manage-collaborators__form__list__result\"\n\t\t\t\t\t\t\t:class=\"{'manage-collaborators__form__list__result--selected': collaborator.key in selectedCollaboratorsKey}\"\n\t\t\t\t\t\t\t:title=\"availableCollaborators[collaborator.key].id\"\n\t\t\t\t\t\t\t:search=\"searchText\"\n\t\t\t\t\t\t\t:display-name=\"availableCollaborators[collaborator.key].label\"\n\t\t\t\t\t\t\t:is-selected=\"collaborator.key in selectedCollaboratorsKey\"\n\t\t\t\t\t\t\t:aria-label=\"t('photos', 'Add {collaboratorLabel} to the collaborators list', {collaboratorLabel: availableCollaborators[collaborator.key].label})\"\n\t\t\t\t\t\t\t@click=\"selectEntity(collaborator.key)\" />\n\t\t\t\t\t</li>\n\t\t\t\t</ul>\n\t\t\t</VirtualScrolling>\n\t\t</form>\n\n\t\t<div class=\"slot-buttons\">\n\t\t\t<slot :collaborators=\"selectedCollaborators\" />\n\t\t</div>\n\t</div>\n</template>\n<script>\nimport Magnify from 'vue-material-design-icons/Magnify'\nimport ContentCopy from 'vue-material-design-icons/ContentCopy'\nimport Check from 'vue-material-design-icons/Check'\nimport Close from 'vue-material-design-icons/Close'\n\nimport axios from '@nextcloud/axios'\nimport { showError } from '@nextcloud/dialogs'\nimport { getCurrentUser } from '@nextcloud/auth'\nimport { generateOcsUrl } from '@nextcloud/router'\nimport { NcButton, NcUserBubble, NcListItemIcon, NcLoadingIcon } from '@nextcloud/vue'\n\nimport VirtualScrolling from './VirtualScrolling.vue'\nimport logger from '../services/logger.js'\n\nconst SHARE = {\n\tTYPE: {\n\t\tUSER: 0,\n\t\tGROUP: 1,\n\t\tEMAIL: 4,\n\t\tREMOTE: 6,\n\t\tCIRCLE: 7,\n\t},\n}\n\nexport default {\n\tname: 'CollaboratorsSelectionForm',\n\n\tcomponents: {\n\t\tContentCopy,\n\t\tMagnify,\n\t\tClose,\n\t\tCheck,\n\t\tVirtualScrolling,\n\t\tNcLoadingIcon,\n\t\tNcButton,\n\t\tNcListItemIcon,\n\t\tNcUserBubble,\n\t},\n\n\tprops: {\n\t\talbumName: {\n\t\t\ttype: String,\n\t\t\trequired: true,\n\t\t},\n\n\t\tcollaborators: {\n\t\t\ttype: Array,\n\t\t\tdefault: () => [],\n\t\t},\n\n\t\tpublicLink: {\n\t\t\ttype: String,\n\t\t\tdefault: '',\n\t\t},\n\n\t\tallowPublicLink: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: true,\n\t\t},\n\t},\n\n\tdata() {\n\t\treturn {\n\t\t\tsearchText: '',\n\t\t\tavailableCollaborators: {},\n\t\t\tselectedCollaboratorsKey: [],\n\t\t\tcurrentSearchResults: [],\n\t\t\tloadingCollaborators: false,\n\t\t\trandomId: Math.random().toString().substring(2, 10),\n\t\t\tpublicLinkCopied: false,\n\t\t}\n\t},\n\n\tcomputed: {\n\t\t/**\n\t\t * @return {string[]}\n\t\t */\n\t\tvsItems() {\n\t\t\treturn this.currentSearchResults\n\t\t\t\t.filter(({ id }) => id !== getCurrentUser().uid)\n\t\t\t\t.map(({ source, id }) => `${source}:${id}`)\n\t\t\t\t.filter(key => !this.selectedCollaboratorsKey.includes(key))\n\t\t\t\t.map((key) => ({ key, height: 48 }))\n\t\t},\n\n\t\t/**\n\t\t * @return {object[]}\n\t\t */\n\t\tselectedCollaborators() {\n\t\t\treturn this.selectedCollaboratorsKey.map((collaboratorKey) => this.availableCollaborators[collaboratorKey])\n\t\t},\n\t},\n\n\tmounted() {\n\t\tthis.searchCollaborators()\n\t\tthis.selectedCollaboratorsKey = this.collaborators.map(({ source, id }) => `${source}:${id}`)\n\t\tthis.availableCollaborators = {\n\t\t\t...this.availableCollaborators,\n\t\t\t...this.collaborators\n\t\t\t\t.reduce((collaborators, collaborator) => ({ ...collaborators, [`${collaborator.source}:${collaborator.id}`]: collaborator }), {}),\n\t\t}\n\t},\n\n\tmethods: {\n\t\t/**\n\t\t * Fetch possible collaborators.\n\t\t */\n\t\tasync searchCollaborators() {\n\t\t\ttry {\n\t\t\t\tthis.loadingCollaborators = true\n\t\t\t\tconst response = await axios.get(generateOcsUrl('core/autocomplete/get'), {\n\t\t\t\t\tparams: {\n\t\t\t\t\t\tsearch: this.searchText,\n\t\t\t\t\t\titemType: 'share-recipients',\n\t\t\t\t\t\tshareTypes: [\n\t\t\t\t\t\t\tSHARE.TYPE.USER,\n\t\t\t\t\t\t\tSHARE.TYPE.GROUP,\n\t\t\t\t\t\t],\n\t\t\t\t\t},\n\t\t\t\t})\n\n\t\t\t\tthis.currentSearchResults = response.data.ocs.data\n\t\t\t\tthis.availableCollaborators = {\n\t\t\t\t\t...this.availableCollaborators,\n\t\t\t\t\t...response.data.ocs.data\n\t\t\t\t\t\t.reduce((collaborators, collaborator) => ({ ...collaborators, [`${collaborator.source}:${collaborator.id}`]: collaborator }), {}),\n\t\t\t\t}\n\t\t\t} catch (error) {\n\t\t\t\tthis.errorFetchingCollaborators = error\n\t\t\t\tlogger.error(t('photos', 'Failed to fetch collaborators list.'), error)\n\t\t\t\tshowError(t('photos', 'Failed to fetch collaborators list.'))\n\t\t\t} finally {\n\t\t\t\tthis.loadingCollaborators = false\n\t\t\t}\n\t\t},\n\n\t\tasync createPublicLinkForAlbum() {\n\t\t\treturn axios.get(generateOcsUrl(`apps/photos/createPublicLink/${this.albumName}`))\n\t\t},\n\n\t\tasync copyPublicLink() {\n\t\t\tawait navigator.clipboard.writeText(this.publicLink)\n\t\t\tthis.publicLinkCopied = true\n\t\t\tsetTimeout(() => {\n\t\t\t\tthis.publicLinkCopied = false\n\t\t\t}, 10000)\n\t\t},\n\n\t\tselectEntity(collaboratorKey) {\n\t\t\tif (this.selectedCollaboratorsKey.includes(collaboratorKey)) {\n\t\t\t\treturn\n\t\t\t}\n\n\t\t\tthis.selectedCollaboratorsKey.push(collaboratorKey)\n\t\t},\n\n\t\tunselectEntity(collaboratorKey) {\n\t\t\tconst index = this.selectedCollaboratorsKey.indexOf(collaboratorKey)\n\t\t\tthis.selectedCollaboratorsKey.splice(index, 1)\n\t\t},\n\t},\n}\n</script>\n<style lang=\"scss\" scoped>\n.manage-collaborators {\n\tdisplay: flex;\n\tflex-direction: column;\n\tpadding: 20px;\n\n\t&__title {\n\t\tfont-weight: bold;\n\t}\n\n\t&__subtitle {\n\t\tcolor: var(--color-text-lighter);\n\t}\n\n\t&__public-link-button {\n\t\tmargin: 4px 0;\n\t}\n\n\t&__form {\n\t\tmargin-top: 4px 0;\n\t\tdisplay: flex;\n\t\tflex-direction: column;\n\t\theight: 500px;\n\n\t\t&__input {\n\t\t\tflex-grow: 1;\n\t\t\tjustify-items: flex-end;\n\t\t\tposition: relative;\n\n\t\t\t.magnify-icon {\n\t\t\t\tposition: absolute;\n\t\t\t\ttop: 10px;\n\t\t\t\tleft: 8px;\n\t\t\t\twidth: fit-content;\n\t\t\t}\n\n\t\t\tinput {\n\t\t\t\twidth: 100%;\n\t\t\t\tpadding-left: 34px;\n\t\t\t}\n\n\t\t\t.loader {\n\t\t\t\tposition: absolute;\n\t\t\t\ttop: -4px;\n\t\t\t\tright: 4px;\n\t\t\t\twidth: fit-content;\n\n\t\t\t\t::v-deep .icon-loading::after {\n\t\t\t\t\theight: 16px;\n\t\t\t\t\twidth: 16px;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t&__selection {\n\t\t\tmin-height: 25px;\n\t\t\tpadding: 8px;\n\n\t\t\tli {\n\t\t\t\tmargin-right: 4px;\n\t\t\t\tdisplay: inline-block;\n\n\t\t\t\t.close-icon {\n\t\t\t\t\tcursor: pointer;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t&__list {\n\t\t\t&__result {\n\t\t\t\tpadding: 8px;\n\t\t\t\tborder-radius: 100px;\n\t\t\t\tbox-sizing: border-box;\n\n\t\t\t\t&, & * {\n\t\t\t\t\tcursor: pointer;\n\t\t\t\t}\n\n\t\t\t\t&:hover, &--selected {\n\t\t\t\t\tbackground: var(--color-background-dark);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t.slot-buttons {\n\t\tdisplay: flex;\n\t\tjustify-content: flex-end;\n\t}\n}\n</style>\n","import mod from \"-!../../node_modules/babel-loader/lib/index.js!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./CollaboratorsSelectionForm.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!./CollaboratorsSelectionForm.vue?vue&type=script&lang=js&\"","\n import API from \"!../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../node_modules/css-loader/dist/cjs.js!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/dist/cjs.js!../../node_modules/sass-loader/dist/cjs.js??clonedRuleSet-2[0].rules[0].use[3]!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./CollaboratorsSelectionForm.vue?vue&type=style&index=0&id=995bfdfc&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!./CollaboratorsSelectionForm.vue?vue&type=style&index=0&id=995bfdfc&lang=scss&scoped=true&\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./CollaboratorsSelectionForm.vue?vue&type=template&id=995bfdfc&scoped=true&\"\nimport script from \"./CollaboratorsSelectionForm.vue?vue&type=script&lang=js&\"\nexport * from \"./CollaboratorsSelectionForm.vue?vue&type=script&lang=js&\"\nimport style0 from \"./CollaboratorsSelectionForm.vue?vue&type=style&index=0&id=995bfdfc&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 \"995bfdfc\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"manage-collaborators\"},[_c('h2',{staticClass:\"manage-collaborators__title\"},[_vm._v(\"\\n\\t\\t\"+_vm._s(_vm.t('photos', 'Add collaborators'))+\"\\n\\t\")]),_vm._v(\" \"),_c('div',{staticClass:\"manage-collaborators__subtitle\"},[_vm._v(\"\\n\\t\\t\"+_vm._s(_vm.t('photos', 'Add users or group who can edit your album'))+\"\\n\\t\")]),_vm._v(\" \"),(_vm.allowPublicLink)?[(_vm.publicLink)?_c('NcButton',{staticClass:\"manage-collaborators__public-link-button\",attrs:{\"type\":\"tertiary-no-background\"},on:{\"click\":_vm.copyPublicLink},scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [(_vm.publicLinkCopied)?_c('Check'):_c('ContentCopy')]},proxy:true}],null,false,845538853)},[(_vm.publicLinkCopied)?[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_vm.t('photos', 'Public link copied!'))+\"\\n\\t\\t\\t\")]:[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_vm.t('photos', 'Copy public link'))+\"\\n\\t\\t\\t\")]],2):_c('NcButton',{staticClass:\"manage-collaborators__public-link-button\",attrs:{\"type\":\"tertiary-no-background\"},on:{\"click\":_vm.createPublicLinkForAlbum}},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.t('photos', 'Share this album via link'))+\"\\n\\t\\t\")])]:_vm._e(),_vm._v(\" \"),_c('form',{staticClass:\"manage-collaborators__form\",on:{\"submit\":function($event){$event.preventDefault();}}},[_c('label',{staticClass:\"manage-collaborators__form__input\"},[_c('Magnify',{attrs:{\"size\":20}}),_vm._v(\" \"),_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.searchText),expression:\"searchText\"}],attrs:{\"type\":\"search\",\"name\":\"search\",\"aria-label\":_vm.t('photos', 'Search for collaborators'),\"aria-autocomplete\":\"list\",\"aria-controls\":(\"manage-collaborators__form__selection-\" + _vm.randomId + \" manage-collaborators__form__list-\" + _vm.randomId),\"placeholder\":_vm.t('photos', 'Search users or groups')},domProps:{\"value\":(_vm.searchText)},on:{\"input\":[function($event){if($event.target.composing){ return; }_vm.searchText=$event.target.value},_vm.searchCollaborators]}}),_vm._v(\" \"),(_vm.loadingCollaborators)?_c('NcLoadingIcon'):_vm._e()],1),_vm._v(\" \"),_c('ul',{staticClass:\"manage-collaborators__form__selection\"},_vm._l((_vm.selectedCollaboratorsKey),function(collaboratorKey){return _c('li',{key:collaboratorKey},[_c('NcUserBubble',{attrs:{\"user\":_vm.availableCollaborators[collaboratorKey].source === 'users' ? _vm.availableCollaborators[collaboratorKey].id : undefined,\"display-name\":_vm.availableCollaborators[collaboratorKey].label}},[_c('template',{slot:\"title\"},[_c('Close',{attrs:{\"size\":20,\"role\":\"button\",\"aria-label\":_vm.t('photos', 'Remove {collaboratorLabel} from the collaborators list', {collaboratorLabel: _vm.availableCollaborators[collaboratorKey].label})},on:{\"click\":function($event){return _vm.unselectEntity(collaboratorKey)}}})],1)],2)],1)}),0),_vm._v(\" \"),_c('VirtualScrolling',{staticClass:\"manage-collaborators__form__list\",attrs:{\"rows\":_vm.vsItems},scopedSlots:_vm._u([{key:\"default\",fn:function(ref){\nvar renderedRows = ref.renderedRows;\nreturn _c('ul',{attrs:{\"id\":(\"manage-collaborators__form__list-\" + _vm.randomId)}},_vm._l((renderedRows),function(collaborator){return _c('li',{key:collaborator.key,style:({height: ((collaborator.height) + \"px\")})},[_c('NcListItemIcon',{staticClass:\"manage-collaborators__form__list__result\",class:{'manage-collaborators__form__list__result--selected': collaborator.key in _vm.selectedCollaboratorsKey},attrs:{\"id\":_vm.availableCollaborators[collaborator.key].id,\"title\":_vm.availableCollaborators[collaborator.key].id,\"search\":_vm.searchText,\"display-name\":_vm.availableCollaborators[collaborator.key].label,\"is-selected\":collaborator.key in _vm.selectedCollaboratorsKey,\"aria-label\":_vm.t('photos', 'Add {collaboratorLabel} to the collaborators list', {collaboratorLabel: _vm.availableCollaborators[collaborator.key].label})},on:{\"click\":function($event){return _vm.selectEntity(collaborator.key)}}})],1)}),0)}}])})],1),_vm._v(\" \"),_c('div',{staticClass:\"slot-buttons\"},[_vm._t(\"default\",null,{\"collaborators\":_vm.selectedCollaborators})],2)],2)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }"],"names":["name","data","errorFetchingAlbums","loadingAlbums","mixins","AbortControllerMixin","beforeMount","fetchAlbums","computed","mapGetters","methods","client","getCurrentUser","uid","details","signal","abortController","response","albums","filter","album","filename","map","props","collaborators","collaborator","Array","isArray","genFileInfo","dateRange","JSON","parse","replace","start","moment","unix","end","dateRangeFormated","startDate","format","endDate","date","t","$store","dispatch","logger","length","status","code","showError","___CSS_LOADER_EXPORT___","push","module","id","emits","title","type","String","fillColor","default","size","Number","_vm","this","_h","$createElement","_c","_self","_b","staticClass","attrs","on","$event","$emit","$attrs","_v","_s","_e","options","styleTagTransform","setAttributes","insert","domAPI","insertStyleElement","showCollaboratorView","albumName","scopedSlots","_u","key","fn","ref","editMode","trim","loading","submit","proxy","preventDefault","apply","arguments","albumLocation","back","copyPublicLink","createPublicLinkForAlbum","directives","rawName","value","expression","randomId","domProps","target","composing","searchText","searchCollaborators","_l","collaboratorKey","availableCollaborators","source","undefined","label","slot","collaboratorLabel","unselectEntity","vsItems","renderedRows","style","height","class","selectedCollaboratorsKey","selectEntity","_t","selectedCollaborators"],"sourceRoot":""}