aboutsummaryrefslogtreecommitdiffstats
path: root/dist/dashboard-main.js.map
blob: 33c98338215cf02e837062ffa6f0c504d13e63b9 (plain)
1
{"version":3,"file":"dashboard-main.js?v=b26f1e3d05b37679e001","mappings":"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","sources":["webpack:///nextcloud/webpack/runtime/chunk loaded","webpack:///nextcloud/apps/dashboard/src/mixins/isMobile.js","webpack://nextcloud/./apps/dashboard/src/components/ApiDashboardWidget.vue?7e36","webpack://nextcloud/./node_modules/@nextcloud/vue/dist/assets/index-5fa0ac5a.css?cafc","webpack:///nextcloud/node_modules/@nextcloud/vue/dist/Components/NcActionButtonGroup.mjs","webpack://nextcloud/./node_modules/@nextcloud/vue/dist/assets/index-24f6c355.css?1739","webpack:///nextcloud/node_modules/@nextcloud/vue/dist/Components/NcActionRadio.mjs","webpack://nextcloud/./node_modules/@nextcloud/vue/dist/assets/index-93ad846c.css?b403","webpack:///nextcloud/node_modules/@nextcloud/vue/dist/Components/NcActionTextEditable.mjs","webpack:///nextcloud/node_modules/@nextcloud/vue/dist/Components/NcAppContentDetails.mjs","webpack:///nextcloud/node_modules/@nextcloud/vue/dist/Components/NcAppContentList.mjs","webpack://nextcloud/./node_modules/@nextcloud/vue/dist/assets/index-fc61f2d8.css?f860","webpack:///nextcloud/node_modules/@nextcloud/vue/dist/Components/NcAppNavigationIconBullet.mjs","webpack://nextcloud/./node_modules/@nextcloud/vue/dist/assets/index-93bc89ef.css?ee5f","webpack:///nextcloud/node_modules/@nextcloud/vue/dist/Components/NcAppNavigationNewItem.mjs","webpack://nextcloud/./node_modules/@nextcloud/vue/dist/assets/index-34dfc54e.css?3ad0","webpack:///nextcloud/node_modules/@nextcloud/vue/dist/Components/NcAppNavigationSettings.mjs","webpack://nextcloud/./node_modules/@nextcloud/vue/dist/assets/index-6416f636.css?9b06","webpack://nextcloud/./node_modules/@nextcloud/vue/dist/assets/index-e7eadba7.css?79db","webpack:///nextcloud/node_modules/@nextcloud/vue/dist/Components/NcDashboardWidgetItem.mjs","webpack:///nextcloud/node_modules/@nextcloud/vue/dist/Components/NcDashboardWidget.mjs","webpack://nextcloud/./node_modules/@nextcloud/vue/dist/assets/index-8aa4712e.css?e653","webpack:///nextcloud/node_modules/@nextcloud/vue/dist/Components/NcGuestContent.mjs","webpack://nextcloud/./node_modules/@nextcloud/vue/dist/assets/index-ab715d82.css?da3a","webpack:///nextcloud/node_modules/@nextcloud/vue/dist/Components/NcRelatedResourcesPanel.mjs","webpack:///nextcloud/node_modules/@nextcloud/vue/dist/chunks/referencePickerModal-6bc8f6b9.mjs","webpack:///nextcloud/node_modules/tributejs/dist/tribute.esm.js","webpack:///nextcloud/node_modules/@nextcloud/vue/dist/Components/NcRichContenteditable.mjs","webpack:///nextcloud/node_modules/string-length/index.js","webpack:///nextcloud/node_modules/@nextcloud/vue/dist/chunks/NcRichText-1e8fd02d.mjs","webpack:///nextcloud/node_modules/@nextcloud/vue/dist/Components/NcSavingIndicatorIcon.mjs","webpack://nextcloud/./node_modules/@nextcloud/vue/dist/assets/index-6c47e88a.css?d9ac","webpack:///nextcloud/node_modules/@nextcloud/vue/dist/Components/NcSettingsInputText.mjs","webpack://nextcloud/./node_modules/@nextcloud/vue/dist/assets/NcSettingsSelectGroup-0d38d76b.css?c6e5","webpack:///nextcloud/node_modules/@nextcloud/vue/dist/chunks/NcSettingsSelectGroup-ae323579.mjs","webpack://nextcloud/./node_modules/@nextcloud/vue/dist/assets/index-c221fe05.css?4d04","webpack:///nextcloud/node_modules/@nextcloud/vue/dist/Components/NcUserBubble.mjs","webpack:///nextcloud/node_modules/@nextcloud/vue/dist/index.mjs","webpack:///nextcloud/apps/dashboard/src/components/ApiDashboardWidget.vue","webpack:///nextcloud/apps/dashboard/src/components/ApiDashboardWidget.vue?vue&type=script&lang=js","webpack://nextcloud/./apps/dashboard/src/components/ApiDashboardWidget.vue?858f","webpack:///nextcloud/apps/dashboard/src/DashboardApp.vue","webpack:///nextcloud/apps/dashboard/src/DashboardApp.vue?vue&type=script&lang=js","webpack://nextcloud/./apps/dashboard/src/DashboardApp.vue?d7cf","webpack://nextcloud/./apps/dashboard/src/DashboardApp.vue?9e65","webpack://nextcloud/./apps/dashboard/src/DashboardApp.vue?5685","webpack://nextcloud/./apps/dashboard/src/DashboardApp.vue?1477","webpack:///nextcloud/apps/dashboard/src/main.js","webpack:///nextcloud/node_modules/@nextcloud/vue/dist/assets/NcSettingsSelectGroup-0d38d76b.css","webpack:///nextcloud/node_modules/@nextcloud/vue/dist/assets/index-24f6c355.css","webpack:///nextcloud/node_modules/@nextcloud/vue/dist/assets/index-34dfc54e.css","webpack:///nextcloud/node_modules/@nextcloud/vue/dist/assets/index-5fa0ac5a.css","webpack:///nextcloud/node_modules/@nextcloud/vue/dist/assets/index-6416f636.css","webpack:///nextcloud/node_modules/@nextcloud/vue/dist/assets/index-6c47e88a.css","webpack:///nextcloud/node_modules/@nextcloud/vue/dist/assets/index-8aa4712e.css","webpack:///nextcloud/node_modules/@nextcloud/vue/dist/assets/index-93ad846c.css","webpack:///nextcloud/node_modules/@nextcloud/vue/dist/assets/index-93bc89ef.css","webpack:///nextcloud/node_modules/@nextcloud/vue/dist/assets/index-ab715d82.css","webpack:///nextcloud/node_modules/@nextcloud/vue/dist/assets/index-c221fe05.css","webpack:///nextcloud/node_modules/@nextcloud/vue/dist/assets/index-e7eadba7.css","webpack:///nextcloud/node_modules/@nextcloud/vue/dist/assets/index-fc61f2d8.css","webpack:///nextcloud/apps/dashboard/src/DashboardApp.vue?vue&type=style&index=0&id=9fd44988&prod&lang=scss&scoped=true","webpack:///nextcloud/apps/dashboard/src/DashboardApp.vue?vue&type=style&index=1&id=9fd44988&prod&lang=css","webpack:///nextcloud/node_modules/sortablejs/modular/sortable.esm.js","webpack:///nextcloud/node_modules/vuedraggable/dist/vuedraggable.umd.js","webpack:///nextcloud/webpack/bootstrap","webpack:///nextcloud/webpack/runtime/compat get default export","webpack:///nextcloud/webpack/runtime/define property getters","webpack:///nextcloud/webpack/runtime/ensure chunk","webpack:///nextcloud/webpack/runtime/global","webpack:///nextcloud/webpack/runtime/hasOwnProperty shorthand","webpack:///nextcloud/webpack/runtime/make namespace object","webpack:///nextcloud/webpack/runtime/node module decorator","webpack:///nextcloud/webpack/runtime/runtimeId","webpack:///nextcloud/webpack/runtime/jsonp chunk loading","webpack:///nextcloud/webpack/runtime/nonce","webpack:///nextcloud/webpack/startup"],"sourcesContent":["var deferred = [];\n__webpack_require__.O = (result, chunkIds, fn, priority) => {\n\tif(chunkIds) {\n\t\tpriority = priority || 0;\n\t\tfor(var i = deferred.length; i > 0 && deferred[i - 1][2] > priority; i--) deferred[i] = deferred[i - 1];\n\t\tdeferred[i] = [chunkIds, fn, priority];\n\t\treturn;\n\t}\n\tvar notFulfilled = Infinity;\n\tfor (var i = 0; i < deferred.length; i++) {\n\t\tvar chunkIds = deferred[i][0];\n\t\tvar fn = deferred[i][1];\n\t\tvar priority = deferred[i][2];\n\t\tvar fulfilled = true;\n\t\tfor (var j = 0; j < chunkIds.length; j++) {\n\t\t\tif ((priority & 1 === 0 || notFulfilled >= priority) && Object.keys(__webpack_require__.O).every((key) => (__webpack_require__.O[key](chunkIds[j])))) {\n\t\t\t\tchunkIds.splice(j--, 1);\n\t\t\t} else {\n\t\t\t\tfulfilled = false;\n\t\t\t\tif(priority < notFulfilled) notFulfilled = priority;\n\t\t\t}\n\t\t}\n\t\tif(fulfilled) {\n\t\t\tdeferred.splice(i--, 1)\n\t\t\tvar r = fn();\n\t\t\tif (r !== undefined) result = r;\n\t\t}\n\t}\n\treturn result;\n};","/**\n * @copyright Copyright (c) 2020 Julius Härtl <jus@bitgrid.net>\n *\n * @author Julius Härtl <jus@bitgrid.net>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nexport default {\n\tdata() {\n\t\treturn {\n\t\t\tisMobile: this._isMobile(),\n\t\t}\n\t},\n\tbeforeMount() {\n\t\twindow.addEventListener('resize', this._onResize)\n\t},\n\tbeforeDestroy() {\n\t\twindow.removeEventListener('resize', this._onResize)\n\t},\n\tmethods: {\n\t\t_onResize() {\n\t\t\t// Update mobile mode\n\t\t\tthis.isMobile = this._isMobile()\n\t\t},\n\t\t_isMobile() {\n\t\t\t// check if content width is under 768px\n\t\t\treturn document.documentElement.clientWidth < 768\n\t\t},\n\t},\n}\n","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('NcDashboardWidget',{attrs:{\"items\":_vm.items,\"show-more-label\":_vm.showMoreLabel,\"show-more-url\":_vm.showMoreUrl,\"loading\":_vm.loading,\"show-items-and-empty-content\":!!_vm.halfEmptyContentMessage,\"half-empty-content-message\":_vm.halfEmptyContentMessage},scopedSlots:_vm._u([{key:\"default\",fn:function({ item }){return [_c('NcDashboardWidgetItem',{attrs:{\"target-url\":item.link,\"overlay-icon-url\":item.overlayIconUrl ? item.overlayIconUrl : '',\"main-text\":item.title,\"sub-text\":item.subtitle},scopedSlots:_vm._u([{key:\"avatar\",fn:function(){return [(item.iconUrl)?[_c('NcAvatar',{attrs:{\"size\":44,\"url\":item.iconUrl}})]:_vm._e()]},proxy:true}],null,true)})]}},{key:\"empty-content\",fn:function(){return [(_vm.items.length === 0)?_c('NcEmptyContent',{attrs:{\"description\":_vm.emptyContentMessage},scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [(_vm.emptyContentMessage)?_c('CheckIcon',{attrs:{\"size\":65}}):_vm._e()]},proxy:true},{key:\"action\",fn:function(){return [(_vm.setupButton)?_c('NcButton',{attrs:{\"href\":_vm.setupButton.link}},[_vm._v(\"\\n\\t\\t\\t\\t\\t\"+_vm._s(_vm.setupButton.text)+\"\\n\\t\\t\\t\\t\")]):_vm._e()]},proxy:true}],null,false,4172361897)}):_vm._e()]},proxy:true}])})\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n      import API from \"!../../../../style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n      import domAPI from \"!../../../../style-loader/dist/runtime/styleDomAPI.js\";\n      import insertFn from \"!../../../../style-loader/dist/runtime/insertBySelector.js\";\n      import setAttributes from \"!../../../../style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n      import insertStyleElement from \"!../../../../style-loader/dist/runtime/insertStyleElement.js\";\n      import styleTagTransformFn from \"!../../../../style-loader/dist/runtime/styleTagTransform.js\";\n      import content, * as namedExport from \"!!../../../../css-loader/dist/cjs.js!./index-5fa0ac5a.css\";\n      \n      \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n      options.insert = insertFn.bind(null, \"head\");\n    \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../css-loader/dist/cjs.js!./index-5fa0ac5a.css\";\n       export default content && content.locals ? content.locals : undefined;\n","import \"../assets/index-5fa0ac5a.css\";\nimport { defineComponent as e } from \"vue\";\nimport { n as o } from \"../chunks/_plugin-vue2_normalizer-71e2aa87.mjs\";\nconst r = e({\n  name: \"NcActionButtonGroup\",\n  props: {\n    /**\n     * Optional text shown below the button group\n     */\n    name: {\n      required: !1,\n      default: void 0,\n      type: String\n    }\n  }\n});\nvar s = function() {\n  var n = this, t = n._self._c;\n  return n._self._setupProxy, t(\"li\", { staticClass: \"nc-button-group-base\" }, [n.name ? t(\"div\", [n._v(\" \" + n._s(n.name) + \" \")]) : n._e(), t(\"ul\", { staticClass: \"nc-button-group-content\" }, [n._t(\"default\")], 2)]);\n}, _ = [], u = /* @__PURE__ */ o(\n  r,\n  s,\n  _,\n  !1,\n  null,\n  null,\n  null,\n  null\n);\nconst p = u.exports;\nexport {\n  p as default\n};\n","\n      import API from \"!../../../../style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n      import domAPI from \"!../../../../style-loader/dist/runtime/styleDomAPI.js\";\n      import insertFn from \"!../../../../style-loader/dist/runtime/insertBySelector.js\";\n      import setAttributes from \"!../../../../style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n      import insertStyleElement from \"!../../../../style-loader/dist/runtime/insertStyleElement.js\";\n      import styleTagTransformFn from \"!../../../../style-loader/dist/runtime/styleTagTransform.js\";\n      import content, * as namedExport from \"!!../../../../css-loader/dist/cjs.js!./index-24f6c355.css\";\n      \n      \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n      options.insert = insertFn.bind(null, \"head\");\n    \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../css-loader/dist/cjs.js!./index-24f6c355.css\";\n       export default content && content.locals ? content.locals : undefined;\n","import \"../assets/index-24f6c355.css\";\nimport { A as n } from \"../chunks/actionGlobal-8c1c28c9.mjs\";\nimport { G as s } from \"../chunks/GenRandomId-cb9ccebe.mjs\";\nimport { n as o } from \"../chunks/_plugin-vue2_normalizer-71e2aa87.mjs\";\nconst l = {\n  name: \"NcActionRadio\",\n  mixins: [n],\n  props: {\n    /**\n     * id attribute of the radio element\n     */\n    id: {\n      type: String,\n      default: () => \"action-\" + s(),\n      validator: (t) => t.trim() !== \"\"\n    },\n    /**\n     * checked state of the the radio element\n     */\n    checked: {\n      type: Boolean,\n      default: !1\n    },\n    /**\n     * Define if this radio is part of a set.\n     * Checking the radio will disable all the\n     * others with the same name.\n     */\n    name: {\n      type: String,\n      required: !0\n    },\n    /**\n     * value of the radio input\n     */\n    value: {\n      type: [String, Number],\n      default: \"\"\n    },\n    /**\n     * disabled state of the radio element\n     */\n    disabled: {\n      type: Boolean,\n      default: !1\n    }\n  },\n  emits: [\n    \"update:checked\",\n    \"change\"\n  ],\n  computed: {\n    /**\n     * determines if the action is focusable\n     *\n     * @return {boolean} is the action focusable ?\n     */\n    isFocusable() {\n      return !this.disabled;\n    }\n  },\n  methods: {\n    toggleInput(t) {\n      this.$refs.label.click();\n    },\n    onChange(t) {\n      this.$emit(\"update:checked\", this.$refs.radio.checked), this.$emit(\"change\", t);\n    }\n  }\n};\nvar r = function() {\n  var e = this, i = e._self._c;\n  return i(\"li\", { staticClass: \"action\", class: { \"action--disabled\": e.disabled } }, [i(\"span\", { staticClass: \"action-radio\" }, [i(\"input\", { ref: \"radio\", staticClass: \"radio action-radio__radio\", class: { focusable: e.isFocusable }, attrs: { id: e.id, disabled: e.disabled, name: e.name, type: \"radio\" }, domProps: { checked: e.checked, value: e.value }, on: { keydown: function(a) {\n    return !a.type.indexOf(\"key\") && e._k(a.keyCode, \"enter\", 13, a.key, \"Enter\") || a.ctrlKey || a.shiftKey || a.altKey || a.metaKey ? null : (a.preventDefault(), e.toggleInput.apply(null, arguments));\n  }, change: e.onChange } }), i(\"label\", { ref: \"label\", staticClass: \"action-radio__label\", attrs: { for: e.id } }, [e._v(e._s(e.text))]), e._e()], 2)]);\n}, d = [], c = /* @__PURE__ */ o(\n  l,\n  r,\n  d,\n  !1,\n  null,\n  \"b5f9046e\",\n  null,\n  null\n);\nconst m = c.exports;\nexport {\n  m as default\n};\n","\n      import API from \"!../../../../style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n      import domAPI from \"!../../../../style-loader/dist/runtime/styleDomAPI.js\";\n      import insertFn from \"!../../../../style-loader/dist/runtime/insertBySelector.js\";\n      import setAttributes from \"!../../../../style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n      import insertStyleElement from \"!../../../../style-loader/dist/runtime/insertStyleElement.js\";\n      import styleTagTransformFn from \"!../../../../style-loader/dist/runtime/styleTagTransform.js\";\n      import content, * as namedExport from \"!!../../../../css-loader/dist/cjs.js!./index-93ad846c.css\";\n      \n      \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n      options.insert = insertFn.bind(null, \"head\");\n    \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../css-loader/dist/cjs.js!./index-93ad846c.css\";\n       export default content && content.locals ? content.locals : undefined;\n","import \"../assets/index-93ad846c.css\";\nimport { A as n } from \"../chunks/actionText-a64be267.mjs\";\nimport { G as i } from \"../chunks/GenRandomId-cb9ccebe.mjs\";\nimport { A as l } from \"../chunks/ArrowRight-74a9fcb2.mjs\";\nimport { n as o } from \"../chunks/_plugin-vue2_normalizer-71e2aa87.mjs\";\nconst r = {\n  name: \"NcActionTextEditable\",\n  components: {\n    ArrowRight: l\n  },\n  mixins: [n],\n  props: {\n    /**\n     * id attribute of the checkbox element\n     */\n    id: {\n      type: String,\n      default: () => \"action-\" + i(),\n      validator: (e) => e.trim() !== \"\"\n    },\n    /**\n     * disabled state of the text area\n     */\n    disabled: {\n      type: Boolean,\n      default: !1\n    },\n    /**\n     * value attribute of the input field\n     */\n    value: {\n      type: String,\n      default: \"\"\n    }\n  },\n  emits: [\n    \"input\",\n    \"update:value\",\n    \"submit\"\n  ],\n  computed: {\n    /**\n     * determines if the action is focusable\n     *\n     * @return {boolean} is the action focusable ?\n     */\n    isFocusable() {\n      return !this.disabled;\n    },\n    computedId() {\n      return i();\n    }\n  },\n  methods: {\n    onInput(e) {\n      this.$emit(\"input\", e), this.$emit(\"update:value\", e.target.value);\n    },\n    onSubmit(e) {\n      if (e.preventDefault(), e.stopPropagation(), !this.disabled)\n        this.$emit(\"submit\", e);\n      else\n        return !1;\n    }\n  }\n};\nvar d = function() {\n  var t = this, a = t._self._c;\n  return a(\"li\", { staticClass: \"action\", class: { \"action--disabled\": t.disabled } }, [a(\"span\", { staticClass: \"action-text-editable\", on: { click: t.onClick } }, [t._t(\"icon\", function() {\n    return [a(\"span\", { staticClass: \"action-text-editable__icon\", class: [t.isIconUrl ? \"action-text-editable__icon--url\" : t.icon], style: { backgroundImage: t.isIconUrl ? `url(${t.icon})` : null } })];\n  }), a(\"form\", { ref: \"form\", staticClass: \"action-text-editable__form\", attrs: { disabled: t.disabled }, on: { submit: function(s) {\n    return s.preventDefault(), t.onSubmit.apply(null, arguments);\n  } } }, [a(\"input\", { staticClass: \"action-text-editable__submit\", attrs: { id: t.id, type: \"submit\" } }), t.name ? a(\"label\", { staticClass: \"action-text-editable__name\", attrs: { for: t.computedId } }, [t._v(\" \" + t._s(t.name) + \" \")]) : t._e(), a(\"textarea\", t._b({ class: [\"action-text-editable__textarea\", { focusable: t.isFocusable }], attrs: { id: t.computedId, disabled: t.disabled }, domProps: { value: t.value }, on: { input: t.onInput } }, \"textarea\", t.$attrs, !1)), a(\"label\", { directives: [{ name: \"show\", rawName: \"v-show\", value: !t.disabled, expression: \"!disabled\" }], staticClass: \"action-text-editable__label\", attrs: { for: t.id } }, [a(\"ArrowRight\", { attrs: { size: 20 } })], 1)])], 2)]);\n}, c = [], u = /* @__PURE__ */ o(\n  r,\n  d,\n  c,\n  !1,\n  null,\n  \"b0b05af8\",\n  null,\n  null\n);\nconst x = u.exports;\nexport {\n  x as default\n};\n","import { n as e } from \"../chunks/_plugin-vue2_normalizer-71e2aa87.mjs\";\nconst a = {\n  name: \"NcAppContentDetails\"\n};\nvar s = function() {\n  var n = this, t = n._self._c;\n  return t(\"div\", { staticClass: \"app-content-details\" }, [n._t(\"default\")], 2);\n}, l = [], r = /* @__PURE__ */ e(\n  a,\n  s,\n  l,\n  !1,\n  null,\n  null,\n  null,\n  null\n);\nconst c = r.exports;\nexport {\n  c as default\n};\n","import { n as s } from \"../chunks/_plugin-vue2_normalizer-71e2aa87.mjs\";\nconst n = {\n  name: \"NcAppContentList\",\n  props: {\n    selection: {\n      type: Boolean,\n      default: !1\n    },\n    showDetails: {\n      type: Boolean,\n      default: !1\n    }\n  }\n};\nvar l = function() {\n  var e = this, t = e._self._c;\n  return t(\"div\", { staticClass: \"app-content-list\", class: { selection: e.selection, showdetails: e.showDetails } }, [e._t(\"default\")], 2);\n}, a = [], o = /* @__PURE__ */ s(\n  n,\n  l,\n  a,\n  !1,\n  null,\n  null,\n  null,\n  null\n);\nconst r = o.exports;\nexport {\n  r as default\n};\n","\n      import API from \"!../../../../style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n      import domAPI from \"!../../../../style-loader/dist/runtime/styleDomAPI.js\";\n      import insertFn from \"!../../../../style-loader/dist/runtime/insertBySelector.js\";\n      import setAttributes from \"!../../../../style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n      import insertStyleElement from \"!../../../../style-loader/dist/runtime/insertStyleElement.js\";\n      import styleTagTransformFn from \"!../../../../style-loader/dist/runtime/styleTagTransform.js\";\n      import content, * as namedExport from \"!!../../../../css-loader/dist/cjs.js!./index-fc61f2d8.css\";\n      \n      \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n      options.insert = insertFn.bind(null, \"head\");\n    \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../css-loader/dist/cjs.js!./index-fc61f2d8.css\";\n       export default content && content.locals ? content.locals : undefined;\n","import \"../assets/index-fc61f2d8.css\";\nimport { n } from \"../chunks/_plugin-vue2_normalizer-71e2aa87.mjs\";\nconst r = {\n  name: \"NcAppNavigationIconBullet\",\n  props: {\n    color: {\n      type: String,\n      required: !0,\n      validator(t) {\n        return /^#?([0-9A-F]{3}){1,2}$/i.test(t);\n      }\n    }\n  },\n  emits: [\"click\"],\n  computed: {\n    formattedColor() {\n      return this.color.startsWith(\"#\") ? this.color : \"#\" + this.color;\n    }\n  },\n  methods: {\n    onClick(t) {\n      this.$emit(\"click\", t);\n    }\n  }\n};\nvar i = function() {\n  var o = this, e = o._self._c;\n  return e(\"div\", { staticClass: \"app-navigation-entry__icon-bullet\", on: { click: o.onClick } }, [e(\"div\", { style: { backgroundColor: o.formattedColor } })]);\n}, l = [], c = /* @__PURE__ */ n(\n  r,\n  i,\n  l,\n  !1,\n  null,\n  \"91580127\",\n  null,\n  null\n);\nconst _ = c.exports;\nexport {\n  _ as default\n};\n","\n      import API from \"!../../../../style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n      import domAPI from \"!../../../../style-loader/dist/runtime/styleDomAPI.js\";\n      import insertFn from \"!../../../../style-loader/dist/runtime/insertBySelector.js\";\n      import setAttributes from \"!../../../../style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n      import insertStyleElement from \"!../../../../style-loader/dist/runtime/insertStyleElement.js\";\n      import styleTagTransformFn from \"!../../../../style-loader/dist/runtime/styleTagTransform.js\";\n      import content, * as namedExport from \"!!../../../../css-loader/dist/cjs.js!./index-93bc89ef.css\";\n      \n      \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n      options.insert = insertFn.bind(null, \"head\");\n    \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../css-loader/dist/cjs.js!./index-93bc89ef.css\";\n       export default content && content.locals ? content.locals : undefined;\n","import \"../assets/index-93bc89ef.css\";\nimport { N as a } from \"../chunks/NcInputConfirmCancel-906c7816.mjs\";\nimport i from \"./NcLoadingIcon.mjs\";\nimport { n as l } from \"../chunks/_plugin-vue2_normalizer-71e2aa87.mjs\";\nconst o = {\n  name: \"NcAppNavigationNewItem\",\n  components: {\n    NcInputConfirmCancel: a,\n    NcLoadingIcon: i\n  },\n  props: {\n    /**\n     * The name of the element.\n     */\n    name: {\n      type: String,\n      required: !0\n    },\n    /**\n     * Refers to the icon on the left, this prop accepts a class\n     * like 'icon-category-enabled'.\n     */\n    icon: {\n      type: String,\n      default: \"\"\n    },\n    /**\n     * Displays a loading animated icon on the left of the element\n     * instead of the icon.\n     */\n    loading: {\n      type: Boolean,\n      default: !1\n    },\n    /**\n     * Only for 'editable' items, sets label for the edit action button.\n     */\n    editLabel: {\n      type: String,\n      default: \"\"\n    },\n    /**\n     * Sets the placeholder text for the editing form.\n     */\n    editPlaceholder: {\n      type: String,\n      default: \"\"\n    }\n  },\n  emits: [\"new-item\"],\n  data() {\n    return {\n      newItemValue: \"\",\n      newItemActive: !1\n    };\n  },\n  methods: {\n    handleNewItem() {\n      this.loading || (this.newItemActive = !0, this.$nextTick(() => {\n        this.$refs.newItemInput.focusInput();\n      }));\n    },\n    cancelNewItem() {\n      this.newItemActive = !1;\n    },\n    handleNewItemDone() {\n      this.$emit(\"new-item\", this.newItemValue), this.newItemValue = \"\", this.newItemActive = !1;\n    }\n  }\n};\nvar s = function() {\n  var e = this, t = e._self._c;\n  return t(\"li\", { staticClass: \"app-navigation-entry\", class: {\n    \"app-navigation-entry--newItemActive\": e.newItemActive\n  } }, [t(\"button\", { staticClass: \"app-navigation-entry-button\", on: { click: e.handleNewItem } }, [t(\"span\", { staticClass: \"app-navigation-entry-icon\", class: { [e.icon]: !e.loading } }, [e.loading ? t(\"NcLoadingIcon\") : e._t(\"icon\")], 2), e.newItemActive ? e._e() : t(\"span\", { staticClass: \"app-navigation-new-item__name\", attrs: { title: e.name } }, [e._v(\" \" + e._s(e.name) + \" \")]), e.newItemActive ? t(\"span\", { staticClass: \"newItemContainer\" }, [t(\"NcInputConfirmCancel\", { ref: \"newItemInput\", attrs: { placeholder: e.editPlaceholder !== \"\" ? e.editPlaceholder : e.name }, on: { cancel: e.cancelNewItem, confirm: e.handleNewItemDone }, model: { value: e.newItemValue, callback: function(n) {\n    e.newItemValue = n;\n  }, expression: \"newItemValue\" } })], 1) : e._e()])]);\n}, c = [], m = /* @__PURE__ */ l(\n  o,\n  s,\n  c,\n  !1,\n  null,\n  \"8950be04\",\n  null,\n  null\n);\nconst _ = m.exports;\nexport {\n  _ as default\n};\n","\n      import API from \"!../../../../style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n      import domAPI from \"!../../../../style-loader/dist/runtime/styleDomAPI.js\";\n      import insertFn from \"!../../../../style-loader/dist/runtime/insertBySelector.js\";\n      import setAttributes from \"!../../../../style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n      import insertStyleElement from \"!../../../../style-loader/dist/runtime/insertStyleElement.js\";\n      import styleTagTransformFn from \"!../../../../style-loader/dist/runtime/styleTagTransform.js\";\n      import content, * as namedExport from \"!!../../../../css-loader/dist/cjs.js!./index-34dfc54e.css\";\n      \n      \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n      options.insert = insertFn.bind(null, \"head\");\n    \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../css-loader/dist/cjs.js!./index-34dfc54e.css\";\n       export default content && content.locals ? content.locals : undefined;\n","import \"../assets/index-34dfc54e.css\";\nimport { t as i } from \"../chunks/l10n-f692947e.mjs\";\nimport o from \"../Mixins/clickOutsideOptions.mjs\";\nimport \"vue\";\nimport \"@nextcloud/router\";\n/* empty css                                                                                   */import { n as s } from \"../chunks/_plugin-vue2_normalizer-71e2aa87.mjs\";\nimport \"linkify-string\";\nimport \"escape-html\";\nimport \"striptags\";\nimport \"@nextcloud/auth\";\nimport \"@nextcloud/axios\";\nimport \"@nextcloud/capabilities\";\nimport { vOnClickOutside as r } from \"@vueuse/components\";\nconst l = {\n  name: \"CogIcon\",\n  emits: [\"click\"],\n  props: {\n    title: {\n      type: String\n    },\n    fillColor: {\n      type: String,\n      default: \"currentColor\"\n    },\n    size: {\n      type: Number,\n      default: 24\n    }\n  }\n};\nvar c = function() {\n  var t = this, e = t._self._c;\n  return e(\"span\", t._b({ staticClass: \"material-design-icon cog-icon\", attrs: { \"aria-hidden\": !t.title, \"aria-label\": t.title, role: \"img\" }, on: { click: function(a) {\n    return t.$emit(\"click\", a);\n  } } }, \"span\", t.$attrs, !1), [e(\"svg\", { staticClass: \"material-design-icon__svg\", attrs: { fill: t.fillColor, width: t.size, height: t.size, viewBox: \"0 0 24 24\" } }, [e(\"path\", { attrs: { d: \"M12,15.5A3.5,3.5 0 0,1 8.5,12A3.5,3.5 0 0,1 12,8.5A3.5,3.5 0 0,1 15.5,12A3.5,3.5 0 0,1 12,15.5M19.43,12.97C19.47,12.65 19.5,12.33 19.5,12C19.5,11.67 19.47,11.34 19.43,11L21.54,9.37C21.73,9.22 21.78,8.95 21.66,8.73L19.66,5.27C19.54,5.05 19.27,4.96 19.05,5.05L16.56,6.05C16.04,5.66 15.5,5.32 14.87,5.07L14.5,2.42C14.46,2.18 14.25,2 14,2H10C9.75,2 9.54,2.18 9.5,2.42L9.13,5.07C8.5,5.32 7.96,5.66 7.44,6.05L4.95,5.05C4.73,4.96 4.46,5.05 4.34,5.27L2.34,8.73C2.21,8.95 2.27,9.22 2.46,9.37L4.57,11C4.53,11.34 4.5,11.67 4.5,12C4.5,12.33 4.53,12.65 4.57,12.97L2.46,14.63C2.27,14.78 2.21,15.05 2.34,15.27L4.34,18.73C4.46,18.95 4.73,19.03 4.95,18.95L7.44,17.94C7.96,18.34 8.5,18.68 9.13,18.93L9.5,21.58C9.54,21.82 9.75,22 10,22H14C14.25,22 14.46,21.82 14.5,21.58L14.87,18.93C15.5,18.67 16.04,18.34 16.56,17.94L19.05,18.95C19.27,19.03 19.54,18.95 19.66,18.73L21.66,15.27C21.78,15.05 21.73,14.78 21.54,14.63L19.43,12.97Z\" } }, [t.title ? e(\"title\", [t._v(t._s(t.title))]) : t._e()])])]);\n}, p = [], _ = /* @__PURE__ */ s(\n  l,\n  c,\n  p,\n  !1,\n  null,\n  null,\n  null,\n  null\n);\nconst u = _.exports;\nconst d = {\n  directives: {\n    ClickOutside: r\n  },\n  components: {\n    Cog: u\n  },\n  mixins: [\n    o\n  ],\n  props: {\n    name: {\n      type: String,\n      required: !1,\n      default: i(\"Settings\")\n    }\n  },\n  data() {\n    return {\n      open: !1\n    };\n  },\n  computed: {\n    clickOutsideConfig() {\n      return [\n        this.closeMenu,\n        this.clickOutsideOptions\n      ];\n    },\n    ariaLabel() {\n      return i(\"Open settings menu\");\n    }\n  },\n  methods: {\n    toggleMenu() {\n      this.open = !this.open;\n    },\n    closeMenu() {\n      this.open = !1;\n    }\n  }\n};\nvar m = function() {\n  var t = this, e = t._self._c;\n  return e(\"div\", { directives: [{ name: \"click-outside\", rawName: \"v-click-outside\", value: t.clickOutsideConfig, expression: \"clickOutsideConfig\" }], class: { open: t.open }, attrs: { id: \"app-settings\" } }, [e(\"div\", { attrs: { id: \"app-settings__header\" } }, [e(\"button\", { staticClass: \"settings-button\", attrs: { type: \"button\", \"aria-expanded\": t.open ? \"true\" : \"false\", \"aria-controls\": \"app-settings__content\", \"aria-label\": t.ariaLabel }, on: { click: t.toggleMenu } }, [e(\"Cog\", { staticClass: \"settings-button__icon\", attrs: { size: 20 } }), e(\"span\", { staticClass: \"settings-button__label\" }, [t._v(t._s(t.name))])], 1)]), e(\"transition\", { attrs: { name: \"slide-up\" } }, [e(\"div\", { directives: [{ name: \"show\", rawName: \"v-show\", value: t.open, expression: \"open\" }], attrs: { id: \"app-settings__content\" } }, [t._t(\"default\")], 2)])], 1);\n}, C = [], g = /* @__PURE__ */ s(\n  d,\n  m,\n  C,\n  !1,\n  null,\n  \"db4cc195\",\n  null,\n  null\n);\nconst $ = g.exports;\nexport {\n  $ as default\n};\n","\n      import API from \"!../../../../style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n      import domAPI from \"!../../../../style-loader/dist/runtime/styleDomAPI.js\";\n      import insertFn from \"!../../../../style-loader/dist/runtime/insertBySelector.js\";\n      import setAttributes from \"!../../../../style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n      import insertStyleElement from \"!../../../../style-loader/dist/runtime/insertStyleElement.js\";\n      import styleTagTransformFn from \"!../../../../style-loader/dist/runtime/styleTagTransform.js\";\n      import content, * as namedExport from \"!!../../../../css-loader/dist/cjs.js!./index-6416f636.css\";\n      \n      \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n      options.insert = insertFn.bind(null, \"head\");\n    \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../css-loader/dist/cjs.js!./index-6416f636.css\";\n       export default content && content.locals ? content.locals : undefined;\n","\n      import API from \"!../../../../style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n      import domAPI from \"!../../../../style-loader/dist/runtime/styleDomAPI.js\";\n      import insertFn from \"!../../../../style-loader/dist/runtime/insertBySelector.js\";\n      import setAttributes from \"!../../../../style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n      import insertStyleElement from \"!../../../../style-loader/dist/runtime/insertStyleElement.js\";\n      import styleTagTransformFn from \"!../../../../style-loader/dist/runtime/styleTagTransform.js\";\n      import content, * as namedExport from \"!!../../../../css-loader/dist/cjs.js!./index-e7eadba7.css\";\n      \n      \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n      options.insert = insertFn.bind(null, \"head\");\n    \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../css-loader/dist/cjs.js!./index-e7eadba7.css\";\n       export default content && content.locals ? content.locals : undefined;\n","import \"../assets/index-e7eadba7.css\";\nimport { N as i } from \"../chunks/index-fbf943b3.mjs\";\nimport o from \"./NcActions.mjs\";\nimport l from \"./NcActionButton.mjs\";\nimport { n as u } from \"../chunks/_plugin-vue2_normalizer-71e2aa87.mjs\";\nconst c = {\n  name: \"NcDashboardWidgetItem\",\n  components: {\n    NcAvatar: i,\n    NcActions: o,\n    NcActionButton: l\n  },\n  props: {\n    /**\n     * The item id (optional)\n     */\n    id: {\n      type: [String, Number],\n      default: void 0\n    },\n    /**\n     * The item element is a link to this URL (optional)\n     */\n    targetUrl: {\n      type: String,\n      default: void 0\n    },\n    /**\n     * Where to get the avatar image. (optional) Used if avatarUsername is not defined.\n     */\n    avatarUrl: {\n      type: String,\n      default: void 0\n    },\n    /**\n     * Name to provide to the Avatar. (optional) Used if avatarUrl is not defined.\n     */\n    avatarUsername: {\n      type: String,\n      default: void 0\n    },\n    /**\n     * Is the avatarUsername not a user's name? (optional, false by default)\n     */\n    avatarIsNoUser: {\n      type: Boolean,\n      default: !1\n    },\n    /**\n     * Small icon to display on the bottom-right corner of the avatar (optional)\n     */\n    overlayIconUrl: {\n      type: String,\n      default: void 0\n    },\n    /**\n     * Item main text (mandatory)\n     */\n    mainText: {\n      type: String,\n      required: !0\n    },\n    /**\n     * Item subline text (optional)\n     */\n    subText: {\n      type: String,\n      default: \"\"\n    },\n    /**\n     * An object containing context menu entries that will be displayed for each items (optional)\n     */\n    itemMenu: {\n      type: Object,\n      default: () => ({})\n    },\n    /**\n     * Specify whether the 3 dot menu is forced when only one action is present\n     */\n    forceMenu: {\n      type: Boolean,\n      default: !0\n    }\n  },\n  data() {\n    return {\n      hovered: !1\n    };\n  },\n  computed: {\n    item() {\n      return {\n        id: this.id,\n        targetUrl: this.targetUrl,\n        avatarUrl: this.avatarUrl,\n        avatarUsername: this.avatarUsername,\n        overlayIconUrl: this.overlayIconUrl,\n        mainText: this.mainText,\n        subText: this.subText\n      };\n    },\n    gotMenu() {\n      return Object.keys(this.itemMenu).length !== 0 || !!this.$slots.actions;\n    },\n    gotOverlayIcon() {\n      return this.overlayIconUrl && this.overlayIconUrl !== \"\";\n    }\n  },\n  methods: {\n    onLinkClick(r) {\n      r.target.closest(\".action-item\") && r.preventDefault();\n    }\n  }\n};\nvar m = function() {\n  var t = this, e = t._self._c;\n  return e(\"div\", { on: { mouseover: function(a) {\n    t.hovered = !0;\n  }, mouseleave: function(a) {\n    t.hovered = !1;\n  } } }, [e(t.targetUrl ? \"a\" : \"div\", { tag: \"component\", class: { \"item-list__entry\": !0, \"item-list__entry--has-actions-menu\": t.gotMenu }, attrs: { href: t.targetUrl || void 0, target: t.targetUrl ? \"_blank\" : void 0 }, on: { click: t.onLinkClick } }, [t._t(\"avatar\", function() {\n    return [e(\"NcAvatar\", { staticClass: \"item-avatar\", attrs: { size: 44, url: t.avatarUrl, user: t.avatarUsername, \"is-no-user\": t.avatarIsNoUser, \"show-user-status\": !t.gotOverlayIcon } })];\n  }, { avatarUrl: t.avatarUrl, avatarUsername: t.avatarUsername }), t.overlayIconUrl ? e(\"img\", { staticClass: \"item-icon\", attrs: { alt: \"\", src: t.overlayIconUrl } }) : t._e(), e(\"div\", { staticClass: \"item__details\" }, [e(\"h3\", { attrs: { title: t.mainText } }, [t._v(\" \" + t._s(t.mainText) + \" \")]), e(\"span\", { staticClass: \"message\", attrs: { title: t.subText } }, [t._v(\" \" + t._s(t.subText) + \" \")])]), t.gotMenu ? e(\"NcActions\", { attrs: { \"force-menu\": t.forceMenu } }, [t._t(\"actions\", function() {\n    return t._l(t.itemMenu, function(a, n) {\n      return e(\"NcActionButton\", { key: n, attrs: { icon: a.icon, \"close-after-click\": !0 }, on: { click: function(s) {\n        return s.preventDefault(), s.stopPropagation(), t.$emit(n, t.item);\n      } } }, [t._v(\" \" + t._s(a.text) + \" \")]);\n    });\n  })], 2) : t._e()], 2)], 1);\n}, d = [], v = /* @__PURE__ */ u(\n  c,\n  m,\n  d,\n  !1,\n  null,\n  \"00e861ef\",\n  null,\n  null\n);\nconst y = v.exports;\nexport {\n  y as default\n};\n","import \"../assets/index-6416f636.css\";\nimport { N as r } from \"../chunks/index-fbf943b3.mjs\";\nimport o from \"./NcDashboardWidgetItem.mjs\";\nimport a from \"./NcEmptyContent.mjs\";\nimport { C as i } from \"../chunks/Check-2ea0a88a.mjs\";\nimport { t as m } from \"../chunks/l10n-f692947e.mjs\";\nimport { n as l } from \"../chunks/_plugin-vue2_normalizer-71e2aa87.mjs\";\nconst c = {\n  name: \"NcDashboardWidget\",\n  components: {\n    NcAvatar: r,\n    NcDashboardWidgetItem: o,\n    NcEmptyContent: a,\n    Check: i\n  },\n  props: {\n    /**\n     * An array containing the items to show (specific structure must be respected,\n     * except if you override item rendering in the default slot).\n     */\n    items: {\n      type: Array,\n      default: () => []\n    },\n    /**\n     * If this is set, a \"show more\" text is displayed on the widget's bottom.\n     * It's a link pointing to this URL.\n     */\n    showMoreUrl: {\n      type: String,\n      default: \"\"\n    },\n    /**\n     * The text of show more button.\n     *\n     * Expected to be in the form \"More {itemName} …\"\n     */\n    showMoreLabel: {\n      type: String,\n      default: m(\"More items …\")\n    },\n    /**\n     * A boolean to put the widget in a loading state.\n     */\n    loading: {\n      type: Boolean,\n      default: !1\n    },\n    /**\n     * An object containing context menu entries that will be displayed for each item.\n     */\n    itemMenu: {\n      type: Object,\n      default: () => ({})\n    },\n    /**\n     * Whether both the items and the empty content message are shown.\n     * Usefull for e.g. showing \"No mentions\" and a list of elements.\n     */\n    showItemsAndEmptyContent: {\n      type: Boolean,\n      default: !1\n    },\n    /**\n     * The text to show in the empty content area.\n     */\n    emptyContentMessage: {\n      type: String,\n      default: \"\"\n    },\n    /**\n     * The text to show in the half empty content area.\n     */\n    halfEmptyContentMessage: {\n      type: String,\n      default: \"\"\n    }\n  },\n  computed: {\n    // forward menu events to my parent\n    handlers() {\n      const n = {};\n      for (const t in this.itemMenu)\n        n[t] = (e) => {\n          this.$emit(t, e);\n        };\n      return n;\n    },\n    displayedItems() {\n      const n = this.showMoreUrl && this.items.length >= this.maxItemNumber ? this.maxItemNumber - 1 : this.maxItemNumber;\n      return this.items.slice(0, n);\n    },\n    showHalfEmptyContentArea() {\n      return this.showItemsAndEmptyContent && this.halfEmptyContentString && this.items.length !== 0;\n    },\n    halfEmptyContentString() {\n      return this.halfEmptyContentMessage || this.emptyContentMessage;\n    },\n    maxItemNumber() {\n      return this.showItemsAndEmptyContent ? 5 : 7;\n    },\n    showMore() {\n      return this.showMoreUrl && this.items.length >= this.maxItemNumber;\n    }\n  }\n};\nvar u = function() {\n  var t = this, e = t._self._c;\n  return e(\"div\", { staticClass: \"dashboard-widget\" }, [t.showHalfEmptyContentArea ? e(\"NcEmptyContent\", { staticClass: \"half-screen\", attrs: { description: t.halfEmptyContentString }, scopedSlots: t._u([{ key: \"icon\", fn: function() {\n    return [t._t(\"halfEmptyContentIcon\", function() {\n      return [e(\"Check\")];\n    })];\n  }, proxy: !0 }], null, !0) }) : t._e(), e(\"ul\", t._l(t.displayedItems, function(s) {\n    return e(\"li\", { key: s.id }, [t._t(\"default\", function() {\n      return [e(\"NcDashboardWidgetItem\", t._g(t._b({ attrs: { \"item-menu\": t.itemMenu } }, \"NcDashboardWidgetItem\", s, !1), t.handlers))];\n    }, { item: s })], 2);\n  }), 0), t.loading ? e(\"div\", t._l(7, function(s) {\n    return e(\"div\", { key: s, staticClass: \"item-list__entry\" }, [e(\"NcAvatar\", { staticClass: \"item-avatar\", attrs: { size: 44 } }), t._m(0, !0)], 1);\n  }), 0) : t.items.length === 0 ? t._t(\"empty-content\", function() {\n    return [t.emptyContentMessage ? e(\"NcEmptyContent\", { attrs: { description: t.emptyContentMessage }, scopedSlots: t._u([{ key: \"icon\", fn: function() {\n      return [t._t(\"emptyContentIcon\")];\n    }, proxy: !0 }], null, !0) }) : t._e()];\n  }) : t.showMore ? e(\"a\", { staticClass: \"more\", attrs: { href: t.showMoreUrl, target: \"_blank\", tabindex: \"0\" } }, [t._v(\" \" + t._s(t.showMoreLabel) + \" \")]) : t._e()], 2);\n}, h = [function() {\n  var n = this, t = n._self._c;\n  return t(\"div\", { staticClass: \"item__details\" }, [t(\"h3\", [n._v(\" \")]), t(\"p\", { staticClass: \"message\" }, [n._v(\"   \")])]);\n}], p = /* @__PURE__ */ l(\n  c,\n  u,\n  h,\n  !1,\n  null,\n  \"1efcbeee\",\n  null,\n  null\n);\nconst v = p.exports;\nexport {\n  v as default\n};\n","\n      import API from \"!../../../../style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n      import domAPI from \"!../../../../style-loader/dist/runtime/styleDomAPI.js\";\n      import insertFn from \"!../../../../style-loader/dist/runtime/insertBySelector.js\";\n      import setAttributes from \"!../../../../style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n      import insertStyleElement from \"!../../../../style-loader/dist/runtime/insertStyleElement.js\";\n      import styleTagTransformFn from \"!../../../../style-loader/dist/runtime/styleTagTransform.js\";\n      import content, * as namedExport from \"!!../../../../css-loader/dist/cjs.js!./index-8aa4712e.css\";\n      \n      \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n      options.insert = insertFn.bind(null, \"head\");\n    \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../css-loader/dist/cjs.js!./index-8aa4712e.css\";\n       export default content && content.locals ? content.locals : undefined;\n","import \"../assets/index-8aa4712e.css\";\nimport { n } from \"../chunks/_plugin-vue2_normalizer-71e2aa87.mjs\";\nconst s = {\n  name: \"NcGuestContent\",\n  mounted() {\n    document.getElementById(\"content\").classList.add(\"nc-guest-content\");\n  },\n  destroyed() {\n    document.getElementById(\"content\").classList.remove(\"nc-guest-content\");\n  }\n};\nvar _ = function() {\n  var t = this, e = t._self._c;\n  return e(\"div\", { attrs: { id: \"guest-content-vue\" } }, [t._t(\"default\")], 2);\n}, c = [], o = /* @__PURE__ */ n(\n  s,\n  _,\n  c,\n  !1,\n  null,\n  \"36ad47ca\",\n  null,\n  null\n);\nconst r = o.exports;\nexport {\n  r as default\n};\n","\n      import API from \"!../../../../style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n      import domAPI from \"!../../../../style-loader/dist/runtime/styleDomAPI.js\";\n      import insertFn from \"!../../../../style-loader/dist/runtime/insertBySelector.js\";\n      import setAttributes from \"!../../../../style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n      import insertStyleElement from \"!../../../../style-loader/dist/runtime/insertStyleElement.js\";\n      import styleTagTransformFn from \"!../../../../style-loader/dist/runtime/styleTagTransform.js\";\n      import content, * as namedExport from \"!!../../../../css-loader/dist/cjs.js!./index-ab715d82.css\";\n      \n      \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n      options.insert = insertFn.bind(null, \"head\");\n    \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../css-loader/dist/cjs.js!./index-ab715d82.css\";\n       export default content && content.locals ? content.locals : undefined;\n","import \"../assets/index-ab715d82.css\";\nimport o from \"@nextcloud/axios\";\nimport { generateOcsUrl as l } from \"@nextcloud/router\";\nimport a from \"./NcButton.mjs\";\nimport { t as s } from \"../chunks/l10n-f692947e.mjs\";\nimport { n } from \"../chunks/_plugin-vue2_normalizer-71e2aa87.mjs\";\nconst u = {\n  name: \"NcResource\",\n  components: {\n    NcButton: a\n  },\n  props: {\n    icon: {\n      type: String,\n      required: !0\n    },\n    name: {\n      type: String,\n      required: !0\n    },\n    url: {\n      type: String,\n      required: !0\n    }\n  },\n  data() {\n    return {\n      labelTranslated: s('Open link to \"{resourceName}\"', { resourceName: this.name })\n    };\n  },\n  methods: {\n    t: s\n  }\n};\nvar c = function() {\n  var e = this, t = e._self._c;\n  return t(\"li\", { staticClass: \"resource\" }, [t(\"NcButton\", { staticClass: \"resource__button\", attrs: { \"aria-label\": e.labelTranslated, type: \"tertiary\", href: e.url }, scopedSlots: e._u([{ key: \"icon\", fn: function() {\n    return [t(\"div\", { staticClass: \"resource__icon\" }, [t(\"img\", { attrs: { src: e.icon } })])];\n  }, proxy: !0 }]) }, [e._v(\" \" + e._s(e.name) + \" \")])], 1);\n}, d = [], p = /* @__PURE__ */ n(\n  u,\n  c,\n  d,\n  !1,\n  null,\n  \"1a960bef\",\n  null,\n  null\n);\nconst f = p.exports;\nconst _ = {\n  name: \"NcRelatedResourcesPanel\",\n  components: {\n    NcResource: f\n  },\n  props: {\n    /**\n     * The provider id implemented with `\\OCA\\RelatedResources\\IRelatedResourceProvider::getProviderId()`\n     */\n    providerId: {\n      type: String,\n      default: null\n    },\n    /**\n     * The item id which uniquely identities the e.g. Calendar event, Deck board, file, Talk room, etc.\n     */\n    itemId: {\n      type: [String, Number],\n      default: null\n    },\n    /**\n     * Limits to specific resource type. i.e. any provider id implemented with `\\OCA\\RelatedResources\\IRelatedResourceProvider::getProviderId()`\n     */\n    resourceType: {\n      type: String,\n      default: null\n    },\n    /**\n     * Set the maximum number of resources to load\n     */\n    limit: {\n      type: Number,\n      default: null\n    },\n    /**\n     * Only used by the files sidebar\n     *\n     * File info is passed when registered with `OCA.Sharing.ShareTabSections.registerSection()`\n     */\n    fileInfo: {\n      type: Object,\n      default: null\n    },\n    /**\n     * Make the header name dynamic\n     */\n    header: {\n      type: String,\n      default: s(\"Related resources\")\n    },\n    description: {\n      type: String,\n      default: s(\"Anything shared with the same group of people will show up here\")\n    },\n    /**\n     * If this element is used on a primary element set to true for primary styling.\n     */\n    primary: {\n      type: Boolean,\n      default: !1\n    }\n  },\n  emits: [\n    \"has-error\",\n    \"has-resources\"\n  ],\n  data() {\n    var r;\n    return {\n      appEnabled: ((r = OC == null ? void 0 : OC.appswebroots) == null ? void 0 : r.related_resources) !== void 0,\n      loading: !1,\n      error: null,\n      resources: []\n    };\n  },\n  computed: {\n    isVisible() {\n      var r;\n      return this.loading ? !1 : (r = this.error) != null ? r : this.resources.length > 0;\n    },\n    subline() {\n      return this.error ? s(\"Error getting related resources. Please contact your system administrator if you have any questions.\") : this.description;\n    },\n    hasResourceInfo() {\n      return this.providerId !== null && this.itemId !== null || this.fileInfo !== null;\n    },\n    isFiles() {\n      var r;\n      return ((r = this.fileInfo) == null ? void 0 : r.id) !== void 0;\n    },\n    url() {\n      let r = null, e = null;\n      return this.isFiles ? (r = \"files\", e = this.fileInfo.id) : (r = this.providerId, e = this.itemId), l(\"/apps/related_resources/related/{providerId}?itemId={itemId}&resourceType={resourceType}&limit={limit}&format=json\", {\n        providerId: r,\n        itemId: e,\n        resourceType: this.resourceType,\n        limit: this.limit\n      });\n    }\n  },\n  watch: {\n    providerId() {\n      this.fetchRelatedResources();\n    },\n    itemId() {\n      this.fetchRelatedResources();\n    },\n    fileInfo() {\n      this.fetchRelatedResources();\n    },\n    error(r) {\n      this.$emit(\"has-error\", !!r);\n    },\n    resources(r) {\n      this.$emit(\"has-resources\", r.length > 0);\n    }\n  },\n  created() {\n    this.fetchRelatedResources();\n  },\n  methods: {\n    t: s,\n    async fetchRelatedResources() {\n      var r;\n      if (!(!this.appEnabled || !this.hasResourceInfo)) {\n        this.loading = !0, this.error = null, this.resources = [];\n        try {\n          const e = await o.get(this.url);\n          this.resources = (r = e.data.ocs) == null ? void 0 : r.data;\n        } catch (e) {\n          this.error = e, console.error(e);\n        } finally {\n          this.loading = !1;\n        }\n      }\n    }\n  }\n};\nvar h = function() {\n  var e = this, t = e._self._c;\n  return e.appEnabled && e.isVisible ? t(\"div\", { staticClass: \"related-resources\" }, [t(\"div\", { staticClass: \"related-resources__header\" }, [t(\"h5\", [e._v(e._s(e.header))]), t(\"p\", [e._v(e._s(e.subline))])]), e._l(e.resources, function(i) {\n    return t(\"NcResource\", { key: i.itemId, staticClass: \"related-resources__entry\", attrs: { icon: i.icon, name: i.title, url: i.url } });\n  })], 2) : e._e();\n}, m = [], y = /* @__PURE__ */ n(\n  _,\n  h,\n  m,\n  !1,\n  null,\n  \"19300848\",\n  null,\n  null\n);\nconst S = y.exports;\nexport {\n  S as default\n};\n","import \"../assets/referencePickerModal-3a127978.css\";\nimport { n as c } from \"./_plugin-vue2_normalizer-71e2aa87.mjs\";\nimport { t as n } from \"./l10n-f692947e.mjs\";\nimport p from \"@nextcloud/axios\";\nimport { loadState as C } from \"@nextcloud/initial-state\";\nimport { imagePath as L, generateOcsUrl as _ } from \"@nextcloud/router\";\nimport m from \"../Components/NcEmptyContent.mjs\";\nimport { N as P } from \"./index-20a9ace9.mjs\";\nimport w from \"../Components/NcSelect.mjs\";\nimport N from \"../Components/NcLoadingIcon.mjs\";\nimport E from \"../Components/NcTextField.mjs\";\nimport { D as I } from \"./DotsHorizontal-0ee7d901.mjs\";\nimport O from \"../Components/NcButton.mjs\";\nimport B from \"../Components/NcModal.mjs\";\nimport { emit as M } from \"@nextcloud/event-bus\";\nimport { A as V } from \"./ArrowLeft-3779ba88.mjs\";\nimport { C as W } from \"./Close-271f72e2.mjs\";\nimport q from \"vue\";\nwindow._vue_richtext_widgets || (window._vue_richtext_widgets = {});\nconst T = (t) => !!window._vue_richtext_widgets[t], j = (t, e, r = (s) => {\n}) => {\n  if (window._vue_richtext_widgets[t]) {\n    console.error(\"Widget for id \" + t + \" already registered\");\n    return;\n  }\n  window._vue_richtext_widgets[t] = {\n    id: t,\n    callback: e,\n    onDestroy: r\n  };\n}, z = (t, { richObjectType: e, richObject: r, accessible: s }) => {\n  if (e !== \"open-graph\") {\n    if (!window._vue_richtext_widgets[e]) {\n      console.error(\"Widget for rich object type \" + e + \" not registered\");\n      return;\n    }\n    window._vue_richtext_widgets[e].callback(t, { richObjectType: e, richObject: r, accessible: s });\n  }\n}, D = (t, e) => {\n  t !== \"open-graph\" && window._vue_richtext_widgets[t] && window._vue_richtext_widgets[t].onDestroy(e);\n};\nwindow._registerWidget = j;\nconst A = {\n  name: \"NcReferenceWidget\",\n  props: {\n    reference: {\n      type: Object,\n      required: !0\n    }\n  },\n  data() {\n    return {\n      compact: 3\n    };\n  },\n  computed: {\n    hasCustomWidget() {\n      return T(this.reference.richObjectType);\n    },\n    noAccess() {\n      return this.reference && !this.reference.accessible;\n    },\n    descriptionStyle() {\n      if (this.compact === 0)\n        return {\n          display: \"none\"\n        };\n      const t = this.compact < 4 ? this.compact : 3;\n      return {\n        lineClamp: t,\n        webkitLineClamp: t\n      };\n    },\n    compactLink() {\n      const t = this.reference.openGraphObject.link;\n      return t ? t.startsWith(\"https://\") ? t.substring(8) : t.startsWith(\"http://\") ? t.substring(7) : t : \"\";\n    }\n  },\n  mounted() {\n    this.renderWidget(), this.observer = new ResizeObserver((t) => {\n      t[0].contentRect.width < 450 ? this.compact = 0 : t[0].contentRect.width < 550 ? this.compact = 1 : t[0].contentRect.width < 650 ? this.compact = 2 : this.compact = 3;\n    }), this.observer.observe(this.$el);\n  },\n  beforeDestroy() {\n    this.observer.disconnect(), D(this.reference.richObjectType, this.$el);\n  },\n  methods: {\n    renderWidget() {\n      var t;\n      this.$refs.customWidget && (this.$refs.customWidget.innerHTML = \"\"), ((t = this == null ? void 0 : this.reference) == null ? void 0 : t.richObjectType) !== \"open-graph\" && this.$nextTick(() => {\n        z(this.$refs.customWidget, this.reference);\n      });\n    }\n  }\n};\nvar F = function() {\n  var e = this, r = e._self._c;\n  return r(\"div\", [e.reference && e.hasCustomWidget ? r(\"div\", { staticClass: \"widget-custom\" }, [r(\"div\", { ref: \"customWidget\" })]) : !e.noAccess && e.reference && e.reference.openGraphObject && !e.hasCustomWidget ? r(\"a\", { staticClass: \"widget-default\", attrs: { href: e.reference.openGraphObject.link, rel: \"noopener noreferrer\", target: \"_blank\" } }, [e.reference.openGraphObject.thumb ? r(\"img\", { staticClass: \"widget-default--image\", attrs: { src: e.reference.openGraphObject.thumb } }) : e._e(), r(\"div\", { staticClass: \"widget-default--details\" }, [r(\"p\", { staticClass: \"widget-default--name\" }, [e._v(e._s(e.reference.openGraphObject.name))]), r(\"p\", { staticClass: \"widget-default--description\", style: e.descriptionStyle }, [e._v(e._s(e.reference.openGraphObject.description))]), r(\"p\", { staticClass: \"widget-default--link\" }, [e._v(e._s(e.compactLink))])])]) : e._e()]);\n}, U = [], Q = /* @__PURE__ */ c(\n  A,\n  F,\n  U,\n  !1,\n  null,\n  \"b1c5a80f\",\n  null,\n  null\n);\nconst G = Q.exports;\nwindow._vue_richtext_custom_picker_elements || (window._vue_richtext_custom_picker_elements = {});\nclass nt {\n  /**\n   * @param {HTMLElement} element The HTML element\n   * @param {object} object The object\n   */\n  constructor(e, r) {\n    this.element = e, this.object = r;\n  }\n}\nconst h = (t) => !!window._vue_richtext_custom_picker_elements[t], H = (t) => {\n  var r;\n  const e = (r = window._vue_richtext_custom_picker_elements[t]) == null ? void 0 : r.size;\n  return [\"small\", \"normal\", \"large\", \"full\"].includes(e) ? e : null;\n}, Z = (t, e, r = (i) => {\n}, s = \"large\") => {\n  if (window._vue_richtext_custom_picker_elements[t]) {\n    console.error(\"Custom reference picker element for id \" + t + \" already registered\");\n    return;\n  }\n  window._vue_richtext_custom_picker_elements[t] = {\n    id: t,\n    callback: e,\n    onDestroy: r,\n    size: s\n  };\n}, J = (t, { providerId: e, accessible: r }) => {\n  if (!window._vue_richtext_custom_picker_elements[e]) {\n    console.error(\"Custom reference picker element for reference provider ID \" + e + \" not registered\");\n    return;\n  }\n  return window._vue_richtext_custom_picker_elements[e].callback(t, { providerId: e, accessible: r });\n}, K = (t, e, r) => {\n  window._vue_richtext_custom_picker_elements[t] && window._vue_richtext_custom_picker_elements[t].onDestroy(e, r);\n};\nwindow._registerCustomPickerElement = Z;\nconst X = {\n  name: \"NcCustomPickerElement\",\n  props: {\n    /**\n     * The reference provider\n     */\n    provider: {\n      type: Object,\n      required: !0\n    }\n  },\n  emits: [\n    \"cancel\",\n    \"submit\"\n  ],\n  data() {\n    return {\n      isRegistered: h(this.provider.id),\n      renderResult: null\n    };\n  },\n  mounted() {\n    this.isRegistered && this.renderElement();\n  },\n  beforeDestroy() {\n    this.isRegistered && K(this.provider.id, this.$el, this.renderResult);\n  },\n  methods: {\n    renderElement() {\n      this.$refs.domElement && (this.$refs.domElement.innerHTML = \"\");\n      const t = J(this.$refs.domElement, { providerId: this.provider.id, accessible: !1 });\n      Promise.resolve(t).then((e) => {\n        var r, s;\n        this.renderResult = e, (r = this.renderResult.object) != null && r._isVue && ((s = this.renderResult.object) != null && s.$on) && (this.renderResult.object.$on(\"submit\", this.onSubmit), this.renderResult.object.$on(\"cancel\", this.onCancel)), this.renderResult.element.addEventListener(\"submit\", (i) => {\n          this.onSubmit(i.detail);\n        }), this.renderResult.element.addEventListener(\"cancel\", this.onCancel);\n      });\n    },\n    onSubmit(t) {\n      this.$emit(\"submit\", t);\n    },\n    onCancel() {\n      this.$emit(\"cancel\");\n    }\n  }\n};\nvar Y = function() {\n  var e = this, r = e._self._c;\n  return r(\"div\", { ref: \"domElement\" });\n}, ee = [], te = /* @__PURE__ */ c(\n  X,\n  Y,\n  ee,\n  !1,\n  null,\n  \"cf695ff9\",\n  null,\n  null\n);\nconst re = te.exports, b = \"any-link\", S = {\n  id: b,\n  title: n(\"Any link\"),\n  icon_url: L(\"core\", \"filetypes/link.svg\")\n};\nwindow._vue_richtext_reference_providers || (window._vue_richtext_reference_providers = C(\"core\", \"reference-provider-list\", []));\nwindow._vue_richtext_reference_provider_timestamps || (window._vue_richtext_reference_provider_timestamps = C(\"core\", \"reference-provider-timestamps\", {}));\nfunction se(t) {\n  return t === b ? S : R().find((e) => e.id === t);\n}\nfunction R() {\n  return window._vue_richtext_reference_providers.filter((t) => {\n    const e = !!t.search_providers_ids && t.search_providers_ids.length > 0 || h(t.id);\n    return e || console.debug(\"[smart picker]\", t.id, \"reference provider is discoverable but does not have any related search provider or custom picker component registered\"), e;\n  });\n}\nfunction ie(t) {\n  const e = window._vue_richtext_reference_provider_timestamps;\n  return t.sort((r, s) => r.order === s.order ? 0 : r.order > s.order ? 1 : -1).sort((r, s) => {\n    const i = e[r.id], o = e[s.id];\n    return i === o ? 0 : o === void 0 ? -1 : i === void 0 ? 1 : i > o ? -1 : 1;\n  });\n}\nfunction ne(t, e = null) {\n  const r = R(), s = t.replace(/[/\\-\\\\^$*+?.()|[\\]{}]/g, \"\\\\$&\"), i = new RegExp(s, \"i\"), l = ie(r).filter((a) => a.title.match(i)), u = e ? l.slice(0, e) : l;\n  return (t === \"\" || u.length === 0) && u.push(S), u;\n}\nfunction oe(t) {\n  const e = Math.floor(Date.now() / 1e3), r = {\n    timestamp: e\n  }, s = _(\"references/provider/{providerId}\", { providerId: t });\n  p.put(s, r).then((i) => {\n    window._vue_richtext_reference_provider_timestamps[t] = e;\n  });\n}\nlet y = 0;\nfunction x(t, e) {\n  return function() {\n    const r = this, s = arguments;\n    clearTimeout(y), y = setTimeout(function() {\n      t.apply(r, s);\n    }, e || 0);\n  };\n}\nfunction f(t) {\n  try {\n    return !!new URL(t);\n  } catch {\n    return !1;\n  }\n}\nconst ce = {\n  name: \"LinkVariantIcon\",\n  emits: [\"click\"],\n  props: {\n    title: {\n      type: String\n    },\n    fillColor: {\n      type: String,\n      default: \"currentColor\"\n    },\n    size: {\n      type: Number,\n      default: 24\n    }\n  }\n};\nvar le = function() {\n  var e = this, r = e._self._c;\n  return r(\"span\", e._b({ staticClass: \"material-design-icon link-variant-icon\", attrs: { \"aria-hidden\": !e.title, \"aria-label\": e.title, role: \"img\" }, on: { click: function(s) {\n    return e.$emit(\"click\", s);\n  } } }, \"span\", e.$attrs, !1), [r(\"svg\", { staticClass: \"material-design-icon__svg\", attrs: { fill: e.fillColor, width: e.size, height: e.size, viewBox: \"0 0 24 24\" } }, [r(\"path\", { attrs: { d: \"M10.59,13.41C11,13.8 11,14.44 10.59,14.83C10.2,15.22 9.56,15.22 9.17,14.83C7.22,12.88 7.22,9.71 9.17,7.76V7.76L12.71,4.22C14.66,2.27 17.83,2.27 19.78,4.22C21.73,6.17 21.73,9.34 19.78,11.29L18.29,12.78C18.3,11.96 18.17,11.14 17.89,10.36L18.36,9.88C19.54,8.71 19.54,6.81 18.36,5.64C17.19,4.46 15.29,4.46 14.12,5.64L10.59,9.17C9.41,10.34 9.41,12.24 10.59,13.41M13.41,9.17C13.8,8.78 14.44,8.78 14.83,9.17C16.78,11.12 16.78,14.29 14.83,16.24V16.24L11.29,19.78C9.34,21.73 6.17,21.73 4.22,19.78C2.27,17.83 2.27,14.66 4.22,12.71L5.71,11.22C5.7,12.04 5.83,12.86 6.11,13.65L5.64,14.12C4.46,15.29 4.46,17.19 5.64,18.36C6.81,19.54 8.71,19.54 9.88,18.36L13.41,14.83C14.59,13.66 14.59,11.76 13.41,10.59C13,10.2 13,9.56 13.41,9.17Z\" } }, [e.title ? r(\"title\", [e._v(e._s(e.title))]) : e._e()])])]);\n}, ae = [], ue = /* @__PURE__ */ c(\n  ce,\n  le,\n  ae,\n  !1,\n  null,\n  null,\n  null,\n  null\n);\nconst v = ue.exports;\nconst de = {\n  name: \"NcProviderList\",\n  components: {\n    NcSelect: w,\n    NcHighlight: P,\n    NcEmptyContent: m,\n    LinkVariantIcon: v\n  },\n  emits: [\n    \"select-provider\",\n    \"submit\"\n  ],\n  data() {\n    return {\n      selectedProvider: null,\n      query: \"\",\n      multiselectPlaceholder: n(\"Select provider\"),\n      providerIconAlt: n(\"Provider icon\")\n    };\n  },\n  computed: {\n    options() {\n      const t = [];\n      return this.query !== \"\" && f(this.query) && t.push({\n        id: this.query,\n        title: this.query,\n        isLink: !0\n      }), t.push(...ne(this.query)), t;\n    }\n  },\n  methods: {\n    focus() {\n      setTimeout(() => {\n        var t, e, r;\n        (r = (e = (t = this.$refs[\"provider-select\"]) == null ? void 0 : t.$el) == null ? void 0 : e.querySelector(\"#provider-select-input\")) == null || r.focus();\n      }, 300);\n    },\n    onProviderSelected(t) {\n      t !== null && (t.isLink ? this.$emit(\"submit\", t.title) : this.$emit(\"select-provider\", t), this.selectedProvider = null);\n    },\n    onSearch(t, e) {\n      this.query = t;\n    }\n  }\n};\nvar he = function() {\n  var e = this, r = e._self._c;\n  return r(\"div\", { staticClass: \"provider-list\" }, [r(\"NcSelect\", { ref: \"provider-select\", staticClass: \"provider-list--select\", attrs: { \"input-id\": \"provider-select-input\", label: \"title\", placeholder: e.multiselectPlaceholder, options: e.options, \"append-to-body\": !1, \"clear-search-on-select\": !0, \"clear-search-on-blur\": () => !1, filterable: !1 }, on: { search: e.onSearch, input: e.onProviderSelected }, scopedSlots: e._u([{ key: \"option\", fn: function(s) {\n    return [s.isLink ? r(\"div\", { staticClass: \"provider\" }, [r(\"LinkVariantIcon\", { staticClass: \"link-icon\", attrs: { size: 20 } }), r(\"span\", [e._v(e._s(s.title))])], 1) : r(\"div\", { staticClass: \"provider\" }, [r(\"img\", { staticClass: \"provider-icon\", attrs: { src: s.icon_url, alt: e.providerIconAlt } }), r(\"NcHighlight\", { staticClass: \"option-text\", attrs: { search: e.query, text: s.title } })], 1)];\n  } }]), model: { value: e.selectedProvider, callback: function(s) {\n    e.selectedProvider = s;\n  }, expression: \"selectedProvider\" } }), r(\"NcEmptyContent\", { staticClass: \"provider-list--empty-content\", scopedSlots: e._u([{ key: \"icon\", fn: function() {\n    return [r(\"LinkVariantIcon\")];\n  }, proxy: !0 }]) })], 1);\n}, _e = [], pe = /* @__PURE__ */ c(\n  de,\n  he,\n  _e,\n  !1,\n  null,\n  \"9d850ea5\",\n  null,\n  null\n);\nconst me = pe.exports;\nconst fe = {\n  name: \"NcRawLinkInput\",\n  components: {\n    LinkVariantIcon: v,\n    NcEmptyContent: m,\n    NcLoadingIcon: N,\n    NcReferenceWidget: G,\n    NcTextField: E\n  },\n  props: {\n    /**\n     * The reference provider\n     */\n    provider: {\n      type: Object,\n      required: !0\n    }\n  },\n  emits: [\n    \"submit\"\n  ],\n  data() {\n    return {\n      inputValue: \"\",\n      loading: !1,\n      reference: null,\n      abortController: null,\n      inputPlaceholder: n(\"Enter link\")\n    };\n  },\n  computed: {\n    isLinkValid() {\n      return f(this.inputValue);\n    }\n  },\n  methods: {\n    focus() {\n      var t;\n      (t = this.$refs[\"url-input\"].$el.getElementsByTagName(\"input\")[0]) == null || t.focus();\n    },\n    onSubmit(t) {\n      const e = t.target.value;\n      this.isLinkValid && this.$emit(\"submit\", e);\n    },\n    onClear() {\n      this.inputValue = \"\", this.reference = null;\n    },\n    onInput() {\n      this.reference = null, this.abortController && this.abortController.abort(), this.isLinkValid && x(() => {\n        this.updateReference();\n      }, 500)();\n    },\n    updateReference() {\n      this.loading = !0, this.abortController = new AbortController(), p.get(_(\"references/resolve\", 2) + \"?reference=\" + encodeURIComponent(this.inputValue), {\n        signal: this.abortController.signal\n      }).then((t) => {\n        this.reference = t.data.ocs.data.references[this.inputValue];\n      }).catch((t) => {\n        console.error(t);\n      }).then(() => {\n        this.loading = !1;\n      });\n    }\n  }\n};\nvar ve = function() {\n  var e = this, r = e._self._c;\n  return r(\"div\", { staticClass: \"raw-link\" }, [r(\"div\", { staticClass: \"input-wrapper\" }, [r(\"NcTextField\", { ref: \"url-input\", attrs: { value: e.inputValue, \"show-trailing-button\": e.inputValue !== \"\", label: e.inputPlaceholder }, on: { \"update:value\": [function(s) {\n    e.inputValue = s;\n  }, e.onInput], \"trailing-button-click\": e.onClear }, nativeOn: { keyup: function(s) {\n    return !s.type.indexOf(\"key\") && e._k(s.keyCode, \"enter\", 13, s.key, \"Enter\") ? null : e.onSubmit.apply(null, arguments);\n  } } }, [e.loading ? r(\"NcLoadingIcon\", { attrs: { size: 16 } }) : r(\"LinkVariantIcon\", { attrs: { size: 16 } })], 1)], 1), e.reference !== null ? r(\"NcReferenceWidget\", { staticClass: \"reference-widget\", attrs: { reference: e.reference } }) : r(\"NcEmptyContent\", { staticClass: \"raw-link--empty-content\", scopedSlots: e._u([{ key: \"icon\", fn: function() {\n    return [e.provider.icon_url ? r(\"img\", { staticClass: \"provider-icon\", attrs: { src: e.provider.icon_url } }) : r(\"LinkVariantIcon\")];\n  }, proxy: !0 }]) })], 1);\n}, ge = [], ye = /* @__PURE__ */ c(\n  fe,\n  ve,\n  ge,\n  !1,\n  null,\n  \"d0ba247a\",\n  null,\n  null\n);\nconst ke = ye.exports;\nconst Ce = {\n  name: \"NcSearchResult\",\n  components: {\n    NcHighlight: P\n  },\n  props: {\n    /**\n     * Unified search result entry\n     */\n    entry: {\n      type: Object,\n      required: !0\n    },\n    /**\n     * The query that led to getting this result\n     * Used to highlight the entry text\n     */\n    query: {\n      type: String,\n      required: !0\n    }\n  }\n};\nvar Pe = function() {\n  var e = this, r = e._self._c;\n  return r(\"div\", { staticClass: \"result\" }, [e.entry.icon ? r(\"div\", { staticClass: \"result--icon-class\", class: { [e.entry.icon]: !0, rounded: e.entry.rounded } }) : r(\"img\", { staticClass: \"result--image\", class: { rounded: e.entry.rounded }, attrs: { src: e.entry.thumbnailUrl } }), r(\"div\", { staticClass: \"result--content\" }, [r(\"span\", { staticClass: \"result--content--name\" }, [r(\"NcHighlight\", { attrs: { search: e.query, text: e.entry.title } })], 1), r(\"span\", { staticClass: \"result--content--subline\" }, [r(\"NcHighlight\", { attrs: { search: e.query, text: e.entry.subline } })], 1)])]);\n}, we = [], be = /* @__PURE__ */ c(\n  Ce,\n  Pe,\n  we,\n  !1,\n  null,\n  \"7a394a58\",\n  null,\n  null\n);\nconst Se = be.exports;\nconst k = 5, Re = {\n  name: \"NcSearch\",\n  components: {\n    LinkVariantIcon: v,\n    DotsHorizontalIcon: I,\n    NcEmptyContent: m,\n    NcSelect: w,\n    NcSearchResult: Se\n  },\n  props: {\n    /**\n     * The selected reference provider\n     */\n    provider: {\n      type: Object,\n      required: !0\n    },\n    showEmptyContent: {\n      type: Boolean,\n      default: !0\n    },\n    searchPlaceholder: {\n      type: String,\n      default: null\n    }\n  },\n  emits: [\n    \"submit\"\n  ],\n  data() {\n    return {\n      searchQuery: \"\",\n      selectedResult: null,\n      resultsBySearchProvider: {},\n      searching: !1,\n      searchingMoreOf: null,\n      abortController: null,\n      noOptionsText: n(\"Start typing to search\"),\n      providerIconAlt: n(\"Provider icon\")\n    };\n  },\n  computed: {\n    mySearchPlaceholder() {\n      return this.searchPlaceholder || n(\"Search\");\n    },\n    searchProviderIds() {\n      return this.provider.search_providers_ids;\n    },\n    options() {\n      if (this.searchQuery === \"\")\n        return [];\n      const t = [];\n      return f(this.searchQuery) && t.push(this.rawLinkEntry), t.push(...this.formattedSearchResults), t;\n    },\n    rawLinkEntry() {\n      return {\n        id: \"rawLinkEntry\",\n        resourceUrl: this.searchQuery,\n        isRawLink: !0\n      };\n    },\n    formattedSearchResults() {\n      const t = [];\n      return this.searchProviderIds.forEach((e) => {\n        if (this.resultsBySearchProvider[e].entries.length > 0) {\n          (this.searchProviderIds.length > 1 || this.resultsBySearchProvider[e].entries.length > 1) && t.push({\n            id: \"groupTitle-\" + e,\n            name: this.resultsBySearchProvider[e].name,\n            isCustomGroupTitle: !0,\n            providerId: e\n          });\n          const r = this.resultsBySearchProvider[e].entries.map((s, i) => ({\n            id: \"provider-\" + e + \"-entry-\" + i,\n            ...s\n          }));\n          t.push(...r), this.resultsBySearchProvider[e].isPaginated && t.push({\n            id: \"moreOf-\" + e,\n            name: this.resultsBySearchProvider[e].name,\n            isMore: !0,\n            providerId: e,\n            isLoading: this.searchingMoreOf === e\n          });\n        }\n      }), t;\n    }\n  },\n  mounted() {\n    this.resetResults();\n  },\n  beforeDestroy() {\n    this.cancelSearchRequests();\n  },\n  methods: {\n    t: n,\n    resetResults() {\n      const t = {};\n      this.searchProviderIds.forEach((e) => {\n        t[e] = {\n          entries: []\n        };\n      }), this.resultsBySearchProvider = t;\n    },\n    focus() {\n      setTimeout(() => {\n        var t, e, r;\n        (r = (e = (t = this.$refs[\"search-select\"]) == null ? void 0 : t.$el) == null ? void 0 : e.querySelector(\"#search-select-input\")) == null || r.focus();\n      }, 300);\n    },\n    cancelSearchRequests() {\n      this.abortController && this.abortController.abort();\n    },\n    onSearchInput(t, e) {\n      this.searchQuery = t, x(() => {\n        this.updateSearch();\n      }, 500)();\n    },\n    onSelectResultSelected(t) {\n      t !== null && (t.resourceUrl ? (this.cancelSearchRequests(), this.$emit(\"submit\", t.resourceUrl)) : t.isMore && this.searchMoreOf(t.providerId).then(() => {\n        this.selectedResult = null;\n      }));\n    },\n    searchMoreOf(t) {\n      return this.searchingMoreOf = t, this.cancelSearchRequests(), this.searchProviders(t);\n    },\n    updateSearch() {\n      if (this.cancelSearchRequests(), this.resetResults(), this.searchQuery === \"\") {\n        this.searching = !1;\n        return;\n      }\n      return this.searchProviders();\n    },\n    searchProviders(t = null) {\n      var r, s;\n      this.abortController = new AbortController(), this.searching = !0;\n      const e = t === null ? [...this.searchProviderIds].map((i) => this.searchOneProvider(i)) : [this.searchOneProvider(t, (s = (r = this.resultsBySearchProvider[t]) == null ? void 0 : r.cursor) != null ? s : null)];\n      return Promise.allSettled(e).then((i) => {\n        !!i.find((l) => l.status === \"rejected\" && (l.reason.name === \"CanceledError\" || l.reason.code === \"ERR_CANCELED\")) || (this.searching = !1, this.searchingMoreOf = null);\n      });\n    },\n    searchOneProvider(t, e = null) {\n      const r = e === null ? _(\"search/providers/{providerId}/search?term={term}&limit={limit}\", { providerId: t, term: this.searchQuery, limit: k }) : _(\"search/providers/{providerId}/search?term={term}&limit={limit}&cursor={cursor}\", { providerId: t, term: this.searchQuery, limit: k, cursor: e });\n      return p.get(r, {\n        signal: this.abortController.signal\n      }).then((s) => {\n        const i = s.data.ocs.data;\n        this.resultsBySearchProvider[t].name = i.name, this.resultsBySearchProvider[t].cursor = i.cursor, this.resultsBySearchProvider[t].isPaginated = i.isPaginated, this.resultsBySearchProvider[t].entries.push(...i.entries);\n      });\n    }\n  }\n};\nvar xe = function() {\n  var e = this, r = e._self._c;\n  return r(\"div\", { staticClass: \"smart-picker-search\", class: { \"with-empty-content\": e.showEmptyContent } }, [r(\"NcSelect\", { ref: \"search-select\", staticClass: \"smart-picker-search--select\", attrs: { \"input-id\": \"search-select-input\", label: \"name\", placeholder: e.mySearchPlaceholder, options: e.options, \"append-to-body\": !1, \"close-on-select\": !1, \"clear-search-on-select\": !1, \"clear-search-on-blur\": () => !1, \"reset-focus-on-options-change\": !1, filterable: !1, autoscroll: !0, \"reset-on-options-change\": !1, loading: e.searching }, on: { search: e.onSearchInput, input: e.onSelectResultSelected }, scopedSlots: e._u([{ key: \"option\", fn: function(s) {\n    return [s.isRawLink ? r(\"div\", { staticClass: \"custom-option\" }, [r(\"LinkVariantIcon\", { staticClass: \"option-simple-icon\", attrs: { size: 20 } }), r(\"span\", { staticClass: \"option-text\" }, [e._v(\" \" + e._s(e.t(\"Raw link {options}\", { options: s.resourceUrl })) + \" \")])], 1) : s.resourceUrl ? r(\"NcSearchResult\", { staticClass: \"search-result\", attrs: { entry: s, query: e.searchQuery } }) : s.isCustomGroupTitle ? r(\"span\", { staticClass: \"custom-option group-name\" }, [e.provider.icon_url ? r(\"img\", { staticClass: \"provider-icon group-name-icon\", attrs: { src: e.provider.icon_url } }) : e._e(), r(\"span\", { staticClass: \"option-text\" }, [r(\"strong\", [e._v(e._s(s.name))])])]) : s.isMore ? r(\"span\", { class: { \"custom-option\": !0 } }, [s.isLoading ? r(\"span\", { staticClass: \"option-simple-icon icon-loading-small\" }) : r(\"DotsHorizontalIcon\", { staticClass: \"option-simple-icon\", attrs: { size: 20 } }), r(\"span\", { staticClass: \"option-text\" }, [e._v(\" \" + e._s(e.t('Load more \"{options}\"', { options: s.name })) + \" \")])], 1) : e._e()];\n  } }, { key: \"no-options\", fn: function() {\n    return [e._v(\" \" + e._s(e.noOptionsText) + \" \")];\n  }, proxy: !0 }]), model: { value: e.selectedResult, callback: function(s) {\n    e.selectedResult = s;\n  }, expression: \"selectedResult\" } }), e.showEmptyContent ? r(\"NcEmptyContent\", { staticClass: \"smart-picker-search--empty-content\", scopedSlots: e._u([{ key: \"icon\", fn: function() {\n    return [e.provider.icon_url ? r(\"img\", { staticClass: \"provider-icon\", attrs: { alt: e.providerIconAlt, src: e.provider.icon_url } }) : r(\"LinkVariantIcon\")];\n  }, proxy: !0 }], null, !1, 2922132592) }) : e._e()], 1);\n}, $e = [], Le = /* @__PURE__ */ c(\n  Re,\n  xe,\n  $e,\n  !1,\n  null,\n  \"97d196f0\",\n  null,\n  null\n);\nconst Ne = Le.exports;\nconst d = {\n  providerList: 1,\n  standardLinkInput: 2,\n  searchInput: 3,\n  customElement: 4\n}, Ee = {\n  name: \"NcReferencePicker\",\n  components: {\n    NcCustomPickerElement: re,\n    NcProviderList: me,\n    NcRawLinkInput: ke,\n    NcSearch: Ne\n  },\n  props: {\n    /**\n     * Provider to select on creation\n     * Default: null. Show the provider list\n     */\n    initialProvider: {\n      type: Object,\n      default: () => null\n    },\n    /**\n     * Optional width in pixels\n     * Default: 100%\n     */\n    width: {\n      type: Number,\n      default: null\n    },\n    /**\n     * Focus on the provider list select input on creation\n     * Default: true\n     */\n    focusOnCreate: {\n      type: Boolean,\n      default: !0\n    }\n  },\n  emits: [\n    \"cancel\",\n    \"cancel-raw-link\",\n    \"cancel-search\",\n    \"provider-selected\",\n    \"submit\"\n  ],\n  data() {\n    return {\n      MODES: d,\n      selectedProvider: this.initialProvider\n    };\n  },\n  computed: {\n    mode() {\n      return this.selectedProvider === null ? d.providerList : h(this.selectedProvider.id) ? d.customElement : this.selectedProvider.search_providers_ids ? d.searchInput : d.standardLinkInput;\n    },\n    pickerWrapperStyle() {\n      return {\n        width: this.width ? this.width + \"px\" : void 0\n      };\n    }\n  },\n  mounted() {\n    this.focusOnCreate && (this.initialProvider ? setTimeout(() => {\n      var t;\n      (t = this.$refs[\"url-input\"]) == null || t.focus();\n    }, 300) : this.$nextTick(() => {\n      var t;\n      (t = this.$refs[\"provider-list\"]) == null || t.focus();\n    }));\n  },\n  methods: {\n    onEscapePressed() {\n      this.selectedProvider !== null ? this.deselectProvider() : this.cancelProviderSelection();\n    },\n    onProviderSelected(t) {\n      this.selectedProvider = t, this.$emit(\"provider-selected\", t), this.$nextTick(() => {\n        var e;\n        (e = this.$refs[\"url-input\"]) == null || e.focus();\n      });\n    },\n    cancelCustomElement() {\n      this.deselectProvider();\n    },\n    cancelSearch() {\n      var t;\n      this.$emit(\"cancel-search\", (t = this.selectedProvider) == null ? void 0 : t.title), this.deselectProvider();\n    },\n    cancelRawLinkInput() {\n      var t;\n      this.$emit(\"cancel-raw-link\", (t = this.selectedProvider) == null ? void 0 : t.title), this.deselectProvider();\n    },\n    cancelProviderSelection() {\n      this.$emit(\"cancel\");\n    },\n    submitLink(t) {\n      this.selectedProvider !== null && oe(this.selectedProvider.id), this.$emit(\"submit\", t), this.deselectProvider();\n    },\n    deselectProvider() {\n      this.selectedProvider = null, this.$emit(\"provider-selected\", null), setTimeout(() => {\n        var t;\n        (t = this.$refs[\"provider-list\"]) == null || t.focus();\n      }, 300);\n    }\n  }\n};\nvar Ie = function() {\n  var e = this, r = e._self._c;\n  return r(\"div\", { staticClass: \"reference-picker\", style: e.pickerWrapperStyle, attrs: { tabindex: \"-1\" }, on: { keydown: function(s) {\n    return !s.type.indexOf(\"key\") && e._k(s.keyCode, \"esc\", 27, s.key, [\"Esc\", \"Escape\"]) ? null : (s.stopPropagation(), s.preventDefault(), e.onEscapePressed.apply(null, arguments));\n  } } }, [e.mode === e.MODES.providerList ? r(\"NcProviderList\", { ref: \"provider-list\", on: { \"select-provider\": e.onProviderSelected, submit: e.submitLink, cancel: e.cancelProviderSelection } }) : e.mode === e.MODES.standardLinkInput ? r(\"NcRawLinkInput\", { ref: \"url-input\", attrs: { provider: e.selectedProvider }, on: { submit: e.submitLink, cancel: e.cancelRawLinkInput } }) : e.mode === e.MODES.searchInput ? r(\"NcSearch\", { ref: \"url-input\", attrs: { provider: e.selectedProvider }, on: { cancel: e.cancelSearch, submit: e.submitLink } }) : e.mode === e.MODES.customElement ? r(\"div\", { staticClass: \"custom-element-wrapper\" }, [r(\"NcCustomPickerElement\", { attrs: { provider: e.selectedProvider }, on: { submit: e.submitLink, cancel: e.cancelCustomElement } })], 1) : e._e()], 1);\n}, Oe = [], Be = /* @__PURE__ */ c(\n  Ee,\n  Ie,\n  Oe,\n  !1,\n  null,\n  \"aa77d0d3\",\n  null,\n  null\n);\nconst Me = Be.exports;\nconst Ve = {\n  name: \"NcReferencePickerModal\",\n  components: {\n    NcReferencePicker: Me,\n    NcModal: B,\n    NcButton: O,\n    ArrowLeftIcon: V,\n    CloseIcon: W\n  },\n  props: {\n    /**\n     * Provider to select on creation\n     * Show the provider list if no initial one is provided\n     */\n    initialProvider: {\n      type: Object,\n      default: () => null\n    },\n    /**\n     * Focus on the input item on create\n     */\n    focusOnCreate: {\n      type: Boolean,\n      default: !0\n    },\n    /**\n     * If true, add the modal content to the Viewer trap elements via the event-bus\n     */\n    isInsideViewer: {\n      type: Boolean,\n      default: !1\n    }\n  },\n  emits: [\n    \"cancel\",\n    \"submit\"\n  ],\n  data() {\n    return {\n      show: !0,\n      selectedProvider: this.initialProvider,\n      backButtonTitle: n(\"Back to provider selection\"),\n      closeButtonTitle: n(\"Close\"),\n      closeButtonLabel: n(\"Close Smart Picker\")\n    };\n  },\n  computed: {\n    isProviderSelected() {\n      return this.selectedProvider !== null;\n    },\n    showBackButton() {\n      return this.initialProvider === null && this.isProviderSelected;\n    },\n    modalSize() {\n      var t;\n      return this.isProviderSelected && h(this.selectedProvider.id) ? (t = H(this.selectedProvider.id)) != null ? t : \"large\" : \"normal\";\n    },\n    showModalName() {\n      return !this.isProviderSelected || !h(this.selectedProvider.id);\n    },\n    modalName() {\n      return this.isProviderSelected ? this.selectedProvider.title : n(\"Smart Picker\");\n    }\n  },\n  mounted() {\n    if (this.isInsideViewer) {\n      const t = this.$refs.modal_content;\n      M(\"viewer:trapElements:changed\", t);\n    }\n  },\n  methods: {\n    onCancel() {\n      this.show = !1, this.$emit(\"cancel\");\n    },\n    onSubmit(t) {\n      this.show = !1, this.$emit(\"submit\", t);\n    },\n    onProviderSelect(t) {\n      this.selectedProvider = t, t === null && this.initialProvider !== null && this.onCancel();\n    },\n    onBackClicked() {\n      this.$refs.referencePicker.deselectProvider();\n    }\n  }\n};\nvar We = function() {\n  var e = this, r = e._self._c;\n  return e.show ? r(\"NcModal\", { staticClass: \"reference-picker-modal\", attrs: { size: e.modalSize, \"can-close\": !1 }, on: { close: e.onCancel } }, [r(\"div\", { ref: \"modal_content\", staticClass: \"reference-picker-modal--content\" }, [e.showBackButton ? r(\"NcButton\", { staticClass: \"back-button\", attrs: { \"aria-label\": e.backButtonTitle, title: e.backButtonTitle }, on: { click: e.onBackClicked }, scopedSlots: e._u([{ key: \"icon\", fn: function() {\n    return [r(\"ArrowLeftIcon\")];\n  }, proxy: !0 }], null, !1, 3001860362) }) : e._e(), r(\"NcButton\", { staticClass: \"close-button\", attrs: { \"aria-label\": e.closeButtonLabel, title: e.closeButtonTitle, type: \"tertiary\" }, on: { click: e.onCancel }, scopedSlots: e._u([{ key: \"icon\", fn: function() {\n    return [r(\"CloseIcon\")];\n  }, proxy: !0 }], null, !1, 2491825086) }), e.showModalName ? r(\"h2\", [e._v(\" \" + e._s(e.modalName) + \" \")]) : e._e(), r(\"NcReferencePicker\", { ref: \"referencePicker\", attrs: { \"initial-provider\": e.initialProvider, \"focus-on-create\": e.focusOnCreate }, on: { \"provider-selected\": e.onProviderSelect, submit: e.onSubmit, cancel: e.onCancel } })], 1)]) : e._e();\n}, qe = [], Te = /* @__PURE__ */ c(\n  Ve,\n  We,\n  qe,\n  !1,\n  null,\n  \"3f1a4ac7\",\n  null,\n  null\n);\nconst je = Te.exports;\nasync function ot(t = null, e = void 0) {\n  return await new Promise((r, s) => {\n    var g;\n    const i = \"referencePickerModal\", o = document.createElement(\"div\");\n    o.id = i, document.body.append(o);\n    const l = t === null ? null : (g = se(t)) != null ? g : null, u = q.extend(je), a = new u({\n      propsData: {\n        initialProvider: l,\n        isInsideViewer: e\n      }\n    }).$mount(o);\n    a.$on(\"cancel\", () => {\n      a.$destroy(), s(new Error(\"User cancellation\"));\n    }), a.$on(\"submit\", ($) => {\n      a.$destroy(), r($);\n    });\n  });\n}\nexport {\n  G as N,\n  Me as a,\n  je as b,\n  Ne as c,\n  z as d,\n  nt as e,\n  Z as f,\n  J as g,\n  h,\n  T as i,\n  ot as j,\n  b as k,\n  se as l,\n  R as m,\n  ne as n,\n  j as r,\n  ie as s\n};\n","if (!Array.prototype.find) {\n    Array.prototype.find = function(predicate) {\n        if (this === null) {\n            throw new TypeError('Array.prototype.find called on null or undefined')\n        }\n        if (typeof predicate !== 'function') {\n            throw new TypeError('predicate must be a function')\n        }\n        var list = Object(this);\n        var length = list.length >>> 0;\n        var thisArg = arguments[1];\n        var value;\n\n        for (var i = 0; i < length; i++) {\n            value = list[i];\n            if (predicate.call(thisArg, value, i, list)) {\n                return value\n            }\n        }\n        return undefined\n    };\n}\n\nif (window && typeof window.CustomEvent !== \"function\") {\n  function CustomEvent$1(event, params) {\n    params = params || {\n      bubbles: false,\n      cancelable: false,\n      detail: undefined\n    };\n    var evt = document.createEvent('CustomEvent');\n    evt.initCustomEvent(event, params.bubbles, params.cancelable, params.detail);\n    return evt\n  }\n\n if (typeof window.Event !== 'undefined') {\n   CustomEvent$1.prototype = window.Event.prototype;\n }\n\n  window.CustomEvent = CustomEvent$1;\n}\n\nclass TributeEvents {\n  constructor(tribute) {\n    this.tribute = tribute;\n    this.tribute.events = this;\n  }\n\n  static keys() {\n    return [\n      {\n        key: 9,\n        value: \"TAB\"\n      },\n      {\n        key: 8,\n        value: \"DELETE\"\n      },\n      {\n        key: 13,\n        value: \"ENTER\"\n      },\n      {\n        key: 27,\n        value: \"ESCAPE\"\n      },\n      {\n        key: 32,\n        value: \"SPACE\"\n      },\n      {\n        key: 38,\n        value: \"UP\"\n      },\n      {\n        key: 40,\n        value: \"DOWN\"\n      }\n    ];\n  }\n\n  bind(element) {\n    element.boundKeydown = this.keydown.bind(element, this);\n    element.boundKeyup = this.keyup.bind(element, this);\n    element.boundInput = this.input.bind(element, this);\n\n    element.addEventListener(\"keydown\", element.boundKeydown, false);\n    element.addEventListener(\"keyup\", element.boundKeyup, false);\n    element.addEventListener(\"input\", element.boundInput, false);\n  }\n\n  unbind(element) {\n    element.removeEventListener(\"keydown\", element.boundKeydown, false);\n    element.removeEventListener(\"keyup\", element.boundKeyup, false);\n    element.removeEventListener(\"input\", element.boundInput, false);\n\n    delete element.boundKeydown;\n    delete element.boundKeyup;\n    delete element.boundInput;\n  }\n\n  keydown(instance, event) {\n    if (instance.shouldDeactivate(event)) {\n      instance.tribute.isActive = false;\n      instance.tribute.hideMenu();\n    }\n\n    let element = this;\n    instance.commandEvent = false;\n\n    TributeEvents.keys().forEach(o => {\n      if (o.key === event.keyCode) {\n        instance.commandEvent = true;\n        instance.callbacks()[o.value.toLowerCase()](event, element);\n      }\n    });\n  }\n\n  input(instance, event) {\n    instance.inputEvent = true;\n    instance.keyup.call(this, instance, event);\n  }\n\n  click(instance, event) {\n    let tribute = instance.tribute;\n    if (tribute.menu && tribute.menu.contains(event.target)) {\n      let li = event.target;\n      event.preventDefault();\n      event.stopPropagation();\n      while (li.nodeName.toLowerCase() !== \"li\") {\n        li = li.parentNode;\n        if (!li || li === tribute.menu) {\n          throw new Error(\"cannot find the <li> container for the click\");\n        }\n      }\n      tribute.selectItemAtIndex(li.getAttribute(\"data-index\"), event);\n      tribute.hideMenu();\n\n      // TODO: should fire with externalTrigger and target is outside of menu\n    } else if (tribute.current.element && !tribute.current.externalTrigger) {\n      tribute.current.externalTrigger = false;\n      setTimeout(() => tribute.hideMenu());\n    }\n  }\n\n  keyup(instance, event) {\n    if (instance.inputEvent) {\n      instance.inputEvent = false;\n    }\n    instance.updateSelection(this);\n\n    if (event.keyCode === 27) return;\n\n    if (!instance.tribute.allowSpaces && instance.tribute.hasTrailingSpace) {\n      instance.tribute.hasTrailingSpace = false;\n      instance.commandEvent = true;\n      instance.callbacks()[\"space\"](event, this);\n      return;\n    }\n\n    if (!instance.tribute.isActive) {\n      if (instance.tribute.autocompleteMode) {\n        instance.callbacks().triggerChar(event, this, \"\");\n      } else {\n        let keyCode = instance.getKeyCode(instance, this, event);\n\n        if (isNaN(keyCode) || !keyCode) return;\n\n        let trigger = instance.tribute.triggers().find(trigger => {\n          return trigger.charCodeAt(0) === keyCode;\n        });\n\n        if (typeof trigger !== \"undefined\") {\n          instance.callbacks().triggerChar(event, this, trigger);\n        }\n      }\n    }\n\n    if (\n      instance.tribute.current.mentionText.length <\n      instance.tribute.current.collection.menuShowMinLength\n    ) {\n      return;\n    }\n\n    if (\n      ((instance.tribute.current.trigger ||\n        instance.tribute.autocompleteMode) &&\n        instance.commandEvent === false) ||\n      (instance.tribute.isActive && event.keyCode === 8)\n    ) {\n      instance.tribute.showMenuFor(this, true);\n    }\n  }\n\n  shouldDeactivate(event) {\n    if (!this.tribute.isActive) return false;\n\n    if (this.tribute.current.mentionText.length === 0) {\n      let eventKeyPressed = false;\n      TributeEvents.keys().forEach(o => {\n        if (event.keyCode === o.key) eventKeyPressed = true;\n      });\n\n      return !eventKeyPressed;\n    }\n\n    return false;\n  }\n\n  getKeyCode(instance, el, event) {\n    let tribute = instance.tribute;\n    let info = tribute.range.getTriggerInfo(\n      false,\n      tribute.hasTrailingSpace,\n      true,\n      tribute.allowSpaces,\n      tribute.autocompleteMode\n    );\n\n    if (info) {\n      return info.mentionTriggerChar.charCodeAt(0);\n    } else {\n      return false;\n    }\n  }\n\n  updateSelection(el) {\n    this.tribute.current.element = el;\n    let info = this.tribute.range.getTriggerInfo(\n      false,\n      this.tribute.hasTrailingSpace,\n      true,\n      this.tribute.allowSpaces,\n      this.tribute.autocompleteMode\n    );\n\n    if (info) {\n      this.tribute.current.selectedPath = info.mentionSelectedPath;\n      this.tribute.current.mentionText = info.mentionText;\n      this.tribute.current.selectedOffset = info.mentionSelectedOffset;\n    }\n  }\n\n  callbacks() {\n    return {\n      triggerChar: (e, el, trigger) => {\n        let tribute = this.tribute;\n        tribute.current.trigger = trigger;\n\n        let collectionItem = tribute.collection.find(item => {\n          return item.trigger === trigger;\n        });\n\n        tribute.current.collection = collectionItem;\n\n        if (\n          tribute.current.mentionText.length >=\n            tribute.current.collection.menuShowMinLength &&\n          tribute.inputEvent\n        ) {\n          tribute.showMenuFor(el, true);\n        }\n      },\n      enter: (e, el) => {\n        // choose selection\n        if (this.tribute.isActive && this.tribute.current.filteredItems) {\n          e.preventDefault();\n          e.stopPropagation();\n          setTimeout(() => {\n            this.tribute.selectItemAtIndex(this.tribute.menuSelected, e);\n            this.tribute.hideMenu();\n          }, 0);\n        }\n      },\n      escape: (e, el) => {\n        if (this.tribute.isActive) {\n          e.preventDefault();\n          e.stopPropagation();\n          this.tribute.isActive = false;\n          this.tribute.hideMenu();\n        }\n      },\n      tab: (e, el) => {\n        // choose first match\n        this.callbacks().enter(e, el);\n      },\n      space: (e, el) => {\n        if (this.tribute.isActive) {\n          if (this.tribute.spaceSelectsMatch) {\n            this.callbacks().enter(e, el);\n          } else if (!this.tribute.allowSpaces) {\n            e.stopPropagation();\n            setTimeout(() => {\n              this.tribute.hideMenu();\n              this.tribute.isActive = false;\n            }, 0);\n          }\n        }\n      },\n      up: (e, el) => {\n        // navigate up ul\n        if (this.tribute.isActive && this.tribute.current.filteredItems) {\n          e.preventDefault();\n          e.stopPropagation();\n          let count = this.tribute.current.filteredItems.length,\n            selected = this.tribute.menuSelected;\n\n          if (count > selected && selected > 0) {\n            this.tribute.menuSelected--;\n            this.setActiveLi();\n          } else if (selected === 0) {\n            this.tribute.menuSelected = count - 1;\n            this.setActiveLi();\n            this.tribute.menu.scrollTop = this.tribute.menu.scrollHeight;\n          }\n        }\n      },\n      down: (e, el) => {\n        // navigate down ul\n        if (this.tribute.isActive && this.tribute.current.filteredItems) {\n          e.preventDefault();\n          e.stopPropagation();\n          let count = this.tribute.current.filteredItems.length - 1,\n            selected = this.tribute.menuSelected;\n\n          if (count > selected) {\n            this.tribute.menuSelected++;\n            this.setActiveLi();\n          } else if (count === selected) {\n            this.tribute.menuSelected = 0;\n            this.setActiveLi();\n            this.tribute.menu.scrollTop = 0;\n          }\n        }\n      },\n      delete: (e, el) => {\n        if (\n          this.tribute.isActive &&\n          this.tribute.current.mentionText.length < 1\n        ) {\n          this.tribute.hideMenu();\n        } else if (this.tribute.isActive) {\n          this.tribute.showMenuFor(el);\n        }\n      }\n    };\n  }\n\n  setActiveLi(index) {\n    let lis = this.tribute.menu.querySelectorAll(\"li\"),\n      length = lis.length >>> 0;\n\n    if (index) this.tribute.menuSelected = parseInt(index);\n\n    for (let i = 0; i < length; i++) {\n      let li = lis[i];\n      if (i === this.tribute.menuSelected) {\n        li.classList.add(this.tribute.current.collection.selectClass);\n\n        let liClientRect = li.getBoundingClientRect();\n        let menuClientRect = this.tribute.menu.getBoundingClientRect();\n\n        if (liClientRect.bottom > menuClientRect.bottom) {\n          let scrollDistance = liClientRect.bottom - menuClientRect.bottom;\n          this.tribute.menu.scrollTop += scrollDistance;\n        } else if (liClientRect.top < menuClientRect.top) {\n          let scrollDistance = menuClientRect.top - liClientRect.top;\n          this.tribute.menu.scrollTop -= scrollDistance;\n        }\n      } else {\n        li.classList.remove(this.tribute.current.collection.selectClass);\n      }\n    }\n  }\n\n  getFullHeight(elem, includeMargin) {\n    let height = elem.getBoundingClientRect().height;\n\n    if (includeMargin) {\n      let style = elem.currentStyle || window.getComputedStyle(elem);\n      return (\n        height + parseFloat(style.marginTop) + parseFloat(style.marginBottom)\n      );\n    }\n\n    return height;\n  }\n}\n\nclass TributeMenuEvents {\n  constructor(tribute) {\n    this.tribute = tribute;\n    this.tribute.menuEvents = this;\n    this.menu = this.tribute.menu;\n  }\n\n  bind(menu) {\n    this.menuClickEvent = this.tribute.events.click.bind(null, this);\n    this.menuContainerScrollEvent = this.debounce(\n      () => {\n        if (this.tribute.isActive) {\n          this.tribute.showMenuFor(this.tribute.current.element, false);\n        }\n      },\n      300,\n      false\n    );\n    this.windowResizeEvent = this.debounce(\n      () => {\n        if (this.tribute.isActive) {\n          this.tribute.range.positionMenuAtCaret(true);\n        }\n      },\n      300,\n      false\n    );\n\n    // fixes IE11 issues with mousedown\n    this.tribute.range\n      .getDocument()\n      .addEventListener(\"MSPointerDown\", this.menuClickEvent, false);\n    this.tribute.range\n      .getDocument()\n      .addEventListener(\"mousedown\", this.menuClickEvent, false);\n    window.addEventListener(\"resize\", this.windowResizeEvent);\n\n    if (this.menuContainer) {\n      this.menuContainer.addEventListener(\n        \"scroll\",\n        this.menuContainerScrollEvent,\n        false\n      );\n    } else {\n      window.addEventListener(\"scroll\", this.menuContainerScrollEvent);\n    }\n  }\n\n  unbind(menu) {\n    this.tribute.range\n      .getDocument()\n      .removeEventListener(\"mousedown\", this.menuClickEvent, false);\n    this.tribute.range\n      .getDocument()\n      .removeEventListener(\"MSPointerDown\", this.menuClickEvent, false);\n    window.removeEventListener(\"resize\", this.windowResizeEvent);\n\n    if (this.menuContainer) {\n      this.menuContainer.removeEventListener(\n        \"scroll\",\n        this.menuContainerScrollEvent,\n        false\n      );\n    } else {\n      window.removeEventListener(\"scroll\", this.menuContainerScrollEvent);\n    }\n  }\n\n  debounce(func, wait, immediate) {\n    var timeout;\n    return () => {\n      var context = this,\n        args = arguments;\n      var later = () => {\n        timeout = null;\n        if (!immediate) func.apply(context, args);\n      };\n      var callNow = immediate && !timeout;\n      clearTimeout(timeout);\n      timeout = setTimeout(later, wait);\n      if (callNow) func.apply(context, args);\n    };\n  }\n}\n\n// Thanks to https://github.com/jeff-collins/ment.io\n\nclass TributeRange {\n    constructor(tribute) {\n        this.tribute = tribute;\n        this.tribute.range = this;\n    }\n\n    getDocument() {\n        let iframe;\n        if (this.tribute.current.collection) {\n            iframe = this.tribute.current.collection.iframe;\n        }\n\n        if (!iframe) {\n            return document\n        }\n\n        return iframe.contentWindow.document\n    }\n\n    positionMenuAtCaret(scrollTo) {\n        let context = this.tribute.current,\n            coordinates;\n\n        let info = this.getTriggerInfo(false, this.tribute.hasTrailingSpace, true, this.tribute.allowSpaces, this.tribute.autocompleteMode);\n\n        if (typeof info !== 'undefined') {\n\n            if(!this.tribute.positionMenu){\n                this.tribute.menu.style.cssText = `display: block;`;\n                return\n            }\n\n            if (!this.isContentEditable(context.element)) {\n                coordinates = this.getTextAreaOrInputUnderlinePosition(this.tribute.current.element,\n                    info.mentionPosition);\n            }\n            else {\n                coordinates = this.getContentEditableCaretPosition(info.mentionPosition);\n            }\n\n            this.tribute.menu.style.cssText = `top: ${coordinates.top}px;\n                                     left: ${coordinates.left}px;\n                                     right: ${coordinates.right}px;\n                                     bottom: ${coordinates.bottom}px;\n                                     position: absolute;\n                                     display: block;`;\n\n            if (coordinates.left === 'auto') {\n                this.tribute.menu.style.left = 'auto';\n            }\n\n            if (coordinates.top === 'auto') {\n                this.tribute.menu.style.top = 'auto';\n            }\n\n            if (scrollTo) this.scrollIntoView();\n\n            window.setTimeout(() => {\n                let menuDimensions = {\n                   width: this.tribute.menu.offsetWidth,\n                   height: this.tribute.menu.offsetHeight\n                };\n                let menuIsOffScreen = this.isMenuOffScreen(coordinates, menuDimensions);\n\n                let menuIsOffScreenHorizontally = window.innerWidth > menuDimensions.width && (menuIsOffScreen.left || menuIsOffScreen.right);\n                let menuIsOffScreenVertically = window.innerHeight > menuDimensions.height && (menuIsOffScreen.top || menuIsOffScreen.bottom);\n                if (menuIsOffScreenHorizontally || menuIsOffScreenVertically) {\n                    this.tribute.menu.style.cssText = 'display: none';\n                    this.positionMenuAtCaret(scrollTo);\n                }\n            }, 0);\n\n        } else {\n            this.tribute.menu.style.cssText = 'display: none';\n        }\n    }\n\n    get menuContainerIsBody() {\n        return this.tribute.menuContainer === document.body || !this.tribute.menuContainer;\n    }\n\n\n    selectElement(targetElement, path, offset) {\n        let range;\n        let elem = targetElement;\n\n        if (path) {\n            for (var i = 0; i < path.length; i++) {\n                elem = elem.childNodes[path[i]];\n                if (elem === undefined) {\n                    return\n                }\n                while (elem.length < offset) {\n                    offset -= elem.length;\n                    elem = elem.nextSibling;\n                }\n                if (elem.childNodes.length === 0 && !elem.length) {\n                    elem = elem.previousSibling;\n                }\n            }\n        }\n        let sel = this.getWindowSelection();\n\n        range = this.getDocument().createRange();\n        range.setStart(elem, offset);\n        range.setEnd(elem, offset);\n        range.collapse(true);\n\n        try {\n            sel.removeAllRanges();\n        } catch (error) {}\n\n        sel.addRange(range);\n        targetElement.focus();\n    }\n\n    replaceTriggerText(text, requireLeadingSpace, hasTrailingSpace, originalEvent, item) {\n        let info = this.getTriggerInfo(true, hasTrailingSpace, requireLeadingSpace, this.tribute.allowSpaces, this.tribute.autocompleteMode);\n\n        if (info !== undefined) {\n            let context = this.tribute.current;\n            let replaceEvent = new CustomEvent('tribute-replaced', {\n                detail: {\n                    item: item,\n                    instance: context,\n                    context: info,\n                    event: originalEvent,\n                }\n            });\n\n            if (!this.isContentEditable(context.element)) {\n                let myField = this.tribute.current.element;\n                let textSuffix = typeof this.tribute.replaceTextSuffix == 'string'\n                    ? this.tribute.replaceTextSuffix\n                    : ' ';\n                text += textSuffix;\n                let startPos = info.mentionPosition;\n                let endPos = info.mentionPosition + info.mentionText.length + textSuffix.length;\n                if (!this.tribute.autocompleteMode) {\n                    endPos += info.mentionTriggerChar.length - 1;\n                }\n                myField.value = myField.value.substring(0, startPos) + text +\n                    myField.value.substring(endPos, myField.value.length);\n                myField.selectionStart = startPos + text.length;\n                myField.selectionEnd = startPos + text.length;\n            } else {\n                // add a space to the end of the pasted text\n                let textSuffix = typeof this.tribute.replaceTextSuffix == 'string'\n                    ? this.tribute.replaceTextSuffix\n                    : '\\xA0';\n                text += textSuffix;\n                let endPos = info.mentionPosition + info.mentionText.length;\n                if (!this.tribute.autocompleteMode) {\n                    endPos += info.mentionTriggerChar.length;\n                }\n                this.pasteHtml(text, info.mentionPosition, endPos);\n            }\n\n            context.element.dispatchEvent(new CustomEvent('input', { bubbles: true }));\n            context.element.dispatchEvent(replaceEvent);\n        }\n    }\n\n    pasteHtml(html, startPos, endPos) {\n        let range, sel;\n        sel = this.getWindowSelection();\n        range = this.getDocument().createRange();\n        range.setStart(sel.anchorNode, startPos);\n        range.setEnd(sel.anchorNode, endPos);\n        range.deleteContents();\n\n        let el = this.getDocument().createElement('div');\n        el.innerHTML = html;\n        let frag = this.getDocument().createDocumentFragment(),\n            node, lastNode;\n        while ((node = el.firstChild)) {\n            lastNode = frag.appendChild(node);\n        }\n        range.insertNode(frag);\n\n        // Preserve the selection\n        if (lastNode) {\n            range = range.cloneRange();\n            range.setStartAfter(lastNode);\n            range.collapse(true);\n            sel.removeAllRanges();\n            sel.addRange(range);\n        }\n    }\n\n    getWindowSelection() {\n        if (this.tribute.collection.iframe) {\n            return this.tribute.collection.iframe.contentWindow.getSelection()\n        }\n\n        return window.getSelection()\n    }\n\n    getNodePositionInParent(element) {\n        if (element.parentNode === null) {\n            return 0\n        }\n\n        for (var i = 0; i < element.parentNode.childNodes.length; i++) {\n            let node = element.parentNode.childNodes[i];\n\n            if (node === element) {\n                return i\n            }\n        }\n    }\n\n    getContentEditableSelectedPath(ctx) {\n        let sel = this.getWindowSelection();\n        let selected = sel.anchorNode;\n        let path = [];\n        let offset;\n\n        if (selected != null) {\n            let i;\n            let ce = selected.contentEditable;\n            while (selected !== null && ce !== 'true') {\n                i = this.getNodePositionInParent(selected);\n                path.push(i);\n                selected = selected.parentNode;\n                if (selected !== null) {\n                    ce = selected.contentEditable;\n                }\n            }\n            path.reverse();\n\n            // getRangeAt may not exist, need alternative\n            offset = sel.getRangeAt(0).startOffset;\n\n            return {\n                selected: selected,\n                path: path,\n                offset: offset\n            }\n        }\n    }\n\n    getTextPrecedingCurrentSelection() {\n        let context = this.tribute.current,\n            text = '';\n\n        if (!this.isContentEditable(context.element)) {\n            let textComponent = this.tribute.current.element;\n            if (textComponent) {\n                let startPos = textComponent.selectionStart;\n                if (textComponent.value && startPos >= 0) {\n                    text = textComponent.value.substring(0, startPos);\n                }\n            }\n\n        } else {\n            let selectedElem = this.getWindowSelection().anchorNode;\n\n            if (selectedElem != null) {\n                let workingNodeContent = selectedElem.textContent;\n                let selectStartOffset = this.getWindowSelection().getRangeAt(0).startOffset;\n\n                if (workingNodeContent && selectStartOffset >= 0) {\n                    text = workingNodeContent.substring(0, selectStartOffset);\n                }\n            }\n        }\n\n        return text\n    }\n\n    getLastWordInText(text) {\n        text = text.replace(/\\u00A0/g, ' '); // https://stackoverflow.com/questions/29850407/how-do-i-replace-unicode-character-u00a0-with-a-space-in-javascript\n        let wordsArray = text.split(/\\s+/);\n        let worldsCount = wordsArray.length - 1;\n        return wordsArray[worldsCount].trim()\n    }\n\n    getTriggerInfo(menuAlreadyActive, hasTrailingSpace, requireLeadingSpace, allowSpaces, isAutocomplete) {\n        let ctx = this.tribute.current;\n        let selected, path, offset;\n\n        if (!this.isContentEditable(ctx.element)) {\n            selected = this.tribute.current.element;\n        } else {\n            let selectionInfo = this.getContentEditableSelectedPath(ctx);\n\n            if (selectionInfo) {\n                selected = selectionInfo.selected;\n                path = selectionInfo.path;\n                offset = selectionInfo.offset;\n            }\n        }\n\n        let effectiveRange = this.getTextPrecedingCurrentSelection();\n        let lastWordOfEffectiveRange = this.getLastWordInText(effectiveRange);\n\n        if (isAutocomplete) {\n            return {\n                mentionPosition: effectiveRange.length - lastWordOfEffectiveRange.length,\n                mentionText: lastWordOfEffectiveRange,\n                mentionSelectedElement: selected,\n                mentionSelectedPath: path,\n                mentionSelectedOffset: offset\n            }\n        }\n\n        if (effectiveRange !== undefined && effectiveRange !== null) {\n            let mostRecentTriggerCharPos = -1;\n            let triggerChar;\n\n            this.tribute.collection.forEach(config => {\n                let c = config.trigger;\n                let idx = config.requireLeadingSpace ?\n                    this.lastIndexWithLeadingSpace(effectiveRange, c) :\n                    effectiveRange.lastIndexOf(c);\n\n                if (idx > mostRecentTriggerCharPos) {\n                    mostRecentTriggerCharPos = idx;\n                    triggerChar = c;\n                    requireLeadingSpace = config.requireLeadingSpace;\n                }\n            });\n\n            if (mostRecentTriggerCharPos >= 0 &&\n                (\n                    mostRecentTriggerCharPos === 0 ||\n                    !requireLeadingSpace ||\n                    /[\\xA0\\s]/g.test(\n                        effectiveRange.substring(\n                            mostRecentTriggerCharPos - 1,\n                            mostRecentTriggerCharPos)\n                    )\n                )\n            ) {\n                let currentTriggerSnippet = effectiveRange.substring(mostRecentTriggerCharPos + triggerChar.length,\n                    effectiveRange.length);\n\n                triggerChar = effectiveRange.substring(mostRecentTriggerCharPos, mostRecentTriggerCharPos + triggerChar.length);\n                let firstSnippetChar = currentTriggerSnippet.substring(0, 1);\n                let leadingSpace = currentTriggerSnippet.length > 0 &&\n                    (\n                        firstSnippetChar === ' ' ||\n                        firstSnippetChar === '\\xA0'\n                    );\n                if (hasTrailingSpace) {\n                    currentTriggerSnippet = currentTriggerSnippet.trim();\n                }\n\n                let regex = allowSpaces ? /[^\\S ]/g : /[\\xA0\\s]/g;\n\n                this.tribute.hasTrailingSpace = regex.test(currentTriggerSnippet);\n\n                if (!leadingSpace && (menuAlreadyActive || !(regex.test(currentTriggerSnippet)))) {\n                    return {\n                        mentionPosition: mostRecentTriggerCharPos,\n                        mentionText: currentTriggerSnippet,\n                        mentionSelectedElement: selected,\n                        mentionSelectedPath: path,\n                        mentionSelectedOffset: offset,\n                        mentionTriggerChar: triggerChar\n                    }\n                }\n            }\n        }\n    }\n\n    lastIndexWithLeadingSpace (str, trigger) {\n        let reversedStr = str.split('').reverse().join('');\n        let index = -1;\n\n        for (let cidx = 0, len = str.length; cidx < len; cidx++) {\n            let firstChar = cidx === str.length - 1;\n            let leadingSpace = /\\s/.test(reversedStr[cidx + 1]);\n\n            let match = true;\n            for (let triggerIdx = trigger.length - 1; triggerIdx >= 0; triggerIdx--) {\n              if (trigger[triggerIdx] !== reversedStr[cidx-triggerIdx]) {\n                match = false;\n                break\n              }\n            }\n\n            if (match && (firstChar || leadingSpace)) {\n                index = str.length - 1 - cidx;\n                break\n            }\n        }\n\n        return index\n    }\n\n    isContentEditable(element) {\n        return element.nodeName !== 'INPUT' && element.nodeName !== 'TEXTAREA'\n    }\n\n    isMenuOffScreen(coordinates, menuDimensions) {\n        let windowWidth = window.innerWidth;\n        let windowHeight = window.innerHeight;\n        let doc = document.documentElement;\n        let windowLeft = (window.pageXOffset || doc.scrollLeft) - (doc.clientLeft || 0);\n        let windowTop = (window.pageYOffset || doc.scrollTop) - (doc.clientTop || 0);\n\n        let menuTop = typeof coordinates.top === 'number' ? coordinates.top : windowTop + windowHeight - coordinates.bottom - menuDimensions.height;\n        let menuRight = typeof coordinates.right === 'number' ? coordinates.right : coordinates.left + menuDimensions.width;\n        let menuBottom = typeof coordinates.bottom === 'number' ? coordinates.bottom : coordinates.top + menuDimensions.height;\n        let menuLeft = typeof coordinates.left === 'number' ? coordinates.left : windowLeft + windowWidth - coordinates.right - menuDimensions.width;\n\n        return {\n            top: menuTop < Math.floor(windowTop),\n            right: menuRight > Math.ceil(windowLeft + windowWidth),\n            bottom: menuBottom > Math.ceil(windowTop + windowHeight),\n            left: menuLeft < Math.floor(windowLeft)\n        }\n    }\n\n    getMenuDimensions() {\n        // Width of the menu depends of its contents and position\n        // We must check what its width would be without any obstruction\n        // This way, we can achieve good positioning for flipping the menu\n        let dimensions = {\n            width: null,\n            height: null\n        };\n\n        this.tribute.menu.style.cssText = `top: 0px;\n                                 left: 0px;\n                                 position: fixed;\n                                 display: block;\n                                 visibility; hidden;`;\n       dimensions.width = this.tribute.menu.offsetWidth;\n       dimensions.height = this.tribute.menu.offsetHeight;\n\n       this.tribute.menu.style.cssText = `display: none;`;\n\n       return dimensions\n    }\n\n    getTextAreaOrInputUnderlinePosition(element, position, flipped) {\n        let properties = ['direction', 'boxSizing', 'width', 'height', 'overflowX',\n            'overflowY', 'borderTopWidth', 'borderRightWidth',\n            'borderBottomWidth', 'borderLeftWidth', 'paddingTop',\n            'paddingRight', 'paddingBottom', 'paddingLeft',\n            'fontStyle', 'fontVariant', 'fontWeight', 'fontStretch',\n            'fontSize', 'fontSizeAdjust', 'lineHeight', 'fontFamily',\n            'textAlign', 'textTransform', 'textIndent',\n            'textDecoration', 'letterSpacing', 'wordSpacing'\n        ];\n\n        let isFirefox = (window.mozInnerScreenX !== null);\n\n        let div = this.getDocument().createElement('div');\n        div.id = 'input-textarea-caret-position-mirror-div';\n        this.getDocument().body.appendChild(div);\n\n        let style = div.style;\n        let computed = window.getComputedStyle ? getComputedStyle(element) : element.currentStyle;\n\n        style.whiteSpace = 'pre-wrap';\n        if (element.nodeName !== 'INPUT') {\n            style.wordWrap = 'break-word';\n        }\n\n        // position off-screen\n        style.position = 'absolute';\n        style.visibility = 'hidden';\n\n        // transfer the element's properties to the div\n        properties.forEach(prop => {\n            style[prop] = computed[prop];\n        });\n\n        if (isFirefox) {\n            style.width = `${(parseInt(computed.width) - 2)}px`;\n            if (element.scrollHeight > parseInt(computed.height))\n                style.overflowY = 'scroll';\n        } else {\n            style.overflow = 'hidden';\n        }\n\n        div.textContent = element.value.substring(0, position);\n\n        if (element.nodeName === 'INPUT') {\n            div.textContent = div.textContent.replace(/\\s/g, ' ');\n        }\n\n        let span = this.getDocument().createElement('span');\n        span.textContent = element.value.substring(position) || '.';\n        div.appendChild(span);\n\n        let rect = element.getBoundingClientRect();\n        let doc = document.documentElement;\n        let windowLeft = (window.pageXOffset || doc.scrollLeft) - (doc.clientLeft || 0);\n        let windowTop = (window.pageYOffset || doc.scrollTop) - (doc.clientTop || 0);\n\n        let top = 0;\n        let left = 0;\n        if (this.menuContainerIsBody) {\n          top = rect.top;\n          left = rect.left;\n        }\n\n        let coordinates = {\n            top: top + windowTop + span.offsetTop + parseInt(computed.borderTopWidth) + parseInt(computed.fontSize) - element.scrollTop,\n            left: left + windowLeft + span.offsetLeft + parseInt(computed.borderLeftWidth)\n        };\n\n        let windowWidth = window.innerWidth;\n        let windowHeight = window.innerHeight;\n\n        let menuDimensions = this.getMenuDimensions();\n        let menuIsOffScreen = this.isMenuOffScreen(coordinates, menuDimensions);\n\n        if (menuIsOffScreen.right) {\n            coordinates.right = windowWidth - coordinates.left;\n            coordinates.left = 'auto';\n        }\n\n        let parentHeight = this.tribute.menuContainer\n            ? this.tribute.menuContainer.offsetHeight\n            : this.getDocument().body.offsetHeight;\n\n        if (menuIsOffScreen.bottom) {\n            let parentRect = this.tribute.menuContainer\n                ? this.tribute.menuContainer.getBoundingClientRect()\n                : this.getDocument().body.getBoundingClientRect();\n            let scrollStillAvailable = parentHeight - (windowHeight - parentRect.top);\n\n            coordinates.bottom = scrollStillAvailable + (windowHeight - rect.top - span.offsetTop);\n            coordinates.top = 'auto';\n        }\n\n        menuIsOffScreen = this.isMenuOffScreen(coordinates, menuDimensions);\n        if (menuIsOffScreen.left) {\n            coordinates.left = windowWidth > menuDimensions.width\n                ? windowLeft + windowWidth - menuDimensions.width\n                : windowLeft;\n            delete coordinates.right;\n        }\n        if (menuIsOffScreen.top) {\n            coordinates.top = windowHeight > menuDimensions.height\n                ? windowTop + windowHeight - menuDimensions.height\n                : windowTop;\n            delete coordinates.bottom;\n        }\n\n        this.getDocument().body.removeChild(div);\n        return coordinates\n    }\n\n    getContentEditableCaretPosition(selectedNodePosition) {\n        let range;\n        let sel = this.getWindowSelection();\n\n        range = this.getDocument().createRange();\n        range.setStart(sel.anchorNode, selectedNodePosition);\n        range.setEnd(sel.anchorNode, selectedNodePosition);\n\n        range.collapse(false);\n\n        let rect = range.getBoundingClientRect();\n        let doc = document.documentElement;\n        let windowLeft = (window.pageXOffset || doc.scrollLeft) - (doc.clientLeft || 0);\n        let windowTop = (window.pageYOffset || doc.scrollTop) - (doc.clientTop || 0);\n\n        let left = rect.left;\n        let top = rect.top;\n\n        let coordinates = {\n            left: left + windowLeft,\n            top: top + rect.height + windowTop\n        };\n        let windowWidth = window.innerWidth;\n        let windowHeight = window.innerHeight;\n\n        let menuDimensions = this.getMenuDimensions();\n        let menuIsOffScreen = this.isMenuOffScreen(coordinates, menuDimensions);\n\n        if (menuIsOffScreen.right) {\n            coordinates.left = 'auto';\n            coordinates.right = windowWidth - rect.left - windowLeft;\n        }\n\n        let parentHeight = this.tribute.menuContainer\n            ? this.tribute.menuContainer.offsetHeight\n            : this.getDocument().body.offsetHeight;\n\n        if (menuIsOffScreen.bottom) {\n            let parentRect = this.tribute.menuContainer\n                ? this.tribute.menuContainer.getBoundingClientRect()\n                : this.getDocument().body.getBoundingClientRect();\n            let scrollStillAvailable = parentHeight - (windowHeight - parentRect.top);\n\n            coordinates.top = 'auto';\n            coordinates.bottom = scrollStillAvailable + (windowHeight - rect.top);\n        }\n\n        menuIsOffScreen = this.isMenuOffScreen(coordinates, menuDimensions);\n        if (menuIsOffScreen.left) {\n            coordinates.left = windowWidth > menuDimensions.width\n                ? windowLeft + windowWidth - menuDimensions.width\n                : windowLeft;\n            delete coordinates.right;\n        }\n        if (menuIsOffScreen.top) {\n            coordinates.top = windowHeight > menuDimensions.height\n                ? windowTop + windowHeight - menuDimensions.height\n                : windowTop;\n            delete coordinates.bottom;\n        }\n\n        if (!this.menuContainerIsBody) {\n            coordinates.left = coordinates.left ? coordinates.left - this.tribute.menuContainer.offsetLeft : coordinates.left;\n            coordinates.top = coordinates.top ? coordinates.top - this.tribute.menuContainer.offsetTop : coordinates.top;\n        }\n\n        return coordinates\n    }\n\n    scrollIntoView(elem) {\n        let reasonableBuffer = 20,\n            clientRect;\n        let maxScrollDisplacement = 100;\n        let e = this.menu;\n\n        if (typeof e === 'undefined') return;\n\n        while (clientRect === undefined || clientRect.height === 0) {\n            clientRect = e.getBoundingClientRect();\n\n            if (clientRect.height === 0) {\n                e = e.childNodes[0];\n                if (e === undefined || !e.getBoundingClientRect) {\n                    return\n                }\n            }\n        }\n\n        let elemTop = clientRect.top;\n        let elemBottom = elemTop + clientRect.height;\n\n        if (elemTop < 0) {\n            window.scrollTo(0, window.pageYOffset + clientRect.top - reasonableBuffer);\n        } else if (elemBottom > window.innerHeight) {\n            let maxY = window.pageYOffset + clientRect.top - reasonableBuffer;\n\n            if (maxY - window.pageYOffset > maxScrollDisplacement) {\n                maxY = window.pageYOffset + maxScrollDisplacement;\n            }\n\n            let targetY = window.pageYOffset - (window.innerHeight - elemBottom);\n\n            if (targetY > maxY) {\n                targetY = maxY;\n            }\n\n            window.scrollTo(0, targetY);\n        }\n    }\n}\n\n// Thanks to https://github.com/mattyork/fuzzy\nclass TributeSearch {\n    constructor(tribute) {\n        this.tribute = tribute;\n        this.tribute.search = this;\n    }\n\n    simpleFilter(pattern, array) {\n        return array.filter(string => {\n            return this.test(pattern, string)\n        })\n    }\n\n    test(pattern, string) {\n        return this.match(pattern, string) !== null\n    }\n\n    match(pattern, string, opts) {\n        opts = opts || {};\n        let len = string.length,\n            pre = opts.pre || '',\n            post = opts.post || '',\n            compareString = opts.caseSensitive && string || string.toLowerCase();\n\n        if (opts.skip) {\n            return {rendered: string, score: 0}\n        }\n\n        pattern = opts.caseSensitive && pattern || pattern.toLowerCase();\n\n        let patternCache = this.traverse(compareString, pattern, 0, 0, []);\n        if (!patternCache) {\n            return null\n        }\n        return {\n            rendered: this.render(string, patternCache.cache, pre, post),\n            score: patternCache.score\n        }\n    }\n\n    traverse(string, pattern, stringIndex, patternIndex, patternCache) {\n        // if the pattern search at end\n        if (pattern.length === patternIndex) {\n\n            // calculate score and copy the cache containing the indices where it's found\n            return {\n                score: this.calculateScore(patternCache),\n                cache: patternCache.slice()\n            }\n        }\n\n        // if string at end or remaining pattern > remaining string\n        if (string.length === stringIndex || pattern.length - patternIndex > string.length - stringIndex) {\n            return undefined\n        }\n\n        let c = pattern[patternIndex];\n        let index = string.indexOf(c, stringIndex);\n        let best, temp;\n\n        while (index > -1) {\n            patternCache.push(index);\n            temp = this.traverse(string, pattern, index + 1, patternIndex + 1, patternCache);\n            patternCache.pop();\n\n            // if downstream traversal failed, return best answer so far\n            if (!temp) {\n                return best\n            }\n\n            if (!best || best.score < temp.score) {\n                best = temp;\n            }\n\n            index = string.indexOf(c, index + 1);\n        }\n\n        return best\n    }\n\n    calculateScore(patternCache) {\n        let score = 0;\n        let temp = 1;\n\n        patternCache.forEach((index, i) => {\n            if (i > 0) {\n                if (patternCache[i - 1] + 1 === index) {\n                    temp += temp + 1;\n                }\n                else {\n                    temp = 1;\n                }\n            }\n\n            score += temp;\n        });\n\n        return score\n    }\n\n    render(string, indices, pre, post) {\n        var rendered = string.substring(0, indices[0]);\n\n        indices.forEach((index, i) => {\n            rendered += pre + string[index] + post +\n                string.substring(index + 1, (indices[i + 1]) ? indices[i + 1] : string.length);\n        });\n\n        return rendered\n    }\n\n    filter(pattern, arr, opts) {\n        opts = opts || {};\n        return arr\n            .reduce((prev, element, idx, arr) => {\n                let str = element;\n\n                if (opts.extract) {\n                    str = opts.extract(element);\n\n                    if (!str) { // take care of undefineds / nulls / etc.\n                        str = '';\n                    }\n                }\n\n                let rendered = this.match(pattern, str, opts);\n\n                if (rendered != null) {\n                    prev[prev.length] = {\n                        string: rendered.rendered,\n                        score: rendered.score,\n                        index: idx,\n                        original: element\n                    };\n                }\n\n                return prev\n            }, [])\n\n        .sort((a, b) => {\n            let compare = b.score - a.score;\n            if (compare) return compare\n            return a.index - b.index\n        })\n    }\n}\n\nclass Tribute {\n  constructor({\n    values = null,\n    iframe = null,\n    selectClass = \"highlight\",\n    containerClass = \"tribute-container\",\n    itemClass = \"\",\n    trigger = \"@\",\n    autocompleteMode = false,\n    selectTemplate = null,\n    menuItemTemplate = null,\n    lookup = \"key\",\n    fillAttr = \"value\",\n    collection = null,\n    menuContainer = null,\n    noMatchTemplate = null,\n    requireLeadingSpace = true,\n    allowSpaces = false,\n    replaceTextSuffix = null,\n    positionMenu = true,\n    spaceSelectsMatch = false,\n    searchOpts = {},\n    menuItemLimit = null,\n    menuShowMinLength = 0\n  }) {\n    this.autocompleteMode = autocompleteMode;\n    this.menuSelected = 0;\n    this.current = {};\n    this.inputEvent = false;\n    this.isActive = false;\n    this.menuContainer = menuContainer;\n    this.allowSpaces = allowSpaces;\n    this.replaceTextSuffix = replaceTextSuffix;\n    this.positionMenu = positionMenu;\n    this.hasTrailingSpace = false;\n    this.spaceSelectsMatch = spaceSelectsMatch;\n\n    if (this.autocompleteMode) {\n      trigger = \"\";\n      allowSpaces = false;\n    }\n\n    if (values) {\n      this.collection = [\n        {\n          // symbol that starts the lookup\n          trigger: trigger,\n\n          // is it wrapped in an iframe\n          iframe: iframe,\n\n          // class applied to selected item\n          selectClass: selectClass,\n\n          // class applied to the Container\n          containerClass: containerClass,\n\n          // class applied to each item\n          itemClass: itemClass,\n\n          // function called on select that retuns the content to insert\n          selectTemplate: (\n            selectTemplate || Tribute.defaultSelectTemplate\n          ).bind(this),\n\n          // function called that returns content for an item\n          menuItemTemplate: (\n            menuItemTemplate || Tribute.defaultMenuItemTemplate\n          ).bind(this),\n\n          // function called when menu is empty, disables hiding of menu.\n          noMatchTemplate: (t => {\n            if (typeof t === \"string\") {\n              if (t.trim() === \"\") return null;\n              return t;\n            }\n            if (typeof t === \"function\") {\n              return t.bind(this);\n            }\n\n            return (\n              noMatchTemplate ||\n              function() {\n                return \"<li>No Match Found!</li>\";\n              }.bind(this)\n            );\n          })(noMatchTemplate),\n\n          // column to search against in the object\n          lookup: lookup,\n\n          // column that contains the content to insert by default\n          fillAttr: fillAttr,\n\n          // array of objects or a function returning an array of objects\n          values: values,\n\n          requireLeadingSpace: requireLeadingSpace,\n\n          searchOpts: searchOpts,\n\n          menuItemLimit: menuItemLimit,\n\n          menuShowMinLength: menuShowMinLength\n        }\n      ];\n    } else if (collection) {\n      if (this.autocompleteMode)\n        console.warn(\n          \"Tribute in autocomplete mode does not work for collections\"\n        );\n      this.collection = collection.map(item => {\n        return {\n          trigger: item.trigger || trigger,\n          iframe: item.iframe || iframe,\n          selectClass: item.selectClass || selectClass,\n          containerClass: item.containerClass || containerClass,\n          itemClass: item.itemClass || itemClass,\n          selectTemplate: (\n            item.selectTemplate || Tribute.defaultSelectTemplate\n          ).bind(this),\n          menuItemTemplate: (\n            item.menuItemTemplate || Tribute.defaultMenuItemTemplate\n          ).bind(this),\n          // function called when menu is empty, disables hiding of menu.\n          noMatchTemplate: (t => {\n            if (typeof t === \"string\") {\n              if (t.trim() === \"\") return null;\n              return t;\n            }\n            if (typeof t === \"function\") {\n              return t.bind(this);\n            }\n\n            return (\n              noMatchTemplate ||\n              function() {\n                return \"<li>No Match Found!</li>\";\n              }.bind(this)\n            );\n          })(noMatchTemplate),\n          lookup: item.lookup || lookup,\n          fillAttr: item.fillAttr || fillAttr,\n          values: item.values,\n          requireLeadingSpace: item.requireLeadingSpace,\n          searchOpts: item.searchOpts || searchOpts,\n          menuItemLimit: item.menuItemLimit || menuItemLimit,\n          menuShowMinLength: item.menuShowMinLength || menuShowMinLength\n        };\n      });\n    } else {\n      throw new Error(\"[Tribute] No collection specified.\");\n    }\n\n    new TributeRange(this);\n    new TributeEvents(this);\n    new TributeMenuEvents(this);\n    new TributeSearch(this);\n  }\n\n  get isActive() {\n    return this._isActive;\n  }\n\n  set isActive(val) {\n    if (this._isActive != val) {\n      this._isActive = val;\n      if (this.current.element) {\n        let noMatchEvent = new CustomEvent(`tribute-active-${val}`);\n        this.current.element.dispatchEvent(noMatchEvent);\n      }\n    }\n  }\n\n  static defaultSelectTemplate(item) {\n    if (typeof item === \"undefined\")\n      return `${this.current.collection.trigger}${this.current.mentionText}`;\n    if (this.range.isContentEditable(this.current.element)) {\n      return (\n        '<span class=\"tribute-mention\">' +\n        (this.current.collection.trigger +\n          item.original[this.current.collection.fillAttr]) +\n        \"</span>\"\n      );\n    }\n\n    return (\n      this.current.collection.trigger +\n      item.original[this.current.collection.fillAttr]\n    );\n  }\n\n  static defaultMenuItemTemplate(matchItem) {\n    return matchItem.string;\n  }\n\n  static inputTypes() {\n    return [\"TEXTAREA\", \"INPUT\"];\n  }\n\n  triggers() {\n    return this.collection.map(config => {\n      return config.trigger;\n    });\n  }\n\n  attach(el) {\n    if (!el) {\n      throw new Error(\"[Tribute] Must pass in a DOM node or NodeList.\");\n    }\n\n    // Check if it is a jQuery collection\n    if (typeof jQuery !== \"undefined\" && el instanceof jQuery) {\n      el = el.get();\n    }\n\n    // Is el an Array/Array-like object?\n    if (\n      el.constructor === NodeList ||\n      el.constructor === HTMLCollection ||\n      el.constructor === Array\n    ) {\n      let length = el.length;\n      for (var i = 0; i < length; ++i) {\n        this._attach(el[i]);\n      }\n    } else {\n      this._attach(el);\n    }\n  }\n\n  _attach(el) {\n    if (el.hasAttribute(\"data-tribute\")) {\n      console.warn(\"Tribute was already bound to \" + el.nodeName);\n    }\n\n    this.ensureEditable(el);\n    this.events.bind(el);\n    el.setAttribute(\"data-tribute\", true);\n  }\n\n  ensureEditable(element) {\n    if (Tribute.inputTypes().indexOf(element.nodeName) === -1) {\n      if (element.contentEditable) {\n        element.contentEditable = true;\n      } else {\n        throw new Error(\"[Tribute] Cannot bind to \" + element.nodeName);\n      }\n    }\n  }\n\n  createMenu(containerClass) {\n    let wrapper = this.range.getDocument().createElement(\"div\"),\n      ul = this.range.getDocument().createElement(\"ul\");\n    wrapper.className = containerClass;\n    wrapper.appendChild(ul);\n\n    if (this.menuContainer) {\n      return this.menuContainer.appendChild(wrapper);\n    }\n\n    return this.range.getDocument().body.appendChild(wrapper);\n  }\n\n  showMenuFor(element, scrollTo) {\n    // Only proceed if menu isn't already shown for the current element & mentionText\n    if (\n      this.isActive &&\n      this.current.element === element &&\n      this.current.mentionText === this.currentMentionTextSnapshot\n    ) {\n      return;\n    }\n    this.currentMentionTextSnapshot = this.current.mentionText;\n\n    // create the menu if it doesn't exist.\n    if (!this.menu) {\n      this.menu = this.createMenu(this.current.collection.containerClass);\n      element.tributeMenu = this.menu;\n      this.menuEvents.bind(this.menu);\n    }\n\n    this.isActive = true;\n    this.menuSelected = 0;\n\n    if (!this.current.mentionText) {\n      this.current.mentionText = \"\";\n    }\n\n    const processValues = values => {\n      // Tribute may not be active any more by the time the value callback returns\n      if (!this.isActive) {\n        return;\n      }\n\n      let items = this.search.filter(this.current.mentionText, values, {\n        pre: this.current.collection.searchOpts.pre || \"<span>\",\n        post: this.current.collection.searchOpts.post || \"</span>\",\n        skip: this.current.collection.searchOpts.skip,\n        extract: el => {\n          if (typeof this.current.collection.lookup === \"string\") {\n            return el[this.current.collection.lookup];\n          } else if (typeof this.current.collection.lookup === \"function\") {\n            return this.current.collection.lookup(el, this.current.mentionText);\n          } else {\n            throw new Error(\n              \"Invalid lookup attribute, lookup must be string or function.\"\n            );\n          }\n        }\n      });\n\n      if (this.current.collection.menuItemLimit) {\n        items = items.slice(0, this.current.collection.menuItemLimit);\n      }\n\n      this.current.filteredItems = items;\n\n      let ul = this.menu.querySelector(\"ul\");\n\n      this.range.positionMenuAtCaret(scrollTo);\n\n      if (!items.length) {\n        let noMatchEvent = new CustomEvent(\"tribute-no-match\", {\n          detail: this.menu\n        });\n        this.current.element.dispatchEvent(noMatchEvent);\n        if (\n          (typeof this.current.collection.noMatchTemplate === \"function\" &&\n            !this.current.collection.noMatchTemplate()) ||\n          !this.current.collection.noMatchTemplate\n        ) {\n          this.hideMenu();\n        } else {\n          typeof this.current.collection.noMatchTemplate === \"function\"\n            ? (ul.innerHTML = this.current.collection.noMatchTemplate())\n            : (ul.innerHTML = this.current.collection.noMatchTemplate);\n        }\n\n        return;\n      }\n\n      ul.innerHTML = \"\";\n      let fragment = this.range.getDocument().createDocumentFragment();\n\n      items.forEach((item, index) => {\n        let li = this.range.getDocument().createElement(\"li\");\n        li.setAttribute(\"data-index\", index);\n        li.className = this.current.collection.itemClass;\n        li.addEventListener(\"mousemove\", e => {\n          let [li, index] = this._findLiTarget(e.target);\n          if (e.movementY !== 0) {\n            this.events.setActiveLi(index);\n          }\n        });\n        if (this.menuSelected === index) {\n          li.classList.add(this.current.collection.selectClass);\n        }\n        li.innerHTML = this.current.collection.menuItemTemplate(item);\n        fragment.appendChild(li);\n      });\n      ul.appendChild(fragment);\n    };\n\n    if (typeof this.current.collection.values === \"function\") {\n      this.current.collection.values(this.current.mentionText, processValues);\n    } else {\n      processValues(this.current.collection.values);\n    }\n  }\n\n  _findLiTarget(el) {\n    if (!el) return [];\n    const index = el.getAttribute(\"data-index\");\n    return !index ? this._findLiTarget(el.parentNode) : [el, index];\n  }\n\n  showMenuForCollection(element, collectionIndex) {\n    if (element !== document.activeElement) {\n      this.placeCaretAtEnd(element);\n    }\n\n    this.current.collection = this.collection[collectionIndex || 0];\n    this.current.externalTrigger = true;\n    this.current.element = element;\n\n    if (element.isContentEditable)\n      this.insertTextAtCursor(this.current.collection.trigger);\n    else this.insertAtCaret(element, this.current.collection.trigger);\n\n    this.showMenuFor(element);\n  }\n\n  // TODO: make sure this works for inputs/textareas\n  placeCaretAtEnd(el) {\n    el.focus();\n    if (\n      typeof window.getSelection != \"undefined\" &&\n      typeof document.createRange != \"undefined\"\n    ) {\n      var range = document.createRange();\n      range.selectNodeContents(el);\n      range.collapse(false);\n      var sel = window.getSelection();\n      sel.removeAllRanges();\n      sel.addRange(range);\n    } else if (typeof document.body.createTextRange != \"undefined\") {\n      var textRange = document.body.createTextRange();\n      textRange.moveToElementText(el);\n      textRange.collapse(false);\n      textRange.select();\n    }\n  }\n\n  // for contenteditable\n  insertTextAtCursor(text) {\n    var sel, range;\n    sel = window.getSelection();\n    range = sel.getRangeAt(0);\n    range.deleteContents();\n    var textNode = document.createTextNode(text);\n    range.insertNode(textNode);\n    range.selectNodeContents(textNode);\n    range.collapse(false);\n    sel.removeAllRanges();\n    sel.addRange(range);\n  }\n\n  // for regular inputs\n  insertAtCaret(textarea, text) {\n    var scrollPos = textarea.scrollTop;\n    var caretPos = textarea.selectionStart;\n\n    var front = textarea.value.substring(0, caretPos);\n    var back = textarea.value.substring(\n      textarea.selectionEnd,\n      textarea.value.length\n    );\n    textarea.value = front + text + back;\n    caretPos = caretPos + text.length;\n    textarea.selectionStart = caretPos;\n    textarea.selectionEnd = caretPos;\n    textarea.focus();\n    textarea.scrollTop = scrollPos;\n  }\n\n  hideMenu() {\n    if (this.menu) {\n      this.menu.style.cssText = \"display: none;\";\n      this.isActive = false;\n      this.menuSelected = 0;\n      this.current = {};\n    }\n  }\n\n  selectItemAtIndex(index, originalEvent) {\n    index = parseInt(index);\n    if (typeof index !== \"number\" || isNaN(index)) return;\n    let item = this.current.filteredItems[index];\n    let content = this.current.collection.selectTemplate(item);\n    if (content !== null) this.replaceText(content, originalEvent, item);\n  }\n\n  replaceText(content, originalEvent, item) {\n    this.range.replaceTriggerText(content, true, true, originalEvent, item);\n  }\n\n  _append(collection, newValues, replace) {\n    if (typeof collection.values === \"function\") {\n      throw new Error(\"Unable to append to values, as it is a function.\");\n    } else if (!replace) {\n      collection.values = collection.values.concat(newValues);\n    } else {\n      collection.values = newValues;\n    }\n  }\n\n  append(collectionIndex, newValues, replace) {\n    let index = parseInt(collectionIndex);\n    if (typeof index !== \"number\")\n      throw new Error(\"please provide an index for the collection to update.\");\n\n    let collection = this.collection[index];\n\n    this._append(collection, newValues, replace);\n  }\n\n  appendCurrent(newValues, replace) {\n    if (this.isActive) {\n      this._append(this.current.collection, newValues, replace);\n    } else {\n      throw new Error(\n        \"No active state. Please use append instead and pass an index.\"\n      );\n    }\n  }\n\n  detach(el) {\n    if (!el) {\n      throw new Error(\"[Tribute] Must pass in a DOM node or NodeList.\");\n    }\n\n    // Check if it is a jQuery collection\n    if (typeof jQuery !== \"undefined\" && el instanceof jQuery) {\n      el = el.get();\n    }\n\n    // Is el an Array/Array-like object?\n    if (\n      el.constructor === NodeList ||\n      el.constructor === HTMLCollection ||\n      el.constructor === Array\n    ) {\n      let length = el.length;\n      for (var i = 0; i < length; ++i) {\n        this._detach(el[i]);\n      }\n    } else {\n      this._detach(el);\n    }\n  }\n\n  _detach(el) {\n    this.events.unbind(el);\n    if (el.tributeMenu) {\n      this.menuEvents.unbind(el.tributeMenu);\n    }\n\n    setTimeout(() => {\n      el.removeAttribute(\"data-tribute\");\n      this.isActive = false;\n      if (el.tributeMenu) {\n        el.tributeMenu.remove();\n      }\n    });\n  }\n}\n\n/**\n * Tribute.js\n * Native ES6 JavaScript @mention Plugin\n **/\n\nexport default Tribute;\n","import \"../assets/index-d9ae9479.css\";\nimport { r as c } from \"../chunks/index-5f2a5f57.mjs\";\nimport { N as rt } from \"../chunks/index-5f2a5f57.mjs\";\nimport { generateUrl as p } from \"@nextcloud/router\";\nimport { n as u } from \"../chunks/_plugin-vue2_normalizer-71e2aa87.mjs\";\nimport { t as o } from \"../chunks/l10n-f692947e.mjs\";\nimport \"../Directives/Tooltip.mjs\";\nimport { emojiAddRecent as m, emojiSearch as d } from \"../Functions/emoji.mjs\";\nimport { n as h, j as f } from \"../chunks/referencePickerModal-6bc8f6b9.mjs\";\nimport \"@nextcloud/axios\";\nimport \"unist-util-visit\";\nimport \"unist-builder\";\nimport \"unified\";\nimport \"remark-parse\";\nimport \"remark-breaks\";\nimport \"remark-rehype\";\nimport \"rehype-react\";\nimport \"rehype-external-links\";\nimport \"./NcEmptyContent.mjs\";\nimport \"./NcSelect.mjs\";\nimport \"./NcLoadingIcon.mjs\";\nimport \"./NcTextField.mjs\";\nimport \"./NcButton.mjs\";\nimport \"./NcModal.mjs\";\nimport \"@nextcloud/event-bus\";\nimport l from \"tributejs/dist/tribute.esm.js\";\nimport _ from \"debounce\";\nimport g from \"string-length\";\nimport { VTooltip as b } from \"floating-vue\";\nconst y = {\n  name: \"NcAutoCompleteResult\",\n  props: {\n    title: {\n      type: String,\n      required: !0\n    },\n    subline: {\n      type: String,\n      default: null\n    },\n    id: {\n      type: String,\n      default: null\n    },\n    icon: {\n      type: String,\n      required: !0\n    },\n    iconUrl: {\n      type: String,\n      default: null\n    },\n    source: {\n      type: String,\n      required: !0\n    },\n    status: {\n      type: [Object, Array],\n      default: () => ({})\n    }\n  },\n  computed: {\n    avatarUrl() {\n      return this.iconUrl ? this.iconUrl : this.id && this.source === \"users\" ? this.getAvatarUrl(this.id, 44) : null;\n    },\n    haveStatus() {\n      var e, t, n;\n      return ((e = this.status) == null ? void 0 : e.icon) || ((t = this.status) == null ? void 0 : t.status) && ((n = this.status) == null ? void 0 : n.status) !== \"offline\";\n    }\n  },\n  methods: {\n    getAvatarUrl(e, t) {\n      return p(\"/avatar/{user}/{size}\", {\n        user: e,\n        size: t\n      });\n    }\n  }\n};\nvar C = function() {\n  var t = this, n = t._self._c;\n  return n(\"div\", { staticClass: \"autocomplete-result\" }, [n(\"div\", { staticClass: \"autocomplete-result__icon\", class: [t.icon, `autocomplete-result__icon--${t.avatarUrl ? \"with-avatar\" : \"\"}`], style: t.avatarUrl ? { backgroundImage: `url(${t.avatarUrl})` } : null }, [t.haveStatus ? n(\"div\", { staticClass: \"autocomplete-result__status\", class: [`autocomplete-result__status--${t.status && t.status.icon ? \"icon\" : t.status.status}`] }, [t._v(\" \" + t._s(t.status && t.status.icon || \"\") + \" \")]) : t._e()]), n(\"span\", { staticClass: \"autocomplete-result__content\" }, [n(\"span\", { staticClass: \"autocomplete-result__title\", attrs: { title: t.title } }, [t._v(\" \" + t._s(t.title) + \" \")]), t.subline ? n(\"span\", { staticClass: \"autocomplete-result__subline\" }, [t._v(\" \" + t._s(t.subline) + \" \")]) : t._e()])]);\n}, v = [], k = /* @__PURE__ */ u(\n  y,\n  C,\n  v,\n  !1,\n  null,\n  \"25cf09d8\",\n  null,\n  null\n);\nconst x = k.exports;\nconst T = {\n  name: \"NcRichContenteditable\",\n  directives: {\n    tooltip: b\n  },\n  mixins: [c],\n  props: {\n    value: {\n      type: String,\n      default: \"\",\n      required: !0\n    },\n    placeholder: {\n      type: String,\n      default: o(\"Write a message …\")\n    },\n    autoComplete: {\n      type: Function,\n      default: () => []\n    },\n    menuContainer: {\n      type: Element,\n      default: () => document.body\n    },\n    /**\n     * Make the contenteditable looks like a textarea or not.\n     * Default looks like a single-line input.\n     * This also handle the default enter/shift+enter behaviour.\n     * if multiline, enter = newline; otherwise enter = submit\n     * shift+enter always add a new line. ctrl+enter always submits\n     */\n    multiline: {\n      type: Boolean,\n      default: !1\n    },\n    /**\n     * Is the content editable ?\n     */\n    contenteditable: {\n      type: Boolean,\n      default: !0\n    },\n    /**\n     * Disable the editing and show specific disabled design\n     */\n    disabled: {\n      type: Boolean,\n      default: !1\n    },\n    /**\n     * Max allowed length\n     */\n    maxlength: {\n      type: Number,\n      default: null\n    },\n    /**\n     * Enable or disable emoji autocompletion\n     */\n    emojiAutocomplete: {\n      type: Boolean,\n      default: !0\n    },\n    /**\n     * Enable or disable link autocompletion\n     */\n    linkAutocomplete: {\n      type: Boolean,\n      default: !0\n    }\n  },\n  emits: [\n    \"submit\",\n    \"paste\",\n    \"update:value\",\n    \"smart-picker-submit\"\n  ],\n  data() {\n    return {\n      textSmiles: [],\n      tribute: null,\n      autocompleteOptions: {\n        // Allow spaces in the middle of mentions\n        allowSpaces: !0,\n        fillAttr: \"id\",\n        // Search against id and title (display name)\n        lookup: (e) => `${e.id} ${e.title}`,\n        // Where to inject the menu popup\n        menuContainer: this.menuContainer,\n        // Popup mention autocompletion templates\n        menuItemTemplate: (e) => this.renderComponentHtml(e.original, x),\n        // Hide if no results\n        noMatchTemplate: () => '<span class=\"hidden\"></span>',\n        // Inner display of mentions\n        selectTemplate: (e) => {\n          var t;\n          return this.genSelectTemplate((t = e == null ? void 0 : e.original) == null ? void 0 : t.id);\n        },\n        // Autocompletion results\n        values: this.debouncedAutoComplete\n      },\n      emojiOptions: {\n        trigger: \":\",\n        // Don't use the tribute search function at all\n        // We pass search results as values (see below)\n        lookup: (e, t) => t,\n        // Where to inject the menu popup\n        menuContainer: this.menuContainer,\n        // Popup mention autocompletion templates\n        menuItemTemplate: (e) => this.textSmiles.includes(e.original) ? e.original : `<span class=\"tribute-container-emoji__item__emoji\">${e.original.native}</span> :${e.original.short_name}`,\n        // Hide if no results\n        noMatchTemplate: () => o(\"No emoji found\"),\n        // Display raw emoji along with its name\n        selectTemplate: (e) => this.textSmiles.includes(e.original) ? e.original : (m(e.original), e.original.native),\n        // Pass the search results as values\n        values: (e, t) => {\n          const n = d(e);\n          this.textSmiles.includes(\":\" + e) && n.unshift(\":\" + e), t(n);\n        },\n        // Class added to the menu container\n        containerClass: \"tribute-container-emoji\",\n        // Class added to each list item\n        itemClass: \"tribute-container-emoji__item\"\n      },\n      linkOptions: {\n        trigger: \"/\",\n        // Don't use the tribute search function at all\n        // We pass search results as values (see below)\n        lookup: (e, t) => t,\n        // Where to inject the menu popup\n        menuContainer: this.menuContainer,\n        // Popup mention autocompletion templates\n        menuItemTemplate: (e) => `<img class=\"tribute-container-link__item__icon\" src=\"${e.original.icon_url}\"> <span class=\"tribute-container-link__item__title\">${e.original.title}</span>`,\n        // Hide if no results\n        noMatchTemplate: () => o(\"No link provider found\"),\n        selectTemplate: this.getLink,\n        // Pass the search results as values\n        values: (e, t) => t(h(e)),\n        // Class added to the menu container\n        containerClass: \"tribute-container-link\",\n        // Class added to each list item\n        itemClass: \"tribute-container-link__item\"\n      },\n      // Represent the raw untrimmed text of the contenteditable\n      // serves no other purpose than to check whether the\n      // content is empty or not\n      localValue: this.value,\n      // Is in text composition session in IME\n      isComposing: !1\n    };\n  },\n  computed: {\n    /**\n     * Is the current trimmed value empty?\n     *\n     * @return {boolean}\n     */\n    isEmptyValue() {\n      return !this.localValue || this.localValue && this.localValue.trim() === \"\";\n    },\n    /**\n     * Is this Firefox? 🙄\n     *\n     * @return {boolean}\n     */\n    isFF() {\n      return !!navigator.userAgent.match(/firefox/i);\n    },\n    /**\n     * Is the current value over maxlength?\n     *\n     * @return {boolean}\n     */\n    isOverMaxlength() {\n      return this.isEmptyValue || !this.maxlength ? !1 : g(this.localValue) > this.maxlength;\n    },\n    /**\n     * Tooltip to show if characters count is over limit\n     *\n     * @return {string}\n     */\n    tooltipString() {\n      return this.isOverMaxlength ? {\n        content: o(\"Message limit of {count} characters reached\", { count: this.maxlength }),\n        shown: !0,\n        trigger: \"manual\"\n      } : null;\n    },\n    /**\n     * Edit is only allowed when contenteditableis true and disabled is false\n     *\n     * @return {boolean}\n     */\n    canEdit() {\n      return this.contenteditable && !this.disabled;\n    },\n    /**\n     * Proxied native event handlers without custom event handlers\n     *\n     * @return {Record<string, Function>}\n     */\n    listeners() {\n      const e = { ...this.$listeners };\n      return delete e.paste, e;\n    }\n  },\n  watch: {\n    /**\n     * If the parent value change, we compare the plain text rendering\n     * If it's different, we render everything and update the main content\n     */\n    value() {\n      const e = this.$refs.contenteditable.innerHTML;\n      this.value.trim() !== this.parseContent(e).trim() && this.updateContent(this.value);\n    }\n  },\n  mounted() {\n    const e = [\"d\", \"D\", \"p\", \"P\", \"s\", \"S\", \"x\", \"X\", \")\", \"(\", \"|\", \"/\"];\n    this.textSmiles = [], e.forEach((t) => {\n      this.textSmiles.push(\":\" + t), this.textSmiles.push(\":-\" + t);\n    }), this.autocompleteTribute = new l(this.autocompleteOptions), this.autocompleteTribute.attach(this.$el), this.emojiAutocomplete && (this.emojiTribute = new l(this.emojiOptions), this.emojiTribute.attach(this.$el)), this.linkAutocomplete && (this.linkTribute = new l(this.linkOptions), this.linkTribute.attach(this.$el)), this.updateContent(this.value), this.$refs.contenteditable.contentEditable = this.canEdit;\n  },\n  beforeDestroy() {\n    this.autocompleteTribute && this.autocompleteTribute.detach(this.$el), this.emojiTribute && this.emojiTribute.detach(this.$el), this.linkTribute && this.linkTribute.detach(this.$el);\n  },\n  methods: {\n    /**\n     * Focus the richContenteditable\n     *\n     * @public\n     */\n    focus() {\n      this.$refs.contenteditable.focus();\n    },\n    getLink(e) {\n      return f(e.original.id).then((t) => {\n        const n = document.getElementById(\"tmp-smart-picker-result-node\"), i = {\n          result: t,\n          insertText: !0\n        };\n        if (this.$emit(\"smart-picker-submit\", i), i.insertText) {\n          const s = document.createTextNode(t);\n          n.replaceWith(s), this.setCursorAfter(s), this.updateValue(this.$refs.contenteditable.innerHTML);\n        } else\n          n.remove();\n      }).catch((t) => {\n        console.debug(\"Smart picker promise rejected:\", t);\n        const n = document.getElementById(\"tmp-smart-picker-result-node\");\n        this.setCursorAfter(n), n.remove();\n      }), '<span id=\"tmp-smart-picker-result-node\"></span>';\n    },\n    setCursorAfter(e) {\n      const t = document.createRange();\n      t.setEndAfter(e), t.collapse();\n      const n = window.getSelection();\n      n.removeAllRanges(), n.addRange(t);\n    },\n    /**\n     * Re-emit the input event to the parent\n     *\n     * @param {Event} event the input event\n     */\n    onInput(e) {\n      this.updateValue(e.target.innerHTML);\n    },\n    /**\n     * When pasting, sanitize the content, extract text\n     * and render it again\n     *\n     * @param {Event} event the paste event\n     * @fires Event paste the original paste event\n     */\n    onPaste(e) {\n      if (!this.canEdit)\n        return;\n      e.preventDefault();\n      const t = e.clipboardData;\n      if (this.$emit(\"paste\", e), t.files.length !== 0 || !Object.values(t.items).find((a) => a == null ? void 0 : a.type.startsWith(\"text\")))\n        return;\n      const n = t.getData(\"text\"), i = window.getSelection();\n      if (!i.rangeCount) {\n        this.updateValue(n);\n        return;\n      }\n      const s = i.getRangeAt(0);\n      i.deleteFromDocument(), s.insertNode(document.createTextNode(n));\n      const r = document.createRange();\n      r.setStart(e.target, s.endOffset), r.collapse(!0), i.removeAllRanges(), i.addRange(r), this.updateValue(this.$refs.contenteditable.innerHTML);\n    },\n    /**\n     * Update the value text from the provided html\n     *\n     * @param {string} htmlOrText the html content (or raw text with @mentions)\n     */\n    updateValue(e) {\n      const t = this.parseContent(e);\n      this.localValue = t, this.$emit(\"update:value\", t);\n    },\n    /**\n     * Update content and local value\n     *\n     * @param {string} value the message value\n     */\n    updateContent(e) {\n      const t = this.renderContent(e);\n      this.$refs.contenteditable.innerHTML = t, this.localValue = e;\n    },\n    /**\n     * Because FF have a decade old bug preventing contenteditable=false\n     * to properly be deleted on backspace, we have to hack 👀\n     * https://stackoverflow.com/a/59383394/3885878\n     * https://stackoverflow.com/a/30574622\n     *\n     * @param {Event} event the delete keydown event\n     */\n    onDelete(e) {\n      if (!this.isFF || !window.getSelection || !this.canEdit)\n        return;\n      const t = window.getSelection(), n = e.target;\n      if (!t.isCollapsed || !t.rangeCount)\n        return;\n      const i = t.getRangeAt(t.rangeCount - 1);\n      if (i.commonAncestorContainer.nodeType === 3 && i.startOffset > 0)\n        return;\n      const s = document.createRange();\n      if (t.anchorNode !== n)\n        s.selectNodeContents(n), s.setEndBefore(t.anchorNode);\n      else if (t.anchorOffset > 0)\n        s.setEnd(n, t.anchorOffset);\n      else\n        return;\n      s.setStart(n, s.endOffset - 1);\n      const r = s.cloneContents().lastChild;\n      r && r.contentEditable === \"false\" && (s.deleteContents(), e.preventDefault());\n    },\n    /**\n     * Enter key pressed. Submits if not multiline\n     *\n     * @param {Event} event the keydown event\n     */\n    onEnter(e) {\n      this.multiline || this.isOverMaxlength || this.autocompleteTribute.isActive || this.emojiTribute.isActive || this.linkTribute.isActive || this.isComposing || (e.preventDefault(), e.stopPropagation(), this.$emit(\"submit\", e));\n    },\n    /**\n     * Ctrl + Enter key pressed is used to submit\n     *\n     * @param {Event} event the keydown event\n     */\n    onCtrlEnter(e) {\n      this.isOverMaxlength || this.$emit(\"submit\", e);\n    },\n    /**\n     * Debounce the autocomplete function\n     */\n    debouncedAutoComplete: _(async function(e, t) {\n      this.autoComplete(e, t);\n    }, 100),\n    onKeyUp(e) {\n      e.stopImmediatePropagation();\n    }\n  }\n};\nvar S = function() {\n  var t = this, n = t._self._c;\n  return n(\"div\", t._g({ directives: [{ name: \"tooltip\", rawName: \"v-tooltip\", value: t.tooltipString, expression: \"tooltipString\" }], ref: \"contenteditable\", staticClass: \"rich-contenteditable__input\", class: {\n    \"rich-contenteditable__input--empty\": t.isEmptyValue,\n    \"rich-contenteditable__input--multiline\": t.multiline,\n    \"rich-contenteditable__input--overflow\": t.isOverMaxlength,\n    \"rich-contenteditable__input--disabled\": t.disabled\n  }, attrs: { contenteditable: t.canEdit, placeholder: t.placeholder, \"aria-placeholder\": t.placeholder, \"aria-multiline\": \"true\", role: \"textbox\" }, on: { input: t.onInput, compositionstart: function(i) {\n    t.isComposing = !0;\n  }, compositionend: function(i) {\n    t.isComposing = !1;\n  }, keydown: [function(i) {\n    return !i.type.indexOf(\"key\") && t._k(i.keyCode, \"delete\", [8, 46], i.key, [\"Backspace\", \"Delete\", \"Del\"]) ? null : t.onDelete.apply(null, arguments);\n  }, function(i) {\n    return !i.type.indexOf(\"key\") && t._k(i.keyCode, \"enter\", 13, i.key, \"Enter\") || i.ctrlKey || i.shiftKey || i.altKey || i.metaKey ? null : t.onEnter.apply(null, arguments);\n  }, function(i) {\n    return !i.type.indexOf(\"key\") && t._k(i.keyCode, \"enter\", 13, i.key, \"Enter\") || !i.ctrlKey || i.shiftKey || i.altKey || i.metaKey ? null : (i.stopPropagation(), i.preventDefault(), t.onCtrlEnter.apply(null, arguments));\n  }], paste: t.onPaste, \"!keyup\": function(i) {\n    return i.stopPropagation(), i.preventDefault(), t.onKeyUp.apply(null, arguments);\n  } } }, t.listeners));\n}, A = [], E = /* @__PURE__ */ u(\n  T,\n  S,\n  A,\n  !1,\n  null,\n  \"599f92d5\",\n  null,\n  null\n);\nconst it = E.exports;\nexport {\n  x as NcAutoCompleteResult,\n  rt as NcMentionBubble,\n  it as default\n};\n","import stripAnsi from 'strip-ansi';\nimport charRegex from 'char-regex';\n\nexport default function stringLength(string, {countAnsiEscapeCodes = false} = {}) {\n\tif (string === '') {\n\t\treturn 0;\n\t}\n\n\tif (!countAnsiEscapeCodes) {\n\t\tstring = stripAnsi(string);\n\t}\n\n\tif (string === '') {\n\t\treturn 0;\n\t}\n\n\treturn string.match(charRegex()).length;\n}\n","import { N as b } from \"./referencePickerModal-6bc8f6b9.mjs\";\nimport h from \"@nextcloud/axios\";\nimport { generateOcsUrl as d } from \"@nextcloud/router\";\nimport { n as g } from \"./_plugin-vue2_normalizer-71e2aa87.mjs\";\nimport { visit as _, SKIP as v } from \"unist-util-visit\";\nimport { u as l } from \"unist-builder\";\nimport { unified as y } from \"unified\";\nimport w from \"remark-parse\";\nimport R from \"remark-breaks\";\nimport N from \"remark-rehype\";\nimport A from \"rehype-react\";\nimport L from \"rehype-external-links\";\nconst m = /(\\s|^)(https?:\\/\\/)((?:[-A-Z0-9+_]+\\.)+[-A-Z]+(?:\\/[-A-Z0-9+&@#%?=~_|!:,.;()]*)*)(\\s|$)/ig, x = /(\\s|\\(|^)((https?:\\/\\/)((?:[-A-Z0-9+_]+\\.)+[-A-Z0-9]+(?::[0-9]+)?(?:\\/[-A-Z0-9+&@#%?=~_|!:,.;()]*)*))(?=\\s|\\)|$)/ig, $ = {\n  name: \"NcReferenceList\",\n  components: {\n    NcReferenceWidget: b\n  },\n  props: {\n    text: {\n      type: String,\n      default: \"\"\n    },\n    referenceData: {\n      type: Object,\n      default: null\n    },\n    limit: {\n      type: Number,\n      default: 1\n    }\n  },\n  data() {\n    return {\n      references: null,\n      loading: !0\n    };\n  },\n  computed: {\n    isVisible() {\n      return this.loading || this.displayedReferences;\n    },\n    values() {\n      return this.referenceData ? this.referenceData : this.references ? Object.values(this.references) : [];\n    },\n    firstReference() {\n      var e;\n      return (e = this.values[0]) != null ? e : null;\n    },\n    displayedReferences() {\n      return this.values.slice(0, this.limit);\n    }\n  },\n  watch: {\n    text: \"fetch\"\n  },\n  mounted() {\n    this.fetch();\n  },\n  methods: {\n    fetch() {\n      if (this.loading = !0, this.referenceData) {\n        this.loading = !1;\n        return;\n      }\n      if (!new RegExp(m).exec(this.text)) {\n        this.loading = !1;\n        return;\n      }\n      this.resolve().then((e) => {\n        this.references = e.data.ocs.data.references, this.loading = !1;\n      }).catch((e) => {\n        console.error(\"Failed to extract references\", e), this.loading = !1;\n      });\n    },\n    resolve() {\n      const e = new RegExp(m).exec(this.text.trim());\n      return this.limit === 1 && e ? h.get(d(\"references/resolve\", 2) + `?reference=${encodeURIComponent(e[0])}`) : h.post(d(\"references/extract\", 2), {\n        text: this.text,\n        resolve: !0,\n        limit: this.limit\n      });\n    }\n  }\n};\nvar j = function() {\n  var s = this, t = s._self._c;\n  return s.isVisible ? t(\"div\", { staticClass: \"widgets--list\", class: { \"icon-loading\": s.loading } }, s._l(s.displayedReferences, function(r) {\n    var i;\n    return t(\"div\", { key: (i = r == null ? void 0 : r.openGraphObject) == null ? void 0 : i.id }, [t(\"NcReferenceWidget\", { attrs: { reference: r } })], 1);\n  }), 0) : s._e();\n}, T = [], O = /* @__PURE__ */ g(\n  $,\n  j,\n  T,\n  !1,\n  null,\n  \"bd1fbb02\",\n  null,\n  null\n);\nconst f = O.exports, C = {\n  name: \"NcLink\",\n  props: {\n    href: {\n      type: String,\n      required: !0\n    }\n  },\n  render(e) {\n    return e(\"a\", {\n      attrs: {\n        href: this.href,\n        rel: \"noopener noreferrer\",\n        target: \"_blank\",\n        class: \"rich-text--external-link\"\n      }\n    }, [this.href.trim()]);\n  }\n}, M = function({ autolink: e, useMarkdown: s }) {\n  return function(t) {\n    !s || !e || _(t, (r) => r.type === \"text\", (r, i, n) => {\n      let c = k(r.value);\n      return c = c.map((a) => typeof a == \"string\" ? l(\"text\", a) : l(\"link\", {\n        url: a.props.href\n      }, [l(\"text\", a.props.href)])).filter((a) => a), n.children.splice(i, 1, ...c.flat()), [v, i + c.flat().length];\n    });\n  };\n}, k = (e) => {\n  let s = x.exec(e);\n  const t = [];\n  let r = 0;\n  for (; s !== null; ) {\n    let n = s[2], c, a = e.substring(r, s.index + s[1].length);\n    n[0] === \" \" && (a += n[0], n = n.substring(1).trim());\n    const o = n[n.length - 1];\n    (o === \".\" || o === \",\" || o === \";\" || s[0][0] === \"(\" && o === \")\") && (n = n.substring(0, n.length - 1), c = o), t.push(a), t.push({ component: C, props: { href: n } }), c && t.push(c), r = s.index + s[0].length, s = x.exec(e);\n  }\n  t.push(e.substring(r));\n  const i = t.map((n) => typeof n == \"string\" ? n : n.props.href).join(\"\");\n  return e === i ? t : (console.error(\"Failed to reassemble the chunked text: \" + e), e);\n}, D = function() {\n  return function(e) {\n    _(e, (t) => t.type === \"text\", s);\n    function s(t, r, i) {\n      const n = t.value.split(/(\\{[a-z\\-_.0-9]+\\})/ig).map((c, a, o) => {\n        const p = c.match(/^\\{([a-z\\-_.0-9]+)\\}$/i);\n        if (!p)\n          return l(\"text\", c);\n        const [, u] = p;\n        return l(\"element\", {\n          tagName: `#${u}`\n        });\n      });\n      i.children.splice(r, 1, ...n);\n    }\n  };\n}, E = ({ h: e, context: s }, t) => (s.autolink && (t = k(t)), Array.isArray(t) ? t.map((r) => {\n  if (typeof r == \"string\")\n    return r;\n  const { component: i, props: n } = r, c = i.name === \"NcLink\" ? void 0 : \"rich-text--component\";\n  return e(i, {\n    props: n,\n    class: c\n  });\n}) : t), P = {\n  name: \"NcRichText\",\n  components: {\n    NcReferenceList: f\n  },\n  props: {\n    text: {\n      type: String,\n      default: \"\"\n    },\n    arguments: {\n      type: Object,\n      default: () => ({})\n    },\n    referenceLimit: {\n      type: Number,\n      default: 0\n    },\n    /** Provide data upfront to avoid extra http request */\n    references: {\n      type: Object,\n      default: null\n    },\n    markdownCssClasses: {\n      type: Object,\n      default: () => ({\n        a: \"rich-text--external-link\",\n        ol: \"rich-text--ordered-list\",\n        ul: \"rich-text--un-ordered-list\",\n        li: \"rich-text--list-item\",\n        strong: \"rich-text--strong\",\n        em: \"rich-text--italic\",\n        h1: \"rich-text--heading rich-text--heading-1\",\n        h2: \"rich-text--heading rich-text--heading-2\",\n        h3: \"rich-text--heading rich-text--heading-3\",\n        h4: \"rich-text--heading rich-text--heading-4\",\n        h5: \"rich-text--heading rich-text--heading-5\",\n        h6: \"rich-text--heading rich-text--heading-6\",\n        hr: \"rich-text--hr\",\n        table: \"rich-text--table\",\n        pre: \"rich-text--pre\",\n        code: \"rich-text--code\",\n        blockquote: \"rich-text--blockquote\"\n      })\n    },\n    useMarkdown: {\n      type: Boolean,\n      default: !1\n    },\n    autolink: {\n      type: Boolean,\n      default: !0\n    }\n  },\n  methods: {\n    renderPlaintext(e) {\n      const s = this, t = this.text.split(/(\\{[a-z\\-_.0-9]+\\})/ig).map(function(r, i, n) {\n        const c = r.match(/^\\{([a-z\\-_.0-9]+)\\}$/i);\n        if (!c)\n          return E({ h: e, context: s }, r);\n        const a = c[1], o = s.arguments[a];\n        if (typeof o == \"object\") {\n          const { component: p, props: u } = o;\n          return e(p, {\n            props: u,\n            class: \"rich-text--component\"\n          });\n        }\n        return o ? e(\"span\", { class: \"rich-text--fallback\" }, o) : r;\n      });\n      return e(\"div\", { class: \"rich-text--wrapper\" }, [\n        e(\"div\", {}, t.flat()),\n        this.referenceLimit > 0 ? e(\"div\", { class: \"rich-text--reference-widget\" }, [\n          e(f, { props: { text: this.text, referenceData: this.references } })\n        ]) : null\n      ]);\n    },\n    renderMarkdown(e) {\n      const s = y().use(w).use(M, {\n        autolink: this.autolink,\n        useMarkdown: this.useMarkdown\n      }).use(R).use(N, {\n        handlers: {\n          component(t, r) {\n            return t(r, r.component, { value: r.value });\n          }\n        }\n      }).use(D).use(L, {\n        target: \"_blank\",\n        rel: [\"noopener noreferrer\"]\n      }).use(A, {\n        createElement: (t, r, i) => {\n          if (i = i == null ? void 0 : i.map(\n            (c) => typeof c == \"string\" ? c.replace(/&lt;/gmi, \"<\") : c\n          ), !t.startsWith(\"#\"))\n            return e(t, r, i);\n          const n = this.arguments[t.slice(1)];\n          return n ? n.component ? e(\n            n.component,\n            {\n              attrs: r,\n              props: n.props,\n              class: \"rich-text--component\"\n            },\n            i\n          ) : e(\"span\", r, [n]) : e(\"span\", { attrs: r, class: \"rich-text--fallback\" }, [`{${t.slice(1)}}`]);\n        },\n        prefix: !1\n      }).processSync(\n        this.text.replace(/</gmi, \"&lt;\").replace(/&gt;/gmi, \">\")\n      ).result;\n      return e(\"div\", { class: \"rich-text--wrapper rich-text--wrapper-markdown\" }, [\n        s,\n        this.referenceLimit > 0 ? e(\"div\", { class: \"rich-text--reference-widget\" }, [\n          e(f, { props: { text: this.text, referenceData: this.references } })\n        ]) : null\n      ]);\n    }\n  },\n  render(e) {\n    return this.useMarkdown ? this.renderMarkdown(e) : this.renderPlaintext(e);\n  }\n}, U = null, Z = null;\nvar z = /* @__PURE__ */ g(\n  P,\n  U,\n  Z,\n  !1,\n  null,\n  \"5f33f45b\",\n  null,\n  null\n);\nconst X = z.exports;\nexport {\n  X as N,\n  f as a\n};\n","import { defineComponent as a } from \"vue\";\nimport { n } from \"../chunks/_plugin-vue2_normalizer-71e2aa87.mjs\";\nconst i = a({\n  name: \"NcSavingIndicatorIcon\",\n  props: {\n    /**\n     * Specify the size of the saving icon.\n     */\n    size: {\n      type: Number,\n      default: 20\n    },\n    /**\n     * Specify what is saved.\n     */\n    name: {\n      type: String,\n      default: \"\"\n    },\n    /**\n     * Set to true when saving is in progress.\n     */\n    saving: {\n      type: Boolean,\n      default: !1,\n      required: !1\n    },\n    /**\n     * Set to true if an error occured while saving.\n     */\n    error: {\n      type: Boolean,\n      default: !1,\n      required: !1\n    }\n  },\n  emits: [\"click\"],\n  computed: {\n    indicatorColor() {\n      return this.error ? \"var(--color-error)\" : this.saving ? \"var(--color-primary-element)\" : \"none\";\n    }\n  }\n});\nvar o = function() {\n  var e = this, r = e._self._c;\n  return e._self._setupProxy, r(\"span\", { staticClass: \"material-design-icon\", attrs: { \"aria-label\": e.name, role: \"img\" }, on: { click: function(t) {\n    return e.$emit(\"click\", t);\n  } } }, [r(\"svg\", { staticClass: \"material-design-icon__svg\", attrs: { fill: e.fillColor, width: e.size, height: e.size, viewBox: \"0 0 24 24\" } }, [r(\"path\", { attrs: { fill: e.indicatorColor, d: \"m19 15a4 4 0 0 0-4 4 4 4 0 0 0 4 4 4 4 0 0 0 4-4 4 4 0 0 0-4-4z\" } }), r(\"path\", { attrs: { fill: \"currentColor\", d: \"M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z\" } }, [e.name ? r(\"title\", [e._v(e._s(e.name))]) : e._e()])])]);\n}, l = [], s = /* @__PURE__ */ n(\n  i,\n  o,\n  l,\n  !1,\n  null,\n  null,\n  null,\n  null\n);\nconst d = s.exports;\nexport {\n  d as default\n};\n","\n      import API from \"!../../../../style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n      import domAPI from \"!../../../../style-loader/dist/runtime/styleDomAPI.js\";\n      import insertFn from \"!../../../../style-loader/dist/runtime/insertBySelector.js\";\n      import setAttributes from \"!../../../../style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n      import insertStyleElement from \"!../../../../style-loader/dist/runtime/insertStyleElement.js\";\n      import styleTagTransformFn from \"!../../../../style-loader/dist/runtime/styleTagTransform.js\";\n      import content, * as namedExport from \"!!../../../../css-loader/dist/cjs.js!./index-6c47e88a.css\";\n      \n      \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n      options.insert = insertFn.bind(null, \"head\");\n    \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../css-loader/dist/cjs.js!./index-6c47e88a.css\";\n       export default content && content.locals ? content.locals : undefined;\n","import \"../assets/index-6c47e88a.css\";\nimport { t as a } from \"../chunks/l10n-f692947e.mjs\";\nimport { G as s } from \"../chunks/GenRandomId-cb9ccebe.mjs\";\nimport { n as u } from \"../chunks/_plugin-vue2_normalizer-71e2aa87.mjs\";\nconst r = {\n  name: \"NcSettingsInputText\",\n  props: {\n    /**\n     * label of the select group element\n     */\n    label: {\n      type: String,\n      required: !0\n    },\n    /**\n     * hint of the select group input\n     */\n    hint: {\n      type: String,\n      default: \"\"\n    },\n    /**\n     * value of the select group input\n     */\n    value: {\n      type: String,\n      default: \"\"\n    },\n    /**\n     * disabled state of the settings select group input\n     */\n    disabled: {\n      type: Boolean,\n      default: !1\n    },\n    /**\n     * id attribute of the select group element\n     */\n    id: {\n      type: String,\n      default: () => \"settings-input-text-\" + s(),\n      validator: (e) => e.trim() !== \"\"\n    }\n  },\n  emits: [\n    \"update:value\",\n    \"input\",\n    \"submit\",\n    \"change\"\n  ],\n  data() {\n    return {\n      submitTranslated: a(\"Submit\")\n    };\n  },\n  computed: {\n    /**\n     * @return {string}\n     */\n    idSubmit() {\n      return this.id + \"-submit\";\n    }\n  },\n  methods: {\n    onInput(e) {\n      this.$emit(\"input\", e), this.$emit(\"update:value\", e.target.value);\n    },\n    onSubmit(e) {\n      this.disabled || this.$emit(\"submit\", e);\n    },\n    onChange(e) {\n      this.$emit(\"change\", e);\n    }\n  }\n};\nvar l = function() {\n  var t = this, i = t._self._c;\n  return i(\"form\", { ref: \"form\", attrs: { disabled: t.disabled }, on: { submit: function(n) {\n    return n.preventDefault(), n.stopPropagation(), t.onSubmit.apply(null, arguments);\n  } } }, [i(\"div\", { staticClass: \"input-wrapper\" }, [i(\"label\", { staticClass: \"action-input__label\", attrs: { for: t.id } }, [t._v(t._s(t.label))]), i(\"input\", { attrs: { id: t.id, type: \"text\", disabled: t.disabled }, domProps: { value: t.value }, on: { input: t.onInput, change: t.onChange } }), i(\"input\", { staticClass: \"action-input__submit\", attrs: { id: t.idSubmit, type: \"submit\" }, domProps: { value: t.submitTranslated } }), t.hint ? i(\"p\", { staticClass: \"hint\" }, [t._v(\" \" + t._s(t.hint) + \" \")]) : t._e()])]);\n}, o = [], p = /* @__PURE__ */ u(\n  r,\n  l,\n  o,\n  !1,\n  null,\n  \"5b140fb6\",\n  null,\n  null\n);\nconst c = p.exports;\nexport {\n  c as default\n};\n","\n      import API from \"!../../../../style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n      import domAPI from \"!../../../../style-loader/dist/runtime/styleDomAPI.js\";\n      import insertFn from \"!../../../../style-loader/dist/runtime/insertBySelector.js\";\n      import setAttributes from \"!../../../../style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n      import insertStyleElement from \"!../../../../style-loader/dist/runtime/insertStyleElement.js\";\n      import styleTagTransformFn from \"!../../../../style-loader/dist/runtime/styleTagTransform.js\";\n      import content, * as namedExport from \"!!../../../../css-loader/dist/cjs.js!./NcSettingsSelectGroup-0d38d76b.css\";\n      \n      \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n      options.insert = insertFn.bind(null, \"head\");\n    \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../css-loader/dist/cjs.js!./NcSettingsSelectGroup-0d38d76b.css\";\n       export default content && content.locals ? content.locals : undefined;\n","import \"../assets/NcSettingsSelectGroup-0d38d76b.css\";\nimport a from \"../Components/NcSelect.mjs\";\nimport { t as i } from \"./l10n-f692947e.mjs\";\nimport { l } from \"./l10n-9fc9974f.mjs\";\nimport { G as o } from \"./GenRandomId-cb9ccebe.mjs\";\nimport n from \"@nextcloud/axios\";\nimport { generateOcsUrl as u } from \"@nextcloud/router\";\nimport { debounce as p } from \"debounce\";\nimport { n as c } from \"./_plugin-vue2_normalizer-71e2aa87.mjs\";\nconst d = {\n  name: \"NcSettingsSelectGroup\",\n  components: {\n    NcSelect: a\n  },\n  mixins: [l],\n  props: {\n    /**\n     * The text of the label element of the select group input\n     */\n    label: {\n      type: String,\n      required: !0\n    },\n    /**\n     * Placeholder for the input element\n     * For backwards compatibility it falls back to the `label` value\n     */\n    placeholder: {\n      type: String,\n      default: \"\"\n    },\n    /**\n     * id attribute of the select group element\n     */\n    id: {\n      type: String,\n      default: () => \"action-\" + o(),\n      validator: (r) => r.trim() !== \"\"\n    },\n    /**\n     * value of the select group input\n     * A list of group IDs can be provided\n     */\n    value: {\n      type: Array,\n      default: () => []\n    },\n    /**\n     * disabled state of the settings select group input\n     */\n    disabled: {\n      type: Boolean,\n      default: !1\n    }\n  },\n  emits: [\n    \"input\",\n    \"error\"\n  ],\n  data() {\n    return {\n      /** Temporary store to cache groups */\n      groups: {},\n      randId: o(),\n      errorMessage: \"\"\n    };\n  },\n  computed: {\n    /**\n     * If the error message should be shown\n     */\n    hasError() {\n      return this.errorMessage !== \"\";\n    },\n    /**\n     * Validate input value and only return valid strings (group IDs)\n     *\n     * @return {string[]}\n     */\n    filteredValue() {\n      return this.value.filter((r) => r !== \"\" && typeof r == \"string\");\n    },\n    /**\n     * value property converted to an array of group objects used as input for the NcSelect\n     */\n    inputValue() {\n      return this.filteredValue.map(\n        (r) => typeof this.groups[r] > \"u\" ? {\n          id: r,\n          displayname: r\n        } : this.groups[r]\n      );\n    },\n    /**\n     * Convert groups object to array of groups required for NcSelect.options\n     * Filter out currently selected values\n     *\n     * @return {object[]}\n     */\n    groupsArray() {\n      return Object.values(this.groups).filter((r) => !this.value.includes(r.id));\n    }\n  },\n  watch: {\n    /**\n     * If the value is changed, check that all groups are loaded so we show the correct display name\n     */\n    value: {\n      handler() {\n        const r = Object.keys(this.groups);\n        this.filteredValue.filter((t) => !r.includes(t)).forEach((t) => {\n          this.loadGroup(t);\n        });\n      },\n      // Run the watch handler also when the component is initially mounted\n      immediate: !0\n    }\n  },\n  /**\n   * Load groups matching the empty query to reduce API calls\n   */\n  async mounted() {\n    const r = `${appName}:${appVersion}/initialGroups`;\n    let e = window.sessionStorage.getItem(r);\n    e ? (e = Object.fromEntries(JSON.parse(e).map((t) => [t.id, t])), this.groups = { ...this.groups, ...e }) : (await this.loadGroup(\"\"), window.sessionStorage.setItem(r, JSON.stringify(Object.values(this.groups))));\n  },\n  methods: {\n    /**\n     * Called when a new group is selected or previous group is deselected to emit the update event\n     *\n     * @param {object[]} updatedValue Array of selected groups\n     */\n    update(r) {\n      const e = r.map((t) => t.id);\n      this.$emit(\"input\", e);\n    },\n    /**\n     * Use provisioning API to search for given group and save it in the groups object\n     *\n     * @param {string} query The query like parts of the id oder display name\n     * @return {boolean}\n     */\n    async loadGroup(r) {\n      try {\n        r = typeof r == \"string\" ? encodeURI(r) : \"\";\n        const e = await n.get(u(`cloud/groups/details?search=${r}&limit=10`, 2));\n        if (this.errorMessage !== \"\" && window.setTimeout(() => {\n          this.errorMessage = \"\";\n        }, 5e3), Object.keys(e.data.ocs.data.groups).length > 0) {\n          const t = Object.fromEntries(e.data.ocs.data.groups.map((s) => [s.id, s]));\n          return this.groups = { ...this.groups, ...t }, !0;\n        }\n      } catch (e) {\n        this.$emit(\"error\", e), this.errorMessage = i(\"Unable to search the group\");\n      }\n      return !1;\n    },\n    /**\n     * Custom filter function for `NcSelect` to filter by ID *and* display name\n     *\n     * @param {object} option One of the groups\n     * @param {string} label The label property of the group\n     * @param {string} search The current search string\n     */\n    filterGroups(r, e, t) {\n      return `${e || \"\"} ${r.id}`.toLocaleLowerCase().indexOf(t.toLocaleLowerCase()) > -1;\n    },\n    /**\n     * Debounce the group search (reduce API calls)\n     */\n    onSearch: p(function(r) {\n      this.loadGroup(r);\n    }, 200)\n  }\n};\nvar m = function() {\n  var e = this, t = e._self._c;\n  return t(\"div\", [e.label ? t(\"label\", { staticClass: \"hidden-visually\", attrs: { for: e.id } }, [e._v(e._s(e.label))]) : e._e(), t(\"NcSelect\", { attrs: { value: e.inputValue, options: e.groupsArray, placeholder: e.placeholder || e.label, \"filter-by\": e.filterGroups, \"input-id\": e.id, limit: 5, label: \"displayname\", multiple: !0, \"close-on-select\": !1, disabled: e.disabled }, on: { input: e.update, search: e.onSearch } }), t(\"div\", { directives: [{ name: \"show\", rawName: \"v-show\", value: e.hasError, expression: \"hasError\" }], staticClass: \"select-group-error\" }, [e._v(\" \" + e._s(e.errorMessage) + \" \")])], 1);\n}, f = [], h = /* @__PURE__ */ c(\n  d,\n  m,\n  f,\n  !1,\n  null,\n  \"5a35ccce\",\n  null,\n  null\n);\nconst O = h.exports;\nexport {\n  O as N\n};\n","\n      import API from \"!../../../../style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n      import domAPI from \"!../../../../style-loader/dist/runtime/styleDomAPI.js\";\n      import insertFn from \"!../../../../style-loader/dist/runtime/insertBySelector.js\";\n      import setAttributes from \"!../../../../style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n      import insertStyleElement from \"!../../../../style-loader/dist/runtime/insertStyleElement.js\";\n      import styleTagTransformFn from \"!../../../../style-loader/dist/runtime/styleTagTransform.js\";\n      import content, * as namedExport from \"!!../../../../css-loader/dist/cjs.js!./index-c221fe05.css\";\n      \n      \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n      options.insert = insertFn.bind(null, \"head\");\n    \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../css-loader/dist/cjs.js!./index-c221fe05.css\";\n       export default content && content.locals ? content.locals : undefined;\n","import \"../assets/index-c221fe05.css\";\nimport { n as s } from \"../chunks/_plugin-vue2_normalizer-71e2aa87.mjs\";\nimport { N as a } from \"../chunks/index-fbf943b3.mjs\";\nimport n from \"./NcPopover.mjs\";\nimport i from \"vue\";\nconst o = {\n  name: \"NcUserBubbleDiv\"\n};\nvar l = function() {\n  var e = this, r = e._self._c;\n  return r(\"div\", [e._t(\"trigger\")], 2);\n}, u = [], p = /* @__PURE__ */ s(\n  o,\n  l,\n  u,\n  !1,\n  null,\n  null,\n  null,\n  null\n);\nconst c = p.exports;\nconst m = {\n  name: \"NcUserBubble\",\n  components: {\n    NcAvatar: a,\n    NcPopover: n,\n    NcUserBubbleDiv: c\n  },\n  props: {\n    /**\n     * Override generated avatar, can be an url or an icon class\n     */\n    avatarImage: {\n      type: String,\n      default: void 0\n    },\n    /**\n     * Provide the user id if this is a user\n     */\n    user: {\n      type: String,\n      default: void 0\n    },\n    /**\n     * Displayed label\n     */\n    displayName: {\n      type: String,\n      default: void 0\n    },\n    /**\n     * Whether or not to display the user-status\n     */\n    showUserStatus: {\n      type: Boolean,\n      default: !1\n    },\n    /**\n     * Define the whole bubble as a link\n     */\n    url: {\n      type: String,\n      default: void 0,\n      validator: (t) => {\n        var e;\n        try {\n          return t = new URL(t, (e = t == null ? void 0 : t.startsWith) != null && e.call(t, \"/\") ? window.location.href : void 0), !0;\n        } catch {\n          return !1;\n        }\n      }\n    },\n    /**\n     * Default popover state. Requires the UserBubble\n     * to have some content to render inside the popover\n     */\n    open: {\n      type: Boolean,\n      default: !1\n    },\n    /**\n     * Use the primary colour\n     */\n    primary: {\n      type: Boolean,\n      default: !1\n    },\n    /**\n     * This is the height of the component\n     */\n    size: {\n      type: Number,\n      default: 20\n    },\n    /**\n     * This is the margin of the avatar (size - margin = avatar size)\n     */\n    margin: {\n      type: Number,\n      default: 2\n    }\n  },\n  emits: [\n    \"click\",\n    \"update:open\"\n  ],\n  computed: {\n    /**\n     * If userbubble is empty, let's NOT\n     * use the Popover component\n     * We need a component instead of a simple div here,\n     * because otherwise the trigger template will not be shown.\n     *\n     * @return {string} 'Popover' or 'UserBubbleDiv'\n     */\n    isPopoverComponent() {\n      return this.popoverEmpty ? \"NcUserBubbleDiv\" : \"NcPopover\";\n    },\n    /**\n     * Is the provided avatar url valid or not\n     *\n     * @return {boolean}\n     */\n    isAvatarUrl() {\n      if (!this.avatarImage)\n        return !1;\n      try {\n        return !!new URL(this.avatarImage);\n      } catch {\n        return !1;\n      }\n    },\n    /**\n     * Do we have a custom avatar or not\n     *\n     * @return {boolean}\n     */\n    isCustomAvatar() {\n      return !!this.avatarImage;\n    },\n    hasUrl() {\n      return this.url && this.url.trim() !== \"\";\n    },\n    isLinkComponent() {\n      return this.hasUrl ? \"a\" : \"div\";\n    },\n    popoverEmpty() {\n      return !(\"default\" in this.$slots);\n    },\n    styles() {\n      return {\n        content: {\n          height: this.size + \"px\",\n          lineHeight: this.size + \"px\",\n          borderRadius: this.size / 2 + \"px\"\n        },\n        avatar: {\n          marginLeft: this.margin + \"px\"\n        }\n      };\n    }\n  },\n  mounted() {\n    !this.displayName && !this.user && i.util.warn(\"[NcUserBubble] At least `displayName` or `user` property should be set.\");\n  },\n  methods: {\n    onOpenChange(t) {\n      this.$emit(\"update:open\", t);\n    },\n    /**\n     * Catch and forward click event to parent\n     *\n     * @param {Event} event the click event\n     */\n    onClick(t) {\n      this.$emit(\"click\", t);\n    }\n  }\n};\nvar d = function() {\n  var e = this, r = e._self._c;\n  return r(e.isPopoverComponent, { tag: \"component\", staticClass: \"user-bubble__wrapper\", attrs: { trigger: \"hover focus\", shown: e.open }, on: { \"update:open\": e.onOpenChange }, scopedSlots: e._u([{ key: \"trigger\", fn: function() {\n    return [r(e.isLinkComponent, { tag: \"component\", staticClass: \"user-bubble__content\", class: { \"user-bubble__content--primary\": e.primary }, style: e.styles.content, attrs: { href: e.hasUrl ? e.url : null }, on: { click: e.onClick } }, [r(\"NcAvatar\", { staticClass: \"user-bubble__avatar\", style: e.styles.avatar, attrs: { url: e.isCustomAvatar && e.isAvatarUrl ? e.avatarImage : void 0, \"icon-class\": e.isCustomAvatar && !e.isAvatarUrl ? e.avatarImage : void 0, user: e.user, \"display-name\": e.displayName, size: e.size - e.margin * 2, \"disable-tooltip\": !0, \"disable-menu\": !0, \"show-user-status\": e.showUserStatus } }), r(\"span\", { staticClass: \"user-bubble__name\" }, [e._v(\" \" + e._s(e.displayName || e.user) + \" \")]), e.$slots.name ? r(\"span\", { staticClass: \"user-bubble__secondary\" }, [e._t(\"name\")], 2) : e._e()], 1)];\n  }, proxy: !0 }], null, !0) }, [e._t(\"default\")], 2);\n}, _ = [], f = /* @__PURE__ */ s(\n  m,\n  d,\n  _,\n  !1,\n  null,\n  \"55ab76f1\",\n  null,\n  null\n);\nconst N = f.exports;\nexport {\n  N as default\n};\n","import i from \"./Components/NcActionButton.mjs\";\nimport m from \"./Components/NcActionButtonGroup.mjs\";\nimport e from \"./Components/NcActionCaption.mjs\";\nimport p from \"./Components/NcActionCheckbox.mjs\";\nimport c from \"./Components/NcActionInput.mjs\";\nimport f from \"./Components/NcActionLink.mjs\";\nimport n from \"./Components/NcActionRadio.mjs\";\nimport N from \"./Components/NcActionRouter.mjs\";\nimport a from \"./Components/NcActions.mjs\";\nimport s from \"./Components/NcActionSeparator.mjs\";\nimport l from \"./Components/NcActionText.mjs\";\nimport u from \"./Components/NcActionTextEditable.mjs\";\nimport d from \"./Components/NcAppContent.mjs\";\nimport A from \"./Components/NcAppContentDetails.mjs\";\nimport g from \"./Components/NcAppContentList.mjs\";\nimport b from \"./Components/NcAppNavigation.mjs\";\nimport S from \"./Components/NcAppNavigationCaption.mjs\";\nimport v from \"./Components/NcAppNavigationIconBullet.mjs\";\nimport T from \"./Components/NcAppNavigationItem.mjs\";\nimport x from \"./Components/NcAppNavigationNew.mjs\";\nimport C from \"./Components/NcAppNavigationNewItem.mjs\";\nimport k from \"./Components/NcAppNavigationSettings.mjs\";\nimport h from \"./Components/NcAppNavigationSpacer.mjs\";\nimport I from \"./Components/NcAppSettingsDialog.mjs\";\nimport y from \"./Components/NcAppSettingsSection.mjs\";\nimport P from \"./Components/NcAppSidebar.mjs\";\nimport B from \"./Components/NcAppSidebarTab.mjs\";\nimport { N as D } from \"./chunks/index-fbf943b3.mjs\";\nimport { u as tt } from \"./chunks/index-fbf943b3.mjs\";\nimport j from \"./Components/NcBreadcrumb.mjs\";\nimport R from \"./Components/NcBreadcrumbs.mjs\";\nimport O from \"./Components/NcButton.mjs\";\nimport _ from \"./Components/NcCheckboxRadioSwitch.mjs\";\nimport E from \"./Components/NcColorPicker.mjs\";\nimport L from \"./Components/NcContent.mjs\";\nimport M from \"./Components/NcCounterBubble.mjs\";\nimport w from \"./Components/NcDashboardWidget.mjs\";\nimport F from \"./Components/NcDashboardWidgetItem.mjs\";\nimport z from \"./Components/NcDateTime.mjs\";\nimport G from \"./Components/NcDateTimePicker.mjs\";\nimport W from \"./Components/NcDateTimePickerNative.mjs\";\nimport H from \"./Components/NcDialog.mjs\";\nimport V from \"./Components/NcDialogButton.mjs\";\nimport U from \"./Components/NcEmojiPicker.mjs\";\nimport $ from \"./Components/NcEmptyContent.mjs\";\nimport q from \"./Components/NcGuestContent.mjs\";\nimport J from \"./Components/NcHeaderMenu.mjs\";\nimport { N as K } from \"./chunks/index-20a9ace9.mjs\";\nimport Q from \"./Components/NcIconSvgWrapper.mjs\";\nimport X from \"./Components/NcListItem.mjs\";\nimport Y from \"./Components/NcListItemIcon.mjs\";\nimport Z from \"./Components/NcLoadingIcon.mjs\";\nimport oo from \"./Components/NcModal.mjs\";\nimport ro from \"./Components/NcNoteCard.mjs\";\nimport to from \"./Components/NcPasswordField.mjs\";\nimport io from \"./Components/NcPopover.mjs\";\nimport mo from \"./Components/NcProgressBar.mjs\";\nimport eo from \"./Components/NcRelatedResourcesPanel.mjs\";\nimport { N as po } from \"./chunks/index-5f2a5f57.mjs\";\nimport { r as mt } from \"./chunks/index-5f2a5f57.mjs\";\nimport co, { NcAutoCompleteResult as fo } from \"./Components/NcRichContenteditable.mjs\";\nimport { N as no } from \"./chunks/NcRichText-1e8fd02d.mjs\";\nimport \"./chunks/referencePickerModal-6bc8f6b9.mjs\";\nimport \"@nextcloud/axios\";\nimport \"@nextcloud/router\";\nimport No from \"./Components/NcSelect.mjs\";\nimport \"./chunks/l10n-f692947e.mjs\";\nimport ao from \"./Components/NcTextField.mjs\";\nimport \"@nextcloud/event-bus\";\nimport \"vue\";\nimport so from \"./Components/NcSavingIndicatorIcon.mjs\";\nimport lo from \"./Components/NcSelectTags.mjs\";\nimport uo from \"./Components/NcSettingsInputText.mjs\";\nimport Ao from \"./Components/NcSettingsSection.mjs\";\nimport { N as go } from \"./chunks/NcSettingsSelectGroup-ae323579.mjs\";\nimport bo from \"./Components/NcTimezonePicker.mjs\";\nimport So from \"./Components/NcUserBubble.mjs\";\nimport vo from \"./Components/NcTextArea.mjs\";\nimport { emojiAddRecent as pt, emojiSearch as ct } from \"./Functions/emoji.mjs\";\nimport { default as nt } from \"./Functions/usernameToColor.mjs\";\nimport { directive as To } from \"./Directives/Focus.mjs\";\nimport { directive as xo } from \"./Directives/Linkify.mjs\";\nimport \"./Directives/Tooltip.mjs\";\nimport { default as at } from \"./Mixins/clickOutsideOptions.mjs\";\nimport { default as lt } from \"./Mixins/isFullscreen.mjs\";\nimport { default as dt } from \"./Mixins/isMobile.mjs\";\nimport { VTooltip as Co } from \"floating-vue\";\nimport { VTooltip as gt } from \"floating-vue\";\n/**\n * @copyright Copyright (c) 2018 John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\nconst ko = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({\n  __proto__: null,\n  NcActionButton: i,\n  NcActionButtonGroup: m,\n  NcActionCaption: e,\n  NcActionCheckbox: p,\n  NcActionInput: c,\n  NcActionLink: f,\n  NcActionRadio: n,\n  NcActionRouter: N,\n  NcActionSeparator: s,\n  NcActionText: l,\n  NcActionTextEditable: u,\n  NcActions: a,\n  NcAppContent: d,\n  NcAppContentDetails: A,\n  NcAppContentList: g,\n  NcAppNavigation: b,\n  NcAppNavigationCaption: S,\n  NcAppNavigationIconBullet: v,\n  NcAppNavigationItem: T,\n  NcAppNavigationNew: x,\n  NcAppNavigationNewItem: C,\n  NcAppNavigationSettings: k,\n  NcAppNavigationSpacer: h,\n  NcAppSettingsDialog: I,\n  NcAppSettingsSection: y,\n  NcAppSidebar: P,\n  NcAppSidebarTab: B,\n  NcAutoCompleteResult: fo,\n  NcAvatar: D,\n  NcBreadcrumb: j,\n  NcBreadcrumbs: R,\n  NcButton: O,\n  NcCheckboxRadioSwitch: _,\n  NcColorPicker: E,\n  NcContent: L,\n  NcCounterBubble: M,\n  NcDashboardWidget: w,\n  NcDashboardWidgetItem: F,\n  NcDateTime: z,\n  NcDateTimePicker: G,\n  NcDateTimePickerNative: W,\n  NcDialog: H,\n  NcDialogButton: V,\n  NcEmojiPicker: U,\n  NcEmptyContent: $,\n  NcGuestContent: q,\n  NcHeaderMenu: J,\n  NcHighlight: K,\n  NcIconSvgWrapper: Q,\n  NcListItem: X,\n  NcListItemIcon: Y,\n  NcLoadingIcon: Z,\n  NcMentionBubble: po,\n  NcModal: oo,\n  NcNoteCard: ro,\n  NcPasswordField: to,\n  NcPopover: io,\n  NcProgressBar: mo,\n  NcRelatedResourcesPanel: eo,\n  NcRichContenteditable: co,\n  NcRichText: no,\n  NcSavingIndicatorIcon: so,\n  NcSelect: No,\n  NcSelectTags: lo,\n  NcSettingsInputText: uo,\n  NcSettingsSection: Ao,\n  NcSettingsSelectGroup: go,\n  NcTextArea: vo,\n  NcTextField: ao,\n  NcTimezonePicker: bo,\n  NcUserBubble: So\n}, Symbol.toStringTag, { value: \"Module\" }));\n/**\n * @copyright 2022 Christopher Ng <chrng8@gmail.com>\n *\n * @author Christopher Ng <chrng8@gmail.com>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\nconst Yr = (o) => o.type === \"click\" || o.type === \"keydown\" && o.key === \"Enter\";\n/**\n * @copyright Copyright (c) 2018 John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\nconst ho = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({\n  __proto__: null,\n  Focus: To,\n  Linkify: xo,\n  Tooltip: Co\n}, Symbol.toStringTag, { value: \"Module\" })), Zr = {\n  install(o) {\n    Object.entries(ko).forEach(([t, r]) => {\n      o.component(r.name || t, r);\n    }), Object.entries(ho).forEach(([t, r]) => {\n      o.directive(t, r);\n    });\n  }\n};\nexport {\n  To as Focus,\n  xo as Linkify,\n  i as NcActionButton,\n  m as NcActionButtonGroup,\n  e as NcActionCaption,\n  p as NcActionCheckbox,\n  c as NcActionInput,\n  f as NcActionLink,\n  n as NcActionRadio,\n  N as NcActionRouter,\n  s as NcActionSeparator,\n  l as NcActionText,\n  u as NcActionTextEditable,\n  a as NcActions,\n  d as NcAppContent,\n  A as NcAppContentDetails,\n  g as NcAppContentList,\n  b as NcAppNavigation,\n  S as NcAppNavigationCaption,\n  v as NcAppNavigationIconBullet,\n  T as NcAppNavigationItem,\n  x as NcAppNavigationNew,\n  C as NcAppNavigationNewItem,\n  k as NcAppNavigationSettings,\n  h as NcAppNavigationSpacer,\n  I as NcAppSettingsDialog,\n  y as NcAppSettingsSection,\n  P as NcAppSidebar,\n  B as NcAppSidebarTab,\n  fo as NcAutoCompleteResult,\n  D as NcAvatar,\n  j as NcBreadcrumb,\n  R as NcBreadcrumbs,\n  O as NcButton,\n  _ as NcCheckboxRadioSwitch,\n  E as NcColorPicker,\n  L as NcContent,\n  M as NcCounterBubble,\n  w as NcDashboardWidget,\n  F as NcDashboardWidgetItem,\n  z as NcDateTime,\n  G as NcDateTimePicker,\n  W as NcDateTimePickerNative,\n  H as NcDialog,\n  V as NcDialogButton,\n  U as NcEmojiPicker,\n  $ as NcEmptyContent,\n  q as NcGuestContent,\n  J as NcHeaderMenu,\n  K as NcHighlight,\n  Q as NcIconSvgWrapper,\n  X as NcListItem,\n  Y as NcListItemIcon,\n  Z as NcLoadingIcon,\n  po as NcMentionBubble,\n  oo as NcModal,\n  ro as NcNoteCard,\n  to as NcPasswordField,\n  io as NcPopover,\n  mo as NcProgressBar,\n  eo as NcRelatedResourcesPanel,\n  co as NcRichContenteditable,\n  no as NcRichText,\n  so as NcSavingIndicatorIcon,\n  No as NcSelect,\n  lo as NcSelectTags,\n  uo as NcSettingsInputText,\n  Ao as NcSettingsSection,\n  go as NcSettingsSelectGroup,\n  vo as NcTextArea,\n  ao as NcTextField,\n  bo as NcTimezonePicker,\n  So as NcUserBubble,\n  Zr as NextcloudVuePlugin,\n  gt as Tooltip,\n  at as clickOutsideOptions,\n  pt as emojiAddRecent,\n  ct as emojiSearch,\n  Yr as isA11yActivation,\n  lt as isFullscreen,\n  dt as isMobile,\n  mt as richEditor,\n  tt as userStatus,\n  nt as usernameToColor\n};\n","<!--\n  - @copyright Copyright (c) 2023 Richard Steinmetz <richard@steinmetz.cloud>\n  -\n  - @author Richard Steinmetz <richard@steinmetz.cloud>\n  -\n  - @license AGPL-3.0-or-later\n  -\n  - This program is free software: you can redistribute it and/or modify\n  - it under the terms of the GNU General Public License as published by\n  - the Free Software Foundation, either version 3 of the License, or\n  - (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 General Public License for more details.\n  -\n  - You should have received a copy of the GNU General Public License\n  - along with this program.  If not, see <http://www.gnu.org/licenses/>.\n  -\n  -->\n\n<template>\n\t<NcDashboardWidget :items=\"items\"\n\t\t:show-more-label=\"showMoreLabel\"\n\t\t:show-more-url=\"showMoreUrl\"\n\t\t:loading=\"loading\"\n\t\t:show-items-and-empty-content=\"!!halfEmptyContentMessage\"\n\t\t:half-empty-content-message=\"halfEmptyContentMessage\">\n\t\t<template #default=\"{ item }\">\n\t\t\t<NcDashboardWidgetItem :target-url=\"item.link\"\n\t\t\t\t:overlay-icon-url=\"item.overlayIconUrl ? item.overlayIconUrl : ''\"\n\t\t\t\t:main-text=\"item.title\"\n\t\t\t\t:sub-text=\"item.subtitle\">\n\t\t\t\t<template #avatar>\n\t\t\t\t\t<template v-if=\"item.iconUrl\">\n\t\t\t\t\t\t<NcAvatar :size=\"44\" :url=\"item.iconUrl\" />\n\t\t\t\t\t</template>\n\t\t\t\t</template>\n\t\t\t</NcDashboardWidgetItem>\n\t\t</template>\n\t\t<template #empty-content>\n\t\t\t<NcEmptyContent v-if=\"items.length === 0\"\n\t\t\t\t:description=\"emptyContentMessage\">\n\t\t\t\t<template #icon>\n\t\t\t\t\t<CheckIcon v-if=\"emptyContentMessage\" :size=\"65\" />\n\t\t\t\t</template>\n\t\t\t\t<template #action>\n\t\t\t\t\t<NcButton v-if=\"setupButton\" :href=\"setupButton.link\">\n\t\t\t\t\t\t{{ setupButton.text }}\n\t\t\t\t\t</NcButton>\n\t\t\t\t</template>\n\t\t\t</NcEmptyContent>\n\t\t</template>\n\t</NcDashboardWidget>\n</template>\n\n<script>\nimport {\n\tNcAvatar,\n\tNcDashboardWidget,\n\tNcDashboardWidgetItem,\n\tNcEmptyContent,\n\tNcButton,\n} from '@nextcloud/vue'\nimport CheckIcon from 'vue-material-design-icons/Check.vue'\n\nexport default {\n\tname: 'ApiDashboardWidget',\n\tcomponents: {\n\t\tNcAvatar,\n\t\tNcDashboardWidget,\n\t\tNcDashboardWidgetItem,\n\t\tNcEmptyContent,\n\t\tNcButton,\n\t\tCheckIcon,\n\t},\n\tprops: {\n\t\twidget: {\n\t\t\ttype: [Object, undefined],\n\t\t\tdefault: undefined,\n\t\t},\n\t\tdata: {\n\t\t\ttype: [Object, undefined],\n\t\t\tdefault: undefined,\n\t\t},\n\t\tloading: {\n\t\t\ttype: Boolean,\n\t\t\trequired: true,\n\t\t},\n\t},\n\tcomputed: {\n\t\t/** @return {object[]} */\n\t\titems() {\n\t\t\treturn this.data?.items ?? []\n\t\t},\n\n\t\t/** @return {string} */\n\t\temptyContentMessage() {\n\t\t\treturn this.data?.emptyContentMessage ?? ''\n\t\t},\n\n\t\t/** @return {string} */\n\t\thalfEmptyContentMessage() {\n\t\t\treturn this.data?.halfEmptyContentMessage ?? ''\n\t\t},\n\n\t\t/** @return {object|undefined} */\n\t\tnewButton() {\n\t\t\t// TODO: Render new button in the template\n\t\t\t// I couldn't find a widget that makes use of the button. Furthermore, there is no convenient\n\t\t\t// way to render such a button using the official widget component.\n\t\t\treturn this.widget?.buttons?.find(button => button.type === 'new')\n\t\t},\n\n\t\t/** @return {object|undefined} */\n\t\tmoreButton() {\n\t\t\treturn this.widget?.buttons?.find(button => button.type === 'more')\n\t\t},\n\n\t\t/** @return {object|undefined} */\n\t\tsetupButton() {\n\t\t\treturn this.widget?.buttons?.find(button => button.type === 'setup')\n\t\t},\n\n\t\t/** @return {string|undefined} */\n\t\tshowMoreLabel() {\n\t\t\treturn this.moreButton?.text\n\t\t},\n\n\t\t/** @return {string|undefined} */\n\t\tshowMoreUrl() {\n\t\t\treturn this.moreButton?.link\n\t\t},\n\t},\n}\n</script>\n\n<style lang=\"scss\" scoped>\n</style>\n","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ApiDashboardWidget.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ApiDashboardWidget.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./ApiDashboardWidget.vue?vue&type=template&id=d91c9686&scoped=true\"\nimport script from \"./ApiDashboardWidget.vue?vue&type=script&lang=js\"\nexport * from \"./ApiDashboardWidget.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  \"d91c9686\",\n  null\n  \n)\n\nexport default component.exports","<template>\n\t<div id=\"app-dashboard\">\n\t\t<h2>{{ greeting.text }}</h2>\n\t\t<ul class=\"statuses\">\n\t\t\t<li v-for=\"status in sortedRegisteredStatus\"\n\t\t\t\t:id=\"'status-' + status\"\n\t\t\t\t:key=\"status\">\n\t\t\t\t<div :ref=\"'status-' + status\" />\n\t\t\t</li>\n\t\t</ul>\n\n\t\t<Draggable v-model=\"layout\"\n\t\t\tclass=\"panels\"\n\t\t\tv-bind=\"{swapThreshold: 0.30, delay: 500, delayOnTouchOnly: true, touchStartThreshold: 3}\"\n\t\t\thandle=\".panel--header\"\n\t\t\t@end=\"saveLayout\">\n\t\t\t<template v-for=\"panelId in layout\">\n\t\t\t\t<div v-if=\"isApiWidgetV2(panels[panelId].id)\"\n\t\t\t\t\t:key=\"`${panels[panelId].id}-v2`\"\n\t\t\t\t\tclass=\"panel\">\n\t\t\t\t\t<div class=\"panel--header\">\n\t\t\t\t\t\t<h2>\n\t\t\t\t\t\t\t<span :aria-labelledby=\"`panel-${panels[panelId].id}--header--icon--description`\"\n\t\t\t\t\t\t\t\taria-hidden=\"true\"\n\t\t\t\t\t\t\t\t:class=\"apiWidgets[panels[panelId].id].icon_class\"\n\t\t\t\t\t\t\t\trole=\"img\" />\n\t\t\t\t\t\t\t{{ apiWidgets[panels[panelId].id].title }}\n\t\t\t\t\t\t</h2>\n\t\t\t\t\t\t<span :id=\"`panel-${panels[panelId].id}--header--icon--description`\" class=\"hidden-visually\">\n\t\t\t\t\t\t\t{{ t('dashboard', '\"{title} icon\"', { title: apiWidgets[panels[panelId].id].title }) }}\n\t\t\t\t\t\t</span>\n\t\t\t\t\t</div>\n\t\t\t\t\t<div class=\"panel--content\">\n\t\t\t\t\t\t<ApiDashboardWidget :widget=\"apiWidgets[panels[panelId].id]\"\n\t\t\t\t\t\t\t:data=\"apiWidgetItems[panels[panelId].id]\"\n\t\t\t\t\t\t\t:loading=\"loadingItems\" />\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t\t<div v-else :key=\"panels[panelId].id\" class=\"panel\">\n\t\t\t\t\t<div class=\"panel--header\">\n\t\t\t\t\t\t<h2>\n\t\t\t\t\t\t\t<span :aria-labelledby=\"`panel-${panels[panelId].id}--header--icon--description`\"\n\t\t\t\t\t\t\t\taria-hidden=\"true\"\n\t\t\t\t\t\t\t\t:class=\"panels[panelId].iconClass\"\n\t\t\t\t\t\t\t\trole=\"img\" />\n\t\t\t\t\t\t\t{{ panels[panelId].title }}\n\t\t\t\t\t\t</h2>\n\t\t\t\t\t\t<span :id=\"`panel-${panels[panelId].id}--header--icon--description`\" class=\"hidden-visually\"> {{ t('dashboard', '\"{title} icon\"', { title: panels[panelId].title }) }} </span>\n\t\t\t\t\t</div>\n\t\t\t\t\t<div class=\"panel--content\" :class=\"{ loading: !panels[panelId].mounted }\">\n\t\t\t\t\t\t<div :ref=\"panels[panelId].id\" :data-id=\"panels[panelId].id\" />\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t</template>\n\t\t</Draggable>\n\n\t\t<div class=\"footer\">\n\t\t\t<NcButton @click=\"showModal\">\n\t\t\t\t<template #icon>\n\t\t\t\t\t<Pencil :size=\"20\" />\n\t\t\t\t</template>\n\t\t\t\t{{ t('dashboard', 'Customize') }}\n\t\t\t</NcButton>\n\t\t</div>\n\n\t\t<NcModal v-if=\"modal\" size=\"large\" @close=\"closeModal\">\n\t\t\t<div class=\"modal__content\">\n\t\t\t\t<h3>{{ t('dashboard', 'Edit widgets') }}</h3>\n\t\t\t\t<ol class=\"panels\">\n\t\t\t\t\t<li v-for=\"status in sortedAllStatuses\" :key=\"status\" :class=\"'panel-' + status\">\n\t\t\t\t\t\t<input :id=\"'status-checkbox-' + status\"\n\t\t\t\t\t\t\ttype=\"checkbox\"\n\t\t\t\t\t\t\tclass=\"checkbox\"\n\t\t\t\t\t\t\t:checked=\"isStatusActive(status)\"\n\t\t\t\t\t\t\t@input=\"updateStatusCheckbox(status, $event.target.checked)\">\n\t\t\t\t\t\t<label :for=\"'status-checkbox-' + status\">\n\t\t\t\t\t\t\t<span :class=\"statusInfo[status].icon\" aria-hidden=\"true\" />\n\t\t\t\t\t\t\t{{ statusInfo[status].text }}\n\t\t\t\t\t\t</label>\n\t\t\t\t\t</li>\n\t\t\t\t</ol>\n\t\t\t\t<Draggable v-model=\"layout\"\n\t\t\t\t\tclass=\"panels\"\n\t\t\t\t\ttag=\"ol\"\n\t\t\t\t\tv-bind=\"{swapThreshold: 0.30, delay: 500, delayOnTouchOnly: true, touchStartThreshold: 3}\"\n\t\t\t\t\thandle=\".draggable\"\n\t\t\t\t\t@end=\"saveLayout\">\n\t\t\t\t\t<li v-for=\"panel in sortedPanels\" :key=\"panel.id\" :class=\"'panel-' + panel.id\">\n\t\t\t\t\t\t<input :id=\"'panel-checkbox-' + panel.id\"\n\t\t\t\t\t\t\ttype=\"checkbox\"\n\t\t\t\t\t\t\tclass=\"checkbox\"\n\t\t\t\t\t\t\t:checked=\"isActive(panel)\"\n\t\t\t\t\t\t\t@input=\"updateCheckbox(panel, $event.target.checked)\">\n\t\t\t\t\t\t<label :for=\"'panel-checkbox-' + panel.id\" :class=\"{ draggable: isActive(panel) }\">\n\t\t\t\t\t\t\t<span :class=\"panel.iconClass\" aria-hidden=\"true\" />\n\t\t\t\t\t\t\t{{ panel.title }}\n\t\t\t\t\t\t</label>\n\t\t\t\t\t</li>\n\t\t\t\t</Draggable>\n\n\t\t\t\t<a v-if=\"isAdmin\" :href=\"appStoreUrl\" class=\"button\">{{ t('dashboard', 'Get more widgets from the App Store') }}</a>\n\n\t\t\t\t<div v-if=\"statuses.weather && isStatusActive('weather')\">\n\t\t\t\t\t<h3>{{ t('dashboard', 'Weather service') }}</h3>\n\t\t\t\t\t<p>\n\t\t\t\t\t\t{{ t('dashboard', 'For your privacy, the weather data is requested by your Nextcloud server on your behalf so the weather service receives no personal information.') }}\n\t\t\t\t\t</p>\n\t\t\t\t\t<p class=\"credits--end\">\n\t\t\t\t\t\t<a href=\"https://api.met.no/doc/TermsOfService\" target=\"_blank\" rel=\"noopener\">{{ t('dashboard', 'Weather data from Met.no') }}</a>,\n\t\t\t\t\t\t<a href=\"https://wiki.osmfoundation.org/wiki/Privacy_Policy\" target=\"_blank\" rel=\"noopener\">{{ t('dashboard', 'geocoding with Nominatim') }}</a>,\n\t\t\t\t\t\t<a href=\"https://www.opentopodata.org/#public-api\" target=\"_blank\" rel=\"noopener\">{{ t('dashboard', 'elevation data from OpenTopoData') }}</a>.\n\t\t\t\t\t</p>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t</NcModal>\n\t</div>\n</template>\n\n<script>\nimport { generateUrl, generateOcsUrl } from '@nextcloud/router'\nimport { getCurrentUser } from '@nextcloud/auth'\nimport { loadState } from '@nextcloud/initial-state'\nimport axios from '@nextcloud/axios'\nimport NcButton from '@nextcloud/vue/dist/Components/NcButton.js'\nimport Draggable from 'vuedraggable'\nimport NcModal from '@nextcloud/vue/dist/Components/NcModal.js'\nimport Pencil from 'vue-material-design-icons/Pencil.vue'\nimport Vue from 'vue'\n\nimport isMobile from './mixins/isMobile.js'\nimport ApiDashboardWidget from './components/ApiDashboardWidget.vue'\n\nconst panels = loadState('dashboard', 'panels')\nconst firstRun = loadState('dashboard', 'firstRun')\n\nconst statusInfo = {\n\tweather: {\n\t\ttext: t('dashboard', 'Weather'),\n\t\ticon: 'icon-weather-status',\n\t},\n\tstatus: {\n\t\ttext: t('dashboard', 'Status'),\n\t\ticon: 'icon-user-status-online',\n\t},\n}\n\nexport default {\n\tname: 'DashboardApp',\n\tcomponents: {\n\t\tApiDashboardWidget,\n\t\tNcButton,\n\t\tDraggable,\n\t\tNcModal,\n\t\tPencil,\n\t},\n\tmixins: [\n\t\tisMobile,\n\t],\n\n\tdata() {\n\t\treturn {\n\t\t\tisAdmin: getCurrentUser().isAdmin,\n\t\t\ttimer: new Date(),\n\t\t\tregisteredStatus: [],\n\t\t\tcallbacks: {},\n\t\t\tcallbacksStatus: {},\n\t\t\tallCallbacksStatus: {},\n\t\t\tstatusInfo,\n\t\t\tenabledStatuses: loadState('dashboard', 'statuses'),\n\t\t\tpanels,\n\t\t\tfirstRun,\n\t\t\tdisplayName: getCurrentUser()?.displayName,\n\t\t\tuid: getCurrentUser()?.uid,\n\t\t\tlayout: loadState('dashboard', 'layout').filter((panelId) => panels[panelId]),\n\t\t\tmodal: false,\n\t\t\tappStoreUrl: generateUrl('/settings/apps/dashboard'),\n\t\t\tstatuses: {},\n\t\t\tapiWidgets: [],\n\t\t\tapiWidgetItems: {},\n\t\t\tloadingItems: true,\n\t\t}\n\t},\n\tcomputed: {\n\t\tgreeting() {\n\t\t\tconst time = this.timer.getHours()\n\n\t\t\t// Determine part of the day\n\t\t\tlet partOfDay\n\t\t\tif (time >= 22 || time < 5) {\n\t\t\t\tpartOfDay = 'night'\n\t\t\t} else if (time >= 18) {\n\t\t\t\tpartOfDay = 'evening'\n\t\t\t} else if (time >= 12) {\n\t\t\t\tpartOfDay = 'afternoon'\n\t\t\t} else {\n\t\t\t\tpartOfDay = 'morning'\n\t\t\t}\n\n\t\t\t// Define the greetings\n\t\t\tconst good = {\n\t\t\t\tmorning: {\n\t\t\t\t\tgeneric: t('dashboard', 'Good morning'),\n\t\t\t\t\twithName: t('dashboard', 'Good morning, {name}', { name: this.displayName }, undefined, { escape: false }),\n\t\t\t\t},\n\t\t\t\tafternoon: {\n\t\t\t\t\tgeneric: t('dashboard', 'Good afternoon'),\n\t\t\t\t\twithName: t('dashboard', 'Good afternoon, {name}', { name: this.displayName }, undefined, { escape: false }),\n\t\t\t\t},\n\t\t\t\tevening: {\n\t\t\t\t\tgeneric: t('dashboard', 'Good evening'),\n\t\t\t\t\twithName: t('dashboard', 'Good evening, {name}', { name: this.displayName }, undefined, { escape: false }),\n\t\t\t\t},\n\t\t\t\tnight: {\n\t\t\t\t\t// Don't use \"Good night\" as it's not a greeting\n\t\t\t\t\tgeneric: t('dashboard', 'Hello'),\n\t\t\t\t\twithName: t('dashboard', 'Hello, {name}', { name: this.displayName }, undefined, { escape: false }),\n\t\t\t\t},\n\t\t\t}\n\n\t\t\t// Figure out which greeting to show\n\t\t\tconst shouldShowName = this.displayName && this.uid !== this.displayName\n\t\t\treturn { text: shouldShowName ? good[partOfDay].withName : good[partOfDay].generic }\n\t\t},\n\n\t\tisActive() {\n\t\t\treturn (panel) => this.layout.indexOf(panel.id) > -1\n\t\t},\n\t\tisStatusActive() {\n\t\t\treturn (status) => !(status in this.enabledStatuses) || this.enabledStatuses[status]\n\t\t},\n\n\t\tsortedAllStatuses() {\n\t\t\treturn Object.keys(this.allCallbacksStatus).slice().sort(this.sortStatuses)\n\t\t},\n\t\tsortedPanels() {\n\t\t\treturn Object.values(this.panels).sort((a, b) => {\n\t\t\t\tconst indexA = this.layout.indexOf(a.id)\n\t\t\t\tconst indexB = this.layout.indexOf(b.id)\n\t\t\t\tif (indexA === -1 || indexB === -1) {\n\t\t\t\t\treturn indexB - indexA || a.id - b.id\n\t\t\t\t}\n\t\t\t\treturn indexA - indexB || a.id - b.id\n\t\t\t})\n\t\t},\n\t\tsortedRegisteredStatus() {\n\t\t\treturn this.registeredStatus.slice().sort(this.sortStatuses)\n\t\t},\n\t},\n\n\twatch: {\n\t\tcallbacks() {\n\t\t\tthis.rerenderPanels()\n\t\t},\n\t\tcallbacksStatus() {\n\t\t\tfor (const app in this.callbacksStatus) {\n\t\t\t\tconst element = this.$refs['status-' + app]\n\t\t\t\tif (this.statuses[app] && this.statuses[app].mounted) {\n\t\t\t\t\tcontinue\n\t\t\t\t}\n\t\t\t\tif (element) {\n\t\t\t\t\tthis.callbacksStatus[app](element[0])\n\t\t\t\t\tVue.set(this.statuses, app, { mounted: true })\n\t\t\t\t} else {\n\t\t\t\t\tconsole.error('Failed to register panel in the frontend as no backend data was provided for ' + app)\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t},\n\n\tasync created() {\n\t\tawait this.fetchApiWidgets()\n\n\t\tconst apiWidgetIdsToFetch = Object\n\t\t\t.values(this.apiWidgets)\n\t\t\t.filter(widget => this.isApiWidgetV2(widget.id))\n\t\t\t.map(widget => widget.id)\n\t\tawait Promise.all(apiWidgetIdsToFetch.map(id => this.fetchApiWidgetItems([id], true)))\n\n\t\tfor (const widget of Object.values(this.apiWidgets)) {\n\t\t\tif (widget.reload_interval > 0) {\n\t\t\t\tsetInterval(async () => {\n\t\t\t\t\tawait this.fetchApiWidgetItems([widget.id], true)\n\t\t\t\t}, widget.reload_interval * 1000)\n\t\t\t}\n\t\t}\n\t},\n\tmounted() {\n\t\tthis.updateSkipLink()\n\t\twindow.addEventListener('scroll', this.handleScroll)\n\n\t\tsetInterval(() => {\n\t\t\tthis.timer = new Date()\n\t\t}, 30000)\n\n\t\tif (this.firstRun) {\n\t\t\twindow.addEventListener('scroll', this.disableFirstrunHint)\n\t\t}\n\t},\n\tdestroyed() {\n\t\twindow.removeEventListener('scroll', this.handleScroll)\n\t},\n\n\tmethods: {\n\t\t/**\n\t\t * Method to register panels that will be called by the integrating apps\n\t\t *\n\t\t * @param {string} app The unique app id for the widget\n\t\t * @param {Function} callback The callback function to register a panel which gets the DOM element passed as parameter\n\t\t */\n\t\tregister(app, callback) {\n\t\t\tVue.set(this.callbacks, app, callback)\n\t\t},\n\t\tregisterStatus(app, callback) {\n\t\t\t// always save callbacks in case user enables the status later\n\t\t\tVue.set(this.allCallbacksStatus, app, callback)\n\t\t\t// register only if status is enabled or missing from config\n\t\t\tif (this.isStatusActive(app)) {\n\t\t\t\tthis.registeredStatus.push(app)\n\t\t\t\tthis.$nextTick(() => {\n\t\t\t\t\tVue.set(this.callbacksStatus, app, callback)\n\t\t\t\t})\n\t\t\t}\n\t\t},\n\t\trerenderPanels() {\n\t\t\tfor (const app in this.callbacks) {\n\t\t\t\t// TODO: Properly rerender v2 widgets\n\t\t\t\tif (this.isApiWidgetV2(this.panels[app].id)) {\n\t\t\t\t\tcontinue\n\t\t\t\t}\n\n\t\t\t\tconst element = this.$refs[app]\n\t\t\t\tif (this.layout.indexOf(app) === -1) {\n\t\t\t\t\tcontinue\n\t\t\t\t}\n\t\t\t\tif (this.panels[app] && this.panels[app].mounted) {\n\t\t\t\t\tcontinue\n\t\t\t\t}\n\t\t\t\tif (element) {\n\t\t\t\t\tthis.callbacks[app](element[0], {\n\t\t\t\t\t\twidget: this.panels[app],\n\t\t\t\t\t})\n\t\t\t\t\tVue.set(this.panels[app], 'mounted', true)\n\t\t\t\t} else {\n\t\t\t\t\tconsole.error('Failed to register panel in the frontend as no backend data was provided for ' + app)\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\tsaveLayout() {\n\t\t\taxios.post(generateUrl('/apps/dashboard/layout'), {\n\t\t\t\tlayout: this.layout.join(','),\n\t\t\t})\n\t\t},\n\t\tsaveStatuses() {\n\t\t\taxios.post(generateUrl('/apps/dashboard/statuses'), {\n\t\t\t\tstatuses: JSON.stringify(this.enabledStatuses),\n\t\t\t})\n\t\t},\n\t\tshowModal() {\n\t\t\tthis.modal = true\n\t\t\tthis.firstRun = false\n\t\t},\n\t\tcloseModal() {\n\t\t\tthis.modal = false\n\t\t},\n\t\tupdateCheckbox(panel, currentValue) {\n\t\t\tconst index = this.layout.indexOf(panel.id)\n\t\t\tif (!currentValue && index > -1) {\n\t\t\t\tthis.layout.splice(index, 1)\n\n\t\t\t} else {\n\t\t\t\tthis.layout.push(panel.id)\n\t\t\t}\n\t\t\tVue.set(this.panels[panel.id], 'mounted', false)\n\t\t\tthis.saveLayout()\n\t\t\tthis.$nextTick(() => this.rerenderPanels())\n\t\t},\n\t\tdisableFirstrunHint() {\n\t\t\twindow.removeEventListener('scroll', this.disableFirstrunHint)\n\t\t\tsetTimeout(() => {\n\t\t\t\tthis.firstRun = false\n\t\t\t}, 1000)\n\t\t},\n\t\tupdateSkipLink() {\n\t\t\t// Make sure \"Skip to main content\" link points to the app content\n\t\t\tdocument.getElementsByClassName('skip-navigation')[0].setAttribute('href', '#app-dashboard')\n\t\t},\n\t\tupdateStatusCheckbox(app, checked) {\n\t\t\tif (checked) {\n\t\t\t\tthis.enableStatus(app)\n\t\t\t} else {\n\t\t\t\tthis.disableStatus(app)\n\t\t\t}\n\t\t},\n\t\tenableStatus(app) {\n\t\t\tthis.enabledStatuses[app] = true\n\t\t\tthis.registerStatus(app, this.allCallbacksStatus[app])\n\t\t\tthis.saveStatuses()\n\t\t},\n\t\tdisableStatus(app) {\n\t\t\tthis.enabledStatuses[app] = false\n\t\t\tconst i = this.registeredStatus.findIndex((s) => s === app)\n\t\t\tif (i !== -1) {\n\t\t\t\tthis.registeredStatus.splice(i, 1)\n\t\t\t\tVue.set(this.statuses, app, { mounted: false })\n\t\t\t\tthis.$nextTick(() => {\n\t\t\t\t\tVue.delete(this.callbacksStatus, app)\n\t\t\t\t})\n\t\t\t}\n\t\t\tthis.saveStatuses()\n\t\t},\n\t\tsortStatuses(a, b) {\n\t\t\tconst al = a.toLowerCase()\n\t\t\tconst bl = b.toLowerCase()\n\t\t\treturn al > bl\n\t\t\t\t? 1\n\t\t\t\t: al < bl\n\t\t\t\t\t? -1\n\t\t\t\t\t: 0\n\t\t},\n\t\thandleScroll() {\n\t\t\tif (window.scrollY > 70) {\n\t\t\t\tdocument.body.classList.add('dashboard--scrolled')\n\t\t\t} else {\n\t\t\t\tdocument.body.classList.remove('dashboard--scrolled')\n\t\t\t}\n\t\t},\n\t\tasync fetchApiWidgets() {\n\t\t\tconst response = await axios.get(generateOcsUrl('/apps/dashboard/api/v1/widgets'))\n\t\t\tthis.apiWidgets = response.data.ocs.data\n\t\t},\n\t\tasync fetchApiWidgetItems(widgetIds, merge = false) {\n\t\t\ttry {\n\t\t\t\tconst url = generateOcsUrl('/apps/dashboard/api/v2/widget-items')\n\t\t\t\tconst params = new URLSearchParams(widgetIds.map(id => ['widgets[]', id]))\n\t\t\t\tconst response = await axios.get(`${url}?${params.toString()}`)\n\t\t\t\tconst widgetItems = response.data.ocs.data\n\t\t\t\tif (merge) {\n\t\t\t\t\tthis.apiWidgetItems = Object.assign({}, this.apiWidgetItems, widgetItems)\n\t\t\t\t} else {\n\t\t\t\t\tthis.apiWidgetItems = widgetItems\n\t\t\t\t}\n\t\t\t} finally {\n\t\t\t\tthis.loadingItems = false\n\t\t\t}\n\t\t},\n\t\tisApiWidgetV2(id) {\n\t\t\tfor (const widget of Object.values(this.apiWidgets)) {\n\t\t\t\tif (widget.id === id && widget.item_api_versions.includes(2)) {\n\t\t\t\t\treturn true\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn false\n\t\t},\n\t},\n}\n</script>\n\n<style lang=\"scss\" scoped>\n#app-dashboard {\n\twidth: 100%;\n\tmin-height: 100%;\n\tbackground-size: cover;\n\tbackground-position: center center;\n\tbackground-repeat: no-repeat;\n\tbackground-attachment: fixed;\n\n\t> h2 {\n\t\tcolor: var(--color-primary-element-text);\n\t\ttext-align: center;\n\t\tfont-size: 32px;\n\t\tline-height: 130%;\n\t\tpadding: 1rem 0;\n\t}\n}\n\n.panels {\n\twidth: auto;\n\tmargin: auto;\n\tmax-width: 1800px;\n\tdisplay: flex;\n\tjustify-content: center;\n\tflex-direction: row;\n\talign-items: flex-start;\n\tflex-wrap: wrap;\n}\n\n.panel, .panels > div {\n\twidth: 320px;\n\tmax-width: 100%;\n\tmargin: 16px;\n\talign-self: stretch;\n\tbackground-color: var(--color-main-background-blur);\n\t-webkit-backdrop-filter: var(--filter-background-blur);\n\tbackdrop-filter: var(--filter-background-blur);\n\tborder-radius: var(--border-radius-rounded);\n\n\t#body-user.theme--highcontrast & {\n\t\tborder: 2px solid var(--color-border);\n\t}\n\n\t&.sortable-ghost {\n\t\t opacity: 0.1;\n\t}\n\n\t& > .panel--header {\n\t\tdisplay: flex;\n\t\tz-index: 1;\n\t\ttop: 50px;\n\t\tpadding: 16px;\n\t\tcursor: grab;\n\n\t\t&, ::v-deep * {\n\t\t\t-webkit-touch-callout: none;\n\t\t\t-webkit-user-select: none;\n\t\t\t-khtml-user-select: none;\n\t\t\t-moz-user-select: none;\n\t\t\t-ms-user-select: none;\n\t\t\tuser-select: none;\n\t\t}\n\n\t\t&:active {\n\t\t\tcursor: grabbing;\n\t\t}\n\n\t\ta {\n\t\t\tflex-grow: 1;\n\t\t}\n\n\t\t> h2 {\n\t\t\tdisplay: block;\n\t\t\talign-items: center;\n\t\t\tflex-grow: 1;\n\t\t\tmargin: 0;\n\t\t\tfont-size: 20px;\n\t\t\tline-height: 24px;\n\t\t\tfont-weight: bold;\n\t\t\tpadding: 16px 8px;\n\t\t\theight: 56px;\n\t\t\twhite-space: nowrap;\n\t\t\toverflow: hidden;\n\t\t\ttext-overflow: ellipsis;\n\t\t\tcursor: grab;\n\t\t\tspan {\n\t\t\t\tbackground-size: 32px;\n\t\t\t\twidth: 32px;\n\t\t\t\theight: 32px;\n\t\t\t\tmargin-right: 16px;\n\t\t\t\tbackground-position: center;\n\t\t\t\tfloat: left;\n\t\t\t\tmargin-top: -6px;\n\t\t\t}\n\t\t}\n\t}\n\n\t& > .panel--content {\n\t\tmargin: 0 16px 16px 16px;\n\t\theight: 424px;\n\t\t// We specifically do not want scrollbars inside widgets\n\t\toverflow: visible;\n\t}\n\n\t// No need to extend height of widgets if only one column is shown\n\t@media only screen and (max-width: 709px) {\n\t\t& > .panel--content {\n\t\t\theight: auto;\n\t\t}\n\t}\n}\n\n.footer {\n\tdisplay: flex;\n\tjustify-content: center;\n\ttransition: bottom var(--animation-slow) ease-in-out;\n\tpadding: 1rem 0;\n}\n\n.edit-panels {\n\tdisplay: inline-block;\n\tmargin:auto;\n\tbackground-position: 16px center;\n\tpadding: 12px 16px;\n\tpadding-left: 36px;\n\tborder-radius: var(--border-radius-pill);\n\tmax-width: 200px;\n\topacity: 1;\n\ttext-align: center;\n}\n\n.button,\n.button-vue,\n.edit-panels,\n.statuses ::v-deep .action-item .action-item__menutoggle,\n.statuses ::v-deep .action-item.action-item--open .action-item__menutoggle {\n\tbackground-color: var(--color-main-background-blur);\n\t-webkit-backdrop-filter: var(--filter-background-blur);\n\tbackdrop-filter: var(--filter-background-blur);\n\topacity: 1 !important;\n\n\t&:hover,\n\t&:focus,\n\t&:active {\n\t\tbackground-color: var(--color-background-hover)!important;\n\t}\n\t&:focus-visible {\n\t\tbox-shadow: 0 0 0 4px var(--color-main-background) !important;\n\t\toutline: 2px solid var(--color-main-text) !important;\n\t}\n}\n\n.modal__content {\n\tpadding: 32px 16px;\n\ttext-align: center;\n\n\tol {\n\t\tdisplay: flex;\n\t\tflex-direction: row;\n\t\tjustify-content: center;\n\t\tlist-style-type: none;\n\t\tpadding-bottom: 16px;\n\t}\n\tli {\n\t\tlabel {\n\t\t\tposition: relative;\n\t\t\tdisplay: block;\n\t\t\tpadding: 48px 16px 14px 16px;\n\t\t\tmargin: 8px;\n\t\t\twidth: 140px;\n\t\t\tbackground-color: var(--color-background-hover);\n\t\t\tborder: 2px solid var(--color-main-background);\n\t\t\tborder-radius: var(--border-radius-large);\n\t\t\ttext-align: left;\n\t\t\toverflow: hidden;\n\t\t\ttext-overflow: ellipsis;\n\t\t\twhite-space: nowrap;\n\n\t\t\tspan {\n\t\t\t\tposition: absolute;\n\t\t\t\ttop: 16px;\n\t\t\t\twidth: 24px;\n\t\t\t\theight: 24px;\n\t\t\t\tbackground-size: 24px;\n\t\t\t}\n\n\t\t\t&:hover {\n\t\t\t\tborder-color: var(--color-primary-element);\n\t\t\t}\n\t\t}\n\n\t\t// Do not invert status icons\n\t\t&:not(.panel-status) label span {\n\t\t\tfilter: var(--background-invert-if-dark);\n\t\t}\n\n\t\tinput[type='checkbox'].checkbox + label:before {\n\t\t\tposition: absolute;\n\t\t\tright: 12px;\n\t\t\ttop: 16px;\n\t\t}\n\n\t\tinput:focus + label {\n\t\t\tborder-color: var(--color-primary-element);\n\t\t}\n\t}\n\n\th3 {\n\t\tfont-weight: bold;\n\n\t\t&:not(:first-of-type) {\n\t\t\tmargin-top: 64px;\n\t\t}\n\t}\n\n\t// Adjust design of 'Get more widgets' button\n\t.button {\n\t\tdisplay: inline-block;\n\t\tpadding: 10px 16px;\n\t\tmargin: 0;\n\t}\n\n\tp {\n\t\tmax-width: 650px;\n\t\tmargin: 0 auto;\n\n\t\ta:hover,\n\t\ta:focus {\n\t\t\tborder-bottom: 2px solid var(--color-border);\n\t\t}\n\t}\n\n\t.credits--end {\n\t\tpadding-bottom: 32px;\n\t\tcolor: var(--color-text-maxcontrast);\n\n\t\ta {\n\t\t\tcolor: var(--color-text-maxcontrast);\n\t\t}\n\t}\n}\n\n.flip-list-move {\n\ttransition: transform var(--animation-slow);\n}\n\n.statuses {\n\tdisplay: flex;\n\tflex-direction: row;\n\tjustify-content: center;\n\tflex-wrap: wrap;\n\tmargin-bottom: 36px;\n\n\t& > li {\n\t\tmargin: 8px;\n\t}\n}\n</style>\n<style>\nhtml, body {\n\tbackground-attachment: fixed;\n}\n\n#body-user #header {\n\tposition: fixed;\n}\n\n#content {\n\toverflow: auto;\n}\n</style>\n","import mod from \"-!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./DashboardApp.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./DashboardApp.vue?vue&type=script&lang=js\"","\n      import API from \"!../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n      import domAPI from \"!../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n      import insertFn from \"!../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n      import setAttributes from \"!../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n      import insertStyleElement from \"!../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n      import styleTagTransformFn from \"!../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n      import content, * as namedExport from \"!!../../../node_modules/css-loader/dist/cjs.js!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/sass-loader/dist/cjs.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./DashboardApp.vue?vue&type=style&index=0&id=9fd44988&prod&lang=scss&scoped=true\";\n      \n      \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n      options.insert = insertFn.bind(null, \"head\");\n    \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../node_modules/css-loader/dist/cjs.js!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/sass-loader/dist/cjs.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./DashboardApp.vue?vue&type=style&index=0&id=9fd44988&prod&lang=scss&scoped=true\";\n       export default content && content.locals ? content.locals : undefined;\n","\n      import API from \"!../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n      import domAPI from \"!../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n      import insertFn from \"!../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n      import setAttributes from \"!../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n      import insertStyleElement from \"!../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n      import styleTagTransformFn from \"!../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n      import content, * as namedExport from \"!!../../../node_modules/css-loader/dist/cjs.js!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./DashboardApp.vue?vue&type=style&index=1&id=9fd44988&prod&lang=css\";\n      \n      \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n      options.insert = insertFn.bind(null, \"head\");\n    \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../node_modules/css-loader/dist/cjs.js!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./DashboardApp.vue?vue&type=style&index=1&id=9fd44988&prod&lang=css\";\n       export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./DashboardApp.vue?vue&type=template&id=9fd44988&scoped=true\"\nimport script from \"./DashboardApp.vue?vue&type=script&lang=js\"\nexport * from \"./DashboardApp.vue?vue&type=script&lang=js\"\nimport style0 from \"./DashboardApp.vue?vue&type=style&index=0&id=9fd44988&prod&lang=scss&scoped=true\"\nimport style1 from \"./DashboardApp.vue?vue&type=style&index=1&id=9fd44988&prod&lang=css\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  \"9fd44988\",\n  null\n  \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{attrs:{\"id\":\"app-dashboard\"}},[_c('h2',[_vm._v(_vm._s(_vm.greeting.text))]),_vm._v(\" \"),_c('ul',{staticClass:\"statuses\"},_vm._l((_vm.sortedRegisteredStatus),function(status){return _c('li',{key:status,attrs:{\"id\":'status-' + status}},[_c('div',{ref:'status-' + status,refInFor:true})])}),0),_vm._v(\" \"),_c('Draggable',_vm._b({staticClass:\"panels\",attrs:{\"handle\":\".panel--header\"},on:{\"end\":_vm.saveLayout},model:{value:(_vm.layout),callback:function ($$v) {_vm.layout=$$v},expression:\"layout\"}},'Draggable',{swapThreshold: 0.30, delay: 500, delayOnTouchOnly: true, touchStartThreshold: 3},false),[_vm._l((_vm.layout),function(panelId){return [(_vm.isApiWidgetV2(_vm.panels[panelId].id))?_c('div',{key:`${_vm.panels[panelId].id}-v2`,staticClass:\"panel\"},[_c('div',{staticClass:\"panel--header\"},[_c('h2',[_c('span',{class:_vm.apiWidgets[_vm.panels[panelId].id].icon_class,attrs:{\"aria-labelledby\":`panel-${_vm.panels[panelId].id}--header--icon--description`,\"aria-hidden\":\"true\",\"role\":\"img\"}}),_vm._v(\"\\n\\t\\t\\t\\t\\t\\t\"+_vm._s(_vm.apiWidgets[_vm.panels[panelId].id].title)+\"\\n\\t\\t\\t\\t\\t\")]),_vm._v(\" \"),_c('span',{staticClass:\"hidden-visually\",attrs:{\"id\":`panel-${_vm.panels[panelId].id}--header--icon--description`}},[_vm._v(\"\\n\\t\\t\\t\\t\\t\\t\"+_vm._s(_vm.t('dashboard', '\"{title} icon\"', { title: _vm.apiWidgets[_vm.panels[panelId].id].title }))+\"\\n\\t\\t\\t\\t\\t\")])]),_vm._v(\" \"),_c('div',{staticClass:\"panel--content\"},[_c('ApiDashboardWidget',{attrs:{\"widget\":_vm.apiWidgets[_vm.panels[panelId].id],\"data\":_vm.apiWidgetItems[_vm.panels[panelId].id],\"loading\":_vm.loadingItems}})],1)]):_c('div',{key:_vm.panels[panelId].id,staticClass:\"panel\"},[_c('div',{staticClass:\"panel--header\"},[_c('h2',[_c('span',{class:_vm.panels[panelId].iconClass,attrs:{\"aria-labelledby\":`panel-${_vm.panels[panelId].id}--header--icon--description`,\"aria-hidden\":\"true\",\"role\":\"img\"}}),_vm._v(\"\\n\\t\\t\\t\\t\\t\\t\"+_vm._s(_vm.panels[panelId].title)+\"\\n\\t\\t\\t\\t\\t\")]),_vm._v(\" \"),_c('span',{staticClass:\"hidden-visually\",attrs:{\"id\":`panel-${_vm.panels[panelId].id}--header--icon--description`}},[_vm._v(\" \"+_vm._s(_vm.t('dashboard', '\"{title} icon\"', { title: _vm.panels[panelId].title }))+\" \")])]),_vm._v(\" \"),_c('div',{staticClass:\"panel--content\",class:{ loading: !_vm.panels[panelId].mounted }},[_c('div',{ref:_vm.panels[panelId].id,refInFor:true,attrs:{\"data-id\":_vm.panels[panelId].id}})])])]})],2),_vm._v(\" \"),_c('div',{staticClass:\"footer\"},[_c('NcButton',{on:{\"click\":_vm.showModal},scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [_c('Pencil',{attrs:{\"size\":20}})]},proxy:true}])},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.t('dashboard', 'Customize'))+\"\\n\\t\\t\")])],1),_vm._v(\" \"),(_vm.modal)?_c('NcModal',{attrs:{\"size\":\"large\"},on:{\"close\":_vm.closeModal}},[_c('div',{staticClass:\"modal__content\"},[_c('h3',[_vm._v(_vm._s(_vm.t('dashboard', 'Edit widgets')))]),_vm._v(\" \"),_c('ol',{staticClass:\"panels\"},_vm._l((_vm.sortedAllStatuses),function(status){return _c('li',{key:status,class:'panel-' + status},[_c('input',{staticClass:\"checkbox\",attrs:{\"id\":'status-checkbox-' + status,\"type\":\"checkbox\"},domProps:{\"checked\":_vm.isStatusActive(status)},on:{\"input\":function($event){return _vm.updateStatusCheckbox(status, $event.target.checked)}}}),_vm._v(\" \"),_c('label',{attrs:{\"for\":'status-checkbox-' + status}},[_c('span',{class:_vm.statusInfo[status].icon,attrs:{\"aria-hidden\":\"true\"}}),_vm._v(\"\\n\\t\\t\\t\\t\\t\\t\"+_vm._s(_vm.statusInfo[status].text)+\"\\n\\t\\t\\t\\t\\t\")])])}),0),_vm._v(\" \"),_c('Draggable',_vm._b({staticClass:\"panels\",attrs:{\"tag\":\"ol\",\"handle\":\".draggable\"},on:{\"end\":_vm.saveLayout},model:{value:(_vm.layout),callback:function ($$v) {_vm.layout=$$v},expression:\"layout\"}},'Draggable',{swapThreshold: 0.30, delay: 500, delayOnTouchOnly: true, touchStartThreshold: 3},false),_vm._l((_vm.sortedPanels),function(panel){return _c('li',{key:panel.id,class:'panel-' + panel.id},[_c('input',{staticClass:\"checkbox\",attrs:{\"id\":'panel-checkbox-' + panel.id,\"type\":\"checkbox\"},domProps:{\"checked\":_vm.isActive(panel)},on:{\"input\":function($event){return _vm.updateCheckbox(panel, $event.target.checked)}}}),_vm._v(\" \"),_c('label',{class:{ draggable: _vm.isActive(panel) },attrs:{\"for\":'panel-checkbox-' + panel.id}},[_c('span',{class:panel.iconClass,attrs:{\"aria-hidden\":\"true\"}}),_vm._v(\"\\n\\t\\t\\t\\t\\t\\t\"+_vm._s(panel.title)+\"\\n\\t\\t\\t\\t\\t\")])])}),0),_vm._v(\" \"),(_vm.isAdmin)?_c('a',{staticClass:\"button\",attrs:{\"href\":_vm.appStoreUrl}},[_vm._v(_vm._s(_vm.t('dashboard', 'Get more widgets from the App Store')))]):_vm._e(),_vm._v(\" \"),(_vm.statuses.weather && _vm.isStatusActive('weather'))?_c('div',[_c('h3',[_vm._v(_vm._s(_vm.t('dashboard', 'Weather service')))]),_vm._v(\" \"),_c('p',[_vm._v(\"\\n\\t\\t\\t\\t\\t\"+_vm._s(_vm.t('dashboard', 'For your privacy, the weather data is requested by your Nextcloud server on your behalf so the weather service receives no personal information.'))+\"\\n\\t\\t\\t\\t\")]),_vm._v(\" \"),_c('p',{staticClass:\"credits--end\"},[_c('a',{attrs:{\"href\":\"https://api.met.no/doc/TermsOfService\",\"target\":\"_blank\",\"rel\":\"noopener\"}},[_vm._v(_vm._s(_vm.t('dashboard', 'Weather data from Met.no')))]),_vm._v(\",\\n\\t\\t\\t\\t\\t\"),_c('a',{attrs:{\"href\":\"https://wiki.osmfoundation.org/wiki/Privacy_Policy\",\"target\":\"_blank\",\"rel\":\"noopener\"}},[_vm._v(_vm._s(_vm.t('dashboard', 'geocoding with Nominatim')))]),_vm._v(\",\\n\\t\\t\\t\\t\\t\"),_c('a',{attrs:{\"href\":\"https://www.opentopodata.org/#public-api\",\"target\":\"_blank\",\"rel\":\"noopener\"}},[_vm._v(_vm._s(_vm.t('dashboard', 'elevation data from OpenTopoData')))]),_vm._v(\".\\n\\t\\t\\t\\t\")])]):_vm._e()],1)]):_vm._e()],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","/**\n * @copyright Copyright (c) 2016 Julius Härtl <jus@bitgrid.net>\n *\n * @author Julius Härtl <jus@bitgrid.net>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nimport Vue from 'vue'\nimport DashboardApp from './DashboardApp.vue'\nimport { translate as t } from '@nextcloud/l10n'\nimport VTooltip from '@nextcloud/vue/dist/Directives/Tooltip.js'\nimport { getRequestToken } from '@nextcloud/auth'\n\n// eslint-disable-next-line camelcase\n__webpack_nonce__ = btoa(getRequestToken())\n\nVue.directive('Tooltip', VTooltip)\n\nVue.prototype.t = t\n\n// FIXME workaround to make the sidebar work\nif (!window.OCA.Files) {\n\twindow.OCA.Files = {}\n}\n\nObject.assign(window.OCA.Files, { App: { fileList: { filesClient: OC.Files.getClient() } } }, window.OCA.Files)\n\nconst Dashboard = Vue.extend(DashboardApp)\nconst Instance = new Dashboard({}).$mount('#app-content-vue')\n\nwindow.OCA.Dashboard = {\n\tregister: (app, callback) => Instance.register(app, callback),\n\tregisterStatus: (app, callback) => Instance.registerStatus(app, callback),\n}\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `@charset \"UTF-8\";\n/**\n * @copyright Copyright (c) 2019 John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @license GNU AGPL version 3 or any later version\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n.material-design-icon[data-v-5a35ccce] {\n  display: flex;\n  align-self: center;\n  justify-self: center;\n  align-items: center;\n  justify-content: center;\n}\n.select-group-error[data-v-5a35ccce] {\n  color: var(--color-error);\n  font-size: 13px;\n  padding-inline-start: var(--border-radius-large);\n}\n`, \"\",{\"version\":3,\"sources\":[\"webpack://./node_modules/@nextcloud/vue/dist/assets/NcSettingsSelectGroup-0d38d76b.css\"],\"names\":[],\"mappings\":\"AAAA,gBAAgB;AAChB;;;;;;;;;;;;;;;;;;;;EAoBE;AACF;EACE,aAAa;EACb,kBAAkB;EAClB,oBAAoB;EACpB,mBAAmB;EACnB,uBAAuB;AACzB;AACA;EACE,yBAAyB;EACzB,eAAe;EACf,gDAAgD;AAClD\",\"sourcesContent\":[\"@charset \\\"UTF-8\\\";\\n/**\\n * @copyright Copyright (c) 2019 John Molakvoæ <skjnldsv@protonmail.com>\\n *\\n * @author John Molakvoæ <skjnldsv@protonmail.com>\\n *\\n * @license GNU AGPL version 3 or any later version\\n *\\n * This program is free software: you can redistribute it and/or modify\\n * it under the terms of the GNU Affero General Public License as\\n * published by the Free Software Foundation, either version 3 of the\\n * License, or (at your option) any later version.\\n *\\n * This program is distributed in the hope that it will be useful,\\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\\n * GNU Affero General Public License for more details.\\n *\\n * You should have received a copy of the GNU Affero General Public License\\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\\n *\\n */\\n.material-design-icon[data-v-5a35ccce] {\\n  display: flex;\\n  align-self: center;\\n  justify-self: center;\\n  align-items: center;\\n  justify-content: center;\\n}\\n.select-group-error[data-v-5a35ccce] {\\n  color: var(--color-error);\\n  font-size: 13px;\\n  padding-inline-start: var(--border-radius-large);\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `@charset \"UTF-8\";\n/**\n * @copyright Copyright (c) 2019 John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @license GNU AGPL version 3 or any later version\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n.material-design-icon[data-v-b5f9046e] {\n  display: flex;\n  align-self: center;\n  justify-self: center;\n  align-items: center;\n  justify-content: center;\n}\n/**\n * @copyright Copyright (c) 2019 John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n * @author Marco Ambrosini <marcoambrosini@icloud.com>\n *\n * @license GNU AGPL version 3 or any later version\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\nli.active[data-v-b5f9046e] {\n  background-color: var(--color-background-hover);\n  border-radius: 6px;\n  padding: 0;\n}\n.action--disabled[data-v-b5f9046e] {\n  pointer-events: none;\n  opacity: .5;\n}\n.action--disabled[data-v-b5f9046e]:hover,\n.action--disabled[data-v-b5f9046e]:focus {\n  cursor: default;\n  opacity: .5;\n}\n.action--disabled *[data-v-b5f9046e] {\n  opacity: 1 !important;\n}\n.action-radio[data-v-b5f9046e] {\n  display: flex;\n  align-items: flex-start;\n  width: 100%;\n  height: auto;\n  margin: 0;\n  padding: 0;\n  cursor: pointer;\n  white-space: nowrap;\n  color: var(--color-main-text);\n  border: 0;\n  border-radius: 0;\n  background-color: transparent;\n  box-shadow: none;\n  font-weight: 400;\n  line-height: 44px;\n}\n.action-radio__radio[data-v-b5f9046e] {\n  position: absolute;\n  top: auto;\n  left: -10000px;\n  overflow: hidden;\n  width: 1px;\n  height: 1px;\n}\n.action-radio__label[data-v-b5f9046e] {\n  display: flex;\n  align-items: center;\n  width: 100%;\n  padding: 0 14px 0 0 !important;\n}\n.action-radio__label[data-v-b5f9046e]:before {\n  margin: 0 14px !important;\n}\n.action-radio--disabled[data-v-b5f9046e],\n.action-radio--disabled .action-radio__label[data-v-b5f9046e] {\n  cursor: pointer;\n}\n`, \"\",{\"version\":3,\"sources\":[\"webpack://./node_modules/@nextcloud/vue/dist/assets/index-24f6c355.css\"],\"names\":[],\"mappings\":\"AAAA,gBAAgB;AAChB;;;;;;;;;;;;;;;;;;;;EAoBE;AACF;EACE,aAAa;EACb,kBAAkB;EAClB,oBAAoB;EACpB,mBAAmB;EACnB,uBAAuB;AACzB;AACA;;;;;;;;;;;;;;;;;;;;;EAqBE;AACF;EACE,+CAA+C;EAC/C,kBAAkB;EAClB,UAAU;AACZ;AACA;EACE,oBAAoB;EACpB,WAAW;AACb;AACA;;EAEE,eAAe;EACf,WAAW;AACb;AACA;EACE,qBAAqB;AACvB;AACA;EACE,aAAa;EACb,uBAAuB;EACvB,WAAW;EACX,YAAY;EACZ,SAAS;EACT,UAAU;EACV,eAAe;EACf,mBAAmB;EACnB,6BAA6B;EAC7B,SAAS;EACT,gBAAgB;EAChB,6BAA6B;EAC7B,gBAAgB;EAChB,gBAAgB;EAChB,iBAAiB;AACnB;AACA;EACE,kBAAkB;EAClB,SAAS;EACT,cAAc;EACd,gBAAgB;EAChB,UAAU;EACV,WAAW;AACb;AACA;EACE,aAAa;EACb,mBAAmB;EACnB,WAAW;EACX,8BAA8B;AAChC;AACA;EACE,yBAAyB;AAC3B;AACA;;EAEE,eAAe;AACjB\",\"sourcesContent\":[\"@charset \\\"UTF-8\\\";\\n/**\\n * @copyright Copyright (c) 2019 John Molakvoæ <skjnldsv@protonmail.com>\\n *\\n * @author John Molakvoæ <skjnldsv@protonmail.com>\\n *\\n * @license GNU AGPL version 3 or any later version\\n *\\n * This program is free software: you can redistribute it and/or modify\\n * it under the terms of the GNU Affero General Public License as\\n * published by the Free Software Foundation, either version 3 of the\\n * License, or (at your option) any later version.\\n *\\n * This program is distributed in the hope that it will be useful,\\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\\n * GNU Affero General Public License for more details.\\n *\\n * You should have received a copy of the GNU Affero General Public License\\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\\n *\\n */\\n.material-design-icon[data-v-b5f9046e] {\\n  display: flex;\\n  align-self: center;\\n  justify-self: center;\\n  align-items: center;\\n  justify-content: center;\\n}\\n/**\\n * @copyright Copyright (c) 2019 John Molakvoæ <skjnldsv@protonmail.com>\\n *\\n * @author John Molakvoæ <skjnldsv@protonmail.com>\\n * @author Marco Ambrosini <marcoambrosini@icloud.com>\\n *\\n * @license GNU AGPL version 3 or any later version\\n *\\n * This program is free software: you can redistribute it and/or modify\\n * it under the terms of the GNU Affero General Public License as\\n * published by the Free Software Foundation, either version 3 of the\\n * License, or (at your option) any later version.\\n *\\n * This program is distributed in the hope that it will be useful,\\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\\n * GNU Affero General Public License for more details.\\n *\\n * You should have received a copy of the GNU Affero General Public License\\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\\n *\\n */\\nli.active[data-v-b5f9046e] {\\n  background-color: var(--color-background-hover);\\n  border-radius: 6px;\\n  padding: 0;\\n}\\n.action--disabled[data-v-b5f9046e] {\\n  pointer-events: none;\\n  opacity: .5;\\n}\\n.action--disabled[data-v-b5f9046e]:hover,\\n.action--disabled[data-v-b5f9046e]:focus {\\n  cursor: default;\\n  opacity: .5;\\n}\\n.action--disabled *[data-v-b5f9046e] {\\n  opacity: 1 !important;\\n}\\n.action-radio[data-v-b5f9046e] {\\n  display: flex;\\n  align-items: flex-start;\\n  width: 100%;\\n  height: auto;\\n  margin: 0;\\n  padding: 0;\\n  cursor: pointer;\\n  white-space: nowrap;\\n  color: var(--color-main-text);\\n  border: 0;\\n  border-radius: 0;\\n  background-color: transparent;\\n  box-shadow: none;\\n  font-weight: 400;\\n  line-height: 44px;\\n}\\n.action-radio__radio[data-v-b5f9046e] {\\n  position: absolute;\\n  top: auto;\\n  left: -10000px;\\n  overflow: hidden;\\n  width: 1px;\\n  height: 1px;\\n}\\n.action-radio__label[data-v-b5f9046e] {\\n  display: flex;\\n  align-items: center;\\n  width: 100%;\\n  padding: 0 14px 0 0 !important;\\n}\\n.action-radio__label[data-v-b5f9046e]:before {\\n  margin: 0 14px !important;\\n}\\n.action-radio--disabled[data-v-b5f9046e],\\n.action-radio--disabled .action-radio__label[data-v-b5f9046e] {\\n  cursor: pointer;\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `@charset \"UTF-8\";\n/**\n * @copyright Copyright (c) 2019 John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @license GNU AGPL version 3 or any later version\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n.material-design-icon[data-v-db4cc195] {\n  display: flex;\n  align-self: center;\n  justify-self: center;\n  align-items: center;\n  justify-content: center;\n}\n#app-settings[data-v-db4cc195] {\n  margin-top: auto;\n  padding: 3px;\n}\n#app-settings__header[data-v-db4cc195] {\n  box-sizing: border-box;\n  margin: 0 3px 3px;\n}\n#app-settings__header .settings-button[data-v-db4cc195] {\n  display: flex;\n  flex: 1 1 0;\n  height: 44px;\n  width: 100%;\n  padding: 0 14px 0 0;\n  margin: 0;\n  background-color: var(--color-main-background);\n  box-shadow: none;\n  border: 0;\n  border-radius: var(--border-radius-pill);\n  text-align: left;\n  font-weight: 400;\n  font-size: 100%;\n  color: var(--color-main-text);\n  line-height: 44px;\n}\n#app-settings__header .settings-button[data-v-db4cc195]:hover,\n#app-settings__header .settings-button[data-v-db4cc195]:focus {\n  background-color: var(--color-background-hover);\n}\n#app-settings__header .settings-button__icon[data-v-db4cc195] {\n  width: 44px;\n  height: 44px;\n  min-width: 44px;\n}\n#app-settings__header .settings-button__label[data-v-db4cc195] {\n  overflow: hidden;\n  max-width: 100%;\n  white-space: nowrap;\n  text-overflow: ellipsis;\n}\n#app-settings__content[data-v-db4cc195] {\n  display: block;\n  padding: 10px;\n  margin-bottom: -3px;\n  max-height: 300px;\n  overflow-y: auto;\n  box-sizing: border-box;\n}\n.slide-up-leave-active[data-v-db4cc195],\n.slide-up-enter-active[data-v-db4cc195] {\n  transition-duration: var(--animation-slow);\n  transition-property: max-height, padding;\n  overflow-y: hidden !important;\n}\n.slide-up-enter[data-v-db4cc195],\n.slide-up-leave-to[data-v-db4cc195] {\n  max-height: 0 !important;\n  padding: 0 10px !important;\n}\n`, \"\",{\"version\":3,\"sources\":[\"webpack://./node_modules/@nextcloud/vue/dist/assets/index-34dfc54e.css\"],\"names\":[],\"mappings\":\"AAAA,gBAAgB;AAChB;;;;;;;;;;;;;;;;;;;;EAoBE;AACF;EACE,aAAa;EACb,kBAAkB;EAClB,oBAAoB;EACpB,mBAAmB;EACnB,uBAAuB;AACzB;AACA;EACE,gBAAgB;EAChB,YAAY;AACd;AACA;EACE,sBAAsB;EACtB,iBAAiB;AACnB;AACA;EACE,aAAa;EACb,WAAW;EACX,YAAY;EACZ,WAAW;EACX,mBAAmB;EACnB,SAAS;EACT,8CAA8C;EAC9C,gBAAgB;EAChB,SAAS;EACT,wCAAwC;EACxC,gBAAgB;EAChB,gBAAgB;EAChB,eAAe;EACf,6BAA6B;EAC7B,iBAAiB;AACnB;AACA;;EAEE,+CAA+C;AACjD;AACA;EACE,WAAW;EACX,YAAY;EACZ,eAAe;AACjB;AACA;EACE,gBAAgB;EAChB,eAAe;EACf,mBAAmB;EACnB,uBAAuB;AACzB;AACA;EACE,cAAc;EACd,aAAa;EACb,mBAAmB;EACnB,iBAAiB;EACjB,gBAAgB;EAChB,sBAAsB;AACxB;AACA;;EAEE,0CAA0C;EAC1C,wCAAwC;EACxC,6BAA6B;AAC/B;AACA;;EAEE,wBAAwB;EACxB,0BAA0B;AAC5B\",\"sourcesContent\":[\"@charset \\\"UTF-8\\\";\\n/**\\n * @copyright Copyright (c) 2019 John Molakvoæ <skjnldsv@protonmail.com>\\n *\\n * @author John Molakvoæ <skjnldsv@protonmail.com>\\n *\\n * @license GNU AGPL version 3 or any later version\\n *\\n * This program is free software: you can redistribute it and/or modify\\n * it under the terms of the GNU Affero General Public License as\\n * published by the Free Software Foundation, either version 3 of the\\n * License, or (at your option) any later version.\\n *\\n * This program is distributed in the hope that it will be useful,\\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\\n * GNU Affero General Public License for more details.\\n *\\n * You should have received a copy of the GNU Affero General Public License\\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\\n *\\n */\\n.material-design-icon[data-v-db4cc195] {\\n  display: flex;\\n  align-self: center;\\n  justify-self: center;\\n  align-items: center;\\n  justify-content: center;\\n}\\n#app-settings[data-v-db4cc195] {\\n  margin-top: auto;\\n  padding: 3px;\\n}\\n#app-settings__header[data-v-db4cc195] {\\n  box-sizing: border-box;\\n  margin: 0 3px 3px;\\n}\\n#app-settings__header .settings-button[data-v-db4cc195] {\\n  display: flex;\\n  flex: 1 1 0;\\n  height: 44px;\\n  width: 100%;\\n  padding: 0 14px 0 0;\\n  margin: 0;\\n  background-color: var(--color-main-background);\\n  box-shadow: none;\\n  border: 0;\\n  border-radius: var(--border-radius-pill);\\n  text-align: left;\\n  font-weight: 400;\\n  font-size: 100%;\\n  color: var(--color-main-text);\\n  line-height: 44px;\\n}\\n#app-settings__header .settings-button[data-v-db4cc195]:hover,\\n#app-settings__header .settings-button[data-v-db4cc195]:focus {\\n  background-color: var(--color-background-hover);\\n}\\n#app-settings__header .settings-button__icon[data-v-db4cc195] {\\n  width: 44px;\\n  height: 44px;\\n  min-width: 44px;\\n}\\n#app-settings__header .settings-button__label[data-v-db4cc195] {\\n  overflow: hidden;\\n  max-width: 100%;\\n  white-space: nowrap;\\n  text-overflow: ellipsis;\\n}\\n#app-settings__content[data-v-db4cc195] {\\n  display: block;\\n  padding: 10px;\\n  margin-bottom: -3px;\\n  max-height: 300px;\\n  overflow-y: auto;\\n  box-sizing: border-box;\\n}\\n.slide-up-leave-active[data-v-db4cc195],\\n.slide-up-enter-active[data-v-db4cc195] {\\n  transition-duration: var(--animation-slow);\\n  transition-property: max-height, padding;\\n  overflow-y: hidden !important;\\n}\\n.slide-up-enter[data-v-db4cc195],\\n.slide-up-leave-to[data-v-db4cc195] {\\n  max-height: 0 !important;\\n  padding: 0 10px !important;\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `@charset \"UTF-8\";\n/**\n * @copyright Copyright (c) 2019 John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @license GNU AGPL version 3 or any later version\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n.material-design-icon {\n  display: flex;\n  align-self: center;\n  justify-self: center;\n  align-items: center;\n  justify-content: center;\n}\n.nc-button-group-base > div {\n  text-align: center;\n  color: var(--color-text-maxcontrast);\n}\n.nc-button-group-base ul.nc-button-group-content {\n  display: flex;\n  justify-content: space-between;\n}\n.nc-button-group-base ul.nc-button-group-content li {\n  flex: 1 1;\n}\n.nc-button-group-base ul.nc-button-group-content .action-button {\n  padding: 0 !important;\n  width: 100%;\n  display: flex;\n  justify-content: center;\n}\n`, \"\",{\"version\":3,\"sources\":[\"webpack://./node_modules/@nextcloud/vue/dist/assets/index-5fa0ac5a.css\"],\"names\":[],\"mappings\":\"AAAA,gBAAgB;AAChB;;;;;;;;;;;;;;;;;;;;EAoBE;AACF;EACE,aAAa;EACb,kBAAkB;EAClB,oBAAoB;EACpB,mBAAmB;EACnB,uBAAuB;AACzB;AACA;EACE,kBAAkB;EAClB,oCAAoC;AACtC;AACA;EACE,aAAa;EACb,8BAA8B;AAChC;AACA;EACE,SAAS;AACX;AACA;EACE,qBAAqB;EACrB,WAAW;EACX,aAAa;EACb,uBAAuB;AACzB\",\"sourcesContent\":[\"@charset \\\"UTF-8\\\";\\n/**\\n * @copyright Copyright (c) 2019 John Molakvoæ <skjnldsv@protonmail.com>\\n *\\n * @author John Molakvoæ <skjnldsv@protonmail.com>\\n *\\n * @license GNU AGPL version 3 or any later version\\n *\\n * This program is free software: you can redistribute it and/or modify\\n * it under the terms of the GNU Affero General Public License as\\n * published by the Free Software Foundation, either version 3 of the\\n * License, or (at your option) any later version.\\n *\\n * This program is distributed in the hope that it will be useful,\\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\\n * GNU Affero General Public License for more details.\\n *\\n * You should have received a copy of the GNU Affero General Public License\\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\\n *\\n */\\n.material-design-icon {\\n  display: flex;\\n  align-self: center;\\n  justify-self: center;\\n  align-items: center;\\n  justify-content: center;\\n}\\n.nc-button-group-base > div {\\n  text-align: center;\\n  color: var(--color-text-maxcontrast);\\n}\\n.nc-button-group-base ul.nc-button-group-content {\\n  display: flex;\\n  justify-content: space-between;\\n}\\n.nc-button-group-base ul.nc-button-group-content li {\\n  flex: 1 1;\\n}\\n.nc-button-group-base ul.nc-button-group-content .action-button {\\n  padding: 0 !important;\\n  width: 100%;\\n  display: flex;\\n  justify-content: center;\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `@charset \"UTF-8\";\n/**\n * @copyright Copyright (c) 2019 John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @license GNU AGPL version 3 or any later version\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n.material-design-icon[data-v-1efcbeee] {\n  display: flex;\n  align-self: center;\n  justify-self: center;\n  align-items: center;\n  justify-content: center;\n}\n.dashboard-widget[data-v-1efcbeee] .empty-content {\n  text-align: center;\n  padding-top: 5vh;\n}\n.dashboard-widget[data-v-1efcbeee] .empty-content.half-screen {\n  padding-top: 0;\n  margin-bottom: 1vh;\n}\n.more[data-v-1efcbeee] {\n  display: block;\n  text-align: center;\n  color: var(--color-text-maxcontrast);\n  line-height: 60px;\n  cursor: pointer;\n}\n.more[data-v-1efcbeee]:hover,\n.more[data-v-1efcbeee]:focus {\n  background-color: var(--color-background-hover);\n  border-radius: var(--border-radius-large);\n  color: var(--color-main-text);\n}\n.item-list__entry[data-v-1efcbeee] {\n  display: flex;\n  align-items: flex-start;\n  padding: 8px;\n}\n.item-list__entry .item-avatar[data-v-1efcbeee] {\n  position: relative;\n  margin-top: auto;\n  margin-bottom: auto;\n  background-color: var(--color-background-dark) !important;\n}\n.item-list__entry .item__details[data-v-1efcbeee] {\n  padding-left: 8px;\n  max-height: 44px;\n  flex-grow: 1;\n  overflow: hidden;\n  display: flex;\n  flex-direction: column;\n}\n.item-list__entry .item__details h3[data-v-1efcbeee],\n.item-list__entry .item__details .message[data-v-1efcbeee] {\n  white-space: nowrap;\n  background-color: var(--color-background-dark);\n}\n.item-list__entry .item__details h3[data-v-1efcbeee] {\n  font-size: 100%;\n  margin: 0;\n}\n.item-list__entry .item__details .message[data-v-1efcbeee] {\n  width: 80%;\n  height: 15px;\n  margin-top: 5px;\n}\n`, \"\",{\"version\":3,\"sources\":[\"webpack://./node_modules/@nextcloud/vue/dist/assets/index-6416f636.css\"],\"names\":[],\"mappings\":\"AAAA,gBAAgB;AAChB;;;;;;;;;;;;;;;;;;;;EAoBE;AACF;EACE,aAAa;EACb,kBAAkB;EAClB,oBAAoB;EACpB,mBAAmB;EACnB,uBAAuB;AACzB;AACA;EACE,kBAAkB;EAClB,gBAAgB;AAClB;AACA;EACE,cAAc;EACd,kBAAkB;AACpB;AACA;EACE,cAAc;EACd,kBAAkB;EAClB,oCAAoC;EACpC,iBAAiB;EACjB,eAAe;AACjB;AACA;;EAEE,+CAA+C;EAC/C,yCAAyC;EACzC,6BAA6B;AAC/B;AACA;EACE,aAAa;EACb,uBAAuB;EACvB,YAAY;AACd;AACA;EACE,kBAAkB;EAClB,gBAAgB;EAChB,mBAAmB;EACnB,yDAAyD;AAC3D;AACA;EACE,iBAAiB;EACjB,gBAAgB;EAChB,YAAY;EACZ,gBAAgB;EAChB,aAAa;EACb,sBAAsB;AACxB;AACA;;EAEE,mBAAmB;EACnB,8CAA8C;AAChD;AACA;EACE,eAAe;EACf,SAAS;AACX;AACA;EACE,UAAU;EACV,YAAY;EACZ,eAAe;AACjB\",\"sourcesContent\":[\"@charset \\\"UTF-8\\\";\\n/**\\n * @copyright Copyright (c) 2019 John Molakvoæ <skjnldsv@protonmail.com>\\n *\\n * @author John Molakvoæ <skjnldsv@protonmail.com>\\n *\\n * @license GNU AGPL version 3 or any later version\\n *\\n * This program is free software: you can redistribute it and/or modify\\n * it under the terms of the GNU Affero General Public License as\\n * published by the Free Software Foundation, either version 3 of the\\n * License, or (at your option) any later version.\\n *\\n * This program is distributed in the hope that it will be useful,\\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\\n * GNU Affero General Public License for more details.\\n *\\n * You should have received a copy of the GNU Affero General Public License\\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\\n *\\n */\\n.material-design-icon[data-v-1efcbeee] {\\n  display: flex;\\n  align-self: center;\\n  justify-self: center;\\n  align-items: center;\\n  justify-content: center;\\n}\\n.dashboard-widget[data-v-1efcbeee] .empty-content {\\n  text-align: center;\\n  padding-top: 5vh;\\n}\\n.dashboard-widget[data-v-1efcbeee] .empty-content.half-screen {\\n  padding-top: 0;\\n  margin-bottom: 1vh;\\n}\\n.more[data-v-1efcbeee] {\\n  display: block;\\n  text-align: center;\\n  color: var(--color-text-maxcontrast);\\n  line-height: 60px;\\n  cursor: pointer;\\n}\\n.more[data-v-1efcbeee]:hover,\\n.more[data-v-1efcbeee]:focus {\\n  background-color: var(--color-background-hover);\\n  border-radius: var(--border-radius-large);\\n  color: var(--color-main-text);\\n}\\n.item-list__entry[data-v-1efcbeee] {\\n  display: flex;\\n  align-items: flex-start;\\n  padding: 8px;\\n}\\n.item-list__entry .item-avatar[data-v-1efcbeee] {\\n  position: relative;\\n  margin-top: auto;\\n  margin-bottom: auto;\\n  background-color: var(--color-background-dark) !important;\\n}\\n.item-list__entry .item__details[data-v-1efcbeee] {\\n  padding-left: 8px;\\n  max-height: 44px;\\n  flex-grow: 1;\\n  overflow: hidden;\\n  display: flex;\\n  flex-direction: column;\\n}\\n.item-list__entry .item__details h3[data-v-1efcbeee],\\n.item-list__entry .item__details .message[data-v-1efcbeee] {\\n  white-space: nowrap;\\n  background-color: var(--color-background-dark);\\n}\\n.item-list__entry .item__details h3[data-v-1efcbeee] {\\n  font-size: 100%;\\n  margin: 0;\\n}\\n.item-list__entry .item__details .message[data-v-1efcbeee] {\\n  width: 80%;\\n  height: 15px;\\n  margin-top: 5px;\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `@charset \"UTF-8\";\n/**\n * @copyright Copyright (c) 2019 John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @license GNU AGPL version 3 or any later version\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n.material-design-icon[data-v-5b140fb6] {\n  display: flex;\n  align-self: center;\n  justify-self: center;\n  align-items: center;\n  justify-content: center;\n}\n.input-wrapper[data-v-5b140fb6] {\n  display: flex;\n  align-items: center;\n  flex-wrap: wrap;\n  width: 100%;\n  max-width: 400px;\n}\n.input-wrapper .action-input__label[data-v-5b140fb6] {\n  margin-right: 12px;\n}\n.input-wrapper[data-v-5b140fb6]:disabled {\n  cursor: default;\n}\n.input-wrapper .hint[data-v-5b140fb6] {\n  color: var(--color-text-maxcontrast);\n  margin-left: 8px;\n}\n`, \"\",{\"version\":3,\"sources\":[\"webpack://./node_modules/@nextcloud/vue/dist/assets/index-6c47e88a.css\"],\"names\":[],\"mappings\":\"AAAA,gBAAgB;AAChB;;;;;;;;;;;;;;;;;;;;EAoBE;AACF;EACE,aAAa;EACb,kBAAkB;EAClB,oBAAoB;EACpB,mBAAmB;EACnB,uBAAuB;AACzB;AACA;EACE,aAAa;EACb,mBAAmB;EACnB,eAAe;EACf,WAAW;EACX,gBAAgB;AAClB;AACA;EACE,kBAAkB;AACpB;AACA;EACE,eAAe;AACjB;AACA;EACE,oCAAoC;EACpC,gBAAgB;AAClB\",\"sourcesContent\":[\"@charset \\\"UTF-8\\\";\\n/**\\n * @copyright Copyright (c) 2019 John Molakvoæ <skjnldsv@protonmail.com>\\n *\\n * @author John Molakvoæ <skjnldsv@protonmail.com>\\n *\\n * @license GNU AGPL version 3 or any later version\\n *\\n * This program is free software: you can redistribute it and/or modify\\n * it under the terms of the GNU Affero General Public License as\\n * published by the Free Software Foundation, either version 3 of the\\n * License, or (at your option) any later version.\\n *\\n * This program is distributed in the hope that it will be useful,\\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\\n * GNU Affero General Public License for more details.\\n *\\n * You should have received a copy of the GNU Affero General Public License\\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\\n *\\n */\\n.material-design-icon[data-v-5b140fb6] {\\n  display: flex;\\n  align-self: center;\\n  justify-self: center;\\n  align-items: center;\\n  justify-content: center;\\n}\\n.input-wrapper[data-v-5b140fb6] {\\n  display: flex;\\n  align-items: center;\\n  flex-wrap: wrap;\\n  width: 100%;\\n  max-width: 400px;\\n}\\n.input-wrapper .action-input__label[data-v-5b140fb6] {\\n  margin-right: 12px;\\n}\\n.input-wrapper[data-v-5b140fb6]:disabled {\\n  cursor: default;\\n}\\n.input-wrapper .hint[data-v-5b140fb6] {\\n  color: var(--color-text-maxcontrast);\\n  margin-left: 8px;\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `@charset \"UTF-8\";\n.material-design-icon[data-v-36ad47ca] {\n  display: flex;\n  align-self: center;\n  justify-self: center;\n  align-items: center;\n  justify-content: center;\n}\n#guest-content-vue[data-v-36ad47ca] {\n  color: var(--color-main-text);\n  background-color: var(--color-main-background);\n  min-width: 0;\n  border-radius: var(--border-radius-large);\n  box-shadow: 0 0 10px var(--color-box-shadow);\n  height: fit-content;\n  padding: 15px;\n  margin: 20px auto;\n}\n/**\n * @copyright Copyright (c) 2019 John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @license GNU AGPL version 3 or any later version\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n.material-design-icon {\n  display: flex;\n  align-self: center;\n  justify-self: center;\n  align-items: center;\n  justify-content: center;\n}\n#content.nc-guest-content {\n  overflow: auto;\n  margin-bottom: 0;\n  height: calc(var(--body-height) + var(--body-container-margin));\n}\n`, \"\",{\"version\":3,\"sources\":[\"webpack://./node_modules/@nextcloud/vue/dist/assets/index-8aa4712e.css\"],\"names\":[],\"mappings\":\"AAAA,gBAAgB;AAChB;EACE,aAAa;EACb,kBAAkB;EAClB,oBAAoB;EACpB,mBAAmB;EACnB,uBAAuB;AACzB;AACA;EACE,6BAA6B;EAC7B,8CAA8C;EAC9C,YAAY;EACZ,yCAAyC;EACzC,4CAA4C;EAC5C,mBAAmB;EACnB,aAAa;EACb,iBAAiB;AACnB;AACA;;;;;;;;;;;;;;;;;;;;EAoBE;AACF;EACE,aAAa;EACb,kBAAkB;EAClB,oBAAoB;EACpB,mBAAmB;EACnB,uBAAuB;AACzB;AACA;EACE,cAAc;EACd,gBAAgB;EAChB,+DAA+D;AACjE\",\"sourcesContent\":[\"@charset \\\"UTF-8\\\";\\n.material-design-icon[data-v-36ad47ca] {\\n  display: flex;\\n  align-self: center;\\n  justify-self: center;\\n  align-items: center;\\n  justify-content: center;\\n}\\n#guest-content-vue[data-v-36ad47ca] {\\n  color: var(--color-main-text);\\n  background-color: var(--color-main-background);\\n  min-width: 0;\\n  border-radius: var(--border-radius-large);\\n  box-shadow: 0 0 10px var(--color-box-shadow);\\n  height: fit-content;\\n  padding: 15px;\\n  margin: 20px auto;\\n}\\n/**\\n * @copyright Copyright (c) 2019 John Molakvoæ <skjnldsv@protonmail.com>\\n *\\n * @author John Molakvoæ <skjnldsv@protonmail.com>\\n *\\n * @license GNU AGPL version 3 or any later version\\n *\\n * This program is free software: you can redistribute it and/or modify\\n * it under the terms of the GNU Affero General Public License as\\n * published by the Free Software Foundation, either version 3 of the\\n * License, or (at your option) any later version.\\n *\\n * This program is distributed in the hope that it will be useful,\\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\\n * GNU Affero General Public License for more details.\\n *\\n * You should have received a copy of the GNU Affero General Public License\\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\\n *\\n */\\n.material-design-icon {\\n  display: flex;\\n  align-self: center;\\n  justify-self: center;\\n  align-items: center;\\n  justify-content: center;\\n}\\n#content.nc-guest-content {\\n  overflow: auto;\\n  margin-bottom: 0;\\n  height: calc(var(--body-height) + var(--body-container-margin));\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `@charset \"UTF-8\";\n.material-design-icon[data-v-b0b05af8] {\n  display: flex;\n  align-self: center;\n  justify-self: center;\n  align-items: center;\n  justify-content: center;\n}\n/**\n * @copyright Copyright (c) 2019 John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @license GNU AGPL version 3 or any later version\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\nbutton[data-v-b0b05af8]:not(.button-vue),\ninput[data-v-b0b05af8]:not([type=range]),\ntextarea[data-v-b0b05af8] {\n  margin: 0;\n  padding: 7px 6px;\n  cursor: text;\n  color: var(--color-text-lighter);\n  border: 1px solid var(--color-border-dark);\n  border-radius: var(--border-radius);\n  outline: none;\n  background-color: var(--color-main-background);\n  font-size: 13px;\n}\nbutton[data-v-b0b05af8]:not(.button-vue):not(:disabled):not(.primary):hover,\nbutton[data-v-b0b05af8]:not(.button-vue):not(:disabled):not(.primary):focus,\nbutton:not(.button-vue):not(:disabled):not(.primary).active[data-v-b0b05af8],\ninput[data-v-b0b05af8]:not([type=range]):not(:disabled):not(.primary):hover,\ninput[data-v-b0b05af8]:not([type=range]):not(:disabled):not(.primary):focus,\ninput:not([type=range]):not(:disabled):not(.primary).active[data-v-b0b05af8],\ntextarea[data-v-b0b05af8]:not(:disabled):not(.primary):hover,\ntextarea[data-v-b0b05af8]:not(:disabled):not(.primary):focus,\ntextarea:not(:disabled):not(.primary).active[data-v-b0b05af8] {\n  border-color: var(--color-primary-element);\n  outline: none;\n}\nbutton[data-v-b0b05af8]:not(.button-vue):not(:disabled):not(.primary):active,\ninput[data-v-b0b05af8]:not([type=range]):not(:disabled):not(.primary):active,\ntextarea[data-v-b0b05af8]:not(:disabled):not(.primary):active {\n  color: var(--color-text-light);\n  outline: none;\n  background-color: var(--color-main-background);\n}\nbutton[data-v-b0b05af8]:not(.button-vue):disabled,\ninput[data-v-b0b05af8]:not([type=range]):disabled,\ntextarea[data-v-b0b05af8]:disabled {\n  cursor: default;\n  opacity: .5;\n  color: var(--color-text-maxcontrast);\n  background-color: var(--color-background-dark);\n}\nbutton[data-v-b0b05af8]:not(.button-vue):required,\ninput[data-v-b0b05af8]:not([type=range]):required,\ntextarea[data-v-b0b05af8]:required {\n  box-shadow: none;\n}\nbutton[data-v-b0b05af8]:not(.button-vue):invalid,\ninput[data-v-b0b05af8]:not([type=range]):invalid,\ntextarea[data-v-b0b05af8]:invalid {\n  border-color: var(--color-error);\n  box-shadow: none !important;\n}\nbutton:not(.button-vue).primary[data-v-b0b05af8],\ninput:not([type=range]).primary[data-v-b0b05af8],\ntextarea.primary[data-v-b0b05af8] {\n  cursor: pointer;\n  color: var(--color-primary-element-text);\n  border-color: var(--color-primary-element);\n  background-color: var(--color-primary-element);\n}\nbutton:not(.button-vue).primary[data-v-b0b05af8]:not(:disabled):hover,\nbutton:not(.button-vue).primary[data-v-b0b05af8]:not(:disabled):focus,\nbutton:not(.button-vue).primary[data-v-b0b05af8]:not(:disabled):active,\ninput:not([type=range]).primary[data-v-b0b05af8]:not(:disabled):hover,\ninput:not([type=range]).primary[data-v-b0b05af8]:not(:disabled):focus,\ninput:not([type=range]).primary[data-v-b0b05af8]:not(:disabled):active,\ntextarea.primary[data-v-b0b05af8]:not(:disabled):hover,\ntextarea.primary[data-v-b0b05af8]:not(:disabled):focus,\ntextarea.primary[data-v-b0b05af8]:not(:disabled):active {\n  border-color: var(--color-primary-element-light);\n  background-color: var(--color-primary-element-light);\n}\nbutton:not(.button-vue).primary[data-v-b0b05af8]:not(:disabled):active,\ninput:not([type=range]).primary[data-v-b0b05af8]:not(:disabled):active,\ntextarea.primary[data-v-b0b05af8]:not(:disabled):active {\n  color: var(--color-primary-element-text-dark);\n}\nbutton:not(.button-vue).primary[data-v-b0b05af8]:disabled,\ninput:not([type=range]).primary[data-v-b0b05af8]:disabled,\ntextarea.primary[data-v-b0b05af8]:disabled {\n  cursor: default;\n  color: var(--color-primary-element-text-dark);\n  background-color: var(--color-primary-element);\n}\n/**\n * @copyright Copyright (c) 2019 John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n * @author Marco Ambrosini <marcoambrosini@icloud.com>\n *\n * @license GNU AGPL version 3 or any later version\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\nli.active[data-v-b0b05af8] {\n  background-color: var(--color-background-hover);\n  border-radius: 6px;\n  padding: 0;\n}\n.action--disabled[data-v-b0b05af8] {\n  pointer-events: none;\n  opacity: .5;\n}\n.action--disabled[data-v-b0b05af8]:hover,\n.action--disabled[data-v-b0b05af8]:focus {\n  cursor: default;\n  opacity: .5;\n}\n.action--disabled *[data-v-b0b05af8] {\n  opacity: 1 !important;\n}\n.action-text-editable[data-v-b0b05af8] {\n  display: flex;\n  align-items: flex-start;\n  width: 100%;\n  height: auto;\n  margin: 0;\n  padding: 0;\n  cursor: pointer;\n  white-space: nowrap;\n  color: var(--color-main-text);\n  border: 0;\n  border-radius: 0;\n  background-color: transparent;\n  box-shadow: none;\n  font-weight: 400;\n  line-height: 44px;\n}\n.action-text-editable > span[data-v-b0b05af8] {\n  cursor: pointer;\n  white-space: nowrap;\n}\n.action-text-editable__icon[data-v-b0b05af8] {\n  min-width: 0;\n  min-height: 0;\n  padding: 22px 0 22px 44px;\n  background-position: 14px center;\n  background-size: 16px;\n}\n.action-text-editable[data-v-b0b05af8] .material-design-icon {\n  width: 44px;\n  height: 44px;\n  opacity: 1;\n}\n.action-text-editable[data-v-b0b05af8] .material-design-icon .material-design-icon__svg {\n  vertical-align: middle;\n}\n.action-text-editable__form[data-v-b0b05af8] {\n  display: flex;\n  flex: 1 1 auto;\n  flex-direction: column;\n  position: relative;\n  margin: 4px 0;\n  padding-right: 14px;\n}\n.action-text-editable__submit[data-v-b0b05af8] {\n  position: absolute;\n  left: -10000px;\n  top: auto;\n  width: 1px;\n  height: 1px;\n  overflow: hidden;\n}\n.action-text-editable__label[data-v-b0b05af8] {\n  display: flex;\n  align-items: center;\n  justify-content: center;\n  position: absolute;\n  right: 15px;\n  bottom: 1px;\n  width: 36px;\n  height: 36px;\n  box-sizing: border-box;\n  margin: 0;\n  padding: 7px 6px;\n  border: 0;\n  border-radius: 50%;\n  background-color: var(--color-main-background);\n  background-clip: padding-box;\n}\n.action-text-editable__label[data-v-b0b05af8],\n.action-text-editable__label *[data-v-b0b05af8] {\n  cursor: pointer;\n}\n.action-text-editable__textarea[data-v-b0b05af8] {\n  flex: 1 1 auto;\n  color: inherit;\n  border-color: var(--color-border-maxcontrast);\n  min-height: 80px;\n  max-height: 124px;\n  min-width: 176px;\n  width: 100% !important;\n  margin: 0;\n}\n.action-text-editable__textarea[data-v-b0b05af8]:disabled {\n  cursor: default;\n}\n.action-text-editable__textarea:not(:active):not(:hover):not(:focus):invalid + .action-text-editable__label[data-v-b0b05af8] {\n  background-color: var(--color-error);\n}\n.action-text-editable__textarea:not(:active):not(:hover):not(:focus):not(:disabled) + .action-text-editable__label[data-v-b0b05af8]:active,\n.action-text-editable__textarea:not(:active):not(:hover):not(:focus):not(:disabled) + .action-text-editable__label[data-v-b0b05af8]:hover,\n.action-text-editable__textarea:not(:active):not(:hover):not(:focus):not(:disabled) + .action-text-editable__label[data-v-b0b05af8]:focus {\n  background-color: var(--color-primary-element);\n  color: var(--color-primary-element-text);\n}\n.action-text-editable__textarea:active:not(:disabled) + .action-text-editable__label[data-v-b0b05af8],\n.action-text-editable__textarea:hover:not(:disabled) + .action-text-editable__label[data-v-b0b05af8],\n.action-text-editable__textarea:focus:not(:disabled) + .action-text-editable__label[data-v-b0b05af8] {\n  z-index: 2;\n  border-color: var(--color-primary-element);\n  border-left-color: transparent;\n}\nli:last-child > .action-text-editable[data-v-b0b05af8] {\n  margin-bottom: 10px;\n}\nli:first-child > .action-text-editable[data-v-b0b05af8] {\n  margin-top: 10px;\n}\n`, \"\",{\"version\":3,\"sources\":[\"webpack://./node_modules/@nextcloud/vue/dist/assets/index-93ad846c.css\"],\"names\":[],\"mappings\":\"AAAA,gBAAgB;AAChB;EACE,aAAa;EACb,kBAAkB;EAClB,oBAAoB;EACpB,mBAAmB;EACnB,uBAAuB;AACzB;AACA;;;;;;;;;;;;;;;;;;;;EAoBE;AACF;;;EAGE,SAAS;EACT,gBAAgB;EAChB,YAAY;EACZ,gCAAgC;EAChC,0CAA0C;EAC1C,mCAAmC;EACnC,aAAa;EACb,8CAA8C;EAC9C,eAAe;AACjB;AACA;;;;;;;;;EASE,0CAA0C;EAC1C,aAAa;AACf;AACA;;;EAGE,8BAA8B;EAC9B,aAAa;EACb,8CAA8C;AAChD;AACA;;;EAGE,eAAe;EACf,WAAW;EACX,oCAAoC;EACpC,8CAA8C;AAChD;AACA;;;EAGE,gBAAgB;AAClB;AACA;;;EAGE,gCAAgC;EAChC,2BAA2B;AAC7B;AACA;;;EAGE,eAAe;EACf,wCAAwC;EACxC,0CAA0C;EAC1C,8CAA8C;AAChD;AACA;;;;;;;;;EASE,gDAAgD;EAChD,oDAAoD;AACtD;AACA;;;EAGE,6CAA6C;AAC/C;AACA;;;EAGE,eAAe;EACf,6CAA6C;EAC7C,8CAA8C;AAChD;AACA;;;;;;;;;;;;;;;;;;;;;EAqBE;AACF;EACE,+CAA+C;EAC/C,kBAAkB;EAClB,UAAU;AACZ;AACA;EACE,oBAAoB;EACpB,WAAW;AACb;AACA;;EAEE,eAAe;EACf,WAAW;AACb;AACA;EACE,qBAAqB;AACvB;AACA;EACE,aAAa;EACb,uBAAuB;EACvB,WAAW;EACX,YAAY;EACZ,SAAS;EACT,UAAU;EACV,eAAe;EACf,mBAAmB;EACnB,6BAA6B;EAC7B,SAAS;EACT,gBAAgB;EAChB,6BAA6B;EAC7B,gBAAgB;EAChB,gBAAgB;EAChB,iBAAiB;AACnB;AACA;EACE,eAAe;EACf,mBAAmB;AACrB;AACA;EACE,YAAY;EACZ,aAAa;EACb,yBAAyB;EACzB,gCAAgC;EAChC,qBAAqB;AACvB;AACA;EACE,WAAW;EACX,YAAY;EACZ,UAAU;AACZ;AACA;EACE,sBAAsB;AACxB;AACA;EACE,aAAa;EACb,cAAc;EACd,sBAAsB;EACtB,kBAAkB;EAClB,aAAa;EACb,mBAAmB;AACrB;AACA;EACE,kBAAkB;EAClB,cAAc;EACd,SAAS;EACT,UAAU;EACV,WAAW;EACX,gBAAgB;AAClB;AACA;EACE,aAAa;EACb,mBAAmB;EACnB,uBAAuB;EACvB,kBAAkB;EAClB,WAAW;EACX,WAAW;EACX,WAAW;EACX,YAAY;EACZ,sBAAsB;EACtB,SAAS;EACT,gBAAgB;EAChB,SAAS;EACT,kBAAkB;EAClB,8CAA8C;EAC9C,4BAA4B;AAC9B;AACA;;EAEE,eAAe;AACjB;AACA;EACE,cAAc;EACd,cAAc;EACd,6CAA6C;EAC7C,gBAAgB;EAChB,iBAAiB;EACjB,gBAAgB;EAChB,sBAAsB;EACtB,SAAS;AACX;AACA;EACE,eAAe;AACjB;AACA;EACE,oCAAoC;AACtC;AACA;;;EAGE,8CAA8C;EAC9C,wCAAwC;AAC1C;AACA;;;EAGE,UAAU;EACV,0CAA0C;EAC1C,8BAA8B;AAChC;AACA;EACE,mBAAmB;AACrB;AACA;EACE,gBAAgB;AAClB\",\"sourcesContent\":[\"@charset \\\"UTF-8\\\";\\n.material-design-icon[data-v-b0b05af8] {\\n  display: flex;\\n  align-self: center;\\n  justify-self: center;\\n  align-items: center;\\n  justify-content: center;\\n}\\n/**\\n * @copyright Copyright (c) 2019 John Molakvoæ <skjnldsv@protonmail.com>\\n *\\n * @author John Molakvoæ <skjnldsv@protonmail.com>\\n *\\n * @license GNU AGPL version 3 or any later version\\n *\\n * This program is free software: you can redistribute it and/or modify\\n * it under the terms of the GNU Affero General Public License as\\n * published by the Free Software Foundation, either version 3 of the\\n * License, or (at your option) any later version.\\n *\\n * This program is distributed in the hope that it will be useful,\\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\\n * GNU Affero General Public License for more details.\\n *\\n * You should have received a copy of the GNU Affero General Public License\\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\\n *\\n */\\nbutton[data-v-b0b05af8]:not(.button-vue),\\ninput[data-v-b0b05af8]:not([type=range]),\\ntextarea[data-v-b0b05af8] {\\n  margin: 0;\\n  padding: 7px 6px;\\n  cursor: text;\\n  color: var(--color-text-lighter);\\n  border: 1px solid var(--color-border-dark);\\n  border-radius: var(--border-radius);\\n  outline: none;\\n  background-color: var(--color-main-background);\\n  font-size: 13px;\\n}\\nbutton[data-v-b0b05af8]:not(.button-vue):not(:disabled):not(.primary):hover,\\nbutton[data-v-b0b05af8]:not(.button-vue):not(:disabled):not(.primary):focus,\\nbutton:not(.button-vue):not(:disabled):not(.primary).active[data-v-b0b05af8],\\ninput[data-v-b0b05af8]:not([type=range]):not(:disabled):not(.primary):hover,\\ninput[data-v-b0b05af8]:not([type=range]):not(:disabled):not(.primary):focus,\\ninput:not([type=range]):not(:disabled):not(.primary).active[data-v-b0b05af8],\\ntextarea[data-v-b0b05af8]:not(:disabled):not(.primary):hover,\\ntextarea[data-v-b0b05af8]:not(:disabled):not(.primary):focus,\\ntextarea:not(:disabled):not(.primary).active[data-v-b0b05af8] {\\n  border-color: var(--color-primary-element);\\n  outline: none;\\n}\\nbutton[data-v-b0b05af8]:not(.button-vue):not(:disabled):not(.primary):active,\\ninput[data-v-b0b05af8]:not([type=range]):not(:disabled):not(.primary):active,\\ntextarea[data-v-b0b05af8]:not(:disabled):not(.primary):active {\\n  color: var(--color-text-light);\\n  outline: none;\\n  background-color: var(--color-main-background);\\n}\\nbutton[data-v-b0b05af8]:not(.button-vue):disabled,\\ninput[data-v-b0b05af8]:not([type=range]):disabled,\\ntextarea[data-v-b0b05af8]:disabled {\\n  cursor: default;\\n  opacity: .5;\\n  color: var(--color-text-maxcontrast);\\n  background-color: var(--color-background-dark);\\n}\\nbutton[data-v-b0b05af8]:not(.button-vue):required,\\ninput[data-v-b0b05af8]:not([type=range]):required,\\ntextarea[data-v-b0b05af8]:required {\\n  box-shadow: none;\\n}\\nbutton[data-v-b0b05af8]:not(.button-vue):invalid,\\ninput[data-v-b0b05af8]:not([type=range]):invalid,\\ntextarea[data-v-b0b05af8]:invalid {\\n  border-color: var(--color-error);\\n  box-shadow: none !important;\\n}\\nbutton:not(.button-vue).primary[data-v-b0b05af8],\\ninput:not([type=range]).primary[data-v-b0b05af8],\\ntextarea.primary[data-v-b0b05af8] {\\n  cursor: pointer;\\n  color: var(--color-primary-element-text);\\n  border-color: var(--color-primary-element);\\n  background-color: var(--color-primary-element);\\n}\\nbutton:not(.button-vue).primary[data-v-b0b05af8]:not(:disabled):hover,\\nbutton:not(.button-vue).primary[data-v-b0b05af8]:not(:disabled):focus,\\nbutton:not(.button-vue).primary[data-v-b0b05af8]:not(:disabled):active,\\ninput:not([type=range]).primary[data-v-b0b05af8]:not(:disabled):hover,\\ninput:not([type=range]).primary[data-v-b0b05af8]:not(:disabled):focus,\\ninput:not([type=range]).primary[data-v-b0b05af8]:not(:disabled):active,\\ntextarea.primary[data-v-b0b05af8]:not(:disabled):hover,\\ntextarea.primary[data-v-b0b05af8]:not(:disabled):focus,\\ntextarea.primary[data-v-b0b05af8]:not(:disabled):active {\\n  border-color: var(--color-primary-element-light);\\n  background-color: var(--color-primary-element-light);\\n}\\nbutton:not(.button-vue).primary[data-v-b0b05af8]:not(:disabled):active,\\ninput:not([type=range]).primary[data-v-b0b05af8]:not(:disabled):active,\\ntextarea.primary[data-v-b0b05af8]:not(:disabled):active {\\n  color: var(--color-primary-element-text-dark);\\n}\\nbutton:not(.button-vue).primary[data-v-b0b05af8]:disabled,\\ninput:not([type=range]).primary[data-v-b0b05af8]:disabled,\\ntextarea.primary[data-v-b0b05af8]:disabled {\\n  cursor: default;\\n  color: var(--color-primary-element-text-dark);\\n  background-color: var(--color-primary-element);\\n}\\n/**\\n * @copyright Copyright (c) 2019 John Molakvoæ <skjnldsv@protonmail.com>\\n *\\n * @author John Molakvoæ <skjnldsv@protonmail.com>\\n * @author Marco Ambrosini <marcoambrosini@icloud.com>\\n *\\n * @license GNU AGPL version 3 or any later version\\n *\\n * This program is free software: you can redistribute it and/or modify\\n * it under the terms of the GNU Affero General Public License as\\n * published by the Free Software Foundation, either version 3 of the\\n * License, or (at your option) any later version.\\n *\\n * This program is distributed in the hope that it will be useful,\\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\\n * GNU Affero General Public License for more details.\\n *\\n * You should have received a copy of the GNU Affero General Public License\\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\\n *\\n */\\nli.active[data-v-b0b05af8] {\\n  background-color: var(--color-background-hover);\\n  border-radius: 6px;\\n  padding: 0;\\n}\\n.action--disabled[data-v-b0b05af8] {\\n  pointer-events: none;\\n  opacity: .5;\\n}\\n.action--disabled[data-v-b0b05af8]:hover,\\n.action--disabled[data-v-b0b05af8]:focus {\\n  cursor: default;\\n  opacity: .5;\\n}\\n.action--disabled *[data-v-b0b05af8] {\\n  opacity: 1 !important;\\n}\\n.action-text-editable[data-v-b0b05af8] {\\n  display: flex;\\n  align-items: flex-start;\\n  width: 100%;\\n  height: auto;\\n  margin: 0;\\n  padding: 0;\\n  cursor: pointer;\\n  white-space: nowrap;\\n  color: var(--color-main-text);\\n  border: 0;\\n  border-radius: 0;\\n  background-color: transparent;\\n  box-shadow: none;\\n  font-weight: 400;\\n  line-height: 44px;\\n}\\n.action-text-editable > span[data-v-b0b05af8] {\\n  cursor: pointer;\\n  white-space: nowrap;\\n}\\n.action-text-editable__icon[data-v-b0b05af8] {\\n  min-width: 0;\\n  min-height: 0;\\n  padding: 22px 0 22px 44px;\\n  background-position: 14px center;\\n  background-size: 16px;\\n}\\n.action-text-editable[data-v-b0b05af8] .material-design-icon {\\n  width: 44px;\\n  height: 44px;\\n  opacity: 1;\\n}\\n.action-text-editable[data-v-b0b05af8] .material-design-icon .material-design-icon__svg {\\n  vertical-align: middle;\\n}\\n.action-text-editable__form[data-v-b0b05af8] {\\n  display: flex;\\n  flex: 1 1 auto;\\n  flex-direction: column;\\n  position: relative;\\n  margin: 4px 0;\\n  padding-right: 14px;\\n}\\n.action-text-editable__submit[data-v-b0b05af8] {\\n  position: absolute;\\n  left: -10000px;\\n  top: auto;\\n  width: 1px;\\n  height: 1px;\\n  overflow: hidden;\\n}\\n.action-text-editable__label[data-v-b0b05af8] {\\n  display: flex;\\n  align-items: center;\\n  justify-content: center;\\n  position: absolute;\\n  right: 15px;\\n  bottom: 1px;\\n  width: 36px;\\n  height: 36px;\\n  box-sizing: border-box;\\n  margin: 0;\\n  padding: 7px 6px;\\n  border: 0;\\n  border-radius: 50%;\\n  background-color: var(--color-main-background);\\n  background-clip: padding-box;\\n}\\n.action-text-editable__label[data-v-b0b05af8],\\n.action-text-editable__label *[data-v-b0b05af8] {\\n  cursor: pointer;\\n}\\n.action-text-editable__textarea[data-v-b0b05af8] {\\n  flex: 1 1 auto;\\n  color: inherit;\\n  border-color: var(--color-border-maxcontrast);\\n  min-height: 80px;\\n  max-height: 124px;\\n  min-width: 176px;\\n  width: 100% !important;\\n  margin: 0;\\n}\\n.action-text-editable__textarea[data-v-b0b05af8]:disabled {\\n  cursor: default;\\n}\\n.action-text-editable__textarea:not(:active):not(:hover):not(:focus):invalid + .action-text-editable__label[data-v-b0b05af8] {\\n  background-color: var(--color-error);\\n}\\n.action-text-editable__textarea:not(:active):not(:hover):not(:focus):not(:disabled) + .action-text-editable__label[data-v-b0b05af8]:active,\\n.action-text-editable__textarea:not(:active):not(:hover):not(:focus):not(:disabled) + .action-text-editable__label[data-v-b0b05af8]:hover,\\n.action-text-editable__textarea:not(:active):not(:hover):not(:focus):not(:disabled) + .action-text-editable__label[data-v-b0b05af8]:focus {\\n  background-color: var(--color-primary-element);\\n  color: var(--color-primary-element-text);\\n}\\n.action-text-editable__textarea:active:not(:disabled) + .action-text-editable__label[data-v-b0b05af8],\\n.action-text-editable__textarea:hover:not(:disabled) + .action-text-editable__label[data-v-b0b05af8],\\n.action-text-editable__textarea:focus:not(:disabled) + .action-text-editable__label[data-v-b0b05af8] {\\n  z-index: 2;\\n  border-color: var(--color-primary-element);\\n  border-left-color: transparent;\\n}\\nli:last-child > .action-text-editable[data-v-b0b05af8] {\\n  margin-bottom: 10px;\\n}\\nli:first-child > .action-text-editable[data-v-b0b05af8] {\\n  margin-top: 10px;\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `@charset \"UTF-8\";\n/**\n * @copyright Copyright (c) 2019 John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @license GNU AGPL version 3 or any later version\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n.material-design-icon[data-v-8950be04] {\n  display: flex;\n  align-self: center;\n  justify-self: center;\n  align-items: center;\n  justify-content: center;\n}\n.app-navigation-entry[data-v-8950be04] {\n  position: relative;\n  display: flex;\n  flex-shrink: 0;\n  flex-wrap: wrap;\n  box-sizing: border-box;\n  width: 100%;\n  min-height: 44px;\n  transition: background-color var(--animation-quick) ease-in-out;\n  transition: background-color .2s ease-in-out;\n  border-radius: var(--border-radius-pill);\n}\n.app-navigation-entry-wrapper[data-v-8950be04] {\n  position: relative;\n  display: flex;\n  flex-shrink: 0;\n  flex-wrap: wrap;\n  box-sizing: border-box;\n  width: 100%;\n}\n.app-navigation-entry-wrapper.app-navigation-entry--collapsible:not(.app-navigation-entry--opened) > ul[data-v-8950be04] {\n  display: none;\n}\n.app-navigation-entry.active[data-v-8950be04] {\n  background-color: var(--color-primary-element) !important;\n}\n.app-navigation-entry.active .app-navigation-entry-link[data-v-8950be04],\n.app-navigation-entry.active .app-navigation-entry-button[data-v-8950be04] {\n  color: var(--color-primary-element-text) !important;\n}\n.app-navigation-entry[data-v-8950be04]:focus-within,\n.app-navigation-entry[data-v-8950be04]:hover {\n  background-color: var(--color-background-hover);\n}\n.app-navigation-entry.active .app-navigation-entry__children[data-v-8950be04],\n.app-navigation-entry:focus-within .app-navigation-entry__children[data-v-8950be04],\n.app-navigation-entry:hover .app-navigation-entry__children[data-v-8950be04] {\n  background-color: var(--color-main-background);\n}\n.app-navigation-entry.active .app-navigation-entry__utils .app-navigation-entry__actions[data-v-8950be04],\n.app-navigation-entry.app-navigation-entry--deleted .app-navigation-entry__utils .app-navigation-entry__actions[data-v-8950be04],\n.app-navigation-entry:focus .app-navigation-entry__utils .app-navigation-entry__actions[data-v-8950be04],\n.app-navigation-entry:focus-within .app-navigation-entry__utils .app-navigation-entry__actions[data-v-8950be04],\n.app-navigation-entry:hover .app-navigation-entry__utils .app-navigation-entry__actions[data-v-8950be04] {\n  display: inline-block;\n}\n.app-navigation-entry.app-navigation-entry--deleted > ul[data-v-8950be04] {\n  display: none;\n}\n.app-navigation-entry:not(.app-navigation-entry--editing) .app-navigation-entry-link[data-v-8950be04],\n.app-navigation-entry:not(.app-navigation-entry--editing) .app-navigation-entry-button[data-v-8950be04] {\n  padding-right: 14px;\n}\n.app-navigation-entry .app-navigation-entry-link[data-v-8950be04],\n.app-navigation-entry .app-navigation-entry-button[data-v-8950be04] {\n  z-index: 100;\n  display: flex;\n  overflow: hidden;\n  flex: 1 1 0;\n  box-sizing: border-box;\n  min-height: 44px;\n  padding: 0;\n  white-space: nowrap;\n  color: var(--color-main-text);\n  background-repeat: no-repeat;\n  background-position: 14px center;\n  background-size: 16px 16px;\n  line-height: 44px;\n}\n.app-navigation-entry .app-navigation-entry-link .app-navigation-entry-icon[data-v-8950be04],\n.app-navigation-entry .app-navigation-entry-button .app-navigation-entry-icon[data-v-8950be04] {\n  display: flex;\n  align-items: center;\n  flex: 0 0 44px;\n  justify-content: center;\n  width: 44px;\n  height: 44px;\n  background-size: 16px 16px;\n  background-repeat: no-repeat;\n  background-position: 14px center;\n}\n.app-navigation-entry .app-navigation-entry-link .app-navigation-entry__name[data-v-8950be04],\n.app-navigation-entry .app-navigation-entry-button .app-navigation-entry__name[data-v-8950be04] {\n  overflow: hidden;\n  max-width: 100%;\n  white-space: nowrap;\n  text-overflow: ellipsis;\n}\n.app-navigation-entry .app-navigation-entry-link .editingContainer[data-v-8950be04],\n.app-navigation-entry .app-navigation-entry-button .editingContainer[data-v-8950be04] {\n  width: calc(100% - 44px);\n  margin: auto;\n}\n.app-navigation-entry__children[data-v-8950be04] {\n  position: relative;\n  display: flex;\n  flex: 0 1 auto;\n  flex-direction: column;\n  width: 100%;\n  gap: var(--default-grid-baseline, 4px);\n}\n.app-navigation-entry__children .app-navigation-entry[data-v-8950be04] {\n  display: inline-flex;\n  flex-wrap: wrap;\n  padding-left: 16px;\n}\n.app-navigation-entry__deleted[data-v-8950be04] {\n  display: inline-flex;\n  flex: 1 1 0;\n  padding-left: 30px !important;\n}\n.app-navigation-entry__deleted .app-navigation-entry__deleted-description[data-v-8950be04] {\n  position: relative;\n  overflow: hidden;\n  flex: 1 1 0;\n  white-space: nowrap;\n  text-overflow: ellipsis;\n  line-height: 44px;\n}\n.app-navigation-entry__utils[data-v-8950be04] {\n  display: flex;\n  min-width: 44px;\n  align-items: center;\n  flex: 0 1 auto;\n  justify-content: flex-end;\n}\n.app-navigation-entry__utils.app-navigation-entry__utils--display-actions .action-item.app-navigation-entry__actions[data-v-8950be04] {\n  display: inline-block;\n}\n.app-navigation-entry__utils .app-navigation-entry__counter-wrapper[data-v-8950be04] {\n  margin-right: calc(var(--default-grid-baseline) * 3);\n  display: flex;\n  align-items: center;\n  flex: 0 1 auto;\n}\n.app-navigation-entry__utils .action-item.app-navigation-entry__actions[data-v-8950be04] {\n  display: none;\n}\n.app-navigation-entry--editing .app-navigation-entry-edit[data-v-8950be04] {\n  z-index: 250;\n  opacity: 1;\n}\n.app-navigation-entry--deleted .app-navigation-entry-deleted[data-v-8950be04] {\n  z-index: 250;\n  transform: translate(0);\n}\n.app-navigation-entry--pinned[data-v-8950be04] {\n  order: 2;\n  margin-top: auto;\n}\n.app-navigation-entry--pinned ~ .app-navigation-entry--pinned[data-v-8950be04] {\n  margin-top: 0;\n}\n[data-themes*=highcontrast] .app-navigation-entry[data-v-8950be04]:active {\n  background-color: var(--color-primary-element-light-hover) !important;\n}\n.app-navigation-new-item__name[data-v-8950be04] {\n  overflow: hidden;\n  max-width: 100%;\n  white-space: nowrap;\n  text-overflow: ellipsis;\n  padding-left: 7px;\n  font-size: 14px;\n}\n.newItemContainer[data-v-8950be04] {\n  width: calc(100% - 44px);\n  margin: auto;\n}\n`, \"\",{\"version\":3,\"sources\":[\"webpack://./node_modules/@nextcloud/vue/dist/assets/index-93bc89ef.css\"],\"names\":[],\"mappings\":\"AAAA,gBAAgB;AAChB;;;;;;;;;;;;;;;;;;;;EAoBE;AACF;EACE,aAAa;EACb,kBAAkB;EAClB,oBAAoB;EACpB,mBAAmB;EACnB,uBAAuB;AACzB;AACA;EACE,kBAAkB;EAClB,aAAa;EACb,cAAc;EACd,eAAe;EACf,sBAAsB;EACtB,WAAW;EACX,gBAAgB;EAChB,+DAA+D;EAC/D,4CAA4C;EAC5C,wCAAwC;AAC1C;AACA;EACE,kBAAkB;EAClB,aAAa;EACb,cAAc;EACd,eAAe;EACf,sBAAsB;EACtB,WAAW;AACb;AACA;EACE,aAAa;AACf;AACA;EACE,yDAAyD;AAC3D;AACA;;EAEE,mDAAmD;AACrD;AACA;;EAEE,+CAA+C;AACjD;AACA;;;EAGE,8CAA8C;AAChD;AACA;;;;;EAKE,qBAAqB;AACvB;AACA;EACE,aAAa;AACf;AACA;;EAEE,mBAAmB;AACrB;AACA;;EAEE,YAAY;EACZ,aAAa;EACb,gBAAgB;EAChB,WAAW;EACX,sBAAsB;EACtB,gBAAgB;EAChB,UAAU;EACV,mBAAmB;EACnB,6BAA6B;EAC7B,4BAA4B;EAC5B,gCAAgC;EAChC,0BAA0B;EAC1B,iBAAiB;AACnB;AACA;;EAEE,aAAa;EACb,mBAAmB;EACnB,cAAc;EACd,uBAAuB;EACvB,WAAW;EACX,YAAY;EACZ,0BAA0B;EAC1B,4BAA4B;EAC5B,gCAAgC;AAClC;AACA;;EAEE,gBAAgB;EAChB,eAAe;EACf,mBAAmB;EACnB,uBAAuB;AACzB;AACA;;EAEE,wBAAwB;EACxB,YAAY;AACd;AACA;EACE,kBAAkB;EAClB,aAAa;EACb,cAAc;EACd,sBAAsB;EACtB,WAAW;EACX,sCAAsC;AACxC;AACA;EACE,oBAAoB;EACpB,eAAe;EACf,kBAAkB;AACpB;AACA;EACE,oBAAoB;EACpB,WAAW;EACX,6BAA6B;AAC/B;AACA;EACE,kBAAkB;EAClB,gBAAgB;EAChB,WAAW;EACX,mBAAmB;EACnB,uBAAuB;EACvB,iBAAiB;AACnB;AACA;EACE,aAAa;EACb,eAAe;EACf,mBAAmB;EACnB,cAAc;EACd,yBAAyB;AAC3B;AACA;EACE,qBAAqB;AACvB;AACA;EACE,oDAAoD;EACpD,aAAa;EACb,mBAAmB;EACnB,cAAc;AAChB;AACA;EACE,aAAa;AACf;AACA;EACE,YAAY;EACZ,UAAU;AACZ;AACA;EACE,YAAY;EACZ,uBAAuB;AACzB;AACA;EACE,QAAQ;EACR,gBAAgB;AAClB;AACA;EACE,aAAa;AACf;AACA;EACE,qEAAqE;AACvE;AACA;EACE,gBAAgB;EAChB,eAAe;EACf,mBAAmB;EACnB,uBAAuB;EACvB,iBAAiB;EACjB,eAAe;AACjB;AACA;EACE,wBAAwB;EACxB,YAAY;AACd\",\"sourcesContent\":[\"@charset \\\"UTF-8\\\";\\n/**\\n * @copyright Copyright (c) 2019 John Molakvoæ <skjnldsv@protonmail.com>\\n *\\n * @author John Molakvoæ <skjnldsv@protonmail.com>\\n *\\n * @license GNU AGPL version 3 or any later version\\n *\\n * This program is free software: you can redistribute it and/or modify\\n * it under the terms of the GNU Affero General Public License as\\n * published by the Free Software Foundation, either version 3 of the\\n * License, or (at your option) any later version.\\n *\\n * This program is distributed in the hope that it will be useful,\\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\\n * GNU Affero General Public License for more details.\\n *\\n * You should have received a copy of the GNU Affero General Public License\\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\\n *\\n */\\n.material-design-icon[data-v-8950be04] {\\n  display: flex;\\n  align-self: center;\\n  justify-self: center;\\n  align-items: center;\\n  justify-content: center;\\n}\\n.app-navigation-entry[data-v-8950be04] {\\n  position: relative;\\n  display: flex;\\n  flex-shrink: 0;\\n  flex-wrap: wrap;\\n  box-sizing: border-box;\\n  width: 100%;\\n  min-height: 44px;\\n  transition: background-color var(--animation-quick) ease-in-out;\\n  transition: background-color .2s ease-in-out;\\n  border-radius: var(--border-radius-pill);\\n}\\n.app-navigation-entry-wrapper[data-v-8950be04] {\\n  position: relative;\\n  display: flex;\\n  flex-shrink: 0;\\n  flex-wrap: wrap;\\n  box-sizing: border-box;\\n  width: 100%;\\n}\\n.app-navigation-entry-wrapper.app-navigation-entry--collapsible:not(.app-navigation-entry--opened) > ul[data-v-8950be04] {\\n  display: none;\\n}\\n.app-navigation-entry.active[data-v-8950be04] {\\n  background-color: var(--color-primary-element) !important;\\n}\\n.app-navigation-entry.active .app-navigation-entry-link[data-v-8950be04],\\n.app-navigation-entry.active .app-navigation-entry-button[data-v-8950be04] {\\n  color: var(--color-primary-element-text) !important;\\n}\\n.app-navigation-entry[data-v-8950be04]:focus-within,\\n.app-navigation-entry[data-v-8950be04]:hover {\\n  background-color: var(--color-background-hover);\\n}\\n.app-navigation-entry.active .app-navigation-entry__children[data-v-8950be04],\\n.app-navigation-entry:focus-within .app-navigation-entry__children[data-v-8950be04],\\n.app-navigation-entry:hover .app-navigation-entry__children[data-v-8950be04] {\\n  background-color: var(--color-main-background);\\n}\\n.app-navigation-entry.active .app-navigation-entry__utils .app-navigation-entry__actions[data-v-8950be04],\\n.app-navigation-entry.app-navigation-entry--deleted .app-navigation-entry__utils .app-navigation-entry__actions[data-v-8950be04],\\n.app-navigation-entry:focus .app-navigation-entry__utils .app-navigation-entry__actions[data-v-8950be04],\\n.app-navigation-entry:focus-within .app-navigation-entry__utils .app-navigation-entry__actions[data-v-8950be04],\\n.app-navigation-entry:hover .app-navigation-entry__utils .app-navigation-entry__actions[data-v-8950be04] {\\n  display: inline-block;\\n}\\n.app-navigation-entry.app-navigation-entry--deleted > ul[data-v-8950be04] {\\n  display: none;\\n}\\n.app-navigation-entry:not(.app-navigation-entry--editing) .app-navigation-entry-link[data-v-8950be04],\\n.app-navigation-entry:not(.app-navigation-entry--editing) .app-navigation-entry-button[data-v-8950be04] {\\n  padding-right: 14px;\\n}\\n.app-navigation-entry .app-navigation-entry-link[data-v-8950be04],\\n.app-navigation-entry .app-navigation-entry-button[data-v-8950be04] {\\n  z-index: 100;\\n  display: flex;\\n  overflow: hidden;\\n  flex: 1 1 0;\\n  box-sizing: border-box;\\n  min-height: 44px;\\n  padding: 0;\\n  white-space: nowrap;\\n  color: var(--color-main-text);\\n  background-repeat: no-repeat;\\n  background-position: 14px center;\\n  background-size: 16px 16px;\\n  line-height: 44px;\\n}\\n.app-navigation-entry .app-navigation-entry-link .app-navigation-entry-icon[data-v-8950be04],\\n.app-navigation-entry .app-navigation-entry-button .app-navigation-entry-icon[data-v-8950be04] {\\n  display: flex;\\n  align-items: center;\\n  flex: 0 0 44px;\\n  justify-content: center;\\n  width: 44px;\\n  height: 44px;\\n  background-size: 16px 16px;\\n  background-repeat: no-repeat;\\n  background-position: 14px center;\\n}\\n.app-navigation-entry .app-navigation-entry-link .app-navigation-entry__name[data-v-8950be04],\\n.app-navigation-entry .app-navigation-entry-button .app-navigation-entry__name[data-v-8950be04] {\\n  overflow: hidden;\\n  max-width: 100%;\\n  white-space: nowrap;\\n  text-overflow: ellipsis;\\n}\\n.app-navigation-entry .app-navigation-entry-link .editingContainer[data-v-8950be04],\\n.app-navigation-entry .app-navigation-entry-button .editingContainer[data-v-8950be04] {\\n  width: calc(100% - 44px);\\n  margin: auto;\\n}\\n.app-navigation-entry__children[data-v-8950be04] {\\n  position: relative;\\n  display: flex;\\n  flex: 0 1 auto;\\n  flex-direction: column;\\n  width: 100%;\\n  gap: var(--default-grid-baseline, 4px);\\n}\\n.app-navigation-entry__children .app-navigation-entry[data-v-8950be04] {\\n  display: inline-flex;\\n  flex-wrap: wrap;\\n  padding-left: 16px;\\n}\\n.app-navigation-entry__deleted[data-v-8950be04] {\\n  display: inline-flex;\\n  flex: 1 1 0;\\n  padding-left: 30px !important;\\n}\\n.app-navigation-entry__deleted .app-navigation-entry__deleted-description[data-v-8950be04] {\\n  position: relative;\\n  overflow: hidden;\\n  flex: 1 1 0;\\n  white-space: nowrap;\\n  text-overflow: ellipsis;\\n  line-height: 44px;\\n}\\n.app-navigation-entry__utils[data-v-8950be04] {\\n  display: flex;\\n  min-width: 44px;\\n  align-items: center;\\n  flex: 0 1 auto;\\n  justify-content: flex-end;\\n}\\n.app-navigation-entry__utils.app-navigation-entry__utils--display-actions .action-item.app-navigation-entry__actions[data-v-8950be04] {\\n  display: inline-block;\\n}\\n.app-navigation-entry__utils .app-navigation-entry__counter-wrapper[data-v-8950be04] {\\n  margin-right: calc(var(--default-grid-baseline) * 3);\\n  display: flex;\\n  align-items: center;\\n  flex: 0 1 auto;\\n}\\n.app-navigation-entry__utils .action-item.app-navigation-entry__actions[data-v-8950be04] {\\n  display: none;\\n}\\n.app-navigation-entry--editing .app-navigation-entry-edit[data-v-8950be04] {\\n  z-index: 250;\\n  opacity: 1;\\n}\\n.app-navigation-entry--deleted .app-navigation-entry-deleted[data-v-8950be04] {\\n  z-index: 250;\\n  transform: translate(0);\\n}\\n.app-navigation-entry--pinned[data-v-8950be04] {\\n  order: 2;\\n  margin-top: auto;\\n}\\n.app-navigation-entry--pinned ~ .app-navigation-entry--pinned[data-v-8950be04] {\\n  margin-top: 0;\\n}\\n[data-themes*=highcontrast] .app-navigation-entry[data-v-8950be04]:active {\\n  background-color: var(--color-primary-element-light-hover) !important;\\n}\\n.app-navigation-new-item__name[data-v-8950be04] {\\n  overflow: hidden;\\n  max-width: 100%;\\n  white-space: nowrap;\\n  text-overflow: ellipsis;\\n  padding-left: 7px;\\n  font-size: 14px;\\n}\\n.newItemContainer[data-v-8950be04] {\\n  width: calc(100% - 44px);\\n  margin: auto;\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `@charset \"UTF-8\";\n.material-design-icon[data-v-1a960bef] {\n  display: flex;\n  align-self: center;\n  justify-self: center;\n  align-items: center;\n  justify-content: center;\n}\n.resource[data-v-1a960bef] {\n  display: flex;\n  align-items: center;\n  height: 44px;\n}\n.resource__button[data-v-1a960bef] {\n  width: 100% !important;\n  justify-content: flex-start !important;\n  padding: 0 !important;\n}\n.resource__button[data-v-1a960bef] .button-vue__wrapper {\n  justify-content: flex-start !important;\n}\n.resource__button[data-v-1a960bef] .button-vue__wrapper .button-vue__text {\n  font-weight: 400 !important;\n  margin-left: 2px !important;\n}\n.resource__icon[data-v-1a960bef] {\n  width: 32px;\n  height: 32px;\n  background-color: var(--color-text-maxcontrast);\n  border-radius: 50%;\n  display: flex;\n  align-items: center;\n  justify-content: center;\n}\n.resource__icon img[data-v-1a960bef] {\n  width: 16px;\n  height: 16px;\n  filter: var(--background-invert-if-dark);\n}\n/**\n * @copyright Copyright (c) 2019 John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @license GNU AGPL version 3 or any later version\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n.material-design-icon[data-v-19300848] {\n  display: flex;\n  align-self: center;\n  justify-self: center;\n  align-items: center;\n  justify-content: center;\n}\n.related-resources__header[data-v-19300848] {\n  margin: 0 0 10px 46px;\n}\n.related-resources__header h5[data-v-19300848] {\n  font-weight: 700;\n}\n.related-resources__header p[data-v-19300848] {\n  color: var(--color-text-maxcontrast);\n}\n`, \"\",{\"version\":3,\"sources\":[\"webpack://./node_modules/@nextcloud/vue/dist/assets/index-ab715d82.css\"],\"names\":[],\"mappings\":\"AAAA,gBAAgB;AAChB;EACE,aAAa;EACb,kBAAkB;EAClB,oBAAoB;EACpB,mBAAmB;EACnB,uBAAuB;AACzB;AACA;EACE,aAAa;EACb,mBAAmB;EACnB,YAAY;AACd;AACA;EACE,sBAAsB;EACtB,sCAAsC;EACtC,qBAAqB;AACvB;AACA;EACE,sCAAsC;AACxC;AACA;EACE,2BAA2B;EAC3B,2BAA2B;AAC7B;AACA;EACE,WAAW;EACX,YAAY;EACZ,+CAA+C;EAC/C,kBAAkB;EAClB,aAAa;EACb,mBAAmB;EACnB,uBAAuB;AACzB;AACA;EACE,WAAW;EACX,YAAY;EACZ,wCAAwC;AAC1C;AACA;;;;;;;;;;;;;;;;;;;;EAoBE;AACF;EACE,aAAa;EACb,kBAAkB;EAClB,oBAAoB;EACpB,mBAAmB;EACnB,uBAAuB;AACzB;AACA;EACE,qBAAqB;AACvB;AACA;EACE,gBAAgB;AAClB;AACA;EACE,oCAAoC;AACtC\",\"sourcesContent\":[\"@charset \\\"UTF-8\\\";\\n.material-design-icon[data-v-1a960bef] {\\n  display: flex;\\n  align-self: center;\\n  justify-self: center;\\n  align-items: center;\\n  justify-content: center;\\n}\\n.resource[data-v-1a960bef] {\\n  display: flex;\\n  align-items: center;\\n  height: 44px;\\n}\\n.resource__button[data-v-1a960bef] {\\n  width: 100% !important;\\n  justify-content: flex-start !important;\\n  padding: 0 !important;\\n}\\n.resource__button[data-v-1a960bef] .button-vue__wrapper {\\n  justify-content: flex-start !important;\\n}\\n.resource__button[data-v-1a960bef] .button-vue__wrapper .button-vue__text {\\n  font-weight: 400 !important;\\n  margin-left: 2px !important;\\n}\\n.resource__icon[data-v-1a960bef] {\\n  width: 32px;\\n  height: 32px;\\n  background-color: var(--color-text-maxcontrast);\\n  border-radius: 50%;\\n  display: flex;\\n  align-items: center;\\n  justify-content: center;\\n}\\n.resource__icon img[data-v-1a960bef] {\\n  width: 16px;\\n  height: 16px;\\n  filter: var(--background-invert-if-dark);\\n}\\n/**\\n * @copyright Copyright (c) 2019 John Molakvoæ <skjnldsv@protonmail.com>\\n *\\n * @author John Molakvoæ <skjnldsv@protonmail.com>\\n *\\n * @license GNU AGPL version 3 or any later version\\n *\\n * This program is free software: you can redistribute it and/or modify\\n * it under the terms of the GNU Affero General Public License as\\n * published by the Free Software Foundation, either version 3 of the\\n * License, or (at your option) any later version.\\n *\\n * This program is distributed in the hope that it will be useful,\\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\\n * GNU Affero General Public License for more details.\\n *\\n * You should have received a copy of the GNU Affero General Public License\\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\\n *\\n */\\n.material-design-icon[data-v-19300848] {\\n  display: flex;\\n  align-self: center;\\n  justify-self: center;\\n  align-items: center;\\n  justify-content: center;\\n}\\n.related-resources__header[data-v-19300848] {\\n  margin: 0 0 10px 46px;\\n}\\n.related-resources__header h5[data-v-19300848] {\\n  font-weight: 700;\\n}\\n.related-resources__header p[data-v-19300848] {\\n  color: var(--color-text-maxcontrast);\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `@charset \"UTF-8\";\n/**\n * @copyright Copyright (c) 2019 John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @license GNU AGPL version 3 or any later version\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n.material-design-icon[data-v-55ab76f1] {\n  display: flex;\n  align-self: center;\n  justify-self: center;\n  align-items: center;\n  justify-content: center;\n}\n.user-bubble__wrapper[data-v-55ab76f1] {\n  display: inline-block;\n  vertical-align: middle;\n  min-width: 0;\n  max-width: 100%;\n}\n.user-bubble__content[data-v-55ab76f1] {\n  display: inline-flex;\n  max-width: 100%;\n  background-color: var(--color-background-dark);\n}\n.user-bubble__content--primary[data-v-55ab76f1] {\n  color: var(--color-primary-element-text);\n  background-color: var(--color-primary-element);\n}\n.user-bubble__content[data-v-55ab76f1] > :last-child {\n  padding-right: 8px;\n}\n.user-bubble__avatar[data-v-55ab76f1] {\n  align-self: center;\n}\n.user-bubble__name[data-v-55ab76f1] {\n  overflow: hidden;\n  white-space: nowrap;\n  text-overflow: ellipsis;\n}\n.user-bubble__name[data-v-55ab76f1],\n.user-bubble__secondary[data-v-55ab76f1] {\n  padding: 0 0 0 4px;\n}\n`, \"\",{\"version\":3,\"sources\":[\"webpack://./node_modules/@nextcloud/vue/dist/assets/index-c221fe05.css\"],\"names\":[],\"mappings\":\"AAAA,gBAAgB;AAChB;;;;;;;;;;;;;;;;;;;;EAoBE;AACF;EACE,aAAa;EACb,kBAAkB;EAClB,oBAAoB;EACpB,mBAAmB;EACnB,uBAAuB;AACzB;AACA;EACE,qBAAqB;EACrB,sBAAsB;EACtB,YAAY;EACZ,eAAe;AACjB;AACA;EACE,oBAAoB;EACpB,eAAe;EACf,8CAA8C;AAChD;AACA;EACE,wCAAwC;EACxC,8CAA8C;AAChD;AACA;EACE,kBAAkB;AACpB;AACA;EACE,kBAAkB;AACpB;AACA;EACE,gBAAgB;EAChB,mBAAmB;EACnB,uBAAuB;AACzB;AACA;;EAEE,kBAAkB;AACpB\",\"sourcesContent\":[\"@charset \\\"UTF-8\\\";\\n/**\\n * @copyright Copyright (c) 2019 John Molakvoæ <skjnldsv@protonmail.com>\\n *\\n * @author John Molakvoæ <skjnldsv@protonmail.com>\\n *\\n * @license GNU AGPL version 3 or any later version\\n *\\n * This program is free software: you can redistribute it and/or modify\\n * it under the terms of the GNU Affero General Public License as\\n * published by the Free Software Foundation, either version 3 of the\\n * License, or (at your option) any later version.\\n *\\n * This program is distributed in the hope that it will be useful,\\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\\n * GNU Affero General Public License for more details.\\n *\\n * You should have received a copy of the GNU Affero General Public License\\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\\n *\\n */\\n.material-design-icon[data-v-55ab76f1] {\\n  display: flex;\\n  align-self: center;\\n  justify-self: center;\\n  align-items: center;\\n  justify-content: center;\\n}\\n.user-bubble__wrapper[data-v-55ab76f1] {\\n  display: inline-block;\\n  vertical-align: middle;\\n  min-width: 0;\\n  max-width: 100%;\\n}\\n.user-bubble__content[data-v-55ab76f1] {\\n  display: inline-flex;\\n  max-width: 100%;\\n  background-color: var(--color-background-dark);\\n}\\n.user-bubble__content--primary[data-v-55ab76f1] {\\n  color: var(--color-primary-element-text);\\n  background-color: var(--color-primary-element);\\n}\\n.user-bubble__content[data-v-55ab76f1] > :last-child {\\n  padding-right: 8px;\\n}\\n.user-bubble__avatar[data-v-55ab76f1] {\\n  align-self: center;\\n}\\n.user-bubble__name[data-v-55ab76f1] {\\n  overflow: hidden;\\n  white-space: nowrap;\\n  text-overflow: ellipsis;\\n}\\n.user-bubble__name[data-v-55ab76f1],\\n.user-bubble__secondary[data-v-55ab76f1] {\\n  padding: 0 0 0 4px;\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `@charset \"UTF-8\";\n/**\n * @copyright Copyright (c) 2019 John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @license GNU AGPL version 3 or any later version\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n.material-design-icon[data-v-00e861ef] {\n  display: flex;\n  align-self: center;\n  justify-self: center;\n  align-items: center;\n  justify-content: center;\n}\n.item-list__entry[data-v-00e861ef] {\n  display: flex;\n  align-items: flex-start;\n  position: relative;\n  padding: 8px;\n}\n.item-list__entry[data-v-00e861ef]:hover,\n.item-list__entry[data-v-00e861ef]:focus {\n  background-color: var(--color-background-hover);\n  border-radius: var(--border-radius-large);\n}\n.item-list__entry .item-avatar[data-v-00e861ef] {\n  position: relative;\n  margin-top: auto;\n  margin-bottom: auto;\n}\n.item-list__entry .item__details[data-v-00e861ef] {\n  padding-left: 8px;\n  max-height: 44px;\n  flex-grow: 1;\n  overflow: hidden;\n  display: flex;\n  flex-direction: column;\n}\n.item-list__entry .item__details h3[data-v-00e861ef],\n.item-list__entry .item__details .message[data-v-00e861ef] {\n  white-space: nowrap;\n  overflow: hidden;\n  text-overflow: ellipsis;\n}\n.item-list__entry .item__details .message span[data-v-00e861ef] {\n  width: 10px;\n  display: inline-block;\n  margin-bottom: -3px;\n}\n.item-list__entry .item__details h3[data-v-00e861ef] {\n  font-size: 100%;\n  margin: 0;\n}\n.item-list__entry .item__details .message[data-v-00e861ef] {\n  width: 100%;\n  color: var(--color-text-maxcontrast);\n}\n.item-list__entry .item-icon[data-v-00e861ef] {\n  position: relative;\n  width: 14px;\n  height: 14px;\n  margin: 27px -3px 0 -7px;\n}\n.item-list__entry button.primary[data-v-00e861ef] {\n  padding: 21px;\n  margin: 0;\n}\n`, \"\",{\"version\":3,\"sources\":[\"webpack://./node_modules/@nextcloud/vue/dist/assets/index-e7eadba7.css\"],\"names\":[],\"mappings\":\"AAAA,gBAAgB;AAChB;;;;;;;;;;;;;;;;;;;;EAoBE;AACF;EACE,aAAa;EACb,kBAAkB;EAClB,oBAAoB;EACpB,mBAAmB;EACnB,uBAAuB;AACzB;AACA;EACE,aAAa;EACb,uBAAuB;EACvB,kBAAkB;EAClB,YAAY;AACd;AACA;;EAEE,+CAA+C;EAC/C,yCAAyC;AAC3C;AACA;EACE,kBAAkB;EAClB,gBAAgB;EAChB,mBAAmB;AACrB;AACA;EACE,iBAAiB;EACjB,gBAAgB;EAChB,YAAY;EACZ,gBAAgB;EAChB,aAAa;EACb,sBAAsB;AACxB;AACA;;EAEE,mBAAmB;EACnB,gBAAgB;EAChB,uBAAuB;AACzB;AACA;EACE,WAAW;EACX,qBAAqB;EACrB,mBAAmB;AACrB;AACA;EACE,eAAe;EACf,SAAS;AACX;AACA;EACE,WAAW;EACX,oCAAoC;AACtC;AACA;EACE,kBAAkB;EAClB,WAAW;EACX,YAAY;EACZ,wBAAwB;AAC1B;AACA;EACE,aAAa;EACb,SAAS;AACX\",\"sourcesContent\":[\"@charset \\\"UTF-8\\\";\\n/**\\n * @copyright Copyright (c) 2019 John Molakvoæ <skjnldsv@protonmail.com>\\n *\\n * @author John Molakvoæ <skjnldsv@protonmail.com>\\n *\\n * @license GNU AGPL version 3 or any later version\\n *\\n * This program is free software: you can redistribute it and/or modify\\n * it under the terms of the GNU Affero General Public License as\\n * published by the Free Software Foundation, either version 3 of the\\n * License, or (at your option) any later version.\\n *\\n * This program is distributed in the hope that it will be useful,\\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\\n * GNU Affero General Public License for more details.\\n *\\n * You should have received a copy of the GNU Affero General Public License\\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\\n *\\n */\\n.material-design-icon[data-v-00e861ef] {\\n  display: flex;\\n  align-self: center;\\n  justify-self: center;\\n  align-items: center;\\n  justify-content: center;\\n}\\n.item-list__entry[data-v-00e861ef] {\\n  display: flex;\\n  align-items: flex-start;\\n  position: relative;\\n  padding: 8px;\\n}\\n.item-list__entry[data-v-00e861ef]:hover,\\n.item-list__entry[data-v-00e861ef]:focus {\\n  background-color: var(--color-background-hover);\\n  border-radius: var(--border-radius-large);\\n}\\n.item-list__entry .item-avatar[data-v-00e861ef] {\\n  position: relative;\\n  margin-top: auto;\\n  margin-bottom: auto;\\n}\\n.item-list__entry .item__details[data-v-00e861ef] {\\n  padding-left: 8px;\\n  max-height: 44px;\\n  flex-grow: 1;\\n  overflow: hidden;\\n  display: flex;\\n  flex-direction: column;\\n}\\n.item-list__entry .item__details h3[data-v-00e861ef],\\n.item-list__entry .item__details .message[data-v-00e861ef] {\\n  white-space: nowrap;\\n  overflow: hidden;\\n  text-overflow: ellipsis;\\n}\\n.item-list__entry .item__details .message span[data-v-00e861ef] {\\n  width: 10px;\\n  display: inline-block;\\n  margin-bottom: -3px;\\n}\\n.item-list__entry .item__details h3[data-v-00e861ef] {\\n  font-size: 100%;\\n  margin: 0;\\n}\\n.item-list__entry .item__details .message[data-v-00e861ef] {\\n  width: 100%;\\n  color: var(--color-text-maxcontrast);\\n}\\n.item-list__entry .item-icon[data-v-00e861ef] {\\n  position: relative;\\n  width: 14px;\\n  height: 14px;\\n  margin: 27px -3px 0 -7px;\\n}\\n.item-list__entry button.primary[data-v-00e861ef] {\\n  padding: 21px;\\n  margin: 0;\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `@charset \"UTF-8\";\n/**\n * @copyright Copyright (c) 2019 John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @license GNU AGPL version 3 or any later version\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n.material-design-icon[data-v-91580127] {\n  display: flex;\n  align-self: center;\n  justify-self: center;\n  align-items: center;\n  justify-content: center;\n}\n.app-navigation-entry__icon-bullet[data-v-91580127] {\n  display: block;\n  padding: 15px;\n}\n.app-navigation-entry__icon-bullet div[data-v-91580127] {\n  width: 14px;\n  height: 14px;\n  cursor: pointer;\n  transition: background .1s ease-in-out;\n  border: none;\n  border-radius: 50%;\n}\n`, \"\",{\"version\":3,\"sources\":[\"webpack://./node_modules/@nextcloud/vue/dist/assets/index-fc61f2d8.css\"],\"names\":[],\"mappings\":\"AAAA,gBAAgB;AAChB;;;;;;;;;;;;;;;;;;;;EAoBE;AACF;EACE,aAAa;EACb,kBAAkB;EAClB,oBAAoB;EACpB,mBAAmB;EACnB,uBAAuB;AACzB;AACA;EACE,cAAc;EACd,aAAa;AACf;AACA;EACE,WAAW;EACX,YAAY;EACZ,eAAe;EACf,sCAAsC;EACtC,YAAY;EACZ,kBAAkB;AACpB\",\"sourcesContent\":[\"@charset \\\"UTF-8\\\";\\n/**\\n * @copyright Copyright (c) 2019 John Molakvoæ <skjnldsv@protonmail.com>\\n *\\n * @author John Molakvoæ <skjnldsv@protonmail.com>\\n *\\n * @license GNU AGPL version 3 or any later version\\n *\\n * This program is free software: you can redistribute it and/or modify\\n * it under the terms of the GNU Affero General Public License as\\n * published by the Free Software Foundation, either version 3 of the\\n * License, or (at your option) any later version.\\n *\\n * This program is distributed in the hope that it will be useful,\\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\\n * GNU Affero General Public License for more details.\\n *\\n * You should have received a copy of the GNU Affero General Public License\\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\\n *\\n */\\n.material-design-icon[data-v-91580127] {\\n  display: flex;\\n  align-self: center;\\n  justify-self: center;\\n  align-items: center;\\n  justify-content: center;\\n}\\n.app-navigation-entry__icon-bullet[data-v-91580127] {\\n  display: block;\\n  padding: 15px;\\n}\\n.app-navigation-entry__icon-bullet div[data-v-91580127] {\\n  width: 14px;\\n  height: 14px;\\n  cursor: pointer;\\n  transition: background .1s ease-in-out;\\n  border: none;\\n  border-radius: 50%;\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `#app-dashboard[data-v-9fd44988]{width:100%;min-height:100%;background-size:cover;background-position:center center;background-repeat:no-repeat;background-attachment:fixed}#app-dashboard>h2[data-v-9fd44988]{color:var(--color-primary-element-text);text-align:center;font-size:32px;line-height:130%;padding:1rem 0}.panels[data-v-9fd44988]{width:auto;margin:auto;max-width:1800px;display:flex;justify-content:center;flex-direction:row;align-items:flex-start;flex-wrap:wrap}.panel[data-v-9fd44988],.panels>div[data-v-9fd44988]{width:320px;max-width:100%;margin:16px;align-self:stretch;background-color:var(--color-main-background-blur);-webkit-backdrop-filter:var(--filter-background-blur);backdrop-filter:var(--filter-background-blur);border-radius:var(--border-radius-rounded)}#body-user.theme--highcontrast .panel[data-v-9fd44988],#body-user.theme--highcontrast .panels>div[data-v-9fd44988]{border:2px solid var(--color-border)}.panel.sortable-ghost[data-v-9fd44988],.panels>div.sortable-ghost[data-v-9fd44988]{opacity:.1}.panel>.panel--header[data-v-9fd44988],.panels>div>.panel--header[data-v-9fd44988]{display:flex;z-index:1;top:50px;padding:16px;cursor:grab}.panel>.panel--header[data-v-9fd44988],.panel>.panel--header[data-v-9fd44988] *,.panels>div>.panel--header[data-v-9fd44988],.panels>div>.panel--header[data-v-9fd44988] *{-webkit-touch-callout:none;-webkit-user-select:none;-khtml-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.panel>.panel--header[data-v-9fd44988]:active,.panels>div>.panel--header[data-v-9fd44988]:active{cursor:grabbing}.panel>.panel--header a[data-v-9fd44988],.panels>div>.panel--header a[data-v-9fd44988]{flex-grow:1}.panel>.panel--header>h2[data-v-9fd44988],.panels>div>.panel--header>h2[data-v-9fd44988]{display:block;align-items:center;flex-grow:1;margin:0;font-size:20px;line-height:24px;font-weight:bold;padding:16px 8px;height:56px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;cursor:grab}.panel>.panel--header>h2 span[data-v-9fd44988],.panels>div>.panel--header>h2 span[data-v-9fd44988]{background-size:32px;width:32px;height:32px;margin-right:16px;background-position:center;float:left;margin-top:-6px}.panel>.panel--content[data-v-9fd44988],.panels>div>.panel--content[data-v-9fd44988]{margin:0 16px 16px 16px;height:424px;overflow:visible}@media only screen and (max-width: 709px){.panel>.panel--content[data-v-9fd44988],.panels>div>.panel--content[data-v-9fd44988]{height:auto}}.footer[data-v-9fd44988]{display:flex;justify-content:center;transition:bottom var(--animation-slow) ease-in-out;padding:1rem 0}.edit-panels[data-v-9fd44988]{display:inline-block;margin:auto;background-position:16px center;padding:12px 16px;padding-left:36px;border-radius:var(--border-radius-pill);max-width:200px;opacity:1;text-align:center}.button[data-v-9fd44988],.button-vue[data-v-9fd44988],.edit-panels[data-v-9fd44988],.statuses[data-v-9fd44988] .action-item .action-item__menutoggle,.statuses[data-v-9fd44988] .action-item.action-item--open .action-item__menutoggle{background-color:var(--color-main-background-blur);-webkit-backdrop-filter:var(--filter-background-blur);backdrop-filter:var(--filter-background-blur);opacity:1 !important}.button[data-v-9fd44988]:hover,.button[data-v-9fd44988]:focus,.button[data-v-9fd44988]:active,.button-vue[data-v-9fd44988]:hover,.button-vue[data-v-9fd44988]:focus,.button-vue[data-v-9fd44988]:active,.edit-panels[data-v-9fd44988]:hover,.edit-panels[data-v-9fd44988]:focus,.edit-panels[data-v-9fd44988]:active,.statuses[data-v-9fd44988] .action-item .action-item__menutoggle:hover,.statuses[data-v-9fd44988] .action-item .action-item__menutoggle:focus,.statuses[data-v-9fd44988] .action-item .action-item__menutoggle:active,.statuses[data-v-9fd44988] .action-item.action-item--open .action-item__menutoggle:hover,.statuses[data-v-9fd44988] .action-item.action-item--open .action-item__menutoggle:focus,.statuses[data-v-9fd44988] .action-item.action-item--open .action-item__menutoggle:active{background-color:var(--color-background-hover) !important}.button[data-v-9fd44988]:focus-visible,.button-vue[data-v-9fd44988]:focus-visible,.edit-panels[data-v-9fd44988]:focus-visible,.statuses[data-v-9fd44988] .action-item .action-item__menutoggle:focus-visible,.statuses[data-v-9fd44988] .action-item.action-item--open .action-item__menutoggle:focus-visible{box-shadow:0 0 0 4px var(--color-main-background) !important;outline:2px solid var(--color-main-text) !important}.modal__content[data-v-9fd44988]{padding:32px 16px;text-align:center}.modal__content ol[data-v-9fd44988]{display:flex;flex-direction:row;justify-content:center;list-style-type:none;padding-bottom:16px}.modal__content li label[data-v-9fd44988]{position:relative;display:block;padding:48px 16px 14px 16px;margin:8px;width:140px;background-color:var(--color-background-hover);border:2px solid var(--color-main-background);border-radius:var(--border-radius-large);text-align:left;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.modal__content li label span[data-v-9fd44988]{position:absolute;top:16px;width:24px;height:24px;background-size:24px}.modal__content li label[data-v-9fd44988]:hover{border-color:var(--color-primary-element)}.modal__content li:not(.panel-status) label span[data-v-9fd44988]{filter:var(--background-invert-if-dark)}.modal__content li input[type=checkbox].checkbox+label[data-v-9fd44988]:before{position:absolute;right:12px;top:16px}.modal__content li input:focus+label[data-v-9fd44988]{border-color:var(--color-primary-element)}.modal__content h3[data-v-9fd44988]{font-weight:bold}.modal__content h3[data-v-9fd44988]:not(:first-of-type){margin-top:64px}.modal__content .button[data-v-9fd44988]{display:inline-block;padding:10px 16px;margin:0}.modal__content p[data-v-9fd44988]{max-width:650px;margin:0 auto}.modal__content p a[data-v-9fd44988]:hover,.modal__content p a[data-v-9fd44988]:focus{border-bottom:2px solid var(--color-border)}.modal__content .credits--end[data-v-9fd44988]{padding-bottom:32px;color:var(--color-text-maxcontrast)}.modal__content .credits--end a[data-v-9fd44988]{color:var(--color-text-maxcontrast)}.flip-list-move[data-v-9fd44988]{transition:transform var(--animation-slow)}.statuses[data-v-9fd44988]{display:flex;flex-direction:row;justify-content:center;flex-wrap:wrap;margin-bottom:36px}.statuses>li[data-v-9fd44988]{margin:8px}`, \"\",{\"version\":3,\"sources\":[\"webpack://./apps/dashboard/src/DashboardApp.vue\"],\"names\":[],\"mappings\":\"AACA,gCACC,UAAA,CACA,eAAA,CACA,qBAAA,CACA,iCAAA,CACA,2BAAA,CACA,2BAAA,CAEA,mCACC,uCAAA,CACA,iBAAA,CACA,cAAA,CACA,gBAAA,CACA,cAAA,CAIF,yBACC,UAAA,CACA,WAAA,CACA,gBAAA,CACA,YAAA,CACA,sBAAA,CACA,kBAAA,CACA,sBAAA,CACA,cAAA,CAGD,qDACC,WAAA,CACA,cAAA,CACA,WAAA,CACA,kBAAA,CACA,kDAAA,CACA,qDAAA,CACA,6CAAA,CACA,0CAAA,CAEA,mHACC,oCAAA,CAGD,mFACE,UAAA,CAGF,mFACC,YAAA,CACA,SAAA,CACA,QAAA,CACA,YAAA,CACA,WAAA,CAEA,0KACC,0BAAA,CACA,wBAAA,CACA,uBAAA,CACA,qBAAA,CACA,oBAAA,CACA,gBAAA,CAGD,iGACC,eAAA,CAGD,uFACC,WAAA,CAGD,yFACC,aAAA,CACA,kBAAA,CACA,WAAA,CACA,QAAA,CACA,cAAA,CACA,gBAAA,CACA,gBAAA,CACA,gBAAA,CACA,WAAA,CACA,kBAAA,CACA,eAAA,CACA,sBAAA,CACA,WAAA,CACA,mGACC,oBAAA,CACA,UAAA,CACA,WAAA,CACA,iBAAA,CACA,0BAAA,CACA,UAAA,CACA,eAAA,CAKH,qFACC,uBAAA,CACA,YAAA,CAEA,gBAAA,CAID,0CACC,qFACC,WAAA,CAAA,CAKH,yBACC,YAAA,CACA,sBAAA,CACA,mDAAA,CACA,cAAA,CAGD,8BACC,oBAAA,CACA,WAAA,CACA,+BAAA,CACA,iBAAA,CACA,iBAAA,CACA,uCAAA,CACA,eAAA,CACA,SAAA,CACA,iBAAA,CAGD,wOAKC,kDAAA,CACA,qDAAA,CACA,6CAAA,CACA,oBAAA,CAEA,uxBAGC,yDAAA,CAED,8SACC,4DAAA,CACA,mDAAA,CAIF,iCACC,iBAAA,CACA,iBAAA,CAEA,oCACC,YAAA,CACA,kBAAA,CACA,sBAAA,CACA,oBAAA,CACA,mBAAA,CAGA,0CACC,iBAAA,CACA,aAAA,CACA,2BAAA,CACA,UAAA,CACA,WAAA,CACA,8CAAA,CACA,6CAAA,CACA,wCAAA,CACA,eAAA,CACA,eAAA,CACA,sBAAA,CACA,kBAAA,CAEA,+CACC,iBAAA,CACA,QAAA,CACA,UAAA,CACA,WAAA,CACA,oBAAA,CAGD,gDACC,yCAAA,CAKF,kEACC,uCAAA,CAGD,+EACC,iBAAA,CACA,UAAA,CACA,QAAA,CAGD,sDACC,yCAAA,CAIF,oCACC,gBAAA,CAEA,wDACC,eAAA,CAKF,yCACC,oBAAA,CACA,iBAAA,CACA,QAAA,CAGD,mCACC,eAAA,CACA,aAAA,CAEA,sFAEC,2CAAA,CAIF,+CACC,mBAAA,CACA,mCAAA,CAEA,iDACC,mCAAA,CAKH,iCACC,0CAAA,CAGD,2BACC,YAAA,CACA,kBAAA,CACA,sBAAA,CACA,cAAA,CACA,kBAAA,CAEA,8BACC,UAAA\",\"sourcesContent\":[\"\\n#app-dashboard {\\n\\twidth: 100%;\\n\\tmin-height: 100%;\\n\\tbackground-size: cover;\\n\\tbackground-position: center center;\\n\\tbackground-repeat: no-repeat;\\n\\tbackground-attachment: fixed;\\n\\n\\t> h2 {\\n\\t\\tcolor: var(--color-primary-element-text);\\n\\t\\ttext-align: center;\\n\\t\\tfont-size: 32px;\\n\\t\\tline-height: 130%;\\n\\t\\tpadding: 1rem 0;\\n\\t}\\n}\\n\\n.panels {\\n\\twidth: auto;\\n\\tmargin: auto;\\n\\tmax-width: 1800px;\\n\\tdisplay: flex;\\n\\tjustify-content: center;\\n\\tflex-direction: row;\\n\\talign-items: flex-start;\\n\\tflex-wrap: wrap;\\n}\\n\\n.panel, .panels > div {\\n\\twidth: 320px;\\n\\tmax-width: 100%;\\n\\tmargin: 16px;\\n\\talign-self: stretch;\\n\\tbackground-color: var(--color-main-background-blur);\\n\\t-webkit-backdrop-filter: var(--filter-background-blur);\\n\\tbackdrop-filter: var(--filter-background-blur);\\n\\tborder-radius: var(--border-radius-rounded);\\n\\n\\t#body-user.theme--highcontrast & {\\n\\t\\tborder: 2px solid var(--color-border);\\n\\t}\\n\\n\\t&.sortable-ghost {\\n\\t\\t opacity: 0.1;\\n\\t}\\n\\n\\t& > .panel--header {\\n\\t\\tdisplay: flex;\\n\\t\\tz-index: 1;\\n\\t\\ttop: 50px;\\n\\t\\tpadding: 16px;\\n\\t\\tcursor: grab;\\n\\n\\t\\t&, ::v-deep * {\\n\\t\\t\\t-webkit-touch-callout: none;\\n\\t\\t\\t-webkit-user-select: none;\\n\\t\\t\\t-khtml-user-select: none;\\n\\t\\t\\t-moz-user-select: none;\\n\\t\\t\\t-ms-user-select: none;\\n\\t\\t\\tuser-select: none;\\n\\t\\t}\\n\\n\\t\\t&:active {\\n\\t\\t\\tcursor: grabbing;\\n\\t\\t}\\n\\n\\t\\ta {\\n\\t\\t\\tflex-grow: 1;\\n\\t\\t}\\n\\n\\t\\t> h2 {\\n\\t\\t\\tdisplay: block;\\n\\t\\t\\talign-items: center;\\n\\t\\t\\tflex-grow: 1;\\n\\t\\t\\tmargin: 0;\\n\\t\\t\\tfont-size: 20px;\\n\\t\\t\\tline-height: 24px;\\n\\t\\t\\tfont-weight: bold;\\n\\t\\t\\tpadding: 16px 8px;\\n\\t\\t\\theight: 56px;\\n\\t\\t\\twhite-space: nowrap;\\n\\t\\t\\toverflow: hidden;\\n\\t\\t\\ttext-overflow: ellipsis;\\n\\t\\t\\tcursor: grab;\\n\\t\\t\\tspan {\\n\\t\\t\\t\\tbackground-size: 32px;\\n\\t\\t\\t\\twidth: 32px;\\n\\t\\t\\t\\theight: 32px;\\n\\t\\t\\t\\tmargin-right: 16px;\\n\\t\\t\\t\\tbackground-position: center;\\n\\t\\t\\t\\tfloat: left;\\n\\t\\t\\t\\tmargin-top: -6px;\\n\\t\\t\\t}\\n\\t\\t}\\n\\t}\\n\\n\\t& > .panel--content {\\n\\t\\tmargin: 0 16px 16px 16px;\\n\\t\\theight: 424px;\\n\\t\\t// We specifically do not want scrollbars inside widgets\\n\\t\\toverflow: visible;\\n\\t}\\n\\n\\t// No need to extend height of widgets if only one column is shown\\n\\t@media only screen and (max-width: 709px) {\\n\\t\\t& > .panel--content {\\n\\t\\t\\theight: auto;\\n\\t\\t}\\n\\t}\\n}\\n\\n.footer {\\n\\tdisplay: flex;\\n\\tjustify-content: center;\\n\\ttransition: bottom var(--animation-slow) ease-in-out;\\n\\tpadding: 1rem 0;\\n}\\n\\n.edit-panels {\\n\\tdisplay: inline-block;\\n\\tmargin:auto;\\n\\tbackground-position: 16px center;\\n\\tpadding: 12px 16px;\\n\\tpadding-left: 36px;\\n\\tborder-radius: var(--border-radius-pill);\\n\\tmax-width: 200px;\\n\\topacity: 1;\\n\\ttext-align: center;\\n}\\n\\n.button,\\n.button-vue,\\n.edit-panels,\\n.statuses ::v-deep .action-item .action-item__menutoggle,\\n.statuses ::v-deep .action-item.action-item--open .action-item__menutoggle {\\n\\tbackground-color: var(--color-main-background-blur);\\n\\t-webkit-backdrop-filter: var(--filter-background-blur);\\n\\tbackdrop-filter: var(--filter-background-blur);\\n\\topacity: 1 !important;\\n\\n\\t&:hover,\\n\\t&:focus,\\n\\t&:active {\\n\\t\\tbackground-color: var(--color-background-hover)!important;\\n\\t}\\n\\t&:focus-visible {\\n\\t\\tbox-shadow: 0 0 0 4px var(--color-main-background) !important;\\n\\t\\toutline: 2px solid var(--color-main-text) !important;\\n\\t}\\n}\\n\\n.modal__content {\\n\\tpadding: 32px 16px;\\n\\ttext-align: center;\\n\\n\\tol {\\n\\t\\tdisplay: flex;\\n\\t\\tflex-direction: row;\\n\\t\\tjustify-content: center;\\n\\t\\tlist-style-type: none;\\n\\t\\tpadding-bottom: 16px;\\n\\t}\\n\\tli {\\n\\t\\tlabel {\\n\\t\\t\\tposition: relative;\\n\\t\\t\\tdisplay: block;\\n\\t\\t\\tpadding: 48px 16px 14px 16px;\\n\\t\\t\\tmargin: 8px;\\n\\t\\t\\twidth: 140px;\\n\\t\\t\\tbackground-color: var(--color-background-hover);\\n\\t\\t\\tborder: 2px solid var(--color-main-background);\\n\\t\\t\\tborder-radius: var(--border-radius-large);\\n\\t\\t\\ttext-align: left;\\n\\t\\t\\toverflow: hidden;\\n\\t\\t\\ttext-overflow: ellipsis;\\n\\t\\t\\twhite-space: nowrap;\\n\\n\\t\\t\\tspan {\\n\\t\\t\\t\\tposition: absolute;\\n\\t\\t\\t\\ttop: 16px;\\n\\t\\t\\t\\twidth: 24px;\\n\\t\\t\\t\\theight: 24px;\\n\\t\\t\\t\\tbackground-size: 24px;\\n\\t\\t\\t}\\n\\n\\t\\t\\t&:hover {\\n\\t\\t\\t\\tborder-color: var(--color-primary-element);\\n\\t\\t\\t}\\n\\t\\t}\\n\\n\\t\\t// Do not invert status icons\\n\\t\\t&:not(.panel-status) label span {\\n\\t\\t\\tfilter: var(--background-invert-if-dark);\\n\\t\\t}\\n\\n\\t\\tinput[type='checkbox'].checkbox + label:before {\\n\\t\\t\\tposition: absolute;\\n\\t\\t\\tright: 12px;\\n\\t\\t\\ttop: 16px;\\n\\t\\t}\\n\\n\\t\\tinput:focus + label {\\n\\t\\t\\tborder-color: var(--color-primary-element);\\n\\t\\t}\\n\\t}\\n\\n\\th3 {\\n\\t\\tfont-weight: bold;\\n\\n\\t\\t&:not(:first-of-type) {\\n\\t\\t\\tmargin-top: 64px;\\n\\t\\t}\\n\\t}\\n\\n\\t// Adjust design of 'Get more widgets' button\\n\\t.button {\\n\\t\\tdisplay: inline-block;\\n\\t\\tpadding: 10px 16px;\\n\\t\\tmargin: 0;\\n\\t}\\n\\n\\tp {\\n\\t\\tmax-width: 650px;\\n\\t\\tmargin: 0 auto;\\n\\n\\t\\ta:hover,\\n\\t\\ta:focus {\\n\\t\\t\\tborder-bottom: 2px solid var(--color-border);\\n\\t\\t}\\n\\t}\\n\\n\\t.credits--end {\\n\\t\\tpadding-bottom: 32px;\\n\\t\\tcolor: var(--color-text-maxcontrast);\\n\\n\\t\\ta {\\n\\t\\t\\tcolor: var(--color-text-maxcontrast);\\n\\t\\t}\\n\\t}\\n}\\n\\n.flip-list-move {\\n\\ttransition: transform var(--animation-slow);\\n}\\n\\n.statuses {\\n\\tdisplay: flex;\\n\\tflex-direction: row;\\n\\tjustify-content: center;\\n\\tflex-wrap: wrap;\\n\\tmargin-bottom: 36px;\\n\\n\\t& > li {\\n\\t\\tmargin: 8px;\\n\\t}\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `\nhtml, body {\n\tbackground-attachment: fixed;\n}\n#body-user #header {\n\tposition: fixed;\n}\n#content {\n\toverflow: auto;\n}\n`, \"\",{\"version\":3,\"sources\":[\"webpack://./apps/dashboard/src/DashboardApp.vue\"],\"names\":[],\"mappings\":\";AA4sBA;CACA,4BAAA;AACA;AAEA;CACA,eAAA;AACA;AAEA;CACA,cAAA;AACA\",\"sourcesContent\":[\"<template>\\n\\t<div id=\\\"app-dashboard\\\">\\n\\t\\t<h2>{{ greeting.text }}</h2>\\n\\t\\t<ul class=\\\"statuses\\\">\\n\\t\\t\\t<li v-for=\\\"status in sortedRegisteredStatus\\\"\\n\\t\\t\\t\\t:id=\\\"'status-' + status\\\"\\n\\t\\t\\t\\t:key=\\\"status\\\">\\n\\t\\t\\t\\t<div :ref=\\\"'status-' + status\\\" />\\n\\t\\t\\t</li>\\n\\t\\t</ul>\\n\\n\\t\\t<Draggable v-model=\\\"layout\\\"\\n\\t\\t\\tclass=\\\"panels\\\"\\n\\t\\t\\tv-bind=\\\"{swapThreshold: 0.30, delay: 500, delayOnTouchOnly: true, touchStartThreshold: 3}\\\"\\n\\t\\t\\thandle=\\\".panel--header\\\"\\n\\t\\t\\t@end=\\\"saveLayout\\\">\\n\\t\\t\\t<template v-for=\\\"panelId in layout\\\">\\n\\t\\t\\t\\t<div v-if=\\\"isApiWidgetV2(panels[panelId].id)\\\"\\n\\t\\t\\t\\t\\t:key=\\\"`${panels[panelId].id}-v2`\\\"\\n\\t\\t\\t\\t\\tclass=\\\"panel\\\">\\n\\t\\t\\t\\t\\t<div class=\\\"panel--header\\\">\\n\\t\\t\\t\\t\\t\\t<h2>\\n\\t\\t\\t\\t\\t\\t\\t<span :aria-labelledby=\\\"`panel-${panels[panelId].id}--header--icon--description`\\\"\\n\\t\\t\\t\\t\\t\\t\\t\\taria-hidden=\\\"true\\\"\\n\\t\\t\\t\\t\\t\\t\\t\\t:class=\\\"apiWidgets[panels[panelId].id].icon_class\\\"\\n\\t\\t\\t\\t\\t\\t\\t\\trole=\\\"img\\\" />\\n\\t\\t\\t\\t\\t\\t\\t{{ apiWidgets[panels[panelId].id].title }}\\n\\t\\t\\t\\t\\t\\t</h2>\\n\\t\\t\\t\\t\\t\\t<span :id=\\\"`panel-${panels[panelId].id}--header--icon--description`\\\" class=\\\"hidden-visually\\\">\\n\\t\\t\\t\\t\\t\\t\\t{{ t('dashboard', '\\\"{title} icon\\\"', { title: apiWidgets[panels[panelId].id].title }) }}\\n\\t\\t\\t\\t\\t\\t</span>\\n\\t\\t\\t\\t\\t</div>\\n\\t\\t\\t\\t\\t<div class=\\\"panel--content\\\">\\n\\t\\t\\t\\t\\t\\t<ApiDashboardWidget :widget=\\\"apiWidgets[panels[panelId].id]\\\"\\n\\t\\t\\t\\t\\t\\t\\t:data=\\\"apiWidgetItems[panels[panelId].id]\\\"\\n\\t\\t\\t\\t\\t\\t\\t:loading=\\\"loadingItems\\\" />\\n\\t\\t\\t\\t\\t</div>\\n\\t\\t\\t\\t</div>\\n\\t\\t\\t\\t<div v-else :key=\\\"panels[panelId].id\\\" class=\\\"panel\\\">\\n\\t\\t\\t\\t\\t<div class=\\\"panel--header\\\">\\n\\t\\t\\t\\t\\t\\t<h2>\\n\\t\\t\\t\\t\\t\\t\\t<span :aria-labelledby=\\\"`panel-${panels[panelId].id}--header--icon--description`\\\"\\n\\t\\t\\t\\t\\t\\t\\t\\taria-hidden=\\\"true\\\"\\n\\t\\t\\t\\t\\t\\t\\t\\t:class=\\\"panels[panelId].iconClass\\\"\\n\\t\\t\\t\\t\\t\\t\\t\\trole=\\\"img\\\" />\\n\\t\\t\\t\\t\\t\\t\\t{{ panels[panelId].title }}\\n\\t\\t\\t\\t\\t\\t</h2>\\n\\t\\t\\t\\t\\t\\t<span :id=\\\"`panel-${panels[panelId].id}--header--icon--description`\\\" class=\\\"hidden-visually\\\"> {{ t('dashboard', '\\\"{title} icon\\\"', { title: panels[panelId].title }) }} </span>\\n\\t\\t\\t\\t\\t</div>\\n\\t\\t\\t\\t\\t<div class=\\\"panel--content\\\" :class=\\\"{ loading: !panels[panelId].mounted }\\\">\\n\\t\\t\\t\\t\\t\\t<div :ref=\\\"panels[panelId].id\\\" :data-id=\\\"panels[panelId].id\\\" />\\n\\t\\t\\t\\t\\t</div>\\n\\t\\t\\t\\t</div>\\n\\t\\t\\t</template>\\n\\t\\t</Draggable>\\n\\n\\t\\t<div class=\\\"footer\\\">\\n\\t\\t\\t<NcButton @click=\\\"showModal\\\">\\n\\t\\t\\t\\t<template #icon>\\n\\t\\t\\t\\t\\t<Pencil :size=\\\"20\\\" />\\n\\t\\t\\t\\t</template>\\n\\t\\t\\t\\t{{ t('dashboard', 'Customize') }}\\n\\t\\t\\t</NcButton>\\n\\t\\t</div>\\n\\n\\t\\t<NcModal v-if=\\\"modal\\\" size=\\\"large\\\" @close=\\\"closeModal\\\">\\n\\t\\t\\t<div class=\\\"modal__content\\\">\\n\\t\\t\\t\\t<h3>{{ t('dashboard', 'Edit widgets') }}</h3>\\n\\t\\t\\t\\t<ol class=\\\"panels\\\">\\n\\t\\t\\t\\t\\t<li v-for=\\\"status in sortedAllStatuses\\\" :key=\\\"status\\\" :class=\\\"'panel-' + status\\\">\\n\\t\\t\\t\\t\\t\\t<input :id=\\\"'status-checkbox-' + status\\\"\\n\\t\\t\\t\\t\\t\\t\\ttype=\\\"checkbox\\\"\\n\\t\\t\\t\\t\\t\\t\\tclass=\\\"checkbox\\\"\\n\\t\\t\\t\\t\\t\\t\\t:checked=\\\"isStatusActive(status)\\\"\\n\\t\\t\\t\\t\\t\\t\\t@input=\\\"updateStatusCheckbox(status, $event.target.checked)\\\">\\n\\t\\t\\t\\t\\t\\t<label :for=\\\"'status-checkbox-' + status\\\">\\n\\t\\t\\t\\t\\t\\t\\t<span :class=\\\"statusInfo[status].icon\\\" aria-hidden=\\\"true\\\" />\\n\\t\\t\\t\\t\\t\\t\\t{{ statusInfo[status].text }}\\n\\t\\t\\t\\t\\t\\t</label>\\n\\t\\t\\t\\t\\t</li>\\n\\t\\t\\t\\t</ol>\\n\\t\\t\\t\\t<Draggable v-model=\\\"layout\\\"\\n\\t\\t\\t\\t\\tclass=\\\"panels\\\"\\n\\t\\t\\t\\t\\ttag=\\\"ol\\\"\\n\\t\\t\\t\\t\\tv-bind=\\\"{swapThreshold: 0.30, delay: 500, delayOnTouchOnly: true, touchStartThreshold: 3}\\\"\\n\\t\\t\\t\\t\\thandle=\\\".draggable\\\"\\n\\t\\t\\t\\t\\t@end=\\\"saveLayout\\\">\\n\\t\\t\\t\\t\\t<li v-for=\\\"panel in sortedPanels\\\" :key=\\\"panel.id\\\" :class=\\\"'panel-' + panel.id\\\">\\n\\t\\t\\t\\t\\t\\t<input :id=\\\"'panel-checkbox-' + panel.id\\\"\\n\\t\\t\\t\\t\\t\\t\\ttype=\\\"checkbox\\\"\\n\\t\\t\\t\\t\\t\\t\\tclass=\\\"checkbox\\\"\\n\\t\\t\\t\\t\\t\\t\\t:checked=\\\"isActive(panel)\\\"\\n\\t\\t\\t\\t\\t\\t\\t@input=\\\"updateCheckbox(panel, $event.target.checked)\\\">\\n\\t\\t\\t\\t\\t\\t<label :for=\\\"'panel-checkbox-' + panel.id\\\" :class=\\\"{ draggable: isActive(panel) }\\\">\\n\\t\\t\\t\\t\\t\\t\\t<span :class=\\\"panel.iconClass\\\" aria-hidden=\\\"true\\\" />\\n\\t\\t\\t\\t\\t\\t\\t{{ panel.title }}\\n\\t\\t\\t\\t\\t\\t</label>\\n\\t\\t\\t\\t\\t</li>\\n\\t\\t\\t\\t</Draggable>\\n\\n\\t\\t\\t\\t<a v-if=\\\"isAdmin\\\" :href=\\\"appStoreUrl\\\" class=\\\"button\\\">{{ t('dashboard', 'Get more widgets from the App Store') }}</a>\\n\\n\\t\\t\\t\\t<div v-if=\\\"statuses.weather && isStatusActive('weather')\\\">\\n\\t\\t\\t\\t\\t<h3>{{ t('dashboard', 'Weather service') }}</h3>\\n\\t\\t\\t\\t\\t<p>\\n\\t\\t\\t\\t\\t\\t{{ t('dashboard', 'For your privacy, the weather data is requested by your Nextcloud server on your behalf so the weather service receives no personal information.') }}\\n\\t\\t\\t\\t\\t</p>\\n\\t\\t\\t\\t\\t<p class=\\\"credits--end\\\">\\n\\t\\t\\t\\t\\t\\t<a href=\\\"https://api.met.no/doc/TermsOfService\\\" target=\\\"_blank\\\" rel=\\\"noopener\\\">{{ t('dashboard', 'Weather data from Met.no') }}</a>,\\n\\t\\t\\t\\t\\t\\t<a href=\\\"https://wiki.osmfoundation.org/wiki/Privacy_Policy\\\" target=\\\"_blank\\\" rel=\\\"noopener\\\">{{ t('dashboard', 'geocoding with Nominatim') }}</a>,\\n\\t\\t\\t\\t\\t\\t<a href=\\\"https://www.opentopodata.org/#public-api\\\" target=\\\"_blank\\\" rel=\\\"noopener\\\">{{ t('dashboard', 'elevation data from OpenTopoData') }}</a>.\\n\\t\\t\\t\\t\\t</p>\\n\\t\\t\\t\\t</div>\\n\\t\\t\\t</div>\\n\\t\\t</NcModal>\\n\\t</div>\\n</template>\\n\\n<script>\\nimport { generateUrl, generateOcsUrl } from '@nextcloud/router'\\nimport { getCurrentUser } from '@nextcloud/auth'\\nimport { loadState } from '@nextcloud/initial-state'\\nimport axios from '@nextcloud/axios'\\nimport NcButton from '@nextcloud/vue/dist/Components/NcButton.js'\\nimport Draggable from 'vuedraggable'\\nimport NcModal from '@nextcloud/vue/dist/Components/NcModal.js'\\nimport Pencil from 'vue-material-design-icons/Pencil.vue'\\nimport Vue from 'vue'\\n\\nimport isMobile from './mixins/isMobile.js'\\nimport ApiDashboardWidget from './components/ApiDashboardWidget.vue'\\n\\nconst panels = loadState('dashboard', 'panels')\\nconst firstRun = loadState('dashboard', 'firstRun')\\n\\nconst statusInfo = {\\n\\tweather: {\\n\\t\\ttext: t('dashboard', 'Weather'),\\n\\t\\ticon: 'icon-weather-status',\\n\\t},\\n\\tstatus: {\\n\\t\\ttext: t('dashboard', 'Status'),\\n\\t\\ticon: 'icon-user-status-online',\\n\\t},\\n}\\n\\nexport default {\\n\\tname: 'DashboardApp',\\n\\tcomponents: {\\n\\t\\tApiDashboardWidget,\\n\\t\\tNcButton,\\n\\t\\tDraggable,\\n\\t\\tNcModal,\\n\\t\\tPencil,\\n\\t},\\n\\tmixins: [\\n\\t\\tisMobile,\\n\\t],\\n\\n\\tdata() {\\n\\t\\treturn {\\n\\t\\t\\tisAdmin: getCurrentUser().isAdmin,\\n\\t\\t\\ttimer: new Date(),\\n\\t\\t\\tregisteredStatus: [],\\n\\t\\t\\tcallbacks: {},\\n\\t\\t\\tcallbacksStatus: {},\\n\\t\\t\\tallCallbacksStatus: {},\\n\\t\\t\\tstatusInfo,\\n\\t\\t\\tenabledStatuses: loadState('dashboard', 'statuses'),\\n\\t\\t\\tpanels,\\n\\t\\t\\tfirstRun,\\n\\t\\t\\tdisplayName: getCurrentUser()?.displayName,\\n\\t\\t\\tuid: getCurrentUser()?.uid,\\n\\t\\t\\tlayout: loadState('dashboard', 'layout').filter((panelId) => panels[panelId]),\\n\\t\\t\\tmodal: false,\\n\\t\\t\\tappStoreUrl: generateUrl('/settings/apps/dashboard'),\\n\\t\\t\\tstatuses: {},\\n\\t\\t\\tapiWidgets: [],\\n\\t\\t\\tapiWidgetItems: {},\\n\\t\\t\\tloadingItems: true,\\n\\t\\t}\\n\\t},\\n\\tcomputed: {\\n\\t\\tgreeting() {\\n\\t\\t\\tconst time = this.timer.getHours()\\n\\n\\t\\t\\t// Determine part of the day\\n\\t\\t\\tlet partOfDay\\n\\t\\t\\tif (time >= 22 || time < 5) {\\n\\t\\t\\t\\tpartOfDay = 'night'\\n\\t\\t\\t} else if (time >= 18) {\\n\\t\\t\\t\\tpartOfDay = 'evening'\\n\\t\\t\\t} else if (time >= 12) {\\n\\t\\t\\t\\tpartOfDay = 'afternoon'\\n\\t\\t\\t} else {\\n\\t\\t\\t\\tpartOfDay = 'morning'\\n\\t\\t\\t}\\n\\n\\t\\t\\t// Define the greetings\\n\\t\\t\\tconst good = {\\n\\t\\t\\t\\tmorning: {\\n\\t\\t\\t\\t\\tgeneric: t('dashboard', 'Good morning'),\\n\\t\\t\\t\\t\\twithName: t('dashboard', 'Good morning, {name}', { name: this.displayName }, undefined, { escape: false }),\\n\\t\\t\\t\\t},\\n\\t\\t\\t\\tafternoon: {\\n\\t\\t\\t\\t\\tgeneric: t('dashboard', 'Good afternoon'),\\n\\t\\t\\t\\t\\twithName: t('dashboard', 'Good afternoon, {name}', { name: this.displayName }, undefined, { escape: false }),\\n\\t\\t\\t\\t},\\n\\t\\t\\t\\tevening: {\\n\\t\\t\\t\\t\\tgeneric: t('dashboard', 'Good evening'),\\n\\t\\t\\t\\t\\twithName: t('dashboard', 'Good evening, {name}', { name: this.displayName }, undefined, { escape: false }),\\n\\t\\t\\t\\t},\\n\\t\\t\\t\\tnight: {\\n\\t\\t\\t\\t\\t// Don't use \\\"Good night\\\" as it's not a greeting\\n\\t\\t\\t\\t\\tgeneric: t('dashboard', 'Hello'),\\n\\t\\t\\t\\t\\twithName: t('dashboard', 'Hello, {name}', { name: this.displayName }, undefined, { escape: false }),\\n\\t\\t\\t\\t},\\n\\t\\t\\t}\\n\\n\\t\\t\\t// Figure out which greeting to show\\n\\t\\t\\tconst shouldShowName = this.displayName && this.uid !== this.displayName\\n\\t\\t\\treturn { text: shouldShowName ? good[partOfDay].withName : good[partOfDay].generic }\\n\\t\\t},\\n\\n\\t\\tisActive() {\\n\\t\\t\\treturn (panel) => this.layout.indexOf(panel.id) > -1\\n\\t\\t},\\n\\t\\tisStatusActive() {\\n\\t\\t\\treturn (status) => !(status in this.enabledStatuses) || this.enabledStatuses[status]\\n\\t\\t},\\n\\n\\t\\tsortedAllStatuses() {\\n\\t\\t\\treturn Object.keys(this.allCallbacksStatus).slice().sort(this.sortStatuses)\\n\\t\\t},\\n\\t\\tsortedPanels() {\\n\\t\\t\\treturn Object.values(this.panels).sort((a, b) => {\\n\\t\\t\\t\\tconst indexA = this.layout.indexOf(a.id)\\n\\t\\t\\t\\tconst indexB = this.layout.indexOf(b.id)\\n\\t\\t\\t\\tif (indexA === -1 || indexB === -1) {\\n\\t\\t\\t\\t\\treturn indexB - indexA || a.id - b.id\\n\\t\\t\\t\\t}\\n\\t\\t\\t\\treturn indexA - indexB || a.id - b.id\\n\\t\\t\\t})\\n\\t\\t},\\n\\t\\tsortedRegisteredStatus() {\\n\\t\\t\\treturn this.registeredStatus.slice().sort(this.sortStatuses)\\n\\t\\t},\\n\\t},\\n\\n\\twatch: {\\n\\t\\tcallbacks() {\\n\\t\\t\\tthis.rerenderPanels()\\n\\t\\t},\\n\\t\\tcallbacksStatus() {\\n\\t\\t\\tfor (const app in this.callbacksStatus) {\\n\\t\\t\\t\\tconst element = this.$refs['status-' + app]\\n\\t\\t\\t\\tif (this.statuses[app] && this.statuses[app].mounted) {\\n\\t\\t\\t\\t\\tcontinue\\n\\t\\t\\t\\t}\\n\\t\\t\\t\\tif (element) {\\n\\t\\t\\t\\t\\tthis.callbacksStatus[app](element[0])\\n\\t\\t\\t\\t\\tVue.set(this.statuses, app, { mounted: true })\\n\\t\\t\\t\\t} else {\\n\\t\\t\\t\\t\\tconsole.error('Failed to register panel in the frontend as no backend data was provided for ' + app)\\n\\t\\t\\t\\t}\\n\\t\\t\\t}\\n\\t\\t},\\n\\t},\\n\\n\\tasync created() {\\n\\t\\tawait this.fetchApiWidgets()\\n\\n\\t\\tconst apiWidgetIdsToFetch = Object\\n\\t\\t\\t.values(this.apiWidgets)\\n\\t\\t\\t.filter(widget => this.isApiWidgetV2(widget.id))\\n\\t\\t\\t.map(widget => widget.id)\\n\\t\\tawait Promise.all(apiWidgetIdsToFetch.map(id => this.fetchApiWidgetItems([id], true)))\\n\\n\\t\\tfor (const widget of Object.values(this.apiWidgets)) {\\n\\t\\t\\tif (widget.reload_interval > 0) {\\n\\t\\t\\t\\tsetInterval(async () => {\\n\\t\\t\\t\\t\\tawait this.fetchApiWidgetItems([widget.id], true)\\n\\t\\t\\t\\t}, widget.reload_interval * 1000)\\n\\t\\t\\t}\\n\\t\\t}\\n\\t},\\n\\tmounted() {\\n\\t\\tthis.updateSkipLink()\\n\\t\\twindow.addEventListener('scroll', this.handleScroll)\\n\\n\\t\\tsetInterval(() => {\\n\\t\\t\\tthis.timer = new Date()\\n\\t\\t}, 30000)\\n\\n\\t\\tif (this.firstRun) {\\n\\t\\t\\twindow.addEventListener('scroll', this.disableFirstrunHint)\\n\\t\\t}\\n\\t},\\n\\tdestroyed() {\\n\\t\\twindow.removeEventListener('scroll', this.handleScroll)\\n\\t},\\n\\n\\tmethods: {\\n\\t\\t/**\\n\\t\\t * Method to register panels that will be called by the integrating apps\\n\\t\\t *\\n\\t\\t * @param {string} app The unique app id for the widget\\n\\t\\t * @param {Function} callback The callback function to register a panel which gets the DOM element passed as parameter\\n\\t\\t */\\n\\t\\tregister(app, callback) {\\n\\t\\t\\tVue.set(this.callbacks, app, callback)\\n\\t\\t},\\n\\t\\tregisterStatus(app, callback) {\\n\\t\\t\\t// always save callbacks in case user enables the status later\\n\\t\\t\\tVue.set(this.allCallbacksStatus, app, callback)\\n\\t\\t\\t// register only if status is enabled or missing from config\\n\\t\\t\\tif (this.isStatusActive(app)) {\\n\\t\\t\\t\\tthis.registeredStatus.push(app)\\n\\t\\t\\t\\tthis.$nextTick(() => {\\n\\t\\t\\t\\t\\tVue.set(this.callbacksStatus, app, callback)\\n\\t\\t\\t\\t})\\n\\t\\t\\t}\\n\\t\\t},\\n\\t\\trerenderPanels() {\\n\\t\\t\\tfor (const app in this.callbacks) {\\n\\t\\t\\t\\t// TODO: Properly rerender v2 widgets\\n\\t\\t\\t\\tif (this.isApiWidgetV2(this.panels[app].id)) {\\n\\t\\t\\t\\t\\tcontinue\\n\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\tconst element = this.$refs[app]\\n\\t\\t\\t\\tif (this.layout.indexOf(app) === -1) {\\n\\t\\t\\t\\t\\tcontinue\\n\\t\\t\\t\\t}\\n\\t\\t\\t\\tif (this.panels[app] && this.panels[app].mounted) {\\n\\t\\t\\t\\t\\tcontinue\\n\\t\\t\\t\\t}\\n\\t\\t\\t\\tif (element) {\\n\\t\\t\\t\\t\\tthis.callbacks[app](element[0], {\\n\\t\\t\\t\\t\\t\\twidget: this.panels[app],\\n\\t\\t\\t\\t\\t})\\n\\t\\t\\t\\t\\tVue.set(this.panels[app], 'mounted', true)\\n\\t\\t\\t\\t} else {\\n\\t\\t\\t\\t\\tconsole.error('Failed to register panel in the frontend as no backend data was provided for ' + app)\\n\\t\\t\\t\\t}\\n\\t\\t\\t}\\n\\t\\t},\\n\\t\\tsaveLayout() {\\n\\t\\t\\taxios.post(generateUrl('/apps/dashboard/layout'), {\\n\\t\\t\\t\\tlayout: this.layout.join(','),\\n\\t\\t\\t})\\n\\t\\t},\\n\\t\\tsaveStatuses() {\\n\\t\\t\\taxios.post(generateUrl('/apps/dashboard/statuses'), {\\n\\t\\t\\t\\tstatuses: JSON.stringify(this.enabledStatuses),\\n\\t\\t\\t})\\n\\t\\t},\\n\\t\\tshowModal() {\\n\\t\\t\\tthis.modal = true\\n\\t\\t\\tthis.firstRun = false\\n\\t\\t},\\n\\t\\tcloseModal() {\\n\\t\\t\\tthis.modal = false\\n\\t\\t},\\n\\t\\tupdateCheckbox(panel, currentValue) {\\n\\t\\t\\tconst index = this.layout.indexOf(panel.id)\\n\\t\\t\\tif (!currentValue && index > -1) {\\n\\t\\t\\t\\tthis.layout.splice(index, 1)\\n\\n\\t\\t\\t} else {\\n\\t\\t\\t\\tthis.layout.push(panel.id)\\n\\t\\t\\t}\\n\\t\\t\\tVue.set(this.panels[panel.id], 'mounted', false)\\n\\t\\t\\tthis.saveLayout()\\n\\t\\t\\tthis.$nextTick(() => this.rerenderPanels())\\n\\t\\t},\\n\\t\\tdisableFirstrunHint() {\\n\\t\\t\\twindow.removeEventListener('scroll', this.disableFirstrunHint)\\n\\t\\t\\tsetTimeout(() => {\\n\\t\\t\\t\\tthis.firstRun = false\\n\\t\\t\\t}, 1000)\\n\\t\\t},\\n\\t\\tupdateSkipLink() {\\n\\t\\t\\t// Make sure \\\"Skip to main content\\\" link points to the app content\\n\\t\\t\\tdocument.getElementsByClassName('skip-navigation')[0].setAttribute('href', '#app-dashboard')\\n\\t\\t},\\n\\t\\tupdateStatusCheckbox(app, checked) {\\n\\t\\t\\tif (checked) {\\n\\t\\t\\t\\tthis.enableStatus(app)\\n\\t\\t\\t} else {\\n\\t\\t\\t\\tthis.disableStatus(app)\\n\\t\\t\\t}\\n\\t\\t},\\n\\t\\tenableStatus(app) {\\n\\t\\t\\tthis.enabledStatuses[app] = true\\n\\t\\t\\tthis.registerStatus(app, this.allCallbacksStatus[app])\\n\\t\\t\\tthis.saveStatuses()\\n\\t\\t},\\n\\t\\tdisableStatus(app) {\\n\\t\\t\\tthis.enabledStatuses[app] = false\\n\\t\\t\\tconst i = this.registeredStatus.findIndex((s) => s === app)\\n\\t\\t\\tif (i !== -1) {\\n\\t\\t\\t\\tthis.registeredStatus.splice(i, 1)\\n\\t\\t\\t\\tVue.set(this.statuses, app, { mounted: false })\\n\\t\\t\\t\\tthis.$nextTick(() => {\\n\\t\\t\\t\\t\\tVue.delete(this.callbacksStatus, app)\\n\\t\\t\\t\\t})\\n\\t\\t\\t}\\n\\t\\t\\tthis.saveStatuses()\\n\\t\\t},\\n\\t\\tsortStatuses(a, b) {\\n\\t\\t\\tconst al = a.toLowerCase()\\n\\t\\t\\tconst bl = b.toLowerCase()\\n\\t\\t\\treturn al > bl\\n\\t\\t\\t\\t? 1\\n\\t\\t\\t\\t: al < bl\\n\\t\\t\\t\\t\\t? -1\\n\\t\\t\\t\\t\\t: 0\\n\\t\\t},\\n\\t\\thandleScroll() {\\n\\t\\t\\tif (window.scrollY > 70) {\\n\\t\\t\\t\\tdocument.body.classList.add('dashboard--scrolled')\\n\\t\\t\\t} else {\\n\\t\\t\\t\\tdocument.body.classList.remove('dashboard--scrolled')\\n\\t\\t\\t}\\n\\t\\t},\\n\\t\\tasync fetchApiWidgets() {\\n\\t\\t\\tconst response = await axios.get(generateOcsUrl('/apps/dashboard/api/v1/widgets'))\\n\\t\\t\\tthis.apiWidgets = response.data.ocs.data\\n\\t\\t},\\n\\t\\tasync fetchApiWidgetItems(widgetIds, merge = false) {\\n\\t\\t\\ttry {\\n\\t\\t\\t\\tconst url = generateOcsUrl('/apps/dashboard/api/v2/widget-items')\\n\\t\\t\\t\\tconst params = new URLSearchParams(widgetIds.map(id => ['widgets[]', id]))\\n\\t\\t\\t\\tconst response = await axios.get(`${url}?${params.toString()}`)\\n\\t\\t\\t\\tconst widgetItems = response.data.ocs.data\\n\\t\\t\\t\\tif (merge) {\\n\\t\\t\\t\\t\\tthis.apiWidgetItems = Object.assign({}, this.apiWidgetItems, widgetItems)\\n\\t\\t\\t\\t} else {\\n\\t\\t\\t\\t\\tthis.apiWidgetItems = widgetItems\\n\\t\\t\\t\\t}\\n\\t\\t\\t} finally {\\n\\t\\t\\t\\tthis.loadingItems = false\\n\\t\\t\\t}\\n\\t\\t},\\n\\t\\tisApiWidgetV2(id) {\\n\\t\\t\\tfor (const widget of Object.values(this.apiWidgets)) {\\n\\t\\t\\t\\tif (widget.id === id && widget.item_api_versions.includes(2)) {\\n\\t\\t\\t\\t\\treturn true\\n\\t\\t\\t\\t}\\n\\t\\t\\t}\\n\\t\\t\\treturn false\\n\\t\\t},\\n\\t},\\n}\\n</script>\\n\\n<style lang=\\\"scss\\\" scoped>\\n#app-dashboard {\\n\\twidth: 100%;\\n\\tmin-height: 100%;\\n\\tbackground-size: cover;\\n\\tbackground-position: center center;\\n\\tbackground-repeat: no-repeat;\\n\\tbackground-attachment: fixed;\\n\\n\\t> h2 {\\n\\t\\tcolor: var(--color-primary-element-text);\\n\\t\\ttext-align: center;\\n\\t\\tfont-size: 32px;\\n\\t\\tline-height: 130%;\\n\\t\\tpadding: 1rem 0;\\n\\t}\\n}\\n\\n.panels {\\n\\twidth: auto;\\n\\tmargin: auto;\\n\\tmax-width: 1800px;\\n\\tdisplay: flex;\\n\\tjustify-content: center;\\n\\tflex-direction: row;\\n\\talign-items: flex-start;\\n\\tflex-wrap: wrap;\\n}\\n\\n.panel, .panels > div {\\n\\twidth: 320px;\\n\\tmax-width: 100%;\\n\\tmargin: 16px;\\n\\talign-self: stretch;\\n\\tbackground-color: var(--color-main-background-blur);\\n\\t-webkit-backdrop-filter: var(--filter-background-blur);\\n\\tbackdrop-filter: var(--filter-background-blur);\\n\\tborder-radius: var(--border-radius-rounded);\\n\\n\\t#body-user.theme--highcontrast & {\\n\\t\\tborder: 2px solid var(--color-border);\\n\\t}\\n\\n\\t&.sortable-ghost {\\n\\t\\t opacity: 0.1;\\n\\t}\\n\\n\\t& > .panel--header {\\n\\t\\tdisplay: flex;\\n\\t\\tz-index: 1;\\n\\t\\ttop: 50px;\\n\\t\\tpadding: 16px;\\n\\t\\tcursor: grab;\\n\\n\\t\\t&, ::v-deep * {\\n\\t\\t\\t-webkit-touch-callout: none;\\n\\t\\t\\t-webkit-user-select: none;\\n\\t\\t\\t-khtml-user-select: none;\\n\\t\\t\\t-moz-user-select: none;\\n\\t\\t\\t-ms-user-select: none;\\n\\t\\t\\tuser-select: none;\\n\\t\\t}\\n\\n\\t\\t&:active {\\n\\t\\t\\tcursor: grabbing;\\n\\t\\t}\\n\\n\\t\\ta {\\n\\t\\t\\tflex-grow: 1;\\n\\t\\t}\\n\\n\\t\\t> h2 {\\n\\t\\t\\tdisplay: block;\\n\\t\\t\\talign-items: center;\\n\\t\\t\\tflex-grow: 1;\\n\\t\\t\\tmargin: 0;\\n\\t\\t\\tfont-size: 20px;\\n\\t\\t\\tline-height: 24px;\\n\\t\\t\\tfont-weight: bold;\\n\\t\\t\\tpadding: 16px 8px;\\n\\t\\t\\theight: 56px;\\n\\t\\t\\twhite-space: nowrap;\\n\\t\\t\\toverflow: hidden;\\n\\t\\t\\ttext-overflow: ellipsis;\\n\\t\\t\\tcursor: grab;\\n\\t\\t\\tspan {\\n\\t\\t\\t\\tbackground-size: 32px;\\n\\t\\t\\t\\twidth: 32px;\\n\\t\\t\\t\\theight: 32px;\\n\\t\\t\\t\\tmargin-right: 16px;\\n\\t\\t\\t\\tbackground-position: center;\\n\\t\\t\\t\\tfloat: left;\\n\\t\\t\\t\\tmargin-top: -6px;\\n\\t\\t\\t}\\n\\t\\t}\\n\\t}\\n\\n\\t& > .panel--content {\\n\\t\\tmargin: 0 16px 16px 16px;\\n\\t\\theight: 424px;\\n\\t\\t// We specifically do not want scrollbars inside widgets\\n\\t\\toverflow: visible;\\n\\t}\\n\\n\\t// No need to extend height of widgets if only one column is shown\\n\\t@media only screen and (max-width: 709px) {\\n\\t\\t& > .panel--content {\\n\\t\\t\\theight: auto;\\n\\t\\t}\\n\\t}\\n}\\n\\n.footer {\\n\\tdisplay: flex;\\n\\tjustify-content: center;\\n\\ttransition: bottom var(--animation-slow) ease-in-out;\\n\\tpadding: 1rem 0;\\n}\\n\\n.edit-panels {\\n\\tdisplay: inline-block;\\n\\tmargin:auto;\\n\\tbackground-position: 16px center;\\n\\tpadding: 12px 16px;\\n\\tpadding-left: 36px;\\n\\tborder-radius: var(--border-radius-pill);\\n\\tmax-width: 200px;\\n\\topacity: 1;\\n\\ttext-align: center;\\n}\\n\\n.button,\\n.button-vue,\\n.edit-panels,\\n.statuses ::v-deep .action-item .action-item__menutoggle,\\n.statuses ::v-deep .action-item.action-item--open .action-item__menutoggle {\\n\\tbackground-color: var(--color-main-background-blur);\\n\\t-webkit-backdrop-filter: var(--filter-background-blur);\\n\\tbackdrop-filter: var(--filter-background-blur);\\n\\topacity: 1 !important;\\n\\n\\t&:hover,\\n\\t&:focus,\\n\\t&:active {\\n\\t\\tbackground-color: var(--color-background-hover)!important;\\n\\t}\\n\\t&:focus-visible {\\n\\t\\tbox-shadow: 0 0 0 4px var(--color-main-background) !important;\\n\\t\\toutline: 2px solid var(--color-main-text) !important;\\n\\t}\\n}\\n\\n.modal__content {\\n\\tpadding: 32px 16px;\\n\\ttext-align: center;\\n\\n\\tol {\\n\\t\\tdisplay: flex;\\n\\t\\tflex-direction: row;\\n\\t\\tjustify-content: center;\\n\\t\\tlist-style-type: none;\\n\\t\\tpadding-bottom: 16px;\\n\\t}\\n\\tli {\\n\\t\\tlabel {\\n\\t\\t\\tposition: relative;\\n\\t\\t\\tdisplay: block;\\n\\t\\t\\tpadding: 48px 16px 14px 16px;\\n\\t\\t\\tmargin: 8px;\\n\\t\\t\\twidth: 140px;\\n\\t\\t\\tbackground-color: var(--color-background-hover);\\n\\t\\t\\tborder: 2px solid var(--color-main-background);\\n\\t\\t\\tborder-radius: var(--border-radius-large);\\n\\t\\t\\ttext-align: left;\\n\\t\\t\\toverflow: hidden;\\n\\t\\t\\ttext-overflow: ellipsis;\\n\\t\\t\\twhite-space: nowrap;\\n\\n\\t\\t\\tspan {\\n\\t\\t\\t\\tposition: absolute;\\n\\t\\t\\t\\ttop: 16px;\\n\\t\\t\\t\\twidth: 24px;\\n\\t\\t\\t\\theight: 24px;\\n\\t\\t\\t\\tbackground-size: 24px;\\n\\t\\t\\t}\\n\\n\\t\\t\\t&:hover {\\n\\t\\t\\t\\tborder-color: var(--color-primary-element);\\n\\t\\t\\t}\\n\\t\\t}\\n\\n\\t\\t// Do not invert status icons\\n\\t\\t&:not(.panel-status) label span {\\n\\t\\t\\tfilter: var(--background-invert-if-dark);\\n\\t\\t}\\n\\n\\t\\tinput[type='checkbox'].checkbox + label:before {\\n\\t\\t\\tposition: absolute;\\n\\t\\t\\tright: 12px;\\n\\t\\t\\ttop: 16px;\\n\\t\\t}\\n\\n\\t\\tinput:focus + label {\\n\\t\\t\\tborder-color: var(--color-primary-element);\\n\\t\\t}\\n\\t}\\n\\n\\th3 {\\n\\t\\tfont-weight: bold;\\n\\n\\t\\t&:not(:first-of-type) {\\n\\t\\t\\tmargin-top: 64px;\\n\\t\\t}\\n\\t}\\n\\n\\t// Adjust design of 'Get more widgets' button\\n\\t.button {\\n\\t\\tdisplay: inline-block;\\n\\t\\tpadding: 10px 16px;\\n\\t\\tmargin: 0;\\n\\t}\\n\\n\\tp {\\n\\t\\tmax-width: 650px;\\n\\t\\tmargin: 0 auto;\\n\\n\\t\\ta:hover,\\n\\t\\ta:focus {\\n\\t\\t\\tborder-bottom: 2px solid var(--color-border);\\n\\t\\t}\\n\\t}\\n\\n\\t.credits--end {\\n\\t\\tpadding-bottom: 32px;\\n\\t\\tcolor: var(--color-text-maxcontrast);\\n\\n\\t\\ta {\\n\\t\\t\\tcolor: var(--color-text-maxcontrast);\\n\\t\\t}\\n\\t}\\n}\\n\\n.flip-list-move {\\n\\ttransition: transform var(--animation-slow);\\n}\\n\\n.statuses {\\n\\tdisplay: flex;\\n\\tflex-direction: row;\\n\\tjustify-content: center;\\n\\tflex-wrap: wrap;\\n\\tmargin-bottom: 36px;\\n\\n\\t& > li {\\n\\t\\tmargin: 8px;\\n\\t}\\n}\\n</style>\\n<style>\\nhtml, body {\\n\\tbackground-attachment: fixed;\\n}\\n\\n#body-user #header {\\n\\tposition: fixed;\\n}\\n\\n#content {\\n\\toverflow: auto;\\n}\\n</style>\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","/**!\n * Sortable 1.10.2\n * @author\tRubaXa   <trash@rubaxa.org>\n * @author\towenm    <owen23355@gmail.com>\n * @license MIT\n */\nfunction _typeof(obj) {\n  if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") {\n    _typeof = function (obj) {\n      return typeof obj;\n    };\n  } else {\n    _typeof = function (obj) {\n      return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n    };\n  }\n\n  return _typeof(obj);\n}\n\nfunction _defineProperty(obj, key, value) {\n  if (key in obj) {\n    Object.defineProperty(obj, key, {\n      value: value,\n      enumerable: true,\n      configurable: true,\n      writable: true\n    });\n  } else {\n    obj[key] = value;\n  }\n\n  return obj;\n}\n\nfunction _extends() {\n  _extends = Object.assign || function (target) {\n    for (var i = 1; i < arguments.length; i++) {\n      var source = arguments[i];\n\n      for (var key in source) {\n        if (Object.prototype.hasOwnProperty.call(source, key)) {\n          target[key] = source[key];\n        }\n      }\n    }\n\n    return target;\n  };\n\n  return _extends.apply(this, arguments);\n}\n\nfunction _objectSpread(target) {\n  for (var i = 1; i < arguments.length; i++) {\n    var source = arguments[i] != null ? arguments[i] : {};\n    var ownKeys = Object.keys(source);\n\n    if (typeof Object.getOwnPropertySymbols === 'function') {\n      ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function (sym) {\n        return Object.getOwnPropertyDescriptor(source, sym).enumerable;\n      }));\n    }\n\n    ownKeys.forEach(function (key) {\n      _defineProperty(target, key, source[key]);\n    });\n  }\n\n  return target;\n}\n\nfunction _objectWithoutPropertiesLoose(source, excluded) {\n  if (source == null) return {};\n  var target = {};\n  var sourceKeys = Object.keys(source);\n  var key, i;\n\n  for (i = 0; i < sourceKeys.length; i++) {\n    key = sourceKeys[i];\n    if (excluded.indexOf(key) >= 0) continue;\n    target[key] = source[key];\n  }\n\n  return target;\n}\n\nfunction _objectWithoutProperties(source, excluded) {\n  if (source == null) return {};\n\n  var target = _objectWithoutPropertiesLoose(source, excluded);\n\n  var key, i;\n\n  if (Object.getOwnPropertySymbols) {\n    var sourceSymbolKeys = Object.getOwnPropertySymbols(source);\n\n    for (i = 0; i < sourceSymbolKeys.length; i++) {\n      key = sourceSymbolKeys[i];\n      if (excluded.indexOf(key) >= 0) continue;\n      if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue;\n      target[key] = source[key];\n    }\n  }\n\n  return target;\n}\n\nfunction _toConsumableArray(arr) {\n  return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _nonIterableSpread();\n}\n\nfunction _arrayWithoutHoles(arr) {\n  if (Array.isArray(arr)) {\n    for (var i = 0, arr2 = new Array(arr.length); i < arr.length; i++) arr2[i] = arr[i];\n\n    return arr2;\n  }\n}\n\nfunction _iterableToArray(iter) {\n  if (Symbol.iterator in Object(iter) || Object.prototype.toString.call(iter) === \"[object Arguments]\") return Array.from(iter);\n}\n\nfunction _nonIterableSpread() {\n  throw new TypeError(\"Invalid attempt to spread non-iterable instance\");\n}\n\nvar version = \"1.10.2\";\n\nfunction userAgent(pattern) {\n  if (typeof window !== 'undefined' && window.navigator) {\n    return !!\n    /*@__PURE__*/\n    navigator.userAgent.match(pattern);\n  }\n}\n\nvar IE11OrLess = userAgent(/(?:Trident.*rv[ :]?11\\.|msie|iemobile|Windows Phone)/i);\nvar Edge = userAgent(/Edge/i);\nvar FireFox = userAgent(/firefox/i);\nvar Safari = userAgent(/safari/i) && !userAgent(/chrome/i) && !userAgent(/android/i);\nvar IOS = userAgent(/iP(ad|od|hone)/i);\nvar ChromeForAndroid = userAgent(/chrome/i) && userAgent(/android/i);\n\nvar captureMode = {\n  capture: false,\n  passive: false\n};\n\nfunction on(el, event, fn) {\n  el.addEventListener(event, fn, !IE11OrLess && captureMode);\n}\n\nfunction off(el, event, fn) {\n  el.removeEventListener(event, fn, !IE11OrLess && captureMode);\n}\n\nfunction matches(\n/**HTMLElement*/\nel,\n/**String*/\nselector) {\n  if (!selector) return;\n  selector[0] === '>' && (selector = selector.substring(1));\n\n  if (el) {\n    try {\n      if (el.matches) {\n        return el.matches(selector);\n      } else if (el.msMatchesSelector) {\n        return el.msMatchesSelector(selector);\n      } else if (el.webkitMatchesSelector) {\n        return el.webkitMatchesSelector(selector);\n      }\n    } catch (_) {\n      return false;\n    }\n  }\n\n  return false;\n}\n\nfunction getParentOrHost(el) {\n  return el.host && el !== document && el.host.nodeType ? el.host : el.parentNode;\n}\n\nfunction closest(\n/**HTMLElement*/\nel,\n/**String*/\nselector,\n/**HTMLElement*/\nctx, includeCTX) {\n  if (el) {\n    ctx = ctx || document;\n\n    do {\n      if (selector != null && (selector[0] === '>' ? el.parentNode === ctx && matches(el, selector) : matches(el, selector)) || includeCTX && el === ctx) {\n        return el;\n      }\n\n      if (el === ctx) break;\n      /* jshint boss:true */\n    } while (el = getParentOrHost(el));\n  }\n\n  return null;\n}\n\nvar R_SPACE = /\\s+/g;\n\nfunction toggleClass(el, name, state) {\n  if (el && name) {\n    if (el.classList) {\n      el.classList[state ? 'add' : 'remove'](name);\n    } else {\n      var className = (' ' + el.className + ' ').replace(R_SPACE, ' ').replace(' ' + name + ' ', ' ');\n      el.className = (className + (state ? ' ' + name : '')).replace(R_SPACE, ' ');\n    }\n  }\n}\n\nfunction css(el, prop, val) {\n  var style = el && el.style;\n\n  if (style) {\n    if (val === void 0) {\n      if (document.defaultView && document.defaultView.getComputedStyle) {\n        val = document.defaultView.getComputedStyle(el, '');\n      } else if (el.currentStyle) {\n        val = el.currentStyle;\n      }\n\n      return prop === void 0 ? val : val[prop];\n    } else {\n      if (!(prop in style) && prop.indexOf('webkit') === -1) {\n        prop = '-webkit-' + prop;\n      }\n\n      style[prop] = val + (typeof val === 'string' ? '' : 'px');\n    }\n  }\n}\n\nfunction matrix(el, selfOnly) {\n  var appliedTransforms = '';\n\n  if (typeof el === 'string') {\n    appliedTransforms = el;\n  } else {\n    do {\n      var transform = css(el, 'transform');\n\n      if (transform && transform !== 'none') {\n        appliedTransforms = transform + ' ' + appliedTransforms;\n      }\n      /* jshint boss:true */\n\n    } while (!selfOnly && (el = el.parentNode));\n  }\n\n  var matrixFn = window.DOMMatrix || window.WebKitCSSMatrix || window.CSSMatrix || window.MSCSSMatrix;\n  /*jshint -W056 */\n\n  return matrixFn && new matrixFn(appliedTransforms);\n}\n\nfunction find(ctx, tagName, iterator) {\n  if (ctx) {\n    var list = ctx.getElementsByTagName(tagName),\n        i = 0,\n        n = list.length;\n\n    if (iterator) {\n      for (; i < n; i++) {\n        iterator(list[i], i);\n      }\n    }\n\n    return list;\n  }\n\n  return [];\n}\n\nfunction getWindowScrollingElement() {\n  var scrollingElement = document.scrollingElement;\n\n  if (scrollingElement) {\n    return scrollingElement;\n  } else {\n    return document.documentElement;\n  }\n}\n/**\r\n * Returns the \"bounding client rect\" of given element\r\n * @param  {HTMLElement} el                       The element whose boundingClientRect is wanted\r\n * @param  {[Boolean]} relativeToContainingBlock  Whether the rect should be relative to the containing block of (including) the container\r\n * @param  {[Boolean]} relativeToNonStaticParent  Whether the rect should be relative to the relative parent of (including) the contaienr\r\n * @param  {[Boolean]} undoScale                  Whether the container's scale() should be undone\r\n * @param  {[HTMLElement]} container              The parent the element will be placed in\r\n * @return {Object}                               The boundingClientRect of el, with specified adjustments\r\n */\n\n\nfunction getRect(el, relativeToContainingBlock, relativeToNonStaticParent, undoScale, container) {\n  if (!el.getBoundingClientRect && el !== window) return;\n  var elRect, top, left, bottom, right, height, width;\n\n  if (el !== window && el !== getWindowScrollingElement()) {\n    elRect = el.getBoundingClientRect();\n    top = elRect.top;\n    left = elRect.left;\n    bottom = elRect.bottom;\n    right = elRect.right;\n    height = elRect.height;\n    width = elRect.width;\n  } else {\n    top = 0;\n    left = 0;\n    bottom = window.innerHeight;\n    right = window.innerWidth;\n    height = window.innerHeight;\n    width = window.innerWidth;\n  }\n\n  if ((relativeToContainingBlock || relativeToNonStaticParent) && el !== window) {\n    // Adjust for translate()\n    container = container || el.parentNode; // solves #1123 (see: https://stackoverflow.com/a/37953806/6088312)\n    // Not needed on <= IE11\n\n    if (!IE11OrLess) {\n      do {\n        if (container && container.getBoundingClientRect && (css(container, 'transform') !== 'none' || relativeToNonStaticParent && css(container, 'position') !== 'static')) {\n          var containerRect = container.getBoundingClientRect(); // Set relative to edges of padding box of container\n\n          top -= containerRect.top + parseInt(css(container, 'border-top-width'));\n          left -= containerRect.left + parseInt(css(container, 'border-left-width'));\n          bottom = top + elRect.height;\n          right = left + elRect.width;\n          break;\n        }\n        /* jshint boss:true */\n\n      } while (container = container.parentNode);\n    }\n  }\n\n  if (undoScale && el !== window) {\n    // Adjust for scale()\n    var elMatrix = matrix(container || el),\n        scaleX = elMatrix && elMatrix.a,\n        scaleY = elMatrix && elMatrix.d;\n\n    if (elMatrix) {\n      top /= scaleY;\n      left /= scaleX;\n      width /= scaleX;\n      height /= scaleY;\n      bottom = top + height;\n      right = left + width;\n    }\n  }\n\n  return {\n    top: top,\n    left: left,\n    bottom: bottom,\n    right: right,\n    width: width,\n    height: height\n  };\n}\n/**\r\n * Checks if a side of an element is scrolled past a side of its parents\r\n * @param  {HTMLElement}  el           The element who's side being scrolled out of view is in question\r\n * @param  {String}       elSide       Side of the element in question ('top', 'left', 'right', 'bottom')\r\n * @param  {String}       parentSide   Side of the parent in question ('top', 'left', 'right', 'bottom')\r\n * @return {HTMLElement}               The parent scroll element that the el's side is scrolled past, or null if there is no such element\r\n */\n\n\nfunction isScrolledPast(el, elSide, parentSide) {\n  var parent = getParentAutoScrollElement(el, true),\n      elSideVal = getRect(el)[elSide];\n  /* jshint boss:true */\n\n  while (parent) {\n    var parentSideVal = getRect(parent)[parentSide],\n        visible = void 0;\n\n    if (parentSide === 'top' || parentSide === 'left') {\n      visible = elSideVal >= parentSideVal;\n    } else {\n      visible = elSideVal <= parentSideVal;\n    }\n\n    if (!visible) return parent;\n    if (parent === getWindowScrollingElement()) break;\n    parent = getParentAutoScrollElement(parent, false);\n  }\n\n  return false;\n}\n/**\r\n * Gets nth child of el, ignoring hidden children, sortable's elements (does not ignore clone if it's visible)\r\n * and non-draggable elements\r\n * @param  {HTMLElement} el       The parent element\r\n * @param  {Number} childNum      The index of the child\r\n * @param  {Object} options       Parent Sortable's options\r\n * @return {HTMLElement}          The child at index childNum, or null if not found\r\n */\n\n\nfunction getChild(el, childNum, options) {\n  var currentChild = 0,\n      i = 0,\n      children = el.children;\n\n  while (i < children.length) {\n    if (children[i].style.display !== 'none' && children[i] !== Sortable.ghost && children[i] !== Sortable.dragged && closest(children[i], options.draggable, el, false)) {\n      if (currentChild === childNum) {\n        return children[i];\n      }\n\n      currentChild++;\n    }\n\n    i++;\n  }\n\n  return null;\n}\n/**\r\n * Gets the last child in the el, ignoring ghostEl or invisible elements (clones)\r\n * @param  {HTMLElement} el       Parent element\r\n * @param  {selector} selector    Any other elements that should be ignored\r\n * @return {HTMLElement}          The last child, ignoring ghostEl\r\n */\n\n\nfunction lastChild(el, selector) {\n  var last = el.lastElementChild;\n\n  while (last && (last === Sortable.ghost || css(last, 'display') === 'none' || selector && !matches(last, selector))) {\n    last = last.previousElementSibling;\n  }\n\n  return last || null;\n}\n/**\r\n * Returns the index of an element within its parent for a selected set of\r\n * elements\r\n * @param  {HTMLElement} el\r\n * @param  {selector} selector\r\n * @return {number}\r\n */\n\n\nfunction index(el, selector) {\n  var index = 0;\n\n  if (!el || !el.parentNode) {\n    return -1;\n  }\n  /* jshint boss:true */\n\n\n  while (el = el.previousElementSibling) {\n    if (el.nodeName.toUpperCase() !== 'TEMPLATE' && el !== Sortable.clone && (!selector || matches(el, selector))) {\n      index++;\n    }\n  }\n\n  return index;\n}\n/**\r\n * Returns the scroll offset of the given element, added with all the scroll offsets of parent elements.\r\n * The value is returned in real pixels.\r\n * @param  {HTMLElement} el\r\n * @return {Array}             Offsets in the format of [left, top]\r\n */\n\n\nfunction getRelativeScrollOffset(el) {\n  var offsetLeft = 0,\n      offsetTop = 0,\n      winScroller = getWindowScrollingElement();\n\n  if (el) {\n    do {\n      var elMatrix = matrix(el),\n          scaleX = elMatrix.a,\n          scaleY = elMatrix.d;\n      offsetLeft += el.scrollLeft * scaleX;\n      offsetTop += el.scrollTop * scaleY;\n    } while (el !== winScroller && (el = el.parentNode));\n  }\n\n  return [offsetLeft, offsetTop];\n}\n/**\r\n * Returns the index of the object within the given array\r\n * @param  {Array} arr   Array that may or may not hold the object\r\n * @param  {Object} obj  An object that has a key-value pair unique to and identical to a key-value pair in the object you want to find\r\n * @return {Number}      The index of the object in the array, or -1\r\n */\n\n\nfunction indexOfObject(arr, obj) {\n  for (var i in arr) {\n    if (!arr.hasOwnProperty(i)) continue;\n\n    for (var key in obj) {\n      if (obj.hasOwnProperty(key) && obj[key] === arr[i][key]) return Number(i);\n    }\n  }\n\n  return -1;\n}\n\nfunction getParentAutoScrollElement(el, includeSelf) {\n  // skip to window\n  if (!el || !el.getBoundingClientRect) return getWindowScrollingElement();\n  var elem = el;\n  var gotSelf = false;\n\n  do {\n    // we don't need to get elem css if it isn't even overflowing in the first place (performance)\n    if (elem.clientWidth < elem.scrollWidth || elem.clientHeight < elem.scrollHeight) {\n      var elemCSS = css(elem);\n\n      if (elem.clientWidth < elem.scrollWidth && (elemCSS.overflowX == 'auto' || elemCSS.overflowX == 'scroll') || elem.clientHeight < elem.scrollHeight && (elemCSS.overflowY == 'auto' || elemCSS.overflowY == 'scroll')) {\n        if (!elem.getBoundingClientRect || elem === document.body) return getWindowScrollingElement();\n        if (gotSelf || includeSelf) return elem;\n        gotSelf = true;\n      }\n    }\n    /* jshint boss:true */\n\n  } while (elem = elem.parentNode);\n\n  return getWindowScrollingElement();\n}\n\nfunction extend(dst, src) {\n  if (dst && src) {\n    for (var key in src) {\n      if (src.hasOwnProperty(key)) {\n        dst[key] = src[key];\n      }\n    }\n  }\n\n  return dst;\n}\n\nfunction isRectEqual(rect1, rect2) {\n  return Math.round(rect1.top) === Math.round(rect2.top) && Math.round(rect1.left) === Math.round(rect2.left) && Math.round(rect1.height) === Math.round(rect2.height) && Math.round(rect1.width) === Math.round(rect2.width);\n}\n\nvar _throttleTimeout;\n\nfunction throttle(callback, ms) {\n  return function () {\n    if (!_throttleTimeout) {\n      var args = arguments,\n          _this = this;\n\n      if (args.length === 1) {\n        callback.call(_this, args[0]);\n      } else {\n        callback.apply(_this, args);\n      }\n\n      _throttleTimeout = setTimeout(function () {\n        _throttleTimeout = void 0;\n      }, ms);\n    }\n  };\n}\n\nfunction cancelThrottle() {\n  clearTimeout(_throttleTimeout);\n  _throttleTimeout = void 0;\n}\n\nfunction scrollBy(el, x, y) {\n  el.scrollLeft += x;\n  el.scrollTop += y;\n}\n\nfunction clone(el) {\n  var Polymer = window.Polymer;\n  var $ = window.jQuery || window.Zepto;\n\n  if (Polymer && Polymer.dom) {\n    return Polymer.dom(el).cloneNode(true);\n  } else if ($) {\n    return $(el).clone(true)[0];\n  } else {\n    return el.cloneNode(true);\n  }\n}\n\nfunction setRect(el, rect) {\n  css(el, 'position', 'absolute');\n  css(el, 'top', rect.top);\n  css(el, 'left', rect.left);\n  css(el, 'width', rect.width);\n  css(el, 'height', rect.height);\n}\n\nfunction unsetRect(el) {\n  css(el, 'position', '');\n  css(el, 'top', '');\n  css(el, 'left', '');\n  css(el, 'width', '');\n  css(el, 'height', '');\n}\n\nvar expando = 'Sortable' + new Date().getTime();\n\nfunction AnimationStateManager() {\n  var animationStates = [],\n      animationCallbackId;\n  return {\n    captureAnimationState: function captureAnimationState() {\n      animationStates = [];\n      if (!this.options.animation) return;\n      var children = [].slice.call(this.el.children);\n      children.forEach(function (child) {\n        if (css(child, 'display') === 'none' || child === Sortable.ghost) return;\n        animationStates.push({\n          target: child,\n          rect: getRect(child)\n        });\n\n        var fromRect = _objectSpread({}, animationStates[animationStates.length - 1].rect); // If animating: compensate for current animation\n\n\n        if (child.thisAnimationDuration) {\n          var childMatrix = matrix(child, true);\n\n          if (childMatrix) {\n            fromRect.top -= childMatrix.f;\n            fromRect.left -= childMatrix.e;\n          }\n        }\n\n        child.fromRect = fromRect;\n      });\n    },\n    addAnimationState: function addAnimationState(state) {\n      animationStates.push(state);\n    },\n    removeAnimationState: function removeAnimationState(target) {\n      animationStates.splice(indexOfObject(animationStates, {\n        target: target\n      }), 1);\n    },\n    animateAll: function animateAll(callback) {\n      var _this = this;\n\n      if (!this.options.animation) {\n        clearTimeout(animationCallbackId);\n        if (typeof callback === 'function') callback();\n        return;\n      }\n\n      var animating = false,\n          animationTime = 0;\n      animationStates.forEach(function (state) {\n        var time = 0,\n            target = state.target,\n            fromRect = target.fromRect,\n            toRect = getRect(target),\n            prevFromRect = target.prevFromRect,\n            prevToRect = target.prevToRect,\n            animatingRect = state.rect,\n            targetMatrix = matrix(target, true);\n\n        if (targetMatrix) {\n          // Compensate for current animation\n          toRect.top -= targetMatrix.f;\n          toRect.left -= targetMatrix.e;\n        }\n\n        target.toRect = toRect;\n\n        if (target.thisAnimationDuration) {\n          // Could also check if animatingRect is between fromRect and toRect\n          if (isRectEqual(prevFromRect, toRect) && !isRectEqual(fromRect, toRect) && // Make sure animatingRect is on line between toRect & fromRect\n          (animatingRect.top - toRect.top) / (animatingRect.left - toRect.left) === (fromRect.top - toRect.top) / (fromRect.left - toRect.left)) {\n            // If returning to same place as started from animation and on same axis\n            time = calculateRealTime(animatingRect, prevFromRect, prevToRect, _this.options);\n          }\n        } // if fromRect != toRect: animate\n\n\n        if (!isRectEqual(toRect, fromRect)) {\n          target.prevFromRect = fromRect;\n          target.prevToRect = toRect;\n\n          if (!time) {\n            time = _this.options.animation;\n          }\n\n          _this.animate(target, animatingRect, toRect, time);\n        }\n\n        if (time) {\n          animating = true;\n          animationTime = Math.max(animationTime, time);\n          clearTimeout(target.animationResetTimer);\n          target.animationResetTimer = setTimeout(function () {\n            target.animationTime = 0;\n            target.prevFromRect = null;\n            target.fromRect = null;\n            target.prevToRect = null;\n            target.thisAnimationDuration = null;\n          }, time);\n          target.thisAnimationDuration = time;\n        }\n      });\n      clearTimeout(animationCallbackId);\n\n      if (!animating) {\n        if (typeof callback === 'function') callback();\n      } else {\n        animationCallbackId = setTimeout(function () {\n          if (typeof callback === 'function') callback();\n        }, animationTime);\n      }\n\n      animationStates = [];\n    },\n    animate: function animate(target, currentRect, toRect, duration) {\n      if (duration) {\n        css(target, 'transition', '');\n        css(target, 'transform', '');\n        var elMatrix = matrix(this.el),\n            scaleX = elMatrix && elMatrix.a,\n            scaleY = elMatrix && elMatrix.d,\n            translateX = (currentRect.left - toRect.left) / (scaleX || 1),\n            translateY = (currentRect.top - toRect.top) / (scaleY || 1);\n        target.animatingX = !!translateX;\n        target.animatingY = !!translateY;\n        css(target, 'transform', 'translate3d(' + translateX + 'px,' + translateY + 'px,0)');\n        repaint(target); // repaint\n\n        css(target, 'transition', 'transform ' + duration + 'ms' + (this.options.easing ? ' ' + this.options.easing : ''));\n        css(target, 'transform', 'translate3d(0,0,0)');\n        typeof target.animated === 'number' && clearTimeout(target.animated);\n        target.animated = setTimeout(function () {\n          css(target, 'transition', '');\n          css(target, 'transform', '');\n          target.animated = false;\n          target.animatingX = false;\n          target.animatingY = false;\n        }, duration);\n      }\n    }\n  };\n}\n\nfunction repaint(target) {\n  return target.offsetWidth;\n}\n\nfunction calculateRealTime(animatingRect, fromRect, toRect, options) {\n  return Math.sqrt(Math.pow(fromRect.top - animatingRect.top, 2) + Math.pow(fromRect.left - animatingRect.left, 2)) / Math.sqrt(Math.pow(fromRect.top - toRect.top, 2) + Math.pow(fromRect.left - toRect.left, 2)) * options.animation;\n}\n\nvar plugins = [];\nvar defaults = {\n  initializeByDefault: true\n};\nvar PluginManager = {\n  mount: function mount(plugin) {\n    // Set default static properties\n    for (var option in defaults) {\n      if (defaults.hasOwnProperty(option) && !(option in plugin)) {\n        plugin[option] = defaults[option];\n      }\n    }\n\n    plugins.push(plugin);\n  },\n  pluginEvent: function pluginEvent(eventName, sortable, evt) {\n    var _this = this;\n\n    this.eventCanceled = false;\n\n    evt.cancel = function () {\n      _this.eventCanceled = true;\n    };\n\n    var eventNameGlobal = eventName + 'Global';\n    plugins.forEach(function (plugin) {\n      if (!sortable[plugin.pluginName]) return; // Fire global events if it exists in this sortable\n\n      if (sortable[plugin.pluginName][eventNameGlobal]) {\n        sortable[plugin.pluginName][eventNameGlobal](_objectSpread({\n          sortable: sortable\n        }, evt));\n      } // Only fire plugin event if plugin is enabled in this sortable,\n      // and plugin has event defined\n\n\n      if (sortable.options[plugin.pluginName] && sortable[plugin.pluginName][eventName]) {\n        sortable[plugin.pluginName][eventName](_objectSpread({\n          sortable: sortable\n        }, evt));\n      }\n    });\n  },\n  initializePlugins: function initializePlugins(sortable, el, defaults, options) {\n    plugins.forEach(function (plugin) {\n      var pluginName = plugin.pluginName;\n      if (!sortable.options[pluginName] && !plugin.initializeByDefault) return;\n      var initialized = new plugin(sortable, el, sortable.options);\n      initialized.sortable = sortable;\n      initialized.options = sortable.options;\n      sortable[pluginName] = initialized; // Add default options from plugin\n\n      _extends(defaults, initialized.defaults);\n    });\n\n    for (var option in sortable.options) {\n      if (!sortable.options.hasOwnProperty(option)) continue;\n      var modified = this.modifyOption(sortable, option, sortable.options[option]);\n\n      if (typeof modified !== 'undefined') {\n        sortable.options[option] = modified;\n      }\n    }\n  },\n  getEventProperties: function getEventProperties(name, sortable) {\n    var eventProperties = {};\n    plugins.forEach(function (plugin) {\n      if (typeof plugin.eventProperties !== 'function') return;\n\n      _extends(eventProperties, plugin.eventProperties.call(sortable[plugin.pluginName], name));\n    });\n    return eventProperties;\n  },\n  modifyOption: function modifyOption(sortable, name, value) {\n    var modifiedValue;\n    plugins.forEach(function (plugin) {\n      // Plugin must exist on the Sortable\n      if (!sortable[plugin.pluginName]) return; // If static option listener exists for this option, call in the context of the Sortable's instance of this plugin\n\n      if (plugin.optionListeners && typeof plugin.optionListeners[name] === 'function') {\n        modifiedValue = plugin.optionListeners[name].call(sortable[plugin.pluginName], value);\n      }\n    });\n    return modifiedValue;\n  }\n};\n\nfunction dispatchEvent(_ref) {\n  var sortable = _ref.sortable,\n      rootEl = _ref.rootEl,\n      name = _ref.name,\n      targetEl = _ref.targetEl,\n      cloneEl = _ref.cloneEl,\n      toEl = _ref.toEl,\n      fromEl = _ref.fromEl,\n      oldIndex = _ref.oldIndex,\n      newIndex = _ref.newIndex,\n      oldDraggableIndex = _ref.oldDraggableIndex,\n      newDraggableIndex = _ref.newDraggableIndex,\n      originalEvent = _ref.originalEvent,\n      putSortable = _ref.putSortable,\n      extraEventProperties = _ref.extraEventProperties;\n  sortable = sortable || rootEl && rootEl[expando];\n  if (!sortable) return;\n  var evt,\n      options = sortable.options,\n      onName = 'on' + name.charAt(0).toUpperCase() + name.substr(1); // Support for new CustomEvent feature\n\n  if (window.CustomEvent && !IE11OrLess && !Edge) {\n    evt = new CustomEvent(name, {\n      bubbles: true,\n      cancelable: true\n    });\n  } else {\n    evt = document.createEvent('Event');\n    evt.initEvent(name, true, true);\n  }\n\n  evt.to = toEl || rootEl;\n  evt.from = fromEl || rootEl;\n  evt.item = targetEl || rootEl;\n  evt.clone = cloneEl;\n  evt.oldIndex = oldIndex;\n  evt.newIndex = newIndex;\n  evt.oldDraggableIndex = oldDraggableIndex;\n  evt.newDraggableIndex = newDraggableIndex;\n  evt.originalEvent = originalEvent;\n  evt.pullMode = putSortable ? putSortable.lastPutMode : undefined;\n\n  var allEventProperties = _objectSpread({}, extraEventProperties, PluginManager.getEventProperties(name, sortable));\n\n  for (var option in allEventProperties) {\n    evt[option] = allEventProperties[option];\n  }\n\n  if (rootEl) {\n    rootEl.dispatchEvent(evt);\n  }\n\n  if (options[onName]) {\n    options[onName].call(sortable, evt);\n  }\n}\n\nvar pluginEvent = function pluginEvent(eventName, sortable) {\n  var _ref = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {},\n      originalEvent = _ref.evt,\n      data = _objectWithoutProperties(_ref, [\"evt\"]);\n\n  PluginManager.pluginEvent.bind(Sortable)(eventName, sortable, _objectSpread({\n    dragEl: dragEl,\n    parentEl: parentEl,\n    ghostEl: ghostEl,\n    rootEl: rootEl,\n    nextEl: nextEl,\n    lastDownEl: lastDownEl,\n    cloneEl: cloneEl,\n    cloneHidden: cloneHidden,\n    dragStarted: moved,\n    putSortable: putSortable,\n    activeSortable: Sortable.active,\n    originalEvent: originalEvent,\n    oldIndex: oldIndex,\n    oldDraggableIndex: oldDraggableIndex,\n    newIndex: newIndex,\n    newDraggableIndex: newDraggableIndex,\n    hideGhostForTarget: _hideGhostForTarget,\n    unhideGhostForTarget: _unhideGhostForTarget,\n    cloneNowHidden: function cloneNowHidden() {\n      cloneHidden = true;\n    },\n    cloneNowShown: function cloneNowShown() {\n      cloneHidden = false;\n    },\n    dispatchSortableEvent: function dispatchSortableEvent(name) {\n      _dispatchEvent({\n        sortable: sortable,\n        name: name,\n        originalEvent: originalEvent\n      });\n    }\n  }, data));\n};\n\nfunction _dispatchEvent(info) {\n  dispatchEvent(_objectSpread({\n    putSortable: putSortable,\n    cloneEl: cloneEl,\n    targetEl: dragEl,\n    rootEl: rootEl,\n    oldIndex: oldIndex,\n    oldDraggableIndex: oldDraggableIndex,\n    newIndex: newIndex,\n    newDraggableIndex: newDraggableIndex\n  }, info));\n}\n\nvar dragEl,\n    parentEl,\n    ghostEl,\n    rootEl,\n    nextEl,\n    lastDownEl,\n    cloneEl,\n    cloneHidden,\n    oldIndex,\n    newIndex,\n    oldDraggableIndex,\n    newDraggableIndex,\n    activeGroup,\n    putSortable,\n    awaitingDragStarted = false,\n    ignoreNextClick = false,\n    sortables = [],\n    tapEvt,\n    touchEvt,\n    lastDx,\n    lastDy,\n    tapDistanceLeft,\n    tapDistanceTop,\n    moved,\n    lastTarget,\n    lastDirection,\n    pastFirstInvertThresh = false,\n    isCircumstantialInvert = false,\n    targetMoveDistance,\n    // For positioning ghost absolutely\nghostRelativeParent,\n    ghostRelativeParentInitialScroll = [],\n    // (left, top)\n_silent = false,\n    savedInputChecked = [];\n/** @const */\n\nvar documentExists = typeof document !== 'undefined',\n    PositionGhostAbsolutely = IOS,\n    CSSFloatProperty = Edge || IE11OrLess ? 'cssFloat' : 'float',\n    // This will not pass for IE9, because IE9 DnD only works on anchors\nsupportDraggable = documentExists && !ChromeForAndroid && !IOS && 'draggable' in document.createElement('div'),\n    supportCssPointerEvents = function () {\n  if (!documentExists) return; // false when <= IE11\n\n  if (IE11OrLess) {\n    return false;\n  }\n\n  var el = document.createElement('x');\n  el.style.cssText = 'pointer-events:auto';\n  return el.style.pointerEvents === 'auto';\n}(),\n    _detectDirection = function _detectDirection(el, options) {\n  var elCSS = css(el),\n      elWidth = parseInt(elCSS.width) - parseInt(elCSS.paddingLeft) - parseInt(elCSS.paddingRight) - parseInt(elCSS.borderLeftWidth) - parseInt(elCSS.borderRightWidth),\n      child1 = getChild(el, 0, options),\n      child2 = getChild(el, 1, options),\n      firstChildCSS = child1 && css(child1),\n      secondChildCSS = child2 && css(child2),\n      firstChildWidth = firstChildCSS && parseInt(firstChildCSS.marginLeft) + parseInt(firstChildCSS.marginRight) + getRect(child1).width,\n      secondChildWidth = secondChildCSS && parseInt(secondChildCSS.marginLeft) + parseInt(secondChildCSS.marginRight) + getRect(child2).width;\n\n  if (elCSS.display === 'flex') {\n    return elCSS.flexDirection === 'column' || elCSS.flexDirection === 'column-reverse' ? 'vertical' : 'horizontal';\n  }\n\n  if (elCSS.display === 'grid') {\n    return elCSS.gridTemplateColumns.split(' ').length <= 1 ? 'vertical' : 'horizontal';\n  }\n\n  if (child1 && firstChildCSS[\"float\"] && firstChildCSS[\"float\"] !== 'none') {\n    var touchingSideChild2 = firstChildCSS[\"float\"] === 'left' ? 'left' : 'right';\n    return child2 && (secondChildCSS.clear === 'both' || secondChildCSS.clear === touchingSideChild2) ? 'vertical' : 'horizontal';\n  }\n\n  return child1 && (firstChildCSS.display === 'block' || firstChildCSS.display === 'flex' || firstChildCSS.display === 'table' || firstChildCSS.display === 'grid' || firstChildWidth >= elWidth && elCSS[CSSFloatProperty] === 'none' || child2 && elCSS[CSSFloatProperty] === 'none' && firstChildWidth + secondChildWidth > elWidth) ? 'vertical' : 'horizontal';\n},\n    _dragElInRowColumn = function _dragElInRowColumn(dragRect, targetRect, vertical) {\n  var dragElS1Opp = vertical ? dragRect.left : dragRect.top,\n      dragElS2Opp = vertical ? dragRect.right : dragRect.bottom,\n      dragElOppLength = vertical ? dragRect.width : dragRect.height,\n      targetS1Opp = vertical ? targetRect.left : targetRect.top,\n      targetS2Opp = vertical ? targetRect.right : targetRect.bottom,\n      targetOppLength = vertical ? targetRect.width : targetRect.height;\n  return dragElS1Opp === targetS1Opp || dragElS2Opp === targetS2Opp || dragElS1Opp + dragElOppLength / 2 === targetS1Opp + targetOppLength / 2;\n},\n\n/**\n * Detects first nearest empty sortable to X and Y position using emptyInsertThreshold.\n * @param  {Number} x      X position\n * @param  {Number} y      Y position\n * @return {HTMLElement}   Element of the first found nearest Sortable\n */\n_detectNearestEmptySortable = function _detectNearestEmptySortable(x, y) {\n  var ret;\n  sortables.some(function (sortable) {\n    if (lastChild(sortable)) return;\n    var rect = getRect(sortable),\n        threshold = sortable[expando].options.emptyInsertThreshold,\n        insideHorizontally = x >= rect.left - threshold && x <= rect.right + threshold,\n        insideVertically = y >= rect.top - threshold && y <= rect.bottom + threshold;\n\n    if (threshold && insideHorizontally && insideVertically) {\n      return ret = sortable;\n    }\n  });\n  return ret;\n},\n    _prepareGroup = function _prepareGroup(options) {\n  function toFn(value, pull) {\n    return function (to, from, dragEl, evt) {\n      var sameGroup = to.options.group.name && from.options.group.name && to.options.group.name === from.options.group.name;\n\n      if (value == null && (pull || sameGroup)) {\n        // Default pull value\n        // Default pull and put value if same group\n        return true;\n      } else if (value == null || value === false) {\n        return false;\n      } else if (pull && value === 'clone') {\n        return value;\n      } else if (typeof value === 'function') {\n        return toFn(value(to, from, dragEl, evt), pull)(to, from, dragEl, evt);\n      } else {\n        var otherGroup = (pull ? to : from).options.group.name;\n        return value === true || typeof value === 'string' && value === otherGroup || value.join && value.indexOf(otherGroup) > -1;\n      }\n    };\n  }\n\n  var group = {};\n  var originalGroup = options.group;\n\n  if (!originalGroup || _typeof(originalGroup) != 'object') {\n    originalGroup = {\n      name: originalGroup\n    };\n  }\n\n  group.name = originalGroup.name;\n  group.checkPull = toFn(originalGroup.pull, true);\n  group.checkPut = toFn(originalGroup.put);\n  group.revertClone = originalGroup.revertClone;\n  options.group = group;\n},\n    _hideGhostForTarget = function _hideGhostForTarget() {\n  if (!supportCssPointerEvents && ghostEl) {\n    css(ghostEl, 'display', 'none');\n  }\n},\n    _unhideGhostForTarget = function _unhideGhostForTarget() {\n  if (!supportCssPointerEvents && ghostEl) {\n    css(ghostEl, 'display', '');\n  }\n}; // #1184 fix - Prevent click event on fallback if dragged but item not changed position\n\n\nif (documentExists) {\n  document.addEventListener('click', function (evt) {\n    if (ignoreNextClick) {\n      evt.preventDefault();\n      evt.stopPropagation && evt.stopPropagation();\n      evt.stopImmediatePropagation && evt.stopImmediatePropagation();\n      ignoreNextClick = false;\n      return false;\n    }\n  }, true);\n}\n\nvar nearestEmptyInsertDetectEvent = function nearestEmptyInsertDetectEvent(evt) {\n  if (dragEl) {\n    evt = evt.touches ? evt.touches[0] : evt;\n\n    var nearest = _detectNearestEmptySortable(evt.clientX, evt.clientY);\n\n    if (nearest) {\n      // Create imitation event\n      var event = {};\n\n      for (var i in evt) {\n        if (evt.hasOwnProperty(i)) {\n          event[i] = evt[i];\n        }\n      }\n\n      event.target = event.rootEl = nearest;\n      event.preventDefault = void 0;\n      event.stopPropagation = void 0;\n\n      nearest[expando]._onDragOver(event);\n    }\n  }\n};\n\nvar _checkOutsideTargetEl = function _checkOutsideTargetEl(evt) {\n  if (dragEl) {\n    dragEl.parentNode[expando]._isOutsideThisEl(evt.target);\n  }\n};\n/**\n * @class  Sortable\n * @param  {HTMLElement}  el\n * @param  {Object}       [options]\n */\n\n\nfunction Sortable(el, options) {\n  if (!(el && el.nodeType && el.nodeType === 1)) {\n    throw \"Sortable: `el` must be an HTMLElement, not \".concat({}.toString.call(el));\n  }\n\n  this.el = el; // root element\n\n  this.options = options = _extends({}, options); // Export instance\n\n  el[expando] = this;\n  var defaults = {\n    group: null,\n    sort: true,\n    disabled: false,\n    store: null,\n    handle: null,\n    draggable: /^[uo]l$/i.test(el.nodeName) ? '>li' : '>*',\n    swapThreshold: 1,\n    // percentage; 0 <= x <= 1\n    invertSwap: false,\n    // invert always\n    invertedSwapThreshold: null,\n    // will be set to same as swapThreshold if default\n    removeCloneOnHide: true,\n    direction: function direction() {\n      return _detectDirection(el, this.options);\n    },\n    ghostClass: 'sortable-ghost',\n    chosenClass: 'sortable-chosen',\n    dragClass: 'sortable-drag',\n    ignore: 'a, img',\n    filter: null,\n    preventOnFilter: true,\n    animation: 0,\n    easing: null,\n    setData: function setData(dataTransfer, dragEl) {\n      dataTransfer.setData('Text', dragEl.textContent);\n    },\n    dropBubble: false,\n    dragoverBubble: false,\n    dataIdAttr: 'data-id',\n    delay: 0,\n    delayOnTouchOnly: false,\n    touchStartThreshold: (Number.parseInt ? Number : window).parseInt(window.devicePixelRatio, 10) || 1,\n    forceFallback: false,\n    fallbackClass: 'sortable-fallback',\n    fallbackOnBody: false,\n    fallbackTolerance: 0,\n    fallbackOffset: {\n      x: 0,\n      y: 0\n    },\n    supportPointer: Sortable.supportPointer !== false && 'PointerEvent' in window,\n    emptyInsertThreshold: 5\n  };\n  PluginManager.initializePlugins(this, el, defaults); // Set default options\n\n  for (var name in defaults) {\n    !(name in options) && (options[name] = defaults[name]);\n  }\n\n  _prepareGroup(options); // Bind all private methods\n\n\n  for (var fn in this) {\n    if (fn.charAt(0) === '_' && typeof this[fn] === 'function') {\n      this[fn] = this[fn].bind(this);\n    }\n  } // Setup drag mode\n\n\n  this.nativeDraggable = options.forceFallback ? false : supportDraggable;\n\n  if (this.nativeDraggable) {\n    // Touch start threshold cannot be greater than the native dragstart threshold\n    this.options.touchStartThreshold = 1;\n  } // Bind events\n\n\n  if (options.supportPointer) {\n    on(el, 'pointerdown', this._onTapStart);\n  } else {\n    on(el, 'mousedown', this._onTapStart);\n    on(el, 'touchstart', this._onTapStart);\n  }\n\n  if (this.nativeDraggable) {\n    on(el, 'dragover', this);\n    on(el, 'dragenter', this);\n  }\n\n  sortables.push(this.el); // Restore sorting\n\n  options.store && options.store.get && this.sort(options.store.get(this) || []); // Add animation state manager\n\n  _extends(this, AnimationStateManager());\n}\n\nSortable.prototype =\n/** @lends Sortable.prototype */\n{\n  constructor: Sortable,\n  _isOutsideThisEl: function _isOutsideThisEl(target) {\n    if (!this.el.contains(target) && target !== this.el) {\n      lastTarget = null;\n    }\n  },\n  _getDirection: function _getDirection(evt, target) {\n    return typeof this.options.direction === 'function' ? this.options.direction.call(this, evt, target, dragEl) : this.options.direction;\n  },\n  _onTapStart: function _onTapStart(\n  /** Event|TouchEvent */\n  evt) {\n    if (!evt.cancelable) return;\n\n    var _this = this,\n        el = this.el,\n        options = this.options,\n        preventOnFilter = options.preventOnFilter,\n        type = evt.type,\n        touch = evt.touches && evt.touches[0] || evt.pointerType && evt.pointerType === 'touch' && evt,\n        target = (touch || evt).target,\n        originalTarget = evt.target.shadowRoot && (evt.path && evt.path[0] || evt.composedPath && evt.composedPath()[0]) || target,\n        filter = options.filter;\n\n    _saveInputCheckedState(el); // Don't trigger start event when an element is been dragged, otherwise the evt.oldindex always wrong when set option.group.\n\n\n    if (dragEl) {\n      return;\n    }\n\n    if (/mousedown|pointerdown/.test(type) && evt.button !== 0 || options.disabled) {\n      return; // only left button and enabled\n    } // cancel dnd if original target is content editable\n\n\n    if (originalTarget.isContentEditable) {\n      return;\n    }\n\n    target = closest(target, options.draggable, el, false);\n\n    if (target && target.animated) {\n      return;\n    }\n\n    if (lastDownEl === target) {\n      // Ignoring duplicate `down`\n      return;\n    } // Get the index of the dragged element within its parent\n\n\n    oldIndex = index(target);\n    oldDraggableIndex = index(target, options.draggable); // Check filter\n\n    if (typeof filter === 'function') {\n      if (filter.call(this, evt, target, this)) {\n        _dispatchEvent({\n          sortable: _this,\n          rootEl: originalTarget,\n          name: 'filter',\n          targetEl: target,\n          toEl: el,\n          fromEl: el\n        });\n\n        pluginEvent('filter', _this, {\n          evt: evt\n        });\n        preventOnFilter && evt.cancelable && evt.preventDefault();\n        return; // cancel dnd\n      }\n    } else if (filter) {\n      filter = filter.split(',').some(function (criteria) {\n        criteria = closest(originalTarget, criteria.trim(), el, false);\n\n        if (criteria) {\n          _dispatchEvent({\n            sortable: _this,\n            rootEl: criteria,\n            name: 'filter',\n            targetEl: target,\n            fromEl: el,\n            toEl: el\n          });\n\n          pluginEvent('filter', _this, {\n            evt: evt\n          });\n          return true;\n        }\n      });\n\n      if (filter) {\n        preventOnFilter && evt.cancelable && evt.preventDefault();\n        return; // cancel dnd\n      }\n    }\n\n    if (options.handle && !closest(originalTarget, options.handle, el, false)) {\n      return;\n    } // Prepare `dragstart`\n\n\n    this._prepareDragStart(evt, touch, target);\n  },\n  _prepareDragStart: function _prepareDragStart(\n  /** Event */\n  evt,\n  /** Touch */\n  touch,\n  /** HTMLElement */\n  target) {\n    var _this = this,\n        el = _this.el,\n        options = _this.options,\n        ownerDocument = el.ownerDocument,\n        dragStartFn;\n\n    if (target && !dragEl && target.parentNode === el) {\n      var dragRect = getRect(target);\n      rootEl = el;\n      dragEl = target;\n      parentEl = dragEl.parentNode;\n      nextEl = dragEl.nextSibling;\n      lastDownEl = target;\n      activeGroup = options.group;\n      Sortable.dragged = dragEl;\n      tapEvt = {\n        target: dragEl,\n        clientX: (touch || evt).clientX,\n        clientY: (touch || evt).clientY\n      };\n      tapDistanceLeft = tapEvt.clientX - dragRect.left;\n      tapDistanceTop = tapEvt.clientY - dragRect.top;\n      this._lastX = (touch || evt).clientX;\n      this._lastY = (touch || evt).clientY;\n      dragEl.style['will-change'] = 'all';\n\n      dragStartFn = function dragStartFn() {\n        pluginEvent('delayEnded', _this, {\n          evt: evt\n        });\n\n        if (Sortable.eventCanceled) {\n          _this._onDrop();\n\n          return;\n        } // Delayed drag has been triggered\n        // we can re-enable the events: touchmove/mousemove\n\n\n        _this._disableDelayedDragEvents();\n\n        if (!FireFox && _this.nativeDraggable) {\n          dragEl.draggable = true;\n        } // Bind the events: dragstart/dragend\n\n\n        _this._triggerDragStart(evt, touch); // Drag start event\n\n\n        _dispatchEvent({\n          sortable: _this,\n          name: 'choose',\n          originalEvent: evt\n        }); // Chosen item\n\n\n        toggleClass(dragEl, options.chosenClass, true);\n      }; // Disable \"draggable\"\n\n\n      options.ignore.split(',').forEach(function (criteria) {\n        find(dragEl, criteria.trim(), _disableDraggable);\n      });\n      on(ownerDocument, 'dragover', nearestEmptyInsertDetectEvent);\n      on(ownerDocument, 'mousemove', nearestEmptyInsertDetectEvent);\n      on(ownerDocument, 'touchmove', nearestEmptyInsertDetectEvent);\n      on(ownerDocument, 'mouseup', _this._onDrop);\n      on(ownerDocument, 'touchend', _this._onDrop);\n      on(ownerDocument, 'touchcancel', _this._onDrop); // Make dragEl draggable (must be before delay for FireFox)\n\n      if (FireFox && this.nativeDraggable) {\n        this.options.touchStartThreshold = 4;\n        dragEl.draggable = true;\n      }\n\n      pluginEvent('delayStart', this, {\n        evt: evt\n      }); // Delay is impossible for native DnD in Edge or IE\n\n      if (options.delay && (!options.delayOnTouchOnly || touch) && (!this.nativeDraggable || !(Edge || IE11OrLess))) {\n        if (Sortable.eventCanceled) {\n          this._onDrop();\n\n          return;\n        } // If the user moves the pointer or let go the click or touch\n        // before the delay has been reached:\n        // disable the delayed drag\n\n\n        on(ownerDocument, 'mouseup', _this._disableDelayedDrag);\n        on(ownerDocument, 'touchend', _this._disableDelayedDrag);\n        on(ownerDocument, 'touchcancel', _this._disableDelayedDrag);\n        on(ownerDocument, 'mousemove', _this._delayedDragTouchMoveHandler);\n        on(ownerDocument, 'touchmove', _this._delayedDragTouchMoveHandler);\n        options.supportPointer && on(ownerDocument, 'pointermove', _this._delayedDragTouchMoveHandler);\n        _this._dragStartTimer = setTimeout(dragStartFn, options.delay);\n      } else {\n        dragStartFn();\n      }\n    }\n  },\n  _delayedDragTouchMoveHandler: function _delayedDragTouchMoveHandler(\n  /** TouchEvent|PointerEvent **/\n  e) {\n    var touch = e.touches ? e.touches[0] : e;\n\n    if (Math.max(Math.abs(touch.clientX - this._lastX), Math.abs(touch.clientY - this._lastY)) >= Math.floor(this.options.touchStartThreshold / (this.nativeDraggable && window.devicePixelRatio || 1))) {\n      this._disableDelayedDrag();\n    }\n  },\n  _disableDelayedDrag: function _disableDelayedDrag() {\n    dragEl && _disableDraggable(dragEl);\n    clearTimeout(this._dragStartTimer);\n\n    this._disableDelayedDragEvents();\n  },\n  _disableDelayedDragEvents: function _disableDelayedDragEvents() {\n    var ownerDocument = this.el.ownerDocument;\n    off(ownerDocument, 'mouseup', this._disableDelayedDrag);\n    off(ownerDocument, 'touchend', this._disableDelayedDrag);\n    off(ownerDocument, 'touchcancel', this._disableDelayedDrag);\n    off(ownerDocument, 'mousemove', this._delayedDragTouchMoveHandler);\n    off(ownerDocument, 'touchmove', this._delayedDragTouchMoveHandler);\n    off(ownerDocument, 'pointermove', this._delayedDragTouchMoveHandler);\n  },\n  _triggerDragStart: function _triggerDragStart(\n  /** Event */\n  evt,\n  /** Touch */\n  touch) {\n    touch = touch || evt.pointerType == 'touch' && evt;\n\n    if (!this.nativeDraggable || touch) {\n      if (this.options.supportPointer) {\n        on(document, 'pointermove', this._onTouchMove);\n      } else if (touch) {\n        on(document, 'touchmove', this._onTouchMove);\n      } else {\n        on(document, 'mousemove', this._onTouchMove);\n      }\n    } else {\n      on(dragEl, 'dragend', this);\n      on(rootEl, 'dragstart', this._onDragStart);\n    }\n\n    try {\n      if (document.selection) {\n        // Timeout neccessary for IE9\n        _nextTick(function () {\n          document.selection.empty();\n        });\n      } else {\n        window.getSelection().removeAllRanges();\n      }\n    } catch (err) {}\n  },\n  _dragStarted: function _dragStarted(fallback, evt) {\n\n    awaitingDragStarted = false;\n\n    if (rootEl && dragEl) {\n      pluginEvent('dragStarted', this, {\n        evt: evt\n      });\n\n      if (this.nativeDraggable) {\n        on(document, 'dragover', _checkOutsideTargetEl);\n      }\n\n      var options = this.options; // Apply effect\n\n      !fallback && toggleClass(dragEl, options.dragClass, false);\n      toggleClass(dragEl, options.ghostClass, true);\n      Sortable.active = this;\n      fallback && this._appendGhost(); // Drag start event\n\n      _dispatchEvent({\n        sortable: this,\n        name: 'start',\n        originalEvent: evt\n      });\n    } else {\n      this._nulling();\n    }\n  },\n  _emulateDragOver: function _emulateDragOver() {\n    if (touchEvt) {\n      this._lastX = touchEvt.clientX;\n      this._lastY = touchEvt.clientY;\n\n      _hideGhostForTarget();\n\n      var target = document.elementFromPoint(touchEvt.clientX, touchEvt.clientY);\n      var parent = target;\n\n      while (target && target.shadowRoot) {\n        target = target.shadowRoot.elementFromPoint(touchEvt.clientX, touchEvt.clientY);\n        if (target === parent) break;\n        parent = target;\n      }\n\n      dragEl.parentNode[expando]._isOutsideThisEl(target);\n\n      if (parent) {\n        do {\n          if (parent[expando]) {\n            var inserted = void 0;\n            inserted = parent[expando]._onDragOver({\n              clientX: touchEvt.clientX,\n              clientY: touchEvt.clientY,\n              target: target,\n              rootEl: parent\n            });\n\n            if (inserted && !this.options.dragoverBubble) {\n              break;\n            }\n          }\n\n          target = parent; // store last element\n        }\n        /* jshint boss:true */\n        while (parent = parent.parentNode);\n      }\n\n      _unhideGhostForTarget();\n    }\n  },\n  _onTouchMove: function _onTouchMove(\n  /**TouchEvent*/\n  evt) {\n    if (tapEvt) {\n      var options = this.options,\n          fallbackTolerance = options.fallbackTolerance,\n          fallbackOffset = options.fallbackOffset,\n          touch = evt.touches ? evt.touches[0] : evt,\n          ghostMatrix = ghostEl && matrix(ghostEl, true),\n          scaleX = ghostEl && ghostMatrix && ghostMatrix.a,\n          scaleY = ghostEl && ghostMatrix && ghostMatrix.d,\n          relativeScrollOffset = PositionGhostAbsolutely && ghostRelativeParent && getRelativeScrollOffset(ghostRelativeParent),\n          dx = (touch.clientX - tapEvt.clientX + fallbackOffset.x) / (scaleX || 1) + (relativeScrollOffset ? relativeScrollOffset[0] - ghostRelativeParentInitialScroll[0] : 0) / (scaleX || 1),\n          dy = (touch.clientY - tapEvt.clientY + fallbackOffset.y) / (scaleY || 1) + (relativeScrollOffset ? relativeScrollOffset[1] - ghostRelativeParentInitialScroll[1] : 0) / (scaleY || 1); // only set the status to dragging, when we are actually dragging\n\n      if (!Sortable.active && !awaitingDragStarted) {\n        if (fallbackTolerance && Math.max(Math.abs(touch.clientX - this._lastX), Math.abs(touch.clientY - this._lastY)) < fallbackTolerance) {\n          return;\n        }\n\n        this._onDragStart(evt, true);\n      }\n\n      if (ghostEl) {\n        if (ghostMatrix) {\n          ghostMatrix.e += dx - (lastDx || 0);\n          ghostMatrix.f += dy - (lastDy || 0);\n        } else {\n          ghostMatrix = {\n            a: 1,\n            b: 0,\n            c: 0,\n            d: 1,\n            e: dx,\n            f: dy\n          };\n        }\n\n        var cssMatrix = \"matrix(\".concat(ghostMatrix.a, \",\").concat(ghostMatrix.b, \",\").concat(ghostMatrix.c, \",\").concat(ghostMatrix.d, \",\").concat(ghostMatrix.e, \",\").concat(ghostMatrix.f, \")\");\n        css(ghostEl, 'webkitTransform', cssMatrix);\n        css(ghostEl, 'mozTransform', cssMatrix);\n        css(ghostEl, 'msTransform', cssMatrix);\n        css(ghostEl, 'transform', cssMatrix);\n        lastDx = dx;\n        lastDy = dy;\n        touchEvt = touch;\n      }\n\n      evt.cancelable && evt.preventDefault();\n    }\n  },\n  _appendGhost: function _appendGhost() {\n    // Bug if using scale(): https://stackoverflow.com/questions/2637058\n    // Not being adjusted for\n    if (!ghostEl) {\n      var container = this.options.fallbackOnBody ? document.body : rootEl,\n          rect = getRect(dragEl, true, PositionGhostAbsolutely, true, container),\n          options = this.options; // Position absolutely\n\n      if (PositionGhostAbsolutely) {\n        // Get relatively positioned parent\n        ghostRelativeParent = container;\n\n        while (css(ghostRelativeParent, 'position') === 'static' && css(ghostRelativeParent, 'transform') === 'none' && ghostRelativeParent !== document) {\n          ghostRelativeParent = ghostRelativeParent.parentNode;\n        }\n\n        if (ghostRelativeParent !== document.body && ghostRelativeParent !== document.documentElement) {\n          if (ghostRelativeParent === document) ghostRelativeParent = getWindowScrollingElement();\n          rect.top += ghostRelativeParent.scrollTop;\n          rect.left += ghostRelativeParent.scrollLeft;\n        } else {\n          ghostRelativeParent = getWindowScrollingElement();\n        }\n\n        ghostRelativeParentInitialScroll = getRelativeScrollOffset(ghostRelativeParent);\n      }\n\n      ghostEl = dragEl.cloneNode(true);\n      toggleClass(ghostEl, options.ghostClass, false);\n      toggleClass(ghostEl, options.fallbackClass, true);\n      toggleClass(ghostEl, options.dragClass, true);\n      css(ghostEl, 'transition', '');\n      css(ghostEl, 'transform', '');\n      css(ghostEl, 'box-sizing', 'border-box');\n      css(ghostEl, 'margin', 0);\n      css(ghostEl, 'top', rect.top);\n      css(ghostEl, 'left', rect.left);\n      css(ghostEl, 'width', rect.width);\n      css(ghostEl, 'height', rect.height);\n      css(ghostEl, 'opacity', '0.8');\n      css(ghostEl, 'position', PositionGhostAbsolutely ? 'absolute' : 'fixed');\n      css(ghostEl, 'zIndex', '100000');\n      css(ghostEl, 'pointerEvents', 'none');\n      Sortable.ghost = ghostEl;\n      container.appendChild(ghostEl); // Set transform-origin\n\n      css(ghostEl, 'transform-origin', tapDistanceLeft / parseInt(ghostEl.style.width) * 100 + '% ' + tapDistanceTop / parseInt(ghostEl.style.height) * 100 + '%');\n    }\n  },\n  _onDragStart: function _onDragStart(\n  /**Event*/\n  evt,\n  /**boolean*/\n  fallback) {\n    var _this = this;\n\n    var dataTransfer = evt.dataTransfer;\n    var options = _this.options;\n    pluginEvent('dragStart', this, {\n      evt: evt\n    });\n\n    if (Sortable.eventCanceled) {\n      this._onDrop();\n\n      return;\n    }\n\n    pluginEvent('setupClone', this);\n\n    if (!Sortable.eventCanceled) {\n      cloneEl = clone(dragEl);\n      cloneEl.draggable = false;\n      cloneEl.style['will-change'] = '';\n\n      this._hideClone();\n\n      toggleClass(cloneEl, this.options.chosenClass, false);\n      Sortable.clone = cloneEl;\n    } // #1143: IFrame support workaround\n\n\n    _this.cloneId = _nextTick(function () {\n      pluginEvent('clone', _this);\n      if (Sortable.eventCanceled) return;\n\n      if (!_this.options.removeCloneOnHide) {\n        rootEl.insertBefore(cloneEl, dragEl);\n      }\n\n      _this._hideClone();\n\n      _dispatchEvent({\n        sortable: _this,\n        name: 'clone'\n      });\n    });\n    !fallback && toggleClass(dragEl, options.dragClass, true); // Set proper drop events\n\n    if (fallback) {\n      ignoreNextClick = true;\n      _this._loopId = setInterval(_this._emulateDragOver, 50);\n    } else {\n      // Undo what was set in _prepareDragStart before drag started\n      off(document, 'mouseup', _this._onDrop);\n      off(document, 'touchend', _this._onDrop);\n      off(document, 'touchcancel', _this._onDrop);\n\n      if (dataTransfer) {\n        dataTransfer.effectAllowed = 'move';\n        options.setData && options.setData.call(_this, dataTransfer, dragEl);\n      }\n\n      on(document, 'drop', _this); // #1276 fix:\n\n      css(dragEl, 'transform', 'translateZ(0)');\n    }\n\n    awaitingDragStarted = true;\n    _this._dragStartId = _nextTick(_this._dragStarted.bind(_this, fallback, evt));\n    on(document, 'selectstart', _this);\n    moved = true;\n\n    if (Safari) {\n      css(document.body, 'user-select', 'none');\n    }\n  },\n  // Returns true - if no further action is needed (either inserted or another condition)\n  _onDragOver: function _onDragOver(\n  /**Event*/\n  evt) {\n    var el = this.el,\n        target = evt.target,\n        dragRect,\n        targetRect,\n        revert,\n        options = this.options,\n        group = options.group,\n        activeSortable = Sortable.active,\n        isOwner = activeGroup === group,\n        canSort = options.sort,\n        fromSortable = putSortable || activeSortable,\n        vertical,\n        _this = this,\n        completedFired = false;\n\n    if (_silent) return;\n\n    function dragOverEvent(name, extra) {\n      pluginEvent(name, _this, _objectSpread({\n        evt: evt,\n        isOwner: isOwner,\n        axis: vertical ? 'vertical' : 'horizontal',\n        revert: revert,\n        dragRect: dragRect,\n        targetRect: targetRect,\n        canSort: canSort,\n        fromSortable: fromSortable,\n        target: target,\n        completed: completed,\n        onMove: function onMove(target, after) {\n          return _onMove(rootEl, el, dragEl, dragRect, target, getRect(target), evt, after);\n        },\n        changed: changed\n      }, extra));\n    } // Capture animation state\n\n\n    function capture() {\n      dragOverEvent('dragOverAnimationCapture');\n\n      _this.captureAnimationState();\n\n      if (_this !== fromSortable) {\n        fromSortable.captureAnimationState();\n      }\n    } // Return invocation when dragEl is inserted (or completed)\n\n\n    function completed(insertion) {\n      dragOverEvent('dragOverCompleted', {\n        insertion: insertion\n      });\n\n      if (insertion) {\n        // Clones must be hidden before folding animation to capture dragRectAbsolute properly\n        if (isOwner) {\n          activeSortable._hideClone();\n        } else {\n          activeSortable._showClone(_this);\n        }\n\n        if (_this !== fromSortable) {\n          // Set ghost class to new sortable's ghost class\n          toggleClass(dragEl, putSortable ? putSortable.options.ghostClass : activeSortable.options.ghostClass, false);\n          toggleClass(dragEl, options.ghostClass, true);\n        }\n\n        if (putSortable !== _this && _this !== Sortable.active) {\n          putSortable = _this;\n        } else if (_this === Sortable.active && putSortable) {\n          putSortable = null;\n        } // Animation\n\n\n        if (fromSortable === _this) {\n          _this._ignoreWhileAnimating = target;\n        }\n\n        _this.animateAll(function () {\n          dragOverEvent('dragOverAnimationComplete');\n          _this._ignoreWhileAnimating = null;\n        });\n\n        if (_this !== fromSortable) {\n          fromSortable.animateAll();\n          fromSortable._ignoreWhileAnimating = null;\n        }\n      } // Null lastTarget if it is not inside a previously swapped element\n\n\n      if (target === dragEl && !dragEl.animated || target === el && !target.animated) {\n        lastTarget = null;\n      } // no bubbling and not fallback\n\n\n      if (!options.dragoverBubble && !evt.rootEl && target !== document) {\n        dragEl.parentNode[expando]._isOutsideThisEl(evt.target); // Do not detect for empty insert if already inserted\n\n\n        !insertion && nearestEmptyInsertDetectEvent(evt);\n      }\n\n      !options.dragoverBubble && evt.stopPropagation && evt.stopPropagation();\n      return completedFired = true;\n    } // Call when dragEl has been inserted\n\n\n    function changed() {\n      newIndex = index(dragEl);\n      newDraggableIndex = index(dragEl, options.draggable);\n\n      _dispatchEvent({\n        sortable: _this,\n        name: 'change',\n        toEl: el,\n        newIndex: newIndex,\n        newDraggableIndex: newDraggableIndex,\n        originalEvent: evt\n      });\n    }\n\n    if (evt.preventDefault !== void 0) {\n      evt.cancelable && evt.preventDefault();\n    }\n\n    target = closest(target, options.draggable, el, true);\n    dragOverEvent('dragOver');\n    if (Sortable.eventCanceled) return completedFired;\n\n    if (dragEl.contains(evt.target) || target.animated && target.animatingX && target.animatingY || _this._ignoreWhileAnimating === target) {\n      return completed(false);\n    }\n\n    ignoreNextClick = false;\n\n    if (activeSortable && !options.disabled && (isOwner ? canSort || (revert = !rootEl.contains(dragEl)) // Reverting item into the original list\n    : putSortable === this || (this.lastPutMode = activeGroup.checkPull(this, activeSortable, dragEl, evt)) && group.checkPut(this, activeSortable, dragEl, evt))) {\n      vertical = this._getDirection(evt, target) === 'vertical';\n      dragRect = getRect(dragEl);\n      dragOverEvent('dragOverValid');\n      if (Sortable.eventCanceled) return completedFired;\n\n      if (revert) {\n        parentEl = rootEl; // actualization\n\n        capture();\n\n        this._hideClone();\n\n        dragOverEvent('revert');\n\n        if (!Sortable.eventCanceled) {\n          if (nextEl) {\n            rootEl.insertBefore(dragEl, nextEl);\n          } else {\n            rootEl.appendChild(dragEl);\n          }\n        }\n\n        return completed(true);\n      }\n\n      var elLastChild = lastChild(el, options.draggable);\n\n      if (!elLastChild || _ghostIsLast(evt, vertical, this) && !elLastChild.animated) {\n        // If already at end of list: Do not insert\n        if (elLastChild === dragEl) {\n          return completed(false);\n        } // assign target only if condition is true\n\n\n        if (elLastChild && el === evt.target) {\n          target = elLastChild;\n        }\n\n        if (target) {\n          targetRect = getRect(target);\n        }\n\n        if (_onMove(rootEl, el, dragEl, dragRect, target, targetRect, evt, !!target) !== false) {\n          capture();\n          el.appendChild(dragEl);\n          parentEl = el; // actualization\n\n          changed();\n          return completed(true);\n        }\n      } else if (target.parentNode === el) {\n        targetRect = getRect(target);\n        var direction = 0,\n            targetBeforeFirstSwap,\n            differentLevel = dragEl.parentNode !== el,\n            differentRowCol = !_dragElInRowColumn(dragEl.animated && dragEl.toRect || dragRect, target.animated && target.toRect || targetRect, vertical),\n            side1 = vertical ? 'top' : 'left',\n            scrolledPastTop = isScrolledPast(target, 'top', 'top') || isScrolledPast(dragEl, 'top', 'top'),\n            scrollBefore = scrolledPastTop ? scrolledPastTop.scrollTop : void 0;\n\n        if (lastTarget !== target) {\n          targetBeforeFirstSwap = targetRect[side1];\n          pastFirstInvertThresh = false;\n          isCircumstantialInvert = !differentRowCol && options.invertSwap || differentLevel;\n        }\n\n        direction = _getSwapDirection(evt, target, targetRect, vertical, differentRowCol ? 1 : options.swapThreshold, options.invertedSwapThreshold == null ? options.swapThreshold : options.invertedSwapThreshold, isCircumstantialInvert, lastTarget === target);\n        var sibling;\n\n        if (direction !== 0) {\n          // Check if target is beside dragEl in respective direction (ignoring hidden elements)\n          var dragIndex = index(dragEl);\n\n          do {\n            dragIndex -= direction;\n            sibling = parentEl.children[dragIndex];\n          } while (sibling && (css(sibling, 'display') === 'none' || sibling === ghostEl));\n        } // If dragEl is already beside target: Do not insert\n\n\n        if (direction === 0 || sibling === target) {\n          return completed(false);\n        }\n\n        lastTarget = target;\n        lastDirection = direction;\n        var nextSibling = target.nextElementSibling,\n            after = false;\n        after = direction === 1;\n\n        var moveVector = _onMove(rootEl, el, dragEl, dragRect, target, targetRect, evt, after);\n\n        if (moveVector !== false) {\n          if (moveVector === 1 || moveVector === -1) {\n            after = moveVector === 1;\n          }\n\n          _silent = true;\n          setTimeout(_unsilent, 30);\n          capture();\n\n          if (after && !nextSibling) {\n            el.appendChild(dragEl);\n          } else {\n            target.parentNode.insertBefore(dragEl, after ? nextSibling : target);\n          } // Undo chrome's scroll adjustment (has no effect on other browsers)\n\n\n          if (scrolledPastTop) {\n            scrollBy(scrolledPastTop, 0, scrollBefore - scrolledPastTop.scrollTop);\n          }\n\n          parentEl = dragEl.parentNode; // actualization\n          // must be done before animation\n\n          if (targetBeforeFirstSwap !== undefined && !isCircumstantialInvert) {\n            targetMoveDistance = Math.abs(targetBeforeFirstSwap - getRect(target)[side1]);\n          }\n\n          changed();\n          return completed(true);\n        }\n      }\n\n      if (el.contains(dragEl)) {\n        return completed(false);\n      }\n    }\n\n    return false;\n  },\n  _ignoreWhileAnimating: null,\n  _offMoveEvents: function _offMoveEvents() {\n    off(document, 'mousemove', this._onTouchMove);\n    off(document, 'touchmove', this._onTouchMove);\n    off(document, 'pointermove', this._onTouchMove);\n    off(document, 'dragover', nearestEmptyInsertDetectEvent);\n    off(document, 'mousemove', nearestEmptyInsertDetectEvent);\n    off(document, 'touchmove', nearestEmptyInsertDetectEvent);\n  },\n  _offUpEvents: function _offUpEvents() {\n    var ownerDocument = this.el.ownerDocument;\n    off(ownerDocument, 'mouseup', this._onDrop);\n    off(ownerDocument, 'touchend', this._onDrop);\n    off(ownerDocument, 'pointerup', this._onDrop);\n    off(ownerDocument, 'touchcancel', this._onDrop);\n    off(document, 'selectstart', this);\n  },\n  _onDrop: function _onDrop(\n  /**Event*/\n  evt) {\n    var el = this.el,\n        options = this.options; // Get the index of the dragged element within its parent\n\n    newIndex = index(dragEl);\n    newDraggableIndex = index(dragEl, options.draggable);\n    pluginEvent('drop', this, {\n      evt: evt\n    });\n    parentEl = dragEl && dragEl.parentNode; // Get again after plugin event\n\n    newIndex = index(dragEl);\n    newDraggableIndex = index(dragEl, options.draggable);\n\n    if (Sortable.eventCanceled) {\n      this._nulling();\n\n      return;\n    }\n\n    awaitingDragStarted = false;\n    isCircumstantialInvert = false;\n    pastFirstInvertThresh = false;\n    clearInterval(this._loopId);\n    clearTimeout(this._dragStartTimer);\n\n    _cancelNextTick(this.cloneId);\n\n    _cancelNextTick(this._dragStartId); // Unbind events\n\n\n    if (this.nativeDraggable) {\n      off(document, 'drop', this);\n      off(el, 'dragstart', this._onDragStart);\n    }\n\n    this._offMoveEvents();\n\n    this._offUpEvents();\n\n    if (Safari) {\n      css(document.body, 'user-select', '');\n    }\n\n    css(dragEl, 'transform', '');\n\n    if (evt) {\n      if (moved) {\n        evt.cancelable && evt.preventDefault();\n        !options.dropBubble && evt.stopPropagation();\n      }\n\n      ghostEl && ghostEl.parentNode && ghostEl.parentNode.removeChild(ghostEl);\n\n      if (rootEl === parentEl || putSortable && putSortable.lastPutMode !== 'clone') {\n        // Remove clone(s)\n        cloneEl && cloneEl.parentNode && cloneEl.parentNode.removeChild(cloneEl);\n      }\n\n      if (dragEl) {\n        if (this.nativeDraggable) {\n          off(dragEl, 'dragend', this);\n        }\n\n        _disableDraggable(dragEl);\n\n        dragEl.style['will-change'] = ''; // Remove classes\n        // ghostClass is added in dragStarted\n\n        if (moved && !awaitingDragStarted) {\n          toggleClass(dragEl, putSortable ? putSortable.options.ghostClass : this.options.ghostClass, false);\n        }\n\n        toggleClass(dragEl, this.options.chosenClass, false); // Drag stop event\n\n        _dispatchEvent({\n          sortable: this,\n          name: 'unchoose',\n          toEl: parentEl,\n          newIndex: null,\n          newDraggableIndex: null,\n          originalEvent: evt\n        });\n\n        if (rootEl !== parentEl) {\n          if (newIndex >= 0) {\n            // Add event\n            _dispatchEvent({\n              rootEl: parentEl,\n              name: 'add',\n              toEl: parentEl,\n              fromEl: rootEl,\n              originalEvent: evt\n            }); // Remove event\n\n\n            _dispatchEvent({\n              sortable: this,\n              name: 'remove',\n              toEl: parentEl,\n              originalEvent: evt\n            }); // drag from one list and drop into another\n\n\n            _dispatchEvent({\n              rootEl: parentEl,\n              name: 'sort',\n              toEl: parentEl,\n              fromEl: rootEl,\n              originalEvent: evt\n            });\n\n            _dispatchEvent({\n              sortable: this,\n              name: 'sort',\n              toEl: parentEl,\n              originalEvent: evt\n            });\n          }\n\n          putSortable && putSortable.save();\n        } else {\n          if (newIndex !== oldIndex) {\n            if (newIndex >= 0) {\n              // drag & drop within the same list\n              _dispatchEvent({\n                sortable: this,\n                name: 'update',\n                toEl: parentEl,\n                originalEvent: evt\n              });\n\n              _dispatchEvent({\n                sortable: this,\n                name: 'sort',\n                toEl: parentEl,\n                originalEvent: evt\n              });\n            }\n          }\n        }\n\n        if (Sortable.active) {\n          /* jshint eqnull:true */\n          if (newIndex == null || newIndex === -1) {\n            newIndex = oldIndex;\n            newDraggableIndex = oldDraggableIndex;\n          }\n\n          _dispatchEvent({\n            sortable: this,\n            name: 'end',\n            toEl: parentEl,\n            originalEvent: evt\n          }); // Save sorting\n\n\n          this.save();\n        }\n      }\n    }\n\n    this._nulling();\n  },\n  _nulling: function _nulling() {\n    pluginEvent('nulling', this);\n    rootEl = dragEl = parentEl = ghostEl = nextEl = cloneEl = lastDownEl = cloneHidden = tapEvt = touchEvt = moved = newIndex = newDraggableIndex = oldIndex = oldDraggableIndex = lastTarget = lastDirection = putSortable = activeGroup = Sortable.dragged = Sortable.ghost = Sortable.clone = Sortable.active = null;\n    savedInputChecked.forEach(function (el) {\n      el.checked = true;\n    });\n    savedInputChecked.length = lastDx = lastDy = 0;\n  },\n  handleEvent: function handleEvent(\n  /**Event*/\n  evt) {\n    switch (evt.type) {\n      case 'drop':\n      case 'dragend':\n        this._onDrop(evt);\n\n        break;\n\n      case 'dragenter':\n      case 'dragover':\n        if (dragEl) {\n          this._onDragOver(evt);\n\n          _globalDragOver(evt);\n        }\n\n        break;\n\n      case 'selectstart':\n        evt.preventDefault();\n        break;\n    }\n  },\n\n  /**\n   * Serializes the item into an array of string.\n   * @returns {String[]}\n   */\n  toArray: function toArray() {\n    var order = [],\n        el,\n        children = this.el.children,\n        i = 0,\n        n = children.length,\n        options = this.options;\n\n    for (; i < n; i++) {\n      el = children[i];\n\n      if (closest(el, options.draggable, this.el, false)) {\n        order.push(el.getAttribute(options.dataIdAttr) || _generateId(el));\n      }\n    }\n\n    return order;\n  },\n\n  /**\n   * Sorts the elements according to the array.\n   * @param  {String[]}  order  order of the items\n   */\n  sort: function sort(order) {\n    var items = {},\n        rootEl = this.el;\n    this.toArray().forEach(function (id, i) {\n      var el = rootEl.children[i];\n\n      if (closest(el, this.options.draggable, rootEl, false)) {\n        items[id] = el;\n      }\n    }, this);\n    order.forEach(function (id) {\n      if (items[id]) {\n        rootEl.removeChild(items[id]);\n        rootEl.appendChild(items[id]);\n      }\n    });\n  },\n\n  /**\n   * Save the current sorting\n   */\n  save: function save() {\n    var store = this.options.store;\n    store && store.set && store.set(this);\n  },\n\n  /**\n   * For each element in the set, get the first element that matches the selector by testing the element itself and traversing up through its ancestors in the DOM tree.\n   * @param   {HTMLElement}  el\n   * @param   {String}       [selector]  default: `options.draggable`\n   * @returns {HTMLElement|null}\n   */\n  closest: function closest$1(el, selector) {\n    return closest(el, selector || this.options.draggable, this.el, false);\n  },\n\n  /**\n   * Set/get option\n   * @param   {string} name\n   * @param   {*}      [value]\n   * @returns {*}\n   */\n  option: function option(name, value) {\n    var options = this.options;\n\n    if (value === void 0) {\n      return options[name];\n    } else {\n      var modifiedValue = PluginManager.modifyOption(this, name, value);\n\n      if (typeof modifiedValue !== 'undefined') {\n        options[name] = modifiedValue;\n      } else {\n        options[name] = value;\n      }\n\n      if (name === 'group') {\n        _prepareGroup(options);\n      }\n    }\n  },\n\n  /**\n   * Destroy\n   */\n  destroy: function destroy() {\n    pluginEvent('destroy', this);\n    var el = this.el;\n    el[expando] = null;\n    off(el, 'mousedown', this._onTapStart);\n    off(el, 'touchstart', this._onTapStart);\n    off(el, 'pointerdown', this._onTapStart);\n\n    if (this.nativeDraggable) {\n      off(el, 'dragover', this);\n      off(el, 'dragenter', this);\n    } // Remove draggable attributes\n\n\n    Array.prototype.forEach.call(el.querySelectorAll('[draggable]'), function (el) {\n      el.removeAttribute('draggable');\n    });\n\n    this._onDrop();\n\n    this._disableDelayedDragEvents();\n\n    sortables.splice(sortables.indexOf(this.el), 1);\n    this.el = el = null;\n  },\n  _hideClone: function _hideClone() {\n    if (!cloneHidden) {\n      pluginEvent('hideClone', this);\n      if (Sortable.eventCanceled) return;\n      css(cloneEl, 'display', 'none');\n\n      if (this.options.removeCloneOnHide && cloneEl.parentNode) {\n        cloneEl.parentNode.removeChild(cloneEl);\n      }\n\n      cloneHidden = true;\n    }\n  },\n  _showClone: function _showClone(putSortable) {\n    if (putSortable.lastPutMode !== 'clone') {\n      this._hideClone();\n\n      return;\n    }\n\n    if (cloneHidden) {\n      pluginEvent('showClone', this);\n      if (Sortable.eventCanceled) return; // show clone at dragEl or original position\n\n      if (rootEl.contains(dragEl) && !this.options.group.revertClone) {\n        rootEl.insertBefore(cloneEl, dragEl);\n      } else if (nextEl) {\n        rootEl.insertBefore(cloneEl, nextEl);\n      } else {\n        rootEl.appendChild(cloneEl);\n      }\n\n      if (this.options.group.revertClone) {\n        this.animate(dragEl, cloneEl);\n      }\n\n      css(cloneEl, 'display', '');\n      cloneHidden = false;\n    }\n  }\n};\n\nfunction _globalDragOver(\n/**Event*/\nevt) {\n  if (evt.dataTransfer) {\n    evt.dataTransfer.dropEffect = 'move';\n  }\n\n  evt.cancelable && evt.preventDefault();\n}\n\nfunction _onMove(fromEl, toEl, dragEl, dragRect, targetEl, targetRect, originalEvent, willInsertAfter) {\n  var evt,\n      sortable = fromEl[expando],\n      onMoveFn = sortable.options.onMove,\n      retVal; // Support for new CustomEvent feature\n\n  if (window.CustomEvent && !IE11OrLess && !Edge) {\n    evt = new CustomEvent('move', {\n      bubbles: true,\n      cancelable: true\n    });\n  } else {\n    evt = document.createEvent('Event');\n    evt.initEvent('move', true, true);\n  }\n\n  evt.to = toEl;\n  evt.from = fromEl;\n  evt.dragged = dragEl;\n  evt.draggedRect = dragRect;\n  evt.related = targetEl || toEl;\n  evt.relatedRect = targetRect || getRect(toEl);\n  evt.willInsertAfter = willInsertAfter;\n  evt.originalEvent = originalEvent;\n  fromEl.dispatchEvent(evt);\n\n  if (onMoveFn) {\n    retVal = onMoveFn.call(sortable, evt, originalEvent);\n  }\n\n  return retVal;\n}\n\nfunction _disableDraggable(el) {\n  el.draggable = false;\n}\n\nfunction _unsilent() {\n  _silent = false;\n}\n\nfunction _ghostIsLast(evt, vertical, sortable) {\n  var rect = getRect(lastChild(sortable.el, sortable.options.draggable));\n  var spacer = 10;\n  return vertical ? evt.clientX > rect.right + spacer || evt.clientX <= rect.right && evt.clientY > rect.bottom && evt.clientX >= rect.left : evt.clientX > rect.right && evt.clientY > rect.top || evt.clientX <= rect.right && evt.clientY > rect.bottom + spacer;\n}\n\nfunction _getSwapDirection(evt, target, targetRect, vertical, swapThreshold, invertedSwapThreshold, invertSwap, isLastTarget) {\n  var mouseOnAxis = vertical ? evt.clientY : evt.clientX,\n      targetLength = vertical ? targetRect.height : targetRect.width,\n      targetS1 = vertical ? targetRect.top : targetRect.left,\n      targetS2 = vertical ? targetRect.bottom : targetRect.right,\n      invert = false;\n\n  if (!invertSwap) {\n    // Never invert or create dragEl shadow when target movemenet causes mouse to move past the end of regular swapThreshold\n    if (isLastTarget && targetMoveDistance < targetLength * swapThreshold) {\n      // multiplied only by swapThreshold because mouse will already be inside target by (1 - threshold) * targetLength / 2\n      // check if past first invert threshold on side opposite of lastDirection\n      if (!pastFirstInvertThresh && (lastDirection === 1 ? mouseOnAxis > targetS1 + targetLength * invertedSwapThreshold / 2 : mouseOnAxis < targetS2 - targetLength * invertedSwapThreshold / 2)) {\n        // past first invert threshold, do not restrict inverted threshold to dragEl shadow\n        pastFirstInvertThresh = true;\n      }\n\n      if (!pastFirstInvertThresh) {\n        // dragEl shadow (target move distance shadow)\n        if (lastDirection === 1 ? mouseOnAxis < targetS1 + targetMoveDistance // over dragEl shadow\n        : mouseOnAxis > targetS2 - targetMoveDistance) {\n          return -lastDirection;\n        }\n      } else {\n        invert = true;\n      }\n    } else {\n      // Regular\n      if (mouseOnAxis > targetS1 + targetLength * (1 - swapThreshold) / 2 && mouseOnAxis < targetS2 - targetLength * (1 - swapThreshold) / 2) {\n        return _getInsertDirection(target);\n      }\n    }\n  }\n\n  invert = invert || invertSwap;\n\n  if (invert) {\n    // Invert of regular\n    if (mouseOnAxis < targetS1 + targetLength * invertedSwapThreshold / 2 || mouseOnAxis > targetS2 - targetLength * invertedSwapThreshold / 2) {\n      return mouseOnAxis > targetS1 + targetLength / 2 ? 1 : -1;\n    }\n  }\n\n  return 0;\n}\n/**\n * Gets the direction dragEl must be swapped relative to target in order to make it\n * seem that dragEl has been \"inserted\" into that element's position\n * @param  {HTMLElement} target       The target whose position dragEl is being inserted at\n * @return {Number}                   Direction dragEl must be swapped\n */\n\n\nfunction _getInsertDirection(target) {\n  if (index(dragEl) < index(target)) {\n    return 1;\n  } else {\n    return -1;\n  }\n}\n/**\n * Generate id\n * @param   {HTMLElement} el\n * @returns {String}\n * @private\n */\n\n\nfunction _generateId(el) {\n  var str = el.tagName + el.className + el.src + el.href + el.textContent,\n      i = str.length,\n      sum = 0;\n\n  while (i--) {\n    sum += str.charCodeAt(i);\n  }\n\n  return sum.toString(36);\n}\n\nfunction _saveInputCheckedState(root) {\n  savedInputChecked.length = 0;\n  var inputs = root.getElementsByTagName('input');\n  var idx = inputs.length;\n\n  while (idx--) {\n    var el = inputs[idx];\n    el.checked && savedInputChecked.push(el);\n  }\n}\n\nfunction _nextTick(fn) {\n  return setTimeout(fn, 0);\n}\n\nfunction _cancelNextTick(id) {\n  return clearTimeout(id);\n} // Fixed #973:\n\n\nif (documentExists) {\n  on(document, 'touchmove', function (evt) {\n    if ((Sortable.active || awaitingDragStarted) && evt.cancelable) {\n      evt.preventDefault();\n    }\n  });\n} // Export utils\n\n\nSortable.utils = {\n  on: on,\n  off: off,\n  css: css,\n  find: find,\n  is: function is(el, selector) {\n    return !!closest(el, selector, el, false);\n  },\n  extend: extend,\n  throttle: throttle,\n  closest: closest,\n  toggleClass: toggleClass,\n  clone: clone,\n  index: index,\n  nextTick: _nextTick,\n  cancelNextTick: _cancelNextTick,\n  detectDirection: _detectDirection,\n  getChild: getChild\n};\n/**\n * Get the Sortable instance of an element\n * @param  {HTMLElement} element The element\n * @return {Sortable|undefined}         The instance of Sortable\n */\n\nSortable.get = function (element) {\n  return element[expando];\n};\n/**\n * Mount a plugin to Sortable\n * @param  {...SortablePlugin|SortablePlugin[]} plugins       Plugins being mounted\n */\n\n\nSortable.mount = function () {\n  for (var _len = arguments.length, plugins = new Array(_len), _key = 0; _key < _len; _key++) {\n    plugins[_key] = arguments[_key];\n  }\n\n  if (plugins[0].constructor === Array) plugins = plugins[0];\n  plugins.forEach(function (plugin) {\n    if (!plugin.prototype || !plugin.prototype.constructor) {\n      throw \"Sortable: Mounted plugin must be a constructor function, not \".concat({}.toString.call(plugin));\n    }\n\n    if (plugin.utils) Sortable.utils = _objectSpread({}, Sortable.utils, plugin.utils);\n    PluginManager.mount(plugin);\n  });\n};\n/**\n * Create sortable instance\n * @param {HTMLElement}  el\n * @param {Object}      [options]\n */\n\n\nSortable.create = function (el, options) {\n  return new Sortable(el, options);\n}; // Export\n\n\nSortable.version = version;\n\nvar autoScrolls = [],\n    scrollEl,\n    scrollRootEl,\n    scrolling = false,\n    lastAutoScrollX,\n    lastAutoScrollY,\n    touchEvt$1,\n    pointerElemChangedInterval;\n\nfunction AutoScrollPlugin() {\n  function AutoScroll() {\n    this.defaults = {\n      scroll: true,\n      scrollSensitivity: 30,\n      scrollSpeed: 10,\n      bubbleScroll: true\n    }; // Bind all private methods\n\n    for (var fn in this) {\n      if (fn.charAt(0) === '_' && typeof this[fn] === 'function') {\n        this[fn] = this[fn].bind(this);\n      }\n    }\n  }\n\n  AutoScroll.prototype = {\n    dragStarted: function dragStarted(_ref) {\n      var originalEvent = _ref.originalEvent;\n\n      if (this.sortable.nativeDraggable) {\n        on(document, 'dragover', this._handleAutoScroll);\n      } else {\n        if (this.options.supportPointer) {\n          on(document, 'pointermove', this._handleFallbackAutoScroll);\n        } else if (originalEvent.touches) {\n          on(document, 'touchmove', this._handleFallbackAutoScroll);\n        } else {\n          on(document, 'mousemove', this._handleFallbackAutoScroll);\n        }\n      }\n    },\n    dragOverCompleted: function dragOverCompleted(_ref2) {\n      var originalEvent = _ref2.originalEvent;\n\n      // For when bubbling is canceled and using fallback (fallback 'touchmove' always reached)\n      if (!this.options.dragOverBubble && !originalEvent.rootEl) {\n        this._handleAutoScroll(originalEvent);\n      }\n    },\n    drop: function drop() {\n      if (this.sortable.nativeDraggable) {\n        off(document, 'dragover', this._handleAutoScroll);\n      } else {\n        off(document, 'pointermove', this._handleFallbackAutoScroll);\n        off(document, 'touchmove', this._handleFallbackAutoScroll);\n        off(document, 'mousemove', this._handleFallbackAutoScroll);\n      }\n\n      clearPointerElemChangedInterval();\n      clearAutoScrolls();\n      cancelThrottle();\n    },\n    nulling: function nulling() {\n      touchEvt$1 = scrollRootEl = scrollEl = scrolling = pointerElemChangedInterval = lastAutoScrollX = lastAutoScrollY = null;\n      autoScrolls.length = 0;\n    },\n    _handleFallbackAutoScroll: function _handleFallbackAutoScroll(evt) {\n      this._handleAutoScroll(evt, true);\n    },\n    _handleAutoScroll: function _handleAutoScroll(evt, fallback) {\n      var _this = this;\n\n      var x = (evt.touches ? evt.touches[0] : evt).clientX,\n          y = (evt.touches ? evt.touches[0] : evt).clientY,\n          elem = document.elementFromPoint(x, y);\n      touchEvt$1 = evt; // IE does not seem to have native autoscroll,\n      // Edge's autoscroll seems too conditional,\n      // MACOS Safari does not have autoscroll,\n      // Firefox and Chrome are good\n\n      if (fallback || Edge || IE11OrLess || Safari) {\n        autoScroll(evt, this.options, elem, fallback); // Listener for pointer element change\n\n        var ogElemScroller = getParentAutoScrollElement(elem, true);\n\n        if (scrolling && (!pointerElemChangedInterval || x !== lastAutoScrollX || y !== lastAutoScrollY)) {\n          pointerElemChangedInterval && clearPointerElemChangedInterval(); // Detect for pointer elem change, emulating native DnD behaviour\n\n          pointerElemChangedInterval = setInterval(function () {\n            var newElem = getParentAutoScrollElement(document.elementFromPoint(x, y), true);\n\n            if (newElem !== ogElemScroller) {\n              ogElemScroller = newElem;\n              clearAutoScrolls();\n            }\n\n            autoScroll(evt, _this.options, newElem, fallback);\n          }, 10);\n          lastAutoScrollX = x;\n          lastAutoScrollY = y;\n        }\n      } else {\n        // if DnD is enabled (and browser has good autoscrolling), first autoscroll will already scroll, so get parent autoscroll of first autoscroll\n        if (!this.options.bubbleScroll || getParentAutoScrollElement(elem, true) === getWindowScrollingElement()) {\n          clearAutoScrolls();\n          return;\n        }\n\n        autoScroll(evt, this.options, getParentAutoScrollElement(elem, false), false);\n      }\n    }\n  };\n  return _extends(AutoScroll, {\n    pluginName: 'scroll',\n    initializeByDefault: true\n  });\n}\n\nfunction clearAutoScrolls() {\n  autoScrolls.forEach(function (autoScroll) {\n    clearInterval(autoScroll.pid);\n  });\n  autoScrolls = [];\n}\n\nfunction clearPointerElemChangedInterval() {\n  clearInterval(pointerElemChangedInterval);\n}\n\nvar autoScroll = throttle(function (evt, options, rootEl, isFallback) {\n  // Bug: https://bugzilla.mozilla.org/show_bug.cgi?id=505521\n  if (!options.scroll) return;\n  var x = (evt.touches ? evt.touches[0] : evt).clientX,\n      y = (evt.touches ? evt.touches[0] : evt).clientY,\n      sens = options.scrollSensitivity,\n      speed = options.scrollSpeed,\n      winScroller = getWindowScrollingElement();\n  var scrollThisInstance = false,\n      scrollCustomFn; // New scroll root, set scrollEl\n\n  if (scrollRootEl !== rootEl) {\n    scrollRootEl = rootEl;\n    clearAutoScrolls();\n    scrollEl = options.scroll;\n    scrollCustomFn = options.scrollFn;\n\n    if (scrollEl === true) {\n      scrollEl = getParentAutoScrollElement(rootEl, true);\n    }\n  }\n\n  var layersOut = 0;\n  var currentParent = scrollEl;\n\n  do {\n    var el = currentParent,\n        rect = getRect(el),\n        top = rect.top,\n        bottom = rect.bottom,\n        left = rect.left,\n        right = rect.right,\n        width = rect.width,\n        height = rect.height,\n        canScrollX = void 0,\n        canScrollY = void 0,\n        scrollWidth = el.scrollWidth,\n        scrollHeight = el.scrollHeight,\n        elCSS = css(el),\n        scrollPosX = el.scrollLeft,\n        scrollPosY = el.scrollTop;\n\n    if (el === winScroller) {\n      canScrollX = width < scrollWidth && (elCSS.overflowX === 'auto' || elCSS.overflowX === 'scroll' || elCSS.overflowX === 'visible');\n      canScrollY = height < scrollHeight && (elCSS.overflowY === 'auto' || elCSS.overflowY === 'scroll' || elCSS.overflowY === 'visible');\n    } else {\n      canScrollX = width < scrollWidth && (elCSS.overflowX === 'auto' || elCSS.overflowX === 'scroll');\n      canScrollY = height < scrollHeight && (elCSS.overflowY === 'auto' || elCSS.overflowY === 'scroll');\n    }\n\n    var vx = canScrollX && (Math.abs(right - x) <= sens && scrollPosX + width < scrollWidth) - (Math.abs(left - x) <= sens && !!scrollPosX);\n    var vy = canScrollY && (Math.abs(bottom - y) <= sens && scrollPosY + height < scrollHeight) - (Math.abs(top - y) <= sens && !!scrollPosY);\n\n    if (!autoScrolls[layersOut]) {\n      for (var i = 0; i <= layersOut; i++) {\n        if (!autoScrolls[i]) {\n          autoScrolls[i] = {};\n        }\n      }\n    }\n\n    if (autoScrolls[layersOut].vx != vx || autoScrolls[layersOut].vy != vy || autoScrolls[layersOut].el !== el) {\n      autoScrolls[layersOut].el = el;\n      autoScrolls[layersOut].vx = vx;\n      autoScrolls[layersOut].vy = vy;\n      clearInterval(autoScrolls[layersOut].pid);\n\n      if (vx != 0 || vy != 0) {\n        scrollThisInstance = true;\n        /* jshint loopfunc:true */\n\n        autoScrolls[layersOut].pid = setInterval(function () {\n          // emulate drag over during autoscroll (fallback), emulating native DnD behaviour\n          if (isFallback && this.layer === 0) {\n            Sortable.active._onTouchMove(touchEvt$1); // To move ghost if it is positioned absolutely\n\n          }\n\n          var scrollOffsetY = autoScrolls[this.layer].vy ? autoScrolls[this.layer].vy * speed : 0;\n          var scrollOffsetX = autoScrolls[this.layer].vx ? autoScrolls[this.layer].vx * speed : 0;\n\n          if (typeof scrollCustomFn === 'function') {\n            if (scrollCustomFn.call(Sortable.dragged.parentNode[expando], scrollOffsetX, scrollOffsetY, evt, touchEvt$1, autoScrolls[this.layer].el) !== 'continue') {\n              return;\n            }\n          }\n\n          scrollBy(autoScrolls[this.layer].el, scrollOffsetX, scrollOffsetY);\n        }.bind({\n          layer: layersOut\n        }), 24);\n      }\n    }\n\n    layersOut++;\n  } while (options.bubbleScroll && currentParent !== winScroller && (currentParent = getParentAutoScrollElement(currentParent, false)));\n\n  scrolling = scrollThisInstance; // in case another function catches scrolling as false in between when it is not\n}, 30);\n\nvar drop = function drop(_ref) {\n  var originalEvent = _ref.originalEvent,\n      putSortable = _ref.putSortable,\n      dragEl = _ref.dragEl,\n      activeSortable = _ref.activeSortable,\n      dispatchSortableEvent = _ref.dispatchSortableEvent,\n      hideGhostForTarget = _ref.hideGhostForTarget,\n      unhideGhostForTarget = _ref.unhideGhostForTarget;\n  if (!originalEvent) return;\n  var toSortable = putSortable || activeSortable;\n  hideGhostForTarget();\n  var touch = originalEvent.changedTouches && originalEvent.changedTouches.length ? originalEvent.changedTouches[0] : originalEvent;\n  var target = document.elementFromPoint(touch.clientX, touch.clientY);\n  unhideGhostForTarget();\n\n  if (toSortable && !toSortable.el.contains(target)) {\n    dispatchSortableEvent('spill');\n    this.onSpill({\n      dragEl: dragEl,\n      putSortable: putSortable\n    });\n  }\n};\n\nfunction Revert() {}\n\nRevert.prototype = {\n  startIndex: null,\n  dragStart: function dragStart(_ref2) {\n    var oldDraggableIndex = _ref2.oldDraggableIndex;\n    this.startIndex = oldDraggableIndex;\n  },\n  onSpill: function onSpill(_ref3) {\n    var dragEl = _ref3.dragEl,\n        putSortable = _ref3.putSortable;\n    this.sortable.captureAnimationState();\n\n    if (putSortable) {\n      putSortable.captureAnimationState();\n    }\n\n    var nextSibling = getChild(this.sortable.el, this.startIndex, this.options);\n\n    if (nextSibling) {\n      this.sortable.el.insertBefore(dragEl, nextSibling);\n    } else {\n      this.sortable.el.appendChild(dragEl);\n    }\n\n    this.sortable.animateAll();\n\n    if (putSortable) {\n      putSortable.animateAll();\n    }\n  },\n  drop: drop\n};\n\n_extends(Revert, {\n  pluginName: 'revertOnSpill'\n});\n\nfunction Remove() {}\n\nRemove.prototype = {\n  onSpill: function onSpill(_ref4) {\n    var dragEl = _ref4.dragEl,\n        putSortable = _ref4.putSortable;\n    var parentSortable = putSortable || this.sortable;\n    parentSortable.captureAnimationState();\n    dragEl.parentNode && dragEl.parentNode.removeChild(dragEl);\n    parentSortable.animateAll();\n  },\n  drop: drop\n};\n\n_extends(Remove, {\n  pluginName: 'removeOnSpill'\n});\n\nvar lastSwapEl;\n\nfunction SwapPlugin() {\n  function Swap() {\n    this.defaults = {\n      swapClass: 'sortable-swap-highlight'\n    };\n  }\n\n  Swap.prototype = {\n    dragStart: function dragStart(_ref) {\n      var dragEl = _ref.dragEl;\n      lastSwapEl = dragEl;\n    },\n    dragOverValid: function dragOverValid(_ref2) {\n      var completed = _ref2.completed,\n          target = _ref2.target,\n          onMove = _ref2.onMove,\n          activeSortable = _ref2.activeSortable,\n          changed = _ref2.changed,\n          cancel = _ref2.cancel;\n      if (!activeSortable.options.swap) return;\n      var el = this.sortable.el,\n          options = this.options;\n\n      if (target && target !== el) {\n        var prevSwapEl = lastSwapEl;\n\n        if (onMove(target) !== false) {\n          toggleClass(target, options.swapClass, true);\n          lastSwapEl = target;\n        } else {\n          lastSwapEl = null;\n        }\n\n        if (prevSwapEl && prevSwapEl !== lastSwapEl) {\n          toggleClass(prevSwapEl, options.swapClass, false);\n        }\n      }\n\n      changed();\n      completed(true);\n      cancel();\n    },\n    drop: function drop(_ref3) {\n      var activeSortable = _ref3.activeSortable,\n          putSortable = _ref3.putSortable,\n          dragEl = _ref3.dragEl;\n      var toSortable = putSortable || this.sortable;\n      var options = this.options;\n      lastSwapEl && toggleClass(lastSwapEl, options.swapClass, false);\n\n      if (lastSwapEl && (options.swap || putSortable && putSortable.options.swap)) {\n        if (dragEl !== lastSwapEl) {\n          toSortable.captureAnimationState();\n          if (toSortable !== activeSortable) activeSortable.captureAnimationState();\n          swapNodes(dragEl, lastSwapEl);\n          toSortable.animateAll();\n          if (toSortable !== activeSortable) activeSortable.animateAll();\n        }\n      }\n    },\n    nulling: function nulling() {\n      lastSwapEl = null;\n    }\n  };\n  return _extends(Swap, {\n    pluginName: 'swap',\n    eventProperties: function eventProperties() {\n      return {\n        swapItem: lastSwapEl\n      };\n    }\n  });\n}\n\nfunction swapNodes(n1, n2) {\n  var p1 = n1.parentNode,\n      p2 = n2.parentNode,\n      i1,\n      i2;\n  if (!p1 || !p2 || p1.isEqualNode(n2) || p2.isEqualNode(n1)) return;\n  i1 = index(n1);\n  i2 = index(n2);\n\n  if (p1.isEqualNode(p2) && i1 < i2) {\n    i2++;\n  }\n\n  p1.insertBefore(n2, p1.children[i1]);\n  p2.insertBefore(n1, p2.children[i2]);\n}\n\nvar multiDragElements = [],\n    multiDragClones = [],\n    lastMultiDragSelect,\n    // for selection with modifier key down (SHIFT)\nmultiDragSortable,\n    initialFolding = false,\n    // Initial multi-drag fold when drag started\nfolding = false,\n    // Folding any other time\ndragStarted = false,\n    dragEl$1,\n    clonesFromRect,\n    clonesHidden;\n\nfunction MultiDragPlugin() {\n  function MultiDrag(sortable) {\n    // Bind all private methods\n    for (var fn in this) {\n      if (fn.charAt(0) === '_' && typeof this[fn] === 'function') {\n        this[fn] = this[fn].bind(this);\n      }\n    }\n\n    if (sortable.options.supportPointer) {\n      on(document, 'pointerup', this._deselectMultiDrag);\n    } else {\n      on(document, 'mouseup', this._deselectMultiDrag);\n      on(document, 'touchend', this._deselectMultiDrag);\n    }\n\n    on(document, 'keydown', this._checkKeyDown);\n    on(document, 'keyup', this._checkKeyUp);\n    this.defaults = {\n      selectedClass: 'sortable-selected',\n      multiDragKey: null,\n      setData: function setData(dataTransfer, dragEl) {\n        var data = '';\n\n        if (multiDragElements.length && multiDragSortable === sortable) {\n          multiDragElements.forEach(function (multiDragElement, i) {\n            data += (!i ? '' : ', ') + multiDragElement.textContent;\n          });\n        } else {\n          data = dragEl.textContent;\n        }\n\n        dataTransfer.setData('Text', data);\n      }\n    };\n  }\n\n  MultiDrag.prototype = {\n    multiDragKeyDown: false,\n    isMultiDrag: false,\n    delayStartGlobal: function delayStartGlobal(_ref) {\n      var dragged = _ref.dragEl;\n      dragEl$1 = dragged;\n    },\n    delayEnded: function delayEnded() {\n      this.isMultiDrag = ~multiDragElements.indexOf(dragEl$1);\n    },\n    setupClone: function setupClone(_ref2) {\n      var sortable = _ref2.sortable,\n          cancel = _ref2.cancel;\n      if (!this.isMultiDrag) return;\n\n      for (var i = 0; i < multiDragElements.length; i++) {\n        multiDragClones.push(clone(multiDragElements[i]));\n        multiDragClones[i].sortableIndex = multiDragElements[i].sortableIndex;\n        multiDragClones[i].draggable = false;\n        multiDragClones[i].style['will-change'] = '';\n        toggleClass(multiDragClones[i], this.options.selectedClass, false);\n        multiDragElements[i] === dragEl$1 && toggleClass(multiDragClones[i], this.options.chosenClass, false);\n      }\n\n      sortable._hideClone();\n\n      cancel();\n    },\n    clone: function clone(_ref3) {\n      var sortable = _ref3.sortable,\n          rootEl = _ref3.rootEl,\n          dispatchSortableEvent = _ref3.dispatchSortableEvent,\n          cancel = _ref3.cancel;\n      if (!this.isMultiDrag) return;\n\n      if (!this.options.removeCloneOnHide) {\n        if (multiDragElements.length && multiDragSortable === sortable) {\n          insertMultiDragClones(true, rootEl);\n          dispatchSortableEvent('clone');\n          cancel();\n        }\n      }\n    },\n    showClone: function showClone(_ref4) {\n      var cloneNowShown = _ref4.cloneNowShown,\n          rootEl = _ref4.rootEl,\n          cancel = _ref4.cancel;\n      if (!this.isMultiDrag) return;\n      insertMultiDragClones(false, rootEl);\n      multiDragClones.forEach(function (clone) {\n        css(clone, 'display', '');\n      });\n      cloneNowShown();\n      clonesHidden = false;\n      cancel();\n    },\n    hideClone: function hideClone(_ref5) {\n      var _this = this;\n\n      var sortable = _ref5.sortable,\n          cloneNowHidden = _ref5.cloneNowHidden,\n          cancel = _ref5.cancel;\n      if (!this.isMultiDrag) return;\n      multiDragClones.forEach(function (clone) {\n        css(clone, 'display', 'none');\n\n        if (_this.options.removeCloneOnHide && clone.parentNode) {\n          clone.parentNode.removeChild(clone);\n        }\n      });\n      cloneNowHidden();\n      clonesHidden = true;\n      cancel();\n    },\n    dragStartGlobal: function dragStartGlobal(_ref6) {\n      var sortable = _ref6.sortable;\n\n      if (!this.isMultiDrag && multiDragSortable) {\n        multiDragSortable.multiDrag._deselectMultiDrag();\n      }\n\n      multiDragElements.forEach(function (multiDragElement) {\n        multiDragElement.sortableIndex = index(multiDragElement);\n      }); // Sort multi-drag elements\n\n      multiDragElements = multiDragElements.sort(function (a, b) {\n        return a.sortableIndex - b.sortableIndex;\n      });\n      dragStarted = true;\n    },\n    dragStarted: function dragStarted(_ref7) {\n      var _this2 = this;\n\n      var sortable = _ref7.sortable;\n      if (!this.isMultiDrag) return;\n\n      if (this.options.sort) {\n        // Capture rects,\n        // hide multi drag elements (by positioning them absolute),\n        // set multi drag elements rects to dragRect,\n        // show multi drag elements,\n        // animate to rects,\n        // unset rects & remove from DOM\n        sortable.captureAnimationState();\n\n        if (this.options.animation) {\n          multiDragElements.forEach(function (multiDragElement) {\n            if (multiDragElement === dragEl$1) return;\n            css(multiDragElement, 'position', 'absolute');\n          });\n          var dragRect = getRect(dragEl$1, false, true, true);\n          multiDragElements.forEach(function (multiDragElement) {\n            if (multiDragElement === dragEl$1) return;\n            setRect(multiDragElement, dragRect);\n          });\n          folding = true;\n          initialFolding = true;\n        }\n      }\n\n      sortable.animateAll(function () {\n        folding = false;\n        initialFolding = false;\n\n        if (_this2.options.animation) {\n          multiDragElements.forEach(function (multiDragElement) {\n            unsetRect(multiDragElement);\n          });\n        } // Remove all auxiliary multidrag items from el, if sorting enabled\n\n\n        if (_this2.options.sort) {\n          removeMultiDragElements();\n        }\n      });\n    },\n    dragOver: function dragOver(_ref8) {\n      var target = _ref8.target,\n          completed = _ref8.completed,\n          cancel = _ref8.cancel;\n\n      if (folding && ~multiDragElements.indexOf(target)) {\n        completed(false);\n        cancel();\n      }\n    },\n    revert: function revert(_ref9) {\n      var fromSortable = _ref9.fromSortable,\n          rootEl = _ref9.rootEl,\n          sortable = _ref9.sortable,\n          dragRect = _ref9.dragRect;\n\n      if (multiDragElements.length > 1) {\n        // Setup unfold animation\n        multiDragElements.forEach(function (multiDragElement) {\n          sortable.addAnimationState({\n            target: multiDragElement,\n            rect: folding ? getRect(multiDragElement) : dragRect\n          });\n          unsetRect(multiDragElement);\n          multiDragElement.fromRect = dragRect;\n          fromSortable.removeAnimationState(multiDragElement);\n        });\n        folding = false;\n        insertMultiDragElements(!this.options.removeCloneOnHide, rootEl);\n      }\n    },\n    dragOverCompleted: function dragOverCompleted(_ref10) {\n      var sortable = _ref10.sortable,\n          isOwner = _ref10.isOwner,\n          insertion = _ref10.insertion,\n          activeSortable = _ref10.activeSortable,\n          parentEl = _ref10.parentEl,\n          putSortable = _ref10.putSortable;\n      var options = this.options;\n\n      if (insertion) {\n        // Clones must be hidden before folding animation to capture dragRectAbsolute properly\n        if (isOwner) {\n          activeSortable._hideClone();\n        }\n\n        initialFolding = false; // If leaving sort:false root, or already folding - Fold to new location\n\n        if (options.animation && multiDragElements.length > 1 && (folding || !isOwner && !activeSortable.options.sort && !putSortable)) {\n          // Fold: Set all multi drag elements's rects to dragEl's rect when multi-drag elements are invisible\n          var dragRectAbsolute = getRect(dragEl$1, false, true, true);\n          multiDragElements.forEach(function (multiDragElement) {\n            if (multiDragElement === dragEl$1) return;\n            setRect(multiDragElement, dragRectAbsolute); // Move element(s) to end of parentEl so that it does not interfere with multi-drag clones insertion if they are inserted\n            // while folding, and so that we can capture them again because old sortable will no longer be fromSortable\n\n            parentEl.appendChild(multiDragElement);\n          });\n          folding = true;\n        } // Clones must be shown (and check to remove multi drags) after folding when interfering multiDragElements are moved out\n\n\n        if (!isOwner) {\n          // Only remove if not folding (folding will remove them anyways)\n          if (!folding) {\n            removeMultiDragElements();\n          }\n\n          if (multiDragElements.length > 1) {\n            var clonesHiddenBefore = clonesHidden;\n\n            activeSortable._showClone(sortable); // Unfold animation for clones if showing from hidden\n\n\n            if (activeSortable.options.animation && !clonesHidden && clonesHiddenBefore) {\n              multiDragClones.forEach(function (clone) {\n                activeSortable.addAnimationState({\n                  target: clone,\n                  rect: clonesFromRect\n                });\n                clone.fromRect = clonesFromRect;\n                clone.thisAnimationDuration = null;\n              });\n            }\n          } else {\n            activeSortable._showClone(sortable);\n          }\n        }\n      }\n    },\n    dragOverAnimationCapture: function dragOverAnimationCapture(_ref11) {\n      var dragRect = _ref11.dragRect,\n          isOwner = _ref11.isOwner,\n          activeSortable = _ref11.activeSortable;\n      multiDragElements.forEach(function (multiDragElement) {\n        multiDragElement.thisAnimationDuration = null;\n      });\n\n      if (activeSortable.options.animation && !isOwner && activeSortable.multiDrag.isMultiDrag) {\n        clonesFromRect = _extends({}, dragRect);\n        var dragMatrix = matrix(dragEl$1, true);\n        clonesFromRect.top -= dragMatrix.f;\n        clonesFromRect.left -= dragMatrix.e;\n      }\n    },\n    dragOverAnimationComplete: function dragOverAnimationComplete() {\n      if (folding) {\n        folding = false;\n        removeMultiDragElements();\n      }\n    },\n    drop: function drop(_ref12) {\n      var evt = _ref12.originalEvent,\n          rootEl = _ref12.rootEl,\n          parentEl = _ref12.parentEl,\n          sortable = _ref12.sortable,\n          dispatchSortableEvent = _ref12.dispatchSortableEvent,\n          oldIndex = _ref12.oldIndex,\n          putSortable = _ref12.putSortable;\n      var toSortable = putSortable || this.sortable;\n      if (!evt) return;\n      var options = this.options,\n          children = parentEl.children; // Multi-drag selection\n\n      if (!dragStarted) {\n        if (options.multiDragKey && !this.multiDragKeyDown) {\n          this._deselectMultiDrag();\n        }\n\n        toggleClass(dragEl$1, options.selectedClass, !~multiDragElements.indexOf(dragEl$1));\n\n        if (!~multiDragElements.indexOf(dragEl$1)) {\n          multiDragElements.push(dragEl$1);\n          dispatchEvent({\n            sortable: sortable,\n            rootEl: rootEl,\n            name: 'select',\n            targetEl: dragEl$1,\n            originalEvt: evt\n          }); // Modifier activated, select from last to dragEl\n\n          if (evt.shiftKey && lastMultiDragSelect && sortable.el.contains(lastMultiDragSelect)) {\n            var lastIndex = index(lastMultiDragSelect),\n                currentIndex = index(dragEl$1);\n\n            if (~lastIndex && ~currentIndex && lastIndex !== currentIndex) {\n              // Must include lastMultiDragSelect (select it), in case modified selection from no selection\n              // (but previous selection existed)\n              var n, i;\n\n              if (currentIndex > lastIndex) {\n                i = lastIndex;\n                n = currentIndex;\n              } else {\n                i = currentIndex;\n                n = lastIndex + 1;\n              }\n\n              for (; i < n; i++) {\n                if (~multiDragElements.indexOf(children[i])) continue;\n                toggleClass(children[i], options.selectedClass, true);\n                multiDragElements.push(children[i]);\n                dispatchEvent({\n                  sortable: sortable,\n                  rootEl: rootEl,\n                  name: 'select',\n                  targetEl: children[i],\n                  originalEvt: evt\n                });\n              }\n            }\n          } else {\n            lastMultiDragSelect = dragEl$1;\n          }\n\n          multiDragSortable = toSortable;\n        } else {\n          multiDragElements.splice(multiDragElements.indexOf(dragEl$1), 1);\n          lastMultiDragSelect = null;\n          dispatchEvent({\n            sortable: sortable,\n            rootEl: rootEl,\n            name: 'deselect',\n            targetEl: dragEl$1,\n            originalEvt: evt\n          });\n        }\n      } // Multi-drag drop\n\n\n      if (dragStarted && this.isMultiDrag) {\n        // Do not \"unfold\" after around dragEl if reverted\n        if ((parentEl[expando].options.sort || parentEl !== rootEl) && multiDragElements.length > 1) {\n          var dragRect = getRect(dragEl$1),\n              multiDragIndex = index(dragEl$1, ':not(.' + this.options.selectedClass + ')');\n          if (!initialFolding && options.animation) dragEl$1.thisAnimationDuration = null;\n          toSortable.captureAnimationState();\n\n          if (!initialFolding) {\n            if (options.animation) {\n              dragEl$1.fromRect = dragRect;\n              multiDragElements.forEach(function (multiDragElement) {\n                multiDragElement.thisAnimationDuration = null;\n\n                if (multiDragElement !== dragEl$1) {\n                  var rect = folding ? getRect(multiDragElement) : dragRect;\n                  multiDragElement.fromRect = rect; // Prepare unfold animation\n\n                  toSortable.addAnimationState({\n                    target: multiDragElement,\n                    rect: rect\n                  });\n                }\n              });\n            } // Multi drag elements are not necessarily removed from the DOM on drop, so to reinsert\n            // properly they must all be removed\n\n\n            removeMultiDragElements();\n            multiDragElements.forEach(function (multiDragElement) {\n              if (children[multiDragIndex]) {\n                parentEl.insertBefore(multiDragElement, children[multiDragIndex]);\n              } else {\n                parentEl.appendChild(multiDragElement);\n              }\n\n              multiDragIndex++;\n            }); // If initial folding is done, the elements may have changed position because they are now\n            // unfolding around dragEl, even though dragEl may not have his index changed, so update event\n            // must be fired here as Sortable will not.\n\n            if (oldIndex === index(dragEl$1)) {\n              var update = false;\n              multiDragElements.forEach(function (multiDragElement) {\n                if (multiDragElement.sortableIndex !== index(multiDragElement)) {\n                  update = true;\n                  return;\n                }\n              });\n\n              if (update) {\n                dispatchSortableEvent('update');\n              }\n            }\n          } // Must be done after capturing individual rects (scroll bar)\n\n\n          multiDragElements.forEach(function (multiDragElement) {\n            unsetRect(multiDragElement);\n          });\n          toSortable.animateAll();\n        }\n\n        multiDragSortable = toSortable;\n      } // Remove clones if necessary\n\n\n      if (rootEl === parentEl || putSortable && putSortable.lastPutMode !== 'clone') {\n        multiDragClones.forEach(function (clone) {\n          clone.parentNode && clone.parentNode.removeChild(clone);\n        });\n      }\n    },\n    nullingGlobal: function nullingGlobal() {\n      this.isMultiDrag = dragStarted = false;\n      multiDragClones.length = 0;\n    },\n    destroyGlobal: function destroyGlobal() {\n      this._deselectMultiDrag();\n\n      off(document, 'pointerup', this._deselectMultiDrag);\n      off(document, 'mouseup', this._deselectMultiDrag);\n      off(document, 'touchend', this._deselectMultiDrag);\n      off(document, 'keydown', this._checkKeyDown);\n      off(document, 'keyup', this._checkKeyUp);\n    },\n    _deselectMultiDrag: function _deselectMultiDrag(evt) {\n      if (typeof dragStarted !== \"undefined\" && dragStarted) return; // Only deselect if selection is in this sortable\n\n      if (multiDragSortable !== this.sortable) return; // Only deselect if target is not item in this sortable\n\n      if (evt && closest(evt.target, this.options.draggable, this.sortable.el, false)) return; // Only deselect if left click\n\n      if (evt && evt.button !== 0) return;\n\n      while (multiDragElements.length) {\n        var el = multiDragElements[0];\n        toggleClass(el, this.options.selectedClass, false);\n        multiDragElements.shift();\n        dispatchEvent({\n          sortable: this.sortable,\n          rootEl: this.sortable.el,\n          name: 'deselect',\n          targetEl: el,\n          originalEvt: evt\n        });\n      }\n    },\n    _checkKeyDown: function _checkKeyDown(evt) {\n      if (evt.key === this.options.multiDragKey) {\n        this.multiDragKeyDown = true;\n      }\n    },\n    _checkKeyUp: function _checkKeyUp(evt) {\n      if (evt.key === this.options.multiDragKey) {\n        this.multiDragKeyDown = false;\n      }\n    }\n  };\n  return _extends(MultiDrag, {\n    // Static methods & properties\n    pluginName: 'multiDrag',\n    utils: {\n      /**\r\n       * Selects the provided multi-drag item\r\n       * @param  {HTMLElement} el    The element to be selected\r\n       */\n      select: function select(el) {\n        var sortable = el.parentNode[expando];\n        if (!sortable || !sortable.options.multiDrag || ~multiDragElements.indexOf(el)) return;\n\n        if (multiDragSortable && multiDragSortable !== sortable) {\n          multiDragSortable.multiDrag._deselectMultiDrag();\n\n          multiDragSortable = sortable;\n        }\n\n        toggleClass(el, sortable.options.selectedClass, true);\n        multiDragElements.push(el);\n      },\n\n      /**\r\n       * Deselects the provided multi-drag item\r\n       * @param  {HTMLElement} el    The element to be deselected\r\n       */\n      deselect: function deselect(el) {\n        var sortable = el.parentNode[expando],\n            index = multiDragElements.indexOf(el);\n        if (!sortable || !sortable.options.multiDrag || !~index) return;\n        toggleClass(el, sortable.options.selectedClass, false);\n        multiDragElements.splice(index, 1);\n      }\n    },\n    eventProperties: function eventProperties() {\n      var _this3 = this;\n\n      var oldIndicies = [],\n          newIndicies = [];\n      multiDragElements.forEach(function (multiDragElement) {\n        oldIndicies.push({\n          multiDragElement: multiDragElement,\n          index: multiDragElement.sortableIndex\n        }); // multiDragElements will already be sorted if folding\n\n        var newIndex;\n\n        if (folding && multiDragElement !== dragEl$1) {\n          newIndex = -1;\n        } else if (folding) {\n          newIndex = index(multiDragElement, ':not(.' + _this3.options.selectedClass + ')');\n        } else {\n          newIndex = index(multiDragElement);\n        }\n\n        newIndicies.push({\n          multiDragElement: multiDragElement,\n          index: newIndex\n        });\n      });\n      return {\n        items: _toConsumableArray(multiDragElements),\n        clones: [].concat(multiDragClones),\n        oldIndicies: oldIndicies,\n        newIndicies: newIndicies\n      };\n    },\n    optionListeners: {\n      multiDragKey: function multiDragKey(key) {\n        key = key.toLowerCase();\n\n        if (key === 'ctrl') {\n          key = 'Control';\n        } else if (key.length > 1) {\n          key = key.charAt(0).toUpperCase() + key.substr(1);\n        }\n\n        return key;\n      }\n    }\n  });\n}\n\nfunction insertMultiDragElements(clonesInserted, rootEl) {\n  multiDragElements.forEach(function (multiDragElement, i) {\n    var target = rootEl.children[multiDragElement.sortableIndex + (clonesInserted ? Number(i) : 0)];\n\n    if (target) {\n      rootEl.insertBefore(multiDragElement, target);\n    } else {\n      rootEl.appendChild(multiDragElement);\n    }\n  });\n}\n/**\r\n * Insert multi-drag clones\r\n * @param  {[Boolean]} elementsInserted  Whether the multi-drag elements are inserted\r\n * @param  {HTMLElement} rootEl\r\n */\n\n\nfunction insertMultiDragClones(elementsInserted, rootEl) {\n  multiDragClones.forEach(function (clone, i) {\n    var target = rootEl.children[clone.sortableIndex + (elementsInserted ? Number(i) : 0)];\n\n    if (target) {\n      rootEl.insertBefore(clone, target);\n    } else {\n      rootEl.appendChild(clone);\n    }\n  });\n}\n\nfunction removeMultiDragElements() {\n  multiDragElements.forEach(function (multiDragElement) {\n    if (multiDragElement === dragEl$1) return;\n    multiDragElement.parentNode && multiDragElement.parentNode.removeChild(multiDragElement);\n  });\n}\n\nSortable.mount(new AutoScrollPlugin());\nSortable.mount(Remove, Revert);\n\nexport default Sortable;\nexport { MultiDragPlugin as MultiDrag, Sortable, SwapPlugin as Swap };\n","(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory(require(\"sortablejs\"));\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([\"sortablejs\"], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"vuedraggable\"] = factory(require(\"sortablejs\"));\n\telse\n\t\troot[\"vuedraggable\"] = factory(root[\"Sortable\"]);\n})((typeof self !== 'undefined' ? self : this), function(__WEBPACK_EXTERNAL_MODULE_a352__) {\nreturn /******/ (function(modules) { // webpackBootstrap\n/******/ \t// The module cache\n/******/ \tvar installedModules = {};\n/******/\n/******/ \t// The require function\n/******/ \tfunction __webpack_require__(moduleId) {\n/******/\n/******/ \t\t// Check if module is in cache\n/******/ \t\tif(installedModules[moduleId]) {\n/******/ \t\t\treturn installedModules[moduleId].exports;\n/******/ \t\t}\n/******/ \t\t// Create a new module (and put it into the cache)\n/******/ \t\tvar module = installedModules[moduleId] = {\n/******/ \t\t\ti: moduleId,\n/******/ \t\t\tl: false,\n/******/ \t\t\texports: {}\n/******/ \t\t};\n/******/\n/******/ \t\t// Execute the module function\n/******/ \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n/******/\n/******/ \t\t// Flag the module as loaded\n/******/ \t\tmodule.l = true;\n/******/\n/******/ \t\t// Return the exports of the module\n/******/ \t\treturn module.exports;\n/******/ \t}\n/******/\n/******/\n/******/ \t// expose the modules object (__webpack_modules__)\n/******/ \t__webpack_require__.m = modules;\n/******/\n/******/ \t// expose the module cache\n/******/ \t__webpack_require__.c = installedModules;\n/******/\n/******/ \t// define getter function for harmony exports\n/******/ \t__webpack_require__.d = function(exports, name, getter) {\n/******/ \t\tif(!__webpack_require__.o(exports, name)) {\n/******/ \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n/******/ \t\t}\n/******/ \t};\n/******/\n/******/ \t// define __esModule on exports\n/******/ \t__webpack_require__.r = function(exports) {\n/******/ \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n/******/ \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n/******/ \t\t}\n/******/ \t\tObject.defineProperty(exports, '__esModule', { value: true });\n/******/ \t};\n/******/\n/******/ \t// create a fake namespace object\n/******/ \t// mode & 1: value is a module id, require it\n/******/ \t// mode & 2: merge all properties of value into the ns\n/******/ \t// mode & 4: return value when already ns object\n/******/ \t// mode & 8|1: behave like require\n/******/ \t__webpack_require__.t = function(value, mode) {\n/******/ \t\tif(mode & 1) value = __webpack_require__(value);\n/******/ \t\tif(mode & 8) return value;\n/******/ \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n/******/ \t\tvar ns = Object.create(null);\n/******/ \t\t__webpack_require__.r(ns);\n/******/ \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n/******/ \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n/******/ \t\treturn ns;\n/******/ \t};\n/******/\n/******/ \t// getDefaultExport function for compatibility with non-harmony modules\n/******/ \t__webpack_require__.n = function(module) {\n/******/ \t\tvar getter = module && module.__esModule ?\n/******/ \t\t\tfunction getDefault() { return module['default']; } :\n/******/ \t\t\tfunction getModuleExports() { return module; };\n/******/ \t\t__webpack_require__.d(getter, 'a', getter);\n/******/ \t\treturn getter;\n/******/ \t};\n/******/\n/******/ \t// Object.prototype.hasOwnProperty.call\n/******/ \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n/******/\n/******/ \t// __webpack_public_path__\n/******/ \t__webpack_require__.p = \"\";\n/******/\n/******/\n/******/ \t// Load entry module and return exports\n/******/ \treturn __webpack_require__(__webpack_require__.s = \"fb15\");\n/******/ })\n/************************************************************************/\n/******/ ({\n\n/***/ \"01f9\":\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nvar LIBRARY = __webpack_require__(\"2d00\");\nvar $export = __webpack_require__(\"5ca1\");\nvar redefine = __webpack_require__(\"2aba\");\nvar hide = __webpack_require__(\"32e9\");\nvar Iterators = __webpack_require__(\"84f2\");\nvar $iterCreate = __webpack_require__(\"41a0\");\nvar setToStringTag = __webpack_require__(\"7f20\");\nvar getPrototypeOf = __webpack_require__(\"38fd\");\nvar ITERATOR = __webpack_require__(\"2b4c\")('iterator');\nvar BUGGY = !([].keys && 'next' in [].keys()); // Safari has buggy iterators w/o `next`\nvar FF_ITERATOR = '@@iterator';\nvar KEYS = 'keys';\nvar VALUES = 'values';\n\nvar returnThis = function () { return this; };\n\nmodule.exports = function (Base, NAME, Constructor, next, DEFAULT, IS_SET, FORCED) {\n  $iterCreate(Constructor, NAME, next);\n  var getMethod = function (kind) {\n    if (!BUGGY && kind in proto) return proto[kind];\n    switch (kind) {\n      case KEYS: return function keys() { return new Constructor(this, kind); };\n      case VALUES: return function values() { return new Constructor(this, kind); };\n    } return function entries() { return new Constructor(this, kind); };\n  };\n  var TAG = NAME + ' Iterator';\n  var DEF_VALUES = DEFAULT == VALUES;\n  var VALUES_BUG = false;\n  var proto = Base.prototype;\n  var $native = proto[ITERATOR] || proto[FF_ITERATOR] || DEFAULT && proto[DEFAULT];\n  var $default = $native || getMethod(DEFAULT);\n  var $entries = DEFAULT ? !DEF_VALUES ? $default : getMethod('entries') : undefined;\n  var $anyNative = NAME == 'Array' ? proto.entries || $native : $native;\n  var methods, key, IteratorPrototype;\n  // Fix native\n  if ($anyNative) {\n    IteratorPrototype = getPrototypeOf($anyNative.call(new Base()));\n    if (IteratorPrototype !== Object.prototype && IteratorPrototype.next) {\n      // Set @@toStringTag to native iterators\n      setToStringTag(IteratorPrototype, TAG, true);\n      // fix for some old engines\n      if (!LIBRARY && typeof IteratorPrototype[ITERATOR] != 'function') hide(IteratorPrototype, ITERATOR, returnThis);\n    }\n  }\n  // fix Array#{values, @@iterator}.name in V8 / FF\n  if (DEF_VALUES && $native && $native.name !== VALUES) {\n    VALUES_BUG = true;\n    $default = function values() { return $native.call(this); };\n  }\n  // Define iterator\n  if ((!LIBRARY || FORCED) && (BUGGY || VALUES_BUG || !proto[ITERATOR])) {\n    hide(proto, ITERATOR, $default);\n  }\n  // Plug for library\n  Iterators[NAME] = $default;\n  Iterators[TAG] = returnThis;\n  if (DEFAULT) {\n    methods = {\n      values: DEF_VALUES ? $default : getMethod(VALUES),\n      keys: IS_SET ? $default : getMethod(KEYS),\n      entries: $entries\n    };\n    if (FORCED) for (key in methods) {\n      if (!(key in proto)) redefine(proto, key, methods[key]);\n    } else $export($export.P + $export.F * (BUGGY || VALUES_BUG), NAME, methods);\n  }\n  return methods;\n};\n\n\n/***/ }),\n\n/***/ \"02f4\":\n/***/ (function(module, exports, __webpack_require__) {\n\nvar toInteger = __webpack_require__(\"4588\");\nvar defined = __webpack_require__(\"be13\");\n// true  -> String#at\n// false -> String#codePointAt\nmodule.exports = function (TO_STRING) {\n  return function (that, pos) {\n    var s = String(defined(that));\n    var i = toInteger(pos);\n    var l = s.length;\n    var a, b;\n    if (i < 0 || i >= l) return TO_STRING ? '' : undefined;\n    a = s.charCodeAt(i);\n    return a < 0xd800 || a > 0xdbff || i + 1 === l || (b = s.charCodeAt(i + 1)) < 0xdc00 || b > 0xdfff\n      ? TO_STRING ? s.charAt(i) : a\n      : TO_STRING ? s.slice(i, i + 2) : (a - 0xd800 << 10) + (b - 0xdc00) + 0x10000;\n  };\n};\n\n\n/***/ }),\n\n/***/ \"0390\":\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nvar at = __webpack_require__(\"02f4\")(true);\n\n // `AdvanceStringIndex` abstract operation\n// https://tc39.github.io/ecma262/#sec-advancestringindex\nmodule.exports = function (S, index, unicode) {\n  return index + (unicode ? at(S, index).length : 1);\n};\n\n\n/***/ }),\n\n/***/ \"0bfb\":\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n// 21.2.5.3 get RegExp.prototype.flags\nvar anObject = __webpack_require__(\"cb7c\");\nmodule.exports = function () {\n  var that = anObject(this);\n  var result = '';\n  if (that.global) result += 'g';\n  if (that.ignoreCase) result += 'i';\n  if (that.multiline) result += 'm';\n  if (that.unicode) result += 'u';\n  if (that.sticky) result += 'y';\n  return result;\n};\n\n\n/***/ }),\n\n/***/ \"0d58\":\n/***/ (function(module, exports, __webpack_require__) {\n\n// 19.1.2.14 / 15.2.3.14 Object.keys(O)\nvar $keys = __webpack_require__(\"ce10\");\nvar enumBugKeys = __webpack_require__(\"e11e\");\n\nmodule.exports = Object.keys || function keys(O) {\n  return $keys(O, enumBugKeys);\n};\n\n\n/***/ }),\n\n/***/ \"1495\":\n/***/ (function(module, exports, __webpack_require__) {\n\nvar dP = __webpack_require__(\"86cc\");\nvar anObject = __webpack_require__(\"cb7c\");\nvar getKeys = __webpack_require__(\"0d58\");\n\nmodule.exports = __webpack_require__(\"9e1e\") ? Object.defineProperties : function defineProperties(O, Properties) {\n  anObject(O);\n  var keys = getKeys(Properties);\n  var length = keys.length;\n  var i = 0;\n  var P;\n  while (length > i) dP.f(O, P = keys[i++], Properties[P]);\n  return O;\n};\n\n\n/***/ }),\n\n/***/ \"214f\":\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n__webpack_require__(\"b0c5\");\nvar redefine = __webpack_require__(\"2aba\");\nvar hide = __webpack_require__(\"32e9\");\nvar fails = __webpack_require__(\"79e5\");\nvar defined = __webpack_require__(\"be13\");\nvar wks = __webpack_require__(\"2b4c\");\nvar regexpExec = __webpack_require__(\"520a\");\n\nvar SPECIES = wks('species');\n\nvar REPLACE_SUPPORTS_NAMED_GROUPS = !fails(function () {\n  // #replace needs built-in support for named groups.\n  // #match works fine because it just return the exec results, even if it has\n  // a \"grops\" property.\n  var re = /./;\n  re.exec = function () {\n    var result = [];\n    result.groups = { a: '7' };\n    return result;\n  };\n  return ''.replace(re, '$<a>') !== '7';\n});\n\nvar SPLIT_WORKS_WITH_OVERWRITTEN_EXEC = (function () {\n  // Chrome 51 has a buggy \"split\" implementation when RegExp#exec !== nativeExec\n  var re = /(?:)/;\n  var originalExec = re.exec;\n  re.exec = function () { return originalExec.apply(this, arguments); };\n  var result = 'ab'.split(re);\n  return result.length === 2 && result[0] === 'a' && result[1] === 'b';\n})();\n\nmodule.exports = function (KEY, length, exec) {\n  var SYMBOL = wks(KEY);\n\n  var DELEGATES_TO_SYMBOL = !fails(function () {\n    // String methods call symbol-named RegEp methods\n    var O = {};\n    O[SYMBOL] = function () { return 7; };\n    return ''[KEY](O) != 7;\n  });\n\n  var DELEGATES_TO_EXEC = DELEGATES_TO_SYMBOL ? !fails(function () {\n    // Symbol-named RegExp methods call .exec\n    var execCalled = false;\n    var re = /a/;\n    re.exec = function () { execCalled = true; return null; };\n    if (KEY === 'split') {\n      // RegExp[@@split] doesn't call the regex's exec method, but first creates\n      // a new one. We need to return the patched regex when creating the new one.\n      re.constructor = {};\n      re.constructor[SPECIES] = function () { return re; };\n    }\n    re[SYMBOL]('');\n    return !execCalled;\n  }) : undefined;\n\n  if (\n    !DELEGATES_TO_SYMBOL ||\n    !DELEGATES_TO_EXEC ||\n    (KEY === 'replace' && !REPLACE_SUPPORTS_NAMED_GROUPS) ||\n    (KEY === 'split' && !SPLIT_WORKS_WITH_OVERWRITTEN_EXEC)\n  ) {\n    var nativeRegExpMethod = /./[SYMBOL];\n    var fns = exec(\n      defined,\n      SYMBOL,\n      ''[KEY],\n      function maybeCallNative(nativeMethod, regexp, str, arg2, forceStringMethod) {\n        if (regexp.exec === regexpExec) {\n          if (DELEGATES_TO_SYMBOL && !forceStringMethod) {\n            // The native String method already delegates to @@method (this\n            // polyfilled function), leasing to infinite recursion.\n            // We avoid it by directly calling the native @@method method.\n            return { done: true, value: nativeRegExpMethod.call(regexp, str, arg2) };\n          }\n          return { done: true, value: nativeMethod.call(str, regexp, arg2) };\n        }\n        return { done: false };\n      }\n    );\n    var strfn = fns[0];\n    var rxfn = fns[1];\n\n    redefine(String.prototype, KEY, strfn);\n    hide(RegExp.prototype, SYMBOL, length == 2\n      // 21.2.5.8 RegExp.prototype[@@replace](string, replaceValue)\n      // 21.2.5.11 RegExp.prototype[@@split](string, limit)\n      ? function (string, arg) { return rxfn.call(string, this, arg); }\n      // 21.2.5.6 RegExp.prototype[@@match](string)\n      // 21.2.5.9 RegExp.prototype[@@search](string)\n      : function (string) { return rxfn.call(string, this); }\n    );\n  }\n};\n\n\n/***/ }),\n\n/***/ \"230e\":\n/***/ (function(module, exports, __webpack_require__) {\n\nvar isObject = __webpack_require__(\"d3f4\");\nvar document = __webpack_require__(\"7726\").document;\n// typeof document.createElement is 'object' in old IE\nvar is = isObject(document) && isObject(document.createElement);\nmodule.exports = function (it) {\n  return is ? document.createElement(it) : {};\n};\n\n\n/***/ }),\n\n/***/ \"23c6\":\n/***/ (function(module, exports, __webpack_require__) {\n\n// getting tag from 19.1.3.6 Object.prototype.toString()\nvar cof = __webpack_require__(\"2d95\");\nvar TAG = __webpack_require__(\"2b4c\")('toStringTag');\n// ES3 wrong here\nvar ARG = cof(function () { return arguments; }()) == 'Arguments';\n\n// fallback for IE11 Script Access Denied error\nvar tryGet = function (it, key) {\n  try {\n    return it[key];\n  } catch (e) { /* empty */ }\n};\n\nmodule.exports = function (it) {\n  var O, T, B;\n  return it === undefined ? 'Undefined' : it === null ? 'Null'\n    // @@toStringTag case\n    : typeof (T = tryGet(O = Object(it), TAG)) == 'string' ? T\n    // builtinTag case\n    : ARG ? cof(O)\n    // ES3 arguments fallback\n    : (B = cof(O)) == 'Object' && typeof O.callee == 'function' ? 'Arguments' : B;\n};\n\n\n/***/ }),\n\n/***/ \"2621\":\n/***/ (function(module, exports) {\n\nexports.f = Object.getOwnPropertySymbols;\n\n\n/***/ }),\n\n/***/ \"2aba\":\n/***/ (function(module, exports, __webpack_require__) {\n\nvar global = __webpack_require__(\"7726\");\nvar hide = __webpack_require__(\"32e9\");\nvar has = __webpack_require__(\"69a8\");\nvar SRC = __webpack_require__(\"ca5a\")('src');\nvar $toString = __webpack_require__(\"fa5b\");\nvar TO_STRING = 'toString';\nvar TPL = ('' + $toString).split(TO_STRING);\n\n__webpack_require__(\"8378\").inspectSource = function (it) {\n  return $toString.call(it);\n};\n\n(module.exports = function (O, key, val, safe) {\n  var isFunction = typeof val == 'function';\n  if (isFunction) has(val, 'name') || hide(val, 'name', key);\n  if (O[key] === val) return;\n  if (isFunction) has(val, SRC) || hide(val, SRC, O[key] ? '' + O[key] : TPL.join(String(key)));\n  if (O === global) {\n    O[key] = val;\n  } else if (!safe) {\n    delete O[key];\n    hide(O, key, val);\n  } else if (O[key]) {\n    O[key] = val;\n  } else {\n    hide(O, key, val);\n  }\n// add fake Function#toString for correct work wrapped methods / constructors with methods like LoDash isNative\n})(Function.prototype, TO_STRING, function toString() {\n  return typeof this == 'function' && this[SRC] || $toString.call(this);\n});\n\n\n/***/ }),\n\n/***/ \"2aeb\":\n/***/ (function(module, exports, __webpack_require__) {\n\n// 19.1.2.2 / 15.2.3.5 Object.create(O [, Properties])\nvar anObject = __webpack_require__(\"cb7c\");\nvar dPs = __webpack_require__(\"1495\");\nvar enumBugKeys = __webpack_require__(\"e11e\");\nvar IE_PROTO = __webpack_require__(\"613b\")('IE_PROTO');\nvar Empty = function () { /* empty */ };\nvar PROTOTYPE = 'prototype';\n\n// Create object with fake `null` prototype: use iframe Object with cleared prototype\nvar createDict = function () {\n  // Thrash, waste and sodomy: IE GC bug\n  var iframe = __webpack_require__(\"230e\")('iframe');\n  var i = enumBugKeys.length;\n  var lt = '<';\n  var gt = '>';\n  var iframeDocument;\n  iframe.style.display = 'none';\n  __webpack_require__(\"fab2\").appendChild(iframe);\n  iframe.src = 'javascript:'; // eslint-disable-line no-script-url\n  // createDict = iframe.contentWindow.Object;\n  // html.removeChild(iframe);\n  iframeDocument = iframe.contentWindow.document;\n  iframeDocument.open();\n  iframeDocument.write(lt + 'script' + gt + 'document.F=Object' + lt + '/script' + gt);\n  iframeDocument.close();\n  createDict = iframeDocument.F;\n  while (i--) delete createDict[PROTOTYPE][enumBugKeys[i]];\n  return createDict();\n};\n\nmodule.exports = Object.create || function create(O, Properties) {\n  var result;\n  if (O !== null) {\n    Empty[PROTOTYPE] = anObject(O);\n    result = new Empty();\n    Empty[PROTOTYPE] = null;\n    // add \"__proto__\" for Object.getPrototypeOf polyfill\n    result[IE_PROTO] = O;\n  } else result = createDict();\n  return Properties === undefined ? result : dPs(result, Properties);\n};\n\n\n/***/ }),\n\n/***/ \"2b4c\":\n/***/ (function(module, exports, __webpack_require__) {\n\nvar store = __webpack_require__(\"5537\")('wks');\nvar uid = __webpack_require__(\"ca5a\");\nvar Symbol = __webpack_require__(\"7726\").Symbol;\nvar USE_SYMBOL = typeof Symbol == 'function';\n\nvar $exports = module.exports = function (name) {\n  return store[name] || (store[name] =\n    USE_SYMBOL && Symbol[name] || (USE_SYMBOL ? Symbol : uid)('Symbol.' + name));\n};\n\n$exports.store = store;\n\n\n/***/ }),\n\n/***/ \"2d00\":\n/***/ (function(module, exports) {\n\nmodule.exports = false;\n\n\n/***/ }),\n\n/***/ \"2d95\":\n/***/ (function(module, exports) {\n\nvar toString = {}.toString;\n\nmodule.exports = function (it) {\n  return toString.call(it).slice(8, -1);\n};\n\n\n/***/ }),\n\n/***/ \"2fdb\":\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n// 21.1.3.7 String.prototype.includes(searchString, position = 0)\n\nvar $export = __webpack_require__(\"5ca1\");\nvar context = __webpack_require__(\"d2c8\");\nvar INCLUDES = 'includes';\n\n$export($export.P + $export.F * __webpack_require__(\"5147\")(INCLUDES), 'String', {\n  includes: function includes(searchString /* , position = 0 */) {\n    return !!~context(this, searchString, INCLUDES)\n      .indexOf(searchString, arguments.length > 1 ? arguments[1] : undefined);\n  }\n});\n\n\n/***/ }),\n\n/***/ \"32e9\":\n/***/ (function(module, exports, __webpack_require__) {\n\nvar dP = __webpack_require__(\"86cc\");\nvar createDesc = __webpack_require__(\"4630\");\nmodule.exports = __webpack_require__(\"9e1e\") ? function (object, key, value) {\n  return dP.f(object, key, createDesc(1, value));\n} : function (object, key, value) {\n  object[key] = value;\n  return object;\n};\n\n\n/***/ }),\n\n/***/ \"38fd\":\n/***/ (function(module, exports, __webpack_require__) {\n\n// 19.1.2.9 / 15.2.3.2 Object.getPrototypeOf(O)\nvar has = __webpack_require__(\"69a8\");\nvar toObject = __webpack_require__(\"4bf8\");\nvar IE_PROTO = __webpack_require__(\"613b\")('IE_PROTO');\nvar ObjectProto = Object.prototype;\n\nmodule.exports = Object.getPrototypeOf || function (O) {\n  O = toObject(O);\n  if (has(O, IE_PROTO)) return O[IE_PROTO];\n  if (typeof O.constructor == 'function' && O instanceof O.constructor) {\n    return O.constructor.prototype;\n  } return O instanceof Object ? ObjectProto : null;\n};\n\n\n/***/ }),\n\n/***/ \"41a0\":\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nvar create = __webpack_require__(\"2aeb\");\nvar descriptor = __webpack_require__(\"4630\");\nvar setToStringTag = __webpack_require__(\"7f20\");\nvar IteratorPrototype = {};\n\n// 25.1.2.1.1 %IteratorPrototype%[@@iterator]()\n__webpack_require__(\"32e9\")(IteratorPrototype, __webpack_require__(\"2b4c\")('iterator'), function () { return this; });\n\nmodule.exports = function (Constructor, NAME, next) {\n  Constructor.prototype = create(IteratorPrototype, { next: descriptor(1, next) });\n  setToStringTag(Constructor, NAME + ' Iterator');\n};\n\n\n/***/ }),\n\n/***/ \"456d\":\n/***/ (function(module, exports, __webpack_require__) {\n\n// 19.1.2.14 Object.keys(O)\nvar toObject = __webpack_require__(\"4bf8\");\nvar $keys = __webpack_require__(\"0d58\");\n\n__webpack_require__(\"5eda\")('keys', function () {\n  return function keys(it) {\n    return $keys(toObject(it));\n  };\n});\n\n\n/***/ }),\n\n/***/ \"4588\":\n/***/ (function(module, exports) {\n\n// 7.1.4 ToInteger\nvar ceil = Math.ceil;\nvar floor = Math.floor;\nmodule.exports = function (it) {\n  return isNaN(it = +it) ? 0 : (it > 0 ? floor : ceil)(it);\n};\n\n\n/***/ }),\n\n/***/ \"4630\":\n/***/ (function(module, exports) {\n\nmodule.exports = function (bitmap, value) {\n  return {\n    enumerable: !(bitmap & 1),\n    configurable: !(bitmap & 2),\n    writable: !(bitmap & 4),\n    value: value\n  };\n};\n\n\n/***/ }),\n\n/***/ \"4bf8\":\n/***/ (function(module, exports, __webpack_require__) {\n\n// 7.1.13 ToObject(argument)\nvar defined = __webpack_require__(\"be13\");\nmodule.exports = function (it) {\n  return Object(defined(it));\n};\n\n\n/***/ }),\n\n/***/ \"5147\":\n/***/ (function(module, exports, __webpack_require__) {\n\nvar MATCH = __webpack_require__(\"2b4c\")('match');\nmodule.exports = function (KEY) {\n  var re = /./;\n  try {\n    '/./'[KEY](re);\n  } catch (e) {\n    try {\n      re[MATCH] = false;\n      return !'/./'[KEY](re);\n    } catch (f) { /* empty */ }\n  } return true;\n};\n\n\n/***/ }),\n\n/***/ \"520a\":\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar regexpFlags = __webpack_require__(\"0bfb\");\n\nvar nativeExec = RegExp.prototype.exec;\n// This always refers to the native implementation, because the\n// String#replace polyfill uses ./fix-regexp-well-known-symbol-logic.js,\n// which loads this file before patching the method.\nvar nativeReplace = String.prototype.replace;\n\nvar patchedExec = nativeExec;\n\nvar LAST_INDEX = 'lastIndex';\n\nvar UPDATES_LAST_INDEX_WRONG = (function () {\n  var re1 = /a/,\n      re2 = /b*/g;\n  nativeExec.call(re1, 'a');\n  nativeExec.call(re2, 'a');\n  return re1[LAST_INDEX] !== 0 || re2[LAST_INDEX] !== 0;\n})();\n\n// nonparticipating capturing group, copied from es5-shim's String#split patch.\nvar NPCG_INCLUDED = /()??/.exec('')[1] !== undefined;\n\nvar PATCH = UPDATES_LAST_INDEX_WRONG || NPCG_INCLUDED;\n\nif (PATCH) {\n  patchedExec = function exec(str) {\n    var re = this;\n    var lastIndex, reCopy, match, i;\n\n    if (NPCG_INCLUDED) {\n      reCopy = new RegExp('^' + re.source + '$(?!\\\\s)', regexpFlags.call(re));\n    }\n    if (UPDATES_LAST_INDEX_WRONG) lastIndex = re[LAST_INDEX];\n\n    match = nativeExec.call(re, str);\n\n    if (UPDATES_LAST_INDEX_WRONG && match) {\n      re[LAST_INDEX] = re.global ? match.index + match[0].length : lastIndex;\n    }\n    if (NPCG_INCLUDED && match && match.length > 1) {\n      // Fix browsers whose `exec` methods don't consistently return `undefined`\n      // for NPCG, like IE8. NOTE: This doesn' work for /(.?)?/\n      // eslint-disable-next-line no-loop-func\n      nativeReplace.call(match[0], reCopy, function () {\n        for (i = 1; i < arguments.length - 2; i++) {\n          if (arguments[i] === undefined) match[i] = undefined;\n        }\n      });\n    }\n\n    return match;\n  };\n}\n\nmodule.exports = patchedExec;\n\n\n/***/ }),\n\n/***/ \"52a7\":\n/***/ (function(module, exports) {\n\nexports.f = {}.propertyIsEnumerable;\n\n\n/***/ }),\n\n/***/ \"5537\":\n/***/ (function(module, exports, __webpack_require__) {\n\nvar core = __webpack_require__(\"8378\");\nvar global = __webpack_require__(\"7726\");\nvar SHARED = '__core-js_shared__';\nvar store = global[SHARED] || (global[SHARED] = {});\n\n(module.exports = function (key, value) {\n  return store[key] || (store[key] = value !== undefined ? value : {});\n})('versions', []).push({\n  version: core.version,\n  mode: __webpack_require__(\"2d00\") ? 'pure' : 'global',\n  copyright: '© 2019 Denis Pushkarev (zloirock.ru)'\n});\n\n\n/***/ }),\n\n/***/ \"5ca1\":\n/***/ (function(module, exports, __webpack_require__) {\n\nvar global = __webpack_require__(\"7726\");\nvar core = __webpack_require__(\"8378\");\nvar hide = __webpack_require__(\"32e9\");\nvar redefine = __webpack_require__(\"2aba\");\nvar ctx = __webpack_require__(\"9b43\");\nvar PROTOTYPE = 'prototype';\n\nvar $export = function (type, name, source) {\n  var IS_FORCED = type & $export.F;\n  var IS_GLOBAL = type & $export.G;\n  var IS_STATIC = type & $export.S;\n  var IS_PROTO = type & $export.P;\n  var IS_BIND = type & $export.B;\n  var target = IS_GLOBAL ? global : IS_STATIC ? global[name] || (global[name] = {}) : (global[name] || {})[PROTOTYPE];\n  var exports = IS_GLOBAL ? core : core[name] || (core[name] = {});\n  var expProto = exports[PROTOTYPE] || (exports[PROTOTYPE] = {});\n  var key, own, out, exp;\n  if (IS_GLOBAL) source = name;\n  for (key in source) {\n    // contains in native\n    own = !IS_FORCED && target && target[key] !== undefined;\n    // export native or passed\n    out = (own ? target : source)[key];\n    // bind timers to global for call from export context\n    exp = IS_BIND && own ? ctx(out, global) : IS_PROTO && typeof out == 'function' ? ctx(Function.call, out) : out;\n    // extend global\n    if (target) redefine(target, key, out, type & $export.U);\n    // export\n    if (exports[key] != out) hide(exports, key, exp);\n    if (IS_PROTO && expProto[key] != out) expProto[key] = out;\n  }\n};\nglobal.core = core;\n// type bitmap\n$export.F = 1;   // forced\n$export.G = 2;   // global\n$export.S = 4;   // static\n$export.P = 8;   // proto\n$export.B = 16;  // bind\n$export.W = 32;  // wrap\n$export.U = 64;  // safe\n$export.R = 128; // real proto method for `library`\nmodule.exports = $export;\n\n\n/***/ }),\n\n/***/ \"5eda\":\n/***/ (function(module, exports, __webpack_require__) {\n\n// most Object methods by ES6 should accept primitives\nvar $export = __webpack_require__(\"5ca1\");\nvar core = __webpack_require__(\"8378\");\nvar fails = __webpack_require__(\"79e5\");\nmodule.exports = function (KEY, exec) {\n  var fn = (core.Object || {})[KEY] || Object[KEY];\n  var exp = {};\n  exp[KEY] = exec(fn);\n  $export($export.S + $export.F * fails(function () { fn(1); }), 'Object', exp);\n};\n\n\n/***/ }),\n\n/***/ \"5f1b\":\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar classof = __webpack_require__(\"23c6\");\nvar builtinExec = RegExp.prototype.exec;\n\n // `RegExpExec` abstract operation\n// https://tc39.github.io/ecma262/#sec-regexpexec\nmodule.exports = function (R, S) {\n  var exec = R.exec;\n  if (typeof exec === 'function') {\n    var result = exec.call(R, S);\n    if (typeof result !== 'object') {\n      throw new TypeError('RegExp exec method returned something other than an Object or null');\n    }\n    return result;\n  }\n  if (classof(R) !== 'RegExp') {\n    throw new TypeError('RegExp#exec called on incompatible receiver');\n  }\n  return builtinExec.call(R, S);\n};\n\n\n/***/ }),\n\n/***/ \"613b\":\n/***/ (function(module, exports, __webpack_require__) {\n\nvar shared = __webpack_require__(\"5537\")('keys');\nvar uid = __webpack_require__(\"ca5a\");\nmodule.exports = function (key) {\n  return shared[key] || (shared[key] = uid(key));\n};\n\n\n/***/ }),\n\n/***/ \"626a\":\n/***/ (function(module, exports, __webpack_require__) {\n\n// fallback for non-array-like ES3 and non-enumerable old V8 strings\nvar cof = __webpack_require__(\"2d95\");\n// eslint-disable-next-line no-prototype-builtins\nmodule.exports = Object('z').propertyIsEnumerable(0) ? Object : function (it) {\n  return cof(it) == 'String' ? it.split('') : Object(it);\n};\n\n\n/***/ }),\n\n/***/ \"6762\":\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n// https://github.com/tc39/Array.prototype.includes\nvar $export = __webpack_require__(\"5ca1\");\nvar $includes = __webpack_require__(\"c366\")(true);\n\n$export($export.P, 'Array', {\n  includes: function includes(el /* , fromIndex = 0 */) {\n    return $includes(this, el, arguments.length > 1 ? arguments[1] : undefined);\n  }\n});\n\n__webpack_require__(\"9c6c\")('includes');\n\n\n/***/ }),\n\n/***/ \"6821\":\n/***/ (function(module, exports, __webpack_require__) {\n\n// to indexed object, toObject with fallback for non-array-like ES3 strings\nvar IObject = __webpack_require__(\"626a\");\nvar defined = __webpack_require__(\"be13\");\nmodule.exports = function (it) {\n  return IObject(defined(it));\n};\n\n\n/***/ }),\n\n/***/ \"69a8\":\n/***/ (function(module, exports) {\n\nvar hasOwnProperty = {}.hasOwnProperty;\nmodule.exports = function (it, key) {\n  return hasOwnProperty.call(it, key);\n};\n\n\n/***/ }),\n\n/***/ \"6a99\":\n/***/ (function(module, exports, __webpack_require__) {\n\n// 7.1.1 ToPrimitive(input [, PreferredType])\nvar isObject = __webpack_require__(\"d3f4\");\n// instead of the ES6 spec version, we didn't implement @@toPrimitive case\n// and the second argument - flag - preferred type is a string\nmodule.exports = function (it, S) {\n  if (!isObject(it)) return it;\n  var fn, val;\n  if (S && typeof (fn = it.toString) == 'function' && !isObject(val = fn.call(it))) return val;\n  if (typeof (fn = it.valueOf) == 'function' && !isObject(val = fn.call(it))) return val;\n  if (!S && typeof (fn = it.toString) == 'function' && !isObject(val = fn.call(it))) return val;\n  throw TypeError(\"Can't convert object to primitive value\");\n};\n\n\n/***/ }),\n\n/***/ \"7333\":\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n// 19.1.2.1 Object.assign(target, source, ...)\nvar getKeys = __webpack_require__(\"0d58\");\nvar gOPS = __webpack_require__(\"2621\");\nvar pIE = __webpack_require__(\"52a7\");\nvar toObject = __webpack_require__(\"4bf8\");\nvar IObject = __webpack_require__(\"626a\");\nvar $assign = Object.assign;\n\n// should work with symbols and should have deterministic property order (V8 bug)\nmodule.exports = !$assign || __webpack_require__(\"79e5\")(function () {\n  var A = {};\n  var B = {};\n  // eslint-disable-next-line no-undef\n  var S = Symbol();\n  var K = 'abcdefghijklmnopqrst';\n  A[S] = 7;\n  K.split('').forEach(function (k) { B[k] = k; });\n  return $assign({}, A)[S] != 7 || Object.keys($assign({}, B)).join('') != K;\n}) ? function assign(target, source) { // eslint-disable-line no-unused-vars\n  var T = toObject(target);\n  var aLen = arguments.length;\n  var index = 1;\n  var getSymbols = gOPS.f;\n  var isEnum = pIE.f;\n  while (aLen > index) {\n    var S = IObject(arguments[index++]);\n    var keys = getSymbols ? getKeys(S).concat(getSymbols(S)) : getKeys(S);\n    var length = keys.length;\n    var j = 0;\n    var key;\n    while (length > j) if (isEnum.call(S, key = keys[j++])) T[key] = S[key];\n  } return T;\n} : $assign;\n\n\n/***/ }),\n\n/***/ \"7726\":\n/***/ (function(module, exports) {\n\n// https://github.com/zloirock/core-js/issues/86#issuecomment-115759028\nvar global = module.exports = typeof window != 'undefined' && window.Math == Math\n  ? window : typeof self != 'undefined' && self.Math == Math ? self\n  // eslint-disable-next-line no-new-func\n  : Function('return this')();\nif (typeof __g == 'number') __g = global; // eslint-disable-line no-undef\n\n\n/***/ }),\n\n/***/ \"77f1\":\n/***/ (function(module, exports, __webpack_require__) {\n\nvar toInteger = __webpack_require__(\"4588\");\nvar max = Math.max;\nvar min = Math.min;\nmodule.exports = function (index, length) {\n  index = toInteger(index);\n  return index < 0 ? max(index + length, 0) : min(index, length);\n};\n\n\n/***/ }),\n\n/***/ \"79e5\":\n/***/ (function(module, exports) {\n\nmodule.exports = function (exec) {\n  try {\n    return !!exec();\n  } catch (e) {\n    return true;\n  }\n};\n\n\n/***/ }),\n\n/***/ \"7f20\":\n/***/ (function(module, exports, __webpack_require__) {\n\nvar def = __webpack_require__(\"86cc\").f;\nvar has = __webpack_require__(\"69a8\");\nvar TAG = __webpack_require__(\"2b4c\")('toStringTag');\n\nmodule.exports = function (it, tag, stat) {\n  if (it && !has(it = stat ? it : it.prototype, TAG)) def(it, TAG, { configurable: true, value: tag });\n};\n\n\n/***/ }),\n\n/***/ \"8378\":\n/***/ (function(module, exports) {\n\nvar core = module.exports = { version: '2.6.5' };\nif (typeof __e == 'number') __e = core; // eslint-disable-line no-undef\n\n\n/***/ }),\n\n/***/ \"84f2\":\n/***/ (function(module, exports) {\n\nmodule.exports = {};\n\n\n/***/ }),\n\n/***/ \"86cc\":\n/***/ (function(module, exports, __webpack_require__) {\n\nvar anObject = __webpack_require__(\"cb7c\");\nvar IE8_DOM_DEFINE = __webpack_require__(\"c69a\");\nvar toPrimitive = __webpack_require__(\"6a99\");\nvar dP = Object.defineProperty;\n\nexports.f = __webpack_require__(\"9e1e\") ? Object.defineProperty : function defineProperty(O, P, Attributes) {\n  anObject(O);\n  P = toPrimitive(P, true);\n  anObject(Attributes);\n  if (IE8_DOM_DEFINE) try {\n    return dP(O, P, Attributes);\n  } catch (e) { /* empty */ }\n  if ('get' in Attributes || 'set' in Attributes) throw TypeError('Accessors not supported!');\n  if ('value' in Attributes) O[P] = Attributes.value;\n  return O;\n};\n\n\n/***/ }),\n\n/***/ \"9b43\":\n/***/ (function(module, exports, __webpack_require__) {\n\n// optional / simple context binding\nvar aFunction = __webpack_require__(\"d8e8\");\nmodule.exports = function (fn, that, length) {\n  aFunction(fn);\n  if (that === undefined) return fn;\n  switch (length) {\n    case 1: return function (a) {\n      return fn.call(that, a);\n    };\n    case 2: return function (a, b) {\n      return fn.call(that, a, b);\n    };\n    case 3: return function (a, b, c) {\n      return fn.call(that, a, b, c);\n    };\n  }\n  return function (/* ...args */) {\n    return fn.apply(that, arguments);\n  };\n};\n\n\n/***/ }),\n\n/***/ \"9c6c\":\n/***/ (function(module, exports, __webpack_require__) {\n\n// 22.1.3.31 Array.prototype[@@unscopables]\nvar UNSCOPABLES = __webpack_require__(\"2b4c\")('unscopables');\nvar ArrayProto = Array.prototype;\nif (ArrayProto[UNSCOPABLES] == undefined) __webpack_require__(\"32e9\")(ArrayProto, UNSCOPABLES, {});\nmodule.exports = function (key) {\n  ArrayProto[UNSCOPABLES][key] = true;\n};\n\n\n/***/ }),\n\n/***/ \"9def\":\n/***/ (function(module, exports, __webpack_require__) {\n\n// 7.1.15 ToLength\nvar toInteger = __webpack_require__(\"4588\");\nvar min = Math.min;\nmodule.exports = function (it) {\n  return it > 0 ? min(toInteger(it), 0x1fffffffffffff) : 0; // pow(2, 53) - 1 == 9007199254740991\n};\n\n\n/***/ }),\n\n/***/ \"9e1e\":\n/***/ (function(module, exports, __webpack_require__) {\n\n// Thank's IE8 for his funny defineProperty\nmodule.exports = !__webpack_require__(\"79e5\")(function () {\n  return Object.defineProperty({}, 'a', { get: function () { return 7; } }).a != 7;\n});\n\n\n/***/ }),\n\n/***/ \"a352\":\n/***/ (function(module, exports) {\n\nmodule.exports = __WEBPACK_EXTERNAL_MODULE_a352__;\n\n/***/ }),\n\n/***/ \"a481\":\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar anObject = __webpack_require__(\"cb7c\");\nvar toObject = __webpack_require__(\"4bf8\");\nvar toLength = __webpack_require__(\"9def\");\nvar toInteger = __webpack_require__(\"4588\");\nvar advanceStringIndex = __webpack_require__(\"0390\");\nvar regExpExec = __webpack_require__(\"5f1b\");\nvar max = Math.max;\nvar min = Math.min;\nvar floor = Math.floor;\nvar SUBSTITUTION_SYMBOLS = /\\$([$&`']|\\d\\d?|<[^>]*>)/g;\nvar SUBSTITUTION_SYMBOLS_NO_NAMED = /\\$([$&`']|\\d\\d?)/g;\n\nvar maybeToString = function (it) {\n  return it === undefined ? it : String(it);\n};\n\n// @@replace logic\n__webpack_require__(\"214f\")('replace', 2, function (defined, REPLACE, $replace, maybeCallNative) {\n  return [\n    // `String.prototype.replace` method\n    // https://tc39.github.io/ecma262/#sec-string.prototype.replace\n    function replace(searchValue, replaceValue) {\n      var O = defined(this);\n      var fn = searchValue == undefined ? undefined : searchValue[REPLACE];\n      return fn !== undefined\n        ? fn.call(searchValue, O, replaceValue)\n        : $replace.call(String(O), searchValue, replaceValue);\n    },\n    // `RegExp.prototype[@@replace]` method\n    // https://tc39.github.io/ecma262/#sec-regexp.prototype-@@replace\n    function (regexp, replaceValue) {\n      var res = maybeCallNative($replace, regexp, this, replaceValue);\n      if (res.done) return res.value;\n\n      var rx = anObject(regexp);\n      var S = String(this);\n      var functionalReplace = typeof replaceValue === 'function';\n      if (!functionalReplace) replaceValue = String(replaceValue);\n      var global = rx.global;\n      if (global) {\n        var fullUnicode = rx.unicode;\n        rx.lastIndex = 0;\n      }\n      var results = [];\n      while (true) {\n        var result = regExpExec(rx, S);\n        if (result === null) break;\n        results.push(result);\n        if (!global) break;\n        var matchStr = String(result[0]);\n        if (matchStr === '') rx.lastIndex = advanceStringIndex(S, toLength(rx.lastIndex), fullUnicode);\n      }\n      var accumulatedResult = '';\n      var nextSourcePosition = 0;\n      for (var i = 0; i < results.length; i++) {\n        result = results[i];\n        var matched = String(result[0]);\n        var position = max(min(toInteger(result.index), S.length), 0);\n        var captures = [];\n        // NOTE: This is equivalent to\n        //   captures = result.slice(1).map(maybeToString)\n        // but for some reason `nativeSlice.call(result, 1, result.length)` (called in\n        // the slice polyfill when slicing native arrays) \"doesn't work\" in safari 9 and\n        // causes a crash (https://pastebin.com/N21QzeQA) when trying to debug it.\n        for (var j = 1; j < result.length; j++) captures.push(maybeToString(result[j]));\n        var namedCaptures = result.groups;\n        if (functionalReplace) {\n          var replacerArgs = [matched].concat(captures, position, S);\n          if (namedCaptures !== undefined) replacerArgs.push(namedCaptures);\n          var replacement = String(replaceValue.apply(undefined, replacerArgs));\n        } else {\n          replacement = getSubstitution(matched, S, position, captures, namedCaptures, replaceValue);\n        }\n        if (position >= nextSourcePosition) {\n          accumulatedResult += S.slice(nextSourcePosition, position) + replacement;\n          nextSourcePosition = position + matched.length;\n        }\n      }\n      return accumulatedResult + S.slice(nextSourcePosition);\n    }\n  ];\n\n    // https://tc39.github.io/ecma262/#sec-getsubstitution\n  function getSubstitution(matched, str, position, captures, namedCaptures, replacement) {\n    var tailPos = position + matched.length;\n    var m = captures.length;\n    var symbols = SUBSTITUTION_SYMBOLS_NO_NAMED;\n    if (namedCaptures !== undefined) {\n      namedCaptures = toObject(namedCaptures);\n      symbols = SUBSTITUTION_SYMBOLS;\n    }\n    return $replace.call(replacement, symbols, function (match, ch) {\n      var capture;\n      switch (ch.charAt(0)) {\n        case '$': return '$';\n        case '&': return matched;\n        case '`': return str.slice(0, position);\n        case \"'\": return str.slice(tailPos);\n        case '<':\n          capture = namedCaptures[ch.slice(1, -1)];\n          break;\n        default: // \\d\\d?\n          var n = +ch;\n          if (n === 0) return match;\n          if (n > m) {\n            var f = floor(n / 10);\n            if (f === 0) return match;\n            if (f <= m) return captures[f - 1] === undefined ? ch.charAt(1) : captures[f - 1] + ch.charAt(1);\n            return match;\n          }\n          capture = captures[n - 1];\n      }\n      return capture === undefined ? '' : capture;\n    });\n  }\n});\n\n\n/***/ }),\n\n/***/ \"aae3\":\n/***/ (function(module, exports, __webpack_require__) {\n\n// 7.2.8 IsRegExp(argument)\nvar isObject = __webpack_require__(\"d3f4\");\nvar cof = __webpack_require__(\"2d95\");\nvar MATCH = __webpack_require__(\"2b4c\")('match');\nmodule.exports = function (it) {\n  var isRegExp;\n  return isObject(it) && ((isRegExp = it[MATCH]) !== undefined ? !!isRegExp : cof(it) == 'RegExp');\n};\n\n\n/***/ }),\n\n/***/ \"ac6a\":\n/***/ (function(module, exports, __webpack_require__) {\n\nvar $iterators = __webpack_require__(\"cadf\");\nvar getKeys = __webpack_require__(\"0d58\");\nvar redefine = __webpack_require__(\"2aba\");\nvar global = __webpack_require__(\"7726\");\nvar hide = __webpack_require__(\"32e9\");\nvar Iterators = __webpack_require__(\"84f2\");\nvar wks = __webpack_require__(\"2b4c\");\nvar ITERATOR = wks('iterator');\nvar TO_STRING_TAG = wks('toStringTag');\nvar ArrayValues = Iterators.Array;\n\nvar DOMIterables = {\n  CSSRuleList: true, // TODO: Not spec compliant, should be false.\n  CSSStyleDeclaration: false,\n  CSSValueList: false,\n  ClientRectList: false,\n  DOMRectList: false,\n  DOMStringList: false,\n  DOMTokenList: true,\n  DataTransferItemList: false,\n  FileList: false,\n  HTMLAllCollection: false,\n  HTMLCollection: false,\n  HTMLFormElement: false,\n  HTMLSelectElement: false,\n  MediaList: true, // TODO: Not spec compliant, should be false.\n  MimeTypeArray: false,\n  NamedNodeMap: false,\n  NodeList: true,\n  PaintRequestList: false,\n  Plugin: false,\n  PluginArray: false,\n  SVGLengthList: false,\n  SVGNumberList: false,\n  SVGPathSegList: false,\n  SVGPointList: false,\n  SVGStringList: false,\n  SVGTransformList: false,\n  SourceBufferList: false,\n  StyleSheetList: true, // TODO: Not spec compliant, should be false.\n  TextTrackCueList: false,\n  TextTrackList: false,\n  TouchList: false\n};\n\nfor (var collections = getKeys(DOMIterables), i = 0; i < collections.length; i++) {\n  var NAME = collections[i];\n  var explicit = DOMIterables[NAME];\n  var Collection = global[NAME];\n  var proto = Collection && Collection.prototype;\n  var key;\n  if (proto) {\n    if (!proto[ITERATOR]) hide(proto, ITERATOR, ArrayValues);\n    if (!proto[TO_STRING_TAG]) hide(proto, TO_STRING_TAG, NAME);\n    Iterators[NAME] = ArrayValues;\n    if (explicit) for (key in $iterators) if (!proto[key]) redefine(proto, key, $iterators[key], true);\n  }\n}\n\n\n/***/ }),\n\n/***/ \"b0c5\":\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nvar regexpExec = __webpack_require__(\"520a\");\n__webpack_require__(\"5ca1\")({\n  target: 'RegExp',\n  proto: true,\n  forced: regexpExec !== /./.exec\n}, {\n  exec: regexpExec\n});\n\n\n/***/ }),\n\n/***/ \"be13\":\n/***/ (function(module, exports) {\n\n// 7.2.1 RequireObjectCoercible(argument)\nmodule.exports = function (it) {\n  if (it == undefined) throw TypeError(\"Can't call method on  \" + it);\n  return it;\n};\n\n\n/***/ }),\n\n/***/ \"c366\":\n/***/ (function(module, exports, __webpack_require__) {\n\n// false -> Array#indexOf\n// true  -> Array#includes\nvar toIObject = __webpack_require__(\"6821\");\nvar toLength = __webpack_require__(\"9def\");\nvar toAbsoluteIndex = __webpack_require__(\"77f1\");\nmodule.exports = function (IS_INCLUDES) {\n  return function ($this, el, fromIndex) {\n    var O = toIObject($this);\n    var length = toLength(O.length);\n    var index = toAbsoluteIndex(fromIndex, length);\n    var value;\n    // Array#includes uses SameValueZero equality algorithm\n    // eslint-disable-next-line no-self-compare\n    if (IS_INCLUDES && el != el) while (length > index) {\n      value = O[index++];\n      // eslint-disable-next-line no-self-compare\n      if (value != value) return true;\n    // Array#indexOf ignores holes, Array#includes - not\n    } else for (;length > index; index++) if (IS_INCLUDES || index in O) {\n      if (O[index] === el) return IS_INCLUDES || index || 0;\n    } return !IS_INCLUDES && -1;\n  };\n};\n\n\n/***/ }),\n\n/***/ \"c649\":\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* WEBPACK VAR INJECTION */(function(global) {/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"c\", function() { return insertNodeAt; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"a\", function() { return camelize; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"b\", function() { return console; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"d\", function() { return removeNode; });\n/* harmony import */ var core_js_modules_es6_regexp_replace__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(\"a481\");\n/* harmony import */ var core_js_modules_es6_regexp_replace__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es6_regexp_replace__WEBPACK_IMPORTED_MODULE_0__);\n\n\nfunction getConsole() {\n  if (typeof window !== \"undefined\") {\n    return window.console;\n  }\n\n  return global.console;\n}\n\nvar console = getConsole();\n\nfunction cached(fn) {\n  var cache = Object.create(null);\n  return function cachedFn(str) {\n    var hit = cache[str];\n    return hit || (cache[str] = fn(str));\n  };\n}\n\nvar regex = /-(\\w)/g;\nvar camelize = cached(function (str) {\n  return str.replace(regex, function (_, c) {\n    return c ? c.toUpperCase() : \"\";\n  });\n});\n\nfunction removeNode(node) {\n  if (node.parentElement !== null) {\n    node.parentElement.removeChild(node);\n  }\n}\n\nfunction insertNodeAt(fatherNode, node, position) {\n  var refNode = position === 0 ? fatherNode.children[0] : fatherNode.children[position - 1].nextSibling;\n  fatherNode.insertBefore(node, refNode);\n}\n\n\n/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(\"c8ba\")))\n\n/***/ }),\n\n/***/ \"c69a\":\n/***/ (function(module, exports, __webpack_require__) {\n\nmodule.exports = !__webpack_require__(\"9e1e\") && !__webpack_require__(\"79e5\")(function () {\n  return Object.defineProperty(__webpack_require__(\"230e\")('div'), 'a', { get: function () { return 7; } }).a != 7;\n});\n\n\n/***/ }),\n\n/***/ \"c8ba\":\n/***/ (function(module, exports) {\n\nvar g;\n\n// This works in non-strict mode\ng = (function() {\n\treturn this;\n})();\n\ntry {\n\t// This works if eval is allowed (see CSP)\n\tg = g || new Function(\"return this\")();\n} catch (e) {\n\t// This works if the window reference is available\n\tif (typeof window === \"object\") g = window;\n}\n\n// g can still be undefined, but nothing to do about it...\n// We return undefined, instead of nothing here, so it's\n// easier to handle this case. if(!global) { ...}\n\nmodule.exports = g;\n\n\n/***/ }),\n\n/***/ \"ca5a\":\n/***/ (function(module, exports) {\n\nvar id = 0;\nvar px = Math.random();\nmodule.exports = function (key) {\n  return 'Symbol('.concat(key === undefined ? '' : key, ')_', (++id + px).toString(36));\n};\n\n\n/***/ }),\n\n/***/ \"cadf\":\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nvar addToUnscopables = __webpack_require__(\"9c6c\");\nvar step = __webpack_require__(\"d53b\");\nvar Iterators = __webpack_require__(\"84f2\");\nvar toIObject = __webpack_require__(\"6821\");\n\n// 22.1.3.4 Array.prototype.entries()\n// 22.1.3.13 Array.prototype.keys()\n// 22.1.3.29 Array.prototype.values()\n// 22.1.3.30 Array.prototype[@@iterator]()\nmodule.exports = __webpack_require__(\"01f9\")(Array, 'Array', function (iterated, kind) {\n  this._t = toIObject(iterated); // target\n  this._i = 0;                   // next index\n  this._k = kind;                // kind\n// 22.1.5.2.1 %ArrayIteratorPrototype%.next()\n}, function () {\n  var O = this._t;\n  var kind = this._k;\n  var index = this._i++;\n  if (!O || index >= O.length) {\n    this._t = undefined;\n    return step(1);\n  }\n  if (kind == 'keys') return step(0, index);\n  if (kind == 'values') return step(0, O[index]);\n  return step(0, [index, O[index]]);\n}, 'values');\n\n// argumentsList[@@iterator] is %ArrayProto_values% (9.4.4.6, 9.4.4.7)\nIterators.Arguments = Iterators.Array;\n\naddToUnscopables('keys');\naddToUnscopables('values');\naddToUnscopables('entries');\n\n\n/***/ }),\n\n/***/ \"cb7c\":\n/***/ (function(module, exports, __webpack_require__) {\n\nvar isObject = __webpack_require__(\"d3f4\");\nmodule.exports = function (it) {\n  if (!isObject(it)) throw TypeError(it + ' is not an object!');\n  return it;\n};\n\n\n/***/ }),\n\n/***/ \"ce10\":\n/***/ (function(module, exports, __webpack_require__) {\n\nvar has = __webpack_require__(\"69a8\");\nvar toIObject = __webpack_require__(\"6821\");\nvar arrayIndexOf = __webpack_require__(\"c366\")(false);\nvar IE_PROTO = __webpack_require__(\"613b\")('IE_PROTO');\n\nmodule.exports = function (object, names) {\n  var O = toIObject(object);\n  var i = 0;\n  var result = [];\n  var key;\n  for (key in O) if (key != IE_PROTO) has(O, key) && result.push(key);\n  // Don't enum bug & hidden keys\n  while (names.length > i) if (has(O, key = names[i++])) {\n    ~arrayIndexOf(result, key) || result.push(key);\n  }\n  return result;\n};\n\n\n/***/ }),\n\n/***/ \"d2c8\":\n/***/ (function(module, exports, __webpack_require__) {\n\n// helper for String#{startsWith, endsWith, includes}\nvar isRegExp = __webpack_require__(\"aae3\");\nvar defined = __webpack_require__(\"be13\");\n\nmodule.exports = function (that, searchString, NAME) {\n  if (isRegExp(searchString)) throw TypeError('String#' + NAME + \" doesn't accept regex!\");\n  return String(defined(that));\n};\n\n\n/***/ }),\n\n/***/ \"d3f4\":\n/***/ (function(module, exports) {\n\nmodule.exports = function (it) {\n  return typeof it === 'object' ? it !== null : typeof it === 'function';\n};\n\n\n/***/ }),\n\n/***/ \"d53b\":\n/***/ (function(module, exports) {\n\nmodule.exports = function (done, value) {\n  return { value: value, done: !!done };\n};\n\n\n/***/ }),\n\n/***/ \"d8e8\":\n/***/ (function(module, exports) {\n\nmodule.exports = function (it) {\n  if (typeof it != 'function') throw TypeError(it + ' is not a function!');\n  return it;\n};\n\n\n/***/ }),\n\n/***/ \"e11e\":\n/***/ (function(module, exports) {\n\n// IE 8- don't enum bug keys\nmodule.exports = (\n  'constructor,hasOwnProperty,isPrototypeOf,propertyIsEnumerable,toLocaleString,toString,valueOf'\n).split(',');\n\n\n/***/ }),\n\n/***/ \"f559\":\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n// 21.1.3.18 String.prototype.startsWith(searchString [, position ])\n\nvar $export = __webpack_require__(\"5ca1\");\nvar toLength = __webpack_require__(\"9def\");\nvar context = __webpack_require__(\"d2c8\");\nvar STARTS_WITH = 'startsWith';\nvar $startsWith = ''[STARTS_WITH];\n\n$export($export.P + $export.F * __webpack_require__(\"5147\")(STARTS_WITH), 'String', {\n  startsWith: function startsWith(searchString /* , position = 0 */) {\n    var that = context(this, searchString, STARTS_WITH);\n    var index = toLength(Math.min(arguments.length > 1 ? arguments[1] : undefined, that.length));\n    var search = String(searchString);\n    return $startsWith\n      ? $startsWith.call(that, search, index)\n      : that.slice(index, index + search.length) === search;\n  }\n});\n\n\n/***/ }),\n\n/***/ \"f6fd\":\n/***/ (function(module, exports) {\n\n// document.currentScript polyfill by Adam Miller\n\n// MIT license\n\n(function(document){\n  var currentScript = \"currentScript\",\n      scripts = document.getElementsByTagName('script'); // Live NodeList collection\n\n  // If browser needs currentScript polyfill, add get currentScript() to the document object\n  if (!(currentScript in document)) {\n    Object.defineProperty(document, currentScript, {\n      get: function(){\n\n        // IE 6-10 supports script readyState\n        // IE 10+ support stack trace\n        try { throw new Error(); }\n        catch (err) {\n\n          // Find the second match for the \"at\" string to get file src url from stack.\n          // Specifically works with the format of stack traces in IE.\n          var i, res = ((/.*at [^\\(]*\\((.*):.+:.+\\)$/ig).exec(err.stack) || [false])[1];\n\n          // For all scripts on the page, if src matches or if ready state is interactive, return the script tag\n          for(i in scripts){\n            if(scripts[i].src == res || scripts[i].readyState == \"interactive\"){\n              return scripts[i];\n            }\n          }\n\n          // If no match, return null\n          return null;\n        }\n      }\n    });\n  }\n})(document);\n\n\n/***/ }),\n\n/***/ \"f751\":\n/***/ (function(module, exports, __webpack_require__) {\n\n// 19.1.3.1 Object.assign(target, source)\nvar $export = __webpack_require__(\"5ca1\");\n\n$export($export.S + $export.F, 'Object', { assign: __webpack_require__(\"7333\") });\n\n\n/***/ }),\n\n/***/ \"fa5b\":\n/***/ (function(module, exports, __webpack_require__) {\n\nmodule.exports = __webpack_require__(\"5537\")('native-function-to-string', Function.toString);\n\n\n/***/ }),\n\n/***/ \"fab2\":\n/***/ (function(module, exports, __webpack_require__) {\n\nvar document = __webpack_require__(\"7726\").document;\nmodule.exports = document && document.documentElement;\n\n\n/***/ }),\n\n/***/ \"fb15\":\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n// ESM COMPAT FLAG\n__webpack_require__.r(__webpack_exports__);\n\n// CONCATENATED MODULE: ./node_modules/@vue/cli-service/lib/commands/build/setPublicPath.js\n// This file is imported into lib/wc client bundles.\n\nif (typeof window !== 'undefined') {\n  if (true) {\n    __webpack_require__(\"f6fd\")\n  }\n\n  var setPublicPath_i\n  if ((setPublicPath_i = window.document.currentScript) && (setPublicPath_i = setPublicPath_i.src.match(/(.+\\/)[^/]+\\.js(\\?.*)?$/))) {\n    __webpack_require__.p = setPublicPath_i[1] // eslint-disable-line\n  }\n}\n\n// Indicate to webpack that this file can be concatenated\n/* harmony default export */ var setPublicPath = (null);\n\n// EXTERNAL MODULE: ./node_modules/core-js/modules/es6.object.assign.js\nvar es6_object_assign = __webpack_require__(\"f751\");\n\n// EXTERNAL MODULE: ./node_modules/core-js/modules/es6.string.starts-with.js\nvar es6_string_starts_with = __webpack_require__(\"f559\");\n\n// EXTERNAL MODULE: ./node_modules/core-js/modules/web.dom.iterable.js\nvar web_dom_iterable = __webpack_require__(\"ac6a\");\n\n// EXTERNAL MODULE: ./node_modules/core-js/modules/es6.array.iterator.js\nvar es6_array_iterator = __webpack_require__(\"cadf\");\n\n// EXTERNAL MODULE: ./node_modules/core-js/modules/es6.object.keys.js\nvar es6_object_keys = __webpack_require__(\"456d\");\n\n// CONCATENATED MODULE: ./node_modules/@babel/runtime/helpers/esm/arrayWithHoles.js\nfunction _arrayWithHoles(arr) {\n  if (Array.isArray(arr)) return arr;\n}\n// CONCATENATED MODULE: ./node_modules/@babel/runtime/helpers/esm/iterableToArrayLimit.js\nfunction _iterableToArrayLimit(arr, i) {\n  if (typeof Symbol === \"undefined\" || !(Symbol.iterator in Object(arr))) return;\n  var _arr = [];\n  var _n = true;\n  var _d = false;\n  var _e = undefined;\n\n  try {\n    for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) {\n      _arr.push(_s.value);\n\n      if (i && _arr.length === i) break;\n    }\n  } catch (err) {\n    _d = true;\n    _e = err;\n  } finally {\n    try {\n      if (!_n && _i[\"return\"] != null) _i[\"return\"]();\n    } finally {\n      if (_d) throw _e;\n    }\n  }\n\n  return _arr;\n}\n// CONCATENATED MODULE: ./node_modules/@babel/runtime/helpers/esm/arrayLikeToArray.js\nfunction _arrayLikeToArray(arr, len) {\n  if (len == null || len > arr.length) len = arr.length;\n\n  for (var i = 0, arr2 = new Array(len); i < len; i++) {\n    arr2[i] = arr[i];\n  }\n\n  return arr2;\n}\n// CONCATENATED MODULE: ./node_modules/@babel/runtime/helpers/esm/unsupportedIterableToArray.js\n\nfunction _unsupportedIterableToArray(o, minLen) {\n  if (!o) return;\n  if (typeof o === \"string\") return _arrayLikeToArray(o, minLen);\n  var n = Object.prototype.toString.call(o).slice(8, -1);\n  if (n === \"Object\" && o.constructor) n = o.constructor.name;\n  if (n === \"Map\" || n === \"Set\") return Array.from(o);\n  if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen);\n}\n// CONCATENATED MODULE: ./node_modules/@babel/runtime/helpers/esm/nonIterableRest.js\nfunction _nonIterableRest() {\n  throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}\n// CONCATENATED MODULE: ./node_modules/@babel/runtime/helpers/esm/slicedToArray.js\n\n\n\n\nfunction _slicedToArray(arr, i) {\n  return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest();\n}\n// EXTERNAL MODULE: ./node_modules/core-js/modules/es7.array.includes.js\nvar es7_array_includes = __webpack_require__(\"6762\");\n\n// EXTERNAL MODULE: ./node_modules/core-js/modules/es6.string.includes.js\nvar es6_string_includes = __webpack_require__(\"2fdb\");\n\n// CONCATENATED MODULE: ./node_modules/@babel/runtime/helpers/esm/arrayWithoutHoles.js\n\nfunction _arrayWithoutHoles(arr) {\n  if (Array.isArray(arr)) return _arrayLikeToArray(arr);\n}\n// CONCATENATED MODULE: ./node_modules/@babel/runtime/helpers/esm/iterableToArray.js\nfunction _iterableToArray(iter) {\n  if (typeof Symbol !== \"undefined\" && Symbol.iterator in Object(iter)) return Array.from(iter);\n}\n// CONCATENATED MODULE: ./node_modules/@babel/runtime/helpers/esm/nonIterableSpread.js\nfunction _nonIterableSpread() {\n  throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}\n// CONCATENATED MODULE: ./node_modules/@babel/runtime/helpers/esm/toConsumableArray.js\n\n\n\n\nfunction _toConsumableArray(arr) {\n  return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread();\n}\n// EXTERNAL MODULE: external {\"commonjs\":\"sortablejs\",\"commonjs2\":\"sortablejs\",\"amd\":\"sortablejs\",\"root\":\"Sortable\"}\nvar external_commonjs_sortablejs_commonjs2_sortablejs_amd_sortablejs_root_Sortable_ = __webpack_require__(\"a352\");\nvar external_commonjs_sortablejs_commonjs2_sortablejs_amd_sortablejs_root_Sortable_default = /*#__PURE__*/__webpack_require__.n(external_commonjs_sortablejs_commonjs2_sortablejs_amd_sortablejs_root_Sortable_);\n\n// EXTERNAL MODULE: ./src/util/helper.js\nvar helper = __webpack_require__(\"c649\");\n\n// CONCATENATED MODULE: ./src/vuedraggable.js\n\n\n\n\n\n\n\n\n\n\n\n\nfunction buildAttribute(object, propName, value) {\n  if (value === undefined) {\n    return object;\n  }\n\n  object = object || {};\n  object[propName] = value;\n  return object;\n}\n\nfunction computeVmIndex(vnodes, element) {\n  return vnodes.map(function (elt) {\n    return elt.elm;\n  }).indexOf(element);\n}\n\nfunction _computeIndexes(slots, children, isTransition, footerOffset) {\n  if (!slots) {\n    return [];\n  }\n\n  var elmFromNodes = slots.map(function (elt) {\n    return elt.elm;\n  });\n  var footerIndex = children.length - footerOffset;\n\n  var rawIndexes = _toConsumableArray(children).map(function (elt, idx) {\n    return idx >= footerIndex ? elmFromNodes.length : elmFromNodes.indexOf(elt);\n  });\n\n  return isTransition ? rawIndexes.filter(function (ind) {\n    return ind !== -1;\n  }) : rawIndexes;\n}\n\nfunction emit(evtName, evtData) {\n  var _this = this;\n\n  this.$nextTick(function () {\n    return _this.$emit(evtName.toLowerCase(), evtData);\n  });\n}\n\nfunction delegateAndEmit(evtName) {\n  var _this2 = this;\n\n  return function (evtData) {\n    if (_this2.realList !== null) {\n      _this2[\"onDrag\" + evtName](evtData);\n    }\n\n    emit.call(_this2, evtName, evtData);\n  };\n}\n\nfunction isTransitionName(name) {\n  return [\"transition-group\", \"TransitionGroup\"].includes(name);\n}\n\nfunction vuedraggable_isTransition(slots) {\n  if (!slots || slots.length !== 1) {\n    return false;\n  }\n\n  var _slots = _slicedToArray(slots, 1),\n      componentOptions = _slots[0].componentOptions;\n\n  if (!componentOptions) {\n    return false;\n  }\n\n  return isTransitionName(componentOptions.tag);\n}\n\nfunction getSlot(slot, scopedSlot, key) {\n  return slot[key] || (scopedSlot[key] ? scopedSlot[key]() : undefined);\n}\n\nfunction computeChildrenAndOffsets(children, slot, scopedSlot) {\n  var headerOffset = 0;\n  var footerOffset = 0;\n  var header = getSlot(slot, scopedSlot, \"header\");\n\n  if (header) {\n    headerOffset = header.length;\n    children = children ? [].concat(_toConsumableArray(header), _toConsumableArray(children)) : _toConsumableArray(header);\n  }\n\n  var footer = getSlot(slot, scopedSlot, \"footer\");\n\n  if (footer) {\n    footerOffset = footer.length;\n    children = children ? [].concat(_toConsumableArray(children), _toConsumableArray(footer)) : _toConsumableArray(footer);\n  }\n\n  return {\n    children: children,\n    headerOffset: headerOffset,\n    footerOffset: footerOffset\n  };\n}\n\nfunction getComponentAttributes($attrs, componentData) {\n  var attributes = null;\n\n  var update = function update(name, value) {\n    attributes = buildAttribute(attributes, name, value);\n  };\n\n  var attrs = Object.keys($attrs).filter(function (key) {\n    return key === \"id\" || key.startsWith(\"data-\");\n  }).reduce(function (res, key) {\n    res[key] = $attrs[key];\n    return res;\n  }, {});\n  update(\"attrs\", attrs);\n\n  if (!componentData) {\n    return attributes;\n  }\n\n  var on = componentData.on,\n      props = componentData.props,\n      componentDataAttrs = componentData.attrs;\n  update(\"on\", on);\n  update(\"props\", props);\n  Object.assign(attributes.attrs, componentDataAttrs);\n  return attributes;\n}\n\nvar eventsListened = [\"Start\", \"Add\", \"Remove\", \"Update\", \"End\"];\nvar eventsToEmit = [\"Choose\", \"Unchoose\", \"Sort\", \"Filter\", \"Clone\"];\nvar readonlyProperties = [\"Move\"].concat(eventsListened, eventsToEmit).map(function (evt) {\n  return \"on\" + evt;\n});\nvar draggingElement = null;\nvar props = {\n  options: Object,\n  list: {\n    type: Array,\n    required: false,\n    default: null\n  },\n  value: {\n    type: Array,\n    required: false,\n    default: null\n  },\n  noTransitionOnDrag: {\n    type: Boolean,\n    default: false\n  },\n  clone: {\n    type: Function,\n    default: function _default(original) {\n      return original;\n    }\n  },\n  element: {\n    type: String,\n    default: \"div\"\n  },\n  tag: {\n    type: String,\n    default: null\n  },\n  move: {\n    type: Function,\n    default: null\n  },\n  componentData: {\n    type: Object,\n    required: false,\n    default: null\n  }\n};\nvar draggableComponent = {\n  name: \"draggable\",\n  inheritAttrs: false,\n  props: props,\n  data: function data() {\n    return {\n      transitionMode: false,\n      noneFunctionalComponentMode: false\n    };\n  },\n  render: function render(h) {\n    var slots = this.$slots.default;\n    this.transitionMode = vuedraggable_isTransition(slots);\n\n    var _computeChildrenAndOf = computeChildrenAndOffsets(slots, this.$slots, this.$scopedSlots),\n        children = _computeChildrenAndOf.children,\n        headerOffset = _computeChildrenAndOf.headerOffset,\n        footerOffset = _computeChildrenAndOf.footerOffset;\n\n    this.headerOffset = headerOffset;\n    this.footerOffset = footerOffset;\n    var attributes = getComponentAttributes(this.$attrs, this.componentData);\n    return h(this.getTag(), attributes, children);\n  },\n  created: function created() {\n    if (this.list !== null && this.value !== null) {\n      helper[\"b\" /* console */].error(\"Value and list props are mutually exclusive! Please set one or another.\");\n    }\n\n    if (this.element !== \"div\") {\n      helper[\"b\" /* console */].warn(\"Element props is deprecated please use tag props instead. See https://github.com/SortableJS/Vue.Draggable/blob/master/documentation/migrate.md#element-props\");\n    }\n\n    if (this.options !== undefined) {\n      helper[\"b\" /* console */].warn(\"Options props is deprecated, add sortable options directly as vue.draggable item, or use v-bind. See https://github.com/SortableJS/Vue.Draggable/blob/master/documentation/migrate.md#options-props\");\n    }\n  },\n  mounted: function mounted() {\n    var _this3 = this;\n\n    this.noneFunctionalComponentMode = this.getTag().toLowerCase() !== this.$el.nodeName.toLowerCase() && !this.getIsFunctional();\n\n    if (this.noneFunctionalComponentMode && this.transitionMode) {\n      throw new Error(\"Transition-group inside component is not supported. Please alter tag value or remove transition-group. Current tag value: \".concat(this.getTag()));\n    }\n\n    var optionsAdded = {};\n    eventsListened.forEach(function (elt) {\n      optionsAdded[\"on\" + elt] = delegateAndEmit.call(_this3, elt);\n    });\n    eventsToEmit.forEach(function (elt) {\n      optionsAdded[\"on\" + elt] = emit.bind(_this3, elt);\n    });\n    var attributes = Object.keys(this.$attrs).reduce(function (res, key) {\n      res[Object(helper[\"a\" /* camelize */])(key)] = _this3.$attrs[key];\n      return res;\n    }, {});\n    var options = Object.assign({}, this.options, attributes, optionsAdded, {\n      onMove: function onMove(evt, originalEvent) {\n        return _this3.onDragMove(evt, originalEvent);\n      }\n    });\n    !(\"draggable\" in options) && (options.draggable = \">*\");\n    this._sortable = new external_commonjs_sortablejs_commonjs2_sortablejs_amd_sortablejs_root_Sortable_default.a(this.rootContainer, options);\n    this.computeIndexes();\n  },\n  beforeDestroy: function beforeDestroy() {\n    if (this._sortable !== undefined) this._sortable.destroy();\n  },\n  computed: {\n    rootContainer: function rootContainer() {\n      return this.transitionMode ? this.$el.children[0] : this.$el;\n    },\n    realList: function realList() {\n      return this.list ? this.list : this.value;\n    }\n  },\n  watch: {\n    options: {\n      handler: function handler(newOptionValue) {\n        this.updateOptions(newOptionValue);\n      },\n      deep: true\n    },\n    $attrs: {\n      handler: function handler(newOptionValue) {\n        this.updateOptions(newOptionValue);\n      },\n      deep: true\n    },\n    realList: function realList() {\n      this.computeIndexes();\n    }\n  },\n  methods: {\n    getIsFunctional: function getIsFunctional() {\n      var fnOptions = this._vnode.fnOptions;\n      return fnOptions && fnOptions.functional;\n    },\n    getTag: function getTag() {\n      return this.tag || this.element;\n    },\n    updateOptions: function updateOptions(newOptionValue) {\n      for (var property in newOptionValue) {\n        var value = Object(helper[\"a\" /* camelize */])(property);\n\n        if (readonlyProperties.indexOf(value) === -1) {\n          this._sortable.option(value, newOptionValue[property]);\n        }\n      }\n    },\n    getChildrenNodes: function getChildrenNodes() {\n      if (this.noneFunctionalComponentMode) {\n        return this.$children[0].$slots.default;\n      }\n\n      var rawNodes = this.$slots.default;\n      return this.transitionMode ? rawNodes[0].child.$slots.default : rawNodes;\n    },\n    computeIndexes: function computeIndexes() {\n      var _this4 = this;\n\n      this.$nextTick(function () {\n        _this4.visibleIndexes = _computeIndexes(_this4.getChildrenNodes(), _this4.rootContainer.children, _this4.transitionMode, _this4.footerOffset);\n      });\n    },\n    getUnderlyingVm: function getUnderlyingVm(htmlElt) {\n      var index = computeVmIndex(this.getChildrenNodes() || [], htmlElt);\n\n      if (index === -1) {\n        //Edge case during move callback: related element might be\n        //an element different from collection\n        return null;\n      }\n\n      var element = this.realList[index];\n      return {\n        index: index,\n        element: element\n      };\n    },\n    getUnderlyingPotencialDraggableComponent: function getUnderlyingPotencialDraggableComponent(_ref) {\n      var vue = _ref.__vue__;\n\n      if (!vue || !vue.$options || !isTransitionName(vue.$options._componentTag)) {\n        if (!(\"realList\" in vue) && vue.$children.length === 1 && \"realList\" in vue.$children[0]) return vue.$children[0];\n        return vue;\n      }\n\n      return vue.$parent;\n    },\n    emitChanges: function emitChanges(evt) {\n      var _this5 = this;\n\n      this.$nextTick(function () {\n        _this5.$emit(\"change\", evt);\n      });\n    },\n    alterList: function alterList(onList) {\n      if (this.list) {\n        onList(this.list);\n        return;\n      }\n\n      var newList = _toConsumableArray(this.value);\n\n      onList(newList);\n      this.$emit(\"input\", newList);\n    },\n    spliceList: function spliceList() {\n      var _arguments = arguments;\n\n      var spliceList = function spliceList(list) {\n        return list.splice.apply(list, _toConsumableArray(_arguments));\n      };\n\n      this.alterList(spliceList);\n    },\n    updatePosition: function updatePosition(oldIndex, newIndex) {\n      var updatePosition = function updatePosition(list) {\n        return list.splice(newIndex, 0, list.splice(oldIndex, 1)[0]);\n      };\n\n      this.alterList(updatePosition);\n    },\n    getRelatedContextFromMoveEvent: function getRelatedContextFromMoveEvent(_ref2) {\n      var to = _ref2.to,\n          related = _ref2.related;\n      var component = this.getUnderlyingPotencialDraggableComponent(to);\n\n      if (!component) {\n        return {\n          component: component\n        };\n      }\n\n      var list = component.realList;\n      var context = {\n        list: list,\n        component: component\n      };\n\n      if (to !== related && list && component.getUnderlyingVm) {\n        var destination = component.getUnderlyingVm(related);\n\n        if (destination) {\n          return Object.assign(destination, context);\n        }\n      }\n\n      return context;\n    },\n    getVmIndex: function getVmIndex(domIndex) {\n      var indexes = this.visibleIndexes;\n      var numberIndexes = indexes.length;\n      return domIndex > numberIndexes - 1 ? numberIndexes : indexes[domIndex];\n    },\n    getComponent: function getComponent() {\n      return this.$slots.default[0].componentInstance;\n    },\n    resetTransitionData: function resetTransitionData(index) {\n      if (!this.noTransitionOnDrag || !this.transitionMode) {\n        return;\n      }\n\n      var nodes = this.getChildrenNodes();\n      nodes[index].data = null;\n      var transitionContainer = this.getComponent();\n      transitionContainer.children = [];\n      transitionContainer.kept = undefined;\n    },\n    onDragStart: function onDragStart(evt) {\n      this.context = this.getUnderlyingVm(evt.item);\n      evt.item._underlying_vm_ = this.clone(this.context.element);\n      draggingElement = evt.item;\n    },\n    onDragAdd: function onDragAdd(evt) {\n      var element = evt.item._underlying_vm_;\n\n      if (element === undefined) {\n        return;\n      }\n\n      Object(helper[\"d\" /* removeNode */])(evt.item);\n      var newIndex = this.getVmIndex(evt.newIndex);\n      this.spliceList(newIndex, 0, element);\n      this.computeIndexes();\n      var added = {\n        element: element,\n        newIndex: newIndex\n      };\n      this.emitChanges({\n        added: added\n      });\n    },\n    onDragRemove: function onDragRemove(evt) {\n      Object(helper[\"c\" /* insertNodeAt */])(this.rootContainer, evt.item, evt.oldIndex);\n\n      if (evt.pullMode === \"clone\") {\n        Object(helper[\"d\" /* removeNode */])(evt.clone);\n        return;\n      }\n\n      var oldIndex = this.context.index;\n      this.spliceList(oldIndex, 1);\n      var removed = {\n        element: this.context.element,\n        oldIndex: oldIndex\n      };\n      this.resetTransitionData(oldIndex);\n      this.emitChanges({\n        removed: removed\n      });\n    },\n    onDragUpdate: function onDragUpdate(evt) {\n      Object(helper[\"d\" /* removeNode */])(evt.item);\n      Object(helper[\"c\" /* insertNodeAt */])(evt.from, evt.item, evt.oldIndex);\n      var oldIndex = this.context.index;\n      var newIndex = this.getVmIndex(evt.newIndex);\n      this.updatePosition(oldIndex, newIndex);\n      var moved = {\n        element: this.context.element,\n        oldIndex: oldIndex,\n        newIndex: newIndex\n      };\n      this.emitChanges({\n        moved: moved\n      });\n    },\n    updateProperty: function updateProperty(evt, propertyName) {\n      evt.hasOwnProperty(propertyName) && (evt[propertyName] += this.headerOffset);\n    },\n    computeFutureIndex: function computeFutureIndex(relatedContext, evt) {\n      if (!relatedContext.element) {\n        return 0;\n      }\n\n      var domChildren = _toConsumableArray(evt.to.children).filter(function (el) {\n        return el.style[\"display\"] !== \"none\";\n      });\n\n      var currentDOMIndex = domChildren.indexOf(evt.related);\n      var currentIndex = relatedContext.component.getVmIndex(currentDOMIndex);\n      var draggedInList = domChildren.indexOf(draggingElement) !== -1;\n      return draggedInList || !evt.willInsertAfter ? currentIndex : currentIndex + 1;\n    },\n    onDragMove: function onDragMove(evt, originalEvent) {\n      var onMove = this.move;\n\n      if (!onMove || !this.realList) {\n        return true;\n      }\n\n      var relatedContext = this.getRelatedContextFromMoveEvent(evt);\n      var draggedContext = this.context;\n      var futureIndex = this.computeFutureIndex(relatedContext, evt);\n      Object.assign(draggedContext, {\n        futureIndex: futureIndex\n      });\n      var sendEvt = Object.assign({}, evt, {\n        relatedContext: relatedContext,\n        draggedContext: draggedContext\n      });\n      return onMove(sendEvt, originalEvent);\n    },\n    onDragEnd: function onDragEnd() {\n      this.computeIndexes();\n      draggingElement = null;\n    }\n  }\n};\n\nif (typeof window !== \"undefined\" && \"Vue\" in window) {\n  window.Vue.component(\"draggable\", draggableComponent);\n}\n\n/* harmony default export */ var vuedraggable = (draggableComponent);\n// CONCATENATED MODULE: ./node_modules/@vue/cli-service/lib/commands/build/entry-lib.js\n\n\n/* harmony default export */ var entry_lib = __webpack_exports__[\"default\"] = (vuedraggable);\n\n\n\n/***/ })\n\n/******/ })[\"default\"];\n});\n//# sourceMappingURL=vuedraggable.umd.js.map","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\tid: moduleId,\n\t\tloaded: false,\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n\t// Flag the module as loaded\n\tmodule.loaded = true;\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n// expose the modules object (__webpack_modules__)\n__webpack_require__.m = __webpack_modules__;\n\n","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = (module) => {\n\tvar getter = module && module.__esModule ?\n\t\t() => (module['default']) :\n\t\t() => (module);\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","// The chunk loading function for additional chunks\n// Since all referenced chunks are already included\n// in this file, this function is empty here.\n__webpack_require__.e = () => (Promise.resolve());","__webpack_require__.g = (function() {\n\tif (typeof globalThis === 'object') return globalThis;\n\ttry {\n\t\treturn this || new Function('return this')();\n\t} catch (e) {\n\t\tif (typeof window === 'object') return window;\n\t}\n})();","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","__webpack_require__.nmd = (module) => {\n\tmodule.paths = [];\n\tif (!module.children) module.children = [];\n\treturn module;\n};","__webpack_require__.j = 4773;","__webpack_require__.b = document.baseURI || self.location.href;\n\n// object to store loaded and loading chunks\n// undefined = chunk not loaded, null = chunk preloaded/prefetched\n// [resolve, reject, Promise] = chunk loading, 0 = chunk loaded\nvar installedChunks = {\n\t4773: 0\n};\n\n// no chunk on demand loading\n\n// no prefetching\n\n// no preloaded\n\n// no HMR\n\n// no HMR manifest\n\n__webpack_require__.O.j = (chunkId) => (installedChunks[chunkId] === 0);\n\n// install a JSONP callback for chunk loading\nvar webpackJsonpCallback = (parentChunkLoadingFunction, data) => {\n\tvar chunkIds = data[0];\n\tvar moreModules = data[1];\n\tvar runtime = data[2];\n\t// add \"moreModules\" to the modules object,\n\t// then flag all \"chunkIds\" as loaded and fire callback\n\tvar moduleId, chunkId, i = 0;\n\tif(chunkIds.some((id) => (installedChunks[id] !== 0))) {\n\t\tfor(moduleId in moreModules) {\n\t\t\tif(__webpack_require__.o(moreModules, moduleId)) {\n\t\t\t\t__webpack_require__.m[moduleId] = moreModules[moduleId];\n\t\t\t}\n\t\t}\n\t\tif(runtime) var result = runtime(__webpack_require__);\n\t}\n\tif(parentChunkLoadingFunction) parentChunkLoadingFunction(data);\n\tfor(;i < chunkIds.length; i++) {\n\t\tchunkId = chunkIds[i];\n\t\tif(__webpack_require__.o(installedChunks, chunkId) && installedChunks[chunkId]) {\n\t\t\tinstalledChunks[chunkId][0]();\n\t\t}\n\t\tinstalledChunks[chunkId] = 0;\n\t}\n\treturn __webpack_require__.O(result);\n}\n\nvar chunkLoadingGlobal = self[\"webpackChunknextcloud\"] = self[\"webpackChunknextcloud\"] || [];\nchunkLoadingGlobal.forEach(webpackJsonpCallback.bind(null, 0));\nchunkLoadingGlobal.push = webpackJsonpCallback.bind(null, chunkLoadingGlobal.push.bind(chunkLoadingGlobal));","__webpack_require__.nc = undefined;","// startup\n// Load entry module and return exports\n// This entry module depends on other loaded chunks and execution need to be delayed\nvar __webpack_exports__ = __webpack_require__.O(undefined, [7874], () => (__webpack_require__(1412)))\n__webpack_exports__ = __webpack_require__.O(__webpack_exports__);\n"],"names":["deferred","data","isMobile","this","_isMobile","beforeMount","window","addEventListener","_onResize","beforeDestroy","removeEventListener","methods","document","documentElement","clientWidth","options","styleTagTransform","setAttributes","insert","domAPI","insertStyleElement","locals","r","name","props","required","default","type","String","s","n","t","_self","_c","_setupProxy","staticClass","_v","_s","_e","_t","_","exports","l","mixins","id","validator","trim","checked","Boolean","value","Number","disabled","emits","computed","isFocusable","toggleInput","$refs","label","click","onChange","$emit","radio","e","i","class","ref","focusable","attrs","domProps","on","keydown","a","indexOf","_k","keyCode","key","ctrlKey","shiftKey","altKey","metaKey","preventDefault","apply","arguments","change","for","text","d","components","ArrowRight","computedId","onInput","target","onSubmit","stopPropagation","onClick","isIconUrl","icon","style","backgroundImage","submit","_b","input","$attrs","directives","rawName","expression","size","selection","showDetails","showdetails","color","test","formattedColor","startsWith","o","backgroundColor","NcInputConfirmCancel","NcLoadingIcon","loading","editLabel","editPlaceholder","newItemValue","newItemActive","handleNewItem","$nextTick","newItemInput","focusInput","cancelNewItem","handleNewItemDone","title","placeholder","cancel","confirm","model","callback","fillColor","role","fill","width","height","viewBox","ClickOutside","Cog","open","clickOutsideConfig","closeMenu","clickOutsideOptions","ariaLabel","toggleMenu","C","NcAvatar","NcActions","NcActionButton","targetUrl","avatarUrl","avatarUsername","avatarIsNoUser","overlayIconUrl","mainText","subText","itemMenu","Object","forceMenu","hovered","item","gotMenu","keys","length","$slots","actions","gotOverlayIcon","onLinkClick","closest","mouseover","mouseleave","tag","href","url","user","alt","src","_l","y","NcDashboardWidgetItem","NcEmptyContent","Check","items","Array","showMoreUrl","showMoreLabel","showItemsAndEmptyContent","emptyContentMessage","halfEmptyContentMessage","handlers","displayedItems","maxItemNumber","slice","showHalfEmptyContentArea","halfEmptyContentString","showMore","description","scopedSlots","_u","fn","proxy","_g","_m","tabindex","h","mounted","getElementById","classList","add","destroyed","remove","NcButton","labelTranslated","resourceName","NcResource","providerId","itemId","resourceType","limit","fileInfo","header","primary","appEnabled","OC","appswebroots","related_resources","error","resources","isVisible","subline","hasResourceInfo","isFiles","watch","fetchRelatedResources","created","get","ocs","console","_vue_richtext_widgets","_registerWidget","onDestroy","A","reference","compact","hasCustomWidget","T","richObjectType","noAccess","accessible","descriptionStyle","display","lineClamp","webkitLineClamp","compactLink","openGraphObject","link","substring","renderWidget","observer","ResizeObserver","contentRect","observe","$el","disconnect","D","customWidget","innerHTML","richObject","z","F","rel","thumb","U","G","_vue_richtext_custom_picker_elements","_registerCustomPickerElement","X","provider","isRegistered","renderResult","renderElement","K","domElement","J","Promise","resolve","then","object","_isVue","$on","onCancel","element","detail","Y","ee","re","b","icon_url","R","_vue_richtext_reference_providers","filter","search_providers_ids","debug","ne","replace","RegExp","_vue_richtext_reference_provider_timestamps","sort","order","ie","match","u","push","clearTimeout","setTimeout","URL","ce","le","ae","de","NcSelect","NcHighlight","LinkVariantIcon","selectedProvider","query","multiselectPlaceholder","providerIconAlt","isLink","focus","querySelector","onProviderSelected","onSearch","he","filterable","search","me","fe","NcReferenceWidget","NcTextField","inputValue","abortController","inputPlaceholder","isLinkValid","getElementsByTagName","onClear","abort","updateReference","AbortController","encodeURIComponent","signal","references","catch","ve","nativeOn","keyup","ge","ke","Ce","entry","Pe","rounded","thumbnailUrl","we","Se","Re","DotsHorizontalIcon","NcSearchResult","showEmptyContent","searchPlaceholder","searchQuery","selectedResult","resultsBySearchProvider","searching","searchingMoreOf","noOptionsText","mySearchPlaceholder","searchProviderIds","rawLinkEntry","formattedSearchResults","resourceUrl","isRawLink","forEach","entries","isCustomGroupTitle","map","isPaginated","isMore","isLoading","resetResults","cancelSearchRequests","onSearchInput","updateSearch","onSelectResultSelected","searchMoreOf","searchProviders","searchOneProvider","cursor","allSettled","find","status","reason","code","term","xe","autoscroll","$e","Ne","providerList","standardLinkInput","searchInput","customElement","Ee","NcCustomPickerElement","NcProviderList","NcRawLinkInput","NcSearch","initialProvider","focusOnCreate","MODES","mode","pickerWrapperStyle","onEscapePressed","deselectProvider","cancelProviderSelection","cancelCustomElement","cancelSearch","cancelRawLinkInput","submitLink","Math","floor","Date","now","timestamp","put","oe","Ie","Oe","Ve","NcReferencePicker","NcModal","ArrowLeftIcon","CloseIcon","isInsideViewer","show","backButtonTitle","closeButtonTitle","closeButtonLabel","isProviderSelected","showBackButton","modalSize","includes","H","showModalName","modalName","modal_content","onProviderSelect","onBackClicked","referencePicker","We","close","qe","je","prototype","predicate","TypeError","list","thisArg","call","CustomEvent","CustomEvent$1","event","params","bubbles","cancelable","undefined","evt","createEvent","initCustomEvent","Event","TributeEvents","constructor","tribute","events","bind","boundKeydown","boundKeyup","boundInput","unbind","instance","shouldDeactivate","isActive","hideMenu","commandEvent","callbacks","toLowerCase","inputEvent","menu","contains","li","nodeName","parentNode","Error","selectItemAtIndex","getAttribute","current","externalTrigger","updateSelection","allowSpaces","hasTrailingSpace","autocompleteMode","triggerChar","getKeyCode","isNaN","trigger","triggers","charCodeAt","mentionText","collection","menuShowMinLength","showMenuFor","eventKeyPressed","el","info","range","getTriggerInfo","mentionTriggerChar","selectedPath","mentionSelectedPath","selectedOffset","mentionSelectedOffset","collectionItem","enter","filteredItems","menuSelected","escape","tab","space","spaceSelectsMatch","up","count","selected","setActiveLi","scrollTop","scrollHeight","down","delete","index","lis","querySelectorAll","parseInt","selectClass","liClientRect","getBoundingClientRect","menuClientRect","bottom","scrollDistance","top","getFullHeight","elem","includeMargin","currentStyle","getComputedStyle","parseFloat","marginTop","marginBottom","TributeMenuEvents","menuEvents","menuClickEvent","menuContainerScrollEvent","debounce","windowResizeEvent","positionMenuAtCaret","getDocument","menuContainer","func","wait","immediate","timeout","context","args","callNow","TributeRange","iframe","contentWindow","scrollTo","coordinates","positionMenu","cssText","isContentEditable","getContentEditableCaretPosition","mentionPosition","getTextAreaOrInputUnderlinePosition","left","right","scrollIntoView","menuDimensions","offsetWidth","offsetHeight","menuIsOffScreen","isMenuOffScreen","menuIsOffScreenHorizontally","innerWidth","menuIsOffScreenVertically","innerHeight","menuContainerIsBody","body","selectElement","targetElement","path","offset","childNodes","nextSibling","previousSibling","sel","getWindowSelection","createRange","setStart","setEnd","collapse","removeAllRanges","addRange","replaceTriggerText","requireLeadingSpace","originalEvent","replaceEvent","replaceTextSuffix","endPos","pasteHtml","myField","textSuffix","startPos","selectionStart","selectionEnd","dispatchEvent","html","anchorNode","deleteContents","createElement","node","lastNode","frag","createDocumentFragment","firstChild","appendChild","insertNode","cloneRange","setStartAfter","getSelection","getNodePositionInParent","getContentEditableSelectedPath","ctx","contentEditable","reverse","getRangeAt","startOffset","getTextPrecedingCurrentSelection","selectedElem","workingNodeContent","textContent","selectStartOffset","textComponent","getLastWordInText","wordsArray","split","menuAlreadyActive","isAutocomplete","selectionInfo","effectiveRange","lastWordOfEffectiveRange","mentionSelectedElement","mostRecentTriggerCharPos","config","c","idx","lastIndexWithLeadingSpace","lastIndexOf","currentTriggerSnippet","firstSnippetChar","leadingSpace","regex","str","reversedStr","join","cidx","len","firstChar","triggerIdx","windowWidth","windowHeight","doc","windowLeft","pageXOffset","scrollLeft","clientLeft","windowTop","pageYOffset","clientTop","menuTop","menuRight","menuBottom","menuLeft","ceil","getMenuDimensions","dimensions","position","flipped","isFirefox","mozInnerScreenX","div","whiteSpace","wordWrap","visibility","prop","overflowY","overflow","span","rect","offsetTop","borderTopWidth","fontSize","offsetLeft","borderLeftWidth","parentHeight","scrollStillAvailable","removeChild","selectedNodePosition","clientRect","elemTop","elemBottom","maxY","targetY","TributeSearch","simpleFilter","pattern","array","string","opts","pre","post","compareString","caseSensitive","skip","rendered","score","patternCache","traverse","render","cache","stringIndex","patternIndex","calculateScore","best","temp","pop","indices","arr","reduce","prev","extract","original","Tribute","values","containerClass","itemClass","selectTemplate","menuItemTemplate","lookup","fillAttr","noMatchTemplate","searchOpts","menuItemLimit","defaultSelectTemplate","defaultMenuItemTemplate","warn","_isActive","val","noMatchEvent","matchItem","inputTypes","attach","jQuery","NodeList","HTMLCollection","_attach","hasAttribute","ensureEditable","setAttribute","createMenu","wrapper","ul","className","currentMentionTextSnapshot","tributeMenu","processValues","fragment","_findLiTarget","movementY","showMenuForCollection","collectionIndex","activeElement","placeCaretAtEnd","insertTextAtCursor","insertAtCaret","selectNodeContents","createTextRange","textRange","moveToElementText","select","textNode","createTextNode","textarea","scrollPos","caretPos","front","back","content","replaceText","_append","newValues","concat","append","appendCurrent","detach","_detach","removeAttribute","iconUrl","source","getAvatarUrl","haveStatus","tooltip","autoComplete","Function","Element","multiline","contenteditable","maxlength","emojiAutocomplete","linkAutocomplete","textSmiles","autocompleteOptions","renderComponentHtml","genSelectTemplate","debouncedAutoComplete","emojiOptions","native","short_name","unshift","linkOptions","getLink","localValue","isComposing","isEmptyValue","isFF","navigator","userAgent","isOverMaxlength","countAnsiEscapeCodes","tooltipString","shown","canEdit","listeners","$listeners","paste","parseContent","updateContent","autocompleteTribute","emojiTribute","linkTribute","async","g","se","extend","propsData","$mount","$destroy","$","result","insertText","replaceWith","setCursorAfter","updateValue","setEndAfter","onPaste","clipboardData","files","getData","rangeCount","deleteFromDocument","endOffset","renderContent","onDelete","isCollapsed","commonAncestorContainer","nodeType","setEndBefore","anchorOffset","cloneContents","lastChild","onEnter","onCtrlEnter","onKeyUp","stopImmediatePropagation","compositionstart","compositionend","referenceData","displayedReferences","firstReference","fetch","exec","M","autolink","useMarkdown","children","splice","flat","component","p","tagName","P","NcReferenceList","referenceLimit","markdownCssClasses","ol","strong","em","h1","h2","h3","h4","h5","h6","hr","table","blockquote","renderPlaintext","isArray","renderMarkdown","use","prefix","processSync","saving","indicatorColor","hint","submitTranslated","idSubmit","groups","randId","errorMessage","hasError","filteredValue","displayname","groupsArray","handler","loadGroup","appName","appVersion","sessionStorage","getItem","fromEntries","JSON","parse","setItem","stringify","update","encodeURI","filterGroups","toLocaleLowerCase","multiple","NcPopover","NcUserBubbleDiv","avatarImage","displayName","showUserStatus","location","margin","isPopoverComponent","popoverEmpty","isAvatarUrl","isCustomAvatar","hasUrl","isLinkComponent","styles","lineHeight","borderRadius","avatar","marginLeft","util","onOpenChange","Z","Symbol","toStringTag","NcDashboardWidget","CheckIcon","widget","newButton","buttons","button","moreButton","setupButton","_vm","_ref","subtitle","panels","loadState","firstRun","statusInfo","weather","ApiDashboardWidget","Draggable","Pencil","isAdmin","getCurrentUser","timer","registeredStatus","callbacksStatus","allCallbacksStatus","enabledStatuses","uid","layout","panelId","modal","appStoreUrl","generateUrl","statuses","apiWidgets","apiWidgetItems","loadingItems","greeting","time","getHours","partOfDay","good","morning","generic","withName","afternoon","evening","night","panel","isStatusActive","sortedAllStatuses","sortStatuses","sortedPanels","indexA","indexB","sortedRegisteredStatus","rerenderPanels","app","Vue","fetchApiWidgets","apiWidgetIdsToFetch","isApiWidgetV2","all","fetchApiWidgetItems","reload_interval","setInterval","updateSkipLink","handleScroll","disableFirstrunHint","register","registerStatus","saveLayout","axios","saveStatuses","showModal","closeModal","updateCheckbox","currentValue","getElementsByClassName","updateStatusCheckbox","enableStatus","disableStatus","findIndex","al","bl","scrollY","response","generateOcsUrl","widgetIds","merge","URLSearchParams","widgetItems","toString","assign","item_api_versions","refInFor","$$v","swapThreshold","delay","delayOnTouchOnly","touchStartThreshold","icon_class","iconClass","$event","draggable","__webpack_nonce__","btoa","getRequestToken","directive","VTooltip","OCA","Files","App","fileList","filesClient","getClient","Instance","DashboardApp","Dashboard","___CSS_LOADER_EXPORT___","module","_typeof","obj","iterator","_defineProperty","defineProperty","enumerable","configurable","writable","_extends","hasOwnProperty","_objectSpread","ownKeys","getOwnPropertySymbols","sym","getOwnPropertyDescriptor","IE11OrLess","Edge","FireFox","Safari","IOS","ChromeForAndroid","captureMode","capture","passive","off","matches","selector","msMatchesSelector","webkitMatchesSelector","getParentOrHost","host","includeCTX","_throttleTimeout","R_SPACE","toggleClass","state","css","defaultView","matrix","selfOnly","appliedTransforms","transform","matrixFn","DOMMatrix","WebKitCSSMatrix","CSSMatrix","MSCSSMatrix","getWindowScrollingElement","scrollingElement","getRect","relativeToContainingBlock","relativeToNonStaticParent","undoScale","container","elRect","containerRect","elMatrix","scaleX","scaleY","isScrolledPast","elSide","parentSide","parent","getParentAutoScrollElement","elSideVal","parentSideVal","getChild","childNum","currentChild","Sortable","ghost","dragged","last","lastElementChild","previousElementSibling","toUpperCase","clone","getRelativeScrollOffset","winScroller","includeSelf","gotSelf","scrollWidth","clientHeight","elemCSS","overflowX","isRectEqual","rect1","rect2","round","throttle","ms","scrollBy","x","Polymer","Zepto","dom","cloneNode","setRect","unsetRect","expando","getTime","plugins","defaults","initializeByDefault","PluginManager","mount","plugin","option","pluginEvent","eventName","sortable","_this","eventCanceled","eventNameGlobal","pluginName","initializePlugins","initialized","modified","modifyOption","getEventProperties","eventProperties","modifiedValue","optionListeners","rootEl","targetEl","cloneEl","toEl","fromEl","oldIndex","newIndex","oldDraggableIndex","newDraggableIndex","putSortable","extraEventProperties","onName","charAt","substr","initEvent","to","from","pullMode","lastPutMode","allEventProperties","excluded","sourceKeys","_objectWithoutPropertiesLoose","sourceSymbolKeys","propertyIsEnumerable","_objectWithoutProperties","dragEl","parentEl","ghostEl","nextEl","lastDownEl","cloneHidden","dragStarted","moved","activeSortable","active","hideGhostForTarget","_hideGhostForTarget","unhideGhostForTarget","_unhideGhostForTarget","cloneNowHidden","cloneNowShown","dispatchSortableEvent","_dispatchEvent","activeGroup","tapEvt","touchEvt","lastDx","lastDy","tapDistanceLeft","tapDistanceTop","lastTarget","lastDirection","targetMoveDistance","ghostRelativeParent","awaitingDragStarted","ignoreNextClick","sortables","pastFirstInvertThresh","isCircumstantialInvert","ghostRelativeParentInitialScroll","_silent","savedInputChecked","documentExists","PositionGhostAbsolutely","CSSFloatProperty","supportDraggable","supportCssPointerEvents","pointerEvents","_detectDirection","elCSS","elWidth","paddingLeft","paddingRight","borderRightWidth","child1","child2","firstChildCSS","secondChildCSS","firstChildWidth","marginRight","secondChildWidth","flexDirection","gridTemplateColumns","touchingSideChild2","clear","_prepareGroup","toFn","pull","sameGroup","group","otherGroup","originalGroup","checkPull","checkPut","revertClone","nearestEmptyInsertDetectEvent","touches","nearest","clientX","clientY","some","threshold","emptyInsertThreshold","insideHorizontally","insideVertically","ret","_onDragOver","_checkOutsideTargetEl","_isOutsideThisEl","animationCallbackId","animationStates","store","handle","invertSwap","invertedSwapThreshold","removeCloneOnHide","direction","ghostClass","chosenClass","dragClass","ignore","preventOnFilter","animation","easing","setData","dataTransfer","dropBubble","dragoverBubble","dataIdAttr","devicePixelRatio","forceFallback","fallbackClass","fallbackOnBody","fallbackTolerance","fallbackOffset","supportPointer","nativeDraggable","_onTapStart","captureAnimationState","child","fromRect","thisAnimationDuration","childMatrix","f","addAnimationState","removeAnimationState","indexOfObject","animateAll","animating","animationTime","toRect","prevFromRect","prevToRect","animatingRect","targetMatrix","sqrt","pow","calculateRealTime","animate","max","animationResetTimer","currentRect","duration","translateX","translateY","animatingX","animatingY","repaint","animated","_onMove","dragRect","targetRect","willInsertAfter","retVal","onMoveFn","onMove","draggedRect","related","relatedRect","_disableDraggable","_unsilent","_generateId","sum","_nextTick","_cancelNextTick","_getDirection","touch","pointerType","originalTarget","shadowRoot","composedPath","root","inputs","_saveInputCheckedState","criteria","_prepareDragStart","dragStartFn","ownerDocument","_lastX","_lastY","_onDrop","_disableDelayedDragEvents","_triggerDragStart","_disableDelayedDrag","_delayedDragTouchMoveHandler","_dragStartTimer","abs","_onTouchMove","_onDragStart","empty","err","_dragStarted","fallback","_appendGhost","_nulling","_emulateDragOver","elementFromPoint","ghostMatrix","relativeScrollOffset","dx","dy","cssMatrix","_hideClone","cloneId","insertBefore","_loopId","effectAllowed","_dragStartId","revert","vertical","isOwner","canSort","fromSortable","completedFired","dragOverEvent","_ignoreWhileAnimating","completed","elLastChild","_ghostIsLast","changed","targetBeforeFirstSwap","sibling","differentLevel","differentRowCol","dragElS1Opp","dragElS2Opp","dragElOppLength","targetS1Opp","targetS2Opp","targetOppLength","_dragElInRowColumn","side1","scrolledPastTop","scrollBefore","isLastTarget","mouseOnAxis","targetLength","targetS1","targetS2","invert","_getInsertDirection","_getSwapDirection","dragIndex","nextElementSibling","after","moveVector","extra","axis","insertion","_showClone","_offMoveEvents","_offUpEvents","clearInterval","save","handleEvent","dropEffect","_globalDragOver","toArray","set","destroy","utils","is","dst","nextTick","cancelNextTick","detectDirection","_len","_key","create","version","scrollEl","scrollRootEl","lastAutoScrollX","lastAutoScrollY","touchEvt$1","pointerElemChangedInterval","autoScrolls","scrolling","clearAutoScrolls","autoScroll","pid","clearPointerElemChangedInterval","lastSwapEl","isFallback","scroll","scrollCustomFn","sens","scrollSensitivity","speed","scrollSpeed","scrollThisInstance","scrollFn","layersOut","currentParent","canScrollX","canScrollY","scrollPosX","scrollPosY","vx","vy","layer","scrollOffsetY","scrollOffsetX","bubbleScroll","drop","toSortable","changedTouches","onSpill","Revert","Remove","SwapPlugin","Swap","swapClass","dragStart","dragOverValid","_ref2","swap","prevSwapEl","_ref3","n1","n2","i1","i2","p1","p2","isEqualNode","nulling","swapItem","startIndex","_ref4","parentSortable","lastMultiDragSelect","multiDragSortable","dragEl$1","clonesFromRect","clonesHidden","multiDragElements","multiDragClones","initialFolding","folding","MultiDragPlugin","MultiDrag","_deselectMultiDrag","_checkKeyDown","_checkKeyUp","selectedClass","multiDragKey","multiDragElement","multiDragKeyDown","isMultiDrag","delayStartGlobal","delayEnded","setupClone","sortableIndex","insertMultiDragClones","showClone","hideClone","_ref5","dragStartGlobal","_ref6","multiDrag","_ref7","_this2","removeMultiDragElements","dragOver","_ref8","_ref9","clonesInserted","insertMultiDragElements","dragOverCompleted","_ref10","dragRectAbsolute","clonesHiddenBefore","dragOverAnimationCapture","_ref11","dragMatrix","dragOverAnimationComplete","_ref12","originalEvt","lastIndex","currentIndex","multiDragIndex","nullingGlobal","destroyGlobal","shift","deselect","_this3","oldIndicies","newIndicies","arr2","_arrayWithoutHoles","iter","_iterableToArray","_nonIterableSpread","clones","elementsInserted","AutoScroll","_handleAutoScroll","_handleFallbackAutoScroll","dragOverBubble","ogElemScroller","newElem","factory","self","__WEBPACK_EXTERNAL_MODULE_a352__","modules","installedModules","moduleId","m","getter","__esModule","ns","property","LIBRARY","$export","redefine","hide","Iterators","$iterCreate","setToStringTag","getPrototypeOf","ITERATOR","BUGGY","KEYS","VALUES","returnThis","Base","NAME","Constructor","next","DEFAULT","IS_SET","FORCED","IteratorPrototype","getMethod","kind","proto","TAG","DEF_VALUES","VALUES_BUG","$native","$default","$entries","$anyNative","toInteger","defined","TO_STRING","that","pos","at","S","unicode","anObject","global","ignoreCase","sticky","$keys","enumBugKeys","O","dP","getKeys","defineProperties","Properties","fails","wks","regexpExec","SPECIES","REPLACE_SUPPORTS_NAMED_GROUPS","SPLIT_WORKS_WITH_OVERWRITTEN_EXEC","originalExec","KEY","SYMBOL","DELEGATES_TO_SYMBOL","DELEGATES_TO_EXEC","execCalled","nativeRegExpMethod","fns","nativeMethod","regexp","arg2","forceStringMethod","done","strfn","rxfn","arg","isObject","it","cof","ARG","B","tryGet","callee","has","SRC","$toString","TPL","inspectSource","safe","isFunction","dPs","IE_PROTO","Empty","PROTOTYPE","createDict","iframeDocument","write","lt","USE_SYMBOL","INCLUDES","searchString","createDesc","toObject","ObjectProto","descriptor","bitmap","MATCH","re1","re2","regexpFlags","nativeExec","nativeReplace","patchedExec","LAST_INDEX","UPDATES_LAST_INDEX_WRONG","NPCG_INCLUDED","reCopy","core","SHARED","copyright","own","out","exp","IS_FORCED","IS_GLOBAL","IS_STATIC","IS_PROTO","IS_BIND","expProto","W","classof","builtinExec","shared","$includes","IObject","valueOf","gOPS","pIE","$assign","k","aLen","getSymbols","isEnum","j","__g","min","def","stat","__e","IE8_DOM_DEFINE","toPrimitive","Attributes","aFunction","UNSCOPABLES","ArrayProto","toLength","advanceStringIndex","regExpExec","SUBSTITUTION_SYMBOLS","SUBSTITUTION_SYMBOLS_NO_NAMED","REPLACE","$replace","maybeCallNative","searchValue","replaceValue","res","rx","functionalReplace","fullUnicode","results","accumulatedResult","nextSourcePosition","matched","captures","namedCaptures","replacerArgs","replacement","getSubstitution","tailPos","symbols","ch","isRegExp","$iterators","TO_STRING_TAG","ArrayValues","DOMIterables","CSSRuleList","CSSStyleDeclaration","CSSValueList","ClientRectList","DOMRectList","DOMStringList","DOMTokenList","DataTransferItemList","FileList","HTMLAllCollection","HTMLFormElement","HTMLSelectElement","MediaList","MimeTypeArray","NamedNodeMap","PaintRequestList","Plugin","PluginArray","SVGLengthList","SVGNumberList","SVGPathSegList","SVGPointList","SVGStringList","SVGTransformList","SourceBufferList","StyleSheetList","TextTrackCueList","TextTrackList","TouchList","collections","explicit","Collection","forced","toIObject","toAbsoluteIndex","IS_INCLUDES","$this","fromIndex","insertNodeAt","camelize","removeNode","parentElement","fatherNode","refNode","px","random","addToUnscopables","step","iterated","_i","Arguments","arrayIndexOf","names","STARTS_WITH","$startsWith","currentScript","scripts","stack","readyState","setPublicPath_i","_arrayLikeToArray","_unsupportedIterableToArray","minLen","_toConsumableArray","external_commonjs_sortablejs_commonjs2_sortablejs_amd_sortablejs_root_Sortable_","external_commonjs_sortablejs_commonjs2_sortablejs_amd_sortablejs_root_Sortable_default","helper","emit","evtName","evtData","delegateAndEmit","realList","isTransitionName","getSlot","slot","scopedSlot","eventsListened","eventsToEmit","readonlyProperties","draggingElement","draggableComponent","inheritAttrs","noTransitionOnDrag","move","componentData","transitionMode","noneFunctionalComponentMode","slots","componentOptions","_arrayWithHoles","_arr","_n","_d","_iterableToArrayLimit","_nonIterableRest","vuedraggable_isTransition","_computeChildrenAndOf","headerOffset","footerOffset","footer","computeChildrenAndOffsets","$scopedSlots","attributes","propName","buildAttribute","componentDataAttrs","getComponentAttributes","getTag","getIsFunctional","optionsAdded","elt","onDragMove","_sortable","rootContainer","computeIndexes","newOptionValue","updateOptions","deep","fnOptions","_vnode","functional","getChildrenNodes","$children","rawNodes","_this4","visibleIndexes","isTransition","elmFromNodes","elm","footerIndex","rawIndexes","ind","_computeIndexes","getUnderlyingVm","htmlElt","vnodes","getUnderlyingPotencialDraggableComponent","vue","__vue__","$options","_componentTag","$parent","emitChanges","_this5","alterList","onList","newList","spliceList","_arguments","updatePosition","getRelatedContextFromMoveEvent","destination","getVmIndex","domIndex","indexes","numberIndexes","getComponent","componentInstance","resetTransitionData","transitionContainer","kept","onDragStart","_underlying_vm_","onDragAdd","added","onDragRemove","removed","onDragUpdate","updateProperty","propertyName","computeFutureIndex","relatedContext","domChildren","currentDOMIndex","draggedContext","futureIndex","onDragEnd","vuedraggable","__webpack_module_cache__","__webpack_require__","cachedModule","loaded","__webpack_modules__","chunkIds","priority","notFulfilled","Infinity","fulfilled","every","definition","globalThis","nmd","paths","baseURI","installedChunks","chunkId","webpackJsonpCallback","parentChunkLoadingFunction","moreModules","runtime","chunkLoadingGlobal","nc","__webpack_exports__"],"sourceRoot":""}