photos/js/photos-src_components_Album...

1 line
66 KiB
Plaintext

{"version":3,"file":"photos-src_components_Albums_AlbumForm_vue.js?v=034244759e8ce7f31508","mappings":"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","sources":["webpack:///photos/src/mixins/FetchCollectionContentMixin.js","webpack:///photos/src/components/Albums/AlbumForm.vue?vue&type=style&index=0&id=2e6bf1a2&prod&lang=scss&scoped=true","webpack:///photos/src/components/Albums/CollaboratorsSelectionForm.vue?vue&type=style&index=0&id=a392a178&prod&lang=scss&scoped=true","webpack://photos/./src/components/Albums/AlbumForm.vue?4bcd","webpack:///photos/src/components/Albums/AlbumForm.vue","webpack:///photos/src/components/Albums/AlbumForm.vue?vue&type=script&lang=js","webpack://photos/./src/components/Albums/AlbumForm.vue?2f58","webpack://photos/./src/components/Albums/AlbumForm.vue?8dc6","webpack://photos/./src/components/Albums/CollaboratorsSelectionForm.vue?b438","webpack:///photos/src/components/Albums/CollaboratorsSelectionForm.vue","webpack:///photos/src/components/Albums/CollaboratorsSelectionForm.vue?vue&type=script&lang=js","webpack://photos/./src/components/Albums/CollaboratorsSelectionForm.vue?4eb9","webpack://photos/./src/components/Albums/CollaboratorsSelectionForm.vue?e975"],"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 { mapActions } from 'vuex'\n\nimport { showError } from '@nextcloud/dialogs'\n\nimport AbortControllerMixin from './AbortControllerMixin.js'\nimport { fetchCollection, fetchCollectionFiles } from '../services/collectionFetcher.js'\nimport logger from '../services/logger.js'\nimport SemaphoreWithPriority from '../utils/semaphoreWithPriority.js'\n\nexport default {\n\tname: 'FetchCollectionContentMixin',\n\n\tdata() {\n\t\treturn {\n\t\t\tfetchSemaphore: new SemaphoreWithPriority(1),\n\t\t\tloadingCollection: false,\n\t\t\tloadingCollectionFiles: false,\n\t\t\terrorFetchingCollection: null,\n\t\t\terrorFetchingCollectionFiles: null,\n\t\t}\n\t},\n\n\tmixins: [\n\t\tAbortControllerMixin,\n\t],\n\n\tmethods: {\n\t\t...mapActions([\n\t\t\t'appendFiles',\n\t\t\t'addCollections',\n\t\t\t'setCollectionFiles',\n\t\t]),\n\t\t/**\n\t\t * @param {string} collectionFileName\n\t\t * @param {string[]} [extraProps] - Extra properties to add to the DAV request.\n\t\t * @param {import('webdav').WebDAVClient} [client] - The DAV client to use.\n\t\t * @return {Promise<import('../services/collectionFetcher.js').Collection|null>}\n\t\t */\n\t\tasync fetchCollection(collectionFileName, extraProps, client) {\n\t\t\tif (this.loadingCollection) {\n\t\t\t\treturn null\n\t\t\t}\n\n\t\t\ttry {\n\t\t\t\tthis.loadingCollection = true\n\t\t\t\tthis.errorFetchingCollection = null\n\n\t\t\t\tconst collection = await fetchCollection(collectionFileName, { signal: this.abortController.signal }, extraProps, client)\n\t\t\t\tthis.addCollections({ collections: [collection] })\n\t\t\t\treturn collection\n\t\t\t} catch (error) {\n\t\t\t\tif (error.response?.status === 404) {\n\t\t\t\t\tthis.errorFetchingCollection = 404\n\t\t\t\t\treturn null\n\t\t\t\t}\n\n\t\t\t\tthis.errorFetchingCollection = error\n\t\t\t\tlogger.error('[PublicCollectionContent] Error fetching collection', { error })\n\t\t\t\tshowError(this.t('photos', 'Failed to fetch collection.'))\n\t\t\t} finally {\n\t\t\t\tthis.loadingCollection = false\n\t\t\t}\n\n\t\t\treturn null\n\t\t},\n\n\t\t/**\n\t\t * @param {string} collectionFileName\n\t\t * @param {string[]} [extraProps] - Extra properties to add to the DAV request.\n\t\t * @param {import('webdav').WebDAVClient} [client] - The DAV client to use.\n\t\t * @param {((value: import('../services/collectionFetcher.js').CollectionFile, index: number, array: import('../services/collectionFetcher.js').CollectionFile[]) => any)[]} [mappers] - Callback that can transform files before they are appended.\n\t\t * @return {Promise<import('../services/collectionFetcher.js').CollectionFile[]>}\n\t\t */\n\t\tasync fetchCollectionFiles(collectionFileName, extraProps, client, mappers = []) {\n\t\t\tif (this.loadingCollectionFiles) {\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.errorFetchingCollectionFiles = null\n\t\t\t\tthis.loadingCollectionFiles = true\n\n\t\t\t\tlet fetchedFiles = await fetchCollectionFiles(collectionFileName, { signal: this.abortController.signal }, extraProps, client)\n\t\t\t\tconst fileIds = fetchedFiles.map(file => file.fileid.toString())\n\n\t\t\t\tmappers.forEach(mapper => (fetchedFiles = fetchedFiles.map(mapper)))\n\n\t\t\t\tthis.appendFiles(fetchedFiles)\n\n\t\t\t\tif (fetchedFiles.length > 0) {\n\t\t\t\t\tawait this.$store.commit('setCollectionFiles', { collectionFileName, fileIds })\n\t\t\t\t}\n\n\t\t\t\treturn fetchedFiles\n\t\t\t} catch (error) {\n\t\t\t\tif (error.response?.status === 404) {\n\t\t\t\t\tthis.errorFetchingCollectionFiles = 404\n\t\t\t\t\treturn []\n\t\t\t\t}\n\n\t\t\t\tthis.errorFetchingCollectionFiles = error\n\n\t\t\t\tshowError(this.t('photos', 'Failed to fetch collections list.'))\n\t\t\t\tlogger.error('[PublicCollectionContent] Error fetching collection files', { error })\n\t\t\t} finally {\n\t\t\t\tthis.loadingCollectionFiles = false\n\t\t\t\tthis.fetchSemaphore.release(fetchSemaphoreSymbol)\n\t\t\t}\n\n\t\t\treturn []\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-2e6bf1a2]{display:flex;flex-direction:column;height:350px;padding:calc(var(--default-grid-baseline)*4)}.album-form .form-title[data-v-2e6bf1a2]{font-weight:bold}.album-form .form-subtitle[data-v-2e6bf1a2]{color:var(--color-text-lighter)}.album-form .form-inputs[data-v-2e6bf1a2]{flex:1;display:flex;flex-direction:column;gap:calc(var(--default-grid-baseline)*4)}.album-form .form-buttons[data-v-2e6bf1a2]{display:flex;justify-content:space-between;flex-direction:column}.album-form .form-buttons .left-buttons[data-v-2e6bf1a2],.album-form .form-buttons .right-buttons[data-v-2e6bf1a2]{display:flex;gap:calc(var(--default-grid-baseline)*4)}.album-form .form-buttons .right-buttons[data-v-2e6bf1a2]{justify-content:flex-end}.left-buttons[data-v-2e6bf1a2]{flex-grow:1}@media only screen and (max-width: 1020px){.right-buttons[data-v-2e6bf1a2]{justify-content:flex-end;flex-direction:column}}\", \"\",{\"version\":3,\"sources\":[\"webpack://./src/components/Albums/AlbumForm.vue\"],\"names\":[],\"mappings\":\"AAEA,6BACC,YAAA,CACA,qBAAA,CACA,YAAA,CACA,4CAAA,CAEA,yCACC,gBAAA,CAGD,4CACC,+BAAA,CAGD,0CACC,MAAA,CACA,YAAA,CACA,qBAAA,CACA,wCAAA,CAGD,2CACC,YAAA,CACA,6BAAA,CACA,qBAAA,CAEA,mHACC,YAAA,CACA,wCAAA,CAGD,0DACC,wBAAA,CAKH,+BACC,WAAA,CAGD,2CACC,gCACC,wBAAA,CACA,qBAAA,CAAA\",\"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.album-form {\\n\\tdisplay: flex;\\n\\tflex-direction: column;\\n\\theight: 350px;\\n\\tpadding: calc(var(--default-grid-baseline) * 4);\\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: 1;\\n\\t\\tdisplay: flex;\\n\\t\\tflex-direction: column;\\n\\t\\tgap: calc(var(--default-grid-baseline) * 4);\\n\\t}\\n\\n\\t.form-buttons {\\n\\t\\tdisplay: flex;\\n\\t\\tjustify-content: space-between;\\n\\t\\tflex-direction: column;\\n\\n\\t\\t.left-buttons, .right-buttons {\\n\\t\\t\\tdisplay: flex;\\n\\t\\t\\tgap: calc(var(--default-grid-baseline) * 4);\\n\\t\\t}\\n\\n\\t\\t.right-buttons {\\n\\t\\t\\tjustify-content: flex-end;\\n\\t\\t}\\n\\t}\\n}\\n\\n.left-buttons {\\n\\tflex-grow: 1;\\n}\\n\\n@media only screen and (max-width: 1020px) {\\n\\t.right-buttons {\\n\\t\\tjustify-content: flex-end;\\n\\t\\tflex-direction: column;\\n\\t}\\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-a392a178]{display:flex;flex-direction:column;padding:20px;height:500px}.manage-collaborators__title[data-v-a392a178]{font-weight:bold}.manage-collaborators__subtitle[data-v-a392a178]{color:var(--color-text-lighter)}.manage-collaborators__public-link-button[data-v-a392a178]{margin:4px 0}.manage-collaborators__form[data-v-a392a178]{margin-top:4px 0;display:flex;flex-direction:column}.manage-collaborators__form__input[data-v-a392a178]{position:relative;display:block}.manage-collaborators__form__input input[data-v-a392a178]{width:100%;padding-left:34px}.manage-collaborators__form__input .loading-icon[data-v-a392a178]{position:absolute;top:8px;right:8px}.manage-collaborators__form__list[data-v-a392a178]{padding:8px;height:350px;overflow:scroll}.manage-collaborators__form__list__result[data-v-a392a178]{padding:8px;border-radius:100px;box-sizing:border-box}.manage-collaborators__form__list__result[data-v-a392a178],.manage-collaborators__form__list__result *[data-v-a392a178]{cursor:pointer !important}.manage-collaborators__form__list__result[data-v-a392a178]:hover{background:var(--color-background-dark)}.manage-collaborators__form__list--empty[data-v-a392a178]{margin:100px 0}.manage-collaborators__selection[data-v-a392a178]{display:flex;flex-direction:column;margin-top:32px;flex-grow:1}.manage-collaborators__selection__item[data-v-a392a178]{border-radius:var(--border-radius-pill);padding:0 8px}.manage-collaborators__selection__item[data-v-a392a178]:hover{background:var(--color-background-dark)}.manage-collaborators__selection__item[data-v-a392a178] .option{gap:4px}.manage-collaborators .actions[data-v-a392a178]{display:flex;margin-top:8px}.manage-collaborators .actions__public-link[data-v-a392a178]{display:flex;align-items:center}.manage-collaborators .actions__public-link button[data-v-a392a178]{margin-left:8px}.manage-collaborators .actions__slot[data-v-a392a178]{flex-grow:1;display:flex;justify-content:flex-end;align-items:center}\", \"\",{\"version\":3,\"sources\":[\"webpack://./src/components/Albums/CollaboratorsSelectionForm.vue\"],\"names\":[],\"mappings\":\"AAEA,uCACC,YAAA,CACA,qBAAA,CACA,YAAA,CACA,YAAA,CAEA,8CACC,gBAAA,CAGD,iDACC,+BAAA,CAGD,2DACC,YAAA,CAGD,6CACC,gBAAA,CACA,YAAA,CACA,qBAAA,CAEA,oDACC,iBAAA,CACA,aAAA,CAEA,0DACC,UAAA,CACA,iBAAA,CAGD,kEACC,iBAAA,CACA,OAAA,CACA,SAAA,CAIF,mDACC,WAAA,CACA,YAAA,CACA,eAAA,CAEA,2DACC,WAAA,CACA,mBAAA,CACA,qBAAA,CAEA,wHACC,yBAAA,CAGD,iEACC,uCAAA,CAIF,0DACC,cAAA,CAKH,kDACC,YAAA,CACA,qBAAA,CACA,eAAA,CACA,WAAA,CAEA,wDACC,uCAAA,CACA,aAAA,CAEA,8DACC,uCAAA,CAGD,gEACC,OAAA,CAKH,gDACC,YAAA,CACA,cAAA,CAEA,6DACC,YAAA,CACA,kBAAA,CAEA,oEACC,eAAA,CAIF,sDACC,WAAA,CACA,YAAA,CACA,wBAAA,CACA,kBAAA\",\"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.manage-collaborators {\\n\\tdisplay: flex;\\n\\tflex-direction: column;\\n\\tpadding: 20px;\\n\\theight: 500px;\\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\\n\\t\\t&__input {\\n\\t\\t\\tposition: relative;\\n\\t\\t\\tdisplay: block;\\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.loading-icon {\\n\\t\\t\\t\\tposition: absolute;\\n\\t\\t\\t\\ttop: calc(36px / 2 - 20px / 2);\\n\\t\\t\\t\\tright: 8px;\\n\\t\\t\\t}\\n\\t\\t}\\n\\n\\t\\t&__list {\\n\\t\\t\\tpadding: 8px;\\n\\t\\t\\theight: 350px;\\n\\t\\t\\toverflow: scroll;\\n\\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 !important;\\n\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\t&:hover {\\n\\t\\t\\t\\t\\tbackground: var(--color-background-dark);\\n\\t\\t\\t\\t}\\n\\t\\t\\t}\\n\\n\\t\\t\\t&--empty {\\n\\t\\t\\t\\tmargin: 100px 0;\\n\\t\\t\\t}\\n\\t\\t}\\n\\t}\\n\\n\\t&__selection {\\n\\t\\tdisplay: flex;\\n\\t\\tflex-direction: column;\\n\\t\\tmargin-top: 32px;\\n\\t\\tflex-grow: 1;\\n\\n\\t\\t&__item {\\n\\t\\t\\tborder-radius: var(--border-radius-pill);\\n\\t\\t\\tpadding: 0 8px;\\n\\n\\t\\t\\t&:hover {\\n\\t\\t\\t\\tbackground: var(--color-background-dark);\\n\\t\\t\\t}\\n\\n\\t\\t\\t:deep(.option) {\\n\\t\\t\\t\\tgap: 4px;\\n\\t\\t\\t}\\n\\t\\t}\\n\\t}\\n\\n\\t.actions {\\n\\t\\tdisplay: flex;\\n\\t\\tmargin-top: 8px;\\n\\n\\t\\t&__public-link {\\n\\t\\t\\tdisplay: flex;\\n\\t\\t\\talign-items: center;\\n\\n\\t\\t\\tbutton {\\n\\t\\t\\t\\tmargin-left: 8px;\\n\\t\\t\\t}\\n\\t\\t}\\n\\n\\t\\t&__slot {\\n\\t\\t\\tflex-grow: 1;\\n\\t\\t\\tdisplay: flex;\\n\\t\\t\\tjustify-content: flex-end;\\n\\t\\t\\talign-items: center;\\n\\t\\t}\\n\\t}\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","var render = function render(){var _vm=this,_c=_vm._self._c;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,\"label\":_vm.t('photos', 'Name of the album')},on:{\"update:value\":function($event){_vm.albumName=$event}}}),_vm._v(\" \"),_c('NcTextField',{attrs:{\"value\":_vm.albumLocation,\"name\":\"location\",\"type\":\"text\",\"label\":_vm.t('photos', 'Location of the album')},on:{\"update:value\":function($event){_vm.albumLocation=$event}},scopedSlots:_vm._u([{key:\"default\",fn:function(){return [_c('MapMarker',{attrs:{\"size\":20}})]},proxy:true}],null,false,2964444886)})],1),_vm._v(\" \"),_c('div',{staticClass:\"form-buttons\"},[_c('span',{staticClass:\"left-buttons\"},[(_vm.displayBackButton)?_c('NcButton',{attrs:{\"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.sharingEnabled && !_vm.editMode)?_c('NcButton',{attrs:{\"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',{attrs:{\"size\":20}})]},proxy:true}],null,false,3656768963)},[_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:{\"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',{attrs:{\"size\":20}}):_c('Send',{attrs:{\"size\":20}})]},proxy:true}],null,false,2302891232)},[_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({ collaborators }){return [_c('span',{staticClass:\"left-buttons\"},[_c('NcButton',{attrs:{\"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:{\"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',{attrs:{\"size\":20}}):_c('Send',{attrs:{\"size\":20}})]},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)]}}])})\n}\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\t:label=\"t('photos', 'Name of the album')\" />\n\t\t\t<NcTextField :value.sync=\"albumLocation\"\n\t\t\t\tname=\"location\"\n\t\t\t\ttype=\"text\"\n\t\t\t\t:label=\"t('photos', 'Location of the album')\">\n\t\t\t\t<template #default>\n\t\t\t\t\t<MapMarker :size=\"20\" />\n\t\t\t\t</template>\n\t\t\t</NcTextField>\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\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=\"sharingEnabled && !editMode\"\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 :size=\"20\" />\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 type=\"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\" :size=\"20\" />\n\t\t\t\t\t\t<Send v-else :size=\"20\" />\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 #default=\"{ collaborators }\">\n\t\t\t<span class=\"left-buttons\">\n\t\t\t\t<NcButton type=\"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 type=\"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\" :size=\"20\" />\n\t\t\t\t\t\t<Send v-else :size=\"20\" />\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'\n\nimport MapMarker from 'vue-material-design-icons/MapMarker.vue'\nimport AccountMultiplePlus from 'vue-material-design-icons/AccountMultiplePlus.vue'\nimport Send from 'vue-material-design-icons/Send.vue'\n\nimport { NcButton, NcLoadingIcon, NcTextField } from '@nextcloud/vue'\nimport moment from '@nextcloud/moment'\nimport { translate } from '@nextcloud/l10n'\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\t/** @type {import('vue').PropType<import('../../store/albums.js').Album|null>} */\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\t/**\n\t\t * @return {boolean} Whether sharing is enabled.\n\t\t */\n\t\teditMode() {\n\t\t\treturn this.album !== null\n\t\t},\n\n\t\t/**\n\t\t * @return {boolean} Whether sharing is enabled.\n\t\t */\n\t\tsharingEnabled() {\n\t\t\treturn OC.Share !== undefined\n\t\t},\n\n\t\t/**\n\t\t * @return {string} The album's filename based on its name. Useful to fetch the location information and content.\n\t\t */\n\t\talbumFileName() {\n\t\t\treturn this.$store.getters.getAlbumName(this.albumName)\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(['createCollection', 'renameCollection', 'updateCollection']),\n\n\t\t/** @param {import('../../store/albums.js').Collaborator[]} collaborators */\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\t/** @param {import('../../store/albums.js').Collaborator[]} collaborators */\n\t\tasync handleCreateAlbum(collaborators = []) {\n\t\t\ttry {\n\t\t\t\tthis.loading = true\n\t\t\t\tlet album = await this.createCollection({\n\t\t\t\t\tcollection: {\n\t\t\t\t\t\tbasename: this.albumName,\n\t\t\t\t\t\tfilename: this.albumFileName,\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.updateCollection(\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tcollectionFileName: this.albumFileName,\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.renameCollection({ collectionFileName: this.album.filename, newBaseName: this.albumName })\n\t\t\t\t}\n\n\t\t\t\tif (this.album.location !== this.albumLocation) {\n\t\t\t\t\talbum = await this.updateCollection({ collectionFileName: album.filename, 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\n\t\tt: translate,\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: calc(var(--default-grid-baseline) * 4);\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: 1;\n\t\tdisplay: flex;\n\t\tflex-direction: column;\n\t\tgap: calc(var(--default-grid-baseline) * 4);\n\t}\n\n\t.form-buttons {\n\t\tdisplay: flex;\n\t\tjustify-content: space-between;\n\t\tflex-direction: column;\n\n\t\t.left-buttons, .right-buttons {\n\t\t\tdisplay: flex;\n\t\t\tgap: calc(var(--default-grid-baseline) * 4);\n\t\t}\n\n\t\t.right-buttons {\n\t\t\tjustify-content: flex-end;\n\t\t}\n\t}\n}\n\n.left-buttons {\n\tflex-grow: 1;\n}\n\n@media only screen and (max-width: 1020px) {\n\t.right-buttons {\n\t\tjustify-content: flex-end;\n\t\tflex-direction: column;\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!./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.use[3]!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AlbumForm.vue?vue&type=style&index=0&id=2e6bf1a2&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!./AlbumForm.vue?vue&type=style&index=0&id=2e6bf1a2&prod&lang=scss&scoped=true\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./AlbumForm.vue?vue&type=template&id=2e6bf1a2&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=2e6bf1a2&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 \"2e6bf1a2\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;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('label',{staticClass:\"manage-collaborators__subtitle\",attrs:{\"for\":\"sharing-search-input\"}},[_vm._v(\"\\n\\t\\t\"+_vm._s(_vm.t('photos', 'Add people or groups who can edit your album'))+\"\\n\\t\")]),_vm._v(\" \"),_c('form',{staticClass:\"manage-collaborators__form\",on:{\"submit\":function($event){$event.preventDefault();}}},[_c('NcSelect',{attrs:{\"input-id\":\"sharing-search-input\",\"loading\":_vm.loadingCollaborators,\"label\":\"label\",\"filterable\":false,\"placeholder\":_vm.t('photos', 'Search people or groups'),\"clear-search-on-blur\":() => false,\"user-select\":true,\"append-to-body\":false,\"options\":_vm.searchResults},on:{\"search\":_vm.searchCollaborators,\"option:selected\":({key}) => _vm.selectEntity(key)},model:{value:(_vm.searchText),callback:function ($$v) {_vm.searchText=$$v},expression:\"searchText\"}},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.t('photos', 'No recommendations. Start typing.'))+\"\\n\\t\\t\")])],1),_vm._v(\" \"),_c('ul',{staticClass:\"manage-collaborators__selection\"},_vm._l((_vm.listableSelectedCollaboratorsKeys),function(collaboratorKey){return _c('li',{key:collaboratorKey,staticClass:\"manage-collaborators__selection__item\"},[_c('NcListItemIcon',{attrs:{\"id\":_vm.availableCollaborators[collaboratorKey].id,\"display-name\":_vm.availableCollaborators[collaboratorKey].label,\"name\":_vm.availableCollaborators[collaboratorKey].label,\"user\":_vm.availableCollaborators[collaboratorKey].id,\"is-no-user\":_vm.availableCollaborators[collaboratorKey].type !== _vm.collaboratorTypes.SHARE_TYPE_USER}},[(_vm.availableCollaborators[collaboratorKey].type === _vm.collaboratorTypes.SHARE_TYPE_GROUP)?_c('AccountGroup',{attrs:{\"title\":_vm.t('photos', 'Group')}}):_vm._e(),_vm._v(\" \"),_c('NcButton',{attrs:{\"type\":\"tertiary\",\"aria-label\":_vm.t('photos', 'Remove {collaboratorLabel} from the collaborators list', {collaboratorLabel: _vm.availableCollaborators[collaboratorKey].label})},on:{\"click\":function($event){return _vm.unselectEntity(collaboratorKey)}}},[_c('Close',{attrs:{\"slot\":\"icon\",\"size\":20},slot:\"icon\"})],1)],1)],1)}),0),_vm._v(\" \"),_c('div',{staticClass:\"actions\"},[(_vm.allowPublicLink)?_c('div',{staticClass:\"actions__public-link\"},[(_vm.isPublicLinkSelected && _vm.publicLink.id !== '')?[_c('NcButton',{staticClass:\"manage-collaborators__public-link-button\",attrs:{\"aria-label\":_vm.t('photos', 'Copy the public link'),\"title\":_vm.publicLinkURL},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\\t\\t\"+_vm._s(_vm.t('photos', 'Public link copied!'))+\"\\n\\t\\t\\t\\t\\t\")]:[_vm._v(\"\\n\\t\\t\\t\\t\\t\\t\"+_vm._s(_vm.t('photos', 'Copy public link'))+\"\\n\\t\\t\\t\\t\\t\")]],2),_vm._v(\" \"),_c('NcButton',{attrs:{\"type\":\"tertiary\",\"aria-label\":_vm.t('photos', 'Delete the public link')},on:{\"click\":_vm.deletePublicLink}},[_c('Close',{attrs:{\"slot\":\"icon\"},slot:\"icon\"})],1)]:_c('NcButton',{staticClass:\"manage-collaborators__public-link-button\",attrs:{\"disabled\":_vm.isPublicLinkSelected && _vm.publicLink.id === '',\"aria-label\":_vm.t('photos', 'Create public link share')},on:{\"click\":_vm.createPublicLinkForAlbum}},[_c('Earth',{attrs:{\"slot\":\"icon\"},slot:\"icon\"}),_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_vm.t('photos', 'Share via public link'))+\"\\n\\t\\t\\t\")],1)],2):_vm._e(),_vm._v(\" \"),_c('div',{staticClass:\"actions__slot\"},[_vm._t(\"default\",null,{\"collaborators\":_vm.selectedCollaborators})],2)])])\n}\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\n\t\t<label class=\"manage-collaborators__subtitle\" for=\"sharing-search-input\">\n\t\t\t{{ t('photos', 'Add people or groups who can edit your album') }}\n\t\t</label>\n\t\t<form class=\"manage-collaborators__form\" @submit.prevent>\n\t\t\t<NcSelect v-model=\"searchText\"\n\t\t\t\tinput-id=\"sharing-search-input\"\n\t\t\t\t:loading=\"loadingCollaborators\"\n\t\t\t\tlabel=\"label\"\n\t\t\t\t:filterable=\"false\"\n\t\t\t\t:placeholder=\"t('photos', 'Search people or groups')\"\n\t\t\t\t:clear-search-on-blur=\"() => false\"\n\t\t\t\t:user-select=\"true\"\n\t\t\t\t:append-to-body=\"false\"\n\t\t\t\t:options=\"searchResults\"\n\t\t\t\t@search=\"searchCollaborators\"\n\t\t\t\t@option:selected=\"({key}) => selectEntity(key)\">\n\t\t\t\t{{ t('photos', 'No recommendations. Start typing.') }}\n\t\t\t</NcSelect>\n\t\t</form>\n\n\t\t<ul class=\"manage-collaborators__selection\">\n\t\t\t<li v-for=\"collaboratorKey of listableSelectedCollaboratorsKeys\"\n\t\t\t\t:key=\"collaboratorKey\"\n\t\t\t\tclass=\"manage-collaborators__selection__item\">\n\t\t\t\t<NcListItemIcon :id=\"availableCollaborators[collaboratorKey].id\"\n\t\t\t\t\t:display-name=\"availableCollaborators[collaboratorKey].label\"\n\t\t\t\t\t:name=\"availableCollaborators[collaboratorKey].label\"\n\t\t\t\t\t:user=\"availableCollaborators[collaboratorKey].id\"\n\t\t\t\t\t:is-no-user=\"availableCollaborators[collaboratorKey].type !== collaboratorTypes.SHARE_TYPE_USER\">\n\t\t\t\t\t<AccountGroup v-if=\"availableCollaborators[collaboratorKey].type === collaboratorTypes.SHARE_TYPE_GROUP\" :title=\"t('photos', 'Group')\" />\n\t\t\t\t\t<NcButton type=\"tertiary\"\n\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@click=\"unselectEntity(collaboratorKey)\">\n\t\t\t\t\t\t<Close slot=\"icon\" :size=\"20\" />\n\t\t\t\t\t</NcButton>\n\t\t\t\t</NcListItemIcon>\n\t\t\t</li>\n\t\t</ul>\n\n\t\t<div class=\"actions\">\n\t\t\t<div v-if=\"allowPublicLink\" class=\"actions__public-link\">\n\t\t\t\t<template v-if=\"isPublicLinkSelected && publicLink.id !== ''\">\n\t\t\t\t\t<NcButton class=\"manage-collaborators__public-link-button\"\n\t\t\t\t\t\t:aria-label=\"t('photos', 'Copy the public link')\"\n\t\t\t\t\t\t:title=\"publicLinkURL\"\n\t\t\t\t\t\t@click=\"copyPublicLink\">\n\t\t\t\t\t\t<template v-if=\"publicLinkCopied\">\n\t\t\t\t\t\t\t{{ t('photos', 'Public link copied!') }}\n\t\t\t\t\t\t</template>\n\t\t\t\t\t\t<template v-else>\n\t\t\t\t\t\t\t{{ t('photos', 'Copy public link') }}\n\t\t\t\t\t\t</template>\n\t\t\t\t\t\t<template #icon>\n\t\t\t\t\t\t\t<Check v-if=\"publicLinkCopied\" />\n\t\t\t\t\t\t\t<ContentCopy v-else />\n\t\t\t\t\t\t</template>\n\t\t\t\t\t</NcButton>\n\t\t\t\t\t<NcButton type=\"tertiary\"\n\t\t\t\t\t\t:aria-label=\"t('photos', 'Delete the public link')\"\n\t\t\t\t\t\t@click=\"deletePublicLink\">\n\t\t\t\t\t\t<Close slot=\"icon\" />\n\t\t\t\t\t</NcButton>\n\t\t\t\t</template>\n\t\t\t\t<NcButton v-else\n\t\t\t\t\t:disabled=\"isPublicLinkSelected && publicLink.id === ''\"\n\t\t\t\t\t:aria-label=\"t('photos', 'Create public link share')\"\n\t\t\t\t\tclass=\"manage-collaborators__public-link-button\"\n\t\t\t\t\t@click=\"createPublicLinkForAlbum\">\n\t\t\t\t\t<Earth slot=\"icon\" />\n\t\t\t\t\t{{ t('photos', 'Share via public link') }}\n\t\t\t\t</NcButton>\n\t\t\t</div>\n\n\t\t\t<div class=\"actions__slot\">\n\t\t\t\t<slot :collaborators=\"selectedCollaborators\" />\n\t\t\t</div>\n\t\t</div>\n\t</div>\n</template>\n<script>\nimport { mapActions } from 'vuex'\n\nimport Close from 'vue-material-design-icons/Close.vue'\nimport Check from 'vue-material-design-icons/Check.vue'\nimport ContentCopy from 'vue-material-design-icons/ContentCopy.vue'\nimport AccountGroup from 'vue-material-design-icons/AccountGroup.vue'\nimport Earth from 'vue-material-design-icons/Earth.vue'\nimport AccountGroupSvg from '@mdi/svg/svg/account-group.svg'\n\nimport axios from '@nextcloud/axios'\nimport { showError } from '@nextcloud/dialogs'\nimport { getCurrentUser } from '@nextcloud/auth'\nimport { generateOcsUrl, generateUrl } from '@nextcloud/router'\nimport { NcButton, NcListItemIcon, NcSelect } from '@nextcloud/vue'\nimport { Type } from '@nextcloud/sharing'\nimport { translate } from '@nextcloud/l10n'\n\nimport logger from '../../services/logger.js'\nimport FetchCollectionContentMixin from '../../mixins/FetchCollectionContentMixin.js'\n\n/**\n * @typedef {object} Collaborator\n * @property {string} id - The id of the collaborator.\n * @property {string} label - The label of the collaborator for display.\n * @property {Type.SHARE_TYPE_USER|Type.SHARE_TYPE_GROUP|Type.SHARE_TYPE_LINK} type - The type of the collaborator.\n */\n\n/**\n * @typedef {Collaborator} SearchResult\n * @property {string} key\n * @property {string} displayName - The label of the collaborator for display.\n * @property {Element} [iconSvg] - An icon to differentiate the collaborator type.\n */\n\nexport default {\n\tname: 'CollaboratorsSelectionForm',\n\n\tcomponents: {\n\t\tClose,\n\t\tAccountGroup,\n\t\tContentCopy,\n\t\tCheck,\n\t\tEarth,\n\t\tNcButton,\n\t\tNcListItemIcon,\n\t\tNcSelect,\n\t},\n\n\tmixins: [FetchCollectionContentMixin],\n\n\tprops: {\n\t\talbumName: {\n\t\t\ttype: String,\n\t\t\trequired: true,\n\t\t},\n\n\t\t/** @type {import('vue').PropType<import('../../store/albums.js').Collaborator[]>} */\n\t\tcollaborators: {\n\t\t\ttype: Array,\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: null,\n\t\t\t/** @type {import('../../store/albums.js').IndexedCollaborators} */\n\t\t\tavailableCollaborators: {},\n\t\t\t/** @type {string[]} */\n\t\t\tselectedCollaboratorsKeys: [],\n\t\t\t/** @type {import('../../store/albums.js').Collaborator[]} */\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\tcollaboratorTypes: Type,\n\t\t\tconfig: {\n\t\t\t\tminSearchStringLength: parseInt(OC.config['sharing.minSearchStringLength'], 10) || 0,\n\t\t\t},\n\t\t}\n\t},\n\n\tcomputed: {\n\t\t/**\n\t\t * @return {SearchResult[]}\n\t\t */\n\t\tsearchResults() {\n\t\t\treturn this.currentSearchResults\n\t\t\t\t.filter(({ id }) => id !== getCurrentUser().uid)\n\t\t\t\t.map((collaborator) => {\n\t\t\t\t\treturn {\n\t\t\t\t\t\t...collaborator,\n\t\t\t\t\t\tkey: `${collaborator.type}:${collaborator.id}`,\n\t\t\t\t\t\ticonSvg: collaborator.type === Type.SHARE_TYPE_GROUP ? AccountGroupSvg : undefined,\n\t\t\t\t\t}\n\t\t\t\t})\n\t\t\t\t.filter(({ key }) => !this.selectedCollaboratorsKeys.includes(key))\n\t\t},\n\n\t\t/**\n\t\t * @return {string[]}\n\t\t */\n\t\tlistableSelectedCollaboratorsKeys() {\n\t\t\treturn this.selectedCollaboratorsKeys\n\t\t\t\t.filter(collaboratorKey => this.availableCollaborators[collaboratorKey].type !== Type.SHARE_TYPE_LINK)\n\t\t},\n\n\t\t/**\n\t\t * @return {import('../../store/albums.js').Collaborator[]}\n\t\t */\n\t\tselectedCollaborators() {\n\t\t\treturn this.selectedCollaboratorsKeys\n\t\t\t\t.map((collaboratorKey) => this.availableCollaborators[collaboratorKey])\n\t\t},\n\n\t\t/**\n\t\t * @return {boolean}\n\t\t */\n\t\tisPublicLinkSelected() {\n\t\t\treturn this.selectedCollaboratorsKeys.includes(`${Type.SHARE_TYPE_LINK}`)\n\t\t},\n\n\t\t/** @return {import('../../store/albums.js').Collaborator} */\n\t\tpublicLink() {\n\t\t\treturn this.availableCollaborators[Type.SHARE_TYPE_LINK]\n\t\t},\n\n\t\t/** @return {string} */\n\t\tpublicLinkURL() {\n\t\t\treturn `${window.location.protocol}//${window.location.host}${generateUrl(`apps/photos/public/${this.publicLink.id}`)}`\n\t\t},\n\n\t\t/**\n\t\t * @return {string} The album's filename based on its name. Useful to fetch the location information and content.\n\t\t */\n\t\talbumFileName() {\n\t\t\treturn this.$store.getters.getAlbumName(this.albumName)\n\t\t},\n\t},\n\n\twatch: {\n\t\tcollaborators(collaborators) {\n\t\t\tthis.populateCollaborators(collaborators)\n\t\t},\n\t},\n\n\tmounted() {\n\t\tthis.populateCollaborators(this.collaborators)\n\t},\n\n\tmethods: {\n\t\t...mapActions(['updateCollection']),\n\n\t\t/**\n\t\t * Fetch possible collaborators.\n\t\t *\n\t\t * @param {string} query\n\t\t */\n\t\tasync searchCollaborators(query) {\n\t\t\tif (query === undefined) {\n\t\t\t\treturn\n\t\t\t}\n\n\t\t\tquery = query.trim()\n\n\t\t\tif (query.length < this.config.minSearchStringLength) {\n\t\t\t\treturn\n\t\t\t}\n\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: query,\n\t\t\t\t\t\titemType: 'share-recipients',\n\t\t\t\t\t\tshareTypes: [\n\t\t\t\t\t\t\tType.SHARE_TYPE_USER,\n\t\t\t\t\t\t\tType.SHARE_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\t\t.map(collaborator => {\n\t\t\t\t\t\tswitch (collaborator.source) {\n\t\t\t\t\t\tcase 'users':\n\t\t\t\t\t\t\treturn { id: collaborator.id, label: collaborator.label, type: Type.SHARE_TYPE_USER }\n\t\t\t\t\t\tcase 'groups':\n\t\t\t\t\t\t\treturn { id: collaborator.id, label: collaborator.label, type: Type.SHARE_TYPE_GROUP }\n\t\t\t\t\t\tdefault:\n\t\t\t\t\t\t\tthrow new Error(`Invalid collaborator source ${collaborator.source}`)\n\t\t\t\t\t\t}\n\t\t\t\t\t})\n\n\t\t\t\tthis.availableCollaborators = {\n\t\t\t\t\t...this.availableCollaborators,\n\t\t\t\t\t...this.currentSearchResults.reduce(this.indexCollaborators, {}),\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\t/**\n\t\t * Populate selectedCollaboratorsKeys and availableCollaborators.\n\t\t *\n\t\t * @param {import('../../store/albums.js').Collaborator[]} collaborators - The list of collaborators\n\t\t */\n\t\tpopulateCollaborators(collaborators) {\n\t\t\tconst initialCollaborators = collaborators.reduce(this.indexCollaborators, {})\n\t\t\tthis.selectedCollaboratorsKeys = Object.keys(initialCollaborators)\n\t\t\tthis.availableCollaborators = {\n\t\t\t\t3: {\n\t\t\t\t\tid: '',\n\t\t\t\t\tlabel: t('photos', 'Public link'),\n\t\t\t\t\ttype: Type.SHARE_TYPE_LINK,\n\t\t\t\t},\n\t\t\t\t...this.availableCollaborators,\n\t\t\t\t...initialCollaborators,\n\t\t\t}\n\t\t},\n\n\t\t/**\n\t\t * @param {import('../../store/albums.js').IndexedCollaborators} collaborators - Index of collaborators\n\t\t * @param {import('../../store/albums.js').Collaborator} collaborator - A collaborator\n\t\t */\n\t\tindexCollaborators(collaborators, collaborator) {\n\t\t\treturn { ...collaborators, [`${collaborator.type}${collaborator.type === Type.SHARE_TYPE_LINK ? '' : ':'}${collaborator.type === Type.SHARE_TYPE_LINK ? '' : collaborator.id}`]: collaborator }\n\t\t},\n\n\t\tasync createPublicLinkForAlbum() {\n\t\t\tthis.selectEntity(`${Type.SHARE_TYPE_LINK}`)\n\t\t\tawait this.updateAlbumCollaborators()\n\t\t\tawait this.fetchCollection(\n\t\t\t\tthis.albumFileName,\n\t\t\t\t['<nc:location />', '<nc:dateRange />', '<nc:collaborators />']\n\t\t\t)\n\t\t},\n\n\t\tasync deletePublicLink() {\n\t\t\tthis.unselectEntity(`${Type.SHARE_TYPE_LINK}`)\n\t\t\tthis.availableCollaborators[3] = {\n\t\t\t\tid: '',\n\t\t\t\tlabel: t('photos', 'Public link'),\n\t\t\t\ttype: Type.SHARE_TYPE_LINK,\n\t\t\t}\n\t\t\tthis.publicLinkCopied = false\n\t\t\tawait this.updateAlbumCollaborators()\n\t\t},\n\n\t\tasync updateAlbumCollaborators() {\n\t\t\ttry {\n\t\t\t\tawait this.updateCollection({\n\t\t\t\t\tcollectionFileName: this.albumFileName,\n\t\t\t\t\tproperties: {\n\t\t\t\t\t\tcollaborators: this.selectedCollaborators,\n\t\t\t\t\t},\n\t\t\t\t})\n\t\t\t} catch (error) {\n\t\t\t\tlogger.error('[PublicAlbumContent] Error updating album', { error })\n\t\t\t\tshowError(this.t('photos', 'Failed to update album.'))\n\t\t\t}\n\t\t},\n\n\t\tasync copyPublicLink() {\n\t\t\tawait navigator.clipboard.writeText(this.publicLinkURL)\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\tthis.searchText = null\n\n\t\t\tif (this.selectedCollaboratorsKeys.includes(collaboratorKey)) {\n\t\t\t\treturn\n\t\t\t}\n\n\t\t\tthis.selectedCollaboratorsKeys.push(collaboratorKey)\n\t\t},\n\n\t\tunselectEntity(collaboratorKey) {\n\t\t\tconst index = this.selectedCollaboratorsKeys.indexOf(collaboratorKey)\n\n\t\t\tif (index === -1) {\n\t\t\t\treturn\n\t\t\t}\n\n\t\t\tthis.selectedCollaboratorsKeys.splice(index, 1)\n\t\t},\n\n\t\tt: translate,\n\t},\n}\n</script>\n<style lang=\"scss\" scoped>\n.manage-collaborators {\n\tdisplay: flex;\n\tflex-direction: column;\n\tpadding: 20px;\n\theight: 500px;\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\n\t\t&__input {\n\t\t\tposition: relative;\n\t\t\tdisplay: block;\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.loading-icon {\n\t\t\t\tposition: absolute;\n\t\t\t\ttop: calc(36px / 2 - 20px / 2);\n\t\t\t\tright: 8px;\n\t\t\t}\n\t\t}\n\n\t\t&__list {\n\t\t\tpadding: 8px;\n\t\t\theight: 350px;\n\t\t\toverflow: scroll;\n\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 !important;\n\t\t\t\t}\n\n\t\t\t\t&:hover {\n\t\t\t\t\tbackground: var(--color-background-dark);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t&--empty {\n\t\t\t\tmargin: 100px 0;\n\t\t\t}\n\t\t}\n\t}\n\n\t&__selection {\n\t\tdisplay: flex;\n\t\tflex-direction: column;\n\t\tmargin-top: 32px;\n\t\tflex-grow: 1;\n\n\t\t&__item {\n\t\t\tborder-radius: var(--border-radius-pill);\n\t\t\tpadding: 0 8px;\n\n\t\t\t&:hover {\n\t\t\t\tbackground: var(--color-background-dark);\n\t\t\t}\n\n\t\t\t:deep(.option) {\n\t\t\t\tgap: 4px;\n\t\t\t}\n\t\t}\n\t}\n\n\t.actions {\n\t\tdisplay: flex;\n\t\tmargin-top: 8px;\n\n\t\t&__public-link {\n\t\t\tdisplay: flex;\n\t\t\talign-items: center;\n\n\t\t\tbutton {\n\t\t\t\tmargin-left: 8px;\n\t\t\t}\n\t\t}\n\n\t\t&__slot {\n\t\t\tflex-grow: 1;\n\t\t\tdisplay: flex;\n\t\t\tjustify-content: flex-end;\n\t\t\talign-items: center;\n\t\t}\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.use[3]!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./CollaboratorsSelectionForm.vue?vue&type=style&index=0&id=a392a178&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!./CollaboratorsSelectionForm.vue?vue&type=style&index=0&id=a392a178&prod&lang=scss&scoped=true\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./CollaboratorsSelectionForm.vue?vue&type=template&id=a392a178&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=a392a178&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 \"a392a178\",\n null\n \n)\n\nexport default component.exports"],"names":["name","data","fetchSemaphore","SemaphoreWithPriority","loadingCollection","loadingCollectionFiles","errorFetchingCollection","errorFetchingCollectionFiles","mixins","AbortControllerMixin","methods","mapActions","async","collectionFileName","extraProps","client","this","collection","fetchCollection","signal","abortController","addCollections","collections","error","_error$response","response","status","logger","showError","t","mappers","arguments","length","undefined","fetchSemaphoreSymbol","acquire","fetchedFiles","fetchCollectionFiles","fileIds","map","file","fileid","toString","forEach","mapper","appendFiles","$store","commit","_error$response2","release","___CSS_LOADER_EXPORT___","push","module","id","components","MapMarker","AccountMultiplePlus","Send","NcButton","NcLoadingIcon","NcTextField","CollaboratorsSelectionForm","props","album","type","Object","default","displayBackButton","Boolean","showCollaboratorView","albumName","albumLocation","loading","computed","editMode","sharingEnabled","OC","Share","albumFileName","getters","getAlbumName","mounted","_this$album$location","basename","location","$nextTick","$refs","nameInput","$el","getElementsByTagName","focus","submit","collaborators","handleUpdateAlbum","handleCreateAlbum","createCollection","filename","nbItems","lastPhoto","date","moment","format","updateCollection","properties","$emit","renameCollection","newBaseName","back","translate","options","styleTagTransform","setAttributes","insert","domAPI","insertStyleElement","_vm","_c","_self","attrs","scopedSlots","_u","key","fn","_ref","staticClass","on","$event","_v","_s","trim","proxy","preventDefault","apply","ref","_e","Close","AccountGroup","ContentCopy","Check","Earth","NcListItemIcon","NcSelect","FetchCollectionContentMixin","String","required","Array","allowPublicLink","searchText","availableCollaborators","selectedCollaboratorsKeys","currentSearchResults","loadingCollaborators","randomId","Math","random","substring","publicLinkCopied","collaboratorTypes","Type","config","minSearchStringLength","parseInt","searchResults","filter","getCurrentUser","uid","collaborator","concat","iconSvg","AccountGroupSvg","_ref2","includes","listableSelectedCollaboratorsKeys","collaboratorKey","selectedCollaborators","isPublicLinkSelected","publicLink","publicLinkURL","window","protocol","host","generateUrl","watch","populateCollaborators","query","axios","generateOcsUrl","params","search","itemType","shareTypes","ocs","source","label","Error","reduce","indexCollaborators","errorFetchingCollaborators","initialCollaborators","keys","selectEntity","updateAlbumCollaborators","unselectEntity","navigator","clipboard","writeText","setTimeout","index","indexOf","splice","clear-search-on-blur","searchCollaborators","model","value","callback","$$v","expression","_l","SHARE_TYPE_USER","SHARE_TYPE_GROUP","collaboratorLabel","slot","copyPublicLink","deletePublicLink","createPublicLinkForAlbum","_t"],"sourceRoot":""}