aboutsummaryrefslogtreecommitdiffstats
path: root/dist/dashboard-dashboard-main.js.map
blob: 530307407a5cdc3800c099445f317729f4b5d779 (plain)
1
{"version":3,"file":"dashboard-dashboard-main.js?v=c13b5fed857155f8c15e","mappings":";;;;;;;;;;;;;;;;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;;;;;;;;;;;;;;;;;ACtBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;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/CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;;;;;;;;;AChDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;;AC1cA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;AC3JA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;ACNA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;ACNA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;ACZA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;ACZA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAkBA;AACA;;;;;;;;;;;;;;;;;;ACvCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAkBA;AACA;;;;;;;;;;;;;;;ACvCA;;;;;;;;;;;;;;;ACAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;ACvVA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;ACzFA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;AC7BA;AACA;AACA;;;;;ACFA;;;;;ACAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;AC7BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;ACPA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;ACPA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;ACPA;;;;;ACAA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;ACNA;AACA;AACA;AACA;AACA;;;;;ACJA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;AElDA;AACA;AACA;AACA;AACA","sources":["webpack:///nextcloud/apps/dashboard/src/helpers/getBackgroundUrl.js","webpack:///nextcloud/apps/dashboard/src/helpers/prefixWithBaseUrl.js","webpack:///nextcloud/apps/dashboard/src/main.js","webpack:///nextcloud/apps/dashboard/src/mixins/isMobile.js","webpack:///nextcloud/apps/dashboard/src/App.vue?vue&type=script&lang=js&","webpack:///nextcloud/apps/dashboard/src/components/BackgroundSettings.vue?vue&type=script&lang=js&","webpack:///nextcloud/apps/dashboard/src/App.vue?vue&type=style&index=0&id=47e146e8&lang=scss&scoped=true&","webpack:///nextcloud/apps/dashboard/src/components/BackgroundSettings.vue?vue&type=style&index=0&id=7e3f4375&scoped=true&lang=scss&","webpack://nextcloud/./apps/dashboard/src/App.vue?8b87","webpack://nextcloud/./apps/dashboard/src/components/BackgroundSettings.vue?18ed","webpack:///nextcloud/apps/dashboard/src/App.vue","webpack:///nextcloud/apps/dashboard/src/components/BackgroundSettings.vue","webpack://nextcloud/./apps/dashboard/src/App.vue?8fcd","webpack://nextcloud/./apps/dashboard/src/components/BackgroundSettings.vue?9d11","webpack:///nextcloud/apps/dashboard/src/App.vue?vue&type=template&id=47e146e8&scoped=true&","webpack:///nextcloud/apps/dashboard/src/components/BackgroundSettings.vue?vue&type=template&id=7e3f4375&scoped=true&","webpack:///nextcloud/webpack/bootstrap","webpack:///nextcloud/webpack/runtime/amd define","webpack:///nextcloud/webpack/runtime/amd options","webpack:///nextcloud/webpack/runtime/chunk loaded","webpack:///nextcloud/webpack/runtime/compat get default export","webpack:///nextcloud/webpack/runtime/define property getters","webpack:///nextcloud/webpack/runtime/global","webpack:///nextcloud/webpack/runtime/hasOwnProperty shorthand","webpack:///nextcloud/webpack/runtime/make namespace object","webpack:///nextcloud/webpack/runtime/node module decorator","webpack:///nextcloud/webpack/runtime/jsonp chunk loading","webpack:///nextcloud/webpack/before-startup","webpack:///nextcloud/webpack/startup","webpack:///nextcloud/webpack/after-startup"],"sourcesContent":["/**\n * @copyright Copyright (c) 2020 Julius Härtl <jus@bitgrid.net>\n *\n * @author Avior <florian.bouillon@delta-wings.net>\n * @author Julien Veyssier <eneiluj@posteo.net>\n * @author Julius Härtl <jus@bitgrid.net>\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 { generateUrl } from '@nextcloud/router';\nimport prefixWithBaseUrl from './prefixWithBaseUrl';\nexport default (function (background) {\n  let time = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;\n  let themingDefaultBackground = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : '';\n\n  if (background === 'default') {\n    if (themingDefaultBackground && themingDefaultBackground !== 'backgroundColor') {\n      return generateUrl('/apps/theming/image/background') + '?v=' + window.OCA.Theming.cacheBuster;\n    }\n\n    if (window.OCA.Accessibility && window.OCA.Accessibility.theme === 'dark') {\n      return prefixWithBaseUrl('eduardo-neves-pedra-azul.jpg');\n    }\n\n    return prefixWithBaseUrl('kamil-porembinski-clouds.jpg');\n  } else if (background === 'custom') {\n    return generateUrl('/apps/dashboard/background') + '?v=' + time;\n  }\n\n  return prefixWithBaseUrl(background);\n});","/**\n * @copyright Copyright (c) 2020 Julius Härtl <jus@bitgrid.net>\n *\n * @author Julius Härtl <jus@bitgrid.net>\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 { generateFilePath } from '@nextcloud/router';\nexport default (url => generateFilePath('dashboard', '', 'img/') + url);","/**\n * @copyright Copyright (c) 2016 Julius Härtl <jus@bitgrid.net>\n *\n * @author Julius Härtl <jus@bitgrid.net>\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 App from './App.vue';\nimport { translate as t } from '@nextcloud/l10n';\nimport VTooltip from '@nextcloud/vue/dist/Directives/Tooltip';\nimport { getRequestToken } from '@nextcloud/auth'; // eslint-disable-next-line camelcase\n\n__webpack_nonce__ = btoa(getRequestToken());\nVue.directive('Tooltip', VTooltip);\nVue.prototype.t = t; // FIXME workaround to make the sidebar work\n\nif (!window.OCA.Files) {\n  window.OCA.Files = {};\n}\n\nObject.assign(window.OCA.Files, {\n  App: {\n    fileList: {\n      filesClient: OC.Files.getClient()\n    }\n  }\n}, window.OCA.Files);\nconst Dashboard = Vue.extend(App);\nconst Instance = new Dashboard({}).$mount('#app-content-vue');\nwindow.OCA.Dashboard = {\n  register: (app, callback) => Instance.register(app, callback),\n  registerStatus: (app, callback) => Instance.registerStatus(app, callback)\n};","/**\n * @copyright Copyright (c) 2020 Julius Härtl <jus@bitgrid.net>\n *\n * @author Julius Härtl <jus@bitgrid.net>\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 */\nexport default {\n  data() {\n    return {\n      isMobile: this._isMobile()\n    };\n  },\n\n  beforeMount() {\n    window.addEventListener('resize', this._onResize);\n  },\n\n  beforeDestroy() {\n    window.removeEventListener('resize', this._onResize);\n  },\n\n  methods: {\n    _onResize() {\n      // Update mobile mode\n      this.isMobile = this._isMobile();\n    },\n\n    _isMobile() {\n      // check if content width is under 768px\n      return document.documentElement.clientWidth < 768;\n    }\n\n  }\n};","//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\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 Vue from 'vue';\nimport { loadState } from '@nextcloud/initial-state';\nimport { getCurrentUser } from '@nextcloud/auth';\nimport Modal from '@nextcloud/vue/dist/Components/Modal';\nimport Draggable from 'vuedraggable';\nimport axios from '@nextcloud/axios';\nimport { generateUrl } from '@nextcloud/router';\nimport isMobile from './mixins/isMobile';\nimport BackgroundSettings from './components/BackgroundSettings';\nimport getBackgroundUrl from './helpers/getBackgroundUrl';\nconst panels = loadState('dashboard', 'panels');\nconst firstRun = loadState('dashboard', 'firstRun');\nconst background = loadState('dashboard', 'background');\nconst themingDefaultBackground = loadState('dashboard', 'themingDefaultBackground');\nconst version = loadState('dashboard', 'version');\nconst shippedBackgroundList = loadState('dashboard', 'shippedBackgrounds');\nconst statusInfo = {\n  weather: {\n    text: t('dashboard', 'Weather'),\n    icon: 'icon-weather-status'\n  },\n  status: {\n    text: t('dashboard', 'Status'),\n    icon: 'icon-user-status-online'\n  }\n};\nexport default {\n  name: 'App',\n  components: {\n    Modal,\n    Draggable,\n    BackgroundSettings\n  },\n  mixins: [isMobile],\n\n  data() {\n    var _getCurrentUser, _getCurrentUser2;\n\n    return {\n      isAdmin: getCurrentUser().isAdmin,\n      timer: new Date(),\n      registeredStatus: [],\n      callbacks: {},\n      callbacksStatus: {},\n      allCallbacksStatus: {},\n      statusInfo,\n      enabledStatuses: loadState('dashboard', 'statuses'),\n      panels,\n      firstRun,\n      displayName: (_getCurrentUser = getCurrentUser()) === null || _getCurrentUser === void 0 ? void 0 : _getCurrentUser.displayName,\n      uid: (_getCurrentUser2 = getCurrentUser()) === null || _getCurrentUser2 === void 0 ? void 0 : _getCurrentUser2.uid,\n      layout: loadState('dashboard', 'layout').filter(panelId => panels[panelId]),\n      modal: false,\n      appStoreUrl: generateUrl('/settings/apps/dashboard'),\n      statuses: {},\n      background,\n      themingDefaultBackground,\n      version\n    };\n  },\n\n  computed: {\n    backgroundImage() {\n      return getBackgroundUrl(this.background, this.version, this.themingDefaultBackground);\n    },\n\n    backgroundStyle() {\n      if (this.background === 'default' && this.themingDefaultBackground === 'backgroundColor' || this.background.match(/#[0-9A-Fa-f]{6}/g)) {\n        return null;\n      }\n\n      return {\n        backgroundImage: \"url(\".concat(this.backgroundImage, \")\")\n      };\n    },\n\n    greeting() {\n      const time = this.timer.getHours(); // Determine part of the day\n\n      let partOfDay;\n\n      if (time >= 22 || time < 5) {\n        partOfDay = 'night';\n      } else if (time >= 18) {\n        partOfDay = 'evening';\n      } else if (time >= 12) {\n        partOfDay = 'afternoon';\n      } else {\n        partOfDay = 'morning';\n      } // Define the greetings\n\n\n      const good = {\n        morning: {\n          generic: t('dashboard', 'Good morning'),\n          withName: t('dashboard', 'Good morning, {name}', {\n            name: this.displayName\n          }, undefined, {\n            escape: false\n          })\n        },\n        afternoon: {\n          generic: t('dashboard', 'Good afternoon'),\n          withName: t('dashboard', 'Good afternoon, {name}', {\n            name: this.displayName\n          }, undefined, {\n            escape: false\n          })\n        },\n        evening: {\n          generic: t('dashboard', 'Good evening'),\n          withName: t('dashboard', 'Good evening, {name}', {\n            name: this.displayName\n          }, undefined, {\n            escape: false\n          })\n        },\n        night: {\n          // Don't use \"Good night\" as it's not a greeting\n          generic: t('dashboard', 'Hello'),\n          withName: t('dashboard', 'Hello, {name}', {\n            name: this.displayName\n          }, undefined, {\n            escape: false\n          })\n        }\n      }; // Figure out which greeting to show\n\n      const shouldShowName = this.displayName && this.uid !== this.displayName;\n      return {\n        text: shouldShowName ? good[partOfDay].withName : good[partOfDay].generic\n      };\n    },\n\n    isActive() {\n      return panel => this.layout.indexOf(panel.id) > -1;\n    },\n\n    isStatusActive() {\n      return status => !(status in this.enabledStatuses) || this.enabledStatuses[status];\n    },\n\n    sortedAllStatuses() {\n      return Object.keys(this.allCallbacksStatus).slice().sort(this.sortStatuses);\n    },\n\n    sortedPanels() {\n      return Object.values(this.panels).sort((a, b) => {\n        const indexA = this.layout.indexOf(a.id);\n        const indexB = this.layout.indexOf(b.id);\n\n        if (indexA === -1 || indexB === -1) {\n          return indexB - indexA || a.id - b.id;\n        }\n\n        return indexA - indexB || a.id - b.id;\n      });\n    },\n\n    sortedRegisteredStatus() {\n      return this.registeredStatus.slice().sort(this.sortStatuses);\n    }\n\n  },\n  watch: {\n    callbacks() {\n      this.rerenderPanels();\n    },\n\n    callbacksStatus() {\n      for (const app in this.callbacksStatus) {\n        const element = this.$refs['status-' + app];\n\n        if (this.statuses[app] && this.statuses[app].mounted) {\n          continue;\n        }\n\n        if (element) {\n          this.callbacksStatus[app](element[0]);\n          Vue.set(this.statuses, app, {\n            mounted: true\n          });\n        } else {\n          console.error('Failed to register panel in the frontend as no backend data was provided for ' + app);\n        }\n      }\n    }\n\n  },\n\n  mounted() {\n    this.updateGlobalStyles();\n    this.updateSkipLink();\n    window.addEventListener('scroll', this.handleScroll);\n    setInterval(() => {\n      this.timer = new Date();\n    }, 30000);\n\n    if (this.firstRun) {\n      window.addEventListener('scroll', this.disableFirstrunHint);\n    }\n  },\n\n  destroyed() {\n    window.removeEventListener('scroll', this.handleScroll);\n  },\n\n  methods: {\n    /**\n     * Method to register panels that will be called by the integrating apps\n     *\n     * @param {string} app The unique app id for the widget\n     * @param {Function} callback The callback function to register a panel which gets the DOM element passed as parameter\n     */\n    register(app, callback) {\n      Vue.set(this.callbacks, app, callback);\n    },\n\n    registerStatus(app, callback) {\n      // always save callbacks in case user enables the status later\n      Vue.set(this.allCallbacksStatus, app, callback); // register only if status is enabled or missing from config\n\n      if (this.isStatusActive(app)) {\n        this.registeredStatus.push(app);\n        this.$nextTick(() => {\n          Vue.set(this.callbacksStatus, app, callback);\n        });\n      }\n    },\n\n    rerenderPanels() {\n      for (const app in this.callbacks) {\n        const element = this.$refs[app];\n\n        if (this.layout.indexOf(app) === -1) {\n          continue;\n        }\n\n        if (this.panels[app] && this.panels[app].mounted) {\n          continue;\n        }\n\n        if (element) {\n          this.callbacks[app](element[0], {\n            widget: this.panels[app]\n          });\n          Vue.set(this.panels[app], 'mounted', true);\n        } else {\n          console.error('Failed to register panel in the frontend as no backend data was provided for ' + app);\n        }\n      }\n    },\n\n    saveLayout() {\n      axios.post(generateUrl('/apps/dashboard/layout'), {\n        layout: this.layout.join(',')\n      });\n    },\n\n    saveStatuses() {\n      axios.post(generateUrl('/apps/dashboard/statuses'), {\n        statuses: JSON.stringify(this.enabledStatuses)\n      });\n    },\n\n    showModal() {\n      this.modal = true;\n      this.firstRun = false;\n    },\n\n    closeModal() {\n      this.modal = false;\n    },\n\n    updateCheckbox(panel, currentValue) {\n      const index = this.layout.indexOf(panel.id);\n\n      if (!currentValue && index > -1) {\n        this.layout.splice(index, 1);\n      } else {\n        this.layout.push(panel.id);\n      }\n\n      Vue.set(this.panels[panel.id], 'mounted', false);\n      this.saveLayout();\n      this.$nextTick(() => this.rerenderPanels());\n    },\n\n    disableFirstrunHint() {\n      window.removeEventListener('scroll', this.disableFirstrunHint);\n      setTimeout(() => {\n        this.firstRun = false;\n      }, 1000);\n    },\n\n    updateBackground(data) {\n      this.background = data.type === 'custom' || data.type === 'default' ? data.type : data.value;\n      this.version = data.version;\n      this.updateGlobalStyles();\n    },\n\n    updateGlobalStyles() {\n      document.body.setAttribute('data-dashboard-background', this.background);\n\n      if (window.OCA.Theming.inverted) {\n        document.body.classList.add('dashboard--inverted');\n      }\n\n      const shippedBackgroundTheme = shippedBackgroundList[this.background] ? shippedBackgroundList[this.background].theming : 'light';\n\n      if (shippedBackgroundTheme === 'dark') {\n        document.body.classList.add('dashboard--dark');\n      } else {\n        document.body.classList.remove('dashboard--dark');\n      }\n    },\n\n    updateSkipLink() {\n      // Make sure \"Skip to main content\" link points to the app content\n      document.getElementsByClassName('skip-navigation')[0].setAttribute('href', '#app-dashboard');\n    },\n\n    updateStatusCheckbox(app, checked) {\n      if (checked) {\n        this.enableStatus(app);\n      } else {\n        this.disableStatus(app);\n      }\n    },\n\n    enableStatus(app) {\n      this.enabledStatuses[app] = true;\n      this.registerStatus(app, this.allCallbacksStatus[app]);\n      this.saveStatuses();\n    },\n\n    disableStatus(app) {\n      this.enabledStatuses[app] = false;\n      const i = this.registeredStatus.findIndex(s => s === app);\n\n      if (i !== -1) {\n        this.registeredStatus.splice(i, 1);\n        Vue.set(this.statuses, app, {\n          mounted: false\n        });\n        this.$nextTick(() => {\n          Vue.delete(this.callbacksStatus, app);\n        });\n      }\n\n      this.saveStatuses();\n    },\n\n    sortStatuses(a, b) {\n      const al = a.toLowerCase();\n      const bl = b.toLowerCase();\n      return al > bl ? 1 : al < bl ? -1 : 0;\n    },\n\n    handleScroll() {\n      if (window.scrollY > 70) {\n        document.body.classList.add('dashboard--scrolled');\n      } else {\n        document.body.classList.remove('dashboard--scrolled');\n      }\n    }\n\n  }\n};","//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\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 axios from '@nextcloud/axios';\nimport { generateUrl } from '@nextcloud/router';\nimport { loadState } from '@nextcloud/initial-state';\nimport getBackgroundUrl from './../helpers/getBackgroundUrl';\nimport prefixWithBaseUrl from './../helpers/prefixWithBaseUrl';\nconst shippedBackgroundList = loadState('dashboard', 'shippedBackgrounds');\nexport default {\n  name: 'BackgroundSettings',\n  props: {\n    background: {\n      type: String,\n      default: 'default'\n    },\n    themingDefaultBackground: {\n      type: String,\n      default: ''\n    }\n  },\n\n  data() {\n    return {\n      backgroundImage: generateUrl('/apps/dashboard/background') + '?v=' + Date.now(),\n      loading: false\n    };\n  },\n\n  computed: {\n    shippedBackgrounds() {\n      return Object.keys(shippedBackgroundList).map(item => {\n        return {\n          name: item,\n          url: prefixWithBaseUrl(item),\n          preview: prefixWithBaseUrl('previews/' + item),\n          details: shippedBackgroundList[item]\n        };\n      });\n    }\n\n  },\n  methods: {\n    async update(data) {\n      const background = data.type === 'custom' || data.type === 'default' ? data.type : data.value;\n      this.backgroundImage = getBackgroundUrl(background, data.version, this.themingDefaultBackground);\n\n      if (data.type === 'color' || data.type === 'default' && this.themingDefaultBackground === 'backgroundColor') {\n        this.$emit('update:background', data);\n        this.loading = false;\n        return;\n      }\n\n      const image = new Image();\n\n      image.onload = () => {\n        this.$emit('update:background', data);\n        this.loading = false;\n      };\n\n      image.src = this.backgroundImage;\n    },\n\n    async setDefault() {\n      this.loading = 'default';\n      const result = await axios.post(generateUrl('/apps/dashboard/background/default'));\n      this.update(result.data);\n    },\n\n    async setShipped(shipped) {\n      this.loading = shipped;\n      const result = await axios.post(generateUrl('/apps/dashboard/background/shipped'), {\n        value: shipped\n      });\n      this.update(result.data);\n    },\n\n    async setFile(path) {\n      this.loading = 'custom';\n      const result = await axios.post(generateUrl('/apps/dashboard/background/custom'), {\n        value: path\n      });\n      this.update(result.data);\n    },\n\n    async pickColor() {\n      this.loading = 'color';\n      const color = OCA && OCA.Theming ? OCA.Theming.color : '#0082c9';\n      const result = await axios.post(generateUrl('/apps/dashboard/background/color'), {\n        value: color\n      });\n      this.update(result.data);\n    },\n\n    pickFile() {\n      window.OC.dialogs.filepicker(t('dashboard', 'Insert from {productName}', {\n        productName: OC.theme.name\n      }), (path, type) => {\n        if (type === OC.dialogs.FILEPICKER_TYPE_CHOOSE) {\n          this.setFile(path);\n        }\n      }, false, ['image/png', 'image/gif', 'image/jpeg', 'image/svg'], true, OC.dialogs.FILEPICKER_TYPE_CHOOSE);\n    }\n\n  }\n};","// Imports\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(function(i){return i[1]});\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \"#app-dashboard[data-v-47e146e8] {\\n  width: 100%;\\n  min-height: 100vh;\\n  background-size: cover;\\n  background-position: center center;\\n  background-repeat: no-repeat;\\n  background-attachment: fixed;\\n  background-color: var(--color-primary);\\n  --color-background-translucent: rgba(255, 255, 255, 0.8);\\n  --background-blur: blur(10px);\\n}\\n#body-user.theme--dark #app-dashboard[data-v-47e146e8] {\\n  background-color: var(--color-main-background);\\n  --color-background-translucent: rgba(24, 24, 24, 0.8);\\n}\\n#body-user.theme--highcontrast #app-dashboard[data-v-47e146e8] {\\n  background-color: var(--color-main-background);\\n  --color-background-translucent: var(--color-main-background);\\n}\\n#app-dashboard > h2[data-v-47e146e8] {\\n  color: var(--color-primary-text);\\n  text-align: center;\\n  font-size: 32px;\\n  line-height: 130%;\\n  padding: 10vh 16px 0px;\\n}\\n.panels[data-v-47e146e8] {\\n  width: auto;\\n  margin: auto;\\n  max-width: 1500px;\\n  display: flex;\\n  justify-content: center;\\n  flex-direction: row;\\n  align-items: flex-start;\\n  flex-wrap: wrap;\\n}\\n.panel[data-v-47e146e8], .panels > div[data-v-47e146e8] {\\n  width: 320px;\\n  max-width: 100%;\\n  margin: 16px;\\n  background-color: var(--color-background-translucent);\\n  -webkit-backdrop-filter: var(--background-blur);\\n  backdrop-filter: var(--background-blur);\\n  border-radius: var(--border-radius-large);\\n}\\n#body-user.theme--highcontrast .panel[data-v-47e146e8], #body-user.theme--highcontrast .panels > div[data-v-47e146e8] {\\n  border: 2px solid var(--color-border);\\n}\\n.panel.sortable-ghost[data-v-47e146e8], .panels > div.sortable-ghost[data-v-47e146e8] {\\n  opacity: 0.1;\\n}\\n.panel > .panel--header[data-v-47e146e8], .panels > div > .panel--header[data-v-47e146e8] {\\n  display: flex;\\n  z-index: 1;\\n  top: 50px;\\n  padding: 16px;\\n  cursor: grab;\\n}\\n.panel > .panel--header[data-v-47e146e8], .panel > .panel--header[data-v-47e146e8]  *, .panels > div > .panel--header[data-v-47e146e8], .panels > div > .panel--header[data-v-47e146e8]  * {\\n  -webkit-touch-callout: none;\\n  -webkit-user-select: none;\\n  -khtml-user-select: none;\\n  -moz-user-select: none;\\n  -ms-user-select: none;\\n  user-select: none;\\n}\\n.panel > .panel--header[data-v-47e146e8]:active, .panels > div > .panel--header[data-v-47e146e8]:active {\\n  cursor: grabbing;\\n}\\n.panel > .panel--header a[data-v-47e146e8], .panels > div > .panel--header a[data-v-47e146e8] {\\n  flex-grow: 1;\\n}\\n.panel > .panel--header > h2[data-v-47e146e8], .panels > div > .panel--header > h2[data-v-47e146e8] {\\n  display: block;\\n  flex-grow: 1;\\n  margin: 0;\\n  font-size: 20px;\\n  line-height: 24px;\\n  font-weight: bold;\\n  background-size: 32px;\\n  background-position: 14px 12px;\\n  padding: 16px 8px 16px 60px;\\n  height: 56px;\\n  white-space: nowrap;\\n  overflow: hidden;\\n  text-overflow: ellipsis;\\n  cursor: grab;\\n}\\n.panel > .panel--content[data-v-47e146e8], .panels > div > .panel--content[data-v-47e146e8] {\\n  margin: 0 16px 16px 16px;\\n  height: 420px;\\n  overflow: hidden;\\n}\\n@media only screen and (max-width: 709px) {\\n.panel > .panel--content[data-v-47e146e8], .panels > div > .panel--content[data-v-47e146e8] {\\n    height: auto;\\n}\\n}\\n.footer[data-v-47e146e8] {\\n  text-align: center;\\n  transition: bottom var(--animation-slow) ease-in-out;\\n  bottom: 0;\\n  padding: 44px 0;\\n}\\n.edit-panels[data-v-47e146e8] {\\n  display: inline-block;\\n  margin: auto;\\n  background-position: 16px center;\\n  padding: 12px 16px;\\n  padding-left: 36px;\\n  border-radius: var(--border-radius-pill);\\n  max-width: 200px;\\n  opacity: 1;\\n  text-align: center;\\n}\\n.edit-panels[data-v-47e146e8],\\n.statuses[data-v-47e146e8]  .action-item .action-item__menutoggle,\\n.statuses[data-v-47e146e8]  .action-item.action-item--open .action-item__menutoggle {\\n  background-color: var(--color-background-translucent);\\n  -webkit-backdrop-filter: var(--background-blur);\\n  backdrop-filter: var(--background-blur);\\n}\\n.edit-panels[data-v-47e146e8]:hover, .edit-panels[data-v-47e146e8]:focus, .edit-panels[data-v-47e146e8]:active,\\n.statuses[data-v-47e146e8]  .action-item .action-item__menutoggle:hover,\\n.statuses[data-v-47e146e8]  .action-item .action-item__menutoggle:focus,\\n.statuses[data-v-47e146e8]  .action-item .action-item__menutoggle:active,\\n.statuses[data-v-47e146e8]  .action-item.action-item--open .action-item__menutoggle:hover,\\n.statuses[data-v-47e146e8]  .action-item.action-item--open .action-item__menutoggle:focus,\\n.statuses[data-v-47e146e8]  .action-item.action-item--open .action-item__menutoggle:active {\\n  background-color: var(--color-background-hover);\\n}\\n.modal__content[data-v-47e146e8] {\\n  padding: 32px 16px;\\n  max-height: 70vh;\\n  text-align: center;\\n  overflow: auto;\\n}\\n.modal__content ol[data-v-47e146e8] {\\n  display: flex;\\n  flex-direction: row;\\n  justify-content: center;\\n  list-style-type: none;\\n  padding-bottom: 16px;\\n}\\n.modal__content li label[data-v-47e146e8] {\\n  display: block;\\n  padding: 48px 8px 16px 8px;\\n  margin: 8px;\\n  width: 160px;\\n  background-color: var(--color-background-hover);\\n  border: 2px solid var(--color-main-background);\\n  border-radius: var(--border-radius-large);\\n  background-size: 24px;\\n  background-position: center 16px;\\n  text-align: center;\\n}\\n.modal__content li label[data-v-47e146e8]:hover {\\n  border-color: var(--color-primary);\\n}\\n.modal__content li input:focus + label[data-v-47e146e8] {\\n  border-color: var(--color-primary);\\n}\\n.modal__content h3[data-v-47e146e8] {\\n  font-weight: bold;\\n}\\n.modal__content h3[data-v-47e146e8]:not(:first-of-type) {\\n  margin-top: 64px;\\n}\\n.modal__content .button[data-v-47e146e8] {\\n  display: inline-block;\\n  padding: 10px 16px;\\n  margin: 0;\\n}\\n.modal__content p[data-v-47e146e8] {\\n  max-width: 650px;\\n  margin: 0 auto;\\n}\\n.modal__content p a[data-v-47e146e8]:hover,\\n.modal__content p a[data-v-47e146e8]:focus {\\n  border-bottom: 2px solid var(--color-border);\\n}\\n.modal__content .credits--end[data-v-47e146e8] {\\n  padding-bottom: 32px;\\n  color: var(--color-text-maxcontrast);\\n}\\n.modal__content .credits--end a[data-v-47e146e8] {\\n  color: var(--color-text-maxcontrast);\\n}\\n.flip-list-move[data-v-47e146e8] {\\n  transition: transform var(--animation-slow);\\n}\\n.statuses[data-v-47e146e8] {\\n  display: flex;\\n  flex-direction: row;\\n  justify-content: center;\\n  flex-wrap: wrap;\\n  margin-bottom: 36px;\\n}\\n.statuses > div[data-v-47e146e8] {\\n  margin: 8px;\\n}\", \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(function(i){return i[1]});\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".background-selector[data-v-7e3f4375] {\\n  display: flex;\\n  flex-wrap: wrap;\\n  justify-content: center;\\n}\\n.background-selector .background[data-v-7e3f4375] {\\n  width: 176px;\\n  height: 96px;\\n  margin: 8px;\\n  background-size: cover;\\n  background-position: center center;\\n  text-align: center;\\n  border-radius: var(--border-radius-large);\\n  border: 2px solid var(--color-main-background);\\n  overflow: hidden;\\n}\\n.background-selector .background.current[data-v-7e3f4375] {\\n  background-image: var(--color-background-dark);\\n}\\n.background-selector .background.filepicker[data-v-7e3f4375], .background-selector .background.default[data-v-7e3f4375], .background-selector .background.color[data-v-7e3f4375] {\\n  border-color: var(--color-border);\\n}\\n.background-selector .background.color[data-v-7e3f4375] {\\n  background-color: var(--color-primary);\\n  color: var(--color-primary-text);\\n}\\n.background-selector .background.active[data-v-7e3f4375], .background-selector .background[data-v-7e3f4375]:hover, .background-selector .background[data-v-7e3f4375]:focus {\\n  border: 2px solid var(--color-primary);\\n}\\n.background-selector .background.active[data-v-7e3f4375]:not(.icon-loading):after {\\n  background-image: var(--icon-checkmark-fff);\\n  background-repeat: no-repeat;\\n  background-position: center;\\n  background-size: 44px;\\n  content: \\\"\\\";\\n  display: block;\\n  height: 100%;\\n}\\nbody.theme--dark .background-selector .background.active[data-v-7e3f4375]:not(.icon-loading):after {\\n  background-image: var(--icon-checkmark-000);\\n}\", \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","import api from \"!../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n            import content from \"!!../../../node_modules/css-loader/dist/cjs.js!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/sass-loader/dist/cjs.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./App.vue?vue&type=style&index=0&id=47e146e8&lang=scss&scoped=true&\";\n\nvar options = {};\n\noptions.insert = \"head\";\noptions.singleton = false;\n\nvar update = api(content, options);\n\n\n\nexport default content.locals || {};","import api from \"!../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n            import content from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./BackgroundSettings.vue?vue&type=style&index=0&id=7e3f4375&scoped=true&lang=scss&\";\n\nvar options = {};\n\noptions.insert = \"head\";\noptions.singleton = false;\n\nvar update = api(content, options);\n\n\n\nexport default content.locals || {};","import { render, staticRenderFns } from \"./App.vue?vue&type=template&id=47e146e8&scoped=true&\"\nimport script from \"./App.vue?vue&type=script&lang=js&\"\nexport * from \"./App.vue?vue&type=script&lang=js&\"\nimport style0 from \"./App.vue?vue&type=style&index=0&id=47e146e8&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  \"47e146e8\",\n  null\n  \n)\n\n/* hot reload */\nif (module.hot) {\n  var api = require(\"/home/louis/workspace/nextcloud/server/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('47e146e8')) {\n      api.createRecord('47e146e8', component.options)\n    } else {\n      api.reload('47e146e8', component.options)\n    }\n    module.hot.accept(\"./App.vue?vue&type=template&id=47e146e8&scoped=true&\", function () {\n      api.rerender('47e146e8', {\n        render: render,\n        staticRenderFns: staticRenderFns\n      })\n    })\n  }\n}\ncomponent.options.__file = \"apps/dashboard/src/App.vue\"\nexport default component.exports","import { render, staticRenderFns } from \"./BackgroundSettings.vue?vue&type=template&id=7e3f4375&scoped=true&\"\nimport script from \"./BackgroundSettings.vue?vue&type=script&lang=js&\"\nexport * from \"./BackgroundSettings.vue?vue&type=script&lang=js&\"\nimport style0 from \"./BackgroundSettings.vue?vue&type=style&index=0&id=7e3f4375&scoped=true&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  \"7e3f4375\",\n  null\n  \n)\n\n/* hot reload */\nif (module.hot) {\n  var api = require(\"/home/louis/workspace/nextcloud/server/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('7e3f4375')) {\n      api.createRecord('7e3f4375', component.options)\n    } else {\n      api.reload('7e3f4375', component.options)\n    }\n    module.hot.accept(\"./BackgroundSettings.vue?vue&type=template&id=7e3f4375&scoped=true&\", function () {\n      api.rerender('7e3f4375', {\n        render: render,\n        staticRenderFns: staticRenderFns\n      })\n    })\n  }\n}\ncomponent.options.__file = \"apps/dashboard/src/components/BackgroundSettings.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!./App.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!./App.vue?vue&type=script&lang=js&\"","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./BackgroundSettings.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!./BackgroundSettings.vue?vue&type=script&lang=js&\"","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    { style: _vm.backgroundStyle, attrs: { id: \"app-dashboard\" } },\n    [\n      _c(\"h2\", [_vm._v(_vm._s(_vm.greeting.text))]),\n      _vm._v(\" \"),\n      _c(\n        \"ul\",\n        { staticClass: \"statuses\" },\n        _vm._l(_vm.sortedRegisteredStatus, function(status) {\n          return _c(\"div\", { key: status, attrs: { id: \"status-\" + status } }, [\n            _c(\"div\", { ref: \"status-\" + status, refInFor: true })\n          ])\n        }),\n        0\n      ),\n      _vm._v(\" \"),\n      _c(\n        \"Draggable\",\n        _vm._b(\n          {\n            staticClass: \"panels\",\n            attrs: { handle: \".panel--header\" },\n            on: { end: _vm.saveLayout },\n            model: {\n              value: _vm.layout,\n              callback: function($$v) {\n                _vm.layout = $$v\n              },\n              expression: \"layout\"\n            }\n          },\n          \"Draggable\",\n          {\n            swapThreshold: 0.3,\n            delay: 500,\n            delayOnTouchOnly: true,\n            touchStartThreshold: 3\n          },\n          false\n        ),\n        _vm._l(_vm.layout, function(panelId) {\n          return _c(\n            \"div\",\n            { key: _vm.panels[panelId].id, staticClass: \"panel\" },\n            [\n              _c(\"div\", { staticClass: \"panel--header\" }, [\n                _c(\"h2\", { class: _vm.panels[panelId].iconClass }, [\n                  _vm._v(\n                    \"\\n\\t\\t\\t\\t\\t\" +\n                      _vm._s(_vm.panels[panelId].title) +\n                      \"\\n\\t\\t\\t\\t\"\n                  )\n                ])\n              ]),\n              _vm._v(\" \"),\n              _c(\n                \"div\",\n                {\n                  staticClass: \"panel--content\",\n                  class: { loading: !_vm.panels[panelId].mounted }\n                },\n                [\n                  _c(\"div\", {\n                    ref: _vm.panels[panelId].id,\n                    refInFor: true,\n                    attrs: { \"data-id\": _vm.panels[panelId].id }\n                  })\n                ]\n              )\n            ]\n          )\n        }),\n        0\n      ),\n      _vm._v(\" \"),\n      _c(\"div\", { staticClass: \"footer\" }, [\n        _c(\n          \"a\",\n          {\n            staticClass: \"edit-panels icon-rename\",\n            attrs: { tabindex: \"0\" },\n            on: {\n              click: _vm.showModal,\n              keyup: [\n                function($event) {\n                  if (\n                    !$event.type.indexOf(\"key\") &&\n                    _vm._k($event.keyCode, \"enter\", 13, $event.key, \"Enter\")\n                  ) {\n                    return null\n                  }\n                  return _vm.showModal.apply(null, arguments)\n                },\n                function($event) {\n                  if (\n                    !$event.type.indexOf(\"key\") &&\n                    _vm._k($event.keyCode, \"space\", 32, $event.key, [\n                      \" \",\n                      \"Spacebar\"\n                    ])\n                  ) {\n                    return null\n                  }\n                  return _vm.showModal.apply(null, arguments)\n                }\n              ]\n            }\n          },\n          [_vm._v(_vm._s(_vm.t(\"dashboard\", \"Customize\")))]\n        )\n      ]),\n      _vm._v(\" \"),\n      _vm.modal\n        ? _c(\"Modal\", { on: { close: _vm.closeModal } }, [\n            _c(\n              \"div\",\n              { staticClass: \"modal__content\" },\n              [\n                _c(\"h3\", [_vm._v(_vm._s(_vm.t(\"dashboard\", \"Edit widgets\")))]),\n                _vm._v(\" \"),\n                _c(\n                  \"ol\",\n                  { staticClass: \"panels\" },\n                  _vm._l(_vm.sortedAllStatuses, function(status) {\n                    return _c(\"li\", { key: status }, [\n                      _c(\"input\", {\n                        staticClass: \"checkbox\",\n                        attrs: {\n                          id: \"status-checkbox-\" + status,\n                          type: \"checkbox\"\n                        },\n                        domProps: { checked: _vm.isStatusActive(status) },\n                        on: {\n                          input: function($event) {\n                            return _vm.updateStatusCheckbox(\n                              status,\n                              $event.target.checked\n                            )\n                          }\n                        }\n                      }),\n                      _vm._v(\" \"),\n                      _c(\n                        \"label\",\n                        {\n                          class: _vm.statusInfo[status].icon,\n                          attrs: { for: \"status-checkbox-\" + status }\n                        },\n                        [\n                          _vm._v(\n                            \"\\n\\t\\t\\t\\t\\t\\t\" +\n                              _vm._s(_vm.statusInfo[status].text) +\n                              \"\\n\\t\\t\\t\\t\\t\"\n                          )\n                        ]\n                      )\n                    ])\n                  }),\n                  0\n                ),\n                _vm._v(\" \"),\n                _c(\n                  \"Draggable\",\n                  _vm._b(\n                    {\n                      staticClass: \"panels\",\n                      attrs: { tag: \"ol\", handle: \".draggable\" },\n                      on: { end: _vm.saveLayout },\n                      model: {\n                        value: _vm.layout,\n                        callback: function($$v) {\n                          _vm.layout = $$v\n                        },\n                        expression: \"layout\"\n                      }\n                    },\n                    \"Draggable\",\n                    {\n                      swapThreshold: 0.3,\n                      delay: 500,\n                      delayOnTouchOnly: true,\n                      touchStartThreshold: 3\n                    },\n                    false\n                  ),\n                  _vm._l(_vm.sortedPanels, function(panel) {\n                    return _c(\"li\", { key: panel.id }, [\n                      _c(\"input\", {\n                        staticClass: \"checkbox\",\n                        attrs: {\n                          id: \"panel-checkbox-\" + panel.id,\n                          type: \"checkbox\"\n                        },\n                        domProps: { checked: _vm.isActive(panel) },\n                        on: {\n                          input: function($event) {\n                            return _vm.updateCheckbox(\n                              panel,\n                              $event.target.checked\n                            )\n                          }\n                        }\n                      }),\n                      _vm._v(\" \"),\n                      _c(\n                        \"label\",\n                        {\n                          class: _vm.isActive(panel)\n                            ? \"draggable \" + panel.iconClass\n                            : panel.iconClass,\n                          attrs: { for: \"panel-checkbox-\" + panel.id }\n                        },\n                        [\n                          _vm._v(\n                            \"\\n\\t\\t\\t\\t\\t\\t\" +\n                              _vm._s(panel.title) +\n                              \"\\n\\t\\t\\t\\t\\t\"\n                          )\n                        ]\n                      )\n                    ])\n                  }),\n                  0\n                ),\n                _vm._v(\" \"),\n                _vm.isAdmin\n                  ? _c(\n                      \"a\",\n                      {\n                        staticClass: \"button\",\n                        attrs: { href: _vm.appStoreUrl }\n                      },\n                      [\n                        _vm._v(\n                          _vm._s(\n                            _vm.t(\n                              \"dashboard\",\n                              \"Get more widgets from the App Store\"\n                            )\n                          )\n                        )\n                      ]\n                    )\n                  : _vm._e(),\n                _vm._v(\" \"),\n                _c(\"h3\", [\n                  _vm._v(_vm._s(_vm.t(\"dashboard\", \"Change background image\")))\n                ]),\n                _vm._v(\" \"),\n                _c(\"BackgroundSettings\", {\n                  attrs: {\n                    background: _vm.background,\n                    \"theming-default-background\": _vm.themingDefaultBackground\n                  },\n                  on: { \"update:background\": _vm.updateBackground }\n                }),\n                _vm._v(\" \"),\n                _c(\"h3\", [\n                  _vm._v(_vm._s(_vm.t(\"dashboard\", \"Weather service\")))\n                ]),\n                _vm._v(\" \"),\n                _c(\"p\", [\n                  _vm._v(\n                    \"\\n\\t\\t\\t\\t\" +\n                      _vm._s(\n                        _vm.t(\n                          \"dashboard\",\n                          \"For your privacy, the weather data is requested by your Nextcloud server on your behalf so the weather service receives no personal information.\"\n                        )\n                      ) +\n                      \"\\n\\t\\t\\t\"\n                  )\n                ]),\n                _vm._v(\" \"),\n                _c(\"p\", { staticClass: \"credits--end\" }, [\n                  _c(\n                    \"a\",\n                    {\n                      attrs: {\n                        href: \"https://api.met.no/doc/TermsOfService\",\n                        target: \"_blank\",\n                        rel: \"noopener\"\n                      }\n                    },\n                    [\n                      _vm._v(\n                        _vm._s(_vm.t(\"dashboard\", \"Weather data from Met.no\"))\n                      )\n                    ]\n                  ),\n                  _vm._v(\",\\n\\t\\t\\t\\t\"),\n                  _c(\n                    \"a\",\n                    {\n                      attrs: {\n                        href:\n                          \"https://wiki.osmfoundation.org/wiki/Privacy_Policy\",\n                        target: \"_blank\",\n                        rel: \"noopener\"\n                      }\n                    },\n                    [\n                      _vm._v(\n                        _vm._s(_vm.t(\"dashboard\", \"geocoding with Nominatim\"))\n                      )\n                    ]\n                  ),\n                  _vm._v(\",\\n\\t\\t\\t\\t\"),\n                  _c(\n                    \"a\",\n                    {\n                      attrs: {\n                        href: \"https://www.opentopodata.org/#public-api\",\n                        target: \"_blank\",\n                        rel: \"noopener\"\n                      }\n                    },\n                    [\n                      _vm._v(\n                        _vm._s(\n                          _vm.t(\"dashboard\", \"elevation data from OpenTopoData\")\n                        )\n                      )\n                    ]\n                  ),\n                  _vm._v(\".\\n\\t\\t\\t\")\n                ])\n              ],\n              1\n            )\n          ])\n        : _vm._e()\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: \"background-selector\" },\n    [\n      _c(\n        \"button\",\n        {\n          staticClass: \"background filepicker\",\n          class: { active: _vm.background === \"custom\" },\n          attrs: { tabindex: \"0\" },\n          on: { click: _vm.pickFile }\n        },\n        [\n          _vm._v(\n            \"\\n\\t\\t\" + _vm._s(_vm.t(\"dashboard\", \"Pick from Files\")) + \"\\n\\t\"\n          )\n        ]\n      ),\n      _vm._v(\" \"),\n      _c(\n        \"button\",\n        {\n          staticClass: \"background default\",\n          class: {\n            \"icon-loading\": _vm.loading === \"default\",\n            active: _vm.background === \"default\"\n          },\n          attrs: { tabindex: \"0\" },\n          on: { click: _vm.setDefault }\n        },\n        [\n          _vm._v(\n            \"\\n\\t\\t\" + _vm._s(_vm.t(\"dashboard\", \"Default images\")) + \"\\n\\t\"\n          )\n        ]\n      ),\n      _vm._v(\" \"),\n      _c(\n        \"button\",\n        {\n          staticClass: \"background color\",\n          class: { active: _vm.background === \"custom\" },\n          attrs: { tabindex: \"0\" },\n          on: { click: _vm.pickColor }\n        },\n        [\n          _vm._v(\n            \"\\n\\t\\t\" + _vm._s(_vm.t(\"dashboard\", \"Plain background\")) + \"\\n\\t\"\n          )\n        ]\n      ),\n      _vm._v(\" \"),\n      _vm._l(_vm.shippedBackgrounds, function(shippedBackground) {\n        return _c(\"button\", {\n          directives: [\n            {\n              name: \"tooltip\",\n              rawName: \"v-tooltip\",\n              value: shippedBackground.details.attribution,\n              expression: \"shippedBackground.details.attribution\"\n            }\n          ],\n          key: shippedBackground.name,\n          staticClass: \"background\",\n          class: {\n            \"icon-loading\": _vm.loading === shippedBackground.name,\n            active: _vm.background === shippedBackground.name\n          },\n          style: {\n            \"background-image\": \"url(\" + shippedBackground.preview + \")\"\n          },\n          attrs: { tabindex: \"0\" },\n          on: {\n            click: function($event) {\n              return _vm.setShipped(shippedBackground.name)\n            }\n          }\n        })\n      })\n    ],\n    2\n  )\n}\nvar staticRenderFns = []\nrender._withStripped = true\n\nexport { render, staticRenderFns }","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\tid: moduleId,\n\t\tloaded: false,\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n\t// Flag the module as loaded\n\tmodule.loaded = true;\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n// expose the modules object (__webpack_modules__)\n__webpack_require__.m = __webpack_modules__;\n\n","__webpack_require__.amdD = function () {\n\tthrow new Error('define cannot be used indirect');\n};","__webpack_require__.amdO = {};","var deferred = [];\n__webpack_require__.O = (result, chunkIds, fn, priority) => {\n\tif(chunkIds) {\n\t\tpriority = priority || 0;\n\t\tfor(var i = deferred.length; i > 0 && deferred[i - 1][2] > priority; i--) deferred[i] = deferred[i - 1];\n\t\tdeferred[i] = [chunkIds, fn, priority];\n\t\treturn;\n\t}\n\tvar notFulfilled = Infinity;\n\tfor (var i = 0; i < deferred.length; i++) {\n\t\tvar chunkIds = deferred[i][0];\n\t\tvar fn = deferred[i][1];\n\t\tvar priority = deferred[i][2];\n\t\tvar fulfilled = true;\n\t\tfor (var j = 0; j < chunkIds.length; j++) {\n\t\t\tif ((priority & 1 === 0 || notFulfilled >= priority) && Object.keys(__webpack_require__.O).every((key) => (__webpack_require__.O[key](chunkIds[j])))) {\n\t\t\t\tchunkIds.splice(j--, 1);\n\t\t\t} else {\n\t\t\t\tfulfilled = false;\n\t\t\t\tif(priority < notFulfilled) notFulfilled = priority;\n\t\t\t}\n\t\t}\n\t\tif(fulfilled) {\n\t\t\tdeferred.splice(i--, 1)\n\t\t\tvar r = fn();\n\t\t\tif (r !== undefined) result = r;\n\t\t}\n\t}\n\treturn result;\n};","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = (module) => {\n\tvar getter = module && module.__esModule ?\n\t\t() => (module['default']) :\n\t\t() => (module);\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.g = (function() {\n\tif (typeof globalThis === 'object') return globalThis;\n\ttry {\n\t\treturn this || new Function('return this')();\n\t} catch (e) {\n\t\tif (typeof window === 'object') return window;\n\t}\n})();","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","__webpack_require__.nmd = (module) => {\n\tmodule.paths = [];\n\tif (!module.children) module.children = [];\n\treturn module;\n};","// no baseURI\n\n// object to store loaded and loading chunks\n// undefined = chunk not loaded, null = chunk preloaded/prefetched\n// [resolve, reject, Promise] = chunk loading, 0 = chunk loaded\nvar installedChunks = {\n\t\"dashboard-dashboard-main\": 0\n};\n\n// no chunk on demand loading\n\n// no prefetching\n\n// no preloaded\n\n// no HMR\n\n// no HMR manifest\n\n__webpack_require__.O.j = (chunkId) => (installedChunks[chunkId] === 0);\n\n// install a JSONP callback for chunk loading\nvar webpackJsonpCallback = (parentChunkLoadingFunction, data) => {\n\tvar chunkIds = data[0];\n\tvar moreModules = data[1];\n\tvar runtime = data[2];\n\t// add \"moreModules\" to the modules object,\n\t// then flag all \"chunkIds\" as loaded and fire callback\n\tvar moduleId, chunkId, i = 0;\n\tif(chunkIds.some((id) => (installedChunks[id] !== 0))) {\n\t\tfor(moduleId in moreModules) {\n\t\t\tif(__webpack_require__.o(moreModules, moduleId)) {\n\t\t\t\t__webpack_require__.m[moduleId] = moreModules[moduleId];\n\t\t\t}\n\t\t}\n\t\tif(runtime) var result = runtime(__webpack_require__);\n\t}\n\tif(parentChunkLoadingFunction) parentChunkLoadingFunction(data);\n\tfor(;i < chunkIds.length; i++) {\n\t\tchunkId = chunkIds[i];\n\t\tif(__webpack_require__.o(installedChunks, chunkId) && installedChunks[chunkId]) {\n\t\t\tinstalledChunks[chunkId][0]();\n\t\t}\n\t\tinstalledChunks[chunkIds[i]] = 0;\n\t}\n\treturn __webpack_require__.O(result);\n}\n\nvar chunkLoadingGlobal = self[\"webpackChunknextcloud\"] = self[\"webpackChunknextcloud\"] || [];\nchunkLoadingGlobal.forEach(webpackJsonpCallback.bind(null, 0));\nchunkLoadingGlobal.push = webpackJsonpCallback.bind(null, chunkLoadingGlobal.push.bind(chunkLoadingGlobal));","","// startup\n// Load entry module and return exports\n// This entry module depends on other loaded chunks and execution need to be delayed\nvar __webpack_exports__ = __webpack_require__.O(undefined, [\"core-common\"], () => (__webpack_require__(\"./apps/dashboard/src/main.js\")))\n__webpack_exports__ = __webpack_require__.O(__webpack_exports__);\n",""],"names":[],"sourceRoot":""}