diff options
Diffstat (limited to 'js/photos-src_mixins_FetchFilesMixin_js-src_mixins_FilesByMonthMixin_js-src_components_Actions_ActionDo-a6eb03.js')
-rw-r--r-- | js/photos-src_mixins_FetchFilesMixin_js-src_mixins_FilesByMonthMixin_js-src_components_Actions_ActionDo-a6eb03.js | 555 |
1 files changed, 555 insertions, 0 deletions
diff --git a/js/photos-src_mixins_FetchFilesMixin_js-src_mixins_FilesByMonthMixin_js-src_components_Actions_ActionDo-a6eb03.js b/js/photos-src_mixins_FetchFilesMixin_js-src_mixins_FilesByMonthMixin_js-src_components_Actions_ActionDo-a6eb03.js new file mode 100644 index 00000000..5b56646b --- /dev/null +++ b/js/photos-src_mixins_FetchFilesMixin_js-src_mixins_FilesByMonthMixin_js-src_components_Actions_ActionDo-a6eb03.js @@ -0,0 +1,555 @@ +"use strict"; +(self["webpackChunkphotos"] = self["webpackChunkphotos"] || []).push([["src_mixins_FetchFilesMixin_js-src_mixins_FilesByMonthMixin_js-src_components_Actions_ActionDo-a6eb03"],{ + +/***/ "./node_modules/babel-loader/lib/index.js!./node_modules/vue-loader/lib/index.js??vue-loader-options!./src/components/Actions/ActionDownload.vue?vue&type=script&lang=js&": +/*!********************************************************************************************************************************************************************************!*\ + !*** ./node_modules/babel-loader/lib/index.js!./node_modules/vue-loader/lib/index.js??vue-loader-options!./src/components/Actions/ActionDownload.vue?vue&type=script&lang=js& ***! + \********************************************************************************************************************************************************************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) +/* harmony export */ }); +/* harmony import */ var vuex__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! vuex */ "./node_modules/vuex/dist/vuex.esm.js"); +/* harmony import */ var _nextcloud_router__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @nextcloud/router */ "./node_modules/@nextcloud/router/dist/index.js"); +/* harmony import */ var _nextcloud_vue__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @nextcloud/vue */ "./node_modules/@nextcloud/vue/dist/ncvuecomponents.js"); +/* harmony import */ var _nextcloud_vue__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_nextcloud_vue__WEBPACK_IMPORTED_MODULE_1__); +// +// +// +// +// +// +// +// +// +// +// +// +// +// +// +// +// +// +// +// +// +// +// +// +// +// +// +// +// +// +// + + + +/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ({ + name: 'ActionDownload', + components: { + NcActionLink: _nextcloud_vue__WEBPACK_IMPORTED_MODULE_1__.NcActionLink + }, + props: { + title: { + type: String, + required: true + }, + selectedFileIds: { + type: Array, + required: true + } + }, + computed: { ...(0,vuex__WEBPACK_IMPORTED_MODULE_2__.mapGetters)(['files']), + + downloadUrl() { + const params = new URLSearchParams(); + params.append('files', JSON.stringify(this.fileNames)); + return (0,_nextcloud_router__WEBPACK_IMPORTED_MODULE_0__.generateUrl)(`/apps/files/ajax/download.php?${params}`); + }, + + fileNames() { + return this.selectedFileIds.map(fileId => this.files[fileId].filename); + } + + } +}); + +/***/ }), + +/***/ "./src/mixins/FetchFilesMixin.js": +/*!***************************************!*\ + !*** ./src/mixins/FetchFilesMixin.js ***! + \***************************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) +/* harmony export */ }); +/* harmony import */ var _services_logger_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../services/logger.js */ "./src/services/logger.js"); +/* harmony import */ var _services_PhotoSearch_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../services/PhotoSearch.js */ "./src/services/PhotoSearch.js"); +/* harmony import */ var _utils_semaphoreWithPriority_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../utils/semaphoreWithPriority.js */ "./src/utils/semaphoreWithPriority.js"); +/* harmony import */ var _AbortControllerMixin_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./AbortControllerMixin.js */ "./src/mixins/AbortControllerMixin.js"); +/* provided dependency */ var console = __webpack_require__(/*! ./node_modules/console-browserify/index.js */ "./node_modules/console-browserify/index.js"); +/** + * @copyright Copyright (c) 2022 Louis Chemineau <louis@chmn.me> + * + * @author Louis Chemineau <louis@chmn.me> + * + * @license AGPL-3.0-or-later + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License as + * published by the Free Software Foundation, either version 3 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + * + */ + + + + +/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ({ + name: 'FetchFilesMixin', + mixins: [_AbortControllerMixin_js__WEBPACK_IMPORTED_MODULE_3__["default"]], + + data() { + return { + errorFetchingFiles: null, + loadingFiles: false, + doneFetchingFiles: false, + semaphore: new _utils_semaphoreWithPriority_js__WEBPACK_IMPORTED_MODULE_2__["default"](30), + fetchSemaphore: new _utils_semaphoreWithPriority_js__WEBPACK_IMPORTED_MODULE_2__["default"](1), + semaphoreSymbol: null, + fetchedFileIds: [] + }; + }, + + watch: { + $route() { + this.resetFetchFilesState(); + } + + }, + methods: { + /** + * @param {string} path - Path to pass to getPhotos. + * @param {object} options - Options to pass to getPhotos. + * @param {string[]} [blacklist=[]] - Array of ids to filter out. + * @return {Promise<string[]>} - The next batch of data depending on global offset. + */ + async fetchFiles() { + let path = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : ''; + let options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; + let blacklist = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : []; + + if (this.doneFetchingFiles || this.loadingFiles) { + return []; + } + + const semaphoreSymbol = await this.semaphore.acquire(() => 0, 'fetchFiles'); + const fetchSemaphoreSymbol = await this.fetchSemaphore.acquire(); + + try { + this.errorFetchingFiles = null; + this.loadingFiles = true; + this.semaphoreSymbol = semaphoreSymbol; + const numberOfImagesPerBatch = 200; // Load next batch of images + + const fetchedFiles = await (0,_services_PhotoSearch_js__WEBPACK_IMPORTED_MODULE_1__["default"])(path, { + firstResult: this.fetchedFileIds.length, + nbResults: numberOfImagesPerBatch, + ...options, + signal: this.abortController.signal + }); // If we get less files than requested that means we got to the end + + if (fetchedFiles.length !== numberOfImagesPerBatch) { + this.doneFetchingFiles = true; + } + + const fileIds = fetchedFiles.map(file => file.fileid).filter(fileId => !this.fetchedFileIds.includes(fileId)); // Filter to prevent duplicate fileIds. + + this.fetchedFileIds.push(...fileIds.map(fileId => fileId.toString()).filter(fileId => !blacklist.includes(fileId))); + this.$store.dispatch('appendFiles', fetchedFiles); + _services_logger_js__WEBPACK_IMPORTED_MODULE_0__["default"].debug(`[FetchFilesMixin] Fetched ${fileIds.length} new files: `, fileIds); + return fileIds; + } catch (error) { + if (error.response?.status === 404) { + this.errorFetchingFiles = 404; + } else if (error.code === 'ERR_CANCELED') { + return []; + } else { + this.errorFetchingFiles = error; + } // cancelled request, moving on... + + + _services_logger_js__WEBPACK_IMPORTED_MODULE_0__["default"].error('Error fetching files', error); + console.error(error); + } finally { + this.loadingFiles = false; + this.semaphore.release(semaphoreSymbol); + this.fetchSemaphore.release(fetchSemaphoreSymbol); + } + + return []; + }, + + resetFetchFilesState() { + this.doneFetchingFiles = false; + this.errorFetchingFiles = null; + this.loadingFiles = false; + this.fetchedFileIds = []; + } + + } +}); + +/***/ }), + +/***/ "./src/mixins/FilesByMonthMixin.js": +/*!*****************************************!*\ + !*** ./src/mixins/FilesByMonthMixin.js ***! + \*****************************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) +/* harmony export */ }); +/** + * @copyright Copyright (c) 2022 Louis Chemineau <louis@chmn.me> + * + * @author Louis Chemineau <louis@chmn.me> + * + * @license AGPL-3.0-or-later + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License as + * published by the Free Software Foundation, either version 3 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + * + */ +/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ({ + name: 'FilesByMonthMixin', + computed: { + /** + * @return {object<String, []>} + */ + fileIdsByMonth() { + const filesByMonth = {}; + + for (const fileId of this.fetchedFileIds) { + const file = this.files[fileId]; + filesByMonth[file.month] = filesByMonth[file.month] ?? []; + filesByMonth[file.month].push(file.fileid); + } // Sort files in sections. + + + Object.keys(filesByMonth).forEach(month => filesByMonth[month].sort(this.sortFilesByTimestamp)); + return filesByMonth; + }, + + /** + * @return {string[]} + */ + monthsList() { + return Object.keys(this.fileIdsByMonth).sort((month1, month2) => month1 > month2 ? -1 : 1); + } + + } +}); + +/***/ }), + +/***/ "./src/services/PhotoSearch.js": +/*!*************************************!*\ + !*** ./src/services/PhotoSearch.js ***! + \*************************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ "default": () => (/* export default binding */ __WEBPACK_DEFAULT_EXPORT__) +/* harmony export */ }); +/* harmony import */ var _utils_fileUtils_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../utils/fileUtils.js */ "./src/utils/fileUtils.js"); +/* harmony import */ var _nextcloud_auth__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @nextcloud/auth */ "./node_modules/@nextcloud/auth/dist/index.esm.js"); +/* harmony import */ var _AllowedMimes_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./AllowedMimes.js */ "./src/services/AllowedMimes.js"); +/* harmony import */ var _DavClient_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./DavClient.js */ "./src/services/DavClient.js"); +/* harmony import */ var _DavRequest_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./DavRequest.js */ "./src/services/DavRequest.js"); +/* harmony import */ var _nextcloud_moment__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @nextcloud/moment */ "./node_modules/@nextcloud/moment/dist/index.js"); +/* harmony import */ var _nextcloud_moment__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(_nextcloud_moment__WEBPACK_IMPORTED_MODULE_5__); +/* harmony import */ var _nextcloud_router__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! @nextcloud/router */ "./node_modules/@nextcloud/router/dist/index.js"); +/** + * @copyright Copyright (c) 2019 John Molakvoæ <skjnldsv@protonmail.com> + * + * @author John Molakvoæ <skjnldsv@protonmail.com> + * + * @license AGPL-3.0-or-later + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License as + * published by the Free Software Foundation, either version 3 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + * + */ + + + + + + + +/** + * List files from a folder and filter out unwanted mimes + * + * @param {object} path the lookup path + * @param {object} [options] used for the cancellable requests + * @param {number} [options.firstResult=0] Index of the first result that we want (starts at 0) + * @param {number} [options.nbResults=200] The number of file to fetch + * @param {string[]} [options.mimesType=allMimes] Mime type of the files + * @param {boolean} [options.full=false] get full data of the files + * @param {boolean} [options.onThisDay=false] get only items from this day of year + * @param {boolean} [options.onlyFavorites=false] get only favorite items + * @return {Promise<object[]>} the file list + */ + +/* harmony default export */ async function __WEBPACK_DEFAULT_EXPORT__() { + let path = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : ''; + let options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; + // default function options + options = { + firstResult: 0, + nbResults: 200, + mimesType: _AllowedMimes_js__WEBPACK_IMPORTED_MODULE_2__.allMimes, + onThisDay: false, + onlyFavorites: false, + ...options + }; + const prefixPath = `/files/${(0,_nextcloud_auth__WEBPACK_IMPORTED_MODULE_1__.getCurrentUser)().uid}`; // generating the search or condition + // based on the allowed mimetypes + + const orMime = options.mimesType.reduce((str, mime) => `${str} + <d:eq> + <d:prop> + <d:getcontenttype/> + </d:prop> + <d:literal>${mime}</d:literal> + </d:eq> + `, ''); + const eqFavorites = options.onlyFavorites ? `<d:eq> + <d:prop> + <oc:favorite/> + </d:prop> + <d:literal>1</d:literal> + </d:eq>` : ''; + const onThisDay = options.onThisDay ? `<d:or>${Array(20).fill(1).map((_, years) => { + const start = _nextcloud_moment__WEBPACK_IMPORTED_MODULE_5___default()(Date.now()).startOf('day').subtract(3, 'd').subtract(years + 1, 'y'); + const end = _nextcloud_moment__WEBPACK_IMPORTED_MODULE_5___default()(Date.now()).endOf('day').add(3, 'd').subtract(years + 1, 'y'); + return `<d:and> + <d:gt> + <d:prop> + <d:getlastmodified /> + </d:prop> + <d:literal>${start.format((_nextcloud_moment__WEBPACK_IMPORTED_MODULE_5___default().defaultFormatUtc))}</d:literal> + </d:gt> + <d:lt> + <d:prop> + <d:getlastmodified /> + </d:prop> + <d:literal>${end.format((_nextcloud_moment__WEBPACK_IMPORTED_MODULE_5___default().defaultFormatUtc))}</d:literal> + </d:lt> + </d:and>`; + }).join('\n')}</d:or>` : ''; + options = Object.assign({ + method: 'SEARCH', + headers: { + 'content-Type': 'text/xml' + }, + data: `<?xml version="1.0" encoding="UTF-8"?> + <d:searchrequest xmlns:d="DAV:" + xmlns:oc="http://owncloud.org/ns" + xmlns:nc="http://nextcloud.org/ns" + xmlns:ns="https://github.com/icewind1991/SearchDAV/ns" + xmlns:ocs="http://open-collaboration-services.org/ns"> + <d:basicsearch> + <d:select> + <d:prop> + ${_DavRequest_js__WEBPACK_IMPORTED_MODULE_4__.props} + </d:prop> + </d:select> + <d:from> + <d:scope> + <d:href>${prefixPath}/${path}</d:href> + <d:depth>infinity</d:depth> + </d:scope> + </d:from> + <d:where> + <d:and> + <d:or> + ${orMime} + </d:or> + ${eqFavorites} + ${onThisDay} + </d:and> + </d:where> + <d:orderby> + <d:order> + <d:prop><d:getlastmodified/></d:prop> + <d:descending/> + </d:order> + </d:orderby> + <d:limit> + <d:nresults>${options.nbResults}</d:nresults> + <ns:firstresult>${options.firstResult}</ns:firstresult> + </d:limit> + </d:basicsearch> + </d:searchrequest>`, + deep: true, + details: true + }, options); + const response = await _DavClient_js__WEBPACK_IMPORTED_MODULE_3__["default"].getDirectoryContents('', options); + return response.data.map(data => (0,_utils_fileUtils_js__WEBPACK_IMPORTED_MODULE_0__.genFileInfo)(data)).map(file => ({ ...file, + source: (0,_nextcloud_router__WEBPACK_IMPORTED_MODULE_6__.generateRemoteUrl)(`dav${file.filename}`) + })); +} + +/***/ }), + +/***/ "./src/components/Actions/ActionDownload.vue": +/*!***************************************************!*\ + !*** ./src/components/Actions/ActionDownload.vue ***! + \***************************************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) +/* harmony export */ }); +/* harmony import */ var _ActionDownload_vue_vue_type_template_id_1aefa300___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./ActionDownload.vue?vue&type=template&id=1aefa300& */ "./src/components/Actions/ActionDownload.vue?vue&type=template&id=1aefa300&"); +/* harmony import */ var _ActionDownload_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./ActionDownload.vue?vue&type=script&lang=js& */ "./src/components/Actions/ActionDownload.vue?vue&type=script&lang=js&"); +/* harmony import */ var _node_modules_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! !../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js */ "./node_modules/vue-loader/lib/runtime/componentNormalizer.js"); + + + + + +/* normalize component */ +; +var component = (0,_node_modules_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_2__["default"])( + _ActionDownload_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__["default"], + _ActionDownload_vue_vue_type_template_id_1aefa300___WEBPACK_IMPORTED_MODULE_0__.render, + _ActionDownload_vue_vue_type_template_id_1aefa300___WEBPACK_IMPORTED_MODULE_0__.staticRenderFns, + false, + null, + null, + null + +) + +/* hot reload */ +if (false) { var api; } +component.options.__file = "src/components/Actions/ActionDownload.vue" +/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (component.exports); + +/***/ }), + +/***/ "./src/components/Actions/ActionDownload.vue?vue&type=script&lang=js&": +/*!****************************************************************************!*\ + !*** ./src/components/Actions/ActionDownload.vue?vue&type=script&lang=js& ***! + \****************************************************************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) +/* harmony export */ }); +/* harmony import */ var _node_modules_babel_loader_lib_index_js_node_modules_vue_loader_lib_index_js_vue_loader_options_ActionDownload_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ActionDownload.vue?vue&type=script&lang=js& */ "./node_modules/babel-loader/lib/index.js!./node_modules/vue-loader/lib/index.js??vue-loader-options!./src/components/Actions/ActionDownload.vue?vue&type=script&lang=js&"); + /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (_node_modules_babel_loader_lib_index_js_node_modules_vue_loader_lib_index_js_vue_loader_options_ActionDownload_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__["default"]); + +/***/ }), + +/***/ "./src/components/Actions/ActionDownload.vue?vue&type=template&id=1aefa300&": +/*!**********************************************************************************!*\ + !*** ./src/components/Actions/ActionDownload.vue?vue&type=template&id=1aefa300& ***! + \**********************************************************************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ "render": () => (/* reexport safe */ _node_modules_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_node_modules_vue_loader_lib_index_js_vue_loader_options_ActionDownload_vue_vue_type_template_id_1aefa300___WEBPACK_IMPORTED_MODULE_0__.render), +/* harmony export */ "staticRenderFns": () => (/* reexport safe */ _node_modules_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_node_modules_vue_loader_lib_index_js_vue_loader_options_ActionDownload_vue_vue_type_template_id_1aefa300___WEBPACK_IMPORTED_MODULE_0__.staticRenderFns) +/* harmony export */ }); +/* harmony import */ var _node_modules_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_node_modules_vue_loader_lib_index_js_vue_loader_options_ActionDownload_vue_vue_type_template_id_1aefa300___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!../../../node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ActionDownload.vue?vue&type=template&id=1aefa300& */ "./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/vue-loader/lib/index.js??vue-loader-options!./src/components/Actions/ActionDownload.vue?vue&type=template&id=1aefa300&"); + + +/***/ }), + +/***/ "./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/vue-loader/lib/index.js??vue-loader-options!./src/components/Actions/ActionDownload.vue?vue&type=template&id=1aefa300&": +/*!*************************************************************************************************************************************************************************************************************************!*\ + !*** ./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/vue-loader/lib/index.js??vue-loader-options!./src/components/Actions/ActionDownload.vue?vue&type=template&id=1aefa300& ***! + \*************************************************************************************************************************************************************************************************************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ "render": () => (/* binding */ render), +/* harmony export */ "staticRenderFns": () => (/* binding */ staticRenderFns) +/* harmony export */ }); +var render = function () { + var _vm = this + var _h = _vm.$createElement + var _c = _vm._self._c || _h + return _c( + "NcActionLink", + { + attrs: { + "close-after-click": true, + href: _vm.downloadUrl, + download: _vm.downloadUrl, + "aria-label": _vm.title, + }, + }, + [ + _vm._v("\n\t" + _vm._s(_vm.title) + "\n\t"), + _vm._t("icon", null, { slot: "icon" }), + ], + 2 + ) +} +var staticRenderFns = [] +render._withStripped = true + + + +/***/ }) + +}]); +//# sourceMappingURL=photos-src_mixins_FetchFilesMixin_js-src_mixins_FilesByMonthMixin_js-src_components_Actions_ActionDo-a6eb03.js.map?v=c553c993a1b81dc8447c
\ No newline at end of file |