Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/nextcloud/photos.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCorentin Mors <corentin.mors@dashlane.com>2020-10-13 17:52:33 +0300
committerCorentin Mors <corentin.mors@dashlane.com>2020-10-13 17:52:33 +0300
commit1779bd1cc74c1cbfc0cc6be1e194d8b3d4c022c0 (patch)
treea21a8e88feebf5d6f4759b2552d0859a615a5782 /js/photos-5.js.map
parent5c2f0f2afdc7c07ab1509a6d844c0767e24ba6c7 (diff)
Readd loading icon
Signed-off-by: Corentin Mors <corentin.mors@dashlane.com>
Diffstat (limited to 'js/photos-5.js.map')
-rw-r--r--js/photos-5.js.map2
1 files changed, 1 insertions, 1 deletions
diff --git a/js/photos-5.js.map b/js/photos-5.js.map
index 10a2bdbb..6d930056 100644
--- a/js/photos-5.js.map
+++ b/js/photos-5.js.map
@@ -1 +1 @@
-{"version":3,"file":"photos-5.js?v=a63c242973f45b36be88","sources":["webpack:///./src/components/FileVirtualGrid.vue?c0ab","webpack:///./src/components/SeparatorVirtualGrid.vue?8517","webpack:///./src/views/Timeline.vue?9e76","webpack:///./src/components/FileVirtualGrid.vue?f66c","webpack:///./src/components/SeparatorVirtualGrid.vue?288a","webpack:///./src/views/Timeline.vue?8a4c","webpack:///./src/components/FileVirtualGrid.vue?6cf5","webpack:///./src/components/SeparatorVirtualGrid.vue?85ee","webpack:///./src/views/Timeline.vue?4e14","webpack:///./src/components/FileVirtualGrid.vue?420d","webpack:///./src/components/SeparatorVirtualGrid.vue?fd5c","webpack:///./src/views/Timeline.vue?33e9","webpack:///./src/assets/grid-sizes.js","webpack:///./src/components/FileVirtualGrid.vue","webpack:///./src/components/FileVirtualGrid.vue?950a","webpack:///./src/components/FileVirtualGrid.vue?ad0a","webpack:///./src/components/FileVirtualGrid.vue?ce24","webpack:///./src/components/SeparatorVirtualGrid.vue","webpack:///./src/components/SeparatorVirtualGrid.vue?bd8e","webpack:///./src/components/SeparatorVirtualGrid.vue?11be","webpack:///./src/components/SeparatorVirtualGrid.vue?c4d6","webpack:///./src/mixins/GridConfig.js","webpack:///./src/patchedRequest.js","webpack:///./src/services/DavClient.js","webpack:///./src/services/DavRequest.js","webpack:///./src/services/GridConfig.js","webpack:///./src/services/PhotoSearch.js","webpack:///./src/views/Timeline.vue","webpack:///./src/views/Timeline.vue?21b8","webpack:///./src/views/Timeline.vue?e2ae","webpack:///./src/views/Timeline.vue?cf41"],"sourcesContent":["function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } }\n\nfunction _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"next\", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"throw\", err); } _next(undefined); }); }; }\n\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\nimport { generateRemoteUrl, generateUrl } from '@nextcloud/router';\nimport { getCurrentUser } from '@nextcloud/auth';\nexport default {\n name: 'FileVirtualGrid',\n inheritAttrs: false,\n props: {\n item: {\n type: Object,\n required: true\n }\n },\n data: function data() {\n return {\n loaded: false\n };\n },\n computed: {\n davPath: function davPath() {\n return generateRemoteUrl(\"dav/files/\".concat(getCurrentUser().uid)) + this.item.injected.filename;\n },\n ariaUuid: function ariaUuid() {\n return \"image-\".concat(this.item.injected.fileid);\n },\n ariaLabel: function ariaLabel() {\n return t('photos', 'Open the full size \"{name}\" image', {\n name: this.item.injected.basename\n });\n },\n isImage: function isImage() {\n return this.item.injected.mime.startsWith('image');\n },\n src: function src() {\n return generateUrl(\"/core/preview?fileId=\".concat(this.item.injected.fileid, \"&x=\", 256, \"&y=\", 256, \"&a=false&v=\").concat(this.item.injected.etag));\n }\n },\n beforeDestroy: function beforeDestroy() {\n // cancel any pending load\n this.$refs.src = '';\n },\n methods: {\n openViewer: function openViewer() {\n var _this = this;\n\n OCA.Viewer.open({\n path: this.item.injected.filename,\n list: this.item.injected.list,\n loadMore: function () {\n var _loadMore = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee() {\n return regeneratorRuntime.wrap(function _callee$(_context) {\n while (1) {\n switch (_context.prev = _context.next) {\n case 0:\n _context.next = 2;\n return _this.item.injected.loadMore(true);\n\n case 2:\n return _context.abrupt(\"return\", _context.sent);\n\n case 3:\n case \"end\":\n return _context.stop();\n }\n }\n }, _callee);\n }));\n\n function loadMore() {\n return _loadMore.apply(this, arguments);\n }\n\n return loadMore;\n }()\n });\n },\n\n /** When the image is fully loaded by browser we remove the placeholder */\n onLoad: function onLoad() {\n this.loaded = true;\n }\n }\n};","//\n//\n//\n//\n//\n//\n//\nexport default {\n name: 'SeparatorVirtualGrid',\n inheritAttrs: false,\n props: {\n item: {\n type: Object,\n required: true\n }\n }\n};","function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } }\n\nfunction _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"next\", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"throw\", err); } _next(undefined); }); }; }\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\nimport * as moment from 'moment';\nimport { mapGetters } from 'vuex';\nimport getPhotos from '../services/PhotoSearch';\nimport EmptyContent from '../components/EmptyContent';\nimport FileVirtualGrid from '../components/FileVirtualGrid';\nimport SeparatorVirtualGrid from '../components/SeparatorVirtualGrid';\nimport VirtualGrid from 'vue-virtual-grid';\nimport Navigation from '../components/Navigation';\nimport cancelableRequest from '../utils/CancelableRequest';\nimport GridConfigMixin from '../mixins/GridConfig';\nexport default {\n name: 'Timeline',\n components: {\n EmptyContent: EmptyContent,\n VirtualGrid: VirtualGrid,\n Navigation: Navigation\n },\n mixins: [GridConfigMixin],\n props: {\n loading: {\n type: Boolean,\n required: true\n },\n onlyFavorites: {\n type: Boolean,\n default: false\n },\n rootTitle: {\n type: String,\n required: true\n },\n path: {\n type: String,\n default: ''\n }\n },\n data: function data() {\n return {\n cancelRequest: null,\n done: false,\n error: null,\n page: 0,\n lastSection: ''\n };\n },\n computed: _objectSpread(_objectSpread({}, mapGetters(['files', 'timeline'])), {}, {\n // list of loaded medias\n fileList: function fileList() {\n var _this = this;\n\n return this.timeline.map(function (fileId) {\n return _this.files[fileId];\n });\n },\n // list of displayed content in the grid (titles + medias)\n contentList: function contentList() {\n var _this2 = this;\n\n /** The goal of this flat map is to return an array of images separated by titles (months)\n * ie: [{month1}, {image1}, {image2}, {month2}, {image3}, {image4}, {image5}]\n * First we get the current month+year of the image\n * We compare it to the previous image month+year\n * If there is a difference we have to insert a title object before the current image\n * If it's equal we just add the current image to the array\n * Note: the injected param of objects are used to pass custom params to the grid lib\n * In our case injected could be an image/video (aka file) or a title (year/month)\n * Note2: titles are rendered full width and images are rendered on 1 column and 256x256 ratio\n */\n return this.fileList.flatMap(function (file, index) {\n var _this2$timeline;\n\n var finalArray = [];\n\n var currentSection = _this2.getFormatedDate(file.lastmod, 'YYYY MMMM');\n\n if (currentSection !== _this2.getFormatedDate((_this2$timeline = _this2.timeline[index - 1]) === null || _this2$timeline === void 0 ? void 0 : _this2$timeline.lastmod, 'YYYY MMMM') && _this2.lastSection !== currentSection) {\n finalArray.push({\n id: \"title-\".concat(index),\n injected: {\n year: _this2.getFormatedDate(file.lastmod, 'YYYY'),\n month: _this2.getFormatedDate(file.lastmod, 'MMMM')\n },\n height: 90,\n columnSpan: 0,\n // means full width\n newRow: true,\n renderComponent: SeparatorVirtualGrid\n });\n _this2.lastSection = currentSection; // we keep track of the last section for the next batch\n }\n\n finalArray.push({\n id: \"img-\".concat(file.fileid),\n injected: _objectSpread(_objectSpread({}, file), {}, {\n list: _this2.fileList,\n loadMore: _this2.getContent\n }),\n width: 256,\n height: 256,\n columnSpan: 1,\n renderComponent: FileVirtualGrid\n });\n return finalArray;\n });\n },\n // is current folder empty?\n isEmpty: function isEmpty() {\n return this.fileList.length === 0;\n }\n }),\n watch: {\n onlyFavorites: function onlyFavorites() {\n var _this3 = this;\n\n return _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee() {\n return regeneratorRuntime.wrap(function _callee$(_context) {\n while (1) {\n switch (_context.prev = _context.next) {\n case 0:\n // reset component\n _this3.resetState();\n\n _this3.getContent();\n\n case 2:\n case \"end\":\n return _context.stop();\n }\n }\n }, _callee);\n }))();\n }\n },\n beforeMount: function beforeMount() {\n this.getContent();\n },\n beforeDestroy: function beforeDestroy() {\n // cancel any pending requests\n if (this.cancelRequest) {\n this.cancelRequest('Changed view');\n }\n },\n methods: {\n /** Return next batch of data depending on global offset\n * @param {boolean} doReturn Returns a Promise with the list instead of a boolean\n * @returns {Promise<boolean>} Returns a Promise with a boolean that stops infinite loading\n */\n getContent: function getContent(doReturn) {\n var _this4 = this;\n\n return _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee2() {\n var _cancelableRequest, request, cancel, numberOfImagesPerBatch, files;\n\n return regeneratorRuntime.wrap(function _callee2$(_context2) {\n while (1) {\n switch (_context2.prev = _context2.next) {\n case 0:\n if (!_this4.done) {\n _context2.next = 2;\n break;\n }\n\n return _context2.abrupt(\"return\", Promise.resolve(true));\n\n case 2:\n // cancel any pending requests\n if (_this4.cancelRequest) {\n _this4.cancelRequest('Changed view');\n } // if we don't already have some cached data let's show a loader\n\n\n if (_this4.timeline.length === 0) {\n _this4.$emit('update:loading', true);\n } // done loading even with errors\n\n\n _cancelableRequest = cancelableRequest(getPhotos), request = _cancelableRequest.request, cancel = _cancelableRequest.cancel;\n _this4.cancelRequest = cancel;\n numberOfImagesPerBatch = _this4.gridConfig.count * 5; // loading 5 rows\n\n _context2.prev = 7;\n _context2.next = 10;\n return request(_this4.onlyFavorites, {\n page: _this4.page,\n // offset is incremented +1 by the virtualgrid lib\n perPage: numberOfImagesPerBatch\n });\n\n case 10:\n files = _context2.sent;\n\n // If we get less files than requested that means we got to the end\n if (files.length !== numberOfImagesPerBatch) {\n _this4.done = true;\n }\n\n _this4.$store.dispatch('updateTimeline', files);\n\n _this4.$store.dispatch('appendFiles', files);\n\n _this4.page += 1;\n\n if (!doReturn) {\n _context2.next = 17;\n break;\n }\n\n return _context2.abrupt(\"return\", Promise.resolve(files));\n\n case 17:\n return _context2.abrupt(\"return\", Promise.resolve(false));\n\n case 20:\n _context2.prev = 20;\n _context2.t0 = _context2[\"catch\"](7);\n\n if (_context2.t0.response && _context2.t0.response.status) {\n if (_context2.t0.response.status === 404) {\n _this4.error = 404;\n setTimeout(function () {\n _this4.$router.push({\n name: _this4.$route.name\n });\n }, 3000);\n } else {\n _this4.error = _context2.t0;\n }\n } // cancelled request, moving on...\n\n\n console.error('Error fetching timeline', _context2.t0);\n return _context2.abrupt(\"return\", Promise.resolve(true));\n\n case 25:\n _context2.prev = 25;\n\n // done loading even with errors\n _this4.$emit('update:loading', false);\n\n _this4.cancelRequest = null;\n return _context2.finish(25);\n\n case 29:\n case \"end\":\n return _context2.stop();\n }\n }\n }, _callee2, null, [[7, 20, 25, 29]]);\n }))();\n },\n\n /**\n * Reset this component data to a pristine state\n */\n resetState: function resetState() {\n this.$store.dispatch('resetTimeline');\n this.done = false;\n this.error = null;\n this.page = 0;\n this.$emit('update:loading', true);\n this.$refs.virtualgrid.resetGrid();\n },\n getFormatedDate: function getFormatedDate(string, format) {\n return moment(string).format(format);\n }\n }\n};","// Imports\nvar ___CSS_LOADER_API_IMPORT___ = require(\"../../node_modules/css-loader/dist/runtime/api.js\");\nexports = ___CSS_LOADER_API_IMPORT___(false);\n// Module\nexports.push([module.id, \"@charset \\\"UTF-8\\\";\\n/**\\n * @copyright Copyright (c) 2019 John Molakvoæ <skjnldsv@protonmail.com>\\n *\\n * @author John Molakvoæ <skjnldsv@protonmail.com>\\n *\\n * @license GNU AGPL version 3 or any later version\\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.file[data-v-5537a555],\\n.folder[data-v-5537a555] {\\n position: relative;\\n display: flex;\\n align-items: center;\\n justify-content: center;\\n -webkit-user-select: none;\\n -moz-user-select: none;\\n -ms-user-select: none;\\n user-select: none;\\n border-radius: var(--border-radius);\\n overflow: hidden;\\n}\\n.file .cover[data-v-5537a555],\\n .folder .cover[data-v-5537a555] {\\n z-index: 2;\\n width: 100%;\\n padding-bottom: 100%;\\n transition: opacity var(--animation-quick) ease-in-out;\\n opacity: 0;\\n background-color: var(--color-main-text);\\n}\\n.file.active .cover[data-v-5537a555], .file:active .cover[data-v-5537a555], .file:hover .cover[data-v-5537a555], .file:focus .cover[data-v-5537a555],\\n .folder.active .cover[data-v-5537a555],\\n .folder:active .cover[data-v-5537a555],\\n .folder:hover .cover[data-v-5537a555],\\n .folder:focus .cover[data-v-5537a555] {\\n opacity: .3;\\n}\\n.file--clear.active .cover[data-v-5537a555], .file--clear:active .cover[data-v-5537a555], .file--clear:hover .cover[data-v-5537a555], .file--clear:focus .cover[data-v-5537a555],\\n .folder--clear.active .cover[data-v-5537a555],\\n .folder--clear:active .cover[data-v-5537a555],\\n .folder--clear:hover .cover[data-v-5537a555],\\n .folder--clear:focus .cover[data-v-5537a555] {\\n opacity: .1;\\n}\\n.fade-enter-active[data-v-5537a555], .fade-leave-active[data-v-5537a555] {\\n transition: opacity var(--animation-quick) ease-in-out;\\n}\\n.fade-enter[data-v-5537a555], .fade-leave-to[data-v-5537a555] {\\n opacity: 0;\\n}\\n.icon-video-white[data-v-5537a555] {\\n position: absolute;\\n top: 10px;\\n right: 10px;\\n z-index: 5;\\n}\\nimg[data-v-5537a555] {\\n position: absolute;\\n width: 100%;\\n height: 100%;\\n -o-object-fit: cover;\\n object-fit: cover;\\n}\\nsvg[data-v-5537a555] {\\n position: absolute;\\n width: 70%;\\n height: 70%;\\n}\\n.file--clear[data-v-5537a555] {\\n background: var(--color-background-hover);\\n}\\n\", \"\"]);\n// Exports\nmodule.exports = exports;\n","// Imports\nvar ___CSS_LOADER_API_IMPORT___ = require(\"../../node_modules/css-loader/dist/runtime/api.js\");\nexports = ___CSS_LOADER_API_IMPORT___(false);\n// Module\nexports.push([module.id, \".grid-title[data-v-39804afc] {\\n grid-column: 1/8;\\n padding: 48px 0 12px 0;\\n margin: 0;\\n}\\n.grid-title span[data-v-39804afc] {\\n font-weight: normal;\\n}\\n.grid-title.first-title[data-v-39804afc] {\\n padding: 0 0 12px 0;\\n}\\n\", \"\"]);\n// Exports\nmodule.exports = exports;\n","// Imports\nvar ___CSS_LOADER_API_IMPORT___ = require(\"../../node_modules/css-loader/dist/runtime/api.js\");\nexports = ___CSS_LOADER_API_IMPORT___(false);\n// Module\nexports.push([module.id, \"@media (min-width: 0px) and (max-width: 400px) {\\n.grid-container[data-v-e945440a] {\\n padding: 0px 8px 256px 8px;\\n}\\n}\\n@media (min-width: 400px) and (max-width: 700px) {\\n.grid-container[data-v-e945440a] {\\n padding: 0px 8px 256px 8px;\\n}\\n}\\n@media (min-width: 700px) and (max-width: 1024px) {\\n.grid-container[data-v-e945440a] {\\n padding: 0px 44px 256px 44px;\\n}\\n}\\n@media (min-width: 1024px) and (max-width: 1280px) {\\n.grid-container[data-v-e945440a] {\\n padding: 0px 44px 256px 44px;\\n}\\n}\\n@media (min-width: 1280px) and (max-width: 1440px) {\\n.grid-container[data-v-e945440a] {\\n padding: 0px 66px 256px 66px;\\n}\\n}\\n@media (min-width: 1440px) and (max-width: 1600px) {\\n.grid-container[data-v-e945440a] {\\n padding: 0px 66px 256px 66px;\\n}\\n}\\n@media (min-width: 1600px) and (max-width: 2048px) {\\n.grid-container[data-v-e945440a] {\\n padding: 0px 66px 256px 66px;\\n}\\n}\\n@media (min-width: 2048px) and (max-width: 2560px) {\\n.grid-container[data-v-e945440a] {\\n padding: 0px 88px 256px 88px;\\n}\\n}\\n@media (min-width: 2560px) and (max-width: 3440px) {\\n.grid-container[data-v-e945440a] {\\n padding: 0px 88px 256px 88px;\\n}\\n}\\n@media (min-width: 3440px) {\\n.grid-container[data-v-e945440a] {\\n padding: 0px 88px 256px 88px;\\n}\\n}\\n\", \"\"]);\n// Exports\nmodule.exports = exports;\n","var render = function() {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n return _c(\n \"a\",\n {\n staticClass: \"file\",\n class: { \"file--clear\": !_vm.loaded },\n attrs: { href: _vm.davPath, \"aria-label\": _vm.ariaLabel },\n on: {\n click: function($event) {\n $event.preventDefault()\n return _vm.openViewer($event)\n }\n }\n },\n [\n _vm.item.injected.mime.includes(\"video\") && _vm.hasPreview\n ? _c(\"div\", { staticClass: \"icon-video-white\" })\n : _vm._e(),\n _vm._v(\" \"),\n _c(\"transition\", { attrs: { name: \"fade\" } }, [\n _c(\"img\", {\n directives: [\n {\n name: \"show\",\n rawName: \"v-show\",\n value: _vm.loaded,\n expression: \"loaded\"\n }\n ],\n ref: \"img\",\n attrs: {\n src: _vm.src,\n alt: _vm.item.injected.basename,\n \"aria-describedby\": _vm.ariaUuid\n },\n on: { load: _vm.onLoad }\n })\n ]),\n _vm._v(\" \"),\n !_vm.loaded\n ? _c(\n \"svg\",\n {\n attrs: {\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 32 32\",\n fill: \"url(#placeholder__gradient)\"\n }\n },\n [\n _vm.isImage\n ? _c(\"use\", { attrs: { \"xlink:href\": \"#placeholder--img\" } })\n : _c(\"use\", { attrs: { \"xlink:href\": \"#placeholder--video\" } })\n ]\n )\n : _vm._e(),\n _vm._v(\" \"),\n _c(\"p\", { staticClass: \"hidden-visually\", attrs: { id: _vm.ariaUuid } }, [\n _vm._v(_vm._s(_vm.item.injected.basename))\n ]),\n _vm._v(\" \"),\n _c(\"div\", { staticClass: \"cover\", attrs: { role: \"none\" } })\n ],\n 1\n )\n}\nvar staticRenderFns = []\nrender._withStripped = true\n\nexport { render, staticRenderFns }","var render = function() {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n return _c(\n \"h2\",\n { staticClass: \"grid-title\", style: { height: _vm.item.height + \"px\" } },\n [\n _vm._v(\"\\n\\t\" + _vm._s(_vm.item.injected.month) + \"\\n\\t\"),\n _c(\"span\", [_vm._v(_vm._s(_vm.item.injected.year))])\n ]\n )\n}\nvar staticRenderFns = []\nrender._withStripped = true\n\nexport { render, staticRenderFns }","var render = function() {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n return _vm.error === 404\n ? _c(\"EmptyContent\", { attrs: { \"illustration-name\": \"folder\" } }, [\n _vm._v(\n \"\\n\\t\" + _vm._s(_vm.t(\"photos\", \"This folder does not exists\")) + \"\\n\"\n )\n ])\n : _vm.error\n ? _c(\"EmptyContent\", [\n _vm._v(\"\\n\\t\" + _vm._s(_vm.t(\"photos\", \"An error occurred\")) + \"\\n\")\n ])\n : !_vm.loading\n ? _c(\n \"div\",\n [\n _vm.isEmpty\n ? _c(\"Navigation\", {\n key: \"navigation\",\n attrs: {\n basename: _vm.path,\n filename: \"/\",\n \"root-title\": _vm.rootTitle\n }\n })\n : _vm._e(),\n _vm._v(\" \"),\n _vm.isEmpty\n ? _c(\"EmptyContent\", { attrs: { \"illustration-name\": \"empty\" } }, [\n _vm._v(\n \"\\n\\t\\t\" +\n _vm._s(_vm.t(\"photos\", \"No photos in here\")) +\n \"\\n\\t\"\n )\n ])\n : _vm._e(),\n _vm._v(\" \"),\n _c(\n \"div\",\n { staticClass: \"grid-container\" },\n [\n _c(\"VirtualGrid\", {\n ref: \"virtualgrid\",\n attrs: {\n items: _vm.contentList,\n \"update-function\": _vm.getContent,\n \"get-column-count\": function() {\n return _vm.gridConfig.count\n },\n \"get-grid-gap\": function() {\n return _vm.gridConfig.gap\n },\n \"update-trigger-margin\": 700\n }\n })\n ],\n 1\n )\n ],\n 1\n )\n : _vm._e()\n}\nvar staticRenderFns = []\nrender._withStripped = true\n\nexport { render, staticRenderFns }","// style-loader: Adds some css to the DOM by adding a <style> tag\n\n// load the styles\nvar content = require(\"!!../../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??ref--1-3!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FileVirtualGrid.vue?vue&type=style&index=0&id=5537a555&lang=scss&scoped=true&\");\nif(typeof content === 'string') content = [[module.id, content, '']];\nif(content.locals) module.exports = content.locals;\n// add the styles to the DOM\nvar add = require(\"!../../node_modules/vue-style-loader/lib/addStylesClient.js\").default\nvar update = add(\"397c147c\", content, false, {});\n// Hot Module Replacement\nif(module.hot) {\n // When the styles change, update the <style> tags\n if(!content.locals) {\n module.hot.accept(\"!!../../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??ref--1-3!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FileVirtualGrid.vue?vue&type=style&index=0&id=5537a555&lang=scss&scoped=true&\", function() {\n var newContent = require(\"!!../../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??ref--1-3!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FileVirtualGrid.vue?vue&type=style&index=0&id=5537a555&lang=scss&scoped=true&\");\n if(typeof newContent === 'string') newContent = [[module.id, newContent, '']];\n update(newContent);\n });\n }\n // When the module is disposed, remove the <style> tags\n module.hot.dispose(function() { update(); });\n}","// style-loader: Adds some css to the DOM by adding a <style> tag\n\n// load the styles\nvar content = require(\"!!../../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??ref--1-3!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SeparatorVirtualGrid.vue?vue&type=style&index=0&id=39804afc&lang=scss&scoped=true&\");\nif(typeof content === 'string') content = [[module.id, content, '']];\nif(content.locals) module.exports = content.locals;\n// add the styles to the DOM\nvar add = require(\"!../../node_modules/vue-style-loader/lib/addStylesClient.js\").default\nvar update = add(\"74acbcfc\", content, false, {});\n// Hot Module Replacement\nif(module.hot) {\n // When the styles change, update the <style> tags\n if(!content.locals) {\n module.hot.accept(\"!!../../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??ref--1-3!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SeparatorVirtualGrid.vue?vue&type=style&index=0&id=39804afc&lang=scss&scoped=true&\", function() {\n var newContent = require(\"!!../../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??ref--1-3!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SeparatorVirtualGrid.vue?vue&type=style&index=0&id=39804afc&lang=scss&scoped=true&\");\n if(typeof newContent === 'string') newContent = [[module.id, newContent, '']];\n update(newContent);\n });\n }\n // When the module is disposed, remove the <style> tags\n module.hot.dispose(function() { update(); });\n}","// style-loader: Adds some css to the DOM by adding a <style> tag\n\n// load the styles\nvar content = require(\"!!../../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??ref--1-3!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Timeline.vue?vue&type=style&index=0&id=e945440a&lang=scss&scoped=true&\");\nif(typeof content === 'string') content = [[module.id, content, '']];\nif(content.locals) module.exports = content.locals;\n// add the styles to the DOM\nvar add = require(\"!../../node_modules/vue-style-loader/lib/addStylesClient.js\").default\nvar update = add(\"aacb1584\", content, false, {});\n// Hot Module Replacement\nif(module.hot) {\n // When the styles change, update the <style> tags\n if(!content.locals) {\n module.hot.accept(\"!!../../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??ref--1-3!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Timeline.vue?vue&type=style&index=0&id=e945440a&lang=scss&scoped=true&\", function() {\n var newContent = require(\"!!../../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??ref--1-3!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Timeline.vue?vue&type=style&index=0&id=e945440a&lang=scss&scoped=true&\");\n if(typeof newContent === 'string') newContent = [[module.id, newContent, '']];\n update(newContent);\n });\n }\n // When the module is disposed, remove the <style> tags\n module.hot.dispose(function() { update(); });\n}","/**\n * @copyright Copyright (c) 2018 John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @license GNU AGPL version 3 or any later version\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// for now we want to keep the same gap everywhere\nvar gap = 8;\n/**\n * Define the max width proportions\n * The number (key) indicate the MAX size\n *\n * needs to be ompatible with webpack config\n * so no export default {}\n */\n\nmodule.exports = {\n sizes: {\n 400: {\n marginTop: 66,\n // same as grid-gap\n marginW: gap,\n // same as grid-gap\n count: 3,\n gap: gap\n },\n 700: {\n marginTop: 66,\n marginW: 8,\n // same as grid-gap\n count: 4,\n gap: gap\n },\n 1024: {\n marginTop: 66,\n marginW: 44,\n count: 5,\n gap: gap\n },\n 1280: {\n marginTop: 66,\n marginW: 44,\n count: 4,\n gap: gap\n },\n 1440: {\n marginTop: 88,\n marginW: 66,\n count: 5,\n gap: gap\n },\n 1600: {\n marginTop: 88,\n marginW: 66,\n count: 6,\n gap: gap\n },\n 2048: {\n marginTop: 88,\n marginW: 66,\n count: 7,\n gap: gap\n },\n 2560: {\n marginTop: 88,\n marginW: 88,\n count: 8,\n gap: gap\n },\n 3440: {\n marginTop: 88,\n marginW: 88,\n count: 9,\n gap: gap\n },\n max: {\n marginTop: 88,\n marginW: 88,\n count: 10,\n gap: gap\n }\n }\n};","import { render, staticRenderFns } from \"./FileVirtualGrid.vue?vue&type=template&id=5537a555&scoped=true&\"\nimport script from \"./FileVirtualGrid.vue?vue&type=script&lang=js&\"\nexport * from \"./FileVirtualGrid.vue?vue&type=script&lang=js&\"\nimport style0 from \"./FileVirtualGrid.vue?vue&type=style&index=0&id=5537a555&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 \"5537a555\",\n null\n \n)\n\n/* hot reload */\nif (module.hot) {\n var api = require(\"/home/cmors/dev/tools/nx/apps/photos/node_modules/vue-hot-reload-api/dist/index.js\")\n api.install(require('vue'))\n if (api.compatible) {\n module.hot.accept()\n if (!api.isRecorded('5537a555')) {\n api.createRecord('5537a555', component.options)\n } else {\n api.reload('5537a555', component.options)\n }\n module.hot.accept(\"./FileVirtualGrid.vue?vue&type=template&id=5537a555&scoped=true&\", function () {\n api.rerender('5537a555', {\n render: render,\n staticRenderFns: staticRenderFns\n })\n })\n }\n}\ncomponent.options.__file = \"src/components/FileVirtualGrid.vue\"\nexport default component.exports","import mod from \"-!../../node_modules/babel-loader/lib/index.js!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FileVirtualGrid.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!./FileVirtualGrid.vue?vue&type=script&lang=js&\"","import mod from \"-!../../node_modules/vue-style-loader/index.js!../../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??ref--1-3!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FileVirtualGrid.vue?vue&type=style&index=0&id=5537a555&lang=scss&scoped=true&\"; export default mod; export * from \"-!../../node_modules/vue-style-loader/index.js!../../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??ref--1-3!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FileVirtualGrid.vue?vue&type=style&index=0&id=5537a555&lang=scss&scoped=true&\"","export * from \"-!../../node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FileVirtualGrid.vue?vue&type=template&id=5537a555&scoped=true&\"","import { render, staticRenderFns } from \"./SeparatorVirtualGrid.vue?vue&type=template&id=39804afc&scoped=true&\"\nimport script from \"./SeparatorVirtualGrid.vue?vue&type=script&lang=js&\"\nexport * from \"./SeparatorVirtualGrid.vue?vue&type=script&lang=js&\"\nimport style0 from \"./SeparatorVirtualGrid.vue?vue&type=style&index=0&id=39804afc&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 \"39804afc\",\n null\n \n)\n\n/* hot reload */\nif (module.hot) {\n var api = require(\"/home/cmors/dev/tools/nx/apps/photos/node_modules/vue-hot-reload-api/dist/index.js\")\n api.install(require('vue'))\n if (api.compatible) {\n module.hot.accept()\n if (!api.isRecorded('39804afc')) {\n api.createRecord('39804afc', component.options)\n } else {\n api.reload('39804afc', component.options)\n }\n module.hot.accept(\"./SeparatorVirtualGrid.vue?vue&type=template&id=39804afc&scoped=true&\", function () {\n api.rerender('39804afc', {\n render: render,\n staticRenderFns: staticRenderFns\n })\n })\n }\n}\ncomponent.options.__file = \"src/components/SeparatorVirtualGrid.vue\"\nexport default component.exports","import mod from \"-!../../node_modules/babel-loader/lib/index.js!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SeparatorVirtualGrid.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!./SeparatorVirtualGrid.vue?vue&type=script&lang=js&\"","import mod from \"-!../../node_modules/vue-style-loader/index.js!../../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??ref--1-3!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SeparatorVirtualGrid.vue?vue&type=style&index=0&id=39804afc&lang=scss&scoped=true&\"; export default mod; export * from \"-!../../node_modules/vue-style-loader/index.js!../../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??ref--1-3!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SeparatorVirtualGrid.vue?vue&type=style&index=0&id=39804afc&lang=scss&scoped=true&\"","export * from \"-!../../node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SeparatorVirtualGrid.vue?vue&type=template&id=39804afc&scoped=true&\"","/**\n * @copyright Copyright (c) 2018 John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @license GNU AGPL version 3 or any later version\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 */\nimport getGridConfig from '../services/GridConfig';\n/**\n * Get the current used grid config\n */\n\nexport default {\n data: function data() {\n return {\n gridConfig: {}\n };\n },\n created: function created() {\n var _this = this;\n\n getGridConfig.$on('changed', function (val) {\n _this.gridConfig = val;\n });\n console.debug('Current grid config', getGridConfig.gridConfig);\n this.gridConfig = getGridConfig.gridConfig;\n },\n beforeDestroy: function beforeDestroy() {\n getGridConfig.$off('changed', this.gridConfig);\n }\n};","function _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\n/**\n * @copyright Copyright (c) 2019 John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @license GNU AGPL version 3 or any later version\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 */\nvar request = require('webdav/dist/node/request');\n\nvar oldPrepareRequestOptions = request.prepareRequestOptions; // While we wait for official cancellable webdav requests\n// https://github.com/perry-mitchell/webdav-client/issues/179\n// let's properly forward our axios options through webdav to axios\n\nrequest.prepareRequestOptions = function (requestOptions, methodOptions) {\n // add our cancelToken support\n if (methodOptions.cancelToken && _typeof(methodOptions.cancelToken) === 'object') {\n requestOptions.cancelToken = methodOptions.cancelToken;\n } // exploit old method\n\n\n oldPrepareRequestOptions(requestOptions, methodOptions); // allow us to override the request method\n\n if (methodOptions.method && typeof methodOptions.method === 'string') {\n requestOptions.method = methodOptions.method;\n }\n};\n\nmodule.exports = request;","/**\n * @copyright Copyright (c) 2019 John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @license GNU AGPL version 3 or any later version\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 */\nimport webdav from 'webdav';\nimport axios from '@nextcloud/axios';\nimport parseUrl from 'url-parse';\nimport { generateRemoteUrl } from '@nextcloud/router'; // force our axios\n\nvar patcher = webdav.getPatcher();\npatcher.patch('request', axios); // init webdav client on default dav endpoint\n\nvar remote = generateRemoteUrl('dav');\nvar client = webdav.createClient(remote);\nexport var remotePath = parseUrl(remote).pathname;\nexport default client;","/**\n * @copyright Copyright (c) 2019 John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @license GNU AGPL version 3 or any later version\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 */\nvar props = \"\\n\\t<oc:fileid />\\n\\t<d:getlastmodified />\\n\\t<d:getetag />\\n\\t<d:getcontenttype />\\n\\t<d:getcontentlength />\\n\\t<nc:has-preview />\\n\\t<oc:favorite />\\n\\t<d:resourcetype />\";\nexport { props };\nexport default \"<?xml version=\\\"1.0\\\"?>\\n\\t\\t\\t<d:propfind xmlns:d=\\\"DAV:\\\"\\n\\t\\t\\t\\txmlns:oc=\\\"http://owncloud.org/ns\\\"\\n\\t\\t\\t\\txmlns:nc=\\\"http://nextcloud.org/ns\\\"\\n\\t\\t\\t\\txmlns:ocs=\\\"http://open-collaboration-services.org/ns\\\">\\n\\t\\t\\t\\t<d:prop>\\n\\t\\t\\t\\t\\t\".concat(props, \"\\n\\t\\t\\t\\t</d:prop>\\n\\t\\t\\t</d:propfind>\");","/**\n * @copyright Copyright (c) 2019 John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @license GNU AGPL version 3 or any later version\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 */\nimport Vue from 'vue';\nimport { sizes } from '../assets/grid-sizes';\nexport default new Vue({\n data: function data() {\n return {\n gridConfig: sizes.max\n };\n },\n watch: {\n gridConfig: function gridConfig(val) {\n this.$emit('changed', val);\n }\n },\n created: function created() {\n window.addEventListener('resize', this.handleWindowResize);\n this.handleWindowResize();\n },\n beforeDestroy: function beforeDestroy() {\n window.removeEventListener('resize', this.handleWindowResize);\n },\n methods: {\n handleWindowResize: function handleWindowResize() {\n // find the first grid size that fit the current window width\n var currentSize = Object.keys(sizes).find(function (size) {\n return size > document.documentElement.clientWidth;\n });\n this.gridConfig = sizes[currentSize];\n }\n }\n});","function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } }\n\nfunction _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"next\", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"throw\", err); } _next(undefined); }); }; }\n\n/**\n * @copyright Copyright (c) 2019 John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @license GNU AGPL version 3 or any later version\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 */\nimport { genFileInfo } from '../utils/fileUtils';\nimport { getCurrentUser } from '@nextcloud/auth';\nimport allowedMimes from './AllowedMimes';\nimport client from './DavClient';\nimport { props } from './DavRequest';\nimport { sizes } from '../assets/grid-sizes';\n/**\n * List files from a folder and filter out unwanted mimes\n *\n * @param {boolean} [onlyFavorites=false] not used\n * @param {Object} [options] used for the cancellable requests\n * @param {number} [options.page=0] which page to start (starts at 0)\n * @param {number} [options.perPage] how many to display per page default is 5 times the max number per line from the grid-sizes config file\n * @param {boolean} [options.full=false] get full data of the files\n * @returns {Array} the file list\n */\n\nexport default function () {\n return _ref.apply(this, arguments);\n}\n\nfunction _ref() {\n _ref = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee() {\n var onlyFavorites,\n options,\n prefixPath,\n orMime,\n eqFavorites,\n response,\n _args = arguments;\n return regeneratorRuntime.wrap(function _callee$(_context) {\n while (1) {\n switch (_context.prev = _context.next) {\n case 0:\n onlyFavorites = _args.length > 0 && _args[0] !== undefined ? _args[0] : false;\n options = _args.length > 1 && _args[1] !== undefined ? _args[1] : {};\n // default function options\n options = Object.assign({}, {\n page: 0,\n // start at the first page\n perPage: sizes.max.count * 10 // ten rows of the max width\n\n }, options);\n prefixPath = \"/files/\".concat(getCurrentUser().uid); // generating the search or condition\n // based on the allowed mimetypes\n\n orMime = allowedMimes.reduce(function (str, mime) {\n return \"\".concat(str, \"\\n\\t\\t<d:eq>\\n\\t\\t\\t<d:prop>\\n\\t\\t\\t\\t<d:getcontenttype/>\\n\\t\\t\\t</d:prop>\\n\\t\\t\\t<d:literal>\").concat(mime, \"</d:literal>\\n\\t\\t</d:eq>\\n\\t\");\n }, '');\n eqFavorites = onlyFavorites ? \"<d:eq>\\n\\t\\t\\t\\t<d:prop>\\n\\t\\t\\t\\t\\t<oc:favorite/>\\n\\t\\t\\t\\t</d:prop>\\n\\t\\t\\t\\t<d:literal>1</d:literal>\\n\\t\\t\\t</d:eq>\" : '';\n options = Object.assign({\n method: 'SEARCH',\n headers: {\n 'content-Type': 'text/xml'\n },\n data: \"<?xml version=\\\"1.0\\\" encoding=\\\"UTF-8\\\"?>\\n\\t\\t\\t<d:searchrequest xmlns:d=\\\"DAV:\\\"\\n\\t\\t\\t\\txmlns:oc=\\\"http://owncloud.org/ns\\\"\\n\\t\\t\\t\\txmlns:nc=\\\"http://nextcloud.org/ns\\\"\\n\\t\\t\\t\\txmlns:ns=\\\"https://github.com/icewind1991/SearchDAV/ns\\\"\\n\\t\\t\\t\\txmlns:ocs=\\\"http://open-collaboration-services.org/ns\\\">\\n\\t\\t\\t\\t<d:basicsearch>\\n\\t\\t\\t\\t\\t<d:select>\\n\\t\\t\\t\\t\\t\\t<d:prop>\\n\\t\\t\\t\\t\\t\\t\\t\".concat(props, \"\\n\\t\\t\\t\\t\\t\\t</d:prop>\\n\\t\\t\\t\\t\\t</d:select>\\n\\t\\t\\t\\t\\t<d:from>\\n\\t\\t\\t\\t\\t\\t<d:scope>\\n\\t\\t\\t\\t\\t\\t\\t<d:href>\").concat(prefixPath, \"</d:href>\\n\\t\\t\\t\\t\\t\\t\\t<d:depth>infinity</d:depth>\\n\\t\\t\\t\\t\\t\\t</d:scope>\\n\\t\\t\\t\\t\\t</d:from>\\n\\t\\t\\t\\t\\t<d:where>\\n\\t\\t\\t\\t\\t\\t<d:and>\\n\\t\\t\\t\\t\\t\\t\\t<d:or>\\n\\t\\t\\t\\t\\t\\t\\t\\t\").concat(orMime, \"\\n\\t\\t\\t\\t\\t\\t\\t</d:or>\\n\\t\\t\\t\\t\\t\\t\\t\").concat(eqFavorites, \"\\n\\t\\t\\t\\t\\t\\t\\t<d:eq>\\n\\t\\t\\t\\t\\t\\t\\t\\t<d:prop>\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t<oc:owner-id/>\\n\\t\\t\\t\\t\\t\\t\\t\\t</d:prop>\\n\\t\\t\\t\\t\\t\\t\\t\\t<d:literal>\").concat(getCurrentUser().uid, \"</d:literal>\\n\\t\\t\\t\\t\\t\\t\\t</d:eq>\\n\\t\\t\\t\\t\\t\\t</d:and>\\n\\t\\t\\t\\t\\t</d:where>\\n\\t\\t\\t\\t\\t<d:orderby>\\n\\t\\t\\t\\t\\t\\t<d:order>\\n\\t\\t\\t\\t\\t\\t\\t<d:prop><d:getlastmodified/></d:prop>\\n\\t\\t\\t\\t\\t\\t\\t<d:descending/>\\n\\t\\t\\t\\t\\t\\t</d:order>\\n\\t\\t\\t\\t\\t</d:orderby>\\n\\t\\t\\t\\t\\t<d:limit>\\n\\t\\t\\t\\t\\t\\t<d:nresults>\").concat(options.perPage, \"</d:nresults>\\n\\t\\t\\t\\t\\t\\t<ns:firstresult>\").concat(options.page * options.perPage, \"</ns:firstresult>\\n\\t\\t\\t\\t\\t</d:limit>\\n\\t\\t\\t\\t</d:basicsearch>\\n\\t\\t\\t</d:searchrequest>\"),\n deep: true,\n details: true\n }, options);\n _context.next = 9;\n return client.getDirectoryContents('', options);\n\n case 9:\n response = _context.sent;\n return _context.abrupt(\"return\", response.data.map(function (data) {\n return genFileInfo(data);\n }) // remove prefix path from full file path\n .map(function (data) {\n return Object.assign({}, data, {\n filename: data.filename.replace(prefixPath, '')\n });\n }));\n\n case 11:\n case \"end\":\n return _context.stop();\n }\n }\n }, _callee);\n }));\n return _ref.apply(this, arguments);\n}","import { render, staticRenderFns } from \"./Timeline.vue?vue&type=template&id=e945440a&scoped=true&\"\nimport script from \"./Timeline.vue?vue&type=script&lang=js&\"\nexport * from \"./Timeline.vue?vue&type=script&lang=js&\"\nimport style0 from \"./Timeline.vue?vue&type=style&index=0&id=e945440a&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 \"e945440a\",\n null\n \n)\n\n/* hot reload */\nif (module.hot) {\n var api = require(\"/home/cmors/dev/tools/nx/apps/photos/node_modules/vue-hot-reload-api/dist/index.js\")\n api.install(require('vue'))\n if (api.compatible) {\n module.hot.accept()\n if (!api.isRecorded('e945440a')) {\n api.createRecord('e945440a', component.options)\n } else {\n api.reload('e945440a', component.options)\n }\n module.hot.accept(\"./Timeline.vue?vue&type=template&id=e945440a&scoped=true&\", function () {\n api.rerender('e945440a', {\n render: render,\n staticRenderFns: staticRenderFns\n })\n })\n }\n}\ncomponent.options.__file = \"src/views/Timeline.vue\"\nexport default component.exports","import mod from \"-!../../node_modules/babel-loader/lib/index.js!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Timeline.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!./Timeline.vue?vue&type=script&lang=js&\"","import mod from \"-!../../node_modules/vue-style-loader/index.js!../../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??ref--1-3!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Timeline.vue?vue&type=style&index=0&id=e945440a&lang=scss&scoped=true&\"; export default mod; export * from \"-!../../node_modules/vue-style-loader/index.js!../../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??ref--1-3!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Timeline.vue?vue&type=style&index=0&id=e945440a&lang=scss&scoped=true&\"","export * from \"-!../../node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Timeline.vue?vue&type=template&id=e945440a&scoped=true&\""],"mappings":";;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;ACnHA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;AChBA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;AC5UA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;ACNA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;ACNA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACNA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;ACvEA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;ACfA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;ACnEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;ACVA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;ACVA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;ACVA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;ACjGA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAiBA;AACA;AACA;;;;;;;;;;;;ACvCA;AAAA;AAAA;;;;;;;;;;;;ACAA;AAAA;AAAA;AAAA;AAAA;;;;;;;;;;;;ACAA;AAAA;AAAA;AAAA;AAAA;AAAA;;;;;;;;;;;;;ACAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAiBA;AACA;AACA;;;;;;;;;;;;ACvCA;AAAA;AAAA;;;;;;;;;;;;ACAA;AAAA;AAAA;AAAA;AAAA;;;;;;;;;;;;ACAA;AAAA;AAAA;AAAA;AAAA;AAAA;;;;;;;;;;;;;ACAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;AC5CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;AC3CA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;AChCA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;ACvBA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;AClDA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;AC1GA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAiBA;AACA;AACA;;;;;;;;;;;;ACvCA;AAAA;AAAA;;;;;;;;;;;;ACAA;AAAA;AAAA;AAAA;AAAA;;;;;;;;;;;;ACAA;AAAA;AAAA;AAAA;AAAA;AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;A","sourceRoot":""} \ No newline at end of file
+{"version":3,"file":"photos-5.js?v=d43d527a6d3d35d9d3fa","sources":["webpack:///./src/components/FileVirtualGrid.vue?c0ab","webpack:///./src/components/Loader.vue?1cb4","webpack:///./src/components/SeparatorVirtualGrid.vue?8517","webpack:///./src/views/Timeline.vue?9e76","webpack:///./src/components/FileVirtualGrid.vue?f66c","webpack:///./src/components/Loader.vue?6e38","webpack:///./src/components/SeparatorVirtualGrid.vue?288a","webpack:///./src/views/Timeline.vue?8a4c","webpack:///./src/components/FileVirtualGrid.vue?6cf5","webpack:///./src/components/Loader.vue?cd6e","webpack:///./src/components/SeparatorVirtualGrid.vue?85ee","webpack:///./src/views/Timeline.vue?4e14","webpack:///./src/components/FileVirtualGrid.vue?420d","webpack:///./src/components/Loader.vue?7c09","webpack:///./src/components/SeparatorVirtualGrid.vue?fd5c","webpack:///./src/views/Timeline.vue?33e9","webpack:///./src/assets/grid-sizes.js","webpack:///./src/components/FileVirtualGrid.vue","webpack:///./src/components/FileVirtualGrid.vue?950a","webpack:///./src/components/FileVirtualGrid.vue?ad0a","webpack:///./src/components/FileVirtualGrid.vue?ce24","webpack:///./src/components/Loader.vue","webpack:///./src/components/Loader.vue?1364","webpack:///./src/components/Loader.vue?bbe5","webpack:///./src/components/Loader.vue?c5ee","webpack:///./src/components/SeparatorVirtualGrid.vue","webpack:///./src/components/SeparatorVirtualGrid.vue?bd8e","webpack:///./src/components/SeparatorVirtualGrid.vue?11be","webpack:///./src/components/SeparatorVirtualGrid.vue?c4d6","webpack:///./src/mixins/GridConfig.js","webpack:///./src/patchedRequest.js","webpack:///./src/services/DavClient.js","webpack:///./src/services/DavRequest.js","webpack:///./src/services/GridConfig.js","webpack:///./src/services/PhotoSearch.js","webpack:///./src/views/Timeline.vue","webpack:///./src/views/Timeline.vue?21b8","webpack:///./src/views/Timeline.vue?e2ae","webpack:///./src/views/Timeline.vue?cf41"],"sourcesContent":["function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } }\n\nfunction _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"next\", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"throw\", err); } _next(undefined); }); }; }\n\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\nimport { generateRemoteUrl, generateUrl } from '@nextcloud/router';\nimport { getCurrentUser } from '@nextcloud/auth';\nexport default {\n name: 'FileVirtualGrid',\n inheritAttrs: false,\n props: {\n item: {\n type: Object,\n required: true\n }\n },\n data: function data() {\n return {\n loaded: false\n };\n },\n computed: {\n davPath: function davPath() {\n return generateRemoteUrl(\"dav/files/\".concat(getCurrentUser().uid)) + this.item.injected.filename;\n },\n ariaUuid: function ariaUuid() {\n return \"image-\".concat(this.item.injected.fileid);\n },\n ariaLabel: function ariaLabel() {\n return t('photos', 'Open the full size \"{name}\" image', {\n name: this.item.injected.basename\n });\n },\n isImage: function isImage() {\n return this.item.injected.mime.startsWith('image');\n },\n src: function src() {\n return generateUrl(\"/core/preview?fileId=\".concat(this.item.injected.fileid, \"&x=\", 256, \"&y=\", 256, \"&a=false&v=\").concat(this.item.injected.etag));\n }\n },\n beforeDestroy: function beforeDestroy() {\n // cancel any pending load\n this.$refs.src = '';\n },\n methods: {\n openViewer: function openViewer() {\n var _this = this;\n\n OCA.Viewer.open({\n path: this.item.injected.filename,\n list: this.item.injected.list,\n loadMore: function () {\n var _loadMore = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee() {\n return regeneratorRuntime.wrap(function _callee$(_context) {\n while (1) {\n switch (_context.prev = _context.next) {\n case 0:\n _context.next = 2;\n return _this.item.injected.loadMore(true);\n\n case 2:\n return _context.abrupt(\"return\", _context.sent);\n\n case 3:\n case \"end\":\n return _context.stop();\n }\n }\n }, _callee);\n }));\n\n function loadMore() {\n return _loadMore.apply(this, arguments);\n }\n\n return loadMore;\n }()\n });\n },\n\n /** When the image is fully loaded by browser we remove the placeholder */\n onLoad: function onLoad() {\n this.loaded = true;\n }\n }\n};","//\n//\n//\n//\n//\n//\n//\n//\n//\nexport default {\n name: 'Loader'\n};","//\n//\n//\n//\n//\n//\n//\nexport default {\n name: 'SeparatorVirtualGrid',\n inheritAttrs: false,\n props: {\n item: {\n type: Object,\n required: true\n }\n }\n};","function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } }\n\nfunction _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"next\", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"throw\", err); } _next(undefined); }); }; }\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\nimport * as moment from 'moment';\nimport { mapGetters } from 'vuex';\nimport getPhotos from '../services/PhotoSearch';\nimport EmptyContent from '../components/EmptyContent';\nimport FileVirtualGrid from '../components/FileVirtualGrid';\nimport SeparatorVirtualGrid from '../components/SeparatorVirtualGrid';\nimport VirtualGrid from 'vue-virtual-grid';\nimport Navigation from '../components/Navigation';\nimport Loader from '../components/Loader';\nimport cancelableRequest from '../utils/CancelableRequest';\nimport GridConfigMixin from '../mixins/GridConfig';\nexport default {\n name: 'Timeline',\n components: {\n EmptyContent: EmptyContent,\n VirtualGrid: VirtualGrid,\n Navigation: Navigation\n },\n mixins: [GridConfigMixin],\n props: {\n loading: {\n type: Boolean,\n required: true\n },\n onlyFavorites: {\n type: Boolean,\n default: false\n },\n rootTitle: {\n type: String,\n required: true\n },\n path: {\n type: String,\n default: ''\n }\n },\n data: function data() {\n return {\n cancelRequest: null,\n done: false,\n error: null,\n page: 0,\n lastSection: '',\n loaderComponent: Loader\n };\n },\n computed: _objectSpread(_objectSpread({}, mapGetters(['files', 'timeline'])), {}, {\n // list of loaded medias\n fileList: function fileList() {\n var _this = this;\n\n return this.timeline.map(function (fileId) {\n return _this.files[fileId];\n });\n },\n // list of displayed content in the grid (titles + medias)\n contentList: function contentList() {\n var _this2 = this;\n\n /** The goal of this flat map is to return an array of images separated by titles (months)\n * ie: [{month1}, {image1}, {image2}, {month2}, {image3}, {image4}, {image5}]\n * First we get the current month+year of the image\n * We compare it to the previous image month+year\n * If there is a difference we have to insert a title object before the current image\n * If it's equal we just add the current image to the array\n * Note: the injected param of objects are used to pass custom params to the grid lib\n * In our case injected could be an image/video (aka file) or a title (year/month)\n * Note2: titles are rendered full width and images are rendered on 1 column and 256x256 ratio\n */\n return this.fileList.flatMap(function (file, index) {\n var _this2$timeline;\n\n var finalArray = [];\n\n var currentSection = _this2.getFormatedDate(file.lastmod, 'YYYY MMMM');\n\n if (currentSection !== _this2.getFormatedDate((_this2$timeline = _this2.timeline[index - 1]) === null || _this2$timeline === void 0 ? void 0 : _this2$timeline.lastmod, 'YYYY MMMM') && _this2.lastSection !== currentSection) {\n finalArray.push({\n id: \"title-\".concat(index),\n injected: {\n year: _this2.getFormatedDate(file.lastmod, 'YYYY'),\n month: _this2.getFormatedDate(file.lastmod, 'MMMM')\n },\n height: 90,\n columnSpan: 0,\n // means full width\n newRow: true,\n renderComponent: SeparatorVirtualGrid\n });\n _this2.lastSection = currentSection; // we keep track of the last section for the next batch\n }\n\n finalArray.push({\n id: \"img-\".concat(file.fileid),\n injected: _objectSpread(_objectSpread({}, file), {}, {\n list: _this2.fileList,\n loadMore: _this2.getContent\n }),\n width: 256,\n height: 256,\n columnSpan: 1,\n renderComponent: FileVirtualGrid\n });\n return finalArray;\n });\n },\n // is current folder empty?\n isEmpty: function isEmpty() {\n return this.fileList.length === 0;\n }\n }),\n watch: {\n onlyFavorites: function onlyFavorites() {\n var _this3 = this;\n\n return _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee() {\n return regeneratorRuntime.wrap(function _callee$(_context) {\n while (1) {\n switch (_context.prev = _context.next) {\n case 0:\n // reset component\n _this3.resetState();\n\n _this3.getContent();\n\n case 2:\n case \"end\":\n return _context.stop();\n }\n }\n }, _callee);\n }))();\n }\n },\n beforeMount: function beforeMount() {\n this.getContent();\n },\n beforeDestroy: function beforeDestroy() {\n // cancel any pending requests\n if (this.cancelRequest) {\n this.cancelRequest('Changed view');\n }\n },\n methods: {\n /** Return next batch of data depending on global offset\n * @param {boolean} doReturn Returns a Promise with the list instead of a boolean\n * @returns {Promise<boolean>} Returns a Promise with a boolean that stops infinite loading\n */\n getContent: function getContent(doReturn) {\n var _this4 = this;\n\n return _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee2() {\n var _cancelableRequest, request, cancel, numberOfImagesPerBatch, files;\n\n return regeneratorRuntime.wrap(function _callee2$(_context2) {\n while (1) {\n switch (_context2.prev = _context2.next) {\n case 0:\n if (!_this4.done) {\n _context2.next = 2;\n break;\n }\n\n return _context2.abrupt(\"return\", Promise.resolve(true));\n\n case 2:\n // cancel any pending requests\n if (_this4.cancelRequest) {\n _this4.cancelRequest('Changed view');\n } // if we don't already have some cached data let's show a loader\n\n\n if (_this4.timeline.length === 0) {\n _this4.$emit('update:loading', true);\n } // done loading even with errors\n\n\n _cancelableRequest = cancelableRequest(getPhotos), request = _cancelableRequest.request, cancel = _cancelableRequest.cancel;\n _this4.cancelRequest = cancel;\n numberOfImagesPerBatch = _this4.gridConfig.count * 5; // loading 5 rows\n\n _context2.prev = 7;\n _context2.next = 10;\n return request(_this4.onlyFavorites, {\n page: _this4.page,\n // offset is incremented +1 by the virtualgrid lib\n perPage: numberOfImagesPerBatch\n });\n\n case 10:\n files = _context2.sent;\n\n // If we get less files than requested that means we got to the end\n if (files.length !== numberOfImagesPerBatch) {\n _this4.done = true;\n }\n\n _this4.$store.dispatch('updateTimeline', files);\n\n _this4.$store.dispatch('appendFiles', files);\n\n _this4.page += 1;\n\n if (!doReturn) {\n _context2.next = 17;\n break;\n }\n\n return _context2.abrupt(\"return\", Promise.resolve(files));\n\n case 17:\n return _context2.abrupt(\"return\", Promise.resolve(false));\n\n case 20:\n _context2.prev = 20;\n _context2.t0 = _context2[\"catch\"](7);\n\n if (_context2.t0.response && _context2.t0.response.status) {\n if (_context2.t0.response.status === 404) {\n _this4.error = 404;\n setTimeout(function () {\n _this4.$router.push({\n name: _this4.$route.name\n });\n }, 3000);\n } else {\n _this4.error = _context2.t0;\n }\n } // cancelled request, moving on...\n\n\n console.error('Error fetching timeline', _context2.t0);\n return _context2.abrupt(\"return\", Promise.resolve(true));\n\n case 25:\n _context2.prev = 25;\n\n // done loading even with errors\n _this4.$emit('update:loading', false);\n\n _this4.cancelRequest = null;\n return _context2.finish(25);\n\n case 29:\n case \"end\":\n return _context2.stop();\n }\n }\n }, _callee2, null, [[7, 20, 25, 29]]);\n }))();\n },\n\n /**\n * Reset this component data to a pristine state\n */\n resetState: function resetState() {\n this.$store.dispatch('resetTimeline');\n this.done = false;\n this.error = null;\n this.page = 0;\n this.$emit('update:loading', true);\n this.$refs.virtualgrid.resetGrid();\n },\n getFormatedDate: function getFormatedDate(string, format) {\n return moment(string).format(format);\n }\n }\n};","// Imports\nvar ___CSS_LOADER_API_IMPORT___ = require(\"../../node_modules/css-loader/dist/runtime/api.js\");\nexports = ___CSS_LOADER_API_IMPORT___(false);\n// Module\nexports.push([module.id, \"@charset \\\"UTF-8\\\";\\n/**\\n * @copyright Copyright (c) 2019 John Molakvoæ <skjnldsv@protonmail.com>\\n *\\n * @author John Molakvoæ <skjnldsv@protonmail.com>\\n *\\n * @license GNU AGPL version 3 or any later version\\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.file[data-v-5537a555],\\n.folder[data-v-5537a555] {\\n position: relative;\\n display: flex;\\n align-items: center;\\n justify-content: center;\\n -webkit-user-select: none;\\n -moz-user-select: none;\\n -ms-user-select: none;\\n user-select: none;\\n border-radius: var(--border-radius);\\n overflow: hidden;\\n}\\n.file .cover[data-v-5537a555],\\n .folder .cover[data-v-5537a555] {\\n z-index: 2;\\n width: 100%;\\n padding-bottom: 100%;\\n transition: opacity var(--animation-quick) ease-in-out;\\n opacity: 0;\\n background-color: var(--color-main-text);\\n}\\n.file.active .cover[data-v-5537a555], .file:active .cover[data-v-5537a555], .file:hover .cover[data-v-5537a555], .file:focus .cover[data-v-5537a555],\\n .folder.active .cover[data-v-5537a555],\\n .folder:active .cover[data-v-5537a555],\\n .folder:hover .cover[data-v-5537a555],\\n .folder:focus .cover[data-v-5537a555] {\\n opacity: .3;\\n}\\n.file--clear.active .cover[data-v-5537a555], .file--clear:active .cover[data-v-5537a555], .file--clear:hover .cover[data-v-5537a555], .file--clear:focus .cover[data-v-5537a555],\\n .folder--clear.active .cover[data-v-5537a555],\\n .folder--clear:active .cover[data-v-5537a555],\\n .folder--clear:hover .cover[data-v-5537a555],\\n .folder--clear:focus .cover[data-v-5537a555] {\\n opacity: .1;\\n}\\n.fade-enter-active[data-v-5537a555], .fade-leave-active[data-v-5537a555] {\\n transition: opacity var(--animation-quick) ease-in-out;\\n}\\n.fade-enter[data-v-5537a555], .fade-leave-to[data-v-5537a555] {\\n opacity: 0;\\n}\\n.icon-video-white[data-v-5537a555] {\\n position: absolute;\\n top: 10px;\\n right: 10px;\\n z-index: 5;\\n}\\nimg[data-v-5537a555] {\\n position: absolute;\\n width: 100%;\\n height: 100%;\\n -o-object-fit: cover;\\n object-fit: cover;\\n}\\nsvg[data-v-5537a555] {\\n position: absolute;\\n width: 70%;\\n height: 70%;\\n}\\n.file--clear[data-v-5537a555] {\\n background: var(--color-background-hover);\\n}\\n\", \"\"]);\n// Exports\nmodule.exports = exports;\n","// Imports\nvar ___CSS_LOADER_API_IMPORT___ = require(\"../../node_modules/css-loader/dist/runtime/api.js\");\nexports = ___CSS_LOADER_API_IMPORT___(false);\n// Module\nexports.push([module.id, \".loader {\\n display: grid;\\n height: 60px;\\n}\\n\", \"\"]);\n// Exports\nmodule.exports = exports;\n","// Imports\nvar ___CSS_LOADER_API_IMPORT___ = require(\"../../node_modules/css-loader/dist/runtime/api.js\");\nexports = ___CSS_LOADER_API_IMPORT___(false);\n// Module\nexports.push([module.id, \".grid-title[data-v-39804afc] {\\n grid-column: 1/8;\\n padding: 48px 0 12px 0;\\n margin: 0;\\n}\\n.grid-title span[data-v-39804afc] {\\n font-weight: normal;\\n}\\n.grid-title.first-title[data-v-39804afc] {\\n padding: 0 0 12px 0;\\n}\\n\", \"\"]);\n// Exports\nmodule.exports = exports;\n","// Imports\nvar ___CSS_LOADER_API_IMPORT___ = require(\"../../node_modules/css-loader/dist/runtime/api.js\");\nexports = ___CSS_LOADER_API_IMPORT___(false);\n// Module\nexports.push([module.id, \"@media (min-width: 0px) and (max-width: 400px) {\\n.grid-container[data-v-e945440a] {\\n padding: 0px 8px 256px 8px;\\n}\\n}\\n@media (min-width: 400px) and (max-width: 700px) {\\n.grid-container[data-v-e945440a] {\\n padding: 0px 8px 256px 8px;\\n}\\n}\\n@media (min-width: 700px) and (max-width: 1024px) {\\n.grid-container[data-v-e945440a] {\\n padding: 0px 44px 256px 44px;\\n}\\n}\\n@media (min-width: 1024px) and (max-width: 1280px) {\\n.grid-container[data-v-e945440a] {\\n padding: 0px 44px 256px 44px;\\n}\\n}\\n@media (min-width: 1280px) and (max-width: 1440px) {\\n.grid-container[data-v-e945440a] {\\n padding: 0px 66px 256px 66px;\\n}\\n}\\n@media (min-width: 1440px) and (max-width: 1600px) {\\n.grid-container[data-v-e945440a] {\\n padding: 0px 66px 256px 66px;\\n}\\n}\\n@media (min-width: 1600px) and (max-width: 2048px) {\\n.grid-container[data-v-e945440a] {\\n padding: 0px 66px 256px 66px;\\n}\\n}\\n@media (min-width: 2048px) and (max-width: 2560px) {\\n.grid-container[data-v-e945440a] {\\n padding: 0px 88px 256px 88px;\\n}\\n}\\n@media (min-width: 2560px) and (max-width: 3440px) {\\n.grid-container[data-v-e945440a] {\\n padding: 0px 88px 256px 88px;\\n}\\n}\\n@media (min-width: 3440px) {\\n.grid-container[data-v-e945440a] {\\n padding: 0px 88px 256px 88px;\\n}\\n}\\n\", \"\"]);\n// Exports\nmodule.exports = exports;\n","var render = function() {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n return _c(\n \"a\",\n {\n staticClass: \"file\",\n class: { \"file--clear\": !_vm.loaded },\n attrs: { href: _vm.davPath, \"aria-label\": _vm.ariaLabel },\n on: {\n click: function($event) {\n $event.preventDefault()\n return _vm.openViewer($event)\n }\n }\n },\n [\n _vm.item.injected.mime.includes(\"video\") && _vm.hasPreview\n ? _c(\"div\", { staticClass: \"icon-video-white\" })\n : _vm._e(),\n _vm._v(\" \"),\n _c(\"transition\", { attrs: { name: \"fade\" } }, [\n _c(\"img\", {\n directives: [\n {\n name: \"show\",\n rawName: \"v-show\",\n value: _vm.loaded,\n expression: \"loaded\"\n }\n ],\n ref: \"img\",\n attrs: {\n src: _vm.src,\n alt: _vm.item.injected.basename,\n \"aria-describedby\": _vm.ariaUuid\n },\n on: { load: _vm.onLoad }\n })\n ]),\n _vm._v(\" \"),\n !_vm.loaded\n ? _c(\n \"svg\",\n {\n attrs: {\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 32 32\",\n fill: \"url(#placeholder__gradient)\"\n }\n },\n [\n _vm.isImage\n ? _c(\"use\", { attrs: { \"xlink:href\": \"#placeholder--img\" } })\n : _c(\"use\", { attrs: { \"xlink:href\": \"#placeholder--video\" } })\n ]\n )\n : _vm._e(),\n _vm._v(\" \"),\n _c(\"p\", { staticClass: \"hidden-visually\", attrs: { id: _vm.ariaUuid } }, [\n _vm._v(_vm._s(_vm.item.injected.basename))\n ]),\n _vm._v(\" \"),\n _c(\"div\", { staticClass: \"cover\", attrs: { role: \"none\" } })\n ],\n 1\n )\n}\nvar staticRenderFns = []\nrender._withStripped = true\n\nexport { render, staticRenderFns }","var render = function() {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n return _c(\n \"div\",\n { staticClass: \"loader\", attrs: { icon: \"loading\" } },\n [_vm._t(\"icon\", [_c(\"span\", { class: [\"loading\"] })])],\n 2\n )\n}\nvar staticRenderFns = []\nrender._withStripped = true\n\nexport { render, staticRenderFns }","var render = function() {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n return _c(\n \"h2\",\n { staticClass: \"grid-title\", style: { height: _vm.item.height + \"px\" } },\n [\n _vm._v(\"\\n\\t\" + _vm._s(_vm.item.injected.month) + \"\\n\\t\"),\n _c(\"span\", [_vm._v(_vm._s(_vm.item.injected.year))])\n ]\n )\n}\nvar staticRenderFns = []\nrender._withStripped = true\n\nexport { render, staticRenderFns }","var render = function() {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n return _vm.error === 404\n ? _c(\"EmptyContent\", { attrs: { \"illustration-name\": \"folder\" } }, [\n _vm._v(\n \"\\n\\t\" + _vm._s(_vm.t(\"photos\", \"This folder does not exists\")) + \"\\n\"\n )\n ])\n : _vm.error\n ? _c(\"EmptyContent\", [\n _vm._v(\"\\n\\t\" + _vm._s(_vm.t(\"photos\", \"An error occurred\")) + \"\\n\")\n ])\n : !_vm.loading\n ? _c(\n \"div\",\n [\n _vm.isEmpty\n ? _c(\"Navigation\", {\n key: \"navigation\",\n attrs: {\n basename: _vm.path,\n filename: \"/\",\n \"root-title\": _vm.rootTitle\n }\n })\n : _vm._e(),\n _vm._v(\" \"),\n _vm.isEmpty\n ? _c(\"EmptyContent\", { attrs: { \"illustration-name\": \"empty\" } }, [\n _vm._v(\n \"\\n\\t\\t\" +\n _vm._s(_vm.t(\"photos\", \"No photos in here\")) +\n \"\\n\\t\"\n )\n ])\n : _vm._e(),\n _vm._v(\" \"),\n _c(\n \"div\",\n { staticClass: \"grid-container\" },\n [\n _c(\"VirtualGrid\", {\n ref: \"virtualgrid\",\n attrs: {\n items: _vm.contentList,\n \"update-function\": _vm.getContent,\n \"get-column-count\": function() {\n return _vm.gridConfig.count\n },\n \"get-grid-gap\": function() {\n return _vm.gridConfig.gap\n },\n \"update-trigger-margin\": 700,\n loader: _vm.loaderComponent\n }\n })\n ],\n 1\n )\n ],\n 1\n )\n : _vm._e()\n}\nvar staticRenderFns = []\nrender._withStripped = true\n\nexport { render, staticRenderFns }","// style-loader: Adds some css to the DOM by adding a <style> tag\n\n// load the styles\nvar content = require(\"!!../../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??ref--1-3!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FileVirtualGrid.vue?vue&type=style&index=0&id=5537a555&lang=scss&scoped=true&\");\nif(typeof content === 'string') content = [[module.id, content, '']];\nif(content.locals) module.exports = content.locals;\n// add the styles to the DOM\nvar add = require(\"!../../node_modules/vue-style-loader/lib/addStylesClient.js\").default\nvar update = add(\"397c147c\", content, false, {});\n// Hot Module Replacement\nif(module.hot) {\n // When the styles change, update the <style> tags\n if(!content.locals) {\n module.hot.accept(\"!!../../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??ref--1-3!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FileVirtualGrid.vue?vue&type=style&index=0&id=5537a555&lang=scss&scoped=true&\", function() {\n var newContent = require(\"!!../../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??ref--1-3!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FileVirtualGrid.vue?vue&type=style&index=0&id=5537a555&lang=scss&scoped=true&\");\n if(typeof newContent === 'string') newContent = [[module.id, newContent, '']];\n update(newContent);\n });\n }\n // When the module is disposed, remove the <style> tags\n module.hot.dispose(function() { update(); });\n}","// style-loader: Adds some css to the DOM by adding a <style> tag\n\n// load the styles\nvar content = require(\"!!../../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??ref--1-3!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Loader.vue?vue&type=style&index=0&lang=scss&\");\nif(typeof content === 'string') content = [[module.id, content, '']];\nif(content.locals) module.exports = content.locals;\n// add the styles to the DOM\nvar add = require(\"!../../node_modules/vue-style-loader/lib/addStylesClient.js\").default\nvar update = add(\"3be189ae\", content, false, {});\n// Hot Module Replacement\nif(module.hot) {\n // When the styles change, update the <style> tags\n if(!content.locals) {\n module.hot.accept(\"!!../../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??ref--1-3!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Loader.vue?vue&type=style&index=0&lang=scss&\", function() {\n var newContent = require(\"!!../../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??ref--1-3!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Loader.vue?vue&type=style&index=0&lang=scss&\");\n if(typeof newContent === 'string') newContent = [[module.id, newContent, '']];\n update(newContent);\n });\n }\n // When the module is disposed, remove the <style> tags\n module.hot.dispose(function() { update(); });\n}","// style-loader: Adds some css to the DOM by adding a <style> tag\n\n// load the styles\nvar content = require(\"!!../../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??ref--1-3!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SeparatorVirtualGrid.vue?vue&type=style&index=0&id=39804afc&lang=scss&scoped=true&\");\nif(typeof content === 'string') content = [[module.id, content, '']];\nif(content.locals) module.exports = content.locals;\n// add the styles to the DOM\nvar add = require(\"!../../node_modules/vue-style-loader/lib/addStylesClient.js\").default\nvar update = add(\"74acbcfc\", content, false, {});\n// Hot Module Replacement\nif(module.hot) {\n // When the styles change, update the <style> tags\n if(!content.locals) {\n module.hot.accept(\"!!../../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??ref--1-3!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SeparatorVirtualGrid.vue?vue&type=style&index=0&id=39804afc&lang=scss&scoped=true&\", function() {\n var newContent = require(\"!!../../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??ref--1-3!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SeparatorVirtualGrid.vue?vue&type=style&index=0&id=39804afc&lang=scss&scoped=true&\");\n if(typeof newContent === 'string') newContent = [[module.id, newContent, '']];\n update(newContent);\n });\n }\n // When the module is disposed, remove the <style> tags\n module.hot.dispose(function() { update(); });\n}","// style-loader: Adds some css to the DOM by adding a <style> tag\n\n// load the styles\nvar content = require(\"!!../../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??ref--1-3!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Timeline.vue?vue&type=style&index=0&id=e945440a&lang=scss&scoped=true&\");\nif(typeof content === 'string') content = [[module.id, content, '']];\nif(content.locals) module.exports = content.locals;\n// add the styles to the DOM\nvar add = require(\"!../../node_modules/vue-style-loader/lib/addStylesClient.js\").default\nvar update = add(\"aacb1584\", content, false, {});\n// Hot Module Replacement\nif(module.hot) {\n // When the styles change, update the <style> tags\n if(!content.locals) {\n module.hot.accept(\"!!../../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??ref--1-3!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Timeline.vue?vue&type=style&index=0&id=e945440a&lang=scss&scoped=true&\", function() {\n var newContent = require(\"!!../../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??ref--1-3!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Timeline.vue?vue&type=style&index=0&id=e945440a&lang=scss&scoped=true&\");\n if(typeof newContent === 'string') newContent = [[module.id, newContent, '']];\n update(newContent);\n });\n }\n // When the module is disposed, remove the <style> tags\n module.hot.dispose(function() { update(); });\n}","/**\n * @copyright Copyright (c) 2018 John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @license GNU AGPL version 3 or any later version\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// for now we want to keep the same gap everywhere\nvar gap = 8;\n/**\n * Define the max width proportions\n * The number (key) indicate the MAX size\n *\n * needs to be ompatible with webpack config\n * so no export default {}\n */\n\nmodule.exports = {\n sizes: {\n 400: {\n marginTop: 66,\n // same as grid-gap\n marginW: gap,\n // same as grid-gap\n count: 3,\n gap: gap\n },\n 700: {\n marginTop: 66,\n marginW: 8,\n // same as grid-gap\n count: 4,\n gap: gap\n },\n 1024: {\n marginTop: 66,\n marginW: 44,\n count: 5,\n gap: gap\n },\n 1280: {\n marginTop: 66,\n marginW: 44,\n count: 4,\n gap: gap\n },\n 1440: {\n marginTop: 88,\n marginW: 66,\n count: 5,\n gap: gap\n },\n 1600: {\n marginTop: 88,\n marginW: 66,\n count: 6,\n gap: gap\n },\n 2048: {\n marginTop: 88,\n marginW: 66,\n count: 7,\n gap: gap\n },\n 2560: {\n marginTop: 88,\n marginW: 88,\n count: 8,\n gap: gap\n },\n 3440: {\n marginTop: 88,\n marginW: 88,\n count: 9,\n gap: gap\n },\n max: {\n marginTop: 88,\n marginW: 88,\n count: 10,\n gap: gap\n }\n }\n};","import { render, staticRenderFns } from \"./FileVirtualGrid.vue?vue&type=template&id=5537a555&scoped=true&\"\nimport script from \"./FileVirtualGrid.vue?vue&type=script&lang=js&\"\nexport * from \"./FileVirtualGrid.vue?vue&type=script&lang=js&\"\nimport style0 from \"./FileVirtualGrid.vue?vue&type=style&index=0&id=5537a555&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 \"5537a555\",\n null\n \n)\n\n/* hot reload */\nif (module.hot) {\n var api = require(\"/home/cmors/dev/tools/nx/apps/photos/node_modules/vue-hot-reload-api/dist/index.js\")\n api.install(require('vue'))\n if (api.compatible) {\n module.hot.accept()\n if (!api.isRecorded('5537a555')) {\n api.createRecord('5537a555', component.options)\n } else {\n api.reload('5537a555', component.options)\n }\n module.hot.accept(\"./FileVirtualGrid.vue?vue&type=template&id=5537a555&scoped=true&\", function () {\n api.rerender('5537a555', {\n render: render,\n staticRenderFns: staticRenderFns\n })\n })\n }\n}\ncomponent.options.__file = \"src/components/FileVirtualGrid.vue\"\nexport default component.exports","import mod from \"-!../../node_modules/babel-loader/lib/index.js!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FileVirtualGrid.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!./FileVirtualGrid.vue?vue&type=script&lang=js&\"","import mod from \"-!../../node_modules/vue-style-loader/index.js!../../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??ref--1-3!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FileVirtualGrid.vue?vue&type=style&index=0&id=5537a555&lang=scss&scoped=true&\"; export default mod; export * from \"-!../../node_modules/vue-style-loader/index.js!../../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??ref--1-3!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FileVirtualGrid.vue?vue&type=style&index=0&id=5537a555&lang=scss&scoped=true&\"","export * from \"-!../../node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FileVirtualGrid.vue?vue&type=template&id=5537a555&scoped=true&\"","import { render, staticRenderFns } from \"./Loader.vue?vue&type=template&id=04a0d67a&\"\nimport script from \"./Loader.vue?vue&type=script&lang=js&\"\nexport * from \"./Loader.vue?vue&type=script&lang=js&\"\nimport style0 from \"./Loader.vue?vue&type=style&index=0&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\n/* hot reload */\nif (module.hot) {\n var api = require(\"/home/cmors/dev/tools/nx/apps/photos/node_modules/vue-hot-reload-api/dist/index.js\")\n api.install(require('vue'))\n if (api.compatible) {\n module.hot.accept()\n if (!api.isRecorded('04a0d67a')) {\n api.createRecord('04a0d67a', component.options)\n } else {\n api.reload('04a0d67a', component.options)\n }\n module.hot.accept(\"./Loader.vue?vue&type=template&id=04a0d67a&\", function () {\n api.rerender('04a0d67a', {\n render: render,\n staticRenderFns: staticRenderFns\n })\n })\n }\n}\ncomponent.options.__file = \"src/components/Loader.vue\"\nexport default component.exports","import mod from \"-!../../node_modules/babel-loader/lib/index.js!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Loader.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!./Loader.vue?vue&type=script&lang=js&\"","import mod from \"-!../../node_modules/vue-style-loader/index.js!../../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??ref--1-3!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Loader.vue?vue&type=style&index=0&lang=scss&\"; export default mod; export * from \"-!../../node_modules/vue-style-loader/index.js!../../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??ref--1-3!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Loader.vue?vue&type=style&index=0&lang=scss&\"","export * from \"-!../../node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Loader.vue?vue&type=template&id=04a0d67a&\"","import { render, staticRenderFns } from \"./SeparatorVirtualGrid.vue?vue&type=template&id=39804afc&scoped=true&\"\nimport script from \"./SeparatorVirtualGrid.vue?vue&type=script&lang=js&\"\nexport * from \"./SeparatorVirtualGrid.vue?vue&type=script&lang=js&\"\nimport style0 from \"./SeparatorVirtualGrid.vue?vue&type=style&index=0&id=39804afc&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 \"39804afc\",\n null\n \n)\n\n/* hot reload */\nif (module.hot) {\n var api = require(\"/home/cmors/dev/tools/nx/apps/photos/node_modules/vue-hot-reload-api/dist/index.js\")\n api.install(require('vue'))\n if (api.compatible) {\n module.hot.accept()\n if (!api.isRecorded('39804afc')) {\n api.createRecord('39804afc', component.options)\n } else {\n api.reload('39804afc', component.options)\n }\n module.hot.accept(\"./SeparatorVirtualGrid.vue?vue&type=template&id=39804afc&scoped=true&\", function () {\n api.rerender('39804afc', {\n render: render,\n staticRenderFns: staticRenderFns\n })\n })\n }\n}\ncomponent.options.__file = \"src/components/SeparatorVirtualGrid.vue\"\nexport default component.exports","import mod from \"-!../../node_modules/babel-loader/lib/index.js!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SeparatorVirtualGrid.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!./SeparatorVirtualGrid.vue?vue&type=script&lang=js&\"","import mod from \"-!../../node_modules/vue-style-loader/index.js!../../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??ref--1-3!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SeparatorVirtualGrid.vue?vue&type=style&index=0&id=39804afc&lang=scss&scoped=true&\"; export default mod; export * from \"-!../../node_modules/vue-style-loader/index.js!../../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??ref--1-3!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SeparatorVirtualGrid.vue?vue&type=style&index=0&id=39804afc&lang=scss&scoped=true&\"","export * from \"-!../../node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SeparatorVirtualGrid.vue?vue&type=template&id=39804afc&scoped=true&\"","/**\n * @copyright Copyright (c) 2018 John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @license GNU AGPL version 3 or any later version\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 */\nimport getGridConfig from '../services/GridConfig';\n/**\n * Get the current used grid config\n */\n\nexport default {\n data: function data() {\n return {\n gridConfig: {}\n };\n },\n created: function created() {\n var _this = this;\n\n getGridConfig.$on('changed', function (val) {\n _this.gridConfig = val;\n });\n console.debug('Current grid config', getGridConfig.gridConfig);\n this.gridConfig = getGridConfig.gridConfig;\n },\n beforeDestroy: function beforeDestroy() {\n getGridConfig.$off('changed', this.gridConfig);\n }\n};","function _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\n/**\n * @copyright Copyright (c) 2019 John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @license GNU AGPL version 3 or any later version\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 */\nvar request = require('webdav/dist/node/request');\n\nvar oldPrepareRequestOptions = request.prepareRequestOptions; // While we wait for official cancellable webdav requests\n// https://github.com/perry-mitchell/webdav-client/issues/179\n// let's properly forward our axios options through webdav to axios\n\nrequest.prepareRequestOptions = function (requestOptions, methodOptions) {\n // add our cancelToken support\n if (methodOptions.cancelToken && _typeof(methodOptions.cancelToken) === 'object') {\n requestOptions.cancelToken = methodOptions.cancelToken;\n } // exploit old method\n\n\n oldPrepareRequestOptions(requestOptions, methodOptions); // allow us to override the request method\n\n if (methodOptions.method && typeof methodOptions.method === 'string') {\n requestOptions.method = methodOptions.method;\n }\n};\n\nmodule.exports = request;","/**\n * @copyright Copyright (c) 2019 John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @license GNU AGPL version 3 or any later version\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 */\nimport webdav from 'webdav';\nimport axios from '@nextcloud/axios';\nimport parseUrl from 'url-parse';\nimport { generateRemoteUrl } from '@nextcloud/router'; // force our axios\n\nvar patcher = webdav.getPatcher();\npatcher.patch('request', axios); // init webdav client on default dav endpoint\n\nvar remote = generateRemoteUrl('dav');\nvar client = webdav.createClient(remote);\nexport var remotePath = parseUrl(remote).pathname;\nexport default client;","/**\n * @copyright Copyright (c) 2019 John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @license GNU AGPL version 3 or any later version\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 */\nvar props = \"\\n\\t<oc:fileid />\\n\\t<d:getlastmodified />\\n\\t<d:getetag />\\n\\t<d:getcontenttype />\\n\\t<d:getcontentlength />\\n\\t<nc:has-preview />\\n\\t<oc:favorite />\\n\\t<d:resourcetype />\";\nexport { props };\nexport default \"<?xml version=\\\"1.0\\\"?>\\n\\t\\t\\t<d:propfind xmlns:d=\\\"DAV:\\\"\\n\\t\\t\\t\\txmlns:oc=\\\"http://owncloud.org/ns\\\"\\n\\t\\t\\t\\txmlns:nc=\\\"http://nextcloud.org/ns\\\"\\n\\t\\t\\t\\txmlns:ocs=\\\"http://open-collaboration-services.org/ns\\\">\\n\\t\\t\\t\\t<d:prop>\\n\\t\\t\\t\\t\\t\".concat(props, \"\\n\\t\\t\\t\\t</d:prop>\\n\\t\\t\\t</d:propfind>\");","/**\n * @copyright Copyright (c) 2019 John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @license GNU AGPL version 3 or any later version\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 */\nimport Vue from 'vue';\nimport { sizes } from '../assets/grid-sizes';\nexport default new Vue({\n data: function data() {\n return {\n gridConfig: sizes.max\n };\n },\n watch: {\n gridConfig: function gridConfig(val) {\n this.$emit('changed', val);\n }\n },\n created: function created() {\n window.addEventListener('resize', this.handleWindowResize);\n this.handleWindowResize();\n },\n beforeDestroy: function beforeDestroy() {\n window.removeEventListener('resize', this.handleWindowResize);\n },\n methods: {\n handleWindowResize: function handleWindowResize() {\n // find the first grid size that fit the current window width\n var currentSize = Object.keys(sizes).find(function (size) {\n return size > document.documentElement.clientWidth;\n });\n this.gridConfig = sizes[currentSize];\n }\n }\n});","function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } }\n\nfunction _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"next\", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"throw\", err); } _next(undefined); }); }; }\n\n/**\n * @copyright Copyright (c) 2019 John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @license GNU AGPL version 3 or any later version\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 */\nimport { genFileInfo } from '../utils/fileUtils';\nimport { getCurrentUser } from '@nextcloud/auth';\nimport allowedMimes from './AllowedMimes';\nimport client from './DavClient';\nimport { props } from './DavRequest';\nimport { sizes } from '../assets/grid-sizes';\n/**\n * List files from a folder and filter out unwanted mimes\n *\n * @param {boolean} [onlyFavorites=false] not used\n * @param {Object} [options] used for the cancellable requests\n * @param {number} [options.page=0] which page to start (starts at 0)\n * @param {number} [options.perPage] how many to display per page default is 5 times the max number per line from the grid-sizes config file\n * @param {boolean} [options.full=false] get full data of the files\n * @returns {Array} the file list\n */\n\nexport default function () {\n return _ref.apply(this, arguments);\n}\n\nfunction _ref() {\n _ref = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee() {\n var onlyFavorites,\n options,\n prefixPath,\n orMime,\n eqFavorites,\n response,\n _args = arguments;\n return regeneratorRuntime.wrap(function _callee$(_context) {\n while (1) {\n switch (_context.prev = _context.next) {\n case 0:\n onlyFavorites = _args.length > 0 && _args[0] !== undefined ? _args[0] : false;\n options = _args.length > 1 && _args[1] !== undefined ? _args[1] : {};\n // default function options\n options = Object.assign({}, {\n page: 0,\n // start at the first page\n perPage: sizes.max.count * 10 // ten rows of the max width\n\n }, options);\n prefixPath = \"/files/\".concat(getCurrentUser().uid); // generating the search or condition\n // based on the allowed mimetypes\n\n orMime = allowedMimes.reduce(function (str, mime) {\n return \"\".concat(str, \"\\n\\t\\t<d:eq>\\n\\t\\t\\t<d:prop>\\n\\t\\t\\t\\t<d:getcontenttype/>\\n\\t\\t\\t</d:prop>\\n\\t\\t\\t<d:literal>\").concat(mime, \"</d:literal>\\n\\t\\t</d:eq>\\n\\t\");\n }, '');\n eqFavorites = onlyFavorites ? \"<d:eq>\\n\\t\\t\\t\\t<d:prop>\\n\\t\\t\\t\\t\\t<oc:favorite/>\\n\\t\\t\\t\\t</d:prop>\\n\\t\\t\\t\\t<d:literal>1</d:literal>\\n\\t\\t\\t</d:eq>\" : '';\n options = Object.assign({\n method: 'SEARCH',\n headers: {\n 'content-Type': 'text/xml'\n },\n data: \"<?xml version=\\\"1.0\\\" encoding=\\\"UTF-8\\\"?>\\n\\t\\t\\t<d:searchrequest xmlns:d=\\\"DAV:\\\"\\n\\t\\t\\t\\txmlns:oc=\\\"http://owncloud.org/ns\\\"\\n\\t\\t\\t\\txmlns:nc=\\\"http://nextcloud.org/ns\\\"\\n\\t\\t\\t\\txmlns:ns=\\\"https://github.com/icewind1991/SearchDAV/ns\\\"\\n\\t\\t\\t\\txmlns:ocs=\\\"http://open-collaboration-services.org/ns\\\">\\n\\t\\t\\t\\t<d:basicsearch>\\n\\t\\t\\t\\t\\t<d:select>\\n\\t\\t\\t\\t\\t\\t<d:prop>\\n\\t\\t\\t\\t\\t\\t\\t\".concat(props, \"\\n\\t\\t\\t\\t\\t\\t</d:prop>\\n\\t\\t\\t\\t\\t</d:select>\\n\\t\\t\\t\\t\\t<d:from>\\n\\t\\t\\t\\t\\t\\t<d:scope>\\n\\t\\t\\t\\t\\t\\t\\t<d:href>\").concat(prefixPath, \"</d:href>\\n\\t\\t\\t\\t\\t\\t\\t<d:depth>infinity</d:depth>\\n\\t\\t\\t\\t\\t\\t</d:scope>\\n\\t\\t\\t\\t\\t</d:from>\\n\\t\\t\\t\\t\\t<d:where>\\n\\t\\t\\t\\t\\t\\t<d:and>\\n\\t\\t\\t\\t\\t\\t\\t<d:or>\\n\\t\\t\\t\\t\\t\\t\\t\\t\").concat(orMime, \"\\n\\t\\t\\t\\t\\t\\t\\t</d:or>\\n\\t\\t\\t\\t\\t\\t\\t\").concat(eqFavorites, \"\\n\\t\\t\\t\\t\\t\\t\\t<d:eq>\\n\\t\\t\\t\\t\\t\\t\\t\\t<d:prop>\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t<oc:owner-id/>\\n\\t\\t\\t\\t\\t\\t\\t\\t</d:prop>\\n\\t\\t\\t\\t\\t\\t\\t\\t<d:literal>\").concat(getCurrentUser().uid, \"</d:literal>\\n\\t\\t\\t\\t\\t\\t\\t</d:eq>\\n\\t\\t\\t\\t\\t\\t</d:and>\\n\\t\\t\\t\\t\\t</d:where>\\n\\t\\t\\t\\t\\t<d:orderby>\\n\\t\\t\\t\\t\\t\\t<d:order>\\n\\t\\t\\t\\t\\t\\t\\t<d:prop><d:getlastmodified/></d:prop>\\n\\t\\t\\t\\t\\t\\t\\t<d:descending/>\\n\\t\\t\\t\\t\\t\\t</d:order>\\n\\t\\t\\t\\t\\t</d:orderby>\\n\\t\\t\\t\\t\\t<d:limit>\\n\\t\\t\\t\\t\\t\\t<d:nresults>\").concat(options.perPage, \"</d:nresults>\\n\\t\\t\\t\\t\\t\\t<ns:firstresult>\").concat(options.page * options.perPage, \"</ns:firstresult>\\n\\t\\t\\t\\t\\t</d:limit>\\n\\t\\t\\t\\t</d:basicsearch>\\n\\t\\t\\t</d:searchrequest>\"),\n deep: true,\n details: true\n }, options);\n _context.next = 9;\n return client.getDirectoryContents('', options);\n\n case 9:\n response = _context.sent;\n return _context.abrupt(\"return\", response.data.map(function (data) {\n return genFileInfo(data);\n }) // remove prefix path from full file path\n .map(function (data) {\n return Object.assign({}, data, {\n filename: data.filename.replace(prefixPath, '')\n });\n }));\n\n case 11:\n case \"end\":\n return _context.stop();\n }\n }\n }, _callee);\n }));\n return _ref.apply(this, arguments);\n}","import { render, staticRenderFns } from \"./Timeline.vue?vue&type=template&id=e945440a&scoped=true&\"\nimport script from \"./Timeline.vue?vue&type=script&lang=js&\"\nexport * from \"./Timeline.vue?vue&type=script&lang=js&\"\nimport style0 from \"./Timeline.vue?vue&type=style&index=0&id=e945440a&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 \"e945440a\",\n null\n \n)\n\n/* hot reload */\nif (module.hot) {\n var api = require(\"/home/cmors/dev/tools/nx/apps/photos/node_modules/vue-hot-reload-api/dist/index.js\")\n api.install(require('vue'))\n if (api.compatible) {\n module.hot.accept()\n if (!api.isRecorded('e945440a')) {\n api.createRecord('e945440a', component.options)\n } else {\n api.reload('e945440a', component.options)\n }\n module.hot.accept(\"./Timeline.vue?vue&type=template&id=e945440a&scoped=true&\", function () {\n api.rerender('e945440a', {\n render: render,\n staticRenderFns: staticRenderFns\n })\n })\n }\n}\ncomponent.options.__file = \"src/views/Timeline.vue\"\nexport default component.exports","import mod from \"-!../../node_modules/babel-loader/lib/index.js!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Timeline.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!./Timeline.vue?vue&type=script&lang=js&\"","import mod from \"-!../../node_modules/vue-style-loader/index.js!../../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??ref--1-3!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Timeline.vue?vue&type=style&index=0&id=e945440a&lang=scss&scoped=true&\"; export default mod; export * from \"-!../../node_modules/vue-style-loader/index.js!../../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??ref--1-3!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Timeline.vue?vue&type=style&index=0&id=e945440a&lang=scss&scoped=true&\"","export * from \"-!../../node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Timeline.vue?vue&type=template&id=e945440a&scoped=true&\""],"mappings":";;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;ACnHA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;ACXA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;AChBA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;AC/UA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;ACNA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;ACNA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;ACNA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACNA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;ACvEA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;ACbA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;ACfA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;ACpEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;ACVA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;ACVA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;ACVA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;ACVA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;ACjGA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAiBA;AACA;AACA;;;;;;;;;;;;ACvCA;AAAA;AAAA;;;;;;;;;;;;ACAA;AAAA;AAAA;AAAA;AAAA;;;;;;;;;;;;ACAA;AAAA;AAAA;AAAA;AAAA;AAAA;;;;;;;;;;;;;ACAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAiBA;AACA;AACA;;;;;;;;;;;;ACvCA;AAAA;AAAA;;;;;;;;;;;;ACAA;AAAA;AAAA;AAAA;AAAA;;;;;;;;;;;;ACAA;AAAA;AAAA;AAAA;AAAA;AAAA;;;;;;;;;;;;;ACAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAiBA;AACA;AACA;;;;;;;;;;;;ACvCA;AAAA;AAAA;;;;;;;;;;;;ACAA;AAAA;AAAA;AAAA;AAAA;;;;;;;;;;;;ACAA;AAAA;AAAA;AAAA;AAAA;AAAA;;;;;;;;;;;;;ACAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;AC5CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;AC3CA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;AChCA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;ACvBA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;AClDA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;AC1GA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAiBA;AACA;AACA;;;;;;;;;;;;ACvCA;AAAA;AAAA;;;;;;;;;;;;ACAA;AAAA;AAAA;AAAA;AAAA;;;;;;;;;;;;ACAA;AAAA;AAAA;AAAA;AAAA;AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;A","sourceRoot":""} \ No newline at end of file