From 32fc618542bde583e4bb8c277286ff2e6f889fd2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?John=20Molakvo=C3=A6=20=28skjnldsv=29?= Date: Thu, 23 May 2019 17:03:04 +0200 Subject: [PATCH] Add OCA.Files.Sidebar MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: John Molakvoæ (skjnldsv) --- apps/comments/src/filesplugin.js | 2 +- apps/files/.babelrc.js | 8 + apps/files/css/files.scss | 3 +- apps/files/js/dist/sidebar.js | 9592 +++++++++++++++++ apps/files/js/dist/sidebar.js.map | 1 + apps/files/js/filelist.js | 83 +- apps/files/js/merged-index.json | 47 +- apps/files/src/components/LegacyTab.vue | 82 + apps/files/src/models/FileInfo.js | 24 + apps/files/src/models/Tab.js | 57 + apps/files/src/services/FileInfo.js | 67 + apps/files/src/services/Sidebar.js | 82 + apps/files/src/sidebar.js | 55 + apps/files/src/views/Sidebar.vue | 185 + apps/files/webpack.js | 13 + .../src/collaborationresources.js | 2 +- apps/files_sharing/src/share.js | 4 +- apps/files_sharing/src/sharebreadcrumbview.js | 2 +- core/js/files/client.js | 7 + package-lock.json | 24 + package.json | 1 + webpack.common.js | 15 +- 22 files changed, 10286 insertions(+), 70 deletions(-) create mode 100644 apps/files/.babelrc.js create mode 100644 apps/files/js/dist/sidebar.js create mode 100644 apps/files/js/dist/sidebar.js.map create mode 100644 apps/files/src/components/LegacyTab.vue create mode 100644 apps/files/src/models/FileInfo.js create mode 100644 apps/files/src/models/Tab.js create mode 100644 apps/files/src/services/FileInfo.js create mode 100644 apps/files/src/services/Sidebar.js create mode 100644 apps/files/src/sidebar.js create mode 100644 apps/files/src/views/Sidebar.vue create mode 100644 apps/files/webpack.js diff --git a/apps/comments/src/filesplugin.js b/apps/comments/src/filesplugin.js index 2073be09b69fa..45392c529cd8f 100644 --- a/apps/comments/src/filesplugin.js +++ b/apps/comments/src/filesplugin.js @@ -106,7 +106,7 @@ actionHandler: function(fileName, context) { context.$file.find('.action-comment').tooltip('hide'); // open sidebar in comments section - context.fileList.showDetailsView(fileName, 'commentsTabView'); + context.fileList.showDetailsView(fileName, 'comments'); } }); diff --git a/apps/files/.babelrc.js b/apps/files/.babelrc.js new file mode 100644 index 0000000000000..d91a2b7b9148b --- /dev/null +++ b/apps/files/.babelrc.js @@ -0,0 +1,8 @@ +module.exports = { + plugins: [ + [ + '@babel/plugin-proposal-class-properties', + { loose: true } + ] + ] +} diff --git a/apps/files/css/files.scss b/apps/files/css/files.scss index daf4ef2dd7872..9794109434159 100644 --- a/apps/files/css/files.scss +++ b/apps/files/css/files.scss @@ -80,8 +80,9 @@ } /* fit app list view heights */ -.app-files #app-content>.viewcontainer { +.app-files #app-content > .viewcontainer { min-height: 0%; + width: 100%; } .app-files #app-content { diff --git a/apps/files/js/dist/sidebar.js b/apps/files/js/dist/sidebar.js new file mode 100644 index 0000000000000..1a280efd30ac2 --- /dev/null +++ b/apps/files/js/dist/sidebar.js @@ -0,0 +1,9592 @@ +/******/ (function(modules) { // webpackBootstrap +/******/ // The module cache +/******/ var installedModules = {}; +/******/ +/******/ // The require function +/******/ function __webpack_require__(moduleId) { +/******/ +/******/ // Check if module is in cache +/******/ if(installedModules[moduleId]) { +/******/ return installedModules[moduleId].exports; +/******/ } +/******/ // Create a new module (and put it into the cache) +/******/ var module = installedModules[moduleId] = { +/******/ i: moduleId, +/******/ l: false, +/******/ exports: {} +/******/ }; +/******/ +/******/ // Execute the module function +/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__); +/******/ +/******/ // Flag the module as loaded +/******/ module.l = true; +/******/ +/******/ // Return the exports of the module +/******/ return module.exports; +/******/ } +/******/ +/******/ +/******/ // expose the modules object (__webpack_modules__) +/******/ __webpack_require__.m = modules; +/******/ +/******/ // expose the module cache +/******/ __webpack_require__.c = installedModules; +/******/ +/******/ // define getter function for harmony exports +/******/ __webpack_require__.d = function(exports, name, getter) { +/******/ if(!__webpack_require__.o(exports, name)) { +/******/ Object.defineProperty(exports, name, { enumerable: true, get: getter }); +/******/ } +/******/ }; +/******/ +/******/ // define __esModule on exports +/******/ __webpack_require__.r = function(exports) { +/******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) { +/******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); +/******/ } +/******/ Object.defineProperty(exports, '__esModule', { value: true }); +/******/ }; +/******/ +/******/ // create a fake namespace object +/******/ // mode & 1: value is a module id, require it +/******/ // mode & 2: merge all properties of value into the ns +/******/ // mode & 4: return value when already ns object +/******/ // mode & 8|1: behave like require +/******/ __webpack_require__.t = function(value, mode) { +/******/ if(mode & 1) value = __webpack_require__(value); +/******/ if(mode & 8) return value; +/******/ if((mode & 4) && typeof value === 'object' && value && value.__esModule) return value; +/******/ var ns = Object.create(null); +/******/ __webpack_require__.r(ns); +/******/ Object.defineProperty(ns, 'default', { enumerable: true, value: value }); +/******/ if(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key)); +/******/ return ns; +/******/ }; +/******/ +/******/ // getDefaultExport function for compatibility with non-harmony modules +/******/ __webpack_require__.n = function(module) { +/******/ var getter = module && module.__esModule ? +/******/ function getDefault() { return module['default']; } : +/******/ function getModuleExports() { return module; }; +/******/ __webpack_require__.d(getter, 'a', getter); +/******/ return getter; +/******/ }; +/******/ +/******/ // Object.prototype.hasOwnProperty.call +/******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); }; +/******/ +/******/ // __webpack_public_path__ +/******/ __webpack_require__.p = "/js/"; +/******/ +/******/ +/******/ // Load entry module and return exports +/******/ return __webpack_require__(__webpack_require__.s = "./apps/files/src/sidebar.js"); +/******/ }) +/************************************************************************/ +/******/ ({ + +/***/ "./apps/files/src/services/Sidebar.js": +/*!********************************************!*\ + !*** ./apps/files/src/services/Sidebar.js ***! + \********************************************/ +/*! exports provided: default */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "default", function() { return Sidebar; }); +function _classPrivateFieldLooseBase(receiver, privateKey) { if (!Object.prototype.hasOwnProperty.call(receiver, privateKey)) { throw new TypeError("attempted to use private field on non-instance"); } return receiver; } + +var id = 0; + +function _classPrivateFieldLooseKey(name) { return "__private_" + id++ + "_" + name; } + +/** + * @copyright Copyright (c) 2019 John Molakvoæ + * + * @author John Molakvoæ + * + * @license GNU AGPL version 3 or any later version + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License as + * published by the Free Software Foundation, either version 3 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with this program. If not, see . + * + */ +class Sidebar { + constructor() { + Object.defineProperty(this, _tabs, { + writable: true, + value: void 0 + }); + Object.defineProperty(this, _fileInfo, { + writable: true, + value: void 0 + }); + _classPrivateFieldLooseBase(this, _tabs)[_tabs] = []; + _classPrivateFieldLooseBase(this, _fileInfo)[_fileInfo] = {}; + console.debug('OCA.Files.Sidebar initialized'); + } + + get availableTabs() { + return _classPrivateFieldLooseBase(this, _tabs)[_tabs]; + } + + registerTab(tab) { + _classPrivateFieldLooseBase(this, _tabs)[_tabs].push(tab); + } + + get fileInfo() { + return _classPrivateFieldLooseBase(this, _fileInfo)[_fileInfo]; + } + + set fileInfo(fileInfo) { + _classPrivateFieldLooseBase(this, _fileInfo)[_fileInfo] = fileInfo; + } + +} + +var _tabs = _classPrivateFieldLooseKey("tabs"); + +var _fileInfo = _classPrivateFieldLooseKey("fileInfo"); + +/***/ }), + +/***/ "./apps/files/src/sidebar.js": +/*!***********************************!*\ + !*** ./apps/files/src/sidebar.js ***! + \***********************************/ +/*! no exports provided */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony import */ var vue__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! vue */ "./node_modules/vue/dist/vue.runtime.esm.js"); +/* harmony import */ var _views_Sidebar_vue__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./views/Sidebar.vue */ "./apps/files/src/views/Sidebar.vue"); +/* harmony import */ var _services_Sidebar__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./services/Sidebar */ "./apps/files/src/services/Sidebar.js"); +/** + * @copyright Copyright (c) 2019 John Molakvoæ + * + * @author John Molakvoæ + * + * @license GNU AGPL version 3 or any later version + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License as + * published by the Free Software Foundation, either version 3 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with this program. If not, see . + * + */ + + + +vue__WEBPACK_IMPORTED_MODULE_0__["default"].prototype.t = t; +window.addEventListener('DOMContentLoaded', () => { + // Init Sidebar Service + if (window.OCA && window.OCA.Files) { + Object.assign(window.OCA.Files, { + Sidebar: new _services_Sidebar__WEBPACK_IMPORTED_MODULE_2__["default"]() + }); + } // Make sure we have a proper layout + + + if (document.getElementById('content')) { + // Make sure we have a mountpoint + if (!document.getElementById('app-sidebar')) { + var contentElement = document.getElementById('content'); + var sidebarElement = document.createElement('div'); + sidebarElement.id = 'app-sidebar'; + contentElement.appendChild(sidebarElement); + } + } // Init vue app + + + new vue__WEBPACK_IMPORTED_MODULE_0__["default"]({ + el: '#app-sidebar', + name: 'SidebarRoot', + render: h => h(_views_Sidebar_vue__WEBPACK_IMPORTED_MODULE_1__["default"]) + }); +}); + +/***/ }), + +/***/ "./apps/files/src/views/Sidebar.vue": +/*!******************************************!*\ + !*** ./apps/files/src/views/Sidebar.vue ***! + \******************************************/ +/*! exports provided: default */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony import */ var _Sidebar_vue_vue_type_template_id_7c6102ee___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./Sidebar.vue?vue&type=template&id=7c6102ee& */ "./apps/files/src/views/Sidebar.vue?vue&type=template&id=7c6102ee&"); +/* harmony import */ var _Sidebar_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./Sidebar.vue?vue&type=script&lang=js& */ "./apps/files/src/views/Sidebar.vue?vue&type=script&lang=js&"); +/* empty/unused harmony star reexport *//* harmony import */ var _node_modules_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js */ "./node_modules/vue-loader/lib/runtime/componentNormalizer.js"); + + + + + +/* normalize component */ + +var component = Object(_node_modules_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_2__["default"])( + _Sidebar_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__["default"], + _Sidebar_vue_vue_type_template_id_7c6102ee___WEBPACK_IMPORTED_MODULE_0__["render"], + _Sidebar_vue_vue_type_template_id_7c6102ee___WEBPACK_IMPORTED_MODULE_0__["staticRenderFns"], + false, + null, + null, + null + +) + +/* hot reload */ +if (false) { var api; } +component.options.__file = "apps/files/src/views/Sidebar.vue" +/* harmony default export */ __webpack_exports__["default"] = (component.exports); + +/***/ }), + +/***/ "./apps/files/src/views/Sidebar.vue?vue&type=script&lang=js&": +/*!*******************************************************************!*\ + !*** ./apps/files/src/views/Sidebar.vue?vue&type=script&lang=js& ***! + \*******************************************************************/ +/*! exports provided: default */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony import */ var _node_modules_babel_loader_lib_index_js_node_modules_vue_loader_lib_index_js_vue_loader_options_Sidebar_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!../../../../node_modules/babel-loader/lib!../../../../node_modules/vue-loader/lib??vue-loader-options!./Sidebar.vue?vue&type=script&lang=js& */ "./node_modules/babel-loader/lib/index.js!./node_modules/vue-loader/lib/index.js?!./apps/files/src/views/Sidebar.vue?vue&type=script&lang=js&"); +/* empty/unused harmony star reexport */ /* harmony default export */ __webpack_exports__["default"] = (_node_modules_babel_loader_lib_index_js_node_modules_vue_loader_lib_index_js_vue_loader_options_Sidebar_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__["default"]); + +/***/ }), + +/***/ "./apps/files/src/views/Sidebar.vue?vue&type=template&id=7c6102ee&": +/*!*************************************************************************!*\ + !*** ./apps/files/src/views/Sidebar.vue?vue&type=template&id=7c6102ee& ***! + \*************************************************************************/ +/*! exports provided: render, staticRenderFns */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony import */ var _node_modules_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_node_modules_vue_loader_lib_index_js_vue_loader_options_Sidebar_vue_vue_type_template_id_7c6102ee___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!../../../../node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!../../../../node_modules/vue-loader/lib??vue-loader-options!./Sidebar.vue?vue&type=template&id=7c6102ee& */ "./node_modules/vue-loader/lib/loaders/templateLoader.js?!./node_modules/vue-loader/lib/index.js?!./apps/files/src/views/Sidebar.vue?vue&type=template&id=7c6102ee&"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "render", function() { return _node_modules_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_node_modules_vue_loader_lib_index_js_vue_loader_options_Sidebar_vue_vue_type_template_id_7c6102ee___WEBPACK_IMPORTED_MODULE_0__["render"]; }); + +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "staticRenderFns", function() { return _node_modules_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_node_modules_vue_loader_lib_index_js_vue_loader_options_Sidebar_vue_vue_type_template_id_7c6102ee___WEBPACK_IMPORTED_MODULE_0__["staticRenderFns"]; }); + + + +/***/ }), + +/***/ "./node_modules/babel-loader/lib/index.js!./node_modules/vue-loader/lib/index.js?!./apps/files/src/views/Sidebar.vue?vue&type=script&lang=js&": +/*!*****************************************************************************************************************************************************!*\ + !*** ./node_modules/babel-loader/lib!./node_modules/vue-loader/lib??vue-loader-options!./apps/files/src/views/Sidebar.vue?vue&type=script&lang=js& ***! + \*****************************************************************************************************************************************************/ +/*! exports provided: default */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony import */ var nextcloud_vue_dist_Components_AppSidebar__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! nextcloud-vue/dist/Components/AppSidebar */ "./node_modules/nextcloud-vue/dist/Components/AppSidebar.js"); +/* harmony import */ var nextcloud_vue_dist_Components_AppSidebar__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(nextcloud_vue_dist_Components_AppSidebar__WEBPACK_IMPORTED_MODULE_0__); +// +// +// +// +// +// +// +// +// +// +// +// +// +// +// +// +// +// +// +// +// +// +// +// +// +// +// +// +// +// +// +// +// + +/* harmony default export */ __webpack_exports__["default"] = ({ + name: 'Sidebar', + components: { + AppSidebar: (nextcloud_vue_dist_Components_AppSidebar__WEBPACK_IMPORTED_MODULE_0___default()) + }, + + data() { + return { + fileInfo: OCA.Files.Sidebar.fileInfo, + tabs: OCA.Files.Sidebar.availableTabs, + title: '', + subtitle: '', + background: '' + }; + }, + + computed: {}, + methods: {} +}); + +/***/ }), + +/***/ "./node_modules/nextcloud-vue/dist/Components/AppSidebar.js": +/*!******************************************************************!*\ + !*** ./node_modules/nextcloud-vue/dist/Components/AppSidebar.js ***! + \******************************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +!function(e,t){ true?module.exports=t(__webpack_require__(/*! vue */ "./node_modules/vue/dist/vue.runtime.esm.js")):undefined}(window,function(e){return function(e){var t={};function n(i){if(t[i])return t[i].exports;var o=t[i]={i:i,l:!1,exports:{}};return e[i].call(o.exports,o,o.exports,n),o.l=!0,o.exports}return n.m=e,n.c=t,n.d=function(e,t,i){n.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:i})},n.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},n.t=function(e,t){if(1&t&&(e=n(e)),8&t)return e;if(4&t&&"object"==typeof e&&e&&e.__esModule)return e;var i=Object.create(null);if(n.r(i),Object.defineProperty(i,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var o in e)n.d(i,o,function(t){return e[t]}.bind(null,o));return i},n.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return n.d(t,"a",t),t},n.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},n.p="/dist/",n(n.s=111)}({0:function(e,t,n){"use strict";function i(e,t,n,i,o,A,r,a){var s,c="function"==typeof e?e.options:e;if(t&&(c.render=t,c.staticRenderFns=n,c._compiled=!0),i&&(c.functional=!0),A&&(c._scopeId="data-v-"+A),r?(s=function(e){(e=e||this.$vnode&&this.$vnode.ssrContext||this.parent&&this.parent.$vnode&&this.parent.$vnode.ssrContext)||"undefined"==typeof __VUE_SSR_CONTEXT__||(e=__VUE_SSR_CONTEXT__),o&&o.call(this,e),e&&e._registeredComponents&&e._registeredComponents.add(r)},c._ssrRegister=s):o&&(s=a?function(){o.call(this,this.$root.$options.shadowRoot)}:o),s)if(c.functional){c._injectStyles=s;var d=c.render;c.render=function(e,t){return s.call(t),d(e,t)}}else{var l=c.beforeCreate;c.beforeCreate=l?[].concat(l,s):[s]}return{exports:e,options:c}}n.d(t,"a",function(){return i})},1:function(e,t,n){"use strict";e.exports=function(e){var t=[];return t.toString=function(){return this.map(function(t){var n=function(e,t){var n=e[1]||"",i=e[3];if(!i)return n;if(t&&"function"==typeof btoa){var o=(r=i,"/*# sourceMappingURL=data:application/json;charset=utf-8;base64,"+btoa(unescape(encodeURIComponent(JSON.stringify(r))))+" */"),A=i.sources.map(function(e){return"/*# sourceURL="+i.sourceRoot+e+" */"});return[n].concat(A).concat([o]).join("\n")}var r;return[n].join("\n")}(t,e);return t[2]?"@media "+t[2]+"{"+n+"}":n}).join("")},t.i=function(e,n){"string"==typeof e&&(e=[[null,e,""]]);for(var i={},o=0;o=0){o=1;break}var r=n&&window.Promise?function(e){var t=!1;return function(){t||(t=!0,window.Promise.resolve().then(function(){t=!1,e()}))}}:function(e){var t=!1;return function(){t||(t=!0,setTimeout(function(){t=!1,e()},o))}};function a(e){return e&&"[object Function]"==={}.toString.call(e)}function s(e,t){if(1!==e.nodeType)return[];var n=e.ownerDocument.defaultView.getComputedStyle(e,null);return t?n[t]:n}function c(e){return"HTML"===e.nodeName?e:e.parentNode||e.host}function d(e){if(!e)return document.body;switch(e.nodeName){case"HTML":case"BODY":return e.ownerDocument.body;case"#document":return e.body}var t=s(e),n=t.overflow,i=t.overflowX,o=t.overflowY;return/(auto|scroll|overlay)/.test(n+o+i)?e:d(c(e))}var l=n&&!(!window.MSInputMethodContext||!document.documentMode),u=n&&/MSIE 10/.test(navigator.userAgent);function p(e){return 11===e?l:10===e?u:l||u}function f(e){if(!e)return document.documentElement;for(var t=p(10)?document.body:null,n=e.offsetParent||null;n===t&&e.nextElementSibling;)n=(e=e.nextElementSibling).offsetParent;var i=n&&n.nodeName;return i&&"BODY"!==i&&"HTML"!==i?-1!==["TH","TD","TABLE"].indexOf(n.nodeName)&&"static"===s(n,"position")?f(n):n:e?e.ownerDocument.documentElement:document.documentElement}function h(e){return null!==e.parentNode?h(e.parentNode):e}function v(e,t){if(!(e&&e.nodeType&&t&&t.nodeType))return document.documentElement;var n=e.compareDocumentPosition(t)&Node.DOCUMENT_POSITION_FOLLOWING,i=n?e:t,o=n?t:e,A=document.createRange();A.setStart(i,0),A.setEnd(o,0);var r,a,s=A.commonAncestorContainer;if(e!==s&&t!==s||i.contains(o))return"BODY"===(a=(r=s).nodeName)||"HTML"!==a&&f(r.firstElementChild)!==r?f(s):s;var c=h(e);return c.host?v(c.host,t):v(e,h(t).host)}function g(e){var t="top"===(arguments.length>1&&void 0!==arguments[1]?arguments[1]:"top")?"scrollTop":"scrollLeft",n=e.nodeName;if("BODY"===n||"HTML"===n){var i=e.ownerDocument.documentElement;return(e.ownerDocument.scrollingElement||i)[t]}return e[t]}function m(e,t){var n="x"===t?"Left":"Top",i="Left"===n?"Right":"Bottom";return parseFloat(e["border"+n+"Width"],10)+parseFloat(e["border"+i+"Width"],10)}function b(e,t,n,i){return Math.max(t["offset"+e],t["scroll"+e],n["client"+e],n["offset"+e],n["scroll"+e],p(10)?parseInt(n["offset"+e])+parseInt(i["margin"+("Height"===e?"Top":"Left")])+parseInt(i["margin"+("Height"===e?"Bottom":"Right")]):0)}function y(e){var t=e.body,n=e.documentElement,i=p(10)&&getComputedStyle(n);return{height:b("Height",t,n,i),width:b("Width",t,n,i)}}var w=function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")},_=function(){function e(e,t){for(var n=0;n2&&void 0!==arguments[2]&&arguments[2],i=p(10),o="HTML"===t.nodeName,A=C(e),r=C(t),a=d(e),c=s(t),l=parseFloat(c.borderTopWidth,10),u=parseFloat(c.borderLeftWidth,10);n&&o&&(r.top=Math.max(r.top,0),r.left=Math.max(r.left,0));var f=B({top:A.top-r.top-l,left:A.left-r.left-u,width:A.width,height:A.height});if(f.marginTop=0,f.marginLeft=0,!i&&o){var h=parseFloat(c.marginTop,10),v=parseFloat(c.marginLeft,10);f.top-=l-h,f.bottom-=l-h,f.left-=u-v,f.right-=u-v,f.marginTop=h,f.marginLeft=v}return(i&&!n?t.contains(a):t===a&&"BODY"!==a.nodeName)&&(f=function(e,t){var n=arguments.length>2&&void 0!==arguments[2]&&arguments[2],i=g(t,"top"),o=g(t,"left"),A=n?-1:1;return e.top+=i*A,e.bottom+=i*A,e.left+=o*A,e.right+=o*A,e}(f,t)),f}function x(e){if(!e||!e.parentElement||p())return document.documentElement;for(var t=e.parentElement;t&&"none"===s(t,"transform");)t=t.parentElement;return t||document.documentElement}function M(e,t,n,i){var o=arguments.length>4&&void 0!==arguments[4]&&arguments[4],A={top:0,left:0},r=o?x(e):v(e,t);if("viewport"===i)A=function(e){var t=arguments.length>1&&void 0!==arguments[1]&&arguments[1],n=e.ownerDocument.documentElement,i=I(e,n),o=Math.max(n.clientWidth,window.innerWidth||0),A=Math.max(n.clientHeight,window.innerHeight||0),r=t?0:g(n),a=t?0:g(n,"left");return B({top:r-i.top+i.marginTop,left:a-i.left+i.marginLeft,width:o,height:A})}(r,o);else{var a=void 0;"scrollParent"===i?"BODY"===(a=d(c(t))).nodeName&&(a=e.ownerDocument.documentElement):a="window"===i?e.ownerDocument.documentElement:i;var l=I(a,r,o);if("HTML"!==a.nodeName||function e(t){var n=t.nodeName;if("BODY"===n||"HTML"===n)return!1;if("fixed"===s(t,"position"))return!0;var i=c(t);return!!i&&e(i)}(r))A=l;else{var u=y(e.ownerDocument),p=u.height,f=u.width;A.top+=l.top-l.marginTop,A.bottom=p+l.top,A.left+=l.left-l.marginLeft,A.right=f+l.left}}var h="number"==typeof(n=n||0);return A.left+=h?n:n.left||0,A.top+=h?n:n.top||0,A.right-=h?n:n.right||0,A.bottom-=h?n:n.bottom||0,A}function N(e,t,n,i,o){var A=arguments.length>5&&void 0!==arguments[5]?arguments[5]:0;if(-1===e.indexOf("auto"))return e;var r=M(n,i,A,o),a={top:{width:r.width,height:t.top-r.top},right:{width:r.right-t.right,height:r.height},bottom:{width:r.width,height:r.bottom-t.bottom},left:{width:t.left-r.left,height:r.height}},s=Object.keys(a).map(function(e){return T({key:e},a[e],{area:(t=a[e],t.width*t.height)});var t}).sort(function(e,t){return t.area-e.area}),c=s.filter(function(e){var t=e.width,i=e.height;return t>=n.clientWidth&&i>=n.clientHeight}),d=c.length>0?c[0].key:s[0].key,l=e.split("-")[1];return d+(l?"-"+l:"")}function O(e,t,n){var i=arguments.length>3&&void 0!==arguments[3]?arguments[3]:null;return I(n,i?x(t):v(t,n),i)}function k(e){var t=e.ownerDocument.defaultView.getComputedStyle(e),n=parseFloat(t.marginTop||0)+parseFloat(t.marginBottom||0),i=parseFloat(t.marginLeft||0)+parseFloat(t.marginRight||0);return{width:e.offsetWidth+i,height:e.offsetHeight+n}}function D(e){var t={left:"right",right:"left",bottom:"top",top:"bottom"};return e.replace(/left|right|bottom|top/g,function(e){return t[e]})}function S(e,t,n){n=n.split("-")[0];var i=k(e),o={width:i.width,height:i.height},A=-1!==["right","left"].indexOf(n),r=A?"top":"left",a=A?"left":"top",s=A?"height":"width",c=A?"width":"height";return o[r]=t[r]+t[s]/2-i[s]/2,o[a]=n===a?t[a]-i[c]:t[D(a)],o}function L(e,t){return Array.prototype.find?e.find(t):e.filter(t)[0]}function Q(e,t,n){return(void 0===n?e:e.slice(0,function(e,t,n){if(Array.prototype.findIndex)return e.findIndex(function(e){return e[t]===n});var i=L(e,function(e){return e[t]===n});return e.indexOf(i)}(e,"name",n))).forEach(function(e){e.function&&console.warn("`modifier.function` is deprecated, use `modifier.fn`!");var n=e.function||e.fn;e.enabled&&a(n)&&(t.offsets.popper=B(t.offsets.popper),t.offsets.reference=B(t.offsets.reference),t=n(t,e))}),t}function G(e,t){return e.some(function(e){var n=e.name;return e.enabled&&n===t})}function j(e){for(var t=[!1,"ms","Webkit","Moz","O"],n=e.charAt(0).toUpperCase()+e.slice(1),i=0;i1&&void 0!==arguments[1]&&arguments[1],n=W.indexOf(e),i=W.slice(n+1).concat(W.slice(0,n));return t?i.reverse():i}var V={FLIP:"flip",CLOCKWISE:"clockwise",COUNTERCLOCKWISE:"counterclockwise"};function X(e,t,n,i){var o=[0,0],A=-1!==["right","left"].indexOf(i),r=e.split(/(\+|\-)/).map(function(e){return e.trim()}),a=r.indexOf(L(r,function(e){return-1!==e.search(/,|\s/)}));r[a]&&-1===r[a].indexOf(",")&&console.warn("Offsets separated by white space(s) are deprecated, use a comma (,) instead.");var s=/\s*,\s*|\s+/,c=-1!==a?[r.slice(0,a).concat([r[a].split(s)[0]]),[r[a].split(s)[1]].concat(r.slice(a+1))]:[r];return(c=c.map(function(e,i){var o=(1===i?!A:A)?"height":"width",r=!1;return e.reduce(function(e,t){return""===e[e.length-1]&&-1!==["+","-"].indexOf(t)?(e[e.length-1]=t,r=!0,e):r?(e[e.length-1]+=t,r=!1,e):e.concat(t)},[]).map(function(e){return function(e,t,n,i){var o=e.match(/((?:\-|\+)?\d*\.?\d*)(.*)/),A=+o[1],r=o[2];if(!A)return e;if(0===r.indexOf("%")){var a=void 0;switch(r){case"%p":a=n;break;case"%":case"%r":default:a=i}return B(a)[t]/100*A}if("vh"===r||"vw"===r)return("vh"===r?Math.max(document.documentElement.clientHeight,window.innerHeight||0):Math.max(document.documentElement.clientWidth,window.innerWidth||0))/100*A;return A}(e,o,t,n)})})).forEach(function(e,t){e.forEach(function(n,i){F(n)&&(o[t]+=n*("-"===e[i-1]?-1:1))})}),o}var J={placement:"bottom",positionFixed:!1,eventsEnabled:!0,removeOnDestroy:!1,onCreate:function(){},onUpdate:function(){},modifiers:{shift:{order:100,enabled:!0,fn:function(e){var t=e.placement,n=t.split("-")[0],i=t.split("-")[1];if(i){var o=e.offsets,A=o.reference,r=o.popper,a=-1!==["bottom","top"].indexOf(n),s=a?"left":"top",c=a?"width":"height",d={start:E({},s,A[s]),end:E({},s,A[s]+A[c]-r[c])};e.offsets.popper=T({},r,d[i])}return e}},offset:{order:200,enabled:!0,fn:function(e,t){var n=t.offset,i=e.placement,o=e.offsets,A=o.popper,r=o.reference,a=i.split("-")[0],s=void 0;return s=F(+n)?[+n,0]:X(n,A,r,a),"left"===a?(A.top+=s[0],A.left-=s[1]):"right"===a?(A.top+=s[0],A.left+=s[1]):"top"===a?(A.left+=s[0],A.top-=s[1]):"bottom"===a&&(A.left+=s[0],A.top+=s[1]),e.popper=A,e},offset:0},preventOverflow:{order:300,enabled:!0,fn:function(e,t){var n=t.boundariesElement||f(e.instance.popper);e.instance.reference===n&&(n=f(n));var i=j("transform"),o=e.instance.popper.style,A=o.top,r=o.left,a=o[i];o.top="",o.left="",o[i]="";var s=M(e.instance.popper,e.instance.reference,t.padding,n,e.positionFixed);o.top=A,o.left=r,o[i]=a,t.boundaries=s;var c=t.priority,d=e.offsets.popper,l={primary:function(e){var n=d[e];return d[e]s[e]&&!t.escapeWithReference&&(i=Math.min(d[n],s[e]-("right"===e?d.width:d.height))),E({},n,i)}};return c.forEach(function(e){var t=-1!==["left","top"].indexOf(e)?"primary":"secondary";d=T({},d,l[t](e))}),e.offsets.popper=d,e},priority:["left","right","top","bottom"],padding:5,boundariesElement:"scrollParent"},keepTogether:{order:400,enabled:!0,fn:function(e){var t=e.offsets,n=t.popper,i=t.reference,o=e.placement.split("-")[0],A=Math.floor,r=-1!==["top","bottom"].indexOf(o),a=r?"right":"bottom",s=r?"left":"top",c=r?"width":"height";return n[a]A(i[a])&&(e.offsets.popper[s]=A(i[a])),e}},arrow:{order:500,enabled:!0,fn:function(e,t){var n;if(!z(e.instance.modifiers,"arrow","keepTogether"))return e;var i=t.element;if("string"==typeof i){if(!(i=e.instance.popper.querySelector(i)))return e}else if(!e.instance.popper.contains(i))return console.warn("WARNING: `arrow.element` must be child of its popper element!"),e;var o=e.placement.split("-")[0],A=e.offsets,r=A.popper,a=A.reference,c=-1!==["left","right"].indexOf(o),d=c?"height":"width",l=c?"Top":"Left",u=l.toLowerCase(),p=c?"left":"top",f=c?"bottom":"right",h=k(i)[d];a[f]-hr[f]&&(e.offsets.popper[u]+=a[u]+h-r[f]),e.offsets.popper=B(e.offsets.popper);var v=a[u]+a[d]/2-h/2,g=s(e.instance.popper),m=parseFloat(g["margin"+l],10),b=parseFloat(g["border"+l+"Width"],10),y=v-e.offsets.popper[u]-m-b;return y=Math.max(Math.min(r[d]-h,y),0),e.arrowElement=i,e.offsets.arrow=(E(n={},u,Math.round(y)),E(n,p,""),n),e},element:"[x-arrow]"},flip:{order:600,enabled:!0,fn:function(e,t){if(G(e.instance.modifiers,"inner"))return e;if(e.flipped&&e.placement===e.originalPlacement)return e;var n=M(e.instance.popper,e.instance.reference,t.padding,t.boundariesElement,e.positionFixed),i=e.placement.split("-")[0],o=D(i),A=e.placement.split("-")[1]||"",r=[];switch(t.behavior){case V.FLIP:r=[i,o];break;case V.CLOCKWISE:r=Z(i);break;case V.COUNTERCLOCKWISE:r=Z(i,!0);break;default:r=t.behavior}return r.forEach(function(a,s){if(i!==a||r.length===s+1)return e;i=e.placement.split("-")[0],o=D(i);var c=e.offsets.popper,d=e.offsets.reference,l=Math.floor,u="left"===i&&l(c.right)>l(d.left)||"right"===i&&l(c.left)l(d.top)||"bottom"===i&&l(c.top)l(n.right),h=l(c.top)l(n.bottom),g="left"===i&&p||"right"===i&&f||"top"===i&&h||"bottom"===i&&v,m=-1!==["top","bottom"].indexOf(i),b=!!t.flipVariations&&(m&&"start"===A&&p||m&&"end"===A&&f||!m&&"start"===A&&h||!m&&"end"===A&&v),y=!!t.flipVariationsByContent&&(m&&"start"===A&&f||m&&"end"===A&&p||!m&&"start"===A&&v||!m&&"end"===A&&h),w=b||y;(u||g||w)&&(e.flipped=!0,(u||g)&&(i=r[s+1]),w&&(A=function(e){return"end"===e?"start":"start"===e?"end":e}(A)),e.placement=i+(A?"-"+A:""),e.offsets.popper=T({},e.offsets.popper,S(e.instance.popper,e.offsets.reference,e.placement)),e=Q(e.instance.modifiers,e,"flip"))}),e},behavior:"flip",padding:5,boundariesElement:"viewport",flipVariations:!1,flipVariationsByContent:!1},inner:{order:700,enabled:!1,fn:function(e){var t=e.placement,n=t.split("-")[0],i=e.offsets,o=i.popper,A=i.reference,r=-1!==["left","right"].indexOf(n),a=-1===["top","left"].indexOf(n);return o[r?"left":"top"]=A[n]-(a?o[r?"width":"height"]:0),e.placement=D(t),e.offsets.popper=B(o),e}},hide:{order:800,enabled:!0,fn:function(e){if(!z(e.instance.modifiers,"hide","preventOverflow"))return e;var t=e.offsets.reference,n=L(e.instance.modifiers,function(e){return"preventOverflow"===e.name}).boundaries;if(t.bottomn.right||t.top>n.bottom||t.right2&&void 0!==arguments[2]?arguments[2]:{};w(this,e),this.scheduleUpdate=function(){return requestAnimationFrame(i.update)},this.update=r(this.update.bind(this)),this.options=T({},e.Defaults,o),this.state={isDestroyed:!1,isCreated:!1,scrollParents:[]},this.reference=t&&t.jquery?t[0]:t,this.popper=n&&n.jquery?n[0]:n,this.options.modifiers={},Object.keys(T({},e.Defaults.modifiers,o.modifiers)).forEach(function(t){i.options.modifiers[t]=T({},e.Defaults.modifiers[t]||{},o.modifiers?o.modifiers[t]:{})}),this.modifiers=Object.keys(this.options.modifiers).map(function(e){return T({name:e},i.options.modifiers[e])}).sort(function(e,t){return e.order-t.order}),this.modifiers.forEach(function(e){e.enabled&&a(e.onLoad)&&e.onLoad(i.reference,i.popper,i.options,e,i.state)}),this.update();var A=this.options.eventsEnabled;A&&this.enableEventListeners(),this.state.eventsEnabled=A}return _(e,[{key:"update",value:function(){return function(){if(!this.state.isDestroyed){var e={instance:this,styles:{},arrowStyles:{},attributes:{},flipped:!1,offsets:{}};e.offsets.reference=O(this.state,this.popper,this.reference,this.options.positionFixed),e.placement=N(this.options.placement,e.offsets.reference,this.popper,this.reference,this.options.modifiers.flip.boundariesElement,this.options.modifiers.flip.padding),e.originalPlacement=e.placement,e.positionFixed=this.options.positionFixed,e.offsets.popper=S(this.popper,e.offsets.reference,e.placement),e.offsets.popper.position=this.options.positionFixed?"fixed":"absolute",e=Q(this.modifiers,e),this.state.isCreated?this.options.onUpdate(e):(this.state.isCreated=!0,this.options.onCreate(e))}}.call(this)}},{key:"destroy",value:function(){return function(){return this.state.isDestroyed=!0,G(this.modifiers,"applyStyle")&&(this.popper.removeAttribute("x-placement"),this.popper.style.position="",this.popper.style.top="",this.popper.style.left="",this.popper.style.right="",this.popper.style.bottom="",this.popper.style.willChange="",this.popper.style[j("transform")]=""),this.disableEventListeners(),this.options.removeOnDestroy&&this.popper.parentNode.removeChild(this.popper),this}.call(this)}},{key:"enableEventListeners",value:function(){return function(){this.state.eventsEnabled||(this.state=Y(this.reference,this.options,this.state,this.scheduleUpdate))}.call(this)}},{key:"disableEventListeners",value:function(){return R.call(this)}}]),e}();K.Utils=("undefined"!=typeof window?window:e).PopperUtils,K.placements=$,K.Defaults=J,t.a=K}).call(this,n(7))},11:function(e,t,n){"use strict";e.exports=function(e,t){return"string"!=typeof e?e:(/^['"].*['"]$/.test(e)&&(e=e.slice(1,-1)),/["'() \t\n]/.test(e)||t?'"'+e.replace(/"/g,'\\"').replace(/\n/g,"\\n")+'"':e)}},111:function(e,t,n){"use strict";n.r(t);var i={name:"AppSidebar",components:{Actions:n(28).default},props:{active:{type:String,default:""},title:{type:String,default:"",required:!0},subtitle:{type:String,default:""},background:{type:String,default:""},starred:{type:Boolean,default:null},starLoading:{type:Boolean,default:!1}},data:function(){return{tabs:[],activeTab:"",isStarred:this.starred}},computed:{canStar:function(){return null!==this.isStarred},hasFigure:function(){return this.$slots.header||this.background},hasMultipleTabs:function(){return this.tabs.length>1},currentTabIndex:function(){var e=this;return this.tabs.findIndex(function(t){return t.id===e.activeTab})}},watch:{active:function(e){e!==this.activeTab&&this.updateActive()},starred:function(){this.isStarred=this.starred}},mounted:function(){this.tabs=this.$children.reduce(function(e,t){return t.name&&"string"==typeof t.name&&t.id&&"string"==typeof t.id&&-1===t.id.indexOf(" ")&&t.icon&&"string"==typeof t.icon&&-1===t.icon.indexOf(" ")&&e.push(t),e},[]),this.tabs.length>0&&this.updateActive()},methods:{closeSidebar:function(){this.$emit("close")},setActive:function(e){var t=e.target.dataset.id;this.activeTab=t,this.$emit("update:active",t)},focusPreviousTab:function(e){this.currentTabIndex>0&&(this.activeTab=this.tabs[this.currentTabIndex-1].id,this.$emit("update:active",this.activeTab)),this.focusActiveTab()},focusNextTab:function(e){this.currentTabIndex + * + * @author 2019 Christoph Wurst + * + * @license GNU AGPL version 3 or any later version + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License as + * published by the Free Software Foundation, either version 3 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with this program. If not, see . + */t.default=A},12:function(e,t){e.exports="data:application/vnd.ms-fontobject;base64,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"},13:function(e,t){e.exports="data:font/woff;base64,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"},134:function(e,t,n){"use strict";var i=n(48);n.n(i).a},135:function(e,t,n){(e.exports=n(1)(!1)).push([e.i,'@charset "UTF-8";\n/**\n * @copyright Copyright (c) 2019 John Molakvoæ \n *\n * @author John Molakvoæ \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 .\n *\n */\n/* popovermenu arrow width from the triangle center */\n/* opacities */\n/*\n\tSidebar: to be used within #content\n\t#app-content will be shrinked properly\n*/\n#app-sidebar[data-v-5cac7edf] {\n z-index: 1500;\n height: calc(100vh - 50px);\n width: 27vw;\n min-width: 300px;\n max-width: 500px;\n top: 50px;\n right: 0;\n display: flex;\n flex-shrink: 0;\n flex-direction: column;\n position: -webkit-sticky;\n position: sticky;\n overflow-y: auto;\n overflow-x: hidden;\n background: var(--color-main-background);\n border-left: 1px solid var(--color-border);\n}\n#app-sidebar .app-sidebar-header > .icon-close[data-v-5cac7edf] {\n position: absolute;\n width: 44px;\n height: 44px;\n top: 0;\n right: 0;\n z-index: 1000;\n opacity: 0.7;\n}\n#app-sidebar .app-sidebar-header > .icon-close[data-v-5cac7edf]:hover, #app-sidebar .app-sidebar-header > .icon-close[data-v-5cac7edf]:active, #app-sidebar .app-sidebar-header > .icon-close[data-v-5cac7edf]:focus {\n opacity: 1;\n}\n#app-sidebar .app-sidebar-header__figure[data-v-5cac7edf] {\n max-height: 250px;\n height: 250px;\n width: 100%;\n background-size: contain;\n background-position: center;\n background-repeat: no-repeat;\n}\n#app-sidebar .app-sidebar-header__desc[data-v-5cac7edf] {\n position: relative;\n padding: 18px 88px 18px 10px;\n}\n#app-sidebar .app-sidebar-header__desc--with-star[data-v-5cac7edf] {\n padding-left: 44px;\n}\n#app-sidebar .app-sidebar-header__desc h3[data-v-5cac7edf], #app-sidebar .app-sidebar-header__desc h4[data-v-5cac7edf] {\n width: 100%;\n white-space: nowrap;\n text-overflow: ellipsis;\n overflow: hidden;\n margin: 0;\n}\n#app-sidebar .app-sidebar-header__desc h3[data-v-5cac7edf] {\n font-size: 16px;\n padding: 0;\n}\n#app-sidebar .app-sidebar-header__desc h3 + h4[data-v-5cac7edf] {\n padding-top: 10px;\n}\n#app-sidebar .app-sidebar-header__desc h4[data-v-5cac7edf] {\n font-size: 14px;\n padding: 0;\n opacity: 0.7;\n}\n#app-sidebar .app-sidebar-header__desc .app-sidebar-header__star[data-v-5cac7edf] {\n display: block;\n width: 44px;\n height: 44px;\n padding: 14px;\n position: absolute;\n top: 6px;\n left: 0;\n}\n#app-sidebar .app-sidebar-header__desc .app-sidebar-header__menu[data-v-5cac7edf] {\n position: absolute;\n right: 22px;\n top: 50%;\n margin-top: -22px;\n background-color: var(--color-background-dark);\n border-radius: 22px;\n}\n#app-sidebar .app-sidebar-header__action[data-v-5cac7edf] {\n display: flex;\n margin: 10px;\n max-height: 50px;\n align-items: center;\n}\n#app-sidebar .app-sidebar-header:not(.app-sidebar-header--with-figure) .app-sidebar-header__menu[data-v-5cac7edf] {\n background-color: transparent;\n top: 0;\n right: 44px;\n margin-top: 0;\n}\n#app-sidebar .app-sidebar-tabs__nav[data-v-5cac7edf] {\n margin-top: 10px;\n}\n#app-sidebar .app-sidebar-tabs__nav ul[data-v-5cac7edf] {\n display: flex;\n justify-content: stretch;\n}\n#app-sidebar .app-sidebar-tabs__tab[data-v-5cac7edf] {\n display: block;\n text-align: center;\n flex: 1 1;\n}\n#app-sidebar .app-sidebar-tabs__tab a[data-v-5cac7edf] {\n background-position: center 8px;\n background-size: 16px;\n display: block;\n padding-top: 30px;\n border-bottom: 1px solid var(--color-main-background);\n text-align: center;\n opacity: 0.7;\n color: var(--color-main-text);\n transition: opacity var(--animation-quick), border-color var(--animation-quick);\n}\n#app-sidebar .app-sidebar-tabs__tab a[data-v-5cac7edf]:hover, #app-sidebar .app-sidebar-tabs__tab a[data-v-5cac7edf]:focus, #app-sidebar .app-sidebar-tabs__tab a[data-v-5cac7edf]:active, #app-sidebar .app-sidebar-tabs__tab a.active[data-v-5cac7edf] {\n opacity: 1;\n}\n#app-sidebar .app-sidebar-tabs__tab a[data-v-5cac7edf]:active, #app-sidebar .app-sidebar-tabs__tab a.active[data-v-5cac7edf] {\n border-bottom-color: var(--color-main-text);\n}\n#app-sidebar .app-sidebar-tabs__tab a[data-v-5cac7edf]:focus {\n border-bottom-color: var(--color-primary);\n}\n#app-sidebar .app-sidebar-tabs__content[data-v-5cac7edf] {\n position: relative;\n flex: 1 1 100%;\n}\n#app-sidebar .app-sidebar-tabs__content--multiple[data-v-5cac7edf] > :not(section) {\n display: none;\n}\n.slide-right-leave-active[data-v-5cac7edf],\n.slide-right-enter-active[data-v-5cac7edf] {\n transition-duration: var(--animation-quick);\n transition-property: max-width, min-width;\n}\n.slide-right-enter-to[data-v-5cac7edf],\n.slide-right-leave[data-v-5cac7edf] {\n min-width: 300px;\n max-width: 500px;\n}\n.slide-right-enter[data-v-5cac7edf],\n.slide-right-leave-to[data-v-5cac7edf] {\n min-width: 0 !important;\n max-width: 0 !important;\n}\n.fade-leave-active[data-v-5cac7edf],\n.fade-enter-active[data-v-5cac7edf] {\n transition-duration: var(--animation-quick);\n transition-property: opacity;\n position: absolute;\n top: 0;\n left: 0;\n width: 100%;\n opacity: 1;\n}\n.fade-enter[data-v-5cac7edf],\n.fade-leave-to[data-v-5cac7edf] {\n opacity: 0;\n}\n',""])},136:function(e,t,n){"use strict";var i=n(49);n.n(i).a},137:function(e,t,n){(e.exports=n(1)(!1)).push([e.i,"@charset \"UTF-8\";\n/**\n * @copyright Copyright (c) 2019 John Molakvoæ \n *\n * @author John Molakvoæ \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 .\n *\n */\n/* popovermenu arrow width from the triangle center */\n/* opacities */\n.app-sidebar-header__action button, .app-sidebar-header__action .button,\n.app-sidebar-header__action input[type='button'],\n.app-sidebar-header__action input[type='submit'],\n.app-sidebar-header__action input[type='reset'] {\n padding: 6px 22px;\n}\n",""])},14:function(e,t){e.exports="data:font/ttf;base64,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"},15:function(e,t){e.exports="data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBzdGFuZGFsb25lPSJubyI/PjwhRE9DVFlQRSBzdmcgUFVCTElDICItLy9XM0MvL0RURCBTVkcgMS4xLy9FTiIgImh0dHA6Ly93d3cudzMub3JnL0dyYXBoaWNzL1NWRy8xLjEvRFREL3N2ZzExLmR0ZCIgPjxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj48bWV0YWRhdGE+PC9tZXRhZGF0YT48ZGVmcz48Zm9udCBpZD0iaWNvbmZvbnQtdnVlIiBob3Jpei1hZHYteD0iNTAwMCI+PGZvbnQtZmFjZSBmb250LWZhbWlseT0iaWNvbmZvbnQtdnVlIiBmb250LXdlaWdodD0iNDAwIiBmb250LXN0cmV0Y2g9Im5vcm1hbCIgdW5pdHMtcGVyLWVtPSI1MDAwIiBwYW5vc2UtMT0iMiAwIDUgMyAwIDAgMCAwIDAgMCIgYXNjZW50PSI1MDAwIiBkZXNjZW50PSIwIiB4LWhlaWdodD0iMCIgYmJveD0iLTEgMCA1MDExIDQ4NDQiIHVuZGVybGluZS10aGlja25lc3M9IjAiIHVuZGVybGluZS1wb3NpdGlvbj0iNTAiIHVuaWNvZGUtcmFuZ2U9IlUrZWEwMS1lYTBiIiAvPjxtaXNzaW5nLWdseXBoIGhvcml6LWFkdi14PSIwIiAgLz48Z2x5cGggZ2x5cGgtbmFtZT0iYXJyb3ctbGVmdC1kb3VibGUiIHVuaWNvZGU9IiYjeGVhMDE7IiBkPSJNMzc1MCAzOTA2IGwtMTQwNiAtMTQwNiBsMTQwNiAtMTQwNiBsMCAzMTIgbC0xMDk0IDEwOTQgbDEwOTQgMTA5NCBsMCAzMTIgWk0yMzQ0IDM5MDYgbC0xNDA2IC0xNDA2IGwxNDA2IC0xNDA2IGwwIDMxMiBsLTEwOTQgMTA5NCBsMTA5NCAxMDk0IGwwIDMxMiBaIiAvPjxnbHlwaCBnbHlwaC1uYW1lPSJhcnJvdy1sZWZ0IiB1bmljb2RlPSImI3hlYTAyOyIgZD0iTTE1NjMgMjUwMCBsMTg3NSAtMTg3NSBsMCAtMzEyIGwtMjE4OCAyMTg3IGwyMTg4IDIxODggbDAgLTMxMyBsLTE4NzUgLTE4NzUgWiIgLz48Z2x5cGggZ2x5cGgtbmFtZT0iYXJyb3ctcmlnaHQtZG91YmxlIiB1bmljb2RlPSImI3hlYTAzOyIgZD0iTTEyNTAgMTA5NCBsMTQwNiAxNDA2IGwtMTQwNiAxNDA2IGwwIC0zMTIgbDEwOTQgLTEwOTQgbC0xMDk0IC0xMDk0IGwwIC0zMTIgWk0yNjU2IDEwOTQgbDE0MDcgMTQwNiBsLTE0MDcgMTQwNiBsMCAtMzEyIGwxMDk0IC0xMDk0IGwtMTA5NCAtMTA5NCBsMCAtMzEyIFoiIC8+PGdseXBoIGdseXBoLW5hbWU9ImFycm93LXJpZ2h0IiB1bmljb2RlPSImI3hlYTA0OyIgZD0iTTM0MzggMjUwMCBsLTE4NzUgMTg3NSBsMCAzMTMgbDIxODcgLTIxODggbC0yMTg3IC0yMTg3IGwwIDMxMiBsMTg3NSAxODc1IFoiIC8+PGdseXBoIGdseXBoLW5hbWU9ImNsb3NlIiB1bmljb2RlPSImI3hlYTA1OyIgZD0iTTQzNzUgMTE1NiBsLTUzMSAtNTMxIGwtMTM0NCAxMzQ0IGwtMTM0NCAtMTM0NCBsLTUzMSA1MzEgbDEzNDQgMTM0NCBsLTEzNDQgMTM0NCBsNTMxIDUzMSBsMTM0NCAtMTM0NCBsMTM0NCAxMzQ0IGw1MzEgLTUzMSBsLTEzNDQgLTEzNDQgbDEzNDQgLTEzNDQgWiIgLz48Z2x5cGggZ2x5cGgtbmFtZT0iY29uZmlybS1mYWRlIiB1bmljb2RlPSImI3hlYTA2OyYjeGVhMDc7IiBkPSJNMjY1NiA0ODQ0IHEtMTAxIDAgLTE4MCAtNTcgcS03NCAtNTIgLTEwOSAtMTM4IHEtMzUgLTg2IC0xOSAtMTc1IHExOCAtOTYgOTAgLTE2NyBsMTQ5NSAtMTQ5NCBsLTM2MTYgMCBxLTc3IDEgLTEzOSAtMjYgcS01OCAtMjQgLTk5IC03MCBxLTM5IC00NCAtNTkgLTEwMSBxLTIwIC01NiAtMjAgLTExNiBxMCAtNjAgMjAgLTExNiBxMjAgLTU3IDU5IC0xMDEgcTQxIC00NiA5OSAtNzAgcTYyIC0yNyAxMzkgLTI1IGwzNjE2IDAgbC0xNDk1IC0xNDk1IHEtNTUgLTUzIC04MSAtMTE2IHEtMjQgLTU5IC0yMSAtMTIxIHEzIC01OCAzMCAtMTEzIHEyNSAtNTQgNjggLTk3IHE0MyAtNDMgOTYgLTY4IHE1NSAtMjYgMTE0IC0yOSBxNjIgLTMgMTIwIDIxIHE2MyAyNSAxMTYgODEgbDIwMjkgMjAyOCBxNTkgNjAgODAgMTQxIHEyMSA4MCAxIDE1OSBxLTIxIDgyIC04MSAxNDIgbC0yMDI5IDIwMjggcS00NCA0NSAtMTAyIDcwIHEtNTggMjUgLTEyMiAyNSBaIiAvPjxnbHlwaCBnbHlwaC1uYW1lPSJtZW51IiB1bmljb2RlPSImI3hlYTA4OyIgZD0iTTYyNSA0Mzc1IGwwIC02MjUgbDM3NTAgMCBsMCA2MjUgbC0zNzUwIDAgWk02MjUgMjgxMyBsMCAtNjI1IGwzNzUwIDAgbDAgNjI1IGwtMzc1MCAwIFpNNjI1IDEyNTAgbDAgLTYyNSBsMzc1MCAwIGwwIDYyNSBsLTM3NTAgMCBaIiAvPjxnbHlwaCBnbHlwaC1uYW1lPSJtb3JlIiB1bmljb2RlPSImI3hlYTA5OyIgZD0iTTkzOCAzMTI1IHEtMTI4IDAgLTI0NCAtNDkgcS0xMTIgLTQ4IC0xOTguNSAtMTM0LjUgcS04Ni41IC04Ni41IC0xMzMuNSAtMTk4LjUgcS01MCAtMTE2IC00OS41IC0yNDMgcTAuNSAtMTI3IDQ5LjUgLTI0MyBxNDcgLTExMiAxMzMuNSAtMTk4LjUgcTg2LjUgLTg2LjUgMTk4LjUgLTEzNC41IHExMTYgLTQ5IDI0My41IC00OSBxMTI3LjUgMCAyNDMuNSA0OSBxMTEyIDQ4IDE5OC41IDEzNC41IHE4Ni41IDg2LjUgMTMzLjUgMTk4LjUgcTUwIDExNiA1MCAyNDMgcTAgMTI3IC01MCAyNDMgcS00NyAxMTIgLTEzMy41IDE5OC41IHEtODYuNSA4Ni41IC0xOTguNSAxMzQuNSBxLTExNiA0OSAtMjQzIDQ5IFpNMjUwMCAzMTI1IHEtMTI3IDAgLTI0MyAtNDkgcS0xMTIgLTQ4IC0xOTguNSAtMTM0LjUgcS04Ni41IC04Ni41IC0xMzQuNSAtMTk4LjUgcS00OSAtMTE2IC00OSAtMjQzIHEwIC0xMjcgNDkgLTI0MyBxNDggLTExMiAxMzQuNSAtMTk4LjUgcTg2LjUgLTg2LjUgMTk4LjUgLTEzNC41IHExMTYgLTQ5IDI0MyAtNDkgcTEyNyAwIDI0MyA0OSBxMTEyIDQ4IDE5OC41IDEzNC41IHE4Ni41IDg2LjUgMTM0LjUgMTk4LjUgcTQ5IDExNiA0OSAyNDMgcTAgMTI3IC00OSAyNDMgcS00OCAxMTIgLTEzNC41IDE5OC41IHEtODYuNSA4Ni41IC0xOTguNSAxMzQuNSBxLTExNiA0OSAtMjQzIDQ5IFpNNDA2MyAzMTI1IHEtMTI4IDAgLTI0NCAtNDkgcS0xMTIgLTQ4IC0xOTguNSAtMTM0LjUgcS04Ni41IC04Ni41IC0xMzMuNSAtMTk4LjUgcS00OSAtMTE2IC00OSAtMjQzIHEwIC0xMjcgNDkgLTI0MyBxNDcgLTExMiAxMzMuNSAtMTk4LjUgcTg2LjUgLTg2LjUgMTk4LjUgLTEzNC41IHExMTYgLTQ5IDI0My41IC00OSBxMTI3LjUgMCAyNDMuNSA0OSBxMTEyIDQ4IDE5OC41IDEzNC41IHE4Ni41IDg2LjUgMTMzLjUgMTk4LjUgcTUwIDExNiA1MCAyNDMgcTAgMTI3IC01MCAyNDMgcS00NyAxMTIgLTEzMy41IDE5OC41IHEtODYuNSA4Ni41IC0xOTguNSAxMzQuNSBxLTExNiA0OSAtMjQzIDQ5IFoiIC8+PGdseXBoIGdseXBoLW5hbWU9InBhdXNlIiB1bmljb2RlPSImI3hlYTBhOyIgZD0iTTkzOCA0MDYzIGwwIC0zMTI1IGwxMjUwIDAgbDAgMzEyNSBsLTEyNTAgMCBaTTI4MTMgNDA2MyBsMCAtMzEyNSBsMTI1MCAwIGwwIDMxMjUgbC0xMjUwIDAgWiIgLz48Z2x5cGggZ2x5cGgtbmFtZT0icGxheSIgdW5pY29kZT0iJiN4ZWEwYjsiIGQ9Ik02MjUgNDM3NSBsMzc1MCAtMTg3NSBsLTM3NTAgLTE4NzUgbDAgMzc1MCBaIiAvPjwvZm9udD48L2RlZnM+PC9zdmc+"},2:function(e,t,n){"use strict";function i(e,t){for(var n=[],i={},o=0;on.parts.length&&(i.parts.length=n.parts.length)}else{var r=[];for(o=0;o + * + * @author John Molakvoæ + * + * @license GNU AGPL version 3 or any later version + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License as + * published by the Free Software Foundation, either version 3 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with this program. If not, see . + * + */t.a=function(e){return Math.random().toString(36).replace(/[^a-z]+/g,"").substr(0,e||5)}},21:function(e,t,n){"use strict";(function(e){n.d(t,"a",function(){return A});var i=void 0;function o(){o.init||(o.init=!0,i=-1!==function(){var e=window.navigator.userAgent,t=e.indexOf("MSIE ");if(t>0)return parseInt(e.substring(t+5,e.indexOf(".",t)),10);if(e.indexOf("Trident/")>0){var n=e.indexOf("rv:");return parseInt(e.substring(n+3,e.indexOf(".",n)),10)}var i=e.indexOf("Edge/");return i>0?parseInt(e.substring(i+5,e.indexOf(".",i)),10):-1}())}var A={render:function(){var e=this.$createElement;return(this._self._c||e)("div",{staticClass:"resize-observer",attrs:{tabindex:"-1"}})},staticRenderFns:[],_scopeId:"data-v-b329ee4c",name:"resize-observer",methods:{compareAndNotify:function(){this._w===this.$el.offsetWidth&&this._h===this.$el.offsetHeight||(this._w=this.$el.offsetWidth,this._h=this.$el.offsetHeight,this.$emit("notify"))},addResizeHandlers:function(){this._resizeObject.contentDocument.defaultView.addEventListener("resize",this.compareAndNotify),this.compareAndNotify()},removeResizeHandlers:function(){this._resizeObject&&this._resizeObject.onload&&(!i&&this._resizeObject.contentDocument&&this._resizeObject.contentDocument.defaultView.removeEventListener("resize",this.compareAndNotify),delete this._resizeObject.onload)}},mounted:function(){var e=this;o(),this.$nextTick(function(){e._w=e.$el.offsetWidth,e._h=e.$el.offsetHeight});var t=document.createElement("object");this._resizeObject=t,t.setAttribute("aria-hidden","true"),t.setAttribute("tabindex",-1),t.onload=this.addResizeHandlers,t.type="text/html",i&&this.$el.appendChild(t),t.data="about:blank",i||this.$el.appendChild(t)},beforeDestroy:function(){this.removeResizeHandlers()}};var r={version:"0.4.5",install:function(e){e.component("resize-observer",A),e.component("ResizeObserver",A)}},a=null;"undefined"!=typeof window?a=window.Vue:void 0!==e&&(a=e.Vue),a&&a.use(r)}).call(this,n(7))},22:function(e,t,n){var i=n(68);"string"==typeof i&&(i=[[e.i,i,""]]),i.locals&&(e.exports=i.locals);(0,n(2).default)("78c7dee6",i,!0,{})},28:function(e,t,n){"use strict";n.r(t);var i=n(6),o=n.n(i),A=n(5),r=n(20),a=function(e){var t=e.getBoundingClientRect(),n=document.documentElement.clientHeight,i=document.documentElement.clientWidth,o=Object.assign({});return o.top=t.top<0,o.left=t.left<0,o.bottom=t.bottom>n,o.right=t.right>i,o.any=o.top||o.left||o.bottom||o.right,o.all=o.top&&o.left&&o.bottom&&o.right,o.offsetY=o.top?t.top:o.bottom?t.bottom-n:0,o.offsetX=o.left?t.left:o.right?t.right-i:0,o},s=n(4),c=n.n(s),d=function(e,t){e.$children.forEach(function(n,i){-1===t.indexOf(n.$options.name)&&(c.a.util.warn("".concat(n.$options._componentTag," is not allowed inside the ").concat(e.$options._componentTag," component"),e),e.$children.splice(i,1),n.$el.remove())})},l=["ActionButton","ActionCheckbox","ActionInput","ActionLink","ActionRouter","ActionText"],u={name:"Actions",directives:{ClickOutside:o.a,tooltip:A.default},props:{open:{type:Boolean,default:!1},menuAlign:{type:String,default:"center",validator:function(e){return["left","center","right"].indexOf(e)>-1}}},data:function(){return{actions:[],opened:this.open,focusIndex:0,randomId:"menu-"+Object(r.a)(),offsetX:0}},computed:{isValidSingleAction:function(){return 1===this.actions.length},firstAction:function(){return this.actions[0]},firstActionElement:function(){switch(this.firstAction.$options.name){case"ActionLink":return{is:"a",href:this.firstAction.href,target:this.firstAction.target};case"ActionRouter":return{is:"router-link",to:this.firstAction.to,exact:this.firstAction.exact};default:return{is:"button"}}},firstActionEvent:function(){return this.firstAction&&this.firstAction.$listeners&&this.firstAction.$listeners.click?"click":null}},watch:{open:function(e){var t=this;this.opened=e,this.opened&&this.$nextTick(function(){t.onOpen()})}},beforeMount:function(){this.initActions(),d(this,l)},mounted:function(){this.popupItem=this.$el},beforeUpdate:function(){d(this,l)},methods:{toggleMenu:function(){var e=this;this.opened=!this.opened,this.opened&&this.$nextTick(function(){e.onOpen(),e.focusFirstAction()}),this.$emit("update:open",this.opened)},closeMenu:function(){this.offsetX=0,this.opened=!1,this.$emit("update:open",this.opened)},onOpen:function(){this.offsetX=0;var e=a(this.$refs.menu);e.any&&(this.offsetX=e.offsetX>0?Math.round(e.offsetX)+5:Math.round(e.offsetX)-5)},unFocus:function(){this.$refs.menu.focus(),this.removeCurrentActive()},removeCurrentActive:function(){var e=this.$refs.menu.querySelector("li.active");e&&e.classList.remove("active")},focusAction:function(){var e=this.$refs.menu.querySelectorAll(".focusable:not(:disabled)")[this.focusIndex];if(e){var t=e.closest("li");e.focus(),t&&(this.removeCurrentActive(),t.classList.add("active"))}},focusPreviousAction:function(){this.focusIndex=Math.max(this.focusIndex-1,0),this.focusAction()},focusNextAction:function(){this.focusIndex=Math.min(this.focusIndex+1,this.$el.querySelectorAll(".focusable:not(:disabled)").length-1),this.focusAction()},focusFirstAction:function(){this.focusIndex=0,this.focusAction()},focusLastAction:function(){this.focusIndex=this.$el.querySelectorAll(".focusable:not(:disabled)").length-1,this.focusAction()},execFirstAction:function(e){this.firstAction.$listeners&&this.firstAction.$listeners.click&&(this.firstAction.$listeners.click(e),e.preventDefault())},initActions:function(){this.actions=this.$children||[]}}},p=(n(67),n(0)),f=Object(p.a)(u,function(){var e=this,t=e.$createElement,n=e._self._c||t;return e.isValidSingleAction?n("element",e._b({directives:[{name:"tooltip",rawName:"v-tooltip.auto",value:e.firstAction.text,expression:"firstAction.text",modifiers:{auto:!0}}],staticClass:"action-item action-item--single",class:e.firstAction.icon,attrs:{rel:"noreferrer noopener"},on:e._d({},[e.firstActionEvent,e.execFirstAction])},"element",e.firstActionElement,!1),[n("span",{attrs:{"aria-hidden":!0,hidden:""}},[e._t("default")],2)]):n("div",{directives:[{name:"show",rawName:"v-show",value:e.actions.length>0,expression:"actions.length > 0"}],staticClass:"action-item",class:{"action-item--open":e.opened},on:{keydown:[function(t){return!t.type.indexOf("key")&&e._k(t.keyCode,"up",38,t.key,["Up","ArrowUp"])?null:t.ctrlKey||t.shiftKey||t.altKey||t.metaKey?null:(t.preventDefault(),e.focusPreviousAction(t))},function(t){return!t.type.indexOf("key")&&e._k(t.keyCode,"down",40,t.key,["Down","ArrowDown"])?null:t.ctrlKey||t.shiftKey||t.altKey||t.metaKey?null:(t.preventDefault(),e.focusNextAction(t))},function(t){return!t.type.indexOf("key")&&e._k(t.keyCode,"tab",9,t.key,"Tab")?null:t.shiftKey?(t.preventDefault(),e.focusPreviousAction(t)):null},function(t){return!t.type.indexOf("key")&&e._k(t.keyCode,"page-up",void 0,t.key,void 0)?null:t.ctrlKey||t.shiftKey||t.altKey||t.metaKey?null:(t.preventDefault(),e.focusFirstAction(t))},function(t){return!t.type.indexOf("key")&&e._k(t.keyCode,"page-down",void 0,t.key,void 0)?null:t.ctrlKey||t.shiftKey||t.altKey||t.metaKey?null:(t.preventDefault(),e.focusLastAction(t))},function(t){return!t.type.indexOf("key")&&e._k(t.keyCode,"esc",27,t.key,["Esc","Escape"])?null:t.ctrlKey||t.shiftKey||t.altKey||t.metaKey?null:(t.preventDefault(),e.closeMenu(t))}]}},[n("a",{directives:[{name:"click-outside",rawName:"v-click-outside",value:e.closeMenu,expression:"closeMenu"}],staticClass:"icon action-item__menutoggle",attrs:{href:"#","aria-haspopup":"true","aria-controls":e.randomId,"aria-expanded":e.opened},on:{click:function(t){return t.preventDefault(),e.toggleMenu(t)},keydown:function(t){return!t.type.indexOf("key")&&e._k(t.keyCode,"space",32,t.key,[" ","Spacebar"])?null:t.ctrlKey||t.shiftKey||t.altKey||t.metaKey?null:(t.preventDefault(),e.toggleMenu(t))}}}),e._v(" "),n("div",{ref:"menu",staticClass:"action-item__menu",class:["menu-"+e.menuAlign,{open:e.opened}],style:{marginRight:e.offsetX+"px"},attrs:{tabindex:"-1"},on:{mousemove:e.unFocus}},[n("div",{staticClass:"action-item__menu_arrow",style:{transform:"translateX("+e.offsetX+"px)"}}),e._v(" "),n("ul",{attrs:{id:e.randomId,tabindex:"-1"}},[e._t("default")],2)])])},[],!1,null,"1015755a",null).exports;n.d(t,"Actions",function(){return f}); +/** + * @copyright Copyright (c) 2018 John Molakvoæ + * + * @author John Molakvoæ + * + * @license GNU AGPL version 3 or any later version + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License as + * published by the Free Software Foundation, either version 3 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with this program. If not, see . + * + */t.default=f},29:function(e,t,n){var i=n(30);"string"==typeof i&&(i=[[e.i,i,""]]),i.locals&&(e.exports=i.locals);(0,n(2).default)("cb7584ea",i,!0,{})},30:function(e,t,n){(e.exports=n(1)(!1)).push([e.i,"@charset \"UTF-8\";\n/**\n * @copyright Copyright (c) 2019 John Molakvoæ \n *\n * @author John Molakvoæ \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 .\n *\n */\n/* popovermenu arrow width from the triangle center */\n/* opacities */\n/**\n* @copyright Copyright (c) 2016, John Molakvoæ \n* @copyright Copyright (c) 2016, Robin Appelman \n* @copyright Copyright (c) 2016, Jan-Christoph Borchardt \n* @copyright Copyright (c) 2016, Erik Pellikka \n* @copyright Copyright (c) 2015, Vincent Petry \n*\n* Bootstrap v3.3.5 (http://getbootstrap.com)\n* Copyright 2011-2015 Twitter, Inc.\n* Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n*/\n.vue-tooltip[data-v-2535e10] {\n position: absolute;\n z-index: 100000;\n right: auto;\n left: auto;\n display: block;\n margin: 0;\n /* default to top */\n margin-top: -3px;\n padding: 10px 0;\n text-align: left;\n text-align: start;\n white-space: normal;\n text-decoration: none;\n letter-spacing: normal;\n word-spacing: normal;\n text-transform: none;\n word-wrap: normal;\n word-break: normal;\n opacity: 0;\n text-shadow: none;\n font-family: 'Nunito', 'Open Sans', Frutiger, Calibri, 'Myriad Pro', Myriad, sans-serif;\n font-size: 12px;\n font-weight: normal;\n font-style: normal;\n line-height: 1.6;\n line-break: auto;\n filter: drop-shadow(0 1px 10px var(--color-box-shadow)); }\n .vue-tooltip[data-v-2535e10][x-placement^='top'] .tooltip-arrow {\n bottom: 0;\n left: calc(50% - 10px) !important;\n margin-top: 0;\n margin-bottom: 0;\n border-width: 10px 10px 0 10px;\n border-right-color: transparent;\n border-bottom-color: transparent;\n border-left-color: transparent; }\n .vue-tooltip[data-v-2535e10][x-placement^='bottom'] .tooltip-arrow {\n top: 0;\n left: calc(50% - 10px) !important;\n margin-top: 0;\n margin-bottom: 0;\n border-width: 0 10px 10px 10px;\n border-top-color: transparent;\n border-right-color: transparent;\n border-left-color: transparent; }\n .vue-tooltip[data-v-2535e10][x-placement^='right'] .tooltip-arrow {\n top: calc(50% - 10px) !important;\n right: 100%;\n margin-right: 0;\n margin-left: 0;\n border-width: 10px 10px 10px 0;\n border-top-color: transparent;\n border-bottom-color: transparent;\n border-left-color: transparent; }\n .vue-tooltip[data-v-2535e10][x-placement^='left'] .tooltip-arrow {\n top: calc(50% - 10px) !important;\n left: 100%;\n margin-right: 0;\n margin-left: 0;\n border-width: 10px 0 10px 10px;\n border-top-color: transparent;\n border-right-color: transparent;\n border-bottom-color: transparent; }\n .vue-tooltip[data-v-2535e10][aria-hidden='true'] {\n visibility: hidden;\n transition: opacity .15s, visibility .15s;\n opacity: 0; }\n .vue-tooltip[data-v-2535e10][aria-hidden='false'] {\n visibility: visible;\n transition: opacity .15s;\n opacity: 1; }\n .vue-tooltip[data-v-2535e10] .tooltip-inner {\n max-width: 350px;\n padding: 5px 8px;\n text-align: center;\n color: var(--color-main-text);\n border-radius: var(--border-radius);\n background-color: var(--color-main-background); }\n .vue-tooltip[data-v-2535e10] .tooltip-arrow {\n position: absolute;\n z-index: 1;\n width: 0;\n height: 0;\n margin: 0;\n border-style: solid;\n border-color: var(--color-main-background); }\n",""])},4:function(t,n){t.exports=e},48:function(e,t,n){var i=n(135);"string"==typeof i&&(i=[[e.i,i,""]]),i.locals&&(e.exports=i.locals);(0,n(2).default)("56d5acf1",i,!0,{})},49:function(e,t,n){var i=n(137);"string"==typeof i&&(i=[[e.i,i,""]]),i.locals&&(e.exports=i.locals);(0,n(2).default)("0cb9017e",i,!0,{})},5:function(e,t,n){"use strict";n.r(t);var i=n(9);n(29); +/** + * @copyright Copyright (c) 2019 Julius Härtl + * + * @author Julius Härtl + * @author John Molakvoæ + * + * @license GNU AGPL version 3 or any later version + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License as + * published by the Free Software Foundation, either version 3 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with this program. If not, see . + * + */ +i.a.options.defaultTemplate=''),t.default=i.a},6:function(e,t){function n(e){return"function"==typeof e.value||(console.warn("[Vue-click-outside:] provided expression",e.expression,"is not a function."),!1)}function i(e){return void 0!==e.componentInstance&&e.componentInstance.$isServer}e.exports={bind:function(e,t,o){function A(t){if(o.context){var n=t.path||t.composedPath&&t.composedPath();n&&n.length>0&&n.unshift(t.target),e.contains(t.target)||function(e,t){if(!e||!t)return!1;for(var n=0,i=t.length;n\n *\n * @author John Molakvoæ \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 .\n *\n */\n/* popovermenu arrow width from the triangle center */\n/* opacities */\n@font-face {\n font-family: "iconfont-vue";\n src: url('+o+");\n /* IE9 Compat Modes */\n src: url("+o+') format("embedded-opentype"), url('+A+') format("woff"), url('+r+') format("truetype"), url('+a+') format("svg");\n /* Legacy iOS */\n}\n.icon[data-v-1015755a] {\n font-style: normal;\n font-weight: 400;\n}\n.icon.arrow-left-double[data-v-1015755a]:before {\n font-family: "iconfont-vue";\n content: "";\n}\n.icon.arrow-left[data-v-1015755a]:before {\n font-family: "iconfont-vue";\n content: "";\n}\n.icon.arrow-right-double[data-v-1015755a]:before {\n font-family: "iconfont-vue";\n content: "";\n}\n.icon.arrow-right[data-v-1015755a]:before {\n font-family: "iconfont-vue";\n content: "";\n}\n.icon.close[data-v-1015755a]:before {\n font-family: "iconfont-vue";\n content: "";\n}\n.icon.confirm-fade[data-v-1015755a]:before {\n font-family: "iconfont-vue";\n content: "";\n}\n.icon.confirm[data-v-1015755a]:before {\n font-family: "iconfont-vue";\n content: "";\n}\n.icon.menu[data-v-1015755a]:before {\n font-family: "iconfont-vue";\n content: "";\n}\n.icon.more[data-v-1015755a]:before {\n font-family: "iconfont-vue";\n content: "";\n}\n.icon.pause[data-v-1015755a]:before {\n font-family: "iconfont-vue";\n content: "";\n}\n.icon.play[data-v-1015755a]:before {\n font-family: "iconfont-vue";\n content: "";\n}\n.action-item[data-v-1015755a] {\n position: relative;\n display: inline-block;\n}\n.action-item[data-v-1015755a]:hover, .action-item[data-v-1015755a]:focus, .action-item__menutoggle[data-v-1015755a]:focus, .action-item__menutoggle[data-v-1015755a]:active, .action-item.action-item--open[data-v-1015755a] {\n border-radius: 22px;\n background-color: rgba(127, 127, 127, 0.25);\n}\n.action-item[data-v-1015755a]:hover,\n .action-item:hover .action-item__menutoggle[data-v-1015755a], .action-item[data-v-1015755a]:focus,\n .action-item:focus .action-item__menutoggle[data-v-1015755a], .action-item__menutoggle[data-v-1015755a]:focus,\n .action-item__menutoggle:focus .action-item__menutoggle[data-v-1015755a], .action-item__menutoggle[data-v-1015755a]:active,\n .action-item__menutoggle:active .action-item__menutoggle[data-v-1015755a], .action-item.action-item--open[data-v-1015755a],\n .action-item.action-item--open .action-item__menutoggle[data-v-1015755a] {\n opacity: 1;\n}\n.action-item--single[data-v-1015755a], .action-item__menutoggle[data-v-1015755a] {\n box-sizing: border-box;\n width: 44px;\n height: 44px;\n margin: 0;\n padding: 14px;\n cursor: pointer;\n border: none;\n background-color: transparent;\n}\n.action-item__menutoggle[data-v-1015755a] {\n display: flex;\n align-items: center;\n justify-content: center;\n opacity: 0.7;\n font-size: 16px;\n}\n.action-item__menutoggle[data-v-1015755a]:before {\n font-family: "iconfont-vue";\n font-style: normal;\n font-weight: 400;\n content: "";\n}\n.action-item--single[data-v-1015755a] {\n opacity: 0.7;\n}\n.action-item--single[data-v-1015755a]:hover, .action-item--single[data-v-1015755a]:focus, .action-item--single[data-v-1015755a]:active {\n opacity: 1;\n}\n.action-item--single > [hidden][data-v-1015755a] {\n display: none;\n}\n.action-item--multiple[data-v-1015755a] {\n position: relative;\n}\n.action-item__menu[data-v-1015755a] {\n position: absolute;\n z-index: 110;\n right: 50%;\n display: none;\n margin: 0;\n margin-top: -5px;\n transform: translateX(50%);\n color: var(--color-main-text);\n border-radius: var(--border-radius);\n background-color: var(--color-main-background);\n filter: drop-shadow(0 1px 3px var(--color-box-shadow));\n /* Arrow */\n /* Align the popover to the right */\n /* Align the popover to the left */\n}\n.action-item__menu ul[data-v-1015755a] > :not(li) {\n display: none;\n}\n.action-item__menu.open[data-v-1015755a] {\n display: block;\n}\n.action-item__menu .action-item__menu_arrow[data-v-1015755a] {\n position: absolute;\n right: 50%;\n bottom: 100%;\n width: 0;\n height: 0;\n margin-right: -9px;\n content: \' \';\n pointer-events: none;\n /* change this to adjust the arrow position */\n border: solid transparent;\n border-width: 9px;\n border-bottom-color: var(--color-main-background);\n}\n.action-item__menu.menu-right[data-v-1015755a] {\n right: 0;\n left: auto;\n transform: none;\n}\n.action-item__menu.menu-right .action-item__menu_arrow[data-v-1015755a] {\n right: 13px;\n margin-right: 0;\n}\n.action-item__menu.menu-left[data-v-1015755a] {\n right: auto;\n left: 0;\n transform: none;\n}\n.action-item__menu.menu-left .action-item__menu_arrow[data-v-1015755a] {\n right: auto;\n left: 13px;\n margin-right: 0;\n}\n.ie .action-item__menu[data-v-1015755a],\n.ie .action-item__menu .action-item__menu_arrow[data-v-1015755a],\n.edge .action-item__menu[data-v-1015755a],\n.edge .action-item__menu .action-item__menu_arrow[data-v-1015755a] {\n border: 1px solid var(--color-border);\n}\n',""])},7:function(e,t){var n;n=function(){return this}();try{n=n||new Function("return this")()}catch(e){"object"==typeof window&&(n=window)}e.exports=n},9:function(e,t,n){"use strict";(function(e){n.d(t,"a",function(){return Dn});var i=n(10),o=n(21);function A(e){return(A="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e})(e)}function r(e,t){for(var n=0;n
',trigger:"hover focus",offset:0},v=[],g=function(){function e(t,n){var i=this;!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,e),a(this,"_events",[]),a(this,"_setTooltipNodeEvent",function(e,t,n,o){var A=e.relatedreference||e.toElement||e.relatedTarget;return!!i._tooltipNode.contains(A)&&(i._tooltipNode.addEventListener(e.type,function n(A){var r=A.relatedreference||A.toElement||A.relatedTarget;i._tooltipNode.removeEventListener(e.type,n),t.contains(r)||i._scheduleHide(t,o.delay,o,A)}),!0)}),n=s({},h,n),t.jquery&&(t=t[0]),this.show=this.show.bind(this),this.hide=this.hide.bind(this),this.reference=t,this.options=n,this._isOpen=!1,this._init()}var t,n,o;return t=e,(n=[{key:"show",value:function(){this._show(this.reference,this.options)}},{key:"hide",value:function(){this._hide()}},{key:"dispose",value:function(){this._dispose()}},{key:"toggle",value:function(){return this._isOpen?this.hide():this.show()}},{key:"setClasses",value:function(e){this._classes=e}},{key:"setContent",value:function(e){this.options.title=e,this._tooltipNode&&this._setContent(e,this.options)}},{key:"setOptions",value:function(e){var t=!1,n=e&&e.classes||C.options.defaultClass;this._classes!==n&&(this.setClasses(n),t=!0),e=w(e);var i=!1,o=!1;for(var A in this.options.offset===e.offset&&this.options.placement===e.placement||(i=!0),(this.options.template!==e.template||this.options.trigger!==e.trigger||this.options.container!==e.container||t)&&(o=!0),e)this.options[A]=e[A];if(this._tooltipNode)if(o){var r=this._isOpen;this.dispose(),this._init(),r&&this.show()}else i&&this.popperInstance.update()}},{key:"_init",value:function(){var e="string"==typeof this.options.trigger?this.options.trigger.split(" "):[];this._isDisposed=!1,this._enableDocumentTouch=-1===e.indexOf("manual"),e=e.filter(function(e){return-1!==["click","hover","focus"].indexOf(e)}),this._setEventListeners(this.reference,e,this.options),this.$_originalTitle=this.reference.getAttribute("title"),this.reference.removeAttribute("title"),this.reference.setAttribute("data-original-title",this.$_originalTitle)}},{key:"_create",value:function(e,t){var n=window.document.createElement("div");n.innerHTML=t.trim();var i=n.childNodes[0];return i.id="tooltip_".concat(Math.random().toString(36).substr(2,10)),i.setAttribute("aria-hidden","true"),this.options.autoHide&&-1!==this.options.trigger.indexOf("hover")&&(i.addEventListener("mouseenter",this.hide),i.addEventListener("click",this.hide)),i}},{key:"_setContent",value:function(e,t){var n=this;this.asyncContent=!1,this._applyContent(e,t).then(function(){n.popperInstance.update()})}},{key:"_applyContent",value:function(e,t){var n=this;return new Promise(function(i,o){var A=t.html,r=n._tooltipNode;if(r){var a=r.querySelector(n.options.innerSelector);if(1===e.nodeType){if(A){for(;a.firstChild;)a.removeChild(a.firstChild);a.appendChild(e)}}else{if("function"==typeof e){var s=e();return void(s&&"function"==typeof s.then?(n.asyncContent=!0,t.loadingClass&&l(r,t.loadingClass),t.loadingContent&&n._applyContent(t.loadingContent,t),s.then(function(e){return t.loadingClass&&u(r,t.loadingClass),n._applyContent(e,t)}).then(i).catch(o)):n._applyContent(s,t).then(i).catch(o))}A?a.innerHTML=e:a.innerText=e}i()}})}},{key:"_show",value:function(e,t){if(t&&"string"==typeof t.container&&!document.querySelector(t.container))return;clearTimeout(this._disposeTimer),delete(t=Object.assign({},t)).offset;var n=!0;this._tooltipNode&&(l(this._tooltipNode,this._classes),n=!1);var i=this._ensureShown(e,t);return n&&this._tooltipNode&&l(this._tooltipNode,this._classes),l(e,["v-tooltip-open"]),i}},{key:"_ensureShown",value:function(e,t){var n=this;if(this._isOpen)return this;if(this._isOpen=!0,v.push(this),this._tooltipNode)return this._tooltipNode.style.display="",this._tooltipNode.setAttribute("aria-hidden","false"),this.popperInstance.enableEventListeners(),this.popperInstance.update(),this.asyncContent&&this._setContent(t.title,t),this;var o=e.getAttribute("title")||t.title;if(!o)return this;var A=this._create(e,t.template);this._tooltipNode=A,e.setAttribute("aria-describedby",A.id);var r=this._findContainer(t.container,e);this._append(A,r);var a=s({},t.popperOptions,{placement:t.placement});return a.modifiers=s({},a.modifiers,{arrow:{element:this.options.arrowSelector}}),t.boundariesElement&&(a.modifiers.preventOverflow={boundariesElement:t.boundariesElement}),this.popperInstance=new i.a(e,A,a),this._setContent(o,t),requestAnimationFrame(function(){!n._isDisposed&&n.popperInstance?(n.popperInstance.update(),requestAnimationFrame(function(){n._isDisposed?n.dispose():n._isOpen&&A.setAttribute("aria-hidden","false")})):n.dispose()}),this}},{key:"_noLongerOpen",value:function(){var e=v.indexOf(this);-1!==e&&v.splice(e,1)}},{key:"_hide",value:function(){var e=this;if(!this._isOpen)return this;this._isOpen=!1,this._noLongerOpen(),this._tooltipNode.style.display="none",this._tooltipNode.setAttribute("aria-hidden","true"),this.popperInstance.disableEventListeners(),clearTimeout(this._disposeTimer);var t=C.options.disposeTimeout;return null!==t&&(this._disposeTimer=setTimeout(function(){e._tooltipNode&&(e._tooltipNode.removeEventListener("mouseenter",e.hide),e._tooltipNode.removeEventListener("click",e.hide),e._removeTooltipNode())},t)),u(this.reference,["v-tooltip-open"]),this}},{key:"_removeTooltipNode",value:function(){if(this._tooltipNode){var e=this._tooltipNode.parentNode;e&&(e.removeChild(this._tooltipNode),this.reference.removeAttribute("aria-describedby")),this._tooltipNode=null}}},{key:"_dispose",value:function(){var e=this;return this._isDisposed=!0,this.reference.removeAttribute("data-original-title"),this.$_originalTitle&&this.reference.setAttribute("title",this.$_originalTitle),this._events.forEach(function(t){var n=t.func,i=t.event;e.reference.removeEventListener(i,n)}),this._events=[],this._tooltipNode?(this._hide(),this._tooltipNode.removeEventListener("mouseenter",this.hide),this._tooltipNode.removeEventListener("click",this.hide),this.popperInstance.destroy(),this.popperInstance.options.removeOnDestroy||this._removeTooltipNode()):this._noLongerOpen(),this}},{key:"_findContainer",value:function(e,t){return"string"==typeof e?e=window.document.querySelector(e):!1===e&&(e=t.parentNode),e}},{key:"_append",value:function(e,t){t.appendChild(e)}},{key:"_setEventListeners",value:function(e,t,n){var i=this,o=[],A=[];t.forEach(function(e){switch(e){case"hover":o.push("mouseenter"),A.push("mouseleave"),i.options.hideOnTargetClick&&A.push("click");break;case"focus":o.push("focus"),A.push("blur"),i.options.hideOnTargetClick&&A.push("click");break;case"click":o.push("click"),A.push("click")}}),o.forEach(function(t){var o=function(t){!0!==i._isOpen&&(t.usedByTooltip=!0,i._scheduleShow(e,n.delay,n,t))};i._events.push({event:t,func:o}),e.addEventListener(t,o)}),A.forEach(function(t){var o=function(t){!0!==t.usedByTooltip&&i._scheduleHide(e,n.delay,n,t)};i._events.push({event:t,func:o}),e.addEventListener(t,o)})}},{key:"_onDocumentTouch",value:function(e){this._enableDocumentTouch&&this._scheduleHide(this.reference,this.options.delay,this.options,e)}},{key:"_scheduleShow",value:function(e,t,n){var i=this,o=t&&t.show||t||0;clearTimeout(this._scheduleTimer),this._scheduleTimer=window.setTimeout(function(){return i._show(e,n)},o)}},{key:"_scheduleHide",value:function(e,t,n,i){var o=this,A=t&&t.hide||t||0;clearTimeout(this._scheduleTimer),this._scheduleTimer=window.setTimeout(function(){if(!1!==o._isOpen&&document.body.contains(o._tooltipNode)){if("mouseleave"===i.type)if(o._setTooltipNodeEvent(i,e,t,n))return;o._hide(e,n)}},A)}}])&&r(t.prototype,n),o&&r(t,o),e}();"undefined"!=typeof document&&document.addEventListener("touchstart",function(e){for(var t=0;t
',defaultArrowSelector:".tooltip-arrow, .tooltip__arrow",defaultInnerSelector:".tooltip-inner, .tooltip__inner",defaultDelay:0,defaultTrigger:"hover focus",defaultOffset:0,defaultContainer:"body",defaultBoundariesElement:void 0,defaultPopperOptions:{},defaultLoadingClass:"tooltip-loading",defaultLoadingContent:"...",autoHide:!0,defaultHideOnTargetClick:!0,disposeTimeout:5e3,popover:{defaultPlacement:"bottom",defaultClass:"vue-popover-theme",defaultBaseClass:"tooltip popover",defaultWrapperClass:"wrapper",defaultInnerClass:"tooltip-inner popover-inner",defaultArrowClass:"tooltip-arrow popover-arrow",defaultOpenClass:"open",defaultDelay:0,defaultTrigger:"click",defaultOffset:0,defaultContainer:"body",defaultBoundariesElement:void 0,defaultPopperOptions:{},defaultAutoHide:!0,defaultHandleResize:!0}};function w(e){var t={placement:void 0!==e.placement?e.placement:C.options.defaultPlacement,delay:void 0!==e.delay?e.delay:C.options.defaultDelay,html:void 0!==e.html?e.html:C.options.defaultHtml,template:void 0!==e.template?e.template:C.options.defaultTemplate,arrowSelector:void 0!==e.arrowSelector?e.arrowSelector:C.options.defaultArrowSelector,innerSelector:void 0!==e.innerSelector?e.innerSelector:C.options.defaultInnerSelector,trigger:void 0!==e.trigger?e.trigger:C.options.defaultTrigger,offset:void 0!==e.offset?e.offset:C.options.defaultOffset,container:void 0!==e.container?e.container:C.options.defaultContainer,boundariesElement:void 0!==e.boundariesElement?e.boundariesElement:C.options.defaultBoundariesElement,autoHide:void 0!==e.autoHide?e.autoHide:C.options.autoHide,hideOnTargetClick:void 0!==e.hideOnTargetClick?e.hideOnTargetClick:C.options.defaultHideOnTargetClick,loadingClass:void 0!==e.loadingClass?e.loadingClass:C.options.defaultLoadingClass,loadingContent:void 0!==e.loadingContent?e.loadingContent:C.options.defaultLoadingContent,popperOptions:s({},void 0!==e.popperOptions?e.popperOptions:C.options.defaultPopperOptions)};if(t.offset){var n=A(t.offset),i=t.offset;("number"===n||"string"===n&&-1===i.indexOf(","))&&(i="0, ".concat(i)),t.popperOptions.modifiers||(t.popperOptions.modifiers={}),t.popperOptions.modifiers.offset={offset:i}}return t.trigger&&-1!==t.trigger.indexOf("click")&&(t.hideOnTargetClick=!1),t}function _(e,t){for(var n=e.placement,i=0;i2&&void 0!==arguments[2]?arguments[2]:{},i=E(t),o=void 0!==t.classes?t.classes:C.options.defaultClass,A=s({title:i},w(s({},t,{placement:_(t,n)}))),r=e._tooltip=new g(e,A);r.setClasses(o),r._vueEl=e;var a=void 0!==t.targetClasses?t.targetClasses:C.options.defaultTargetClass;return e._tooltipTargetClasses=a,l(e,a),r}(e,i,o),void 0!==i.show&&i.show!==e._tooltipOldShow&&(e._tooltipOldShow=i.show,i.show?n.show():n.hide())):T(e)}var C={options:y,bind:B,update:B,unbind:function(e){T(e)}};function I(e){e.addEventListener("click",M),e.addEventListener("touchstart",N,!!p&&{passive:!0})}function x(e){e.removeEventListener("click",M),e.removeEventListener("touchstart",N),e.removeEventListener("touchend",O),e.removeEventListener("touchcancel",k)}function M(e){var t=e.currentTarget;e.closePopover=!t.$_vclosepopover_touch,e.closeAllPopover=t.$_closePopoverModifiers&&!!t.$_closePopoverModifiers.all}function N(e){if(1===e.changedTouches.length){var t=e.currentTarget;t.$_vclosepopover_touch=!0;var n=e.changedTouches[0];t.$_vclosepopover_touchPoint=n,t.addEventListener("touchend",O),t.addEventListener("touchcancel",k)}}function O(e){var t=e.currentTarget;if(t.$_vclosepopover_touch=!1,1===e.changedTouches.length){var n=e.changedTouches[0],i=t.$_vclosepopover_touchPoint;e.closePopover=Math.abs(n.screenY-i.screenY)<20&&Math.abs(n.screenX-i.screenX)<20,e.closeAllPopover=t.$_closePopoverModifiers&&!!t.$_closePopoverModifiers.all}}function k(e){e.currentTarget.$_vclosepopover_touch=!1}var D={bind:function(e,t){var n=t.value,i=t.modifiers;e.$_closePopoverModifiers=i,(void 0===n||n)&&I(e)},update:function(e,t){var n=t.value,i=t.oldValue,o=t.modifiers;e.$_closePopoverModifiers=o,n!==i&&(void 0===n||n?I(e):x(e))},unbind:function(e){x(e)}};function S(e){var t=C.options.popover[e];return void 0===t?C.options[e]:t}var L=!1;"undefined"!=typeof window&&"undefined"!=typeof navigator&&(L=/iPad|iPhone|iPod/.test(navigator.userAgent)&&!window.MSStream);var Q=[],G=function(){};"undefined"!=typeof window&&(G=window.Element);var j={name:"VPopover",components:{ResizeObserver:o.a},props:{open:{type:Boolean,default:!1},disabled:{type:Boolean,default:!1},placement:{type:String,default:function(){return S("defaultPlacement")}},delay:{type:[String,Number,Object],default:function(){return S("defaultDelay")}},offset:{type:[String,Number],default:function(){return S("defaultOffset")}},trigger:{type:String,default:function(){return S("defaultTrigger")}},container:{type:[String,Object,G,Boolean],default:function(){return S("defaultContainer")}},boundariesElement:{type:[String,G],default:function(){return S("defaultBoundariesElement")}},popperOptions:{type:Object,default:function(){return S("defaultPopperOptions")}},popoverClass:{type:[String,Array],default:function(){return S("defaultClass")}},popoverBaseClass:{type:[String,Array],default:function(){return C.options.popover.defaultBaseClass}},popoverInnerClass:{type:[String,Array],default:function(){return C.options.popover.defaultInnerClass}},popoverWrapperClass:{type:[String,Array],default:function(){return C.options.popover.defaultWrapperClass}},popoverArrowClass:{type:[String,Array],default:function(){return C.options.popover.defaultArrowClass}},autoHide:{type:Boolean,default:function(){return C.options.popover.defaultAutoHide}},handleResize:{type:Boolean,default:function(){return C.options.popover.defaultHandleResize}},openGroup:{type:String,default:null},openClass:{type:[String,Array],default:function(){return C.options.popover.defaultOpenClass}}},data:function(){return{isOpen:!1,id:Math.random().toString(36).substr(2,10)}},computed:{cssClass:function(){return a({},this.openClass,this.isOpen)},popoverId:function(){return"popover_".concat(this.id)}},watch:{open:function(e){e?this.show():this.hide()},disabled:function(e,t){e!==t&&(e?this.hide():this.open&&this.show())},container:function(e){if(this.isOpen&&this.popperInstance){var t=this.$refs.popover,n=this.$refs.trigger,i=this.$_findContainer(this.container,n);if(!i)return void console.warn("No container for popover",this);i.appendChild(t),this.popperInstance.scheduleUpdate()}},trigger:function(e){this.$_removeEventListeners(),this.$_addEventListeners()},placement:function(e){var t=this;this.$_updatePopper(function(){t.popperInstance.options.placement=e})},offset:"$_restartPopper",boundariesElement:"$_restartPopper",popperOptions:{handler:"$_restartPopper",deep:!0}},created:function(){this.$_isDisposed=!1,this.$_mounted=!1,this.$_events=[],this.$_preventOpen=!1},mounted:function(){var e=this.$refs.popover;e.parentNode&&e.parentNode.removeChild(e),this.$_init(),this.open&&this.show()},deactivated:function(){this.hide()},beforeDestroy:function(){this.dispose()},methods:{show:function(){var e=this,t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},n=t.event,i=(t.skipDelay,t.force);!(void 0!==i&&i)&&this.disabled||(this.$_scheduleShow(n),this.$emit("show")),this.$emit("update:open",!0),this.$_beingShowed=!0,requestAnimationFrame(function(){e.$_beingShowed=!1})},hide:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=e.event;e.skipDelay;this.$_scheduleHide(t),this.$emit("hide"),this.$emit("update:open",!1)},dispose:function(){if(this.$_isDisposed=!0,this.$_removeEventListeners(),this.hide({skipDelay:!0}),this.popperInstance&&(this.popperInstance.destroy(),!this.popperInstance.options.removeOnDestroy)){var e=this.$refs.popover;e.parentNode&&e.parentNode.removeChild(e)}this.$_mounted=!1,this.popperInstance=null,this.isOpen=!1,this.$emit("dispose")},$_init:function(){-1===this.trigger.indexOf("manual")&&this.$_addEventListeners()},$_show:function(){var e=this,t=this.$refs.trigger,n=this.$refs.popover;if(clearTimeout(this.$_disposeTimer),!this.isOpen){if(this.popperInstance&&(this.isOpen=!0,this.popperInstance.enableEventListeners(),this.popperInstance.scheduleUpdate()),!this.$_mounted){var o=this.$_findContainer(this.container,t);if(!o)return void console.warn("No container for popover",this);o.appendChild(n),this.$_mounted=!0}if(!this.popperInstance){var A=s({},this.popperOptions,{placement:this.placement});if(A.modifiers=s({},A.modifiers,{arrow:s({},A.modifiers&&A.modifiers.arrow,{element:this.$refs.arrow})}),this.offset){var r=this.$_getOffset();A.modifiers.offset=s({},A.modifiers&&A.modifiers.offset,{offset:r})}this.boundariesElement&&(A.modifiers.preventOverflow=s({},A.modifiers&&A.modifiers.preventOverflow,{boundariesElement:this.boundariesElement})),this.popperInstance=new i.a(t,n,A),requestAnimationFrame(function(){if(e.hidden)return e.hidden=!1,void e.$_hide();!e.$_isDisposed&&e.popperInstance?(e.popperInstance.scheduleUpdate(),requestAnimationFrame(function(){if(e.hidden)return e.hidden=!1,void e.$_hide();e.$_isDisposed?e.dispose():e.isOpen=!0})):e.dispose()})}var a=this.openGroup;if(a)for(var c,d=0;d1&&void 0!==arguments[1]&&arguments[1];if(clearTimeout(this.$_scheduleTimer),e)this.$_show();else{var t=parseInt(this.delay&&this.delay.show||this.delay||0);this.$_scheduleTimer=setTimeout(this.$_show.bind(this),t)}},$_scheduleHide:function(){var e=this,t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:null,n=arguments.length>1&&void 0!==arguments[1]&&arguments[1];if(clearTimeout(this.$_scheduleTimer),n)this.$_hide();else{var i=parseInt(this.delay&&this.delay.hide||this.delay||0);this.$_scheduleTimer=setTimeout(function(){if(e.isOpen){if(t&&"mouseleave"===t.type)if(e.$_setTooltipNodeEvent(t))return;e.$_hide()}},i)}},$_setTooltipNodeEvent:function(e){var t=this,n=this.$refs.trigger,i=this.$refs.popover,o=e.relatedreference||e.toElement||e.relatedTarget;return!!i.contains(o)&&(i.addEventListener(e.type,function o(A){var r=A.relatedreference||A.toElement||A.relatedTarget;i.removeEventListener(e.type,o),n.contains(r)||t.hide({event:A})}),!0)},$_removeEventListeners:function(){var e=this.$refs.trigger;this.$_events.forEach(function(t){var n=t.func,i=t.event;e.removeEventListener(i,n)}),this.$_events=[]},$_updatePopper:function(e){this.popperInstance&&(e(),this.isOpen&&this.popperInstance.scheduleUpdate())},$_restartPopper:function(){if(this.popperInstance){var e=this.isOpen;this.dispose(),this.$_isDisposed=!1,this.$_init(),e&&this.show({skipDelay:!0,force:!0})}},$_handleGlobalClose:function(e){var t=this,n=arguments.length>1&&void 0!==arguments[1]&&arguments[1];this.$_beingShowed||(this.hide({event:e}),e.closePopover?this.$emit("close-directive"):this.$emit("auto-hide"),n&&(this.$_preventOpen=!0,setTimeout(function(){t.$_preventOpen=!1},300)))},$_handleResize:function(){this.isOpen&&this.popperInstance&&(this.popperInstance.scheduleUpdate(),this.$emit("resize"))}}};function H(e){for(var t=arguments.length>1&&void 0!==arguments[1]&&arguments[1],n=function(n){var i=Q[n];if(i.$refs.popover){var o=i.$refs.popover.contains(e.target);requestAnimationFrame(function(){(e.closeAllPopover||e.closePopover&&o||i.autoHide&&!o)&&i.$_handleGlobalClose(e,t)})}},i=0;i-1};var J=function(e,t){var n=this.__data__,i=$(n,e);return i<0?(++this.size,n.push([e,t])):n[i][1]=t,this};function K(e){var t=-1,n=null==e?0:e.length;for(this.clear();++t-1&&e%1==0&&e<=Gt};var Ht=function(e){return null!=e&&jt(e.length)&&!Ie(e)};var Yt=function(e){return Mt(e)&&Ht(e)};var Rt=function(){return!1},Ft=Ae(function(e,t){var n=t&&!t.nodeType&&t,i=n&&e&&!e.nodeType&&e,o=i&&i.exports===n?se.Buffer:void 0,A=(o?o.isBuffer:void 0)||Rt;e.exports=A}),Ut="[object Object]",Pt=Function.prototype,zt=Object.prototype,$t=Pt.toString,Wt=zt.hasOwnProperty,Zt=$t.call(Object);var Vt=function(e){if(!Mt(e)||ye(e)!=Ut)return!1;var t=Bt(e);if(null===t)return!0;var n=Wt.call(t,"constructor")&&t.constructor;return"function"==typeof n&&n instanceof n&&$t.call(n)==Zt},Xt={};Xt["[object Float32Array]"]=Xt["[object Float64Array]"]=Xt["[object Int8Array]"]=Xt["[object Int16Array]"]=Xt["[object Int32Array]"]=Xt["[object Uint8Array]"]=Xt["[object Uint8ClampedArray]"]=Xt["[object Uint16Array]"]=Xt["[object Uint32Array]"]=!0,Xt["[object Arguments]"]=Xt["[object Array]"]=Xt["[object ArrayBuffer]"]=Xt["[object Boolean]"]=Xt["[object DataView]"]=Xt["[object Date]"]=Xt["[object Error]"]=Xt["[object Function]"]=Xt["[object Map]"]=Xt["[object Number]"]=Xt["[object Object]"]=Xt["[object RegExp]"]=Xt["[object Set]"]=Xt["[object String]"]=Xt["[object WeakMap]"]=!1;var Jt=function(e){return Mt(e)&&jt(e.length)&&!!Xt[ye(e)]};var Kt=function(e){return function(t){return e(t)}},qt=Ae(function(e,t){var n=t&&!t.nodeType&&t,i=n&&e&&!e.nodeType&&e,o=i&&i.exports===n&&re.process,A=function(){try{var e=i&&i.require&&i.require("util").types;return e||o&&o.binding&&o.binding("util")}catch(e){}}();e.exports=A}),en=qt&&qt.isTypedArray,tn=en?Kt(en):Jt;var nn=function(e,t){if("__proto__"!=t)return e[t]},on=Object.prototype.hasOwnProperty;var An=function(e,t,n){var i=e[t];on.call(e,t)&&z(i,n)&&(void 0!==n||t in e)||ht(e,t,n)};var rn=function(e,t,n,i){var o=!n;n||(n={});for(var A=-1,r=t.length;++A-1&&e%1==0&&e0){if(++t>=Cn)return arguments[0]}else t=0;return e.apply(void 0,arguments)}}(Bn);var Nn=function(e,t){return Mn(En(e,t,yn),e+"")};var On=function(e,t,n){if(!we(n))return!1;var i=typeof t;return!!("number"==i?Ht(n)&&dn(t,n.length):"string"==i&&t in n)&&z(n[t],e)};var kn=function(e){return Nn(function(t,n){var i=-1,o=n.length,A=o>1?n[o-1]:void 0,r=o>2?n[2]:void 0;for(A=e.length>3&&"function"==typeof A?(o--,A):void 0,r&&On(n[0],n[1],r)&&(A=o<3?void 0:A,o=1),t=Object(t);++i1&&void 0!==arguments[1]?arguments[1]:{};if(!e.installed){e.installed=!0;var i={};kn(i,y,n),Sn.options=i,C.options=i,t.directive("tooltip",C),t.directive("close-popover",D),t.component("v-popover",U)}},get enabled(){return m.enabled},set enabled(e){m.enabled=e}},Ln=null;"undefined"!=typeof window?Ln=window.Vue:void 0!==e&&(Ln=e.Vue),Ln&&Ln.use(Sn)}).call(this,n(7))}})}); +//# sourceMappingURL=AppSidebar.js.map + +/***/ }), + +/***/ "./node_modules/process/browser.js": +/*!*****************************************!*\ + !*** ./node_modules/process/browser.js ***! + \*****************************************/ +/*! no static exports found */ +/***/ (function(module, exports) { + +// shim for using process in browser +var process = module.exports = {}; + +// cached from whatever global is present so that test runners that stub it +// don't break things. But we need to wrap it in a try catch in case it is +// wrapped in strict mode code which doesn't define any globals. It's inside a +// function because try/catches deoptimize in certain engines. + +var cachedSetTimeout; +var cachedClearTimeout; + +function defaultSetTimout() { + throw new Error('setTimeout has not been defined'); +} +function defaultClearTimeout () { + throw new Error('clearTimeout has not been defined'); +} +(function () { + try { + if (typeof setTimeout === 'function') { + cachedSetTimeout = setTimeout; + } else { + cachedSetTimeout = defaultSetTimout; + } + } catch (e) { + cachedSetTimeout = defaultSetTimout; + } + try { + if (typeof clearTimeout === 'function') { + cachedClearTimeout = clearTimeout; + } else { + cachedClearTimeout = defaultClearTimeout; + } + } catch (e) { + cachedClearTimeout = defaultClearTimeout; + } +} ()) +function runTimeout(fun) { + if (cachedSetTimeout === setTimeout) { + //normal enviroments in sane situations + return setTimeout(fun, 0); + } + // if setTimeout wasn't available but was latter defined + if ((cachedSetTimeout === defaultSetTimout || !cachedSetTimeout) && setTimeout) { + cachedSetTimeout = setTimeout; + return setTimeout(fun, 0); + } + try { + // when when somebody has screwed with setTimeout but no I.E. maddness + return cachedSetTimeout(fun, 0); + } catch(e){ + try { + // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally + return cachedSetTimeout.call(null, fun, 0); + } catch(e){ + // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error + return cachedSetTimeout.call(this, fun, 0); + } + } + + +} +function runClearTimeout(marker) { + if (cachedClearTimeout === clearTimeout) { + //normal enviroments in sane situations + return clearTimeout(marker); + } + // if clearTimeout wasn't available but was latter defined + if ((cachedClearTimeout === defaultClearTimeout || !cachedClearTimeout) && clearTimeout) { + cachedClearTimeout = clearTimeout; + return clearTimeout(marker); + } + try { + // when when somebody has screwed with setTimeout but no I.E. maddness + return cachedClearTimeout(marker); + } catch (e){ + try { + // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally + return cachedClearTimeout.call(null, marker); + } catch (e){ + // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error. + // Some versions of I.E. have different rules for clearTimeout vs setTimeout + return cachedClearTimeout.call(this, marker); + } + } + + + +} +var queue = []; +var draining = false; +var currentQueue; +var queueIndex = -1; + +function cleanUpNextTick() { + if (!draining || !currentQueue) { + return; + } + draining = false; + if (currentQueue.length) { + queue = currentQueue.concat(queue); + } else { + queueIndex = -1; + } + if (queue.length) { + drainQueue(); + } +} + +function drainQueue() { + if (draining) { + return; + } + var timeout = runTimeout(cleanUpNextTick); + draining = true; + + var len = queue.length; + while(len) { + currentQueue = queue; + queue = []; + while (++queueIndex < len) { + if (currentQueue) { + currentQueue[queueIndex].run(); + } + } + queueIndex = -1; + len = queue.length; + } + currentQueue = null; + draining = false; + runClearTimeout(timeout); +} + +process.nextTick = function (fun) { + var args = new Array(arguments.length - 1); + if (arguments.length > 1) { + for (var i = 1; i < arguments.length; i++) { + args[i - 1] = arguments[i]; + } + } + queue.push(new Item(fun, args)); + if (queue.length === 1 && !draining) { + runTimeout(drainQueue); + } +}; + +// v8 likes predictible objects +function Item(fun, array) { + this.fun = fun; + this.array = array; +} +Item.prototype.run = function () { + this.fun.apply(null, this.array); +}; +process.title = 'browser'; +process.browser = true; +process.env = {}; +process.argv = []; +process.version = ''; // empty string to avoid regexp issues +process.versions = {}; + +function noop() {} + +process.on = noop; +process.addListener = noop; +process.once = noop; +process.off = noop; +process.removeListener = noop; +process.removeAllListeners = noop; +process.emit = noop; +process.prependListener = noop; +process.prependOnceListener = noop; + +process.listeners = function (name) { return [] } + +process.binding = function (name) { + throw new Error('process.binding is not supported'); +}; + +process.cwd = function () { return '/' }; +process.chdir = function (dir) { + throw new Error('process.chdir is not supported'); +}; +process.umask = function() { return 0; }; + + +/***/ }), + +/***/ "./node_modules/setimmediate/setImmediate.js": +/*!***************************************************!*\ + !*** ./node_modules/setimmediate/setImmediate.js ***! + \***************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +/* WEBPACK VAR INJECTION */(function(global, process) {(function (global, undefined) { + "use strict"; + + if (global.setImmediate) { + return; + } + + var nextHandle = 1; // Spec says greater than zero + var tasksByHandle = {}; + var currentlyRunningATask = false; + var doc = global.document; + var registerImmediate; + + function setImmediate(callback) { + // Callback can either be a function or a string + if (typeof callback !== "function") { + callback = new Function("" + callback); + } + // Copy function arguments + var args = new Array(arguments.length - 1); + for (var i = 0; i < args.length; i++) { + args[i] = arguments[i + 1]; + } + // Store and register the task + var task = { callback: callback, args: args }; + tasksByHandle[nextHandle] = task; + registerImmediate(nextHandle); + return nextHandle++; + } + + function clearImmediate(handle) { + delete tasksByHandle[handle]; + } + + function run(task) { + var callback = task.callback; + var args = task.args; + switch (args.length) { + case 0: + callback(); + break; + case 1: + callback(args[0]); + break; + case 2: + callback(args[0], args[1]); + break; + case 3: + callback(args[0], args[1], args[2]); + break; + default: + callback.apply(undefined, args); + break; + } + } + + function runIfPresent(handle) { + // From the spec: "Wait until any invocations of this algorithm started before this one have completed." + // So if we're currently running a task, we'll need to delay this invocation. + if (currentlyRunningATask) { + // Delay by doing a setTimeout. setImmediate was tried instead, but in Firefox 7 it generated a + // "too much recursion" error. + setTimeout(runIfPresent, 0, handle); + } else { + var task = tasksByHandle[handle]; + if (task) { + currentlyRunningATask = true; + try { + run(task); + } finally { + clearImmediate(handle); + currentlyRunningATask = false; + } + } + } + } + + function installNextTickImplementation() { + registerImmediate = function(handle) { + process.nextTick(function () { runIfPresent(handle); }); + }; + } + + function canUsePostMessage() { + // The test against `importScripts` prevents this implementation from being installed inside a web worker, + // where `global.postMessage` means something completely different and can't be used for this purpose. + if (global.postMessage && !global.importScripts) { + var postMessageIsAsynchronous = true; + var oldOnMessage = global.onmessage; + global.onmessage = function() { + postMessageIsAsynchronous = false; + }; + global.postMessage("", "*"); + global.onmessage = oldOnMessage; + return postMessageIsAsynchronous; + } + } + + function installPostMessageImplementation() { + // Installs an event handler on `global` for the `message` event: see + // * https://developer.mozilla.org/en/DOM/window.postMessage + // * http://www.whatwg.org/specs/web-apps/current-work/multipage/comms.html#crossDocumentMessages + + var messagePrefix = "setImmediate$" + Math.random() + "$"; + var onGlobalMessage = function(event) { + if (event.source === global && + typeof event.data === "string" && + event.data.indexOf(messagePrefix) === 0) { + runIfPresent(+event.data.slice(messagePrefix.length)); + } + }; + + if (global.addEventListener) { + global.addEventListener("message", onGlobalMessage, false); + } else { + global.attachEvent("onmessage", onGlobalMessage); + } + + registerImmediate = function(handle) { + global.postMessage(messagePrefix + handle, "*"); + }; + } + + function installMessageChannelImplementation() { + var channel = new MessageChannel(); + channel.port1.onmessage = function(event) { + var handle = event.data; + runIfPresent(handle); + }; + + registerImmediate = function(handle) { + channel.port2.postMessage(handle); + }; + } + + function installReadyStateChangeImplementation() { + var html = doc.documentElement; + registerImmediate = function(handle) { + // Create a + \ No newline at end of file diff --git a/apps/files/src/models/FileInfo.js b/apps/files/src/models/FileInfo.js new file mode 100644 index 0000000000000..23d4e1bf9a490 --- /dev/null +++ b/apps/files/src/models/FileInfo.js @@ -0,0 +1,24 @@ +/** + * @copyright Copyright (c) 2019 John Molakvoæ + * + * @author John Molakvoæ + * + * @license GNU AGPL version 3 or any later version + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License as + * published by the Free Software Foundation, either version 3 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with this program. If not, see . + * + */ + +export default class FileInfo { +} \ No newline at end of file diff --git a/apps/files/src/models/Tab.js b/apps/files/src/models/Tab.js new file mode 100644 index 0000000000000..b9388730108b8 --- /dev/null +++ b/apps/files/src/models/Tab.js @@ -0,0 +1,57 @@ +/** + * @copyright Copyright (c) 2019 John Molakvoæ + * + * @author John Molakvoæ + * + * @license GNU AGPL version 3 or any later version + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License as + * published by the Free Software Foundation, either version 3 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with this program. If not, see . + * + */ + +export default class Tab { + #component; + #legacy; + #name; + + /** + * Create a new tab instance + * + * @param {String} name the name of this tab + * @param {Object} component the vue component + * @param {Boolean} [legacy] is this a legacy tab + */ + constructor(name, component, legacy) { + this.#name = name + this.#component = component + this.#legacy = legacy === true + + if (this.#legacy) { + console.warn('Legacy tabs are deprecated! They will be removed in nextcloud 20.'); + } + + } + + get name() { + return this.#name + } + + get component() { + return this.#component + } + + get isLegacyTab() { + return this.#legacy === true + } +} \ No newline at end of file diff --git a/apps/files/src/services/FileInfo.js b/apps/files/src/services/FileInfo.js new file mode 100644 index 0000000000000..83bf3dd1d5b86 --- /dev/null +++ b/apps/files/src/services/FileInfo.js @@ -0,0 +1,67 @@ +/** + * @copyright Copyright (c) 2019 John Molakvoæ + * + * @author John Molakvoæ + * + * @license GNU AGPL version 3 or any later version + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License as + * published by the Free Software Foundation, either version 3 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with this program. If not, see . + * + */ + +import axios from 'nextcloud-axios' + +export default async function(url) { + const response = await axios({ + method: 'PROPFIND', + url, + data: ` + + + + + + + + + + + + + + + + + + + + + + ` + }) + + // TODO: create new parser or use cdav-lib when available + const file = OCA.Files.App.fileList.filesClient._client.parseMultiStatus(response.data) + // TODO: create new parser or use cdav-lib when available + const fileInfo = OCA.Files.App.fileList.filesClient._parseFileInfo(file[0]) + + // TODO remove when no more legacy backbone is used + fileInfo.get = (key) => fileInfo[key] + fileInfo.isDirectory = () => fileInfo.mimetype === 'httpd/unix-directory' + + return fileInfo +} diff --git a/apps/files/src/services/Sidebar.js b/apps/files/src/services/Sidebar.js new file mode 100644 index 0000000000000..7df8b9a3a4f5e --- /dev/null +++ b/apps/files/src/services/Sidebar.js @@ -0,0 +1,82 @@ +/** + * @copyright Copyright (c) 2019 John Molakvoæ + * + * @author John Molakvoæ + * + * @license GNU AGPL version 3 or any later version + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License as + * published by the Free Software Foundation, either version 3 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with this program. If not, see . + * + */ + +export default class Sidebar { + + #state; + #view; + + constructor() { + // init empty state + this.#state = {} + + // init default values + this.#state.tabs = [] + this.#state.file = '' + console.debug('OCA.Files.Sidebar initialized') + } + + /** + * Get the sidebar state + * + * @readonly + * @memberof Sidebar + * @returns {Object} the data state + */ + get state() { + return this.#state + } + + /** + * Register a new tab view + * + * @param {Object} tab + */ + registerTab(tab) { + const hasDuplicate = this.#state.tabs.findIndex(check => check.name === tab.name) > -1 + if (!hasDuplicate) { + this.#state.tabs.push(tab) + return true + } + console.error(`An tab with the same name ${tab.name} already exists`, tab); + return false + } + + /** + * Set the current sidebar file data + * + * @memberof Sidebar + */ + set file(path) { + this.#state.file = path + } + + /** + * Set the current sidebar tab + * + * @memberof Sidebar + */ + set activeTab(id) { + this.#state.activeTab = id + } + +} diff --git a/apps/files/src/sidebar.js b/apps/files/src/sidebar.js new file mode 100644 index 0000000000000..8d8e1cd3682a1 --- /dev/null +++ b/apps/files/src/sidebar.js @@ -0,0 +1,55 @@ +/** + * @copyright Copyright (c) 2019 John Molakvoæ + * + * @author John Molakvoæ + * + * @license GNU AGPL version 3 or any later version + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License as + * published by the Free Software Foundation, either version 3 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with this program. If not, see . + * + */ + +import Vue from 'vue' +import SidebarView from './views/Sidebar.vue' +import Sidebar from './services/Sidebar' +import Tab from './models/Tab' + +Vue.prototype.t = t + +window.addEventListener('DOMContentLoaded', () => { + // Init Sidebar Service + if (window.OCA && window.OCA.Files) { + Object.assign(window.OCA.Files, { Sidebar: new Sidebar() }) + Object.assign(window.OCA.Files.Sidebar, { Tab }) + } + + // Make sure we have a proper layout + if (document.getElementById('content')) { + + // Make sure we have a mountpoint + if (!document.getElementById('app-sidebar')) { + var contentElement = document.getElementById('content'); + var sidebarElement = document.createElement('div'); + sidebarElement.id = 'app-sidebar' + contentElement.appendChild(sidebarElement) + } + } + + // Init vue app + OCA.Files.Sidebar.view = new Vue({ + el: '#app-sidebar', + name: 'SidebarRoot', + render: h => h(SidebarView) + }) +}) diff --git a/apps/files/src/views/Sidebar.vue b/apps/files/src/views/Sidebar.vue new file mode 100644 index 0000000000000..2edfaf7c51961 --- /dev/null +++ b/apps/files/src/views/Sidebar.vue @@ -0,0 +1,185 @@ + + + + + \ No newline at end of file diff --git a/apps/files/webpack.js b/apps/files/webpack.js new file mode 100644 index 0000000000000..4007722031ba3 --- /dev/null +++ b/apps/files/webpack.js @@ -0,0 +1,13 @@ +const path = require('path'); + +module.exports = { + entry: { + 'sidebar': path.join(__dirname, 'src', 'sidebar.js'), + }, + output: { + path: path.resolve(__dirname, './js/dist/'), + publicPath: '/js/', + filename: '[name].js', + chunkFilename: 'files.[id].js' + } +} diff --git a/apps/files_sharing/src/collaborationresources.js b/apps/files_sharing/src/collaborationresources.js index d95f367637482..83ce730d39d32 100644 --- a/apps/files_sharing/src/collaborationresources.js +++ b/apps/files_sharing/src/collaborationresources.js @@ -1,4 +1,4 @@ -/* +/** * @copyright Copyright (c) 2019 Julius Härtl * * @author Julius Härtl diff --git a/apps/files_sharing/src/share.js b/apps/files_sharing/src/share.js index 32ca20f3e6243..b503570de5691 100644 --- a/apps/files_sharing/src/share.js +++ b/apps/files_sharing/src/share.js @@ -195,7 +195,7 @@ // do not open sidebar if permission is set and equal to 0 var permissions = parseInt(context.$file.data('share-permissions'), 10); if (isNaN(permissions) || permissions > 0) { - fileList.showDetailsView(fileName, 'shareTabView'); + fileList.showDetailsView(fileName, 'sharing'); } }, render: function(actionSpec, isDefault, context) { @@ -209,7 +209,7 @@ } }); - var shareTab = new OCA.Sharing.ShareTabView('shareTabView', {order: -20}); + var shareTab = new OCA.Sharing.ShareTabView('sharing', {order: -20}); // detect changes and change the matching list entry shareTab.on('sharesChanged', function(shareModel) { var fileInfoModel = shareModel.fileInfoModel; diff --git a/apps/files_sharing/src/sharebreadcrumbview.js b/apps/files_sharing/src/sharebreadcrumbview.js index 17e3eae0bf5a6..d4ebeed2169a7 100644 --- a/apps/files_sharing/src/sharebreadcrumbview.js +++ b/apps/files_sharing/src/sharebreadcrumbview.js @@ -95,7 +95,7 @@ dirInfo: self._dirInfo }); }); - OCA.Files.App.fileList.showDetailsView(fileInfoModel, 'shareTabView'); + OCA.Files.App.fileList.showDetailsView(fileInfoModel, 'sharing'); } }); diff --git a/core/js/files/client.js b/core/js/files/client.js index 98874d165bf35..0daf7c9dc3ffc 100644 --- a/core/js/files/client.js +++ b/core/js/files/client.js @@ -323,6 +323,13 @@ data.isEncrypted = false; } + var isFavouritedProp = props['{' + Client.NS_OWNCLOUD + '}favorite']; + if (!_.isUndefined(isFavouritedProp)) { + data.isFavourited = isFavouritedProp === '1'; + } else { + data.isFavourited = false; + } + var contentType = props[Client.PROPERTY_GETCONTENTTYPE]; if (!_.isUndefined(contentType)) { data.mimetype = contentType; diff --git a/package-lock.json b/package-lock.json index 4c0cd78057d27..0658d2af8c6f3 100644 --- a/package-lock.json +++ b/package-lock.json @@ -172,6 +172,20 @@ } } }, + "@babel/helper-create-class-features-plugin": { + "version": "7.4.4", + "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.4.4.tgz", + "integrity": "sha512-UbBHIa2qeAGgyiNR9RszVF7bUHEdgS4JAUNT8SiqrAN6YJVxlOxeLr5pBzb5kan302dejJ9nla4RyKcR1XT6XA==", + "dev": true, + "requires": { + "@babel/helper-function-name": "^7.1.0", + "@babel/helper-member-expression-to-functions": "^7.0.0", + "@babel/helper-optimise-call-expression": "^7.0.0", + "@babel/helper-plugin-utils": "^7.0.0", + "@babel/helper-replace-supers": "^7.4.4", + "@babel/helper-split-export-declaration": "^7.4.4" + } + }, "@babel/helper-define-map": { "version": "7.4.4", "resolved": "https://registry.npmjs.org/@babel/helper-define-map/-/helper-define-map-7.4.4.tgz", @@ -485,6 +499,16 @@ "@babel/plugin-syntax-async-generators": "^7.2.0" } }, + "@babel/plugin-proposal-class-properties": { + "version": "7.4.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.4.4.tgz", + "integrity": "sha512-WjKTI8g8d5w1Bc9zgwSz2nfrsNQsXcCf9J9cdCvrJV6RF56yztwm4TmJC0MgJ9tvwO9gUA/mcYe89bLdGfiXFg==", + "dev": true, + "requires": { + "@babel/helper-create-class-features-plugin": "^7.4.4", + "@babel/helper-plugin-utils": "^7.0.0" + } + }, "@babel/plugin-proposal-json-strings": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.2.0.tgz", diff --git a/package.json b/package.json index 3c53855a0df9f..5fce65a7e26e2 100644 --- a/package.json +++ b/package.json @@ -63,6 +63,7 @@ }, "devDependencies": { "@babel/core": "^7.4.5", + "@babel/plugin-proposal-class-properties": "^7.4.4", "@babel/plugin-syntax-dynamic-import": "^7.2.0", "@babel/preset-env": "^7.4.5", "babel-loader": "^8.0.6", diff --git a/webpack.common.js b/webpack.common.js index 1fa889b98789c..669957defecfe 100644 --- a/webpack.common.js +++ b/webpack.common.js @@ -2,15 +2,15 @@ const path = require('path'); const merge = require('webpack-merge'); const { VueLoaderPlugin } = require('vue-loader'); -const core = require('./core/webpack'); -const settings = require('./settings/webpack'); - const accessibility = require('./apps/accessibility/webpack'); const comments = require('./apps/comments/webpack'); +const core = require('./core/webpack'); +const files = require('./apps/files/webpack') const files_sharing = require('./apps/files_sharing/webpack'); const files_trashbin = require('./apps/files_trashbin/webpack'); const files_versions = require('./apps/files_versions/webpack'); const oauth2 = require('./apps/oauth2/webpack'); +const settings = require('./settings/webpack'); const systemtags = require('./apps/systemtags/webpack'); const twofactor_backupscodes = require('./apps/twofactor_backupcodes/webpack'); const updatenotifications = require('./apps/updatenotification/webpack'); @@ -18,14 +18,15 @@ const workflowengine = require('./apps/workflowengine/webpack'); module.exports = [] .concat( - core, - settings, accessibility, comments, + core, files_sharing, files_trashbin, files_versions, + files, oauth2, + settings, systemtags, twofactor_backupscodes, updatenotifications, @@ -53,7 +54,7 @@ module.exports = [] loader: 'vue-loader' }, { - test: /\.(png|jpg|gif)$/, + test: /\.(jpe?g|png|gif|svg)$/, loader: 'url-loader', options: { name: '[name].[ext]?[hash]', @@ -76,6 +77,8 @@ module.exports = [] alias: { OC: path.resolve(__dirname, './core/src/OC'), OCA: path.resolve(__dirname, './core/src/OCA'), + // direct apps + Files: path.resolve(__dirname, './apps/files/src'), // make sure to use the handlebar runtime when importing handlebars: 'handlebars/runtime' },