From 6f82c77c9cdb85de5252b6c3a9bc993ad3d085c2 Mon Sep 17 00:00:00 2001 From: Maksim Sukharev Date: Thu, 12 Sep 2024 17:22:33 +0200 Subject: [PATCH 1/6] fix: extract IconNotification to separate component Signed-off-by: Maksim Sukharev --- src/Components/IconNotification.vue | 105 ++++++++++++++++++++++++++++ src/NotificationsApp.vue | 88 ++++------------------- 2 files changed, 119 insertions(+), 74 deletions(-) create mode 100644 src/Components/IconNotification.vue diff --git a/src/Components/IconNotification.vue b/src/Components/IconNotification.vue new file mode 100644 index 000000000..1b9124f22 --- /dev/null +++ b/src/Components/IconNotification.vue @@ -0,0 +1,105 @@ + + + + diff --git a/src/NotificationsApp.vue b/src/NotificationsApp.vue index cb67be38e..f6d3fda8d 100644 --- a/src/NotificationsApp.vue +++ b/src/NotificationsApp.vue @@ -7,27 +7,8 @@ :aria-label="t('notifications', 'Notifications')" @open="onOpen"> @@ -60,7 +41,7 @@ {{ t('notifications', 'Dismiss all notifications') }} @@ -72,7 +53,7 @@ :name="emptyContentMessage" :description="emptyContentDescription"> @@ -82,7 +63,7 @@ target="_blank" rel="noreferrer noopener"> {{ t('notifications', 'Contact Nextcloud GmbH') }} ↗ @@ -94,9 +75,12 @@ diff --git a/src/NotificationsApp.vue b/src/NotificationsApp.vue index f6d3fda8d..1cd5500e6 100644 --- a/src/NotificationsApp.vue +++ b/src/NotificationsApp.vue @@ -5,9 +5,11 @@ :exclude-click-outside-selectors="['.popover']" :open.sync="open" :aria-label="t('notifications', 'Notifications')" + :title="t('notifications', 'Notifications')" @open="onOpen"> From 9e9733482cb5b20e663c113142dce15376ec8ce7 Mon Sep 17 00:00:00 2001 From: Maksim Sukharev Date: Mon, 23 Dec 2024 18:17:06 +0100 Subject: [PATCH 3/6] fix(style): clear excessive and redundant styles - move from separate file to component Signed-off-by: Maksim Sukharev --- src/Components/Notification.vue | 2 -- src/NotificationsApp.vue | 26 ++++++++++++++++++-------- src/styles/styles.scss | 26 -------------------------- 3 files changed, 18 insertions(+), 36 deletions(-) diff --git a/src/Components/Notification.vue b/src/Components/Notification.vue index 8a98c6718..f69b86101 100644 --- a/src/Components/Notification.vue +++ b/src/Components/Notification.vue @@ -297,8 +297,6 @@ export default { \n","import mod from \"-!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./DefaultParameter.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!./DefaultParameter.vue?vue&type=script&lang=js\"","\n import API from \"!../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../node_modules/css-loader/dist/cjs.js!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/sass-loader/dist/cjs.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./DefaultParameter.vue?vue&type=style&index=0&id=39222bd6&prod&lang=scss&scoped=true\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../node_modules/css-loader/dist/cjs.js!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/sass-loader/dist/cjs.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./DefaultParameter.vue?vue&type=style&index=0&id=39222bd6&prod&lang=scss&scoped=true\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./DefaultParameter.vue?vue&type=template&id=39222bd6&scoped=true\"\nimport script from \"./DefaultParameter.vue?vue&type=script&lang=js\"\nexport * from \"./DefaultParameter.vue?vue&type=script&lang=js\"\nimport style0 from \"./DefaultParameter.vue?vue&type=style&index=0&id=39222bd6&prod&lang=scss&scoped=true\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"39222bd6\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return (_vm.hasInternalLink)?_c('a',{attrs:{\"href\":_vm.link}},[_c('strong',[_vm._v(_vm._s(_vm.name))])]):(_vm.link)?_c('a',{staticClass:\"external\",attrs:{\"href\":_vm.link,\"target\":\"_blank\",\"rel\":\"noopener noreferrer\"}},[_c('strong',[_vm._v(_vm._s(_vm.name))])]):_c('strong',[_vm._v(_vm._s(_vm.name))])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n","import mod from \"-!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./File.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!./File.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./File.vue?vue&type=template&id=5a5ee8cb\"\nimport script from \"./File.vue?vue&type=script&lang=js\"\nexport * from \"./File.vue?vue&type=script&lang=js\"\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\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('a',{staticClass:\"filename\",attrs:{\"title\":_vm.title,\"href\":_vm.link}},[_vm._v(_vm._s(_vm.name))])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n\n\n","import mod from \"-!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./User.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!./User.vue?vue&type=script&lang=js\"","\n import API from \"!../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../node_modules/css-loader/dist/cjs.js!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/sass-loader/dist/cjs.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./User.vue?vue&type=style&index=0&id=b064c4b8&prod&lang=scss&scoped=true\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../node_modules/css-loader/dist/cjs.js!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/sass-loader/dist/cjs.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./User.vue?vue&type=style&index=0&id=b064c4b8&prod&lang=scss&scoped=true\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./User.vue?vue&type=template&id=b064c4b8&scoped=true\"\nimport script from \"./User.vue?vue&type=script&lang=js\"\nexport * from \"./User.vue?vue&type=script&lang=js\"\nimport style0 from \"./User.vue?vue&type=style&index=0&id=b064c4b8&prod&lang=scss&scoped=true\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"b064c4b8\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{staticClass:\"mention\"},[(!_vm.cloudId)?_c('NcUserBubble',{attrs:{\"display-name\":_vm.name,\"user\":_vm.id}}):_c('strong',{attrs:{\"title\":_vm.cloudId}},[_vm._v(\"\\n\\t\\t\"+_vm._s(_vm.name)+\"\\n\\t\")])],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../node_modules/babel-loader/lib/index.js!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Notification.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!./Notification.vue?vue&type=script&lang=js\"","\n\n\n\n\n","\n import API from \"!../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../node_modules/css-loader/dist/cjs.js!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/sass-loader/dist/cjs.js!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Notification.vue?vue&type=style&index=0&id=0c1a00b2&prod&lang=scss&scoped=true\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../node_modules/css-loader/dist/cjs.js!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/sass-loader/dist/cjs.js!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Notification.vue?vue&type=style&index=0&id=0c1a00b2&prod&lang=scss&scoped=true\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./Notification.vue?vue&type=template&id=0c1a00b2&scoped=true\"\nimport script from \"./Notification.vue?vue&type=script&lang=js\"\nexport * from \"./Notification.vue?vue&type=script&lang=js\"\nimport style0 from \"./Notification.vue?vue&type=style&index=0&id=0c1a00b2&prod&lang=scss&scoped=true\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"0c1a00b2\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('li',{staticClass:\"notification\",attrs:{\"data-id\":_vm.notificationId,\"data-timestamp\":_vm.timestamp,\"data-object-type\":_vm.objectType,\"data-app\":_vm.app}},[_c('div',{staticClass:\"notification-heading\"},[_c('span',{staticClass:\"hidden-visually\"},[_vm._v(_vm._s(_vm.absoluteDate))]),_vm._v(\" \"),(_vm.timestamp)?_c('span',{staticClass:\"notification-time live-relative-timestamp\",attrs:{\"title\":_vm.absoluteDate,\"data-timestamp\":_vm.timestamp}},[_vm._v(_vm._s(_vm.relativeDate))]):_vm._e(),_vm._v(\" \"),(_vm.timestamp)?_c('NcButton',{staticClass:\"notification-dismiss-button\",attrs:{\"type\":\"tertiary\",\"aria-label\":_vm.t('notifications', 'Dismiss')},on:{\"click\":_vm.onDismissNotification},scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [_c('Close',{attrs:{\"size\":20}})]},proxy:true}],null,false,2121748766)}):_vm._e()],1),_vm._v(\" \"),(_vm.externalLink)?_c('a',{staticClass:\"notification-subject full-subject-link external\",attrs:{\"href\":_vm.externalLink,\"target\":\"_blank\",\"rel\":\"noreferrer noopener\"}},[_c('span',{staticClass:\"image\"},[_c('img',{staticClass:\"notification-icon\",attrs:{\"src\":_vm.icon,\"alt\":\"\"}})]),_vm._v(\" \"),_c('span',{staticClass:\"subject\"},[_vm._v(_vm._s(_vm.subject)+\" ↗\")])]):(_vm.useLink)?_c('a',{staticClass:\"notification-subject full-subject-link\",attrs:{\"href\":_vm.link}},[(_vm.icon)?_c('span',{staticClass:\"image\"},[_c('img',{staticClass:\"notification-icon\",attrs:{\"src\":_vm.icon,\"alt\":\"\"}})]):_vm._e(),_vm._v(\" \"),(_vm.subjectRich)?_c('NcRichText',{attrs:{\"text\":_vm.subjectRich,\"arguments\":_vm.preparedSubjectParameters}}):_c('span',{staticClass:\"subject\"},[_vm._v(_vm._s(_vm.subject))])],1):_c('div',{staticClass:\"notification-subject\"},[(_vm.icon)?_c('span',{staticClass:\"image\"},[_c('img',{staticClass:\"notification-icon\",attrs:{\"src\":_vm.icon,\"alt\":\"\"}})]):_vm._e(),_vm._v(\" \"),(_vm.subjectRich)?_c('NcRichText',{attrs:{\"text\":_vm.subjectRich,\"arguments\":_vm.preparedSubjectParameters}}):_c('span',{staticClass:\"subject\"},[_vm._v(_vm._s(_vm.subject))])],1),_vm._v(\" \"),(_vm.message)?_c('div',{staticClass:\"notification-message\",on:{\"click\":_vm.onClickMessage}},[_c('div',{staticClass:\"message-container\",class:{ collapsed: _vm.isCollapsedMessage }},[(_vm.messageRich)?_c('NcRichText',{attrs:{\"text\":_vm.messageRich,\"arguments\":_vm.preparedMessageParameters,\"autolink\":true}}):_c('span',[_vm._v(_vm._s(_vm.message))])],1),_vm._v(\" \"),(_vm.isCollapsedMessage)?_c('div',{staticClass:\"notification-overflow\"}):_vm._e()]):_vm._e(),_vm._v(\" \"),(_vm.actions.length)?_c('div',{staticClass:\"notification-actions\"},_vm._l((_vm.actions),function(a,i){return _c('Action',_vm._b({key:i,attrs:{\"notification-index\":_vm.index}},'Action',a,false))}),1):(_vm.externalLink)?_c('div',{staticClass:\"notification-actions\"},[_c('NcButton',{staticClass:\"action-button pull-right\",attrs:{\"type\":\"primary\",\"href\":\"https://nextcloud.com/fairusepolicy\",\"target\":\"_blank\",\"rel\":\"noreferrer noopener\"},scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [_c('Message',{attrs:{\"size\":20}})]},proxy:true}])},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.t('notifications', 'Contact Nextcloud GmbH'))+\" ↗\\n\\t\\t\")])],1):_vm._e()])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","/**\n * @copyright Copyright (c) 2020 Joas Schilling \n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see .\n *\n */\n\nimport { getBuilder } from '@nextcloud/browser-storage'\n\nexport default getBuilder('notifications').clearOnLogout().persist().build()\n","/**\n * @copyright Copyright (c) 2020 Joas Schilling \n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see .\n *\n */\n\nimport moment from '@nextcloud/moment'\nimport axios from '@nextcloud/axios'\nimport { generateOcsUrl } from '@nextcloud/router'\nimport BrowserStorage from './BrowserStorage.js'\n\nconst getNotificationsData = async (tabId, lastETag, forceRefresh, hasNotifyPush) => {\n\tconst lastUpdated = parseInt(BrowserStorage.getItem('lastUpdated'), 10)\n\tconst lastTab = BrowserStorage.getItem('tabId')\n\tconst now = moment().format('X')\n\n\tif (forceRefresh\n\t\t// Allow the same tab to refresh with less than the timeout,\n\t\t|| (lastTab === tabId && lastUpdated + 25 < now)\n\t\t// Allow the same tab to refresh with notify push,\n\t\t|| (lastTab === tabId && hasNotifyPush)\n\t\t// and at the same time give it some more time against other tabs.\n\t\t|| lastUpdated + 35 < now) {\n\t\tBrowserStorage.setItem('tabId', tabId)\n\t\tBrowserStorage.setItem('lastUpdated', now)\n\t\t// console.debug('Refetching data in ' + tabId + ' (prev: ' + lastTab + ' age: ' + (now - lastUpdated) + ')')\n\t\tawait refreshData(lastETag)\n\t// } else {\n\t// console.debug('Reusing data in ' + tabId + ' (prev: ' + lastTab + ' age: ' + (now - lastUpdated) + ')')\n\t}\n\n\treturn {\n\t\tstatus: parseInt(BrowserStorage.getItem('status'), 10),\n\t\theaders: JSON.parse(BrowserStorage.getItem('headers') || '[]'),\n\t\tdata: JSON.parse(BrowserStorage.getItem('data') || '[]'),\n\t\ttabId: BrowserStorage.getItem('tabId'),\n\t\tlastUpdated: parseInt(BrowserStorage.getItem('lastUpdated'), 10),\n\t}\n}\n\nconst remapAttributes = (notification) => {\n\tnotification.notificationId = notification.notification_id\n\tnotification.objectId = notification.object_id\n\tnotification.objectType = notification.object_type\n\n\tdelete notification.notification_id\n\tdelete notification.object_id\n\tdelete notification.object_type\n\n\treturn notification\n}\n\nconst refreshData = async (lastETag) => {\n\tlet requestConfig = {}\n\tif (lastETag) {\n\t\trequestConfig = {\n\t\t\theaders: {\n\t\t\t\t'If-None-Match': lastETag,\n\t\t\t},\n\t\t}\n\t}\n\n\ttry {\n\t\tconst response = await axios.get(generateOcsUrl('apps/notifications/api/v2/notifications'), requestConfig)\n\n\t\tBrowserStorage.setItem('status', '' + response.status)\n\t\tif (response.status !== 204) {\n\t\t\tBrowserStorage.setItem('headers', JSON.stringify(response.headers))\n\t\t\tBrowserStorage.setItem('data', JSON.stringify(response.data.ocs.data.map(remapAttributes)))\n\t\t}\n\t} catch (error) {\n\t\tif (error?.response?.status) {\n\t\t\tBrowserStorage.setItem('status', '' + error.response.status)\n\t\t} else {\n\t\t\t// Setting to 500 in case no request was made so it's retried on the next attempt\n\t\t\tBrowserStorage.setItem('status', '500')\n\t\t}\n\t}\n}\n\nexport {\n\tgetNotificationsData,\n}\n","/**\n * SPDX-FileCopyrightText: 2024 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport { emit } from '@nextcloud/event-bus'\nimport { loadState } from '@nextcloud/initial-state'\nimport { generateFilePath } from '@nextcloud/router'\nimport { Howl } from 'howler'\n\n/**\n * Create a browser notification\n *\n * @param {object} notification notification object\n * @see https://developer.mozilla.org/en/docs/Web/API/notification\n */\nconst createWebNotification = (notification) => {\n\tif (!notification.shouldNotify) {\n\t\treturn\n\t}\n\n\tconst n = new Notification(notification.subject, {\n\t\ttitle: notification.subject,\n\t\tlang: OC.getLocale(),\n\t\tbody: notification.message,\n\t\ticon: notification.icon,\n\t\ttag: notification.notificationId,\n\t})\n\n\tif (notification.link) {\n\t\tn.onclick = async function(e) {\n\t\t\tconst event = {\n\t\t\t\tcancelAction: false,\n\t\t\t\tnotification,\n\t\t\t\taction: {\n\t\t\t\t\turl: notification.link,\n\t\t\t\t\ttype: 'WEB',\n\t\t\t\t},\n\t\t\t}\n\t\t\tawait emit('notifications:action:execute', event)\n\n\t\t\tif (!event.cancelAction) {\n\t\t\t\tconsole.debug('Redirecting because of a click onto a notification', notification.link)\n\t\t\t\twindow.location.href = notification.link\n\t\t\t}\n\n\t\t\t// Best effort try to bring the tab to the foreground (works at least in Chrome, not in Firefox)\n\t\t\twindow.focus()\n\t\t}\n\t}\n\n\tplayNotificationSound(notification)\n}\n\n/**\n * Play a notification sound (if enabled on instance)\n * @param {object} notification notification object\n */\nconst playNotificationSound = (notification) => {\n\tif (notification.app === 'spreed' && notification.objectType === 'call') {\n\t\tif (loadState('notifications', 'sound_talk')) {\n\t\t\tconst sound = new Howl({\n\t\t\t\tsrc: [\n\t\t\t\t\tgenerateFilePath('notifications', 'img', 'talk.ogg'),\n\t\t\t\t],\n\t\t\t\tvolume: 0.5,\n\t\t\t})\n\n\t\t\tsound.play()\n\t\t}\n\t} else if (loadState('notifications', 'sound_notification')) {\n\t\tconst sound = new Howl({\n\t\t\tsrc: [\n\t\t\t\tgenerateFilePath('notifications', 'img', 'notification.ogg'),\n\t\t\t],\n\t\t\tvolume: 0.5,\n\t\t})\n\n\t\tsound.play()\n\t}\n}\n\nexport {\n\tcreateWebNotification,\n}\n","import mod from \"-!../node_modules/babel-loader/lib/index.js!../node_modules/vue-loader/lib/index.js??vue-loader-options!./NotificationsApp.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!./NotificationsApp.vue?vue&type=script&lang=js\"","\n\n\n\n\n","\n import API from \"!../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../node_modules/css-loader/dist/cjs.js!../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../node_modules/sass-loader/dist/cjs.js!../node_modules/vue-loader/lib/index.js??vue-loader-options!./NotificationsApp.vue?vue&type=style&index=0&id=b934bad2&prod&scoped=true&lang=scss\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../node_modules/css-loader/dist/cjs.js!../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../node_modules/sass-loader/dist/cjs.js!../node_modules/vue-loader/lib/index.js??vue-loader-options!./NotificationsApp.vue?vue&type=style&index=0&id=b934bad2&prod&scoped=true&lang=scss\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./NotificationsApp.vue?vue&type=template&id=b934bad2&scoped=true\"\nimport script from \"./NotificationsApp.vue?vue&type=script&lang=js\"\nexport * from \"./NotificationsApp.vue?vue&type=script&lang=js\"\nimport style0 from \"./NotificationsApp.vue?vue&type=style&index=0&id=b934bad2&prod&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 \"b934bad2\",\n null\n \n)\n\nexport default component.exports"],"names":["___CSS_LOADER_EXPORT___","push","module","id","name","components","NcButton","props","label","type","String","default","required","link","primary","Boolean","notificationIndex","Number","data","tabbed","computed","isWebLink","typeWithDefault","buttonType","methods","onClickActionButtonWeb","e","event","cancelAction","notification","$parent","$props","action","url","emit","preventDefault","error","console","showError","t","onClickActionButton","axios","method","_$el","fadeOut","OC","menuSpeed","$emit","$","trigger","Event","_vm","this","_c","_self","staticClass","attrs","on","_v","_s","_e","hasInternalLink","options","styleTagTransform","setAttributes","insert","domAPI","insertStyleElement","locals","path","title","lastSlashPosition","lastIndexOf","firstSlashPosition","indexOf","substring","length","NcUserBubble","server","cloudId","Action","Close","Message","NcRichText","notificationId","datetime","app","icon","externalLink","user","message","messageRich","messageRichParameters","Object","Array","subject","subjectRich","subjectRichParameters","objectType","objectId","shouldNotify","actions","index","showFullMessage","timestamp","Date","valueOf","absoluteDate","moment","format","relativeDate","diff","fromNow","useLink","parametersHaveLink","keys","forEach","p","preparedSubjectParameters","prepareParameters","preparedMessageParameters","isCollapsedMessage","mounted","$el","parameters","richParameters","component","User","File","DefaultParameter","onClickMessage","target","closest","onDismissNotification","delete","generateOcsUrl","then","catch","scopedSlots","_u","key","fn","proxy","class","collapsed","_l","a","i","_b","getBuilder","clearOnLogout","persist","build","remapAttributes","notification_id","object_id","object_type","refreshData","async","requestConfig","lastETag","headers","response","get","BrowserStorage","setItem","status","JSON","stringify","ocs","map","_error$response","playNotificationSound","loadState","Howl","src","generateFilePath","volume","play","Bell","NcEmptyContent","NcHeaderMenu","Notification","_getCapabilities","webNotificationsGranted","backgroundFetching","hasNotifyPush","shutdown","theming","getCapabilities","hasThrottledPushNotifications","notifications","lastTabId","userStatus","tabId","webNotificationsThresholdId","pollIntervalBase","pollIntervalCurrent","interval","pushEndpoints","open","_$icon","isRedThemed","_this$theming","color","hsl","rgbToHsl","h","isOrangeThemed","_this$theming2","showBrowserNotifications","emptyContentMessage","emptyContentDescription","warningIcon","imagePath","requestToken","Math","random","$refs","_oldcount","debug","registerMenu","button","container","undefined","checkWebNotificationPermissions","_fetch","listen","_fetchAfterNotifyPush","_setPollingInterval","_watchTabVisibility","subscribe","handleNetworkOffline","handleNetworkOnline","userStatusUpdated","beforeDestroy","unsubscribe","state","getCurrentUser","uid","userId","onOpen","requestWebNotificationPermissions","setupBackgroundFetcher","config","session_keepalive","window","setInterval","_backgroundFetch","bind","onDismissAll","onRemove","splice","r","g","b","parseInt","max","min","s","l","d","_updateDocTitleOnNewNotifications","document","hidden","startsWith","_restoreTitle","setTimeout","forceRefresh","lastUpdated","getItem","lastTab","now","parse","getNotificationsData","etag","processWebNotifications","info","addEventListener","_visibilityChange","pollInterval","clearInterval","_shutDownNotifications","temporary","permission","location","protocol","requestPermission","permissions","n","lang","getLocale","body","tag","onclick","href","focus","createWebNotification","$event","ref"],"sourceRoot":""} \ No newline at end of file +{"version":3,"file":"notifications-src_NotificationsApp_vue.js?v=62a7e395a9d0be3f89e9","mappings":";sLAGIA,QAA0B,GAA4B,KAE1DA,EAAwBC,KAAK,CAACC,EAAOC,GAAI,oaAAqa,GAAG,CAAC,QAAU,EAAE,QAAU,CAAC,+CAA+C,MAAQ,GAAG,SAAW,8GAA8G,eAAiB,CAAC,qfAAqf,WAAa,MAEhrC,0ECJIH,QAA0B,GAA4B,KAE1DA,EAAwBC,KAAK,CAACC,EAAOC,GAAI,iDAAkD,GAAG,CAAC,QAAU,EAAE,QAAU,CAAC,mCAAmC,8DAA8D,MAAQ,GAAG,SAAW,kBAAkB,eAAiB,CAAC,gCAAkC,8CAA8C,WAAa,MAE9W,4ECJIH,QAA0B,GAA4B,KAE1DA,EAAwBC,KAAK,CAACC,EAAOC,GAAI,iEAAkE,GAAG,CAAC,QAAU,EAAE,QAAU,CAAC,kDAAkD,MAAQ,GAAG,SAAW,8BAA8B,eAAiB,CAAC,mEAAmE,WAAa,MAE9U,4ECJIH,QAA0B,GAA4B,KAE1DA,EAAwBC,KAAK,CAACC,EAAOC,GAAI,+lCAAgmC,GAAG,CAAC,QAAU,EAAE,QAAU,CAAC,wCAAwC,MAAQ,GAAG,SAAW,iPAAiP,eAAiB,CAAC,28BAA28B,WAAa,MAE77E,yDCPA,2DCA2L,0JCgC3L,MAAMC,EAA2B,QAApBC,GAAGC,EAAAA,EAAAA,0BAAiB,IAAAD,OAAA,EAAjBA,EAAmBD,QAiB7BG,EAAW,uCACXC,EAAYC,IACjB,MAAMC,EAAIC,SAASF,EAASG,UAAU,EAAG,GAAI,IAAM,IAC7CC,EAAIF,SAASF,EAASG,UAAU,EAAG,GAAI,IAAM,IAC7CE,EAAIH,SAASF,EAASG,UAAU,EAAG,GAAI,IAAM,IAE7CG,EAAMC,KAAKD,IAAIL,EAAGG,EAAGC,GACrBG,EAAMD,KAAKC,IAAIP,EAAGG,EAAGC,GAC3B,IAAII,EAAM,EACNC,EAAM,EACV,MAAMC,GAAOL,EAAME,GAAO,EAE1B,GAAIF,IAAQE,EAAK,CAChB,MAAMI,EAAIN,EAAME,EAEhB,OADAE,EAAMC,EAAM,GAAMC,GAAK,EAAIN,EAAME,GAAOI,GAAKN,EAAME,GAC3CF,GACR,KAAKL,EAAGQ,GAAOL,EAAIC,GAAKO,GAAKR,EAAIC,EAAI,EAAI,GAAI,MAC7C,KAAKD,EAAGK,GAAOJ,EAAIJ,GAAKW,EAAI,EAAG,MAC/B,KAAKP,EAAGI,GAAOR,EAAIG,GAAKQ,EAAI,EAE5BH,GAAO,EACR,CAEA,MAAO,CAACA,EAAKC,EAAKC,EAAI,EAGjBE,GAAcC,EAAAA,EAAAA,KAAS,KAC5B,GAAKnB,UAAAA,EAASoB,QAAUjB,EAASkB,KAAKrB,aAAO,EAAPA,EAASoB,OAC9C,OAAO,EAER,MAAON,EAAKC,EAAKC,GAAOZ,EAASJ,EAAQoB,OACzC,OAAQN,GAAO,KAAOA,GAAO,KAAOC,EAAM,KAAQC,EAAM,IAAOA,EAAM,GAAI,IAGpEM,GAAiBH,EAAAA,EAAAA,KAAS,KAC/B,GAAKnB,UAAAA,EAASoB,QAAUjB,EAASkB,KAAKrB,aAAO,EAAPA,EAASoB,OAC9C,OAAO,EAER,MAAON,EAAKC,EAAKC,GAAOZ,EAASJ,EAAQoB,OACzC,OAAQN,GAAO,KAAOA,GAAO,KAAOC,EAAM,KAAQC,EAAM,IAAOA,EAAM,GAAI,iHCtE1E,SAXgB,OACd,GCRW,WAAkB,IAAIO,EAAIC,KAAKC,EAAGF,EAAIG,MAAMD,GAAGE,EAAOJ,EAAIG,MAAME,YAAY,OAAQL,EAAIM,SAAWN,EAAIO,YAAaL,EAAG,OAAO,CAACM,YAAY,8BAA8B,CAACN,EAAG,MAAM,CAACO,MAAM,CAAC,MAAQ,6BAA6B,cAAc,+BAA+B,QAAU,MAAM,MAAQT,EAAIU,KAAK,OAASV,EAAIU,KAAK,QAAU,YAAY,KAAO,iBAAiB,CAACR,EAAG,OAAO,CAACO,MAAM,CAAC,EAAI,yQAAyQT,EAAIW,GAAG,KAAKT,EAAG,OAAO,CAACM,YAAY,oBAAoBI,MAAM,CACptB,6BAA8BZ,EAAIO,cAAgBH,EAAOL,eACzD,2BAA4BK,EAAOT,aAAgBK,EAAIO,aAAeH,EAAOL,gBAC5EU,MAAM,CAAC,EAAI,mHAAmHP,EAAGE,EAAOS,SAAS,CAACL,YAAY,6BAA6BC,MAAM,CAAC,KAAOT,EAAIU,OAClN,GACsB,IDMpB,EACA,KACA,KACA,MAI8B,QElBhC,sDCsBA,MCtBsK,EDsBtK,CACAI,KAAA,SAEAC,WAAA,CACAC,SAAAA,EAAAA,GAGAC,MAAA,CACAC,MAAA,CACAC,KAAAC,OACAC,QAAA,GACAC,UAAA,GAEAC,KAAA,CACAJ,KAAAC,OACAC,QAAA,GACAC,UAAA,GAEAH,KAAA,CACAA,KAAAC,OACAC,QAAA,GACAC,UAAA,GAEAE,QAAA,CACAL,KAAAM,QACAJ,SAAA,EACAC,UAAA,GAEAI,kBAAA,CACAP,KAAAQ,OACAL,UAAA,IAIAM,KAAAA,KACA,CACAC,QAAA,IAIAjC,SAAA,CACAkC,SAAAA,GACA,mBAAAC,eACA,EAEAA,eAAAA,GACA,YAAAZ,MAAA,KACA,EAEAa,UAAAA,GACA,YAAAR,QAAA,qBACA,GAGAS,QAAA,CACA,4BAAAC,CAAAC,GACA,IACA,MAAAC,EAAA,CACAC,cAAA,EACAC,aAAA,KAAAC,QAAAC,OACAC,OAAA,CACAC,IAAA,KAAAnB,KACAJ,KAAA,KAAAY,wBAGAY,EAAAA,EAAAA,IAAA,+BAAAP,GAEAA,EAAAC,cAEAF,EAAAS,gBAEA,OAAAC,GACAC,QAAAD,MAAA,2BAAAA,IACAE,EAAAA,EAAAA,IAAAC,EAAA,4CACA,CACA,EAEA,yBAAAC,GACA,IACA,MAAAb,EAAA,CACAC,cAAA,EACAC,aAAA,KAAAC,QAAAC,OACAC,OAAA,CACAC,IAAA,KAAAnB,KACAJ,KAAA,KAAAY,kBAKA,SAFAY,EAAAA,EAAAA,IAAA,+BAAAP,GAEAA,EAAAC,aAEA,aAIAa,EAAAA,EAAAA,GAAA,CACAC,OAAA,KAAApB,gBACAW,IAAA,KAAAnB,OAIA,KAAAgB,QAAAa,KAAAC,QAAAC,GAAAC,WACA,KAAAhB,QAAAiB,MAAA,cAAA9B,oBAEAiB,EAAAA,EAAAA,IAAA,gCAAAP,GAEA,IACAqB,EAAA,QAAAC,QAAA,IAAAD,EAAAE,MAAA,2BACArB,aAAA,KAAAC,QACAE,OAAA,CACAC,IAAA,KAAAnB,KACAJ,KAAA,KAAAY,mBAKA,OAAAc,GACAC,QAAAD,MAAAA,EACA,CACA,OAAAA,GACAC,QAAAD,MAAA,2BAAAA,IACAE,EAAAA,EAAAA,IAAAC,EAAA,4CACA,CACA,IE/HA,SAXgB,OACd,GCRW,WAAkB,IAAIhD,EAAIC,KAAKC,EAAGF,EAAIG,MAAMD,GAAG,OAAQF,EAAI8B,UAAW5B,EAAG,WAAW,CAACM,YAAY,2BAA2BC,MAAM,CAAC,KAAO,UAAU,KAAOT,EAAIuB,MAAMqC,GAAG,CAAC,MAAQ5D,EAAIkC,yBAAyB,CAAClC,EAAIW,GAAG,OAAOX,EAAI6D,GAAG7D,EAAIkB,OAAO,QAAUlB,EAAI8B,UAA8K9B,EAAI8D,KAAvK5D,EAAG,WAAW,CAACM,YAAY,2BAA2BC,MAAM,CAAC,KAAOT,EAAIgC,YAAY4B,GAAG,CAAC,MAAQ5D,EAAIiD,sBAAsB,CAACjD,EAAIW,GAAG,OAAOX,EAAI6D,GAAG7D,EAAIkB,OAAO,OAChb,GACsB,IDSpB,EACA,KACA,KACA,MAI8B,gCEmBhC,MCrCsL,EDqCtL,CACAJ,KAAA,mBACAG,MAAA,CACAE,KAAA,CACAA,KAAAC,OACAE,UAAA,GAEA9C,GAAA,CACA2C,KAAA,CAAAQ,OAAAP,QACAE,UAAA,GAEAR,KAAA,CACAK,KAAAC,OACAE,UAAA,GAEAC,KAAA,CACAJ,KAAAC,OACAC,QAAA,KAIAzB,SAAA,CACAmE,eAAAA,GACA,YAAAxC,OACA,oBAAAJ,MACA,mBAAAA,KAEA,iIErDI6C,EAAU,CAAC,EAEfA,EAAQC,kBAAoB,IAC5BD,EAAQE,cAAgB,IAElBF,EAAQG,OAAS,SAAc,KAAM,QAE3CH,EAAQI,OAAS,IACjBJ,EAAQK,mBAAqB,IAEhB,IAAI,IAASL,GAKJ,KAAW,IAAQM,QAAS,IAAQA,OCP1D,SAXgB,OACd,GCTW,WAAkB,IAAItE,EAAIC,KAAKC,EAAGF,EAAIG,MAAMD,GAAG,OAAQF,EAAI+D,gBAAiB7D,EAAG,IAAI,CAACO,MAAM,CAAC,KAAOT,EAAIuB,OAAO,CAACrB,EAAG,SAAS,CAACF,EAAIW,GAAGX,EAAI6D,GAAG7D,EAAIc,WAAYd,EAAIuB,KAAMrB,EAAG,IAAI,CAACM,YAAY,WAAWC,MAAM,CAAC,KAAOT,EAAIuB,KAAK,OAAS,SAAS,IAAM,wBAAwB,CAACrB,EAAG,SAAS,CAACF,EAAIW,GAAGX,EAAI6D,GAAG7D,EAAIc,WAAWZ,EAAG,SAAS,CAACF,EAAIW,GAAGX,EAAI6D,GAAG7D,EAAIc,QAChW,GACsB,IDUpB,EACA,KACA,WACA,MAI8B,QEUhC,MC7B0K,ED6B1K,CACAA,KAAA,OAEAG,MAAA,CACAE,KAAA,CACAA,KAAAC,OACAE,UAAA,GAEA9C,GAAA,CACA2C,KAAA,CAAAQ,OAAAP,QACAE,UAAA,GAEAR,KAAA,CACAK,KAAAC,OACAE,UAAA,GAEAiD,KAAA,CACApD,KAAAC,OACAC,QAAA,IAEAE,KAAA,CACAJ,KAAAC,OACAC,QAAA,KAIAzB,SAAA,CACA4E,KAAAA,GACA,MAAAC,EAAA,KAAAF,KAAAG,YAAA,KACAC,EAAA,KAAAJ,KAAAK,QAAA,KACAL,EAAA,KAAAA,KAAAtF,UAAA,IAAA0F,EAAA,IAAAF,GAEA,WAAAF,EAAAM,OACA,GAGA7B,EAAA,6BACAuB,QAEA,IElDA,SAXgB,OACd,GCRW,WAAkB,IAAIvE,EAAIC,KAAqB,OAAOC,EAApBF,EAAIG,MAAMD,IAAa,IAAI,CAACM,YAAY,WAAWC,MAAM,CAAC,MAAQT,EAAIwE,MAAM,KAAOxE,EAAIuB,OAAO,CAACvB,EAAIW,GAAGX,EAAI6D,GAAG7D,EAAIc,QAChK,GACsB,IDSpB,EACA,KACA,KACA,MAI8B,QEmBhC,MCrC0K,EDqC1K,CACAA,KAAA,OAEAC,WAAA,CACA+D,qBAAAA,GAGA7D,MAAA,CACAE,KAAA,CACAA,KAAAC,OACAE,UAAA,GAEA9C,GAAA,CACA2C,KAAAC,OACAE,UAAA,GAEAR,KAAA,CACAK,KAAAC,OACAE,UAAA,GAEAyD,OAAA,CACA5D,KAAAC,OACAC,QAAA,KAIAzB,SAAA,CACAoF,OAAAA,GACA,YAAAD,OAAA,KAAAvG,GAAA,SAAAuG,OAAA,EACA,kBEvDI,EAAU,CAAC,EAEf,EAAQd,kBAAoB,IAC5B,EAAQC,cAAgB,IAElB,EAAQC,OAAS,SAAc,KAAM,QAE3C,EAAQC,OAAS,IACjB,EAAQC,mBAAqB,IAEhB,IAAI,IAAS,GAKJ,KAAW,IAAQC,QAAS,IAAQA,OCP1D,SAXgB,OACd,GCTW,WAAkB,IAAItE,EAAIC,KAAKC,EAAGF,EAAIG,MAAMD,GAAG,OAAOA,EAAG,MAAM,CAACM,YAAY,WAAW,CAAGR,EAAIgF,QAA4E9E,EAAG,SAAS,CAACO,MAAM,CAAC,MAAQT,EAAIgF,UAAU,CAAChF,EAAIW,GAAG,SAASX,EAAI6D,GAAG7D,EAAIc,MAAM,UAA/IZ,EAAG,eAAe,CAACO,MAAM,CAAC,eAAeT,EAAIc,KAAK,KAAOd,EAAIxB,OAA6F,EAC9Q,GACsB,IDUpB,EACA,KACA,WACA,MAI8B,QEnB4I,EC4F5K,CACAsC,KAAA,eAEAC,WAAA,CACAkE,OAAA,EACAjE,SAAA,IACAkE,MAAA,IACAC,QAAA,IACAC,WAAAA,EAAAA,IAGAnE,MAAA,CACAoE,eAAA,CACAlE,KAAAQ,OACAN,SAAA,GAEAiE,SAAA,CACAnE,KAAAC,OACAC,QAAA,IAEAkE,IAAA,CACApE,KAAAC,OACAC,QAAA,IAEAmE,KAAA,CACArE,KAAAC,OACAC,QAAA,IAEAE,KAAA,CACAJ,KAAAC,OACAC,QAAA,IAEAoE,aAAA,CACAtE,KAAAC,OACAC,QAAA,IAEAqE,KAAA,CACAvE,KAAAC,OACAC,QAAA,IAEAsE,QAAA,CACAxE,KAAAC,OACAC,QAAA,IAEAuE,YAAA,CACAzE,KAAAC,OACAC,QAAA,IAEAwE,sBAAA,CACA1E,KAAA,CAAA2E,OAAAC,OACA1E,QAAAA,KACA,KAGA2E,QAAA,CACA7E,KAAAC,OACAC,QAAA,IAEA4E,YAAA,CACA9E,KAAAC,OACAC,QAAA,IAEA6E,sBAAA,CACA/E,KAAA,CAAA2E,OAAAC,OACA1E,QAAAA,KACA,KAGA8E,WAAA,CACAhF,KAAAC,OACAC,QAAA,IAEA+E,SAAA,CACAjF,KAAAC,OACAC,QAAA,IAEAgF,aAAA,CACAlF,KAAAM,QACAJ,SAAA,GAEAiF,QAAA,CACAnF,KAAA4E,MACA1E,QAAAA,IACA,IAIAkF,MAAA,CACApF,KAAAQ,OACAN,SAAA,IAIAO,KAAAA,KACA,CACA4E,iBAAA,IAIApD,KAAA,KAEAxD,SAAA,CACA6G,SAAAA,GACA,uBAAAnB,SACA,EAEA,IAAAoB,KAAA,KAAApB,UAAAqB,SACA,EACAC,YAAAA,GACA,uBAAAtB,SACA,IAEAuB,EAAAA,EAAAA,GAAA,KAAAJ,WAAAK,OAAA,MACA,EACAC,YAAAA,GACA,oBAAAzB,SACA,SAGA,MAAA0B,GAAAH,EAAAA,EAAAA,KAAAG,MAAAH,EAAAA,EAAAA,GAAA,KAAAJ,YACA,OAAAO,GAAA,GAAAA,EAAA,KACAhE,EAAA,uBAEA6D,EAAAA,EAAAA,GAAA,KAAAJ,WAAAQ,SACA,EACAC,OAAAA,GACA,SAAA3F,KACA,SAGA,IAAA4F,GAAA,EAMA,OALArB,OAAAsB,KAAA,KAAAlB,uBAAAmB,SAAAC,IACA,KAAApB,sBAAAoB,GAAA/F,OACA4F,GAAA,EACA,KAEAA,CACA,EAEAI,yBAAAA,GACA,YAAAC,kBAAA,KAAAtB,sBACA,EAEAuB,yBAAAA,GACA,YAAAD,kBAAA,KAAA3B,sBACA,EAEA6B,kBAAAA,GACA,YAAA/B,QAAAd,OAAA,WAAA2B,eACA,GAGAmB,OAAAA,GACA,KAAAvE,KAAAK,EAAA,KAAAmE,IACA,EAEA3F,QAAA,CACAuF,iBAAAA,CAAAK,GACA,MAAAC,EAAA,GAoBA,OAnBAhC,OAAAsB,KAAAS,GAAAR,SAAAC,IACA,MAAAnG,EAAA0G,EAAAP,GAAAnG,KAEA2G,EAAAR,GADA,SAAAnG,EACA,CACA4G,UAAAC,EACA/G,MAAA4G,EAAAP,IAEA,SAAAnG,EACA,CACA4G,UAAAE,EACAhH,MAAA4G,EAAAP,IAGA,CACAS,UAAAG,EACAjH,MAAA4G,EAAAP,GAEA,IAEAQ,CACA,EAEAK,cAAAA,CAAAhG,IACAA,EAAAiG,OAAAC,QAAA,yBAGA,KAAAzC,aAAA,KAAAD,WADA,KAAAa,iBAAA,KAAAA,gBAKA,EAEA8B,qBAAAA,GACApF,EAAAA,EACAqF,QAAAC,EAAAA,EAAAA,IAAA,gDAAAhK,GAAA,KAAA6G,kBACAoD,MAAA,KACA,KAAAjF,MAAA,cAAA+C,MAAA,IAEAmC,OAAA,MACA3F,EAAAA,EAAAA,IAAAC,EAAA,qDAEA,kBCzRI,EAAU,CAAC,EAEf,EAAQiB,kBAAoB,IAC5B,EAAQC,cAAgB,IAElB,EAAQC,OAAS,SAAc,KAAM,QAE3C,EAAQC,OAAS,IACjB,EAAQC,mBAAqB,IAEhB,IAAI,IAAS,GAKJ,KAAW,IAAQC,QAAS,IAAQA,OCP1D,SAXgB,OACd,GtBTW,WAAkB,IAAItE,EAAIC,KAAKC,EAAGF,EAAIG,MAAMD,GAAG,OAAOA,EAAG,KAAK,CAACM,YAAY,eAAeC,MAAM,CAAC,UAAUT,EAAIqF,eAAe,iBAAiBrF,EAAIyG,UAAU,mBAAmBzG,EAAImG,WAAW,WAAWnG,EAAIuF,MAAM,CAACrF,EAAG,MAAM,CAACM,YAAY,wBAAwB,CAACN,EAAG,OAAO,CAACM,YAAY,mBAAmB,CAACR,EAAIW,GAAGX,EAAI6D,GAAG7D,EAAI4G,iBAAiB5G,EAAIW,GAAG,KAAMX,EAAIyG,UAAWvG,EAAG,OAAO,CAACM,YAAY,4CAA4CC,MAAM,CAAC,MAAQT,EAAI4G,aAAa,iBAAiB5G,EAAIyG,YAAY,CAACzG,EAAIW,GAAGX,EAAI6D,GAAG7D,EAAI+G,iBAAiB/G,EAAI8D,KAAK9D,EAAIW,GAAG,KAAMX,EAAIyG,UAAWvG,EAAG,WAAW,CAACM,YAAY,8BAA8BC,MAAM,CAAC,KAAO,WAAW,aAAaT,EAAIgD,EAAE,gBAAiB,YAAYY,GAAG,CAAC,MAAQ5D,EAAIsI,uBAAuBK,YAAY3I,EAAI4I,GAAG,CAAC,CAACC,IAAI,OAAOC,GAAG,WAAW,MAAO,CAAC5I,EAAG,QAAQ,CAACO,MAAM,CAAC,KAAO,MAAM,EAAEsI,OAAM,IAAO,MAAK,EAAM,cAAc/I,EAAI8D,MAAM,GAAG9D,EAAIW,GAAG,KAAMX,EAAIyF,aAAcvF,EAAG,IAAI,CAACM,YAAY,kDAAkDC,MAAM,CAAC,KAAOT,EAAIyF,aAAa,OAAS,SAAS,IAAM,wBAAwB,CAACvF,EAAG,OAAO,CAACM,YAAY,SAAS,CAACN,EAAG,MAAM,CAACM,YAAY,oBAAoBC,MAAM,CAAC,IAAMT,EAAIwF,KAAK,IAAM,QAAQxF,EAAIW,GAAG,KAAKT,EAAG,OAAO,CAACM,YAAY,WAAW,CAACR,EAAIW,GAAGX,EAAI6D,GAAG7D,EAAIgG,SAAS,UAAWhG,EAAIkH,QAAShH,EAAG,IAAI,CAACM,YAAY,yCAAyCC,MAAM,CAAC,KAAOT,EAAIuB,OAAO,CAAEvB,EAAIwF,KAAMtF,EAAG,OAAO,CAACM,YAAY,SAAS,CAACN,EAAG,MAAM,CAACM,YAAY,oBAAoBC,MAAM,CAAC,IAAMT,EAAIwF,KAAK,IAAM,QAAQxF,EAAI8D,KAAK9D,EAAIW,GAAG,KAAMX,EAAIiG,YAAa/F,EAAG,aAAa,CAACO,MAAM,CAAC,KAAOT,EAAIiG,YAAY,UAAYjG,EAAIuH,6BAA6BrH,EAAG,OAAO,CAACM,YAAY,WAAW,CAACR,EAAIW,GAAGX,EAAI6D,GAAG7D,EAAIgG,aAAa,GAAG9F,EAAG,MAAM,CAACM,YAAY,wBAAwB,CAAER,EAAIwF,KAAMtF,EAAG,OAAO,CAACM,YAAY,SAAS,CAACN,EAAG,MAAM,CAACM,YAAY,oBAAoBC,MAAM,CAAC,IAAMT,EAAIwF,KAAK,IAAM,QAAQxF,EAAI8D,KAAK9D,EAAIW,GAAG,KAAMX,EAAIiG,YAAa/F,EAAG,aAAa,CAACO,MAAM,CAAC,KAAOT,EAAIiG,YAAY,UAAYjG,EAAIuH,6BAA6BrH,EAAG,OAAO,CAACM,YAAY,WAAW,CAACR,EAAIW,GAAGX,EAAI6D,GAAG7D,EAAIgG,aAAa,GAAGhG,EAAIW,GAAG,KAAMX,EAAI2F,QAASzF,EAAG,MAAM,CAACM,YAAY,uBAAuBoD,GAAG,CAAC,MAAQ5D,EAAImI,iBAAiB,CAACjI,EAAG,MAAM,CAACM,YAAY,oBAAoBI,MAAM,CAAEoI,UAAWhJ,EAAI0H,qBAAsB,CAAE1H,EAAI4F,YAAa1F,EAAG,aAAa,CAACO,MAAM,CAAC,KAAOT,EAAI4F,YAAY,UAAY5F,EAAIyH,0BAA0B,UAAW,KAAQvH,EAAG,OAAO,CAACF,EAAIW,GAAGX,EAAI6D,GAAG7D,EAAI2F,aAAa,GAAG3F,EAAIW,GAAG,KAAMX,EAAI0H,mBAAoBxH,EAAG,MAAM,CAACM,YAAY,0BAA0BR,EAAI8D,OAAO9D,EAAI8D,KAAK9D,EAAIW,GAAG,KAAMX,EAAIsG,QAAQzB,OAAQ3E,EAAG,MAAM,CAACM,YAAY,wBAAwBR,EAAIiJ,GAAIjJ,EAAIsG,SAAS,SAAS4C,EAAEC,GAAG,OAAOjJ,EAAG,SAASF,EAAIoJ,GAAG,CAACP,IAAIM,EAAE1I,MAAM,CAAC,qBAAqBT,EAAIuG,QAAQ,SAAS2C,GAAE,GAAO,IAAG,GAAIlJ,EAAIyF,aAAcvF,EAAG,MAAM,CAACM,YAAY,wBAAwB,CAACN,EAAG,WAAW,CAACM,YAAY,2BAA2BC,MAAM,CAAC,KAAO,UAAU,KAAO,sCAAsC,OAAS,SAAS,IAAM,uBAAuBkI,YAAY3I,EAAI4I,GAAG,CAAC,CAACC,IAAI,OAAOC,GAAG,WAAW,MAAO,CAAC5I,EAAG,UAAU,CAACO,MAAM,CAAC,KAAO,MAAM,EAAEsI,OAAM,MAAS,CAAC/I,EAAIW,GAAG,WAAWX,EAAI6D,GAAG7D,EAAIgD,EAAE,gBAAiB,2BAA2B,eAAe,GAAGhD,EAAI8D,MAC3mG,GACsB,IsBUpB,EACA,KACA,WACA,MAI8B,gCCGhC,SAAeuF,UAAAA,IAAW,iBAAiBC,gBAAgBC,UAAUC,QCgC/DC,EAAmBnH,IACxBA,EAAa+C,eAAiB/C,EAAaoH,gBAC3CpH,EAAa8D,SAAW9D,EAAaqH,UACrCrH,EAAa6D,WAAa7D,EAAasH,mBAEhCtH,EAAaoH,uBACbpH,EAAaqH,iBACbrH,EAAasH,YAEbtH,GAGFuH,EAAcC,UACnB,IAAIC,EAAgB,CAAC,EACjBC,IACHD,EAAgB,CACfE,QAAS,CACR,gBAAiBD,KAKpB,IACC,MAAME,QAAiBhH,EAAAA,EAAMiH,KAAI3B,EAAAA,EAAAA,IAAe,2CAA4CuB,GAE5FK,EAAeC,QAAQ,SAAU,GAAKH,EAASI,QACvB,MAApBJ,EAASI,SACZF,EAAeC,QAAQ,UAAWE,KAAKC,UAAUN,EAASD,UAC1DG,EAAeC,QAAQ,OAAQE,KAAKC,UAAUN,EAAStI,KAAK6I,IAAI7I,KAAK8I,IAAIjB,KAE3E,CAAE,MAAO5G,GAAO,IAAA8H,EACX9H,SAAe,QAAV8H,EAAL9H,EAAOqH,gBAAQ,IAAAS,GAAfA,EAAiBL,OACpBF,EAAeC,QAAQ,SAAU,GAAKxH,EAAMqH,SAASI,QAGrDF,EAAeC,QAAQ,SAAU,MAEnC,kDC3ED,MA0CMO,GAAyBtI,IAC9B,GAAyB,WAArBA,EAAaiD,KAAgD,SAA5BjD,EAAa6D,YACjD,IAAI0E,EAAAA,EAAAA,GAAU,gBAAiB,cAAe,CAC/B,IAAIC,GAAAA,KAAK,CACtBC,IAAK,EACJC,EAAAA,EAAAA,IAAiB,gBAAiB,MAAO,aAE1CC,OAAQ,KAGHC,MACP,OACM,IAAIL,EAAAA,EAAAA,GAAU,gBAAiB,sBAAuB,CAC9C,IAAIC,GAAAA,KAAK,CACtBC,IAAK,EACJC,EAAAA,EAAAA,IAAiB,gBAAiB,MAAO,qBAE1CC,OAAQ,KAGHC,MACP,GC/EyK,GCmG1K,CACApK,KAAA,mBAEAC,WAAA,CACAF,SAAA,IACAsK,UAAA,IACAC,YAAA,IACAC,iBAAA,EACArK,SAAA,IACAsK,eAAA,KACAC,aAAA,KACAC,aAAAA,GAGA5J,KAAAA,KACA,CACA6J,yBAAA,EACAC,oBAAA,EACAC,eAAA,EACAC,UAAA,EACAC,+BAAAhB,EAAAA,EAAAA,GAAA,gDACAiB,cAAA,GACA9B,SAAA,KACA+B,UAAA,KACAC,WAAA,KACAC,MAAA,KAiBAC,4BAAA,EAGAC,iBAAA,IAEAC,oBAAA,IAGAC,SAAA,KACAC,cAAA,KAEAC,MAAA,IAIAC,OAAA,KAEA5M,SAAA,CACA6M,wBAAAA,GACA,YAAAf,oBACA,KAAAD,yBACA,aAAAO,YACA,KAAAC,QAAA,KAAAF,SACA,EAEAW,mBAAAA,GACA,mBAAAjB,wBACAzI,EAAA,wEAGA,KAAA6I,8BACA7I,EAAA,0DAGAA,EAAA,mCACA,EAEA2J,uBAAAA,GACA,YAAAd,8BACA7I,EAAA,gSAGA,EACA,EAEA4J,YAAAA,KACAC,EAAAA,EAAAA,IAAA,qCAIAlF,OAAAA,GACA,KAAAsE,MAAA3I,GAAAwJ,cAAA,GAAAzN,KAAA0N,SACA,KAAAP,OAAA/I,EAAA,KAAAuJ,MAAAxH,MACA,KAAAyH,UAAA,EAGAnK,QAAAoK,MAAA,iDACA5J,GAAA6J,aAAA1J,EAAA,KAAAuJ,MAAAI,QAAA3J,EAAA,KAAAuJ,MAAAK,gBAAAC,GAAA,GAEA,KAAAC,kCAGA,KAAAC,UAEAC,EAAAA,EAAAA,IAAA,4BACA,KAAAC,uBAAA,MAGA5K,QAAAoK,MAAA,0DACA,KAAAf,iBAAA,IACA,KAAAR,eAAA,GAIA,KAAAgC,oBAAA,KAAAxB,kBAEA,KAAAyB,uBACAC,EAAAA,EAAAA,IAAA,sBAAAC,uBACAD,EAAAA,EAAAA,IAAA,qBAAAE,sBACAF,EAAAA,EAAAA,IAAA,kCAAAG,kBACA,EAEAC,aAAAA,IACAC,EAAAA,EAAAA,IAAA,kCAAAF,oBACAE,EAAAA,EAAAA,IAAA,sBAAAJ,uBACAI,EAAAA,EAAAA,IAAA,qBAAAH,oBACA,EAEA9L,QAAA,CACA+L,iBAAAA,CAAAG,IACAC,EAAAA,EAAAA,MAAAC,MAAAF,EAAAG,SACA,KAAAtC,WAAAmC,EAAA7D,OAEA,EAEAiE,MAAAA,GACA,KAAAC,mCACA,EAEAV,oBAAAA,GACAhL,QAAAoK,MAAA,+DAAAf,kBACA,KAAAwB,oBAAA,QAAAxB,iBACA,EAEA4B,mBAAAA,GACA,KAAAP,SACA1K,QAAAoK,MAAA,uDAAAf,kBACA,KAAAwB,oBAAA,KAAAxB,iBACA,EAEAsC,sBAAAA,GACAnL,GAAAoL,OAAAC,mBACA7L,QAAAoK,MAAA,8DACA,KAAAb,SAAAuC,OAAAC,YAAA,KAAAC,iBAAAC,KAAA,WAAA3C,sBAEAtJ,QAAAoK,MAAA,+DAEA,EAEA8B,YAAAA,GACA9L,EAAAA,EACAqF,QAAAC,EAAAA,EAAAA,IAAA,4CACAC,MAAA,KACA,KAAAqD,cAAA,MAEApD,OAAA,MACA3F,EAAAA,EAAAA,IAAAC,EAAA,0DAEA,EACAiM,QAAAA,CAAA1I,GACA,KAAAuF,cAAAoD,OAAA3I,EAAA,EACA,EAOA4I,iCAAAA,CAAArD,GACAA,EAAAjH,OAAA,KAAAoI,YACA,KAAAA,UAAAnB,EAAAjH,OACA,KAAA6G,oBAAA0D,SAAAC,SAEAD,SAAA5K,MAAA8K,WAAA,QACAF,SAAA5K,MAAA,KAAA4K,SAAA5K,QAIA,EAOA+K,aAAAA,GACAH,SAAA5K,MAAA8K,WAAA,QACAF,SAAA5K,MAAA4K,SAAA5K,MAAAvF,UAAA,GAEA,EAKAyO,qBAAAA,GACA,KAAAhC,oBAAA,EACA,KAAAC,eAAA,KAAAM,QAAA,KAAAF,WACAjJ,QAAAoK,MAAA,sHACAsC,YAAA,KACA,KAAAhC,QAAA,GACA,OAEA1K,QAAAoK,MAAA,kDACA,KAAAM,SAEA,EAKA,YAAAA,GACA,KAAA1B,cAAAjH,QAAA,KAAAiH,cAAA,GAAAzG,eAAA,KAAA6G,8BACA,KAAAA,4BAAA,KAAAJ,cAAA,GAAAzG,gBAGA,MAAA6E,OH7S6BJ,OAAOmC,EAAOjC,EAAUyF,EAAc9D,KAClE,MAAM+D,EAAc1Q,SAASoL,EAAeuF,QAAQ,eAAgB,IAC9DC,EAAUxF,EAAeuF,QAAQ,SACjCE,GAAMhJ,EAAAA,EAAAA,KAASC,OAAO,KAiB5B,OAfI2I,GAECG,IAAY3D,GAASyD,EAAc,GAAKG,GAExCD,IAAY3D,GAASN,GAEtB+D,EAAc,GAAKG,KACtBzF,EAAeC,QAAQ,QAAS4B,GAChC7B,EAAeC,QAAQ,cAAewF,SAEhChG,EAAYG,IAKZ,CACNM,OAAQtL,SAASoL,EAAeuF,QAAQ,UAAW,IACnD1F,QAASM,KAAKuF,MAAM1F,EAAeuF,QAAQ,YAAc,MACzD/N,KAAM2I,KAAKuF,MAAM1F,EAAeuF,QAAQ,SAAW,MACnD1D,MAAO7B,EAAeuF,QAAQ,SAC9BD,YAAa1Q,SAASoL,EAAeuF,QAAQ,eAAgB,IAC7D,EGmRFI,CAAA,KAAA9D,MAAA,KAAAjC,UAAA,KAAA0B,mBAAA,KAAAC,eAEA,MAAAzB,EAAAI,QAEAxH,QAAAoK,MAAA,0EAAAf,kBACA,KAAAwB,oBAAA,QAAAxB,mBACA,MAAAjC,EAAAI,QACA,KAAA0B,WAAA9B,EAAAD,QAAA,2BACA,KAAAD,SAAAE,EAAAD,QAAA+F,KACA,KAAAjE,UAAA7B,EAAA+B,MACA,KAAAH,cAAA5B,EAAAtI,KACA,KAAAqO,wBAAA/F,EAAAtI,MACAkB,QAAAoK,MAAA,8DACA,KAAAS,oBAAA,KAAAxB,kBACA,KAAAgD,kCAAA,KAAArD,gBAEA,KAAAJ,oBAAA,KAAAI,cAAAjH,SACA,KAAAqH,4BAAA,KAAAJ,cAAA,GAAAzG,iBAEA,MAAA6E,EAAAI,OAEA,KAAAqD,oBAAA,KAAAxB,kBACA,MAAAjC,EAAAI,QAEAxH,QAAAoN,KAAA,gEACA,KAAAvC,oBAAA,QAAAxB,mBACA,MAAAjC,EAAAI,QAEAxH,QAAAoN,KAAA,gDACA,KAAAvC,oBAAA,QAAAxB,oBAEArJ,QAAAoN,KAAA,sCAAAhG,EAAAI,QACA,KAAAqD,oBAAA,QAAAxB,kBAEA,EAEA2C,gBAAAA,GACA,KAAApD,oBAAA,EACA,KAAA8B,QACA,EAEAI,mBAAAA,GACAwB,SAAAe,iBAAA,wBAAAC,mBAAA,EACA,EAEAA,iBAAAA,GACAhB,SAAAC,QACA,KAAAE,eAEA,EAEA5B,mBAAAA,CAAA0C,GACA,KAAAhE,UAAAgE,IAAA,KAAAjE,sBAIAtJ,QAAAoK,MAAA,+BAAAmD,GAEA,KAAAhE,WACAuC,OAAA0B,cAAA,KAAAjE,UACA,KAAAA,SAAA,MAGA,KAAAD,oBAAAiE,EACA,KAAA5B,yBACA,EAQA8B,sBAAAA,CAAAC,GACA1N,QAAAoK,MAAA,gCAAAsD,EAAA,oBACA,KAAAnE,WACAuC,OAAA0B,cAAA,KAAAjE,UACA,KAAAA,SAAA,MAEA,KAAAT,UAAA4E,CACA,EAKAjD,+BAAAA,GACA,uBAAAqB,OAMA,YAAAA,OAAApD,aAAAiF,YACA3N,QAAAoK,MAAA,0CACA,KAAAzB,yBAAA,IAIA,WAAAmD,OAAApD,aAAAiF,YACA3N,QAAAoK,MAAA,yCACA,KAAAzB,yBAAA,IAIA,UAAAmD,OAAA8B,SAAAC,UACA7N,QAAAoK,MAAA,oCACA,KAAAzB,yBAAA,KAIA3I,QAAAoN,KAAA,oDACA,KAAAzE,wBAAA,QAxBA3I,QAAAoN,KAAA,+CACA,KAAAzE,yBAAA,GAwBA,EAKA,uCAAA+C,GACA,YAAA/C,0BAIA3I,QAAAoN,KAAA,wCACAtB,OAAApD,aAAAoF,oBACAnI,MAAAoI,IACA,KAAApF,wBAAA,YAAAoF,CAAA,IAEA,EAEAZ,uBAAAA,CAAAnE,GACAA,EAAAzE,SAAA/E,IACA,QAAAoJ,mBAAA,CAGA,MAAAtJ,EAAA,CAAAE,iBACAK,EAAAA,EAAAA,IAAA,sCAAAP,EACA,CAEA,KAAAqK,0BAAA,KAAAP,4BAAA5J,EAAA+C,gBFhc+B/C,KAC9B,IAAKA,EAAa+D,aACjB,OAGD,MAAMyK,EAAI,IAAItF,aAAalJ,EAAa0D,QAAS,CAChDxB,MAAOlC,EAAa0D,QACpB+K,KAAMzN,GAAG0N,YACTC,KAAM3O,EAAaqD,QACnBH,KAAMlD,EAAakD,KACnB0L,IAAK5O,EAAa+C,iBAGf/C,EAAaf,OAChBuP,EAAEK,QAAUrH,eAAe3H,GAC1B,MAAMC,EAAQ,CACbC,cAAc,EACdC,eACAG,OAAQ,CACPC,IAAKJ,EAAaf,KAClBJ,KAAM,cAGFwB,EAAAA,EAAAA,IAAK,+BAAgCP,GAEtCA,EAAMC,eACVS,QAAQoK,MAAM,qDAAsD5K,EAAaf,MACjFqN,OAAO8B,SAASU,KAAO9O,EAAaf,MAIrCqN,OAAOyC,OACR,GAGDzG,GAAsBtI,EAAa,EE8ZpCgP,CAAAhP,EACA,GAEA,mBCzcI,GAAU,CAAC,EAEf,GAAQ2B,kBAAoB,IAC5B,GAAQC,cAAgB,IAElB,GAAQC,OAAS,SAAc,KAAM,QAE3C,GAAQC,OAAS,IACjB,GAAQC,mBAAqB,IAEhB,IAAI,KAAS,IAKJ,MAAW,KAAQC,QAAS,KAAQA,OCP1D,UAXgB,OACd,IlCTW,WAAkB,IAAItE,EAAIC,KAAKC,EAAGF,EAAIG,MAAMD,GAAG,OAASF,EAAI4L,SAAg7E5L,EAAI8D,KAA16E5D,EAAG,eAAe,CAACM,YAAY,uBAAuBC,MAAM,CAAC,GAAK,gBAAgB,kCAAkC,CAAC,YAAY,KAAOT,EAAIuM,KAAK,aAAavM,EAAIgD,EAAE,gBAAiB,iBAAiB,MAAQhD,EAAIgD,EAAE,gBAAiB,kBAAkBY,GAAG,CAAC,cAAc,SAAS2N,GAAQvR,EAAIuM,KAAKgF,CAAM,EAAE,KAAOvR,EAAIuO,QAAQ5F,YAAY3I,EAAI4I,GAAG,CAAC,CAACC,IAAI,UAAUC,GAAG,WAAW,MAAO,CAAC5I,EAAG,mBAAmB,CAACO,MAAM,CAAC,KAAO,GAAG,WAAwC,IAA7BT,EAAI8L,cAAcjH,QAAgD,OAAhC7E,EAAIyL,wBAAiC,eAAezL,EAAI6L,iCAAiC,EAAE9C,OAAM,IAAO,MAAK,EAAM,aAAa,CAAC/I,EAAIW,GAAG,KAAKT,EAAG,MAAM,CAACsR,IAAI,YAAYhR,YAAY,0BAA0B,CAACN,EAAG,aAAa,CAACO,MAAM,CAAC,KAAO,OAAO,KAAO,WAAW,CAAET,EAAI8L,cAAcjH,OAAS,EAAG3E,EAAG,mBAAmB,CAACM,YAAY,uBAAuBC,MAAM,CAAC,KAAO,OAAO,IAAM,OAAO,CAAET,EAAI6L,8BAA+B3L,EAAG,eAAe,CAAC2I,KAAK,KAAKpI,MAAM,CAAC,SAAW,UAAU,IAAM,OAAO,KAAOT,EAAI4M,YAAY,gBAAgB,sCAAsC,QAAU5M,EAAI2M,wBAAwB,QAAU3M,EAAI0M,oBAAoB,MAAQ,QAAQ1M,EAAI8D,KAAK9D,EAAIW,GAAG,KAAKX,EAAIiJ,GAAIjJ,EAAI8L,eAAe,SAASgF,EAAEvK,GAAO,OAAOrG,EAAG,eAAeF,EAAIoJ,GAAG,CAACP,IAAIiI,EAAEzL,eAAe5E,MAAM,CAAC,MAAQ8F,GAAO3C,GAAG,CAAC,OAAS5D,EAAIiP,WAAW,eAAe6B,GAAE,GAAO,KAAI,GAAG5Q,EAAG,iBAAiB,CAACO,MAAM,CAAC,KAAOT,EAAI0M,oBAAoB,YAAc1M,EAAI2M,yBAAyBhE,YAAY3I,EAAI4I,GAAG,CAAC,CAACC,IAAI,OAAOC,GAAG,WAAW,MAAO,CAAG9I,EAAI6L,8BAA8C3L,EAAG,OAAO,CAACM,YAAY,4BAAtCN,EAAG,YAA+D,EAAE6I,OAAM,GAAO/I,EAAI6L,8BAA+B,CAAChD,IAAI,SAASC,GAAG,WAAW,MAAO,CAAC5I,EAAG,WAAW,CAACO,MAAM,CAAC,KAAO,UAAU,KAAO,sCAAsC,OAAS,SAAS,IAAM,uBAAuBkI,YAAY3I,EAAI4I,GAAG,CAAC,CAACC,IAAI,OAAOC,GAAG,WAAW,MAAO,CAAC5I,EAAG,cAAc,CAACO,MAAM,CAAC,KAAO,MAAM,EAAEsI,OAAM,IAAO,MAAK,EAAM,aAAa,CAAC/I,EAAIW,GAAG,iBAAiBX,EAAI6D,GAAG7D,EAAIgD,EAAE,gBAAiB,2BAA2B,oBAAoB,EAAE+F,OAAM,GAAM,MAAM,MAAK,MAAS,GAAG/I,EAAIW,GAAG,KAAMX,EAAI8L,cAAcjH,OAAS,EAAG3E,EAAG,MAAM,CAACM,YAAY,eAAe,CAACN,EAAG,WAAW,CAACO,MAAM,CAAC,KAAO,WAAW,KAAO,IAAImD,GAAG,CAAC,MAAQ5D,EAAIgP,cAAcrG,YAAY3I,EAAI4I,GAAG,CAAC,CAACC,IAAI,OAAOC,GAAG,WAAW,MAAO,CAAC5I,EAAG,YAAY,CAACO,MAAM,CAAC,KAAO,MAAM,EAAEsI,OAAM,IAAO,MAAK,EAAM,aAAa,CAAC/I,EAAIW,GAAG,aAAaX,EAAI6D,GAAG7D,EAAIgD,EAAE,gBAAiB,8BAA8B,eAAe,GAAGhD,EAAI8D,MAAM,IACp/E,GACsB,IkCUpB,EACA,KACA,WACA,MAI8B","sources":["webpack:///notifications/src/Components/Notification.vue?vue&type=style&index=0&id=cbd3ce86&prod&lang=scss&scoped=true","webpack:///notifications/src/Components/Parameters/DefaultParameter.vue?vue&type=style&index=0&id=39222bd6&prod&lang=scss&scoped=true","webpack:///notifications/src/Components/Parameters/User.vue?vue&type=style&index=0&id=b064c4b8&prod&lang=scss&scoped=true","webpack:///notifications/src/NotificationsApp.vue?vue&type=style&index=0&id=7c3b133f&prod&scoped=true&lang=scss","webpack://notifications/./src/NotificationsApp.vue?e839","webpack:///notifications/src/Components/IconNotification.vue?vue&type=script&setup=true&lang=js","webpack:///notifications/IconNotification.vue","webpack://notifications/./src/Components/IconNotification.vue?8653","webpack:///notifications/src/Components/IconNotification.vue","webpack://notifications/./src/Components/Notification.vue?52bf","webpack:///notifications/src/Components/Action.vue","webpack:///notifications/src/Components/Action.vue?vue&type=script&lang=js","webpack://notifications/./src/Components/Action.vue?e46d","webpack://notifications/./src/Components/Action.vue?cc92","webpack:///notifications/src/Components/Parameters/DefaultParameter.vue","webpack:///notifications/src/Components/Parameters/DefaultParameter.vue?vue&type=script&lang=js","webpack://notifications/./src/Components/Parameters/DefaultParameter.vue?94fa","webpack://notifications/./src/Components/Parameters/DefaultParameter.vue?6164","webpack://notifications/./src/Components/Parameters/DefaultParameter.vue?deb7","webpack:///notifications/src/Components/Parameters/File.vue","webpack:///notifications/src/Components/Parameters/File.vue?vue&type=script&lang=js","webpack://notifications/./src/Components/Parameters/File.vue?a096","webpack://notifications/./src/Components/Parameters/File.vue?9962","webpack:///notifications/src/Components/Parameters/User.vue","webpack:///notifications/src/Components/Parameters/User.vue?vue&type=script&lang=js","webpack://notifications/./src/Components/Parameters/User.vue?f42a","webpack://notifications/./src/Components/Parameters/User.vue?9ce0","webpack://notifications/./src/Components/Parameters/User.vue?b95d","webpack:///notifications/src/Components/Notification.vue?vue&type=script&lang=js","webpack:///notifications/src/Components/Notification.vue","webpack://notifications/./src/Components/Notification.vue?9841","webpack://notifications/./src/Components/Notification.vue?7f20","webpack:///notifications/src/services/BrowserStorage.js","webpack:///notifications/src/services/notificationsService.js","webpack:///notifications/src/services/webNotificationsService.js","webpack:///notifications/src/NotificationsApp.vue?vue&type=script&lang=js","webpack:///notifications/src/NotificationsApp.vue","webpack://notifications/./src/NotificationsApp.vue?0359","webpack://notifications/./src/NotificationsApp.vue?aadb"],"sourcesContent":["// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `.notification[data-v-cbd3ce86] img.notification-icon{display:flex;width:32px;height:32px;filter:var(--background-invert-if-dark)}.notification[data-v-cbd3ce86] .rich-text--wrapper{white-space:pre-wrap;word-break:break-word}.notification .notification-subject[data-v-cbd3ce86]{padding:4px}.notification a.notification-subject[data-v-cbd3ce86]:focus-visible{box-shadow:inset 0 0 0 2px var(--color-main-text) !important}`, \"\",{\"version\":3,\"sources\":[\"webpack://./src/Components/Notification.vue\"],\"names\":[],\"mappings\":\"AAEC,qDACC,YAAA,CACA,UAAA,CACA,WAAA,CACA,uCAAA,CAED,mDACC,oBAAA,CACA,qBAAA,CAGD,qDACC,WAAA,CAGD,oEACC,4DAAA\",\"sourcesContent\":[\"\\n.notification {\\n\\t:deep(img.notification-icon) {\\n\\t\\tdisplay: flex;\\n\\t\\twidth: 32px;\\n\\t\\theight: 32px;\\n\\t\\tfilter: var(--background-invert-if-dark);\\n\\t}\\n\\t:deep(.rich-text--wrapper) {\\n\\t\\twhite-space: pre-wrap;\\n\\t\\tword-break: break-word;\\n\\t}\\n\\n\\t.notification-subject {\\n\\t\\tpadding: 4px;\\n\\t}\\n\\n\\ta.notification-subject:focus-visible {\\n\\t\\tbox-shadow: inset 0 0 0 2px var(--color-main-text) !important; // override rule in core/css/headers.scss #header a:focus-visible\\n\\t}\\n}\\n\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `.external[data-v-39222bd6]:after{content:\" ↗\"}`, \"\",{\"version\":3,\"sources\":[\"webpack://./DefaultParameter.vue\",\"webpack://./src/Components/Parameters/DefaultParameter.vue\"],\"names\":[],\"mappings\":\"AAAA,iCCCA,YACC\",\"sourcesContent\":[\".external:after{content:\\\" ↗\\\"}\",\"\\n.external:after {\\n\\tcontent: ' ↗';\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `.mention[data-v-b064c4b8]{display:contents;white-space:nowrap}`, \"\",{\"version\":3,\"sources\":[\"webpack://./src/Components/Parameters/User.vue\"],\"names\":[],\"mappings\":\"AACA,0BACC,gBAAA,CACA,kBAAA\",\"sourcesContent\":[\"\\n.mention {\\n\\tdisplay: contents;\\n\\twhite-space: nowrap;\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `.notification-container[data-v-7c3b133f]{overflow:hidden}.notification-container[data-v-7c3b133f],.notification-container[data-v-7c3b133f] *,.notification-container[data-v-7c3b133f] *::before,.notification-container[data-v-7c3b133f] *::after{box-sizing:border-box}.notification-container .notification-wrapper[data-v-7c3b133f]{display:flex;flex-direction:column;max-height:calc(100vh - 250px);overflow:auto}.notification-container .dismiss-all[data-v-7c3b133f]{padding:calc(2*var(--default-grid-baseline));border-top:1px solid var(--color-border)}.icon-alert-outline[data-v-7c3b133f]{background-size:64px;width:64px;height:64px}.fade-enter-active[data-v-7c3b133f],.fade-leave-active[data-v-7c3b133f]{transition:opacity var(--animation-quick) ease}.fade-enter-from[data-v-7c3b133f],.fade-leave-to[data-v-7c3b133f]{opacity:0}.list-move[data-v-7c3b133f],.list-enter-active[data-v-7c3b133f],.list-leave-active[data-v-7c3b133f]{transition:all var(--animation-quick) ease}.list-enter-from[data-v-7c3b133f],.list-leave-to[data-v-7c3b133f]{opacity:0;transform:translateX(30px)}.list-leave-active[data-v-7c3b133f]{width:100%}`, \"\",{\"version\":3,\"sources\":[\"webpack://./src/NotificationsApp.vue\"],\"names\":[],\"mappings\":\"AACA,yCAEC,eAAA,CAEA,yLAIC,qBAAA,CAGD,+DACC,YAAA,CACA,qBAAA,CACA,8BAAA,CACA,aAAA,CAGD,sDACC,4CAAA,CACA,wCAAA,CAIF,qCACC,oBAAA,CACA,UAAA,CACA,WAAA,CAGD,wEAEC,8CAAA,CAGD,kEAEC,SAAA,CAGD,oGAGC,0CAAA,CAGD,kEAEC,SAAA,CACA,0BAAA,CAGD,oCACC,UAAA\",\"sourcesContent\":[\"\\n.notification-container {\\n\\t/* Prevent slide animation to go out of the div */\\n\\toverflow: hidden;\\n\\n\\t&,\\n\\t& :deep(*),\\n\\t& :deep(*::before),\\n\\t& :deep(*::after) {\\n\\t\\tbox-sizing: border-box;\\n\\t}\\n\\n\\t.notification-wrapper {\\n\\t\\tdisplay: flex;\\n\\t\\tflex-direction: column;\\n\\t\\tmax-height: calc(100vh - 50px * 5);\\n\\t\\toverflow: auto;\\n\\t}\\n\\n\\t.dismiss-all {\\n\\t\\tpadding: calc(2 * var(--default-grid-baseline));\\n\\t\\tborder-top: 1px solid var(--color-border);\\n\\t}\\n}\\n\\n.icon-alert-outline {\\n\\tbackground-size: 64px;\\n\\twidth: 64px;\\n\\theight: 64px;\\n}\\n\\n.fade-enter-active,\\n.fade-leave-active {\\n\\ttransition: opacity var(--animation-quick) ease;\\n}\\n\\n.fade-enter-from,\\n.fade-leave-to {\\n\\topacity: 0;\\n}\\n\\n.list-move,\\n.list-enter-active,\\n.list-leave-active {\\n\\ttransition: all var(--animation-quick) ease;\\n}\\n\\n.list-enter-from,\\n.list-leave-to {\\n\\topacity: 0;\\n\\ttransform: translateX(30px);\\n}\\n\\n.list-leave-active {\\n\\twidth: 100%;\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","var render = function render(){var _vm=this,_c=_vm._self._c;return (!_vm.shutdown)?_c('NcHeaderMenu',{staticClass:\"notifications-button\",attrs:{\"id\":\"notifications\",\"exclude-click-outside-selectors\":['.popover'],\"open\":_vm.open,\"aria-label\":_vm.t('notifications', 'Notifications'),\"title\":_vm.t('notifications', 'Notifications')},on:{\"update:open\":function($event){_vm.open=$event},\"open\":_vm.onOpen},scopedSlots:_vm._u([{key:\"trigger\",fn:function(){return [_c('IconNotification',{attrs:{\"size\":20,\"show-dot\":_vm.notifications.length !== 0 || _vm.webNotificationsGranted === null,\"show-warning\":_vm.hasThrottledPushNotifications}})]},proxy:true}],null,false,4256080196)},[_vm._v(\" \"),_c('div',{ref:\"container\",staticClass:\"notification-container\"},[_c('transition',{attrs:{\"name\":\"fade\",\"mode\":\"out-in\"}},[(_vm.notifications.length > 0)?_c('transition-group',{staticClass:\"notification-wrapper\",attrs:{\"name\":\"list\",\"tag\":\"ul\"}},[(_vm.hasThrottledPushNotifications)?_c('Notification',{key:-2016,attrs:{\"datetime\":\"warning\",\"app\":\"core\",\"icon\":_vm.warningIcon,\"external-link\":\"https://nextcloud.com/fairusepolicy\",\"message\":_vm.emptyContentDescription,\"subject\":_vm.emptyContentMessage,\"index\":2016}}):_vm._e(),_vm._v(\" \"),_vm._l((_vm.notifications),function(n,index){return _c('Notification',_vm._b({key:n.notificationId,attrs:{\"index\":index},on:{\"remove\":_vm.onRemove}},'Notification',n,false))})],2):_c('NcEmptyContent',{attrs:{\"name\":_vm.emptyContentMessage,\"description\":_vm.emptyContentDescription},scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [(!_vm.hasThrottledPushNotifications)?_c('IconBell'):_c('span',{staticClass:\"icon icon-alert-outline\"})]},proxy:true},(_vm.hasThrottledPushNotifications)?{key:\"action\",fn:function(){return [_c('NcButton',{attrs:{\"type\":\"primary\",\"href\":\"https://nextcloud.com/fairusepolicy\",\"target\":\"_blank\",\"rel\":\"noreferrer noopener\"},scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [_c('IconMessage',{attrs:{\"size\":20}})]},proxy:true}],null,false,1098256392)},[_vm._v(\"\\n\\t\\t\\t\\t\\t\\t\"+_vm._s(_vm.t('notifications', 'Contact Nextcloud GmbH'))+\" ↗\\n\\t\\t\\t\\t\\t\")])]},proxy:true}:null],null,true)})],1),_vm._v(\" \"),(_vm.notifications.length > 0)?_c('div',{staticClass:\"dismiss-all\"},[_c('NcButton',{attrs:{\"type\":\"tertiary\",\"wide\":\"\"},on:{\"click\":_vm.onDismissAll},scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [_c('IconClose',{attrs:{\"size\":20}})]},proxy:true}],null,false,2888946197)},[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_vm.t('notifications', 'Dismiss all notifications'))+\"\\n\\t\\t\\t\")])],1):_vm._e()],1)]):_vm._e()\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../node_modules/babel-loader/lib/index.js!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./IconNotification.vue?vue&type=script&setup=true&lang=js\"; export default mod; export * from \"-!../../node_modules/babel-loader/lib/index.js!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./IconNotification.vue?vue&type=script&setup=true&lang=js\"","\n\n\n\n","import { render, staticRenderFns } from \"./IconNotification.vue?vue&type=template&id=342d7d94\"\nimport script from \"./IconNotification.vue?vue&type=script&setup=true&lang=js\"\nexport * from \"./IconNotification.vue?vue&type=script&setup=true&lang=js\"\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\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return (_vm.showDot || _vm.showWarning)?_c('span',{staticClass:\"notifications-button__icon\"},[_c('svg',{attrs:{\"xmlns\":\"http://www.w3.org/2000/svg\",\"xmlns:xlink\":\"http://www.w3.org/1999/xlink\",\"version\":\"1.1\",\"width\":_vm.size,\"height\":_vm.size,\"viewBox\":\"0 0 24 24\",\"fill\":\"currentColor\"}},[_c('path',{attrs:{\"d\":\"M 19,11.79 C 18.5,11.92 18,12 17.5,12 14.47,12 12,9.53 12,6.5 12,5.03 12.58,3.7 13.5,2.71 13.15,2.28 12.61,2 12,2 10.9,2 10,2.9 10,4 V 4.29 C 7.03,5.17 5,7.9 5,11 v 6 l -2,2 v 1 H 21 V 19 L 19,17 V 11.79 M 12,23 c 1.11,0 2,-0.89 2,-2 h -4 c 0,1.11 0.9,2 2,2 z\"}}),_vm._v(\" \"),_c('path',{staticClass:\"notification__dot\",class:{\n\t\t\t\t'notification__dot--warning': _vm.showWarning && !_setup.isOrangeThemed,\n\t\t\t\t'notification__dot--white': _setup.isRedThemed || (_vm.showWarning && _setup.isOrangeThemed),\n\t\t\t},attrs:{\"d\":\"M 21,6.5 C 21,8.43 19.43,10 17.5,10 15.57,10 14,8.43 14,6.5 14,4.57 15.57,3 17.5,3 19.43,3 21,4.57 21,6.5\"}})])]):_c(_setup.IconBell,{staticClass:\"notifications-button__icon\",attrs:{\"size\":_vm.size}})\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('li',{staticClass:\"notification\",attrs:{\"data-id\":_vm.notificationId,\"data-timestamp\":_vm.timestamp,\"data-object-type\":_vm.objectType,\"data-app\":_vm.app}},[_c('div',{staticClass:\"notification-heading\"},[_c('span',{staticClass:\"hidden-visually\"},[_vm._v(_vm._s(_vm.absoluteDate))]),_vm._v(\" \"),(_vm.timestamp)?_c('span',{staticClass:\"notification-time live-relative-timestamp\",attrs:{\"title\":_vm.absoluteDate,\"data-timestamp\":_vm.timestamp}},[_vm._v(_vm._s(_vm.relativeDate))]):_vm._e(),_vm._v(\" \"),(_vm.timestamp)?_c('NcButton',{staticClass:\"notification-dismiss-button\",attrs:{\"type\":\"tertiary\",\"aria-label\":_vm.t('notifications', 'Dismiss')},on:{\"click\":_vm.onDismissNotification},scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [_c('Close',{attrs:{\"size\":20}})]},proxy:true}],null,false,2121748766)}):_vm._e()],1),_vm._v(\" \"),(_vm.externalLink)?_c('a',{staticClass:\"notification-subject full-subject-link external\",attrs:{\"href\":_vm.externalLink,\"target\":\"_blank\",\"rel\":\"noreferrer noopener\"}},[_c('span',{staticClass:\"image\"},[_c('img',{staticClass:\"notification-icon\",attrs:{\"src\":_vm.icon,\"alt\":\"\"}})]),_vm._v(\" \"),_c('span',{staticClass:\"subject\"},[_vm._v(_vm._s(_vm.subject)+\" ↗\")])]):(_vm.useLink)?_c('a',{staticClass:\"notification-subject full-subject-link\",attrs:{\"href\":_vm.link}},[(_vm.icon)?_c('span',{staticClass:\"image\"},[_c('img',{staticClass:\"notification-icon\",attrs:{\"src\":_vm.icon,\"alt\":\"\"}})]):_vm._e(),_vm._v(\" \"),(_vm.subjectRich)?_c('NcRichText',{attrs:{\"text\":_vm.subjectRich,\"arguments\":_vm.preparedSubjectParameters}}):_c('span',{staticClass:\"subject\"},[_vm._v(_vm._s(_vm.subject))])],1):_c('div',{staticClass:\"notification-subject\"},[(_vm.icon)?_c('span',{staticClass:\"image\"},[_c('img',{staticClass:\"notification-icon\",attrs:{\"src\":_vm.icon,\"alt\":\"\"}})]):_vm._e(),_vm._v(\" \"),(_vm.subjectRich)?_c('NcRichText',{attrs:{\"text\":_vm.subjectRich,\"arguments\":_vm.preparedSubjectParameters}}):_c('span',{staticClass:\"subject\"},[_vm._v(_vm._s(_vm.subject))])],1),_vm._v(\" \"),(_vm.message)?_c('div',{staticClass:\"notification-message\",on:{\"click\":_vm.onClickMessage}},[_c('div',{staticClass:\"message-container\",class:{ collapsed: _vm.isCollapsedMessage }},[(_vm.messageRich)?_c('NcRichText',{attrs:{\"text\":_vm.messageRich,\"arguments\":_vm.preparedMessageParameters,\"autolink\":true}}):_c('span',[_vm._v(_vm._s(_vm.message))])],1),_vm._v(\" \"),(_vm.isCollapsedMessage)?_c('div',{staticClass:\"notification-overflow\"}):_vm._e()]):_vm._e(),_vm._v(\" \"),(_vm.actions.length)?_c('div',{staticClass:\"notification-actions\"},_vm._l((_vm.actions),function(a,i){return _c('Action',_vm._b({key:i,attrs:{\"notification-index\":_vm.index}},'Action',a,false))}),1):(_vm.externalLink)?_c('div',{staticClass:\"notification-actions\"},[_c('NcButton',{staticClass:\"action-button pull-right\",attrs:{\"type\":\"primary\",\"href\":\"https://nextcloud.com/fairusepolicy\",\"target\":\"_blank\",\"rel\":\"noreferrer noopener\"},scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [_c('Message',{attrs:{\"size\":20}})]},proxy:true}])},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.t('notifications', 'Contact Nextcloud GmbH'))+\" ↗\\n\\t\\t\")])],1):_vm._e()])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n","import mod from \"-!../../node_modules/babel-loader/lib/index.js!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Action.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!./Action.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./Action.vue?vue&type=template&id=589bf766\"\nimport script from \"./Action.vue?vue&type=script&lang=js\"\nexport * from \"./Action.vue?vue&type=script&lang=js\"\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\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return (_vm.isWebLink)?_c('NcButton',{staticClass:\"action-button pull-right\",attrs:{\"type\":\"primary\",\"href\":_vm.link},on:{\"click\":_vm.onClickActionButtonWeb}},[_vm._v(\"\\n\\t\"+_vm._s(_vm.label)+\"\\n\")]):(!_vm.isWebLink)?_c('NcButton',{staticClass:\"action-button pull-right\",attrs:{\"type\":_vm.buttonType},on:{\"click\":_vm.onClickActionButton}},[_vm._v(\"\\n\\t\"+_vm._s(_vm.label)+\"\\n\")]):_vm._e()\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n\n\n","import mod from \"-!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./DefaultParameter.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!./DefaultParameter.vue?vue&type=script&lang=js\"","\n import API from \"!../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../node_modules/css-loader/dist/cjs.js!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/sass-loader/dist/cjs.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./DefaultParameter.vue?vue&type=style&index=0&id=39222bd6&prod&lang=scss&scoped=true\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../node_modules/css-loader/dist/cjs.js!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/sass-loader/dist/cjs.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./DefaultParameter.vue?vue&type=style&index=0&id=39222bd6&prod&lang=scss&scoped=true\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./DefaultParameter.vue?vue&type=template&id=39222bd6&scoped=true\"\nimport script from \"./DefaultParameter.vue?vue&type=script&lang=js\"\nexport * from \"./DefaultParameter.vue?vue&type=script&lang=js\"\nimport style0 from \"./DefaultParameter.vue?vue&type=style&index=0&id=39222bd6&prod&lang=scss&scoped=true\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"39222bd6\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return (_vm.hasInternalLink)?_c('a',{attrs:{\"href\":_vm.link}},[_c('strong',[_vm._v(_vm._s(_vm.name))])]):(_vm.link)?_c('a',{staticClass:\"external\",attrs:{\"href\":_vm.link,\"target\":\"_blank\",\"rel\":\"noopener noreferrer\"}},[_c('strong',[_vm._v(_vm._s(_vm.name))])]):_c('strong',[_vm._v(_vm._s(_vm.name))])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n","import mod from \"-!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./File.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!./File.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./File.vue?vue&type=template&id=5a5ee8cb\"\nimport script from \"./File.vue?vue&type=script&lang=js\"\nexport * from \"./File.vue?vue&type=script&lang=js\"\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\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('a',{staticClass:\"filename\",attrs:{\"title\":_vm.title,\"href\":_vm.link}},[_vm._v(_vm._s(_vm.name))])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n\n\n","import mod from \"-!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./User.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!./User.vue?vue&type=script&lang=js\"","\n import API from \"!../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../node_modules/css-loader/dist/cjs.js!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/sass-loader/dist/cjs.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./User.vue?vue&type=style&index=0&id=b064c4b8&prod&lang=scss&scoped=true\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../node_modules/css-loader/dist/cjs.js!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/sass-loader/dist/cjs.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./User.vue?vue&type=style&index=0&id=b064c4b8&prod&lang=scss&scoped=true\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./User.vue?vue&type=template&id=b064c4b8&scoped=true\"\nimport script from \"./User.vue?vue&type=script&lang=js\"\nexport * from \"./User.vue?vue&type=script&lang=js\"\nimport style0 from \"./User.vue?vue&type=style&index=0&id=b064c4b8&prod&lang=scss&scoped=true\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"b064c4b8\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{staticClass:\"mention\"},[(!_vm.cloudId)?_c('NcUserBubble',{attrs:{\"display-name\":_vm.name,\"user\":_vm.id}}):_c('strong',{attrs:{\"title\":_vm.cloudId}},[_vm._v(\"\\n\\t\\t\"+_vm._s(_vm.name)+\"\\n\\t\")])],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../node_modules/babel-loader/lib/index.js!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Notification.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!./Notification.vue?vue&type=script&lang=js\"","\n\n\n\n\n","\n import API from \"!../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../node_modules/css-loader/dist/cjs.js!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/sass-loader/dist/cjs.js!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Notification.vue?vue&type=style&index=0&id=cbd3ce86&prod&lang=scss&scoped=true\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../node_modules/css-loader/dist/cjs.js!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/sass-loader/dist/cjs.js!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Notification.vue?vue&type=style&index=0&id=cbd3ce86&prod&lang=scss&scoped=true\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./Notification.vue?vue&type=template&id=cbd3ce86&scoped=true\"\nimport script from \"./Notification.vue?vue&type=script&lang=js\"\nexport * from \"./Notification.vue?vue&type=script&lang=js\"\nimport style0 from \"./Notification.vue?vue&type=style&index=0&id=cbd3ce86&prod&lang=scss&scoped=true\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"cbd3ce86\",\n null\n \n)\n\nexport default component.exports","/**\n * @copyright Copyright (c) 2020 Joas Schilling \n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see .\n *\n */\n\nimport { getBuilder } from '@nextcloud/browser-storage'\n\nexport default getBuilder('notifications').clearOnLogout().persist().build()\n","/**\n * @copyright Copyright (c) 2020 Joas Schilling \n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see .\n *\n */\n\nimport moment from '@nextcloud/moment'\nimport axios from '@nextcloud/axios'\nimport { generateOcsUrl } from '@nextcloud/router'\nimport BrowserStorage from './BrowserStorage.js'\n\nconst getNotificationsData = async (tabId, lastETag, forceRefresh, hasNotifyPush) => {\n\tconst lastUpdated = parseInt(BrowserStorage.getItem('lastUpdated'), 10)\n\tconst lastTab = BrowserStorage.getItem('tabId')\n\tconst now = moment().format('X')\n\n\tif (forceRefresh\n\t\t// Allow the same tab to refresh with less than the timeout,\n\t\t|| (lastTab === tabId && lastUpdated + 25 < now)\n\t\t// Allow the same tab to refresh with notify push,\n\t\t|| (lastTab === tabId && hasNotifyPush)\n\t\t// and at the same time give it some more time against other tabs.\n\t\t|| lastUpdated + 35 < now) {\n\t\tBrowserStorage.setItem('tabId', tabId)\n\t\tBrowserStorage.setItem('lastUpdated', now)\n\t\t// console.debug('Refetching data in ' + tabId + ' (prev: ' + lastTab + ' age: ' + (now - lastUpdated) + ')')\n\t\tawait refreshData(lastETag)\n\t// } else {\n\t// console.debug('Reusing data in ' + tabId + ' (prev: ' + lastTab + ' age: ' + (now - lastUpdated) + ')')\n\t}\n\n\treturn {\n\t\tstatus: parseInt(BrowserStorage.getItem('status'), 10),\n\t\theaders: JSON.parse(BrowserStorage.getItem('headers') || '[]'),\n\t\tdata: JSON.parse(BrowserStorage.getItem('data') || '[]'),\n\t\ttabId: BrowserStorage.getItem('tabId'),\n\t\tlastUpdated: parseInt(BrowserStorage.getItem('lastUpdated'), 10),\n\t}\n}\n\nconst remapAttributes = (notification) => {\n\tnotification.notificationId = notification.notification_id\n\tnotification.objectId = notification.object_id\n\tnotification.objectType = notification.object_type\n\n\tdelete notification.notification_id\n\tdelete notification.object_id\n\tdelete notification.object_type\n\n\treturn notification\n}\n\nconst refreshData = async (lastETag) => {\n\tlet requestConfig = {}\n\tif (lastETag) {\n\t\trequestConfig = {\n\t\t\theaders: {\n\t\t\t\t'If-None-Match': lastETag,\n\t\t\t},\n\t\t}\n\t}\n\n\ttry {\n\t\tconst response = await axios.get(generateOcsUrl('apps/notifications/api/v2/notifications'), requestConfig)\n\n\t\tBrowserStorage.setItem('status', '' + response.status)\n\t\tif (response.status !== 204) {\n\t\t\tBrowserStorage.setItem('headers', JSON.stringify(response.headers))\n\t\t\tBrowserStorage.setItem('data', JSON.stringify(response.data.ocs.data.map(remapAttributes)))\n\t\t}\n\t} catch (error) {\n\t\tif (error?.response?.status) {\n\t\t\tBrowserStorage.setItem('status', '' + error.response.status)\n\t\t} else {\n\t\t\t// Setting to 500 in case no request was made so it's retried on the next attempt\n\t\t\tBrowserStorage.setItem('status', '500')\n\t\t}\n\t}\n}\n\nexport {\n\tgetNotificationsData,\n}\n","/**\n * SPDX-FileCopyrightText: 2024 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport { emit } from '@nextcloud/event-bus'\nimport { loadState } from '@nextcloud/initial-state'\nimport { generateFilePath } from '@nextcloud/router'\nimport { Howl } from 'howler'\n\n/**\n * Create a browser notification\n *\n * @param {object} notification notification object\n * @see https://developer.mozilla.org/en/docs/Web/API/notification\n */\nconst createWebNotification = (notification) => {\n\tif (!notification.shouldNotify) {\n\t\treturn\n\t}\n\n\tconst n = new Notification(notification.subject, {\n\t\ttitle: notification.subject,\n\t\tlang: OC.getLocale(),\n\t\tbody: notification.message,\n\t\ticon: notification.icon,\n\t\ttag: notification.notificationId,\n\t})\n\n\tif (notification.link) {\n\t\tn.onclick = async function(e) {\n\t\t\tconst event = {\n\t\t\t\tcancelAction: false,\n\t\t\t\tnotification,\n\t\t\t\taction: {\n\t\t\t\t\turl: notification.link,\n\t\t\t\t\ttype: 'WEB',\n\t\t\t\t},\n\t\t\t}\n\t\t\tawait emit('notifications:action:execute', event)\n\n\t\t\tif (!event.cancelAction) {\n\t\t\t\tconsole.debug('Redirecting because of a click onto a notification', notification.link)\n\t\t\t\twindow.location.href = notification.link\n\t\t\t}\n\n\t\t\t// Best effort try to bring the tab to the foreground (works at least in Chrome, not in Firefox)\n\t\t\twindow.focus()\n\t\t}\n\t}\n\n\tplayNotificationSound(notification)\n}\n\n/**\n * Play a notification sound (if enabled on instance)\n * @param {object} notification notification object\n */\nconst playNotificationSound = (notification) => {\n\tif (notification.app === 'spreed' && notification.objectType === 'call') {\n\t\tif (loadState('notifications', 'sound_talk')) {\n\t\t\tconst sound = new Howl({\n\t\t\t\tsrc: [\n\t\t\t\t\tgenerateFilePath('notifications', 'img', 'talk.ogg'),\n\t\t\t\t],\n\t\t\t\tvolume: 0.5,\n\t\t\t})\n\n\t\t\tsound.play()\n\t\t}\n\t} else if (loadState('notifications', 'sound_notification')) {\n\t\tconst sound = new Howl({\n\t\t\tsrc: [\n\t\t\t\tgenerateFilePath('notifications', 'img', 'notification.ogg'),\n\t\t\t],\n\t\t\tvolume: 0.5,\n\t\t})\n\n\t\tsound.play()\n\t}\n}\n\nexport {\n\tcreateWebNotification,\n}\n","import mod from \"-!../node_modules/babel-loader/lib/index.js!../node_modules/vue-loader/lib/index.js??vue-loader-options!./NotificationsApp.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!./NotificationsApp.vue?vue&type=script&lang=js\"","\n\n\n\n\n","\n import API from \"!../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../node_modules/css-loader/dist/cjs.js!../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../node_modules/sass-loader/dist/cjs.js!../node_modules/vue-loader/lib/index.js??vue-loader-options!./NotificationsApp.vue?vue&type=style&index=0&id=7c3b133f&prod&scoped=true&lang=scss\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../node_modules/css-loader/dist/cjs.js!../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../node_modules/sass-loader/dist/cjs.js!../node_modules/vue-loader/lib/index.js??vue-loader-options!./NotificationsApp.vue?vue&type=style&index=0&id=7c3b133f&prod&scoped=true&lang=scss\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./NotificationsApp.vue?vue&type=template&id=7c3b133f&scoped=true\"\nimport script from \"./NotificationsApp.vue?vue&type=script&lang=js\"\nexport * from \"./NotificationsApp.vue?vue&type=script&lang=js\"\nimport style0 from \"./NotificationsApp.vue?vue&type=style&index=0&id=7c3b133f&prod&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 \"7c3b133f\",\n null\n \n)\n\nexport default component.exports"],"names":["___CSS_LOADER_EXPORT___","push","module","id","theming","_getCapabilities","getCapabilities","hexRegex","hexToHSL","hexColor","r","parseInt","substring","g","b","max","Math","min","hue","sat","lum","d","isRedThemed","computed","color","test","isOrangeThemed","_vm","this","_c","_self","_setup","_setupProxy","showDot","showWarning","staticClass","attrs","size","_v","class","IconBell","name","components","NcButton","props","label","type","String","default","required","link","primary","Boolean","notificationIndex","Number","data","tabbed","isWebLink","typeWithDefault","buttonType","methods","onClickActionButtonWeb","e","event","cancelAction","notification","$parent","$props","action","url","emit","preventDefault","error","console","showError","t","onClickActionButton","axios","method","_$el","fadeOut","OC","menuSpeed","$emit","$","trigger","Event","on","_s","_e","hasInternalLink","options","styleTagTransform","setAttributes","insert","domAPI","insertStyleElement","locals","path","title","lastSlashPosition","lastIndexOf","firstSlashPosition","indexOf","length","NcUserBubble","server","cloudId","Action","Close","Message","NcRichText","notificationId","datetime","app","icon","externalLink","user","message","messageRich","messageRichParameters","Object","Array","subject","subjectRich","subjectRichParameters","objectType","objectId","shouldNotify","actions","index","showFullMessage","timestamp","Date","valueOf","absoluteDate","moment","format","relativeDate","diff","fromNow","useLink","parametersHaveLink","keys","forEach","p","preparedSubjectParameters","prepareParameters","preparedMessageParameters","isCollapsedMessage","mounted","$el","parameters","richParameters","component","User","File","DefaultParameter","onClickMessage","target","closest","onDismissNotification","delete","generateOcsUrl","then","catch","scopedSlots","_u","key","fn","proxy","collapsed","_l","a","i","_b","getBuilder","clearOnLogout","persist","build","remapAttributes","notification_id","object_id","object_type","refreshData","async","requestConfig","lastETag","headers","response","get","BrowserStorage","setItem","status","JSON","stringify","ocs","map","_error$response","playNotificationSound","loadState","Howl","src","generateFilePath","volume","play","IconClose","IconMessage","IconNotification","NcEmptyContent","NcHeaderMenu","Notification","webNotificationsGranted","backgroundFetching","hasNotifyPush","shutdown","hasThrottledPushNotifications","notifications","lastTabId","userStatus","tabId","webNotificationsThresholdId","pollIntervalBase","pollIntervalCurrent","interval","pushEndpoints","open","_$icon","showBrowserNotifications","emptyContentMessage","emptyContentDescription","warningIcon","imagePath","requestToken","random","$refs","_oldcount","debug","registerMenu","button","container","undefined","checkWebNotificationPermissions","_fetch","listen","_fetchAfterNotifyPush","_setPollingInterval","_watchTabVisibility","subscribe","handleNetworkOffline","handleNetworkOnline","userStatusUpdated","beforeDestroy","unsubscribe","state","getCurrentUser","uid","userId","onOpen","requestWebNotificationPermissions","setupBackgroundFetcher","config","session_keepalive","window","setInterval","_backgroundFetch","bind","onDismissAll","onRemove","splice","_updateDocTitleOnNewNotifications","document","hidden","startsWith","_restoreTitle","setTimeout","forceRefresh","lastUpdated","getItem","lastTab","now","parse","getNotificationsData","etag","processWebNotifications","info","addEventListener","_visibilityChange","pollInterval","clearInterval","_shutDownNotifications","temporary","permission","location","protocol","requestPermission","permissions","n","lang","getLocale","body","tag","onclick","href","focus","createWebNotification","$event","ref"],"sourceRoot":""} \ No newline at end of file